PageSourceSearch

https://muni.bio/assets/express-molecule-D7EX_cCZ.js

js muni.bio collected 2026-10-04 18:50:15 UTC 3,658,533 bytes, 7,637 lines download raw bytes

1import{b8 as VD,b9 as LZ,ba as eV}from"./index-CqS-M8ws.js";var x2={};const At=VD(LZ);var A2={},tm={},$l={},tV;function rn(){if(tV)return $l;tV=1,Object.defineProperty($l,"__esModule",{value:!0}),$l.EPSILON=void 0,$l.equalEps=e,$l.EPSILON=1e-6;function e(t,r,n){return Math.abs(t-r)<=n}return $l}var rm={},Nn={},rV;function ir(){if(rV)return Nn;rV=1,Object.defineProperty(Nn,"__esModule",{value:!0}),Nn.normalize=e,Nn.clamp=t,Nn.pclamp=r,Nn.saturate=n,Nn.damp=i,Nn.lerp=c,Nn.spline=o,Nn.quadraticBezier=s,Nn.smoothstep=h,Nn.smootherstep=f,Nn.smootheststep=y,Nn.almostIdentity=_;function e(g,a,d){return(g-a)/(d-a)}function t(g,a,d){return Math.max(a,Math.min(d,g))}function r(g){return t(g,0,100)}function n(g){return t(g,0,1)}function i(g,a){const d=g*a;return Math.abs(d)<.1?0:d}function c(g,a,d){return g+(a-g)*d}function o(g,a,d,p,u,m){const v=(d-g)*m,b=(p-a)*m,P=u*u,C=u*P;return(2*a-2*d+v+b)*C+(-3*a+3*d-2*v-b)*P+v*u+a}function s(g,a,d,p){const u=1-p;return u*u*g+2*u*p*a+p*p*d}function h(g,a,d){return d=n(e(d,g,a)),d*d*(3-2*d)}function f(g,a,d){return d=n(e(d,g,a)),d*d*d*(d*(d*6-15)+10)}function y(g,a,d){return d=n(e(d,g,a)),-20*Math.pow(d,7)+70*Math.pow(d,6)-84*Math.pow(d,5)+35*Math.pow(d,4)}function _(g,a,d){if(g>a)return g;const p=2*d-a,u=2*a-3*d,m=g/a;return(p*m+u)*m*m+d}return Nn}var nV;function wt(){if(nV)return rm;nV=1,Object.defineProperty(rm,"__esModule",{value:!0}),rm.Vec3=i;const e=Xr(),t=ir(),r=rn(),n=isFinite;function i(){return i.zero()}return(function(c){function o(){const Pe=[.1,0,0];return Pe[0]=0,Pe}c.zero=o;function s(Pe){const Ie=o();return Ie[0]=Pe[0],Ie[1]=Pe[1],Ie[2]=Pe[2],Ie}c.clone=s;function h(Pe){return Array.isArray(Pe)&&Pe.length===3}c.is=h;function f(Pe){return n(Pe[0])&&n(Pe[1])&&n(Pe[2])}c.isFinite=f;function y(Pe){return Number.isInteger(Pe[0])&&Number.isInteger(Pe[1])&&Number.isInteger(Pe[2])}c.isInteger=y;function _(Pe){return Number.isNaN(Pe[0])||Number.isNaN(Pe[1])||Number.isNaN(Pe[2])}c.hasNaN=_;function g(Pe){return Pe[0]=NaN,Pe[1]=NaN,Pe[2]=NaN,Pe}c.setNaN=g;function a(Pe){return m(Pe.x,Pe.y,Pe.z)}c.fromObj=a;function d(Pe){return{x:Pe[0],y:Pe[1],z:Pe[2]}}c.toObj=d;function p(Pe,Ie,Ee){return Pe[0]=Ie[Ee+0],Pe[1]=Ie[Ee+1],Pe[2]=Ie[Ee+2],Pe}c.fromArray=p;function u(Pe,Ie,Ee){return Ie[Ee+0]=Pe[0],Ie[Ee+1]=Pe[1],Ie[Ee+2]=Pe[2],Ie}c.toArray=u;function m(Pe,Ie,Ee){const Ue=o();return Ue[0]=Pe,Ue[1]=Ie,Ue[2]=Ee,Ue}c.create=m;function v(Pe){const Ie=o();return Ie[0]=Pe[0],Ie[1]=Pe[1],Ie[2]=Pe[2],Ie}c.ofArray=v;function b(Pe,Ie,Ee,Ue){return Pe[0]=Ie,Pe[1]=Ee,Pe[2]=Ue,Pe}c.set=b;function P(Pe,Ie){return Pe[0]=Ie[0],Pe[1]=Ie[1],Pe[2]=Ie[2],Pe}c.copy=P;function C(Pe,Ie,Ee){return Pe[0]=Ie[0]+Ee[0],Pe[1]=Ie[1]+Ee[1],Pe[2]=Ie[2]+Ee[2],Pe}c.add=C;function l(Pe,Ie,Ee){return Pe[0]=Ie[0]-Ee[0],Pe[1]=Ie[1]-Ee[1],Pe[2]=Ie[2]-Ee[2],Pe}c.sub=l;function S(Pe,Ie,Ee){return Pe[0]=Ie[0]*Ee[0],Pe[1]=Ie[1]*Ee[1],Pe[2]=Ie[2]*Ee[2],Pe}c.mul=S;function T(Pe,Ie,Ee){return Pe[0]=Ie[0]/Ee[0],Pe[1]=Ie[1]/Ee[1],Pe[2]=Ie[2]/Ee[2],Pe}c.div=T;function A(Pe,Ie,Ee){return Pe[0]=Ie[0]%Ee[0],Pe[1]=Ie[1]%Ee[1],Pe[2]=Ie[2]%Ee[2],Pe}c.mod=A;function x(Pe,Ie,Ee){return Pe[0]=Ie[0]*Ee,Pe[1]=Ie[1]*Ee,Pe[2]=Ie[2]*Ee,Pe}c.scale=x;function M(Pe,Ie,Ee,Ue){return Pe[0]=Ie[0]+Ee[0]*Ue,Pe[1]=Ie[1]+Ee[1]*Ue,Pe[2]=Ie[2]+Ee[2]*Ue,Pe}c.scaleAndAdd=M;function D(Pe,Ie,Ee,Ue){return Pe[0]=Ie[0]-Ee[0]*Ue,Pe[1]=Ie[1]-Ee[1]*Ue,Pe[2]=Ie[2]-Ee[2]*Ue,Pe}c.scaleAndSub=D;function V(Pe,Ie,Ee){return Pe[0]=Ie[0]+Ee,Pe[1]=Ie[1]+Ee,Pe[2]=Ie[2]+Ee,Pe}c.addScalar=V;function R(Pe,Ie,Ee){return Pe[0]=Ie[0]-Ee,Pe[1]=Ie[1]-Ee,Pe[2]=Ie[2]-Ee,Pe}c.subScalar=R;function E(Pe,Ie){return Pe[0]=Math.round(Ie[0]),Pe[1]=Math.round(Ie[1]),Pe[2]=Math.round(Ie[2]),Pe}c.round=E;function I(Pe,Ie){return Pe[0]=Math.ceil(Ie[0]),Pe[1]=Math.ceil(Ie[1]),Pe[2]=Math.ceil(Ie[2]),Pe}c.ceil=I;function B(Pe,Ie){return Pe[0]=Math.floor(Ie[0]),Pe[1]=Math.floor(Ie[1]),Pe[2]=Math.floor(Ie[2]),Pe}c.floor=B;function w(Pe,Ie){return Pe[0]=Math.trunc(Ie[0]),Pe[1]=Math.trunc(Ie[1]),Pe[2]=Math.trunc(Ie[2]),Pe}c.trunc=w;function O(Pe,Ie){return Pe[0]=Math.abs(Ie[0]),Pe[1]=Math.abs(Ie[1]),Pe[2]=Math.abs(Ie[2]),Pe}c.abs=O;function F(Pe,Ie,Ee){return Pe[0]=Math.min(Ie[0],Ee[0]),Pe[1]=Math.min(Ie[1],Ee[1]),Pe[2]=Math.min(Ie[2],Ee[2]),Pe}c.min=F;function L(Pe,Ie,Ee){return Pe[0]=Math.max(Ie[0],Ee[0]),Pe[1]=Math.max(Ie[1],Ee[1]),Pe[2]=Math.max(Ie[2],Ee[2]),Pe}c.max=L;function U(Pe,Ie,Ee,Ue){return Pe[0]=Math.max(Ee[0],Math.min(Ue[0],Ie[0])),Pe[1]=Math.max(Ee[1],Math.min(Ue[1],Ie[1])),Pe[2]=Math.max(Ee[2],Math.min(Ue[2],Ie[2])),Pe}c.clamp=U;function q(Pe,Ie){const Ee=Ie[0]-Pe[0],Ue=Ie[1]-Pe[1],$e=Ie[2]-Pe[2];return Math.sqrt(Ee*Ee+Ue*Ue+$e*$e)}c.distance=q;function N(Pe,Ie){const Ee=Ie[0]-Pe[0],Ue=Ie[1]-Pe[1],$e=Ie[2]-Pe[2];return Ee*Ee+Ue*Ue+$e*$e}c.squaredDistance=N;function k(Pe){const Ie=Pe[0],Ee=Pe[1],Ue=Pe[2];return Math.sqrt(Ie*Ie+Ee*Ee+Ue*Ue)}c.magnitude=k;function j(Pe){const Ie=Pe[0],Ee=Pe[1],Ue=Pe[2];return Ie*Ie+Ee*Ee+Ue*Ue}c.squaredMagnitude=j;function H(Pe,Ie,Ee){return x(Pe,W(Pe,Ie),Ee)}c.setMagnitude=H;function G(Pe,Ie){return Pe[0]=-Ie[0],Pe[1]=-Ie[1],Pe[2]=-Ie[2],Pe}c.negate=G;function z(Pe,Ie){return Pe[0]=1/Ie[0],Pe[1]=1/Ie[1],Pe[2]=1/Ie[2],Pe}c.inverse=z;function W(Pe,Ie){const Ee=Ie[0],Ue=Ie[1],$e=Ie[2];let Ye=Ee*Ee+Ue*Ue+$e*$e;return Ye>0&&(Ye=1/Math.sqrt(Ye),Pe[0]=Ie[0]*Ye,Pe[1]=Ie[1]*Ye,Pe[2]=Ie[2]*Ye),Pe}c.normalize=W;function X(Pe,Ie){return Pe[0]*Ie[0]+Pe[1]*Ie[1]+Pe[2]*Ie[2]}c.dot=X;function Y(Pe,Ie,Ee){const Ue=Ie[0],$e=Ie[1],Ye=Ie[2],Qe=Ee[0],it=Ee[1],ht=Ee[2];return Pe[0]=$e*ht-Ye*it,Pe[1]=Ye*Qe-Ue*ht,Pe[2]=Ue*it-$e*Qe,Pe}c.cross=Y;function K(Pe,Ie,Ee,Ue){const $e=Ie[0],Ye=Ie[1],Qe=Ie[2];return Pe[0]=$e+Ue*(Ee[0]-$e),Pe[1]=Ye+Ue*(Ee[1]-Ye),Pe[2]=Qe+Ue*(Ee[2]-Qe),Pe}c.lerp=K;const Q=o();function J(Pe,Ie,Ee,Ue){const $e=(0,t.clamp)(X(Ie,Ee),-1,1),Ye=Math.acos($e)*Ue;return M(Q,Ee,Ie,-$e),W(Q,Q),C(Pe,x(Pe,Ie,Math.cos(Ye)),x(Q,Q,Math.sin(Ye)))}c.slerp=J;function ae(Pe,Ie,Ee,Ue,$e,Ye){const Qe=Ye*Ye,it=Qe*(2*Ye-3)+1,ht=Qe*(Ye-2)+Ye,mt=Qe*(Ye-1),St=Qe*(3-2*Ye);return Pe[0]=Ie[0]*it+Ee[0]*ht+Ue[0]*mt+$e[0]*St,Pe[1]=Ie[1]*it+Ee[1]*ht+Ue[1]*mt+$e[1]*St,Pe[2]=Ie[2]*it+Ee[2]*ht+Ue[2]*mt+$e[2]*St,Pe}c.hermite=ae;function te(Pe,Ie,Ee,Ue,$e,Ye){const Qe=1-Ye,it=Qe*Qe,ht=Ye*Ye,mt=it*Qe,St=3*Ye*it,Bt=3*ht*Qe,Ot=ht*Ye;return Pe[0]=Ie[0]*mt+Ee[0]*St+Ue[0]*Bt+$e[0]*Ot,Pe[1]=Ie[1]*mt+Ee[1]*St+Ue[1]*Bt+$e[1]*Ot,Pe[2]=Ie[2]*mt+Ee[2]*St+Ue[2]*Bt+$e[2]*Ot,Pe}c.bezier=te;function ne(Pe,Ie,Ee,Ue,$e){return Pe[0]=(0,t.quadraticBezier)(Ie[0],Ee[0],Ue[0],$e),Pe[1]=(0,t.quadraticBezier)(Ie[1],Ee[1],Ue[1],$e),Pe[2]=(0,t.quadraticBezier)(Ie[2],Ee[2],Ue[2],$e),Pe}c.quadraticBezier=ne;function $(Pe,Ie,Ee,Ue,$e,Ye,Qe){return Pe[0]=(0,t.spline)(Ie[0],Ee[0],Ue[0],$e[0],Ye,Qe),Pe[1]=(0,t.spline)(Ie[1],Ee[1],Ue[1],$e[1],Ye,Qe),Pe[2]=(0,t.spline)(Ie[2],Ee[2],Ue[2],$e[2],Ye,Qe),Pe}c.spline=$;function ie(Pe,Ie){const Ee=Math.random()*2*Math.PI,Ue=Math.random()*2-1,$e=Math.sqrt(1-Ue*Ue)*Ie;return Pe[0]=Math.cos(Ee)*$e,Pe[1]=Math.sin(Ee)*$e,Pe[2]=Ue*Ie,Pe}c.random=ie;function Z(Pe,Ie,Ee){const Ue=Ie[0],$e=Ie[1],Ye=Ie[2],Qe=1/(Ee[3]*Ue+Ee[7]*$e+Ee[11]*Ye+Ee[15]||1);return Pe[0]=(Ee[0]*Ue+Ee[4]*$e+Ee[8]*Ye+Ee[12])*Qe,Pe[1]=(Ee[1]*Ue+Ee[5]*$e+Ee[9]*Ye+Ee[13])*Qe,Pe[2]=(Ee[2]*Ue+Ee[6]*$e+Ee[10]*Ye+Ee[14])*Qe,Pe}c.transformMat4=Z;function re(Pe,Ie,Ee){const Ue=Ie[0],$e=Ie[1],Ye=Ie[2];return Pe[0]=Ee[0]*Ue+Ee[4]*$e+Ee[8]*Ye,Pe[1]=Ee[1]*Ue+Ee[5]*$e+Ee[9]*Ye,Pe[2]=Ee[2]*Ue+Ee[6]*$e+Ee[10]*Ye,W(Pe,Pe)}c.transformDirection=re;function oe(Pe,Ie,Ee,Ue,$e,Ye){const Qe=Ie[0+$e],it=Ie[1+$e],ht=Ie[2+$e],mt=1/(Ee[3+Ye]*Qe+Ee[7+Ye]*it+Ee[11+Ye]*ht+Ee[15+Ye]||1);return Pe[0+Ue]=(Ee[0+Ye]*Qe+Ee[4+Ye]*it+Ee[8+Ye]*ht+Ee[12+Ye])*mt,Pe[1+Ue]=(Ee[1+Ye]*Qe+Ee[5+Ye]*it+Ee[9+Ye]*ht+Ee[13+Ye])*mt,Pe[2+Ue]=(Ee[2+Ye]*Qe+Ee[6+Ye]*it+Ee[10+Ye]*ht+Ee[14+Ye])*mt,Pe}c.transformMat4Offset=oe;function ce(Pe,Ie,Ee,Ue,$e,Ye){const Qe=Ie[0+$e],it=Ie[1+$e],ht=Ie[2+$e];Pe[0+Ue]=Ee[0+Ye]*Qe+Ee[4+Ye]*it+Ee[8+Ye]*ht,Pe[1+Ue]=Ee[1+Ye]*Qe+Ee[5+Ye]*it+Ee[9+Ye]*ht,Pe[2+Ue]=Ee[2+Ye]*Qe+Ee[6+Ye]*it+Ee[10+Ye]*ht;const mt=Math.hypot(Pe[0+Ue],Pe[1+Ue],Pe[2+Ue]);return mt>0&&(Pe[0+Ue]/=mt,Pe[1+Ue]/=mt,Pe[2+Ue]/=mt),Pe}c.transformDirectionOffset=ce;function ue(Pe,Ie,Ee){const Ue=Ie[0],$e=Ie[1],Ye=Ie[2];return Pe[0]=Ue*Ee[0]+$e*Ee[3]+Ye*Ee[6],Pe[1]=Ue*Ee[1]+$e*Ee[4]+Ye*Ee[7],Pe[2]=Ue*Ee[2]+$e*Ee[5]+Ye*Ee[8],Pe}c.transformMat3=ue;function pe(Pe,Ie,Ee){const Ue=Ie[0],$e=Ie[1],Ye=Ie[2],Qe=Ee[0],it=Ee[1],ht=Ee[2],mt=Ee[3],St=mt*Ue+it*Ye-ht*$e,Bt=mt*$e+ht*Ue-Qe*Ye,Ot=mt*Ye+Qe*$e-it*Ue,br=-Qe*Ue-it*$e-ht*Ye;return Pe[0]=St*mt+br*-Qe+Bt*-ht-Ot*-it,Pe[1]=Bt*mt+br*-it+Ot*-Qe
1-St*-ht,Pe[2]=Ot*mt+br*-ht+St*-it-Bt*-Qe,Pe}c.transformQuat=pe;function he(Pe,Ie){const Ee=Math.sqrt(j(Pe)*j(Ie));if(Ee===0)return Math.PI/2;const Ue=X(Pe,Ie)/Ee;return Math.acos((0,t.clamp)(Ue,-1,1))}c.angle=he;const fe=o(),de=o(),ge=o(),Ce=o(),ve=o(),le=o(),me=o();function ee(Pe,Ie,Ee,Ue){l(fe,Pe,Ie),l(de,Ee,Ie),l(ge,Ie,Ee),l(Ce,Ue,Ee),Y(ve,fe,de),Y(le,ge,Ce);const $e=he(ve,le);return Y(me,ve,le),X(de,me)>0?$e:-$e}c.dihedralAngle=ee;function se(Pe,Ie,Ee,Ue){return c.set(Pe,Ue*Math.cos(Ee)*Math.sin(Ie),Ue*Math.sin(Ee)*Math.sin(Ie),Ue*Math.cos(Ie))}c.directionFromSpherical=se;function ye(Pe,Ie){return Pe[0]===Ie[0]&&Pe[1]===Ie[1]&&Pe[2]===Ie[2]}c.exactEquals=ye;function Se(Pe,Ie){const Ee=Pe[0],Ue=Pe[1],$e=Pe[2],Ye=Ie[0],Qe=Ie[1],it=Ie[2];return Math.abs(Ee-Ye)<=r.EPSILON*Math.max(1,Math.abs(Ee),Math.abs(Ye))&&Math.abs(Ue-Qe)<=r.EPSILON*Math.max(1,Math.abs(Ue),Math.abs(Qe))&&Math.abs($e-it)<=r.EPSILON*Math.max(1,Math.abs($e),Math.abs(it))}c.equals=Se;const Ae=o();function _e(Pe,Ie,Ee){const Ue=he(Ie,Ee);if(Math.abs(Ue)<1e-4)return e.Mat4.setIdentity(Pe);if(Math.abs(Ue-Math.PI)<r.EPSILON)return e.Mat4.fromRotation(Pe,Math.PI,Math.abs(Ie[0])<.9?c.unitX:c.unitZ);const $e=Y(Ae,Ie,Ee);return e.Mat4.fromRotation(Pe,Ue,$e)}c.makeRotation=_e;const be=c();function xe(Pe,Ie,Ee,Ue){const $e=Math.cos(Ue),Ye=Math.sin(Ue),Qe=c.dot(Ie,Ee);return c.cross(be,Ee,Ie),Pe[0]=Ie[0]*$e+be[0]*Ye+Ee[0]*Qe*(1-$e),Pe[1]=Ie[1]*$e+be[1]*Ye+Ee[1]*Qe*(1-$e),Pe[2]=Ie[2]*$e+be[2]*Ye+Ee[2]*Qe*(1-$e),Pe}c.rotateAroundAxis=xe;function we(Pe){return Pe[0]===0&&Pe[1]===0&&Pe[2]===0}c.isZero=we;function Be(Pe,Ie,Ee,Ue){l(Pe,Ie,Ue);const $e=X(Ee,Pe)/j(Ee);return C(Pe,x(Pe,Ee,$e),Ue)}c.projectPointOnVector=Be;const Me=o();function Re(Pe,Ie,Ee,Ue){return W(Me,Ee),l(Pe,Ie,Ue),l(Pe,Ie,x(Me,Me,X(Pe,Me)))}c.projectPointOnPlane=Re;function Te(Pe,Ie,Ee){const Ue=X(Ee,Ie)/j(Ee);return x(Pe,Ee,Ue)}c.projectOnVector=Te;const Ve=o();function qe(Pe,Ie,Ee){return Te(Ve,Ie,Ee),l(Pe,Ie,Ve)}c.projectOnPlane=qe;function ke(Pe,Ie,Ee){return W(Pe,Y(Pe,Y(Pe,Ie,Ee),Ie)),!c.isZero(Pe)||(Pe[0]=1,Pe[1]=0,Pe[2]=0,W(Pe,Y(Pe,Y(Pe,Ie,Pe),Ie)),!c.isZero(Pe))||(Pe[0]=0,Pe[1]=1,Pe[2]=0,W(Pe,Y(Pe,Y(Pe,Ie,Pe),Ie)),!c.isZero(Pe))||(W(Pe,Ee),!c.isZero(Pe))||(Pe[0]=1,Pe[1]=0,Pe[2]=0),Pe}c.orthogonalize=ke;function ze(Pe,Ie,Ee){return X(Ie,Ee)>0?P(Pe,Ie):G(Pe,P(Pe,Ie)),Pe}c.matchDirection=ze;function We(Pe,Ie){if(we(Ie))return P(Pe,c.unitX);{const Ee=o();return Math.abs(Ie[0])<Math.abs(Ie[1])&&Math.abs(Ie[0])<Math.abs(Ie[2])?(Ee[0]=0,Ee[1]=Ie[2],Ee[2]=-Ie[1]):Math.abs(Ie[1])<Math.abs(Ie[2])?(Ee[0]=-Ie[2],Ee[1]=0,Ee[2]=Ie[0]):(Ee[0]=Ie[1],Ee[1]=-Ie[0],Ee[2]=0),W(Pe,Ee)}}c.orthogonalDirection=We;const Je=o(),De=o();function Oe(Pe,Ie,Ee,Ue){return l(Je,Ee,Ie),l(De,Ue,Ie),W(Pe,Y(Pe,Je,De))}c.triangleNormal=Oe;const Fe=o();function Le(Pe,Ie,Ee){return c.scaleAndAdd(Pe,Ie,c.sub(Fe,Ee,Ie),.5)}c.center=Le;function He(Pe,Ie){return`[${Pe[0].toPrecision(Ie)} ${Pe[1].toPrecision(Ie)} ${Pe[2].toPrecision(Ie)}]`}c.toString=He,c.origin=m(0,0,0),c.unit=m(1,1,1),c.negUnit=m(-1,-1,-1),c.unitX=m(1,0,0),c.unitY=m(0,1,0),c.unitZ=m(0,0,1),c.negUnitX=m(-1,0,0),c.negUnitY=m(0,-1,0),c.negUnitZ=m(0,0,-1)})(i||(rm.Vec3=i={})),rm}var nm={},im={},iV;function K_(){if(iV)return im;iV=1,Object.defineProperty(im,"__esModule",{value:!0}),im.Mat3=n;const e=rn(),t=Xr(),r=wt();function n(){return n.zero()}return(function(i){function c(){const Q=[.1,0,0,0,0,0,0,0,0];return Q[0]=0,Q}i.zero=c;function o(){const Q=c();return Q[0]=1,Q[1]=0,Q[2]=0,Q[3]=0,Q[4]=1,Q[5]=0,Q[6]=0,Q[7]=0,Q[8]=1,Q}i.identity=o;function s(Q){return Q[0]=1,Q[1]=0,Q[2]=0,Q[3]=0,Q[4]=1,Q[5]=0,Q[6]=0,Q[7]=0,Q[8]=1,Q}i.setIdentity=s;function h(Q,J,ae){return J[ae+0]=Q[0],J[ae+1]=Q[1],J[ae+2]=Q[2],J[ae+3]=Q[3],J[ae+4]=Q[4],J[ae+5]=Q[5],J[ae+6]=Q[6],J[ae+7]=Q[7],J[ae+8]=Q[8],J}i.toArray=h;function f(Q,J,ae){return Q[0]=J[ae+0],Q[1]=J[ae+1],Q[2]=J[ae+2],Q[3]=J[ae+3],Q[4]=J[ae+4],Q[5]=J[ae+5],Q[6]=J[ae+6],Q[7]=J[ae+7],Q[8]=J[ae+8],Q}i.fromArray=f;function y(Q,J,ae,te){return Q[0]=J[0],Q[1]=J[1],Q[2]=J[2],Q[3]=ae[0],Q[4]=ae[1],Q[5]=ae[2],Q[6]=te[0],Q[7]=te[1],Q[8]=te[2],Q}i.fromColumns=y;function _(Q,J){return Q[0]=J[0],Q[1]=J[1],Q[2]=J[2],Q[3]=J[4],Q[4]=J[5],Q[5]=J[6],Q[6]=J[8],Q[7]=J[9],Q[8]=J[10],Q}i.fromMat4=_;const g=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function a(Q,J,ae){return t.Mat4.fromEuler(g,J,ae),_(Q,g)}i.fromEuler=a;function d(Q,J,ae){return t.Mat4.fromRotation(g,J,ae),_(Q,g)}i.fromRotation=d;function p(Q,J,ae,te,ne,$,ie,Z,re){const oe=c();return oe[0]=Q,oe[1]=J,oe[2]=ae,oe[3]=te,oe[4]=ne,oe[5]=$,oe[6]=ie,oe[7]=Z,oe[8]=re,oe}i.create=p;const u=o();function m(Q,J){return C(Q,u,typeof J>
1"u"?e.EPSILON:J)}i.isIdentity=m;function v(Q){return Array.isArray(Q)&&Q.length===9}i.is=v;function b(Q){for(let J=0;J<9;J++)if(Number.isNaN(Q[J]))return!0;return!1}i.hasNaN=b;function P(Q){return T(c(),Q)}i.clone=P;function C(Q,J,ae){for(let te=0;te<9;te++)if(Math.abs(Q[te]-J[te])>ae)return!1;return!0}i.areEqual=C;function l(Q,J,ae,te){Q[3*ae+J]=te}i.setValue=l;function S(Q,J,ae){return Q[3*ae+J]}i.getValue=S;function T(Q,J){return Q[0]=J[0],Q[1]=J[1],Q[2]=J[2],Q[3]=J[3],Q[4]=J[4],Q[5]=J[5],Q[6]=J[6],Q[7]=J[7],Q[8]=J[8],Q}i.copy=T;function A(Q,J){if(Q===J){const ae=J[1],te=J[2],ne=J[5];Q[1]=J[3],Q[2]=J[6],Q[3]=ae,Q[5]=J[7],Q[6]=te,Q[7]=ne}else Q[0]=J[0],Q[1]=J[3],Q[2]=J[6],Q[3]=J[1],Q[4]=J[4],Q[5]=J[7],Q[6]=J[2],Q[7]=J[5],Q[8]=J[8];return Q}i.transpose=A;function x(Q,J){const ae=J[0],te=J[1],ne=J[2],$=J[3],ie=J[4],Z=J[5],re=J[6],oe=J[7],ce=J[8],ue=ce*ie-Z*oe,pe=-ce*$+Z*re,he=oe*$-ie*re;let fe=ae*ue+te*pe+ne*he;return fe?(fe=1/fe,Q[0]=ue*fe,Q[1]=(-ce*te+ne*oe)*fe,Q[2]=(Z*te-ne*ie)*fe,Q[3]=pe*fe,Q[4]=(ce*ae-ne*re)*fe,Q[5]=(-Z*ae+ne*$)*fe,Q[6]=he*fe,Q[7]=(-oe*ae+te*re)*fe,Q[8]=(ie*ae-te*$)*fe,Q):(console.warn("non-invertible matrix.",J),Q)}i.invert=x;function M(Q,J){return Q===J?(Q[3]=J[1],Q[6]=J[2],Q[7]=J[5]):(Q[0]=J[0],Q[1]=J[1],Q[2]=J[2],Q[3]=J[1],Q[4]=J[4],Q[5]=J[5],Q[6]=J[2],Q[7]=J[5],Q[8]=J[8]),Q}i.symmtricFromUpper=M;function D(Q,J){return Q===J?(Q[1]=J[3],Q[2]=J[6],Q[5]=J[7]):(Q[0]=J[0],Q[1]=J[3],Q[2]=J[6],Q[3]=J[3],Q[4]=J[4],Q[5]=J[7],Q[6]=J[6],Q[7]=J[7],Q[8]=J[8]),Q}i.symmtricFromLower=D;function V(Q){const J=Q[0],ae=Q[1],te=Q[2],ne=Q[3],$=Q[4],ie=Q[5],Z=Q[6],re=Q[7],oe=Q[8],ce=oe*$-ie*re,ue=-oe*ne+ie*Z,pe=re*ne-$*Z;return J*ce+ae*ue+te*pe}i.determinant=V;function R(Q){return Q[0]+Q[4]+Q[8]}i.trace=R;function E(Q,J,ae){return Q[0]=J[0]-ae[0],Q[1]=J[1]-ae[1],Q[2]=J[2]-ae[2],Q[3]=J[3]-ae[3],Q[4]=J[4]-ae[4],Q[5]=J[5]-ae[5],Q[6]=J[6]-ae[6],Q[7]=J[7]-ae[7],Q[8]=J[8]-ae[8],Q}i.sub=E;function I(Q,J,ae){return Q[0]=J[0]+ae[0],Q[1]=J[1]+ae[1],Q[2]=J[2]+ae[2],Q[3]=J[3]+ae[3],Q[4]=J[4]+ae[4],Q[5]=J[5]+ae[5],Q[6]=J[6]+ae[6],Q[7]=J[7]+ae[7],Q[8]=J[8]+ae[8],Q}i.add=I;function B(Q,J,ae){const te=J[0],ne=J[1],$=J[2],ie=J[3],Z=J[4],re=J[5],oe=J[6],ce=J[7],ue=J[8],pe=ae[0],he=ae[1],fe=ae[2],de=ae[3],ge=ae[4],Ce=ae[5],ve=ae[6],le=ae[7],me=ae[8];return Q[0]=pe*te+he*ie+fe*oe,Q[1]=pe*ne+he*Z+fe*ce,Q[2]=pe*$+he*re+fe*ue,Q[3]=de*te+ge*ie+Ce*oe,Q[4]=de*ne+ge*Z+Ce*ce,Q[5]=de*$+ge*re+Ce*ue,Q[6]=ve*te+le*ie+me*oe,Q[7]=ve*ne+le*Z+me*ce,Q[8]=ve*$+le*re+me*ue,Q}i.mul=B;function w(Q,J,ae){return Q[0]=J[0]-ae,Q[1]=J[1]-ae,Q[2]=J[2]-ae,Q[3]=J[3]-ae,Q[4]=J[4]-ae,Q[5]=J[5]-ae,Q[6]=J[6]-ae,Q[7]=J[7]-ae,Q[8]=J[8]-ae,Q}i.subScalar=w;function O(Q,J,ae){return Q[0]=J[0]+ae,Q[1]=J[1]+ae,Q[2]=J[2]+ae,Q[3]=J[3]+ae,Q[4]=J[4]+ae,Q[5]=J[5]+ae,Q[6]=J[6]+ae,Q[7]=J[7]+ae,Q[8]=J[8]+ae,Q}i.addScalar=O;function F(Q,J,ae){return Q[0]=J[0]*ae,Q[1]=J[1]*ae,Q[2]=J[2]*ae,Q[3]=J[3]*ae,Q[4]=J[4]*ae,Q[5]=J[5]*ae,Q[6]=J[6]*ae,Q[7]=J[7]*ae,Q[8]=J[8]*ae,Q}i.mulScalar=F;const L=Math.PI/3,U=c();function q(Q,J){const ae=J[1]*J[1]+J[2]*J[2]+J[5]*J[5];if(ae===0)Q[0]=J[0],Q[1]=J[4],Q[2]=J[8];else{const te=R(J)/3,ne=J[0]-te,$=J[4]-te,ie=J[8]-te,Z=ne*ne+$*$+ie*ie+2*ae,re=Math.sqrt(Z/6);F(U,i.Identity,te),E(U,J,U),F(U,U,1/re);const oe=V(U)/2,ce=oe<=-1?L:oe>=1?0:Math.acos(oe)/3;Q[0]=te+2*re*Math.cos(ce),Q[2]=te+2*re*Math.cos(ce+2*L),Q[1]=3*te-Q[0]-Q[2]}return Q}i.symmetricEigenvalues=q;const N=[.1,0,0],k=[.1,0,0],j=[.1,0,0],H=[.1,0,0],G=[.1,0,0],z=[.1,0,0];function W(Q,J,ae){r.Vec3.set(N,J[0]-ae,J[1],J[2]),r.Vec3.set(k,J[1],J[4]-ae,J[5]),r.Vec3.set(j,J[2],J[5],J[8]-ae),r.Vec3.cross(H,N,k),r.Vec3.cross(G,N,j),r.Vec3.cross(z,k,j);const te=r.Vec3.dot(H,H),ne=r.Vec3.dot(G,G),$=r.Vec3.dot(z,z);let ie=te,Z=0;return ne>ie&&(ie=ne,Z=1),$>ie&&(Z=2),Z===0?r.Vec3.scale(Q,H,1/Math.sqrt(te)):Z===1?r.Vec3.scale(Q,G,1/Math.sqrt(ne)):r.Vec3.scale(Q,z,1/Math.sqrt($)),Q}i.eigenvector=W;function X(Q,J){return _(Q,J),x(Q,Q),A(Q,Q),Q}i.directionTransform=X,i.Identity=o();function Y(Q,J){return Q[0]*J[0]+Q[1]*J[1]+Q[2]*J[2]+Q[3]*J[3]+Q[4]*J[4]+Q[5]*J[5]+Q[6]*J[6]+Q[7]*J[7]+Q[8]*J[8]}i.innerProduct=Y;function K(Q,J){const ae=J[0],te=J[1],ne=J[2],$=J[4],ie=J[5],Z=J[6],re=J[8],oe=J[9],ce=J[10];return Q[0]=ie*ce-Z*oe,Q[1]=Z*re-$*ce,Q[2]=$*oe-ie*re,Q[3]=oe*ne-ce*te,Q[4]=ce*ae-re*ne,Q[5]=re*te-oe*ae,Q[6]=te*Z-ne*ie,Q[7]=ne*$-ae*Z,Q[8]=ae*ie-te*$,Q}i.adjointFromMat4=K})(n||(im.Mat3=n={})),im}var Xl={},aV;function Gt(){if(aV)return Xl;
1aV=1,Object.defineProperty(Xl,"__esModule",{value:!0}),Xl.ObjectKeys=e,Xl.assertUnreachable=t,Xl.isPromiseLike=r;function e(n){return Object.keys(n)}function t(n){throw new Error("unreachable")}function r(n){return typeof n?.then=="function"}return Xl}var oV;function rs(){if(oV)return nm;oV=1,Object.defineProperty(nm,"__esModule",{value:!0}),nm.Quat=o;const e=K_(),t=wt(),r=rn(),n=Gt(),i=Xr(),c=ir();function o(){return o.zero()}return(function(s){function h(){const Z=[.1,0,0,0];return Z[0]=0,Z}s.zero=h;function f(){const Z=h();return Z[3]=1,Z}s.identity=f;function y(Z){Z[0]=0,Z[1]=0,Z[2]=0,Z[3]=1}s.setIdentity=y;function _(Z){return Number.isNaN(Z[0])||Number.isNaN(Z[1])||Number.isNaN(Z[2])||Number.isNaN(Z[3])}s.hasNaN=_;function g(Z,re,oe,ce){const ue=f();return ue[0]=Z,ue[1]=re,ue[2]=oe,ue[3]=ce,ue}s.create=g;function a(Z){return Array.isArray(Z)&&Z.length===4}s.is=a;function d(Z,re,oe){oe=oe*.5;const ce=Math.sin(oe);return Z[0]=ce*re[0],Z[1]=ce*re[1],Z[2]=ce*re[2],Z[3]=Math.cos(oe),Z}s.setAxisAngle=d;function p(Z,re){const oe=Math.acos(re[3])*2,ce=Math.sin(oe/2);return ce!==0?(Z[0]=re[0]/ce,Z[1]=re[1]/ce,Z[2]=re[2]/ce):(Z[0]=1,Z[1]=0,Z[2]=0),oe}s.getAxisAngle=p;function u(Z,re,oe){const ce=re[0],ue=re[1],pe=re[2],he=re[3],fe=oe[0],de=oe[1],ge=oe[2],Ce=oe[3];return Z[0]=ce*Ce+he*fe+ue*ge-pe*de,Z[1]=ue*Ce+he*de+pe*fe-ce*ge,Z[2]=pe*Ce+he*ge+ce*de-ue*fe,Z[3]=he*Ce-ce*fe-ue*de-pe*ge,Z}s.multiply=u;function m(Z,re,oe){oe*=.5;const ce=re[0],ue=re[1],pe=re[2],he=re[3],fe=Math.sin(oe),de=Math.cos(oe);return Z[0]=ce*de+he*fe,Z[1]=ue*de+pe*fe,Z[2]=pe*de-ue*fe,Z[3]=he*de-ce*fe,Z}
1s.rotateX=m;function v(Z,re,oe){oe*=.5;const ce=re[0],ue=re[1],pe=re[2],he=re[3],fe=Math.sin(oe),de=Math.cos(oe);return Z[0]=ce*de-pe*fe,Z[1]=ue*de+he*fe,Z[2]=pe*de+ce*fe,Z[3]=he*de-ue*fe,Z}s.rotateY=v;function b(Z,re,oe){oe*=.5;const ce=re[0],ue=re[1],pe=re[2],he=re[3],fe=Math.sin(oe),de=Math.cos(oe);return Z[0]=ce*de+ue*fe,Z[1]=ue*de-ce*fe,Z[2]=pe*de+he*fe,Z[3]=he*de-pe*fe,Z}s.rotateZ=b;function P(Z,re){const oe=re[0],ce=re[1],ue=re[2];return Z[0]=oe,Z[1]=ce,Z[2]=ue,Z[3]=Math.sqrt(Math.abs(1-oe*oe-ce*ce-ue*ue)),Z}s.calculateW=P;function C(Z,re,oe,ce){const ue=re[0],pe=re[1],he=re[2],fe=re[3];let de=oe[0],ge=oe[1],Ce=oe[2],ve=oe[3],le,me,ee,se,ye;return me=ue*de+pe*ge+he*Ce+fe*ve,me<0&&(me=-me,de=-de,ge=-ge,Ce=-Ce,ve=-ve),1-me>1e-6?(le=Math.acos(me),ee=Math.sin(le),se=Math.sin((1-ce)*le)/ee,ye=Math.sin(ce*le)/ee):(se=1-ce,ye=ce),Z[0]=se*ue+ye*de,Z[1]=se*pe+ye*ge,Z[2]=se*he+ye*Ce,Z[3]=se*fe+ye*ve,Z}s.slerp=C;function l(Z,re){const oe=re[0],ce=re[1],ue=re[2],pe=re[3],he=oe*oe+ce*ce+ue*ue+pe*pe,fe=he?1/he:0;return Z[0]=-oe*fe,Z[1]=-ce*fe,Z[2]=-ue*fe,Z[3]=pe*fe,Z}s.invert=l;function S(Z,re){return Z[0]=-re[0],Z[1]=-re[1],Z[2]=-re[2],Z[3]=re[3],Z}s.conjugate=S;function T(Z,re){return Z[0]*re[0]+Z[1]*re[1]+Z[2]*re[2]+Z[3]*re[3]}s.dot=T;function A(Z,re){const oe=re[0]+re[4]+re[8];let ce;if(oe>0)ce=Math.sqrt(oe+1),Z[3]=.5*ce,ce=.5/ce,Z[0]=(re[5]-re[7])*ce,Z[1]=(re[6]-re[2])*ce,Z[2]=(re[1]-re[3])*ce;else{let ue=0;re[4]>re[0]&&(ue=1),re[8]>re[ue*3+ue]&&(ue=2);const pe=(ue+1)%3,he=(ue+2)%3;ce=Math.sqrt(re[ue*3+ue]-re[pe*3+pe]-re[he*3+he]+1),Z[ue]=.5*ce,ce=.5/ce,Z[3]=(re[pe*3+he]-re[he*3+pe])*ce,Z[pe]=(re[pe*3+ue]+re[ue*3+pe])*ce,Z[he]=(re[he*3+ue]+re[ue*3+he])*ce}return Z}s.fromMat3=A;const x=[0,0,0,0,0,0,0,0,0,0,0,0];function M(Z,re){return e.Mat3.fromMat4(x,re),A(Z,x)}s.fromMat4=M;function D(Z,re,oe){const[ce,ue,pe]=re,he=Math.cos(ce/2),fe=Math.cos(ue/2),de=Math.cos(pe/2),ge=Math.sin(ce/2),Ce=Math.sin(ue/2),ve=Math.sin(pe/2);switch(oe){case"XYZ":Z[0]=ge*fe*de+he*Ce*ve,Z[1]=he*Ce*de-ge*fe*ve,Z[2]=he*fe*ve+ge*Ce*de,Z[3]=he*fe*de-ge*Ce*ve;break;case"YXZ":Z[0]=ge*fe*de+he*Ce*ve,Z[1]=he*Ce*de-ge*fe*ve,Z[2]=he*fe*ve-ge*Ce*de,Z[3]=he*fe*de+ge*Ce*ve;break;case"ZXY":Z[0]=ge*fe*de-he*Ce*ve,Z[1]=he*Ce*de+ge*fe*ve,Z[2]=he*fe*ve+ge*Ce*de,Z[3]=he*fe*de-ge*Ce*ve;break;case"ZYX":Z[0]=ge*fe*de-he*Ce*ve,Z[1]=he*Ce*de+ge*fe*ve,Z[2]=he*fe*ve-ge*Ce*de,Z[3]=he*fe*de+ge*Ce*ve;break;case"YZX":Z[0]=ge*fe*de+he*Ce*ve,Z[1]=he*Ce*de+ge*fe*ve,Z[2]=he*fe*ve-ge*Ce*de,Z[3]=he*fe*de-ge*Ce*ve;break;case"XZY":Z[0]=ge*fe*de-he*Ce*ve,Z[1]=he*Ce*de-ge*fe*ve,Z[2]=he*fe*ve+ge*Ce*de,Z[3]=he*fe*de+ge*Ce*ve;break;default:(0,n.assertUnreachable)(oe)}return Z}s.fromEuler=D;const V=[0,0,0];function R(Z,re,oe){let ce=t.Vec3.dot(re,oe)+1;return ce<r.EPSILON?(ce=0,Math.abs(re[0])>Math.abs(re[2])?t.Vec3.set(V,-re[1],re[0],0):t.Vec3.set(V,0,-re[2],re[1])):t.Vec3.cross(V,re,oe),Z[0]=V[0],Z[1]=V[1],Z[2]=V[2],Z[3]=ce,W(Z,Z),Z}s.fromUnitVec3=R;const E=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function I(Z,re,oe,ce){return i.Mat4.fromBasis(E,re,oe,ce),M(Z,E)}s.fromBasis=I;function B(Z){const re=h();return re[0]=Z[0],re[1]=Z[1],re[2]=Z[2],re[3]=Z[3],re}s.clone=B;function w(Z){return g(Z.x,Z.y,Z.z,Z.w)}s.fromObj=w;function O(Z){return{x:Z[0],y:Z[1],z:Z[2],w:Z[3]}}s.toObj=O;function F(Z,re,oe){return re[oe+0]=Z[0],re[oe+1]=Z[1],re[oe+2]=Z[2],re[oe+3]=Z[3],re}s.toArray=F;function L(Z,re,oe){return Z[0]=re[oe+0],Z[1]=re[oe+1],Z[2]=re[oe+2],Z[3]=re[oe+3],Z}s.fromArray=L;function U(Z,re){return Z[0]=re[0],Z[1]=re[1],Z[2]=re[2],Z[3]=re[3],Z}s.copy=U;function q(Z,re,oe,ce,ue){return Z[0]=re,Z[1]=oe,Z[2]=ce,Z[3]=ue,Z}s.set=q;function N(Z,re){return Z[0]===re[0]&&Z[1]===re[1]&&Z[2]===re[2]&&Z[3]===re[3]}s.exactEquals=N;function k(Z,re){const oe=Z[0],ce=Z[1],ue=Z[2],pe=Z[3],he=re[0],fe=re[1],de=re[2],ge=re[3];return Math.abs(oe-he)<=r.EPSILON*Math.max(1,Math.abs(oe),Math.abs(he))&&Math.abs(ce-fe)<=r.EPSILON*Math.max(1,Math.abs(ce),Math.abs(fe))&&Math.abs(ue-de)<=r.EPSILON*Math.max(1,Math.abs(ue),Math.abs(de))&&Math.abs(pe-ge)<=r.EPSILON*Math.max(1,Math.abs(pe),Math.abs(ge))}s.equals=k;function j(Z,re,oe){return Z[0]=re[0]+oe[0],Z[1]=re[1]+oe[1],Z[2]=re[2]+oe[2],Z[3]=re[3]+oe[3],Z}s.add=j;function H(Z){const re=Z[0],oe=Z[1],ce=Z[2],ue=Z[3];return Math.sqrt(re*re+oe*oe+ce*ce+ue*ue)}s.magnitude=H;function G(Z){const re=Z[0],oe=Z[1],ce=Z[2],ue=Z[3];return re*re+oe*oe+ce*ce+ue*ue}s.squaredMagnitude=G;function z(Z,re){return 2*Math.acos(Math.abs((0,c.clamp)(T(Z,re),-1,1)))}s.angle=z;function W(Z,re){const oe=re[0],ce=re[1],ue=re[2],pe=re[3];let he=oe*oe+ce*ce+ue*ue+pe*pe;return he>0&&(he=1/Math.sqrt(he),Z[0]=oe*he,Z[1]=ce*he,Z[2]=ue*he,Z[3]=pe*he),Z}s.normalize=W;const X=[0,0,0],Y=[1,0,0],K=[0,1,0];function Q(Z,re,oe){const ce=t.Vec3.dot(re,oe);return ce<-.999999?(t.Vec3.cross(X,Y,re),t.Vec3.magnitude(X)<1e-6&&t.Vec3.cross(X,K,re),t.Vec3.normalize(X,X),d(Z,X,Math.PI),Z):ce>.999999?(Z[0]=0,Z[1]=0,Z[2]=0,Z[3]=1,Z):(t.Vec3.cross(X,re,oe),Z[0]=X[0],Z[1]=X[1],Z[2]=X[2],Z[3]=1+ce,W(Z,Z))}s.rotationTo=Q;const J=h(),ae=h();function te(Z,re,oe,ce,ue,pe){return C(J,re,ue,pe),C(ae,oe,ce,pe),C(Z,J,ae,2*pe*(1-pe)),Z}s.sqlerp=te;const ne=[0,0,0,0,0,0,0,0,0];function $(Z,re,oe,ce){return ne[0]=oe[0],ne[3]=oe[1],ne[6]=oe[2],ne[1]=ce[0],ne[4]=ce[1],ne[7]=ce[2],ne[2]=-re[0],ne[5]=-re[1],ne[8]=-re[2],W(Z,A(Z,ne))}s.setAxes=$;function ie(Z,re){return`[${Z[0].toPrecision(re)} ${Z[1].toPrecision(re)} ${Z[2].toPrecision(re)}  ${Z[3].toPrecision(re)}]`}s.toString=ie,s.Identity=f()})(o||(nm.Quat=o={})),nm}var M2={},sV;function er(){return sV||(sV=1,(function(e){Object.defineProperty(e,"__esMo
1dule",{value:!0}),e.PiDiv180=e.halfPI=void 0,e.degToRad=t,e.radToDeg=r,e.isPowerOfTwo=n,e.absMax=i,e.arcLength=c,e.spiral2d=o,e.halfPI=Math.PI/2,e.PiDiv180=Math.PI/180;function t(s){return s*e.PiDiv180}function r(s){return s/e.PiDiv180}function n(s){return s!==0&&(s&s-1)===0}function i(...s){let h=0,f=0;for(let y=0,_=s.length;y<_;++y){const g=s[y],a=Math.abs(g);a>f&&(h=g,f=a)}return h}function c(s,h){return s*h}function o(s){let h=0,f=0,y=0,_=-1;const g=s*2+1,a=g/2,d=[];for(let p=Math.pow(g,2);p>0;--p){if(-a<h&&h<=a&&-a<f&&f<=a&&d.push([h,f]),h===f||h<0&&h===-f||h>0&&h===1-f){const u=y;y=-_,_=u}h+=y,f+=_}return d}})(M2)),M2}var cV;function Xr(){if(cV)return tm;cV=1,Object.defineProperty(tm,"__esModule",{value:!0}),tm.Mat4=i;const e=rn(),t=wt(),r=rs(),n=er();function i(){return i.zero()}return(function(c){function o(){const ee=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];return ee[0]=0,ee}c.zero=o;function s(){const ee=o();return ee[0]=1,ee[1]=0,ee[2]=0,ee[3]=0,ee[4]=0,ee[5]=1,ee[6]=0,ee[7]=0,ee[8]=0,ee[9]=0,ee[10]=1,ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.identity=s;function h(ee){return ee[0]=1,ee[1]=0,ee[2]=0,ee[3]=0,ee[4]=0,ee[5]=1,ee[6]=0,ee[7]=0,ee[8]=0,ee[9]=0,ee[10]=1,ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.setIdentity=h;function f(ee){for(let se=0;se<16;se++)if(ee[se]!==0)return!1;return!0}c.isZero=f;function y(ee){for(let se=0;se<16;se++)ee[se]=0;return ee}c.setZero=y;function _(ee){const se=o();for(let ye=0;ye<4;ye++){const Se=ee[ye];for(let Ae=0;Ae<4;Ae++)se[4*Ae+ye]=Se[Ae]}return se}c.ofRows=_;const g=s();function a(ee,se){return u(ee,g,typeof se>"u"?e.EPSILON:se)}c.isIdentity=a;function d(ee){return Array.isArray(ee)&&ee.length===16}c.is=d;function p(ee){for(let se=0;se<16;se++)if(Number.isNaN(ee[se]))return!0;return!1}c.hasNaN=p;function u(ee,se,ye){for(let Se=0;Se<16;Se++)if(Math.abs(ee[Se]-se[Se])>ye)return!1;return!0}c.areEqual=u;function m(ee,se,ye,Se){ee[4*ye+se]=Se}c.setValue=m;function v(ee,se,ye){return ee[4*ye+se]}c.getValue=v;function b(ee,se,ye){return se[ye+0]=ee[0],se[ye+1]=ee[1],se[ye+2]=ee[2],se[ye+3]=ee[3],se[ye+4]=ee[4],se[ye+5]=ee[5],se[ye+6]=ee[6],se[ye+7]=ee[7],se[ye+8]=ee[8],se[ye+9]=ee[9],se[ye+10]=ee[10],se[ye+11]=ee[11],se[ye+12]=ee[12],se[ye+13]=ee[13],se[ye+14]=ee[14],se[ye+15]=ee[15],se}c.toArray=b;function P(ee,se,ye){return ee[0]=se[ye+0],ee[1]=se[ye+1],ee[2]=se[ye+2],ee[3]=se[ye+3],ee[4]=se[ye+4],ee[5]=se[ye+5],ee[6]=se[ye+6],ee[7]=se[ye+7],ee[8]=se[ye+8],ee[9]=se[ye+9],ee[10]=se[ye+10],ee[11]=se[ye+11],ee[12]=se[ye+12],ee[13]=se[ye+13],ee[14]=se[ye+14],ee[15]=se[ye+15],ee}c.fromArray=P;function C(ee,se,ye,Se){return y(ee),m(ee,0,0,se[0]),m(ee,1,0,se[1]),m(ee,2,0,se[2]),m(ee,0,1,ye[0]),m(ee,1,1,ye[1]),m(ee,2,1,ye[2]),m(ee,0,2,Se[0]),m(ee,1,2,Se[1]),m(ee,2,2,Se[2]),m(ee,3,3,1),ee}c.fromBasis=C;function l(ee,se){return ee[0]=se[0],ee[1]=se[1],ee[2]=se[2],ee[3]=se[3],ee[4]=se[4],ee[5]=se[5],ee[6]=se[6],ee[7]=se[7],ee[8]=se[8],ee[9]=se[9],ee[10]=se[10],ee[11]=se[11],ee[12]=se[12],ee[13]=se[13],ee[14]=se[14],ee[15]=se[15],ee}c.copy=l;function S(ee){return l(o(),ee)}c.clone=S;function T(ee,se){return ee[0]=se[12],ee[1]=se[13],ee[2]=se[14],ee}c.getTranslation=T;function A(ee,se){const ye=se[0],Se=se[1],Ae=se[2],_e=se[4],be=se[5],xe=se[6],we=se[8],Be=se[9],Me=se[10];return ee[0]=Math.sqrt(ye*ye+Se*Se+Ae*Ae),ee[1]=Math.sqrt(_e*_e+be*be+xe*xe),ee[2]=Math.sqrt(we*we+Be*Be+Me*Me),ee}c.getScaling=A;function x(ee,se){const ye=se[0]+se[5]+se[10];let Se=0;return ye>0?(Se=Math.sqrt(ye+1)*2,ee[3]=.25*Se,ee[0]=(se[6]-se[9])/Se,ee[1]=(se[8]-se[2])/Se,ee[2]=(se[1]-se[4])/Se):se[0]>se[5]&&se[0]>se[10]?(Se=Math.sqrt(1+se[0]-se[5]-se[10])*2,ee[3]=(se[6]-se[9])/Se,ee[0]=.25*Se,ee[1]=(se[1]+se[4])/Se,ee[2]=(se[8]+se[2])/Se):se[5]>se[10]?(Se=Math.sqrt(1+se[5]-se[0]-se[10])*2,ee[3]=(se[8]-se[2])/Se,ee[0]=(se[1]+se[4])/Se,ee[1]=.25*Se,ee[2]=(se[6]+se[9])/Se):(Se=Math.sqrt(1+se[10]-se[0]-se[5])*2,ee[3]=(se[1]-se[4])/Se,ee[0]=(se[8]+se[2])/Se,ee[1]=(se[6]+se[9])/Se,ee[2]=.25*Se),ee}c.getRotation=x;function M(ee,se){const ye=1/Math.sqrt(se[0]*se[0]+se[1]*se[1]+se[2]*se[2]),Se=1/Math.sqrt(se[4]*se[4]+se[5]*se[5]+se[6]*se[6]),Ae=1/Math.sqrt(se[8]*se[8]+se[9]*se[9]+se[10]*se[10]);return ee[0]=se[0]*ye,ee[1]=se[1]*ye,ee[2]=se[2]*ye,ee[3]=0,ee[4]=se[4]*Se,ee[5]=se[5]*Se,ee[6]=se[6]*Se,ee[7]=0,ee[8]=se[8]*Ae,ee[9]=se[9]*Ae,ee[10]=se[10]*Ae,ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.extractRotation=M;function D(ee,se){if(ee===se){const ye=se[1],Se=se[2],Ae=se[3],_e=se[6],be=se[7],xe=se[11];ee[1]=se[4],ee[2]=se[8],ee[3]=se[12],ee[4]=ye,ee[6]=se[9],ee[7]=se[13],ee[8]=Se,ee[9]=_e,ee[11]=se[14],ee[12]=Ae,ee[13]=be,ee[14]=xe}else ee[0]=se[0],ee[1]=se[4],ee[2]=se[8],ee[3]=se[12],ee[4]=se[1],ee[5]=se[5],ee[6]=se[9],ee[7]=se[13],ee[8]=se[2],ee[9]=se[6],ee[10]=se[10],ee[11]=se[14],ee[12]=se[3],ee[13]=se[7],ee[14]=se[11],ee[15]=se[15];return ee}c.transpose=D;function V(ee,se){const ye=se[0],Se=se[1],Ae=se[2],_e=se[3],be=se[4],xe=se[5],we=se[6],Be=se[7],Me=se[8],Re=se[9],Te=se[10],Ve=se[11],qe=se[12],ke=se[13],ze=se[14],We=se[15],Je=ye*xe-Se*be,De=ye*we-Ae*be,Oe=ye*Be-_e*be,Fe=Se*we-Ae*xe,Le=Se*Be-_e*xe,He=Ae*Be-_e*we,Pe=Me*ke-Re*qe,Ie=Me*ze-Te*qe,Ee=Me*We-Ve*qe,Ue=Re*ze-Te*ke,$e=Re*We-Ve*ke,Ye=Te*We-Ve*ze;let Qe=Je*Ye-De*$e+Oe*Ue+Fe*Ee-Le*Ie+He*Pe;return Qe?(Qe=1/Qe,ee[0]=(xe*Ye-we*$e+Be*Ue)*Qe,ee[1]=(Ae*$e-Se*Ye-_e*Ue)*Qe,ee[2]=(ke*He-ze*Le+We*Fe)*Qe,ee[3]=(Te*Le-Re*He-Ve*Fe)*Qe,ee[4]=(we*Ee-be*Ye-Be*Ie)*Qe,ee[5]=(ye*Ye-Ae*Ee+_e*Ie)*Qe,ee[6]=(ze*Oe-qe*He-We*De)*Qe,ee[7]=(Me*He-Te*Oe+Ve*De)*Qe,ee[8]=(be*$e-xe*Ee+Be*Pe)*Qe,ee[9]=(Se*Ee-ye*$e-_e*Pe)*Qe,ee[10]=(qe*Le-ke*Oe+We*Je)*Qe,ee[11]=(Re*Oe-Me*Le-Ve*Je)*Qe,ee[12]=(xe*Ie-be*Ue-we*Pe)*Qe,ee[13]=(ye*Ue-Se*Ie+Ae*Pe)*Qe,ee[14]=(ke*De-qe*Fe-ze*Je)*Qe,ee[15]=(Me*Fe-Re*De+Te*Je)*Qe,!0):!1}c.tryInvert=V;function R(ee,se){return V(ee,se)||console.warn("non-invertible matrix.",se),ee}c.invert=R;
1function E(ee,se,ye){const Se=se[0],Ae=se[1],_e=se[2],be=se[3],xe=se[4],we=se[5],Be=se[6],Me=se[7],Re=se[8],Te=se[9],Ve=se[10],qe=se[11],ke=se[12],ze=se[13],We=se[14],Je=se[15];let De=ye[0],Oe=ye[1],Fe=ye[2],Le=ye[3];return ee[0]=De*Se+Oe*xe+Fe*Re+Le*ke,ee[1]=De*Ae+Oe*we+Fe*Te+Le*ze,ee[2]=De*_e+Oe*Be+Fe*Ve+Le*We,ee[3]=De*be+Oe*Me+Fe*qe+Le*Je,De=ye[4],Oe=ye[5],Fe=ye[6],Le=ye[7],ee[4]=De*Se+Oe*xe+Fe*Re+Le*ke,ee[5]=De*Ae+Oe*we+Fe*Te+Le*ze,ee[6]=De*_e+Oe*Be+Fe*Ve+Le*We,ee[7]=De*be+Oe*Me+Fe*qe+Le*Je,De=ye[8],Oe=ye[9],Fe=ye[10],Le=ye[11],ee[8]=De*Se+Oe*xe+Fe*Re+Le*ke,ee[9]=De*Ae+Oe*we+Fe*Te+Le*ze,ee[10]=De*_e+Oe*Be+Fe*Ve+Le*We,ee[11]=De*be+Oe*Me+Fe*qe+Le*Je,De=ye[12],Oe=ye[13],Fe=ye[14],Le=ye[15],ee[12]=De*Se+Oe*xe+Fe*Re+Le*ke,ee[13]=De*Ae+Oe*we+Fe*Te+Le*ze,ee[14]=De*_e+Oe*Be+Fe*Ve+Le*We,ee[15]=De*be+Oe*Me+Fe*qe+Le*Je,ee}c.mul=E;function I(ee,se,ye,Se,Ae,_e){const be=se[0+Ae],xe=se[1+Ae],we=se[2+Ae],Be=se[3+Ae],Me=se[4+Ae],Re=se[5+Ae],Te=se[6+Ae],Ve=se[7+Ae],qe=se[8+Ae],ke=se[9+Ae],ze=se[10+Ae],We=se[11+Ae],Je=se[12+Ae],De=se[13+Ae],Oe=se[14+Ae],Fe=se[15+Ae];let Le=ye[0+_e],He=ye[1+_e],Pe=ye[2+_e],Ie=ye[3+_e];return ee[0+Se]=Le*be+He*Me+Pe*qe+Ie*Je,ee[1+Se]=Le*xe+He*Re+Pe*ke+Ie*De,ee[2+Se]=Le*we+He*Te+Pe*ze+Ie*Oe,ee[3+Se]=Le*Be+He*Ve+Pe*We+Ie*Fe,Le=ye[4+_e],He=ye[5+_e],Pe=ye[6+_e],Ie=ye[7+_e],ee[4+Se]=Le*be+He*Me+Pe*qe+Ie*Je,ee[5+Se]=Le*xe+He*Re+Pe*ke+Ie*De,ee[6+Se]=Le*we+He*Te+Pe*ze+Ie*Oe,ee[7+Se]=Le*Be+He*Ve+Pe*We+Ie*Fe,Le=ye[8+_e],He=ye[9+_e],Pe=ye[10+_e],Ie=ye[11+_e],ee[8+Se]=Le*be+He*Me+Pe*qe+Ie*Je,ee[9+Se]=Le*xe+He*Re+Pe*ke+Ie*De,ee[10+Se]=Le*we+He*Te+Pe*ze+Ie*Oe,ee[11+Se]=Le*Be+He*Ve+Pe*We+Ie*Fe,Le=ye[12+_e],He=ye[13+_e],Pe=ye[14+_e],Ie=ye[15+_e],ee[12+Se]=Le*be+He*Me+Pe*qe+Ie*Je,ee[13+Se]=Le*xe+He*Re+Pe*ke+Ie*De,ee[14+Se]=Le*we+He*Te+Pe*ze+Ie*Oe,ee[15+Se]=Le*Be+He*Ve+Pe*We+Ie*Fe,ee}c.mulOffset=I;function B(ee,se,ye,Se){return E(ee,E(ee,se,ye),Se)}c.mul3=B;function w(ee,se,ye){const Se=ye[0],Ae=ye[1],_e=ye[2];let be,xe,we,Be,Me,Re,Te,Ve,qe,ke,ze,We;return se===ee?(ee[12]=se[0]*Se+se[4]*Ae+se[8]*_e+se[12],ee[13]=se[1]*Se+se[5]*Ae+se[9]*_e+se[13],ee[14]=se[2]*Se+se[6]*Ae+se[10]*_e+se[14],ee[15]=se[3]*Se+se[7]*Ae+se[11]*_e+se[15]):(be=se[0],xe=se[1],we=se[2],Be=se[3],Me=se[4],Re=se[5],Te=se[6],Ve=se[7],qe=se[8],ke=se[9],ze=se[10],We=se[11],ee[0]=be,ee[1]=xe,ee[2]=we,ee[3]=Be,ee[4]=Me,ee[5]=Re,ee[6]=Te,ee[7]=Ve,ee[8]=qe,ee[9]=ke,ee[10]=ze,ee[11]=We,ee[12]=be*Se+Me*Ae+qe*_e+se[12],ee[13]=xe*Se+Re*Ae+ke*_e+se[13],ee[14]=we*Se+Te*Ae+ze*_e+se[14],ee[15]=Be*Se+Ve*Ae+We*_e+se[15]),ee}c.translate=w;function O(ee,se){return ee[0]=1,ee[1]=0,ee[2]=0,ee[3]=0,ee[4]=0,ee[5]=1,ee[6]=0,ee[7]=0,ee[8]=0,ee[9]=0,ee[10]=1,ee[11]=0,ee[12]=se[0],ee[13]=se[1],ee[14]=se[2],ee[15]=1,ee}c.fromTranslation=O;function F(ee,se){return ee[12]=se[0],ee[13]=se[1],ee[14]=se[2],ee}c.setTranslation=F;function L(ee,se,ye,Se){return ee[0]=ye[0],ee[4]=ye[1],ee[8]=ye[2],ee[1]=Se[0],ee[5]=Se[1],ee[9]=Se[2],ee[2]=se[0],ee[6]=se[1],ee[10]=se[2],ee}c.setAxes=L;function U(ee,se,ye,Se){let Ae=Se[0],_e=Se[1],be=Se[2],xe=Math.sqrt(Ae*Ae+_e*_e+be*be);if(Math.abs(xe)<e.EPSILON)return s();xe=1/xe,Ae*=xe,_e*=xe,be*=xe;const we=Math.sin(ye),Be=Math.cos(ye),Me=1-Be,Re=se[0],Te=se[1],Ve=se[2],qe=se[3],ke=se[4],ze=se[5],We=se[6],Je=se[7],De=se[8],Oe=se[9],Fe=se[10],Le=se[11],He=Ae*Ae*Me+Be,Pe=_e*Ae*Me+be*we,Ie=be*Ae*Me-_e*we,Ee=Ae*_e*Me-be*we,Ue=_e*_e*Me+Be,$e=be*_e*Me+Ae*we,Ye=Ae*be*Me+_e*we,Qe=_e*be*Me-Ae*we,it=be*be*Me+Be;return ee[0]=Re*He+ke*Pe+De*Ie,ee[1]=Te*He+ze*Pe+Oe*Ie,ee[2]=Ve*He+We*Pe+Fe*Ie,ee[3]=qe*He+Je*Pe+Le*Ie,ee[4]=Re*Ee+ke*Ue+De*$e,ee[5]=Te*Ee+ze*Ue+Oe*$e,ee[6]=Ve*Ee+We*Ue+Fe*$e,ee[7]=qe*Ee+Je*Ue+Le*$e,ee[8]=Re*Ye+ke*Qe+De*it,ee[9]=Te*Ye+ze*Qe+Oe*it,ee[10]=Ve*Ye+We*Qe+Fe*it,ee[11]=qe*Ye+Je*Qe+Le*it,se!==ee&&(ee[12]=se[12],ee[13]=se[13],ee[14]=se[14],ee[15]=se[15]),ee}c.rotate=U;function q(ee,se,ye){let Se=ye[0],Ae=ye[1],_e=ye[2],be=Math.sqrt(Se*Se+Ae*Ae+_e*_e);if(Math.abs(be)<e.EPSILON)return h(ee);be=1/be,Se*=be,Ae*=be,_e*=be;const xe=Math.sin(se),we=Math.cos(se),Be=1-we;return ee[0]=Se*Se*Be+we,ee[1]=Ae*Se*Be+_e*xe,ee[2]=_e*Se*Be-Ae*xe,ee[3]=0,ee[4]=Se*Ae*Be-_e*xe,ee[5]=Ae*Ae*Be+we,ee[6]=_e*Ae*Be+Se*xe,ee[7]=0,ee[8]=Se*_e*Be+Ae*xe,ee[9]=Ae*_e*Be-Se*xe,ee[10]=_e*_e*Be+we,ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.fromRotation=q;
1function N(ee,se,ye){const Se=ye[0],Ae=ye[1],_e=ye[2];return ee[0]=se[0]*Se,ee[1]=se[1]*Se,ee[2]=se[2]*Se,ee[3]=se[3]*Se,ee[4]=se[4]*Ae,ee[5]=se[5]*Ae,ee[6]=se[6]*Ae,ee[7]=se[7]*Ae,ee[8]=se[8]*_e,ee[9]=se[9]*_e,ee[10]=se[10]*_e,ee[11]=se[11]*_e,ee[12]=se[12],ee[13]=se[13],ee[14]=se[14],ee[15]=se[15],ee}c.scale=N;function k(ee,se,ye){return ee[0]=se[0]*ye,ee[1]=se[1]*ye,ee[2]=se[2]*ye,ee[3]=se[3]*ye,ee[4]=se[4]*ye,ee[5]=se[5]*ye,ee[6]=se[6]*ye,ee[7]=se[7]*ye,ee[8]=se[8]*ye,ee[9]=se[9]*ye,ee[10]=se[10]*ye,ee[11]=se[11]*ye,ee[12]=se[12],ee[13]=se[13],ee[14]=se[14],ee[15]=se[15],ee}c.scaleUniformly=k;function j(ee,se){return ee[0]=se[0],ee[1]=0,ee[2]=0,ee[3]=0,ee[4]=0,ee[5]=se[1],ee[6]=0,ee[7]=0,ee[8]=0,ee[9]=0,ee[10]=se[2],ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.fromScaling=j;function H(ee,se){return ee[0]=se,ee[1]=0,ee[2]=0,ee[3]=0,ee[4]=0,ee[5]=se,ee[6]=0,ee[7]=0,ee[8]=0,ee[9]=0,ee[10]=se,ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.fromUniformScaling=H;const G=[0,0,0],z=[0,0,0];function W(ee,se,ye){const Se=t.Vec3.cross(G,se,t.Vec3.unitX);t.Vec3.dot(Se,Se)<e.EPSILON&&t.Vec3.cross(Se,se,t.Vec3.unitY),t.Vec3.normalize(Se,Se);const Ae=t.Vec3.cross(z,se,Se);return t.Vec3.normalize(Ae,Ae),C(ee,Se,Ae,se),ee[12]=ye[0],ee[13]=ye[1],ee[14]=ye[2],ee}c.fromPlane=W;function X(ee,se){return ee[0]=se[0],ee[1]=se[1],ee[2]=se[2],ee[4]=se[3],ee[5]=se[4],ee[6]=se[5],ee[8]=se[6],ee[9]=se[7],ee[10]=se[8],ee}c.fromMat3=X;function Y(ee,se,ye,Se){const[Ae,_e,be,xe]=ye,we=Ae+Ae,Be=_e+_e,Me=be+be,Re=Ae*we,Te=Ae*Be,Ve=Ae*Me,qe=_e*Be,ke=_e*Me,ze=be*Me,We=xe*we,Je=xe*Be,De=xe*Me,[Oe,Fe,Le]=Se;return ee[0]=(1-(qe+ze))*Oe,ee[1]=(Te+De)*Oe,ee[2]=(Ve-Je)*Oe,ee[3]=0,ee[4]=(Te-De)*Fe,ee[5]=(1-(Re+ze))*Fe,ee[6]=(ke+We)*Fe,ee[7]=0,ee[8]=(Ve+Je)*Le,ee[9]=(ke-We)*Le,ee[10]=(1-(Re+qe))*Le,ee[11]=0,ee[12]=se[0],ee[13]=se[1],ee[14]=se[2],ee[15]=1,ee}c.compose=Y;const K=[0,0,0],Q=o();function J(ee,se,ye,Se){let Ae=t.Vec3.magnitude(t.Vec3.set(K,ee[0],ee[1],ee[2]));const _e=t.Vec3.magnitude(t.Vec3.set(K,ee[4],ee[5],ee[6])),be=t.Vec3.magnitude(t.Vec3.set(K,ee[8],ee[9],ee[10]));ne(ee)<0&&(Ae=-Ae),se[0]=ee[12],se[1]=ee[13],se[2]=ee[14],l(Q,ee);const we=1/Ae,Be=1/_e,Me=1/be;return Q[0]*=we,Q[1]*=we,Q[2]*=we,Q[4]*=Be,Q[5]*=Be,Q[6]*=Be,Q[8]*=Me,Q[9]*=Me,Q[10]*=Me,x(ye,Q),Se[0]=Ae,Se[1]=_e,Se[2]=be,ee}c.decompose=J;function ae(ee){const se=(0,t.Vec3)(),ye=(0,r.Quat)(),Se=(0,t.Vec3)();return J(ee,se,ye,Se),{position:se,quaternion:ye,scale:Se}}c.getDecomposition=ae;function te(ee){let se="";for(let ye=0;ye<4;ye++){for(let Se=0;Se<4;Se++)se+=ee[4*Se+ye].toString(),Se<3&&(se+=" ");ye<3&&(se+=`
2`)}return se}c.makeTable=te;function ne(ee){const se=ee[0],ye=ee[1],Se=ee[2],Ae=ee[3],_e=ee[4],be=ee[5],xe=ee[6],we=ee[7],Be=ee[8],Me=ee[9],Re=ee[10],Te=ee[11],Ve=ee[12],qe=ee[13],ke=ee[14],ze=ee[15],We=se*be-ye*_e,Je=se*xe-Se*_e,De=se*we-Ae*_e,Oe=ye*xe-Se*be,Fe=ye*we-Ae*be,Le=Se*we-Ae*xe,He=Be*qe-Me*Ve,Pe=Be*ke-Re*Ve,Ie=Be*ze-Te*Ve,Ee=Me*ke-Re*qe,Ue=Me*ze-Te*qe,$e=Re*ze-Te*ke;return We*$e-Je*Ue+De*Ee+Oe*Ie-Fe*Pe+Le*He}c.determinant=ne;function $(ee,se){return ie(ee,typeof se<"u"?se:e.EPSILON)}c.isRotationAndTranslation=$;function ie(ee,se){const ye=ee[0],Se=ee[1],Ae=ee[2],_e=ee[3],be=ee[4],xe=ee[5],we=ee[6],Be=ee[7],Me=ee[8],Re=ee[9],Te=ee[10],Ve=ee[11],qe=ee[15];if(!(0,e.equalEps)(qe,1,se)||!(0,e.equalEps)(_e,0,se)||!(0,e.equalEps)(Be,0,se)||!(0,e.equalEps)(Ve,0,se))return!1;const ke=Math.abs(ye*(xe*Te-we*Re)-Se*(be*Te-we*Me)+Ae*(be*Re-xe*Me));return!!(0,e.equalEps)(ke,1,se)}function Z(ee,se){return re(ee,typeof se<"u"?se:e.EPSILON)}c.isTranslationAndUniformScaling=Z;function re(ee,se){const ye=ee[0];return(0,e.equalEps)(ee[1],0,se)&&(0,e.equalEps)(ee[2],0,se)&&(0,e.equalEps)(ee[3],0,se)&&(0,e.equalEps)(ee[4],0,se)&&(0,e.equalEps)(ee[5],ye,se)&&(0,e.equalEps)(ee[6],0,se)&&(0,e.equalEps)(ee[7],0,se)&&(0,e.equalEps)(ee[8],0,se)&&(0,e.equalEps)(ee[9],0,se)&&(0,e.equalEps)(ee[10],ye,se)&&(0,e.equalEps)(ee[11],0,se)&&(0,e.equalEps)(ee[15],1,se)}function oe(ee,se){const ye=se[0],Se=se[1],Ae=se[2],_e=se[3],be=ye+ye,xe=Se+Se,we=Ae+Ae,Be=ye*be,Me=Se*be,Re=Se*xe,Te=Ae*be,Ve=Ae*xe,qe=Ae*we,ke=_e*be,ze=_e*xe,We=_e*we;return ee[0]=1-Re-qe,ee[1]=Me+We,ee[2]=Te-ze,ee[3]=0,ee[4]=Me-We,ee[5]=1-Be-qe,ee[6]=Ve+ke,ee[7]=0,ee[8]=Te+ze,ee[9]=Ve-ke,ee[10
2]=1-Be-Re,ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.fromQuat=oe;function ce(ee,se,ye){const Se=se[0],Ae=se[1],_e=se[2],be=Math.cos(Se),xe=Math.sin(Se),we=Math.cos(Ae),Be=Math.sin(Ae),Me=Math.cos(_e),Re=Math.sin(_e);if(ye==="XYZ"){const Te=be*Me,Ve=be*Re,qe=xe*Me,ke=xe*Re;ee[0]=we*Me,ee[4]=-we*Re,ee[8]=Be,ee[1]=Ve+qe*Be,ee[5]=Te-ke*Be,ee[9]=-xe*we,ee[2]=ke-Te*Be,ee[6]=qe+Ve*Be,ee[10]=be*we}else if(ye==="YXZ"){const Te=we*Me,Ve=we*Re,qe=Be*Me,ke=Be*Re;ee[0]=Te+ke*xe,ee[4]=qe*xe-Ve,ee[8]=be*Be,ee[1]=be*Re,ee[5]=be*Me,ee[9]=-xe,ee[2]=Ve*xe-qe,ee[6]=ke+Te*xe,ee[10]=be*we}else if(ye==="ZXY"){const Te=we*Me,Ve=we*Re,qe=Be*Me,ke=Be*Re;ee[0]=Te-ke*xe,ee[4]=-be*Re,ee[8]=qe+Ve*xe,ee[1]=Ve+qe*xe,ee[5]=be*Me,ee[9]=ke-Te*xe,ee[2]=-be*Be,ee[6]=xe,ee[10]=be*we}else if(ye==="ZYX"){const Te=be*Me,Ve=be*Re,qe=xe*Me,ke=xe*Re;ee[0]=we*Me,ee[4]=qe*Be-Ve,ee[8]=Te*Be+ke,ee[1]=we*Re,ee[5]=ke*Be+Te,ee[9]=Ve*Be-qe,ee[2]=-Be,ee[6]=xe*we,ee[10]=be*we}else if(ye==="YZX"){const Te=be*we,Ve=be*Be,qe=xe*we,ke=xe*Be;ee[0]=we*Me,ee[4]=ke-Te*Re,ee[8]=qe*Re+Ve,ee[1]=Re,ee[5]=be*Me,ee[9]=-xe*Me,ee[2]=-Be*Me,ee[6]=Ve*Re+qe,ee[10]=Te-ke*Re}else if(ye==="XZY"){const Te=be*we,Ve=be*Be,qe=xe*we,ke=xe*Be;ee[0]=we*Me,ee[4]=-Re,ee[8]=Be*Me,ee[1]=Te*Re+ke,ee[5]=be*Me,ee[9]=Ve*Re-qe,ee[2]=qe*Re-Ve,ee[6]=xe*Me,ee[10]=ke*Re+Te}return ee[3]=0,ee[7]=0,ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.fromEuler=ce;function ue(ee,se,ye,Se,Ae,_e,be){const xe=2*_e/(ye-se),we=2*_e/(Se-Ae),Be=(ye+se)/(ye-se),Me=(Se+Ae)/(Se-Ae),Re=-(be+_e)/(be-_e),Te=-2*be*_e/(be-_e);return ee[0]=xe,ee[1]=0,ee[2]=0,ee[3]=0,ee[4]=0,ee[5]=we,ee[6]=0,ee[7]=0,ee[8]=Be,ee[9]=Me,ee[10]=Re,ee[11]=-1,ee[12]=0,ee[13]=0,ee[14]=Te,ee[15]=0,ee}c.perspective=ue;function pe(ee,se,ye,Se,Ae,_e,be){const xe=1/(ye-se),we=1/(Se-Ae),Be=1/(be-_e),Me=(ye+se)*xe,Re=(Se+Ae)*we,Te=(be+_e)*Be;return ee[0]=2*xe,ee[1]=0,ee[2]=0,ee[3]=0,ee[4]=0,ee[5]=2*we,ee[6]=0,ee[7]=0,ee[8]=0,ee[9]=0,ee[10]=-2*Be,ee[11]=0,ee[12]=-Me,ee[13]=-Re,ee[14]=-Te,ee[15]=1,ee}c.ortho=pe;function he(ee,se,ye,Se){let Ae,_e,be,xe,we,Be,Me,Re,Te,Ve;const qe=se[0],ke=se[1],ze=se[2],We=Se[0],Je=Se[1],De=Se[2],Oe=ye[0],Fe=ye[1],Le=ye[2];return Math.abs(qe-Oe)<e.EPSILON&&Math.abs(ke-Fe)<e.EPSILON&&Math.abs(ze-Le)<e.EPSILON?h(ee):(Me=qe-Oe,Re=ke-Fe,Te=ze-Le,Ve=1/Math.sqrt(Me*Me+Re*Re+Te*Te),Me*=Ve,Re*=Ve,Te*=Ve,Ae=Je*Te-De*Re,_e=De*Me-We*Te,be=We*Re-Je*Me,Ve=Math.sqrt(Ae*Ae+_e*_e+be*be),Ve?(Ve=1/Ve,Ae*=Ve,_e*=Ve,be*=Ve):(Ae=0,_e=0,be=0),xe=Re*be-Te*_e,we=Te*Ae-Me*be,Be=Me*_e-Re*Ae,Ve=Math.sqrt(xe*xe+we*we+Be*Be),Ve?(Ve=1/Ve,xe*=Ve,we*=Ve,Be*=Ve):(xe=0,we=0,Be=0),ee[0]=Ae,ee[1]=xe,ee[2]=Me,ee[3]=0,ee[4]=_e,ee[5]=we,ee[6]=Re,ee[7]=0,ee[8]=be,ee[9]=Be,ee[10]=Te,ee[11]=0,ee[12]=-(Ae*qe+_e*ke+be*ze),ee[13]=-(xe*qe+we*ke+Be*ze),ee[14]=-(Me*qe+Re*ke+Te*ze),ee[15]=1,ee)}c.lookAt=he;function fe(ee,se,ye,Se){const Ae=se[0],_e=se[1],be=se[2],xe=Se[0],we=Se[1],Be=Se[2];let Me=Ae-ye[0],Re=_e-ye[1],Te=be-ye[2],Ve=Me*Me+Re*Re+Te*Te;Ve>0&&(Ve=1/Math.sqrt(Ve),Me*=Ve,Re*=Ve,Te*=Ve);let qe=we*Te-Be*Re,ke=Be*Me-xe*Te,ze=xe*Re-we*Me;return Ve=qe*qe+ke*ke+ze*ze,Ve>0&&(Ve=1/Math.sqrt(Ve),qe*=Ve,ke*=Ve,ze*=Ve),ee[0]=qe,ee[1]=ke,ee[2]=ze,ee[3]=0,ee[4]=Re*ze-Te*ke,ee[5]=Te*qe-Me*ze,ee[6]=Me*ke-Re*qe,ee[7]=0,ee[8]=Me,ee[9]=Re,ee[10]=Te,ee[11]=0,ee[12]=Ae,ee[13]=_e,ee[14]=be,ee[15]=1,ee}c.targetTo=fe;function de(ee,se){y(ee);for(let ye=0;ye<4;ye++){const Se=se[ye];m(ee,ye,Se,1)}return ee}c.fromPermutation=de;function ge(ee){const se=ee[0]*ee[0]+ee[1]*ee[1]+ee[2]*ee[2],ye=ee[4]*ee[4]+ee[5]*ee[5]+ee[6]*ee[6],Se=ee[8]*ee[8]+ee[9]*ee[9]+ee[10]*ee[10];return Math.sqrt(Math.max(se,ye,Se))}c.getMaxScaleOnAxis=ge;function Ce(ee){return{x:t.Vec3.create(ee[0],ee[1],ee[2]),y:t.Vec3.create(ee[4],ee[5],ee[6]),z:t.Vec3.create(ee[8],ee[9],ee[10])}}c.extractBasis=Ce;const ve=[1,0,0],le=[0,1,0],me=[0,0,1];c.rotX90=q(o(),(0,n.degToRad)(90),ve),c.rotX180=q(o(),(0,n.degToRad)(180),ve),c.rotY90=q(o(),(0,n.degToRad)(90),le),c.rotY180=q(o(),(0,n.degToRad)(180),le),c.rotY270=q(o(),(0,n.degToRad)(270),le),c.rotZ90=q(o(),(0,n.degToRad)(90),me),c.rotZ180=q(o(),(0,n.degToRad)(180),me),c.rotXY90=E(o(),c.rotX90,c.rotY90),c.rotZY90=E(o(),c.rotZ90,c.rotY90),c.rotZYZ90=E(o(),c.rotZY90,c.rotZ90),c.rotZ90X180=E(o(),c.rotZ90,c.rotX180),c.rotY90Z180=E(o(),c.rotY90,c.rotZ180),c.id=s()})(i||(tm.Mat4=i={})),tm}var am={},uV;function ns(){if(uV)return am;
2uV=1,Object.defineProperty(am,"__esModule",{value:!0}),am.Vec2=e;function e(){return e.zero()}return(function(t){function r(){const R=[.1,0];return R[0]=0,R}t.zero=r;function n(R){const E=r();return E[0]=R[0],E[1]=R[1],E}t.clone=n;function i(R){return o(R.x,R.y)}t.fromObj=i;function c(R){return{x:R[0],y:R[1]}}t.toObj=c;function o(R,E){const I=r();return I[0]=R,I[1]=E,I}t.create=o;function s(R){return Number.isNaN(R[0])||Number.isNaN(R[1])}t.hasNaN=s;function h(R){return Array.isArray(R)&&R.length===2}t.is=h;function f(R,E,I){return E[I+0]=R[0],E[I+1]=R[1],E}t.toArray=f;function y(R,E,I){return R[0]=E[I+0],R[1]=E[I+1],R}t.fromArray=y;function _(R,E){return R[0]=E[0],R[1]=E[1],R}t.copy=_;function g(R,E,I){return R[0]=E,R[1]=I,R}t.set=g;function a(R,E,I){return R[0]=E[0]+I[0],R[1]=E[1]+I[1],R}t.add=a;function d(R,E,I){return R[0]=E[0]-I[0],R[1]=E[1]-I[1],R}t.sub=d;function p(R,E,I){return R[0]=E[0]*I[0],R[1]=E[1]*I[1],R}t.mul=p;function u(R,E,I){return R[0]=E[0]/I[0],R[1]=E[1]/I[1],R}t.div=u;function m(R,E,I){return R[0]=E[0]*I,R[1]=E[1]*I,R}t.scale=m;function v(R,E){return R[0]=Math.round(E[0]),R[1]=Math.round(E[1]),R}t.round=v;function b(R,E){return R[0]=Math.ceil(E[0]),R[1]=Math.ceil(E[1]),R}t.ceil=b;function P(R,E){return R[0]=Math.floor(E[0]),R[1]=Math.floor(E[1]),R}t.floor=P;function C(R,E){const I=E[0]-R[0],B=E[1]-R[1];return Math.sqrt(I*I+B*B)}t.distance=C;function l(R,E){const I=E[0]-R[0],B=E[1]-R[1];
2return I*I+B*B}t.squaredDistance=l;function S(R){const E=R[0],I=R[1];return Math.sqrt(E*E+I*I)}t.magnitude=S;function T(R){const E=R[0],I=R[1];return E*E+I*I}t.squaredMagnitude=T;function A(R,E,I){return m(R,M(R,E),I)}t.setMagnitude=A;function x(R,E){return R[0]=1/E[0],R[1]=1/E[1],R}t.inverse=x;function M(R,E){const I=E[0],B=E[1];let w=I*I+B*B;return w>0&&(w=1/Math.sqrt(w),R[0]=E[0]*w,R[1]=E[1]*w),R}t.normalize=M;function D(R,E){return R[0]===E[0]&&R[1]===E[1]}t.areEqual=D;function V(R,E){return`[${R[0].toPrecision(E)} ${R[1].toPrecision(E)}}]`}t.toString=V})(e||(am.Vec2=e={})),am}var om={},lV;function Fa(){if(lV)return om;lV=1,Object.defineProperty(om,"__esModule",{value:!0}),om.Vec4=t;const e=rn();function t(){return t.zero()}return(function(r){function n(){const E=[.1,0,0,0];return E[0]=0,E}r.zero=n;function i(E){const I=n();return I[0]=E[0],I[1]=E[1],I[2]=E[2],I[3]=E[3],I}r.clone=i;function c(E,I,B,w){const O=n();return O[0]=E,O[1]=I,O[2]=B,O[3]=w,O}r.create=c;function o(E,I){return E[0]=I.center[0],E[1]=I.center[1],E[2]=I.center[2],E[3]=I.radius,E}r.fromSphere=o;function s(E){return o(n(),E)}r.ofSphere=s;function h(E){return Number.isNaN(E[0])||Number.isNaN(E[1])||Number.isNaN(E[2])||Number.isNaN(E[3])}r.hasNaN=h;function f(E){return Array.isArray(E)&&E.length===4}r.is=f;function y(E,I,B){return I[B+0]=E[0],I[B+1]=E[1],I[B+2]=E[2],I[B+3]=E[3],I}r.toArray=y;function _(E,I,B){return E[0]=I[B+0],E[1]=I[B+1],E[2]=I[B+2],E[3]=I[B+3],E}r.fromArray=_;function g(E,I,B){I[B+0]=E[0],I[B+1]=E[1],I[B+2]=E[2]}r.toVec3Array=g;function a(E,I,B){return E[0]=I[B+0],E[1]=I[B+1],E[2]=I[B+2],E[3]=0,E}r.fromVec3Array=a;function d(E,I){return E[0]=I[0],E[1]=I[1],E[2]=I[2],E[3]=I[3],E}r.copy=d;function p(E,I,B,w,O){return E[0]=I,E[1]=B,E[2]=w,E[3]=O,E}r.set=p;function u(E,I,B){return E[0]=I[0]+B[0],E[1]=I[1]+B[1],E[2]=I[2]+B[2],E[3]=I[3]+B[3],E}r.add=u;function m(E,I){const B=I[0]-E[0],w=I[1]-E[1],O=I[2]-E[2],F=I[3]-E[3];return Math.sqrt(B*B+w*w+O*O+F*F)}r.distance=m;function v(E,I,B){return E[0]=I[0]*B,E[1]=I[1]*B,E[2]=I[2]*B,E[4]=I[4]*B,E}r.scale=v;function b(E,I){return E[0]=Math.round(I[0]),E[1]=Math.round(I[1]),E[2]=Math.round(I[2]),E[3]=Math.round(I[3]),E}r.round=b;function P(E,I){return E[0]=Math.ceil(I[0]),E[1]=Math.ceil(I[1]),E[2]=Math.ceil(I[2]),E[3]=Math.ceil(I[3]),E}r.ceil=P;function C(E,I){return E[0]=Math.floor(I[0]),E[1]=Math.floor(I[1]),E[2]=Math.floor(I[2]),E[3]=Math.floor(I[3]),E}r.floor=C;function l(E,I){const B=I[0]-E[0],w=I[1]-E[1],O=I[2]-E[2],F=I[3]-E[3];return B*B+w*w+O*O+F*F}r.squaredDistance=l;function S(E){const I=E[0],B=E[1],w=E[2],O=E[3];return Math.sqrt(I*I+B*B+w*w+O*O)}r.norm=S;function T(E){const I=E[0],B=E[1],w=E[2],O=E[3];
2return I*I+B*B+w*w+O*O}r.squaredNorm=T;function A(E,I,B){const w=I[0],O=I[1],F=I[2],L=I[3];return E[0]=B[0]*w+B[4]*O+B[8]*F+B[12]*L,E[1]=B[1]*w+B[5]*O+B[9]*F+B[13]*L,E[2]=B[2]*w+B[6]*O+B[10]*F+B[14]*L,E[3]=B[3]*w+B[7]*O+B[11]*F+B[15]*L,E}r.transformMat4=A;function x(E,I){return E[0]*I[0]+E[1]*I[1]+E[2]*I[2]+E[3]*I[3]}r.dot=x;function M(E,I){return E[0]=1/I[0],E[1]=1/I[1],E[2]=1/I[2],E[3]=1/I[3],E}r.inverse=M;function D(E,I){return E[0]===I[0]&&E[1]===I[1]&&E[2]===I[2]&&E[3]===I[3]}r.exactEquals=D;function V(E,I){const B=E[0],w=E[1],O=E[2],F=E[3],L=I[0],U=I[1],q=I[2],N=I[3];return Math.abs(B-L)<=e.EPSILON*Math.max(1,Math.abs(B),Math.abs(L))&&Math.abs(w-U)<=e.EPSILON*Math.max(1,Math.abs(w),Math.abs(U))&&Math.abs(O-q)<=e.EPSILON*Math.max(1,Math.abs(O),Math.abs(q))&&Math.abs(F-N)<=e.EPSILON*Math.max(1,Math.abs(F),Math.abs(N))}r.equals=V;function R(E,I){return`[${E[0].toPrecision(I)} ${E[1].toPrecision(I)} ${E[2].toPrecision(I)}  ${E[3].toPrecision(I)}]`}r.toString=R})(t||(om.Vec4=t={})),om}var dV;function NZ(){return dV||(dV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.EPSILON=e.Quat=e.Vec4=e.Vec3=e.Vec2=e.Mat3=e.Mat4=void 0;const t=Xr();Object.defineProperty(e,"Mat4",{enumerable:!0,get:function(){return t.Mat4}});const r=K_();Object.defineProperty(e,"Mat3",{enumerable:!0,get:function(){return r.Mat3}});const n=ns();Object.defineProperty(e,"Vec2",{enumerable:!0,get:function(){return n.Vec2}});const i=wt();Object.defineProperty(e,"Vec3",{enumerable:!0,get:function(){return i.Vec3}});const c=Fa();Object.defineProperty(e,"Vec4",{enumerable:!0,get:function(){return c.Vec4}});const o=rs();Object.defineProperty(e,"Quat",{enumerable:!0,get:function(){return o.Quat}});const s=rn();Object.defineProperty(e,"EPSILON",{enumerable:!0,get:function(){return s.EPSILON}})})(A2)),A2}var sm={},fV;function Tf(){if(fV)return sm;fV=1,Object.defineProperty(sm,"__esModule",{value:!0}),sm.Tensor=void 0;const e=Xr(),t=K_();var r;return(function(n){function i(R,E,I){const B=[];for(let O=0;O<E.length;O++)B[O]=E[E.length-O-1];const w=[1];for(let O=1;O<R.length;O++)w[O]=R[B[O-1]];return{dimensions:R,axisOrderFastToSlow:B,axisOrderSlowToFast:E,accessDimensions:w,defaultCtor:I||Float64Array}}function c(R,E){return{space:R,data:E}}n.create=c;function o(R,E,I){const B=i(R,E,I),{get:w,set:O,add:F,dataOffset:L,getCoords:U}=u(B);return{rank:R.length,dimensions:R,axisOrderSlowToFast:E,create:m(B),get:w,set:O,add:F,dataOffset:L,getCoords:U}}n.Space=o;function s(R){return R}n.Data1=s;function h(R,E){return o([R],[0],E)}n.Vector=h;function f(R,E,I){return o([R,E],[1,0],I)}n.ColumnMajorMatrix=f;function y(R,E,I){return o([R,E],[0,1],I)}n.RowMajorMatrix=y;function _(R,E,I){if(E.rank!==2)throw new Error("Invalid tensor rank");const B=Math.min(4,E.dimensions[0]),w=Math.min(4,E.dimensions[1]);for(let O=0;O<B;O++)for(let F=0;F<w;F++)e.Mat4.setValue(R,O,F,E.get(I,O,F));return R}n.toMat4=_;function g(R,E,I){if(E.rank!==2)throw new Error("Invalid tensor rank");const B=Math.min(3,E.dimensions[0]),w=Math.min(3,E.dimensions[1]);for(let O=0;O<B;O++)for(let F=0;F<w;F++)t.Mat3.setValue(R,O,F,E.get(I,O,F));return R}n.toMat3=g;function a(R,E,I){if(E.rank!==1)throw new Error("Invalid tensor rank");const B=Math.min(3,E.dimensions[0]);for(let w=0;w<B;w++)R[w]=I[w];return R}n.toVec3=a;function d(R,E,I){if(E.rank!==1)throw new Error("Invalid tensor rank");const B=Math.min(4,E.dimensions[0]);for(let w=0;w<B;w++)R[w]=I[w];return R}n.toVec4=d;function p(R,E){const I=R.length;if(I!==E.length)return!1;for(let B=0;B<I;B++)if(R[B]!==E[B])return!1;return!0}n.areEqualExact=p;function u(R){const{dimensions:E,axisOrderFastToSlow:I}=R;switch(E.length){case 1:return{get:(B,w)=>B[w],set:(B,w,O)=>B[w]=O,add:(B,w,O)=>B[w]+=O,dataOffset:B=>B,getCoords:(B,w)=>(w[0]=B,w)};case 2:{if(I[0]===0&&I[1]===1){const B=E[0];return{get:(w,O,F)=>w[F*B+O],set:(w,O,F,L)=>w[F*B+O]=L,add:(w,O,F,L)=>w[F*B+O]+=L,dataOffset:(w,O)=>O*B+w,getCoords:(w,O)=>(O[0]=w%B,O[1]=Math.floor(w/B),O)}}if(I[0]===1&&I[1]===0){const B=E[1];return{get:(w,O,F)=>w[O*B+F],set:(w,O,F,L)=>w[O*B+F]=L,add:(w,O,F,L)=>w[O*B+F]+=L,dataOffset:(w,O)=>w*B+O,getCoords:(w,O)=>(O[0]=Math.floor(w/B),O[1]=w%B,O)}}throw new Error("bad axis order")}case 3:{if(I[0]===0&&I[1]===1&&I[2]===2){const B=E[0],w=E[1],O=B*w;return{get:(F,L,U,q)=>F[L+U*B+q*O],set:(F,L,U,q,N)=>F[L+U*B+q*O]=N,add:(F,L,U,q,N)=>F[L+U*B+q*O]+=N,dataOffset:(F,L,U)=>F+L*B+U*O,getCoords:(F,L)=>{const U=Math.floor(F/B);return L[0]=F%B,L[1]=U%w,L[2]=Math.floor(U/w),L}}}if(I[0]===0&&I[1]===2&&I[2]===1){const B=E[0],w=E[2],O=B*w;return{get:(F,L,U,q)=>F[L+q*B+U*O],set:(F,L,U,q,N)=>F[L+q*B+U*O]=N,add:(F,L,U,q,N)=>F[L+q*B+U*O]+=N,dataOffset:(F,L,U)=>F+U*B+L*O,getCoords:(F,L)=>{const U=Math.floor(F/B);return L[0]=F%B,L[1]=Math.floor(U/w),L[2]=U%w,L}}}if(I[0]===1&&I[1]===0&&I[2]===2){const B=E[1],w=E[0],O=B*w;return{get:(F,L,U,q)=>F[U+L*B+q*O],set:(F,L,U,q,N)=>F[U+L*B+q*O]=N,add:(F,L,U,q,N)=>F[U+L*B+q*O]+=N,dataOffset:(F,L,U)=>L+F*B+U*O,getCoords:(F,L)=>{const U=Math.floor(F/B);return L[0]=U%w,L[1]=F%B,L[2]=Math.floor(U/w),L}}}if(I[0]===1&&I[1]===2&&I[2]===0){const B=E[1],w=E[2],O=B*w;return{get:(F,L,U,q)=>F[U+q*B+L*O],set:(F,L,U,q,N)=>F[U+q*B+L*O]=N,add:(F,L,U,q,N)=>F[U+q*B+L*O]+=N,dataOffset:(F,L,U)=>L+U*B+F*O,getCoords:(F,L)=>{const U=Math.floor(F/B);return L[0]=Math.floor(U/w),L[1]=F%B,L[2]=U%w,L}}}if(I[0]===2&&I[1]===0&&I[2]===1){const B=E[2],w=E[0],O=B*w;return{get:(F,L,U,q)=>F[q+L*B+U*O],set:(F,L,U,q,N)=>F[q+L*B+U*O]=N,add:(F,L,U,q,N)=>F[q+L*B+U*O]+=N,dataOffset:(F,L,U)=>U+F*B+L*O,getCoords:(F,L)=>{const U=Math.floor(F/B);return L[0]=U%w,L[1]=Math.floor(U/w),L[2]=F%B,L}}}if(I[0]===2&&I[1]===1&&I[2]===0){const B=E[2],w=E[1],O=B*w;return{get:(F,L,U,q)=>F[q+U*B+L*O],set:(F,L,U,q,N)=>F[q+U*B+L*O]=N,add:(F,L,U,q,N)=>F[q+U*B+L*O]+=N,dataOffset:(F,L,U)=>U+L*B+F*O,getCoords:(F,L)=>{const U=Math.floor(F/B);return L[0]=Math.floor(U/w),L[1]=U%w,L[2]=F%B,L}}}throw new Error("bad axis order")}default:return{get:(B,...w)=>B[v(R,w)],set:(B,...w)=>B[v(R,w)]=w[w.length-1],add:(B,...w)=>B[v(R,w)]+=w[w.length-1],dataOffset:(...B)=>v(R,B),getCoords:(B,w)=>b(R,B,w)}}}function m(R){const{dimensions:E}=R;let I=1;for(let B=0,w=E.length;B<w;B++)I*=E[B];return B=>new(B||R.defaultCtor)(I)}function v(R,E){const{accessDimensions:I,axisOrderFastToSlow:B}=R,w=I.length-1;let O=I[w]*E[B[w]];for(let F=w-1;F>=0;F--)O=(O+E[B[F]])*I[F];return O}function b(R,E,I){const{dimensions:B,axisOrderFastToSlow:w}=R,O=B.length;let F=E;for(let L=0;L<O;L++){const U=B[w[L]];I[w[L]]=F%U,F=Math.floor(F/U)}return I[w[O+1]]=F,I}function P(R){const E=[];for(let I=0;I<R.length;I++)E[I]=R[R.length-I-1];return E}n.invertAxisOrder=P;function C(R,E){const I=[];for(let B=0;B<R.length;B++)I[B]=R[E[B]];return I}function l(R){const E=new Int32Array(R.length);for(let I=0;I<R.length;I++)E[R[I]]=I;return I=>C(I,E)}n.convertToCanonicalAxisIndicesFastToSlow=l;function S(R){const E=new Int32Array(R.length);for(let I=0;I<R.length;I++)E[R[R.length-I-1]]=I;return I=>C(I,E)}n.convertToCanonicalAxisIndicesSlowToFast=S;function T(R,E){const[I]=R.space.dimensions,{data:B}=R,w=new Uint8Array(B.length);let O=-1;if(B[0]<E)for(let F=0;F<I&&B[F]<E;F++)w[F]=1,O=F;if(B[I-1]<E)for(let F=I-1;F>O&&B[F]<E;F--)w[F]=1;return w}function A(R,E){const[I,B]=R.space.dimensions,{dataOffset:w,getCoords:O}=R.space,{data:F}=R,L=new Uint8Array(F.length),U=[],q=[0,0],N=I-1,k=B-1,j=(H,G)=>H===0||G===0||H===N||G===k;for(let H=0;H<B;H++)for(let G=0;G<I;G++){const z=w(G,H);if(!L[z]&&F[z]<E&&j(G,H))for(U.push(z);U.length>0;){const W=U.pop();if(L[W])continue;L[W]=1,O(W,q);const[X,Y]=q;if(X>0){const K=w(X-1,Y);!L[K]&&F[K]<E&&U.push(K)}if(X<N){const K=w(X+1,Y);!L[K]&&F[K]<E&&U.push(K)}if(Y>0){const K=w(X,Y-1);!L[K]&&F[K]<E&&U.push(K)}if(Y<k){const K=w(X,Y+1);!L[K]&&F[K]<E&&U.push(K)}}}return L}function x(R,E){const[I,B,w]=R.space.dimensions,{dataOffset:O,getCoords:F}=R.space,L=[],U=[0,0,0],q=I-1,N=B-1,k=w-1,j=(z,W,X)=>z===0||W===0||X===0||z===q||W===N||X===k,{data:H}=R,G=new Uint8Array(H.length);for(let z=0;z<w;z++)for(let W=0;W<B;W++)for(let X=0;X<I;X++){const Y=O(X,W,z);if(H[Y]<E&&j(X,W,z)&&!G[Y])for(L.push(Y);L.length>0;){const K=L.pop();if(G[K])continue;G[K]=1,F(K,U);const[Q,J,ae]=U;if(Q>0){const te=O(Q-1,J,ae);!G[te]&&H[te]<E&&L.push(te)}if(Q<q){const te=O(Q+1,J,ae);!G[te]&&H[te]<E&&L.push(te)}if(J>0){const te=O(Q,J-1,ae);!G[te]&&H[te]<E&&L.push(te)}if(J<N){const te=O(Q,J+1,ae);!G[te]&&H[te]<E&&L.push(te)}if(ae>0){const te=O(Q,J,ae-1);!G[te]&&H[te]<E&&L.push(te)}if(ae<k){const te=O(Q,J,ae+1);!G[te]&&H[te]<E&&L.push(te)}}}return G}function M(R,E){switch(R.space.dimensions.length){case 1:return T(R,E);case 2:return A(R,E);case 3:return x(R,E);default:throw new Error("Floodfill only implemented for rank-1, rank-2 and rank-3 tensors.")}}n.floodfill=M;function D(R,E,I,B){const{dataOffset:w}=B.space,O=E*2;switch(B.space.dimensions.length){case 1:return R==="outside"?(F,L)=>{const U=F[L];return U<E&&I[L]?O:U}:(F,L)=>{const U=F[L];return U<E&&!I[L]?O:U};case 2:return R==="outside"?(F,L,U)=>{const q=w(L,U),N=F[q];return N<E&&I[q]?O:N}:(F,L,U)=>{const q=w(L,U),N=F[q];return N<E&&!I[q]?O:N};case 3:return R==="outside"?(F,L,U,q)=>{const N=w(L,U,q),k=F[N];return k<E&&I[N]?O:k}:(F,L,U,q)=>{const N=w(L,U,q),k=F[N];return k<E&&!I[N]?O:k};default:throw new Error("Floodfill only implemented for rank-1, rank-2 and rank-3 tensors.")}}function V(R,E,I){const B=M(R,E),w={...R.space,get:D(I,E,B,R)};return n.create(w,R.data)}n.createFloodfilled=V})(r||(sm.Tensor=r={})),sm}var mV;
2function Ge(){return mV||(mV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(NZ(),e),t.__exportStar(Tf(),e)})(x2)),x2}var F_=Ge(),qn={},D2={},I2={},Kl={},w2={},cm={},pV;function Y_(){if(pV)return cm;pV=1,Object.defineProperty(cm,"__esModule",{value:!0}),cm.BitFlags=void 0;var e;return(function(t){function r(c){return c}t.create=r;function n(c,o){return(c&o)!==0}t.has=n;function i(c,o){return!!o&&(c&o)===o}t.hasAll=i})(e||(cm.BitFlags=e={})),cm}var um={},hV;function ED(){if(hV)return um;hV=1,Object.defineProperty(um,"__esModule",{value:!0}),um.StringBuilder=void 0;var e;return(function(t){function r(l=512){return{current:[],offset:0,capacity:l,chunks:[]}}t.create=r;function n(l){return l.chunks.length?(l.offset>0&&(l.chunks[l.chunks.length]=l.current.length===l.offset?l.current.join(""):l.current.slice(0,l.offset).join("")),l.chunks.join("")):l.current.length===l.offset?l.current.join(""):l.current.splice(0,l.offset).join("")}t.getString=n;function i(l){let S=0;for(const T of l.chunks)S+=T.length;for(let T=0;T<l.offset;T++)S+=l.current[T].length;return S}t.getSize=i;function c(l){return l.offset>0&&(l.current.length===l.offset?l.chunks[l.chunks.length]=l.current.join(""):l.chunks[l.chunks.length]=l.current.slice(0,l.offset).join(""),l.offset=0),l.chunks}t.getChunks=c;let o;(function(l){l[l.Count=512]="Count"})(o||(o={}));const s=[];(function(){let l="";for(let S=0;S<o.Count;S++)s[S]=l,l=l+" "})();function h(l){g(l,`
3`)}t.newline=h;function f(l,S){S>0&&g(l,s[S])}t.whitespace=f;function y(l){g(l," ")}t.whitespace1=y;function _(l,S){S&&(l.offset===l.capacity&&(l.chunks[l.chunks.length]=l.current.join(""),l.offset=0),l.current[l.offset++]=S)}t.write=_;function g(l,S){l.offset===l.capacity&&(l.chunks[l.chunks.length]=l.current.join(""),l.offset=0),l.current[l.offset++]=S}t.writeSafe=g;function a(l,S,T){if(!S){f(l,T);return}const A=T-S.length;f(l,A),g(l,S)}t.writePadLeft=a;function d(l,S,T){if(!S){f(l,T);return}const A=T-S.length;g(l,S),f(l,A)}t.writePadRight=d;function p(l,S){g(l,""+S)}t.writeInteger=p;function u(l,S){g(l,""+S+" ")}t.writeIntegerAndSpace=u;function m(l,S,T){const A=""+S,x=T-A.length;f(l,x),g(l,A)}t.writeIntegerPadLeft=m;function v(l,S,T){const A=""+S,x=T-A.length;g(l,A),f(l,x)}t.writeIntegerPadRight=v;function b(l,S,T){g(l,""+Math.round(T*S)/T)}t.writeFloat=b;function P(l,S,T,A){const x=""+Math.round(T*S)/T,M=A-x.length;f(l,M),g(l,x)}t.writeFloatPadLeft=P;function C(l,S,T,A){const x=""+Math.round(T*S)/T,M=A-x.length;g(l,x),f(l,M)}t.writeFloatPadRight=C})(e||(um.StringBuilder=e={})),um}var lm={},Yl={},gV;function ci(){if(gV)return Yl;gV=1,Object.defineProperty(Yl,"__esModule",{value:!0}),Yl.now=void 0,Yl.formatTimespan=t;const e=(function(){if(typeof window<"u"&&window.performance){const r=window.performance;return()=>r.now()}else return typeof process<"u"&&process.hrtime!=="undefined"&&typeof process.hrtime=="function"?()=>{const r=process.hrtime();return r[0]*1e3+r[1]/1e6}:Date.now?()=>Date.now():()=>+new Date})();Yl.now=e;function t(r,n=!0){if(isNaN(r))return"n/a";const i=Math.floor(r/(3600*1e3)),c=Math.floor(r/(60*1e3)%60),o=Math.floor(r/1e3%60);let s=Math.floor(r%1e3).toString();for(;s.length<3;)s="0"+s;for(;!n&&s.length>1&&s[s.length-1]==="0";)s=s.substr(0,s.length-1);return i>0?`${i}h${c}m${o}.${s}s`:c>0?`${c}m${o}.${s}s`:o>0?`${o}.${s}s`:`${r.toFixed(0)}ms`}return Yl}var yV;function Q_(){if(yV)return lm;yV=1,Object.defineProperty(lm,"__esModule",{value:!0}),lm.UUID=void 0;const e=ci();var t;return(function(r){const n=typeof btoa<"u"?btoa:h=>Buffer.from(h).toString("base64"),i=[];function c(){let h=+new Date+(0,e.now)();for(let f=0;f<16;f++)i[f]=String.fromCharCode((h+Math.random()*255)%255|0),h=Math.floor(h/255);return n(i.join("")).replace(/\+/g,"-").replace(/\//g,"_").substr(0,22)}r.create22=c;function o(){let h=+new Date+(0,e.now)();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(y){const _=(h+Math.random()*16)%16|0;return h=Math.floor(h/16),(y==="x"?_:_&3|8).toString(16)})}r.createv4=o;function s(h){return typeof h=="string"}r.is=s})(t||(lm.UUID=t={})),lm}var Ql={},vV;function qZ(){if(vV)return Ql;
3vV=1,Object.defineProperty(Ql,"__esModule",{value:!0}),Ql.Mask=void 0,Ql.sortAsc=t;function e(n,i){return n-i}function t(n){return Array.prototype.sort.call(n,e),n}var r;return(function(n){class i{has(m){return!1}forEach(m,v){return v}constructor(){this.size=0}}class c{has(m){return m===this.idx}forEach(m,v){return m(this.idx,v),v}constructor(m){this.idx=m,this.size=1}}class o{has(m){return m<this.length&&!!this.mask[m]}_forEach(m,v){for(let b=0;b<this.length;b++)this.mask[b]&&m(b,v)}forEach(m,v){return this._forEach(m,v),v}constructor(m,v){this.mask=m,this.size=v,this.length=m.length}}class s{has(m){return!0}_forEach(m,v){for(let b=0;b<this.size;b++)m(b,v)}forEach(m,v){return this._forEach(m,v),v}constructor(m){this.size=m}}class h{has(m){return this.set.has(m)}_forEach(m,v){for(const b of this.flatten())m(b,v)}flatten(){if(this._flat)return this._flat;const m=new Int32Array(this.size);let v=0;return this.set.forEach(b=>m[v++]=b),t(m),this._flat=m,this._flat}forEach(m,v){return this._forEach(m,v),v}constructor(m){this.set=m,this._flat=void 0,this.size=m.size}}function f(u){return new s(u)}n.always=f,n.never=new i;function y(u){return new h(u)}n.ofSet=y;function _(u){return new c(u)}n.singleton=_;function g(u){const m=u.length;if(m===0)return new i;if(m===1)return new c(u[0]);let v=0;for(const C of u)C>v&&(v=C);if(m===v)return new s(m);if(m/v<1/12){const C=new Set;for(const l of u)C.add(l);return new h(C)}const P=new Int8Array(v+1);for(const C of u)P[C]=1;return new o(P,u.length)}n.ofUniqueIndices=g;function a(u,m){return new o(u,m)}n.ofMask=a;function d(u,m){for(const v of m)if(u.has(v))return!0;return!1}n.hasAny=d;function p(u,m){let v=0,b=0;if(m.forEach(P=>{u.has(P)||(v++,P>b&&(b=P))}),v/b<1/12){const P=new Set;return m.forEach(C=>{u.has(C)||P.add(C)}),y(P)}else{const P=new Uint8Array(b+1);return m.forEach(C=>{u.has(C)||(P[C]=1)}),a(P,v)}}n.complement=p})(r||(Ql.Mask=r={})),Ql}var so={},aC={},bV;
3function Yn(){if(bV)return aC;bV=1,Object.defineProperty(aC,"__esModule",{value:!0}),aC.idFactory=e;function e(t=0,r=Number.MAX_SAFE_INTEGER){let n=t;return()=>{const i=n;return n=(n+1)%r,i}}return aC}var _V;function Kr(){if(_V)return so;_V=1,Object.defineProperty(so,"__esModule",{value:!0}),so.ValueCell=so.ValueBox=so.ValueRef=void 0;const e=Yn();var t;(function(c){function o(h){return{ref:h}}c.create=o;function s(h,f){return h.ref=f,h}c.set=s})(t||(so.ValueRef=t={}));const r=(0,e.idFactory)(0,2147483647);var n;(function(c){function o(h,f){return{id:r(),version:0,value:h,metadata:f}}c.create=o;function s(h,f){return{id:h.id,version:h.version+1,value:f,metadata:h.metadata}}c.withValue=s})(n||(so.ValueBox=n={}));var i;return(function(c){function o(y,_){return t.create(n.create(y,_))}c.create=o;function s(y,_){return t.set(y,n.withValue(y.ref,_))}c.update=s;function h(y,_){return t.set(y,_)}c.set=h;function f(y,_){return y.ref.value!==_?s(y,_):y}c.updateIfChanged=f})(i||(so.ValueCell=i={})),so}var SV;function et(){return SV||(SV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.merge=e.assign=e.noop=e.Mask=e.UUID=e.StringBuilder=e.BitFlags=void 0,e.round=s,e.arrayEqual=h,e.deepEqual=y,e.shallowEqual=_,e.shallowEqualObjects=g,e.shallowEqualArrays=a,e.defaults=d,e.extend=p,e.shallowClone=u,e.formatTime=C,e.formatProgress=l,e.formatBytes=S;const t=At,r=Y_();Object.defineProperty(e,"BitFlags",{enumerable:!0,get:function(){return r.BitFlags}});const n=ED();Object.defineProperty(e,"StringBuilder",{enumerable:!0,get:function(){return n.StringBuilder}});const i=Q_();Object.defineProperty(e,"UUID",{enumerable:!0,get:function(){return i.UUID}});const c=qZ();Object.defineProperty(e,"Mask",{enumerable:!0,get:function(){return c.Mask}}),t.__exportStar(Kr(),e);const o=function(){};e.noop=o;function s(T,A){const x=Math.pow(10,A);return Math.round(x*T)/x}function h(T,A){const x=T.length;if(x!==A.length)return!1;for(let M=0;M<x;M++)if(T[M]!==A[M])return!1;return!0}const f=Object.prototype.hasOwnProperty;function y(T,A){if(T===A)return!0;const x=Array.isArray(T),M=Array.isArray(A);if(x&&M){if(T.length!==A.length)return!1;for(let D=0;D<T.length;D++)if(!y(T[D],A[D]))return!1;return!0}if(x!==M)return!1;if(T&&A&&typeof T=="object"&&typeof A=="object"){const D=Object.keys(T);if(D.length!==Object.keys(A).length)return!1;const V=T instanceof Date,R=A instanceof Date;if(V&&R)return T.getTime()===A.getTime();if(V!==R)return!1;const E=T instanceof RegExp,I=A instanceof RegExp;if(E&&I)return T.toString()===A.toString();if(E!==I)return!1;for(let B=0;B<D.length;B++)if(!f.call(A,D[B]))return!1;for(let B=0;B<D.length;B++)if(!y(T[D[B]],A[D[B]]))return!1;return!0}return!1}function _(T,A){if(T===A)return!0;const x=Array.isArray(T),M=Array.isArray(A);return x&&M?a(T,A):x!==M?!1:T&&A&&typeof T=="object"&&typeof A=="object"?g(T,A):!1}function g(T,A){if(T===A)return!0;if(!T||!A)return!1;const x=Object.keys(T);if(Object.keys(A).length!==x.length)return!1;for(const M of x)if(!f.call(T,M)||T[M]!==A[M])return!1;return!0}function a(T,A){if(T===A)return!0;if(!T||!A||T.length!==A.length)return!1;for(let x=0,M=T.length;x<M;++x)if(T[x]!==A[x])return!1;return!0}function d(T,A){return T!==void 0?T:A}function p(T,A,x){let M;const D=A,V=T,R=x;for(const E of Object.keys(A))M=D[E],M!==void 0?V[E]=M:x&&(V[E]=R[E]);if(x)for(const E of Object.keys(x))M=V[E],M===void 0&&(V[E]=R[E]);return T}function u(T){return p({},T)}function m(T){for(let A=1;A<arguments.length;A++){const x=arguments[A];for(const M of Object.keys(x))f.call(x,M)&&(T[M]=x[M])}return T}e.assign=Object.assign||m;function v(T,A){let x=!1;for(const M of Object.keys(A))if(f.call(A,M)&&A[M]!==T[M]){x=!0;break}return x?(0,e.assign)(u(T),A):T}function b(T){let A=T;for(let x=1;x<arguments.length;x++)if(arguments[x]&&(A=v(T,arguments[x]),A!==T)){for(let M=x+1;M<arguments.length;M++)A=(0,e.assign)(A,arguments[M]);break}return A}e.merge=b;function P(T){return(T<10?"0":"")+T}function C(T){const A=T.getHours(),x=T.getMinutes(),M=T.getSeconds();return`${A}:${P(x)}:${P(M)}`}function l(T){const A=T.root.progress;if(A.isIndeterminate)return A.message;const x=(100*A.current/A.max).toFixed(2);return`${A.message} ${x}%`}function S(T){const A=["B","KB","MB","GB","TB","PB","EB","ZB","YB"],x=Math.floor(Math.log(T)/Math.log(1024));return`${(T/Math.pow(1024,x)).toFixed(2)} ${A[x]}`}})(w2)),w2}var V2={},dm={},fm={},mm={},co={},CV;function G$(){if(CV)return co;CV=1,Object.defineProperty(co,"__esModule",{value:!0}),co.getArrayBounds=e,co.createArray=t,co.fillArrayValues=r,co.createAndFillArray=n,co.isTypedArray=i,co.typedArrayWindow=c;function e(o,s){const h=s&&typeof s.start<"u"?Math.max(Math.min(s.start,o-1),0):0,f=s&&typeof s.end<"u"?Math.min(s.end,o):o;return{start:h,end:f}}function t(o,s){const h=s&&typeof s.array<"u"?s.array:Array,{start:f,end:y}=e(o,s);return{array:new h(y-f),start:f,end:y}}function r(o,s,h){for(let f=0,y=s.length;f<y;f++)s[f]=o(h+f);return s}function n(o,s,h){const{array:f,start:y}=t(o,h);return r(s,f,y)}function i(o){return!!o.buffer&&typeof o.byteLength=="number"&&typeof o.BYTES_PER_ELEMENT=="number"}function c(o,s){const{constructor:h,buffer:f,length:y,byteOffset:_,BYTES_PER_ELEMENT:g}=o,{start:a,end:d}=e(y,s);return a===0&&d===y?o:new h(f,_+g*a,Math.min(y,d-a))}return co}var Oi={},PV;function La(){if(PV)return Oi;PV=1,Object.defineProperty(Oi,"__esModule",{value:!0}),Oi.NumberType=Oi.NumberTypes=void 0,Oi.parseIntSkipLeadingWhitespace=e,Oi.parseInt=t,Oi.parseFloatSkipLeadingWhitespace=n,O
3i.parseFloat=i,Oi.getNumberType=h;function e(f,y,_){for(;y<_&&f.charCodeAt(y)===32;)y++;return t(f,y,_)}function t(f,y,_){let g=y,a=0,d=1;for(f.charCodeAt(g)===45?(d=-1,++g):f.charCodeAt(g)===43&&++g;g<_;g++){const p=f.charCodeAt(g)-48;if(p>9||p<0)return d*a|0;a=10*a+p|0}return d*a}function r(f,y,_,g){return y.charCodeAt(_)===43&&_++,f*Math.pow(10,t(y,_,g))}function n(f,y,_){for(;y<_&&f.charCodeAt(y)===32;)y++;return i(f,y,_)}function i(f,y,_){let g=y,a=1,d=0,p=0,u=1;for(f.charCodeAt(g)===45?(a=-1,++g):f.charCodeAt(g)===43&&++g;g<_;){let m=f.charCodeAt(g)-48;if(m>=0&&m<10)d=d*10+m,++g;else if(m===-2){for(++g;g<_;)if(m=f.charCodeAt(g)-48,m>=0&&m<10)p=10*p+m,u=10*u,++g;else return m===53||m===21?r(a*(d+p/u),f,g+1,_):a*(d+p/u);return a*(d+p/u)}else{if(m===53||m===21)return r(a*d,f,g+1,_);break}}return a*d}var c;(function(f){f[f.Int=0]="Int",f[f.Float=1]="Float",f[f.Scientific=2]="Scientific",f[f.NaN=3]="NaN"})(c||(Oi.NumberTypes=c={})),Oi.NumberType={Int:c.Int,Float:c.Float,Scientific:c.Scientific,NaN:c.NaN};function o(f,y,_){for(f.charCodeAt(y)===45&&y++;y<_;y++){const g=f.charCodeAt(y)-48;if(g>9||g<0)return!1}return!0}function s(f,y,_){return f.charCodeAt(y)===43&&y++,o(f,y,_)?c.Scientific:c.NaN}function h(f){let y=0;const _=f.length;if(f.charCodeAt(y)===45&&++y,f.charCodeAt(y)===46&&_-y===1)return c.NaN;for(;y<_;){let g=f.charCodeAt(y)-48;if(g>=0&&g<10)++y;else if(g===-2){++y;let a=!1;for(;y<_;)if(g=f.charCodeAt(y)-48,g>=0&&g<10)a=!0,++y;else return g===53||g===21?s(f,y+1,_):c.NaN;return a?c.Float:c.Int}else{if(g===53||g===21)return y===0||y===1&&f.charCodeAt(0)===45?c.NaN:s(f,y+1,_);break}}return y===_?c.Int:c.NaN}return Oi}var TV;function Z_(){if(TV)return mm;TV=1,Object.defineProperty(mm,"__esModule",{value:!0}),mm.Column=void 0;const t=At.__importStar(G$()),r=Tf(),n=La();var i;(function(l){let S;(function(K){K.str={"@type":"str",T:"",valueType:"str"},K.ustr={"@type":"str",T:"",valueType:"str",transform:"uppercase"},K.lstr={"@type":"str",T:"",valueType:"str",transform:"lowercase"},K.int={"@type":"int",T:0,valueType:"int"},K.coord={"@type":"coord",T:0,valueType:"float"},K.float={"@type":"float",T:0,valueType:"float"};function Q(re){var oe;return{"@type":"str",T:(oe=re?.defaultValue)!==null&&oe!==void 0?oe:"",transform:re?.transform,valueType:"str"}}K.Str=Q;function J(re=0){return{"@type":"int",T:re,valueType:"int"}}K.Int=J;function ae(re=0){return{"@type":"float",T:re,valueType:"float"}}K.Float=ae;function te(re,oe=K.float){return{"@type":"tensor",T:re.create(),space:re,valueType:"tensor",baseType:oe}}K.Tensor=te;function ne(re,oe=K.float){return te(r.Tensor.Vector(re,oe["@type"]==="int"?Int32Array:Float64Array),oe)}K.Vector=ne;function $(re,oe,ce=K.float){return te(r.Tensor.ColumnMajorMatrix(re,oe,ce["@type"]==="int"?Int32Array:Float64Array),ce)}K.Matrix=$;function ie(re){return re}K.Aliased=ie;function Z(re,oe,ce=[]){return{"@type":"list",T:ce,separator:re,itemParse:oe,valueType:"list"}}K.List=Z})(S=l.Schema||(l.Schema={}));function T(K){return!!K&&!!K.schema&&!!K.value}l.is=T;let A;(function(K){K[K.Present=0]="Present",K[K.NotPresent=1]="NotPresent",K[K.Unknown=2]="Unknown"})(A=l.ValueKinds||(l.ValueKinds={})),l.ValueKind={Present:A.Present,NotPresent:A.NotPresent,Unknown:A.Unknown};function x(K,Q){return s(Q.T,K,Q,A.NotPresent)}l.Undefined=x;function M(K,Q,J){return s(K,Q,J,A.Present)}l.ofConst=M;function D(K){return h(K)}l.ofLambda=D;function V(K,Q){return D({value:J=>J+K,rowCount:Math.max(Q-K+1,0),schema:S.int})}l.range=V;function R(K){return f(K)}l.ofArray=R;function E(K){return f({array:K,schema:S.int})}l.ofIntArray=E;function I(K){return f({array:K,schema:S.float})}l.ofFloatArray=I;function B(K){return f({array:K,schema:S.str})}l.ofStringArray=B;function w(K){return f({array:K,schema:S.Aliased(S.str)})}l.ofStringAliasArray=w;function O(K,Q=","){return f({array:K,schema:S.List(Q,J=>J)})}l.ofStringListArray=O;function F(K){const{count:Q,data:J,indices:ae}=K;return h({value:te=>(0,n.parseInt)(J,ae[2*te],ae[2*te+1])||0,rowCount:Q,schema:S.int})}l.ofIntTokens=F;function L(K){const{count:Q,data:J,indices:ae}=K;return h({value:te=>(0,n.parseFloat)(J,ae[2*te],ae[2*te+1])||0,rowCount:Q,schema:S.float})}l.ofFloatTokens=L;function U(K){const{count:Q,data:J,indices:ae}=K;return h({value:te=>{const ne=J.substring(ae[2*te],ae[2*te+1]);return ne==="."||ne==="?"?"":ne},rowCount:Q,schema:S.str})}l.ofStringTokens=U;function q(K,Q,J){return y(K,Q,J)}l.window=q;function N(K,Q,J=!0){return d(K,Q,J)}l.view=N;function k(K){return c(K)}l.createFirstIndexMap=k;function j(K){return o(K)}l.createIndexer=j;function H(K,Q,J){return m(K,Q,J||Array)}l.mapToArray=H;function G(K,Q){return v(K,Q)}l.areEqual=G;function z(K,Q){return C(K,Q)}l.indicesOf=z;function W(K,Q){return K.__array?K:K.isDefined?f({array:K.toArray({array:Q}),schema:K.schema,valueKind:K.valueKind}):x(K.rowCount,K.schema)}l.asArrayColumn=W;function X(K,Q,J=0){if(!K.isDefined)return;const ae=K.__array;if(ae)for(let te=0,ne=ae.length;te<ne;
3te++)Q[J+te]=ae[te];else for(let te=0,ne=K.rowCount;te<ne;te++)Q[J+te]=K.value(te)}l.copyToArray=X;function Y(K){for(let Q=0,J=K.rowCount;Q<J;Q++)if(Q!==K.value(Q))return!1;return!0}l.isIdentity=Y})(i||(mm.Column=i={}));function c(l){const S=new Map;for(let T=0,A=l.rowCount;T<A;T++){const x=l.value(T);S.has(x)||S.set(l.value(T),T)}return S}function o(l){const S=new Map;for(let T=0,A=l.rowCount;T<A;T++){const x=l.value(T);S.has(x)||S.set(l.value(T),T)}return T=>S.has(T)?S.get(T):-1}function s(l,S,T,A){const x=M=>l;return{schema:T,__array:void 0,isDefined:A===i.ValueKinds.Present,rowCount:S,value:x,valueKind:M=>A,toArray:M=>{const{array:D}=t.createArray(S,M);for(let V=0,R=D.length;V<R;V++)D[V]=l;return D},areValuesEqual:(M,D)=>!0}}function h({value:l,valueKind:S,areValuesEqual:T,rowCount:A,schema:x}){return{schema:x,__array:void 0,isDefined:!0,rowCount:A,value:l,valueKind:S||(M=>i.ValueKinds.Present),toArray:M=>{const{array:D,start:V}=t.createArray(A,M);for(let R=0,E=D.length;R<E;R++)D[R]=l(R+V);return D},areValuesEqual:T||((M,D)=>l(M)===l(D))}}function f({array:l,schema:S,valueKind:T}){const A=l.length,x=S.T,M=S.valueType==="str"?S.transform==="lowercase"?V=>{const R=l[V];return typeof R=="string"?R.toLowerCase():`${R??x}`.toLowerCase()}:S.transform==="uppercase"?V=>{const R=l[V];return typeof R=="string"?R.toUpperCase():`${R??x}`.toUpperCase()}:V=>{const R=l[V];return typeof R=="string"?R:`${R??x}`}:V=>l[V],D=t.isTypedArray(l);return{schema:S,__array:l,isDefined:!0,rowCount:A,value:M,valueKind:T||(V=>i.ValueKinds.Present),toArray:S.valueType==="str"?S.transform==="lowercase"?V=>{const{start:R,end:E}=t.getArrayBounds(A,V),I=new(V&&typeof V.array<"u"?V.array:l.constructor)(E-R);for(let B=0,w=E-R;B<w;B++){const O=l[R+B];I[B]=typeof O=="string"?O.toLowerCase():`${O??x}`.toLowerCase()}return I}:S.transform==="uppercase"?V=>{const{start:R,end:E}=t.getArrayBounds(A,V),I=new(V&&typeof V.array<"u"?V.array:l.constructor)(E-R);for(let B=0,w=E-R;B<w;B++){const O=l[R+B];I[B]=typeof O=="string"?O.toUpperCase():`${O??x}`.toUpperCase()}return I}:V=>{const{start:R,end:E}=t.getArrayBounds(A,V),I=new(V&&typeof V.array<"u"?V.array:l.constructor)(E-R);for(let B=0,w=E-R;B<w;B++){const O=l[R+B];I[B]=typeof O=="string"?O:`${O??x}`}return I}:D?V=>t.typedArrayWindow(l,V):V=>{const{start:R,end:E}=t.getArrayBounds(A,V);if(R===0&&E===l.length)return l;const I=new(V&&typeof V.array<"u"?V.array:l.constructor)(E-R);for(let B=0,w=E-R;B<w;B++)I[B]=l[R+B];return I},areValuesEqual:(V,R)=>l[V]===l[R]}}function y(l,S,T){return l.isDefined?S===0&&T===l.rowCount?l:l.__array&&t.isTypedArray(l.__array)?_(l,S,T):g(l,S,T):i.Undefined(T-S,l.schema)}function _(l,S,T){const A=t.typedArrayWindow(l.__array,{start:S,end:T}),x=l.valueKind;return f({array:A,schema:l.schema,valueKind:M=>x(S+M)})}function g(l,S,T){const A=l.value,x=l.valueKind,M=l.areValuesEqual,D=S===0?A:R=>A(R+S),V=T-S;return{schema:l.schema,__array:void 0,isDefined:l.isDefined,rowCount:V,value:D,valueKind:S===0?x:R=>x(R+S),toArray:R=>{const{array:E}=t.createArray(V,R);for(let I=0,B=E.length;I<B;I++)E[I]=A(I+S);return E},areValuesEqual:S===0?M:(R,E)=>M(R+S,E+S)}}function a(l,S){if(l.length!==S)return!1;for(let T=0,A=l.length;T<A;T++)if(l[T]!==T)return!1;return!0}function d(l,S,T){return l.rowCount===0||T&&a(S,l.rowCount)?l:l.__array&&typeof l.value(0)==typeof l.__array[0]?p(l,S):u(l,S)}function p(l,S){const T=l.__array,A=new T.constructor(S.length);for(let M=0,D=S.length;M<D;M++)A[M]=T[S[M]];const x=l.valueKind;return f({array:A,schema:l.schema,valueKind:M=>x(S[M])})}function u(l,S){const T=l.value,A=l.valueKind,x=l.areValuesEqual,M=V=>T(S[V]),D=S.length;return{schema:l.schema,__array:void 0,isDefined:l.isDefined,rowCount:D,value:M,valueKind:V=>A(S[V]),toArray:V=>{const{array:R}=t.createArray(D,V);for(let E=0,I=R.length;E<I;E++)R[E]=T(S[E]);return R},areValuesEqual:(V,R)=>x(S[V],S[R])}}function m(l,S,T){const A=new T(l.rowCount);for(let x=0,M=l.rowCount;x<M;x++)A[x]=S(l.value(x));return A}function v(l,S){return l===S?!0:l.rowCount!==S.rowCount||l.isDefined!==S.isDefined||l.schema.valueType!==S.schema.valueType?!1:l.__array&&S.__array?b(l,S):P(l,S)}function b(l,S){const T=l.__array,A=S.__array;for(let x=0,M=l.rowCount;x<M;x++)if(T[x]!==A[x])return!1;return!0}function P(l,S){const T=l.value,A=S.value;for(let x=0,M=l.rowCount;x<M;x++)if(T(x)!==A(x))return!1;return!0}function C(l,S){const T=[],A=l.value;for(let x=0,M=l.rowCount;x<M;x++)S(A(x))&&(T[T.length]=x);return T}return mm}var vs={},xV;function gT(){if(xV)return vs;xV=1,Object.defineProperty(vs,"__esModule",{value:!0}),vs.arrayLess=e,vs.arraySwap=t,vs.sortArray=f,vs.sortArrayRange=y,vs.sort=_;function e(g,a,d){return g[a]-g[d]}function t(g,a,d){const p=g[a];g[a]=g[d],g[d]=p}function r(g,a,d,p){const u=d+p>>1;return a(g,d,p)>0?a(g,d,u)>0?a(g,u,p)>0?u:p:d:a(g,p,u)>0?a(g,u,d)>0?u:d:p}function n(g,a,d){const{cmp:p,swap:u,data:m,parts:v}=g;let b=a+1,P=d;for(u(m,a,r(m,p,a,d));p(m,P,a)>0;)--P;for(let C=a+1;C<=P;C++){const l=p(m,C,a);if(l>0){for(u(m,C,P),--P;p(m,P,a)>0;)--P;C--}else l===0&&(u(m,C,b),b++)}for(let C=a;C<b;C++)u(m,C,a+P-C);v[0]=P-b+a+1,v[1]=P}function i({data:g,cmp:a,swap:d},p,u){for(let m=p+1;m<=u;m++){let v=m-1;for(;v>=p&&a(g,v,v+1)>0;)d(g,v,v+1),v=v-1}}function c(g,a,d){const{parts:p}=g;for(;a<d;){if(d-a<16){i(g,a,d);return}n(g,a,d);const u=p[0],m=p[1];u-a<d-m?(c(g,a,u-1),a=m+1):(c(g,m+1,d),d=u-1)}}function o(g,a,d,p){let u=d+1,m=p;t(g,d,r(g,e,d,p));const v=g[d];for(;g[m]>v;)--m;for(let b=d+1;b<=m;b++){const P=g[b];if(P>v){for(t(g,b,m),--m;g[m]>v;)--m;b--}else P===v&&(t(g,b,u),++u)}for(let b=d;b<u;b++)t(g,b,d+m-b);a[0]=m-u+d+1,a[1]=m}function s(g,a,d){for(let p=a+1;p<=d;p++){const u=g[p];let m=p-1;for(;m>=a&&g[m]>u;
3)g[m+1]=g[m],m=m-1;g[m+1]=u}}function h(g,a,d,p){for(;d<p;){if(p-d<16){s(g,d,p);return}o(g,a,d,p);const u=a[0],m=a[1];u-d<p-m?(h(g,a,d,u-1),d=m+1):(h(g,a,m+1,p),p=u-1)}}function f(g,a=e){return y(g,0,g.length,a)}function y(g,a,d,p=e){return p===e?h(g,[0,0],a,d-1):c({data:g,cmp:p,swap:t,parts:[0,0]},a,d-1),g}function _(g,a,d,p,u){return c({data:g,cmp:p,swap:u,parts:[0,0]},a,d-1),g}return vs}var AV;function z$(){if(AV)return fm;AV=1,Object.defineProperty(fm,"__esModule",{value:!0}),fm.Table=void 0;const e=Z_(),t=gT(),r=ED();var n;return(function(i){function c(T){return T&&typeof T._rowCount=="number"&&!!T._columns&&!!T._schema}i.is=c;function o(T,A,x={}){const M=Object.create(null),D=Object.keys(T);M._rowCount=A._rowCount,M._columns=D,M._schema=T;for(const V of D)if(A[V])M[V]=A[V];else if(x[V])M[V]=x[V];else throw Error(`Cannot find column '${V}'.`);return M}i.pickColumns=o;function s(T,A){const x=Object.keys(A);return{_rowCount:A[x[0]].rowCount,_columns:x,_schema:T,...A}}i.ofColumns=s;function h(T,A,x){const M=Object.create(null),D=Object.keys(T);M._rowCount=x,M._columns=D,M._schema=T;for(const V of D)V in A?M[V]=A[V]:M[V]=e.Column.Undefined(x,T[V]);return M}i.ofPartialColumns=h;function f(T,A){const x=Object.create(null),M=Object.keys(T);x._rowCount=A,x._columns=M,x._schema=T;for(const D of M)x[D]=e.Column.Undefined(A,T[D]);return x}i.ofUndefinedColumns=f;function y(T,A){const x=Object.create(null),M=A.length,D=Object.keys(T);x._rowCount=M,x._columns=D,x._schema=T;for(const V of D)x[V]=e.Column.ofLambda({rowCount:M,schema:T[V],value:R=>A[R][V],valueKind:R=>typeof A[R][V]>"u"?e.Column.ValueKinds.NotPresent:e.Column.ValueKinds.Present});return x}i.ofRows=y;function _(T,A){var x;const M=Object.create(null),D=Object.keys(T);M._rowCount=0,M._columns=D,M._schema=T;for(const V of D)typeof A[V]<"u"?(M[V]=e.Column.ofArray({array:A[V],schema:T[V]}),M._rowCount=(x=A[V])===null||x===void 0?void 0:x.length):M[V]=e.Column.Undefined(M._rowCount,T[V]);return M}i.ofArrays=_;function g(T,A,x){const M=Object.create(null),D=Object.keys(A);M._rowCount=x.length,M._columns=D,M._schema=A;for(const V of D)M[V]=e.Column.view(T[V],x);return M}i.view=g;function a(T,A,x){const M=[];for(let D=0,V=T._rowCount;D<V;++D)x(D)&&M.push(D);return g(T,A,M)}i.pick=a;function d(T,A,x,M){if(x===0&&M===T._rowCount)return T;const D=Object.create(null),V=Object.keys(A);D._rowCount=M-x,D._columns=V,D._schema=A;for(const R of V)D[R]=e.Column.window(T[R],x,M);return D}i.window=d;function p(T,A){const x=Object.create(null),M=Object.keys(A);x._rowCount=0;for(const R of T)x._rowCount+=R._rowCount;const D={};for(const R of M)D[R]=new Array(x._rowCount);x._columns=M,x._schema=A;let V=0;for(const R of T){for(const E of M)e.Column.copyToArray(R[E],D[E],V);V+=R._rowCount}for(const R of M)x[R]=e.Column.ofArray({array:D[R],schema:A[R]});return x}i.concat=p;function u(T,A,x){T[A]=e.Column.asArrayColumn(T[A],x)}i.columnToArray=u;function m(T,A){const x=new Int32Array(T._rowCount);for(let V=0,R=x.length;V<R;V++)x[V]=V;(0,t.sortArray)(x,(V,R,E)=>A(R,E));let M=!0;for(let V=0,R=x.length;V<R;V++)if(x[V]!==V){M=!1;break}if(M)return T;const D=Object.create(null);D._rowCount=T._rowCount,D._columns=T._columns,D._schema=T._schema;for(const V of T._columns)D[V]=e.Column.view(T[V],x,!1);return D}i.sort=m;function v(T,A){if(T._rowCount!==A._rowCount||T._columns.length!==A._columns.length)return!1;for(const x of T._columns)if(!A[x])return!1;for(const x of T._columns)if(!e.Column.areEqual(T[x],A[x]))return!1;return!0}i.areEqual=v;function b(T,A){const x=Object.create(null),{_columns:M}=T;for(let D=0;D<M.length;D++){const V=M[D];x[V]=T[V].value(A)}return x}i.getRow=b;function P(T,A){for(let x=0,M=T._rowCount;x<M;++x)if(A(x))return b(T,x)}i.pickRow=P;function C(T){const A=[],{_rowCount:x}=T;for(let M=0;M<x;M++)A[M]=b(T,M);return A}i.getRows=C;function l(T){const A={},{_columns:x}=T;for(let M=0;M<x.length;M++){const D=x[M];A[D]=T[D].toArray()}return A}i.toArrays=l;function S(T){const A=r.StringBuilder.create(),{_columns:x,_rowCount:M}=T;let D=1;r.StringBuilder.write(A,"|");for(let V=0;V<x.length;V++)r.StringBuilder.write(A,x[V]),r.StringBuilder.write(A,"|"),D+=x[V].length+1;r.StringBuilder.newline(A),r.StringBuilder.write(A,new Array(D+1).join("-")),r.StringBuilder.newline(A);for(let V=0;V<M;V++){r.StringBuilder.write(A,"|");for(let R=0;R<x.length;R++){const E=T[x[R]];E.valueKind(V)===e.Column.ValueKinds.Present?(r.StringBuilder.write(A,E.value(V)),r.StringBuilder.write(A,"|")):r.StringBuilder.write(A,".|")}r.StringBuilder.newline(A)}return r.StringBuilder.getString(A)}i.formatToString=S})(n||(fm.Table=n={})),fm}var MV;function UZ(){if(MV)return dm;
3MV=1,Object.defineProperty(dm,"__esModule",{value:!0}),dm.Database=void 0;const e=z$();var t;return(function(r){function n(c,o,s){const h=Object.keys(s),f=Object.create(null),y=[];f._name=c,f._tableNames=y,f._schema=o;for(const _ of h)e.Table.is(s[_])&&(f[_]=s[_],y[y.length]=_);return f}r.ofTables=n;function i(c){const o={};for(const s of c._tableNames)o[s]=e.Table.getRows(c[s]);return o}r.getTablesAsRows=i})(t||(dm.Database=t={})),dm}var DV;function lt(){return DV||(DV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ColumnHelpers=e.Column=e.Table=e.Database=void 0;const t=At,r=UZ();Object.defineProperty(e,"Database",{enumerable:!0,get:function(){return r.Database}});const n=z$();Object.defineProperty(e,"Table",{enumerable:!0,get:function(){return n.Table}});const i=Z_();Object.defineProperty(e,"Column",{enumerable:!0,get:function(){return i.Column}});const c=t.__importStar(G$());e.ColumnHelpers=c})(V2)),V2}var IV;function jZ(){if(IV)return Kl;IV=1,Object.defineProperty(Kl,"__esModule",{value:!0}),Kl.Coordinates=void 0,Kl.Time=r;const e=et(),t=lt();function r(i,c){return{value:i,unit:c}}var n;return(function(i){function c(g,a,d){const p=!!g[0].cell,u=!!g[0].velocities,m=!!g[0].forces;return{id:e.UUID.create22(),frames:g,hasCell:p,hasVelocities:u,hasForces:m,deltaTime:a,timeOffset:d}}i.create=c;function o(g,a,d){var p,u;let{x:m,y:v,z:b}=g;return g.xyzOrdering.frozen?d?g.xyzOrdering.isIdentity?(m=y(m,d),v=y(v,d),b=y(b,d)):(0,e.arrayEqual)(g.xyzOrdering.index,d)||(m=f(m,g.xyzOrdering.index,d),v=f(v,g.xyzOrdering.index,d),b=f(b,g.xyzOrdering.index,d)):g.xyzOrdering.isIdentity||(m=_(m,g.xyzOrdering.index),v=_(v,g.xyzOrdering.index),b=_(b,g.xyzOrdering.index)):d&&(g.xyzOrdering.isIdentity?(g.xyzOrdering.isIdentity=!1,g.xyzOrdering.index=d,h(m,d),h(v,d),h(b,d)):(0,e.arrayEqual)(g.xyzOrdering.index,d)||(m=f(m,g.xyzOrdering.index,d),v=f(v,g.xyzOrdering.index,d),b=f(b,g.xyzOrdering.index,d))),g.xyzOrdering.frozen=!0,{id:e.UUID.create22(),atomId:a.atomId,occupancy:(p=a.occupancy)!==null&&p!==void 0?p:t.Column.ofConst(1,g.elementCount,t.Column.Schema.int),B_iso_or_equiv:(u=a.B_iso_or_equiv)!==null&&u!==void 0?u:t.Column.ofConst(0,g.elementCount,t.Column.Schema.float),xyzDefined:!0,x:m,y:v,z:b}}i.getAtomicConformation=o;const s=[.123];function h(g,a){const d=s;for(let p=0,u=g.length;p<u;p++)d[p]=g[a[p]];for(let p=0,u=g.length;p<u;p++)g[p]=d[p]}function f(g,a,d){const p=new Float32Array(g.length);for(let u=0,m=g.length;u<m;u++)p[u]=g[a[d[u]]];return p}function y(g,a){const d=new Float32Array(g.length);for(let p=0,u=g.length;p<u;p++)d[p]=g[a[p]];return d}function _(g,a){const d=new Float32Array(g.length);for(let p=0,u=g.length;p<u;p++)d[a[p]]=g[p];return d}})(n||(Kl.Coordinates=n={})),Kl}var wV;function vl(){return wV||(wV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),At.__exportStar(jZ(),e)})(I2)),I2}var E2={},pm={},VV;function yT(){if(VV)return pm;VV=1,Object.defineProperty(pm,"__esModule",{value:!0}),pm.Topology=void 0;const e=et();var t;return(function(r){function n(i,c,o,s){return{id:e.UUID.create22(),label:i,basic:c,sourceData:s,bonds:o}}r.create=n})(t||(pm.Topology=t={})),pm}var EV;function GZ(){return EV||(EV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),At.__exportStar(yT(),e)})(E2)),E2}var B2={},hm={},R2={},O2={},BV;function zZ(){return BV||(BV=1,Object.defineProperty(O2,"__esModule",{value:!0})),O2}var mi={},gm={},RV;function bl(){if(RV)return gm;RV=1,Object.defineProperty(gm,"__esModule",{value:!0}),gm.mmCIF_Schema=void 0;var t=lt().Column.Schema;const r=t.str,n=t.int,i=t.float,c=t.coord,o=t.Aliased,s=t.Matrix,h=t.Vector,f=t.lstr,y=t.List;return gm.mmCIF_Schema={atom_site:{auth_asym_id:r,auth_atom_id:r,auth_comp_id:r,auth_seq_id:n,B_iso_or_equiv:i,Cartn_x:c,Cartn_y:c,Cartn_z:c,group_PDB:o(r),id:n,label_alt_id:r,label_asym_id:r,label_atom_id:r,label_comp_id:r,label_entity_id:r,label_seq_id:n,occupancy:i,type_symbol:r,pdbx_PDB_ins_code:r,pdbx_PDB_model_num:n,pdbx_formal_charge:n,pdbx_label_index:n,pdbx_sifts_xref_db_name:r,pdbx_sifts_xref_db_acc:r,pdbx_sifts_xref_db_num:r,pdbx_sifts_xref_db_res:r,ihm_model_id:n},atom_site_anisotrop:{id:n,type_symbol:r,U:s(3,3),U_esd:s(3,3),pdbx_auth_seq_id:n,pdbx_auth_asym_id:r,pdbx_auth_atom_id:r,pdbx_auth_comp_id:r,pdbx_label_seq_id:n,pdbx_label_alt_id:r,pdbx_label_asym_id:r,pdbx_label_atom_id:r,pdbx_label_comp_id:r,pdbx_PDB_ins_code:r},atom_sites:{entry_id:r,fract_transf_matrix:s(3,3),fract_transf_vector:h(3)},audit_author:{name:r,pdbx_ordinal:n,identifier_ORCID:r},audit_conform:{dict_location:r,dict_name:r,dict_version:r},cell:{angle_alpha:i,angle_beta:i,angle_gamma:i,entry_id:r,length_a:i,length_b:i,length_c:i,Z_PDB:n,pdbx_unique_axis:r},chem_comp:{formula:r,formula_weight:i,id:r,mon_nstd_flag:o(f),name:r,type:o(f),pdbx_synonyms:y(";",_=>_)},chem_comp_bond:{atom_id_1:r,atom_id_2:r,comp_id:r,value_order:o(f),pdbx_ordinal:n,pdbx_stereo_config:o(f),pdbx_aromatic_flag:o(f)},citation:{book_publisher:r,country:r,id:r,journal_abbrev:r,journal_id_ASTM:r,journal_id_CSD:r,journal_id_ISSN:r,journal_volume:r,page_first:r,page_last:r,title:r,year:n,pdbx_database_id_DOI:r,pdbx_database_id_PubMed:n},citation_author:{citation_id:r,name:r,ordinal:n},database_2:{database_id:o(f),database_code:r},entity:{details:r,formula_weight:i,id:r,src_method:o(f),type:o(f),pdbx_description:y(",",_=>_),pdbx_number_of_molecules:n,pdbx_parent_entity_id:r,pdbx_mutation:r,pdbx_fragment:r,pdbx_ec:y(",",_=>_)},entity_poly:{entity_id:r,nstd_linkage:o(f),nstd_monomer:o(f),type:o(r),pdbx_strand_id:y(",",_=>_),pdbx_seq_one_letter_code:r,pdbx_seq_one_letter_code_can:r,pdbx_target_identifier:r},entity_poly_seq:{entity_id:r,hetero:o(f),mon_id:r,num:n},entry:{id:r},exptl:{entry_id:r,method:o(r)},software:{classification:r,date:r,description:r,name:r,type:o(f),version:r,pdbx_ordinal:n},struct:{entry_id:r,title:r,pdbx_structure_determination_methodology:o(r),pdbx_descriptor:r},struct_asym:{details:r,entity_id:r,id:r,pdbx_modified:r,pdbx_blank_PDB_chainid_flag:o(r)},struct_conf:{beg_label_asym_id:r,beg_label_comp_id:r,beg_label_seq_id:n,beg_auth_asym_id:r,beg_auth_comp_id:r,beg_auth_seq_id:n,conf_type_id:o(f),details:r,end_label_asym_id:r,end_label_comp_id:r,end_label_seq_id:n,end_auth_asym_id:r,end_auth_comp_id:r,end_auth_seq_id:n,id:r,pdbx_beg_PDB_ins_code:r,pdbx_end_PDB_ins_code:r,pdbx_PDB_helix_class:r,pdbx_PDB_helix_length:n,pdbx_PDB_helix_id:r},struct_conn:{conn_type_id:o(f),details:r,id:r,ptnr1_label_asym_id:r,ptnr1_label_atom_id:r,ptnr1_label_comp_id:r,ptnr1_label_seq_id:n,ptnr1_auth_asym_id:r,ptnr1_auth_comp_id:r,ptnr1_auth_seq_id:n,ptnr1_symmetry:r,ptnr2_label_asym_id:r,ptnr2_label_atom_id:r,ptnr2_label_comp_id:r,ptnr2_label_seq_id:n,ptnr2_auth_asym_id:r,ptnr2_auth_comp_id:r,ptnr2_auth_seq_id:n,ptnr2_symmetry:r,pdbx_ptnr1_PDB_ins_code:r,pdbx_ptnr1_label_alt_id:r,pdbx_ptnr1_standard_comp_id:r,pdbx_ptnr2_PDB_ins_code:r,pdbx_ptnr2_label_alt_id:r,pdbx_ptnr3_PDB_ins_code:r,pdbx_ptnr3_label_alt_id:r,pdbx_ptnr3_label_asym_id:r,pdbx_ptnr3_label_atom_id:r,pdbx_ptnr3_label_comp_id:r,pdbx_ptnr3_label_seq_id:n,pdbx_PDB_id:r,pdbx_dist_value:i,pdbx_value_order:o(f)},struct_conn_type:{criteria:r,id:o(f),reference:r},struct_keywords:{entry_id:r,text:y(",",_=>_),pdbx_keywords:r},struct_mon_prot_cis:{label_alt_id:r,label_asym_id:r,label_comp_id:r,label_seq_id:n,auth_asym_id:r,auth_comp_id:r,auth_seq_id:n,pdbx_auth_asym_id_2:r,pdbx_auth_comp_id_2:r,pdbx_auth_seq_id_2:n,pdbx_label_asym_id_2:r,pdbx_label_comp_id_2:r,pdbx_label_seq_id_2:n,pdbx_PDB_ins_code:r,pdbx_PDB_ins_code_2:r,pdbx_PDB_model_num:n,pdbx_omega_angle:r,pdbx_id:r,pdbx_auth_ins_code:r,pdbx_auth_ins_code_2:r},struct_ncs_oper:{code:o(r),details:r,id:n,matrix:s(3,3),vector:h(3)},struct_sheet_range:{beg_label_asym_id:r,beg_label_comp_id:r,beg_label_seq_id:n,end_label_asym_id:r,end_label_comp_id:r,end_label_seq_id:n,beg_auth_asym_id:r,beg_auth_comp_id:r,beg_auth_seq_id:n,end_auth_asym_id:r,end_auth_comp_id:r,end_auth_seq_id:n,id:r,sheet_id:r,pdbx_beg_PDB_ins_code:r,pdbx_end_PDB_ins_code:r},struct_site:{details:r,id:r,pdbx_num_residues:n,pdbx_evidence_code:r,pdbx_auth_asym_id:r,pdbx_auth_comp_id:r,pdbx_auth_seq_id:n,pdbx_auth_ins_code:r},struct_site_gen:{details:r,id:r,label_alt_id:r,label_asym_id:r,label_atom_id:r,label_comp_id:r,label_seq_id:n,auth_asym_id:r,auth_atom_id:r,auth_comp_id:r,auth_seq_id:n,site_id:r,symmetry:r,pdbx_auth_ins_code:r,pdbx_num_res:n},struct_site_keywords:{site_id:r,text:r},symmetry:{entry_id:r,cell_setting:o(f),Int_Tables_number:n,space_group_name_Hall:r,"space_group_name_H-M":r},pdbx_database_status:{status_code:o(r),status_code_sf:o(r),status_code_mr:o(r),entry_id:r,recvd_initial_deposition_date:r,SG_entry:o(f),deposit_site:o(r),process_site:o(r),status_code_cs:o(r),methods_development_category:o(r),pdb_format_compatible:o(f)},pdbx_nonpoly_scheme:{asym_id:r,entity_id:r,mon_id:r,pdb_strand_id:r,ndb_seq_num:r,pdb_seq_num:r,auth_seq_num:r,pdb_mon_id:r,auth_mon_id:r,pdb_ins_code:r},pdbx_database_related:{db_name:o(r),details:r,db_id:r,content_type:o(r)},pdbx_entity_nonpoly:{entity_id:r,comp_id:r,name:r},pdbx_chem_comp_synonyms:{name:r,comp_id:r,provenance:o(r)},pdbx_chem_comp_identifier:{comp_id:r,identifier:r,type:o(r),program:r,program_version:r},pdbx_unobs_or_zero_occ_residues:{id:n,polymer_flag:o(f),occupancy_flag:o(n),PDB_model_num:n,auth_asym_id:r,auth_comp_id:r,auth_seq_id:n,PDB_ins_code:r,label_asym_id:r,label_comp_id:r,label_seq_id:n},pdbx_struct_mod_residue:{id:n,auth_asym_id:r,auth_comp_id:r,auth_seq_id:n,PDB_ins_code:r,label_asym_id:r,label_comp_id:r,label_seq_id:n,parent_comp_id:r,details:r},pdbx_struct_oper_list:{id:r,type:o(r),name:r,symmetry_operation:r,matrix:s(3,3),vector:h(3)}
3,pdbx_struct_assembly:{method_details:r,oligomeric_details:r,oligomeric_count:n,details:r,id:r},pdbx_struct_assembly_gen:{asym_id_list:y(",",_=>_),assembly_id:r,oper_expression:r},pdbx_reference_entity_list:{prd_id:r,ref_entity_id:r,type:o(f),details:r,component_id:n},pdbx_reference_entity_link:{link_id:n,prd_id:r,details:r,ref_entity_id_1:r,ref_entity_id_2:r,entity_seq_num_1:n,entity_seq_num_2:n,comp_id_1:r,comp_id_2:r,atom_id_1:r,atom_id_2:r,value_order:o(f),component_1:n,component_2:n,link_class:o(r)},pdbx_reference_entity_poly_link:{link_id:n,prd_id:r,ref_entity_id:r,component_id:n,entity_seq_num_1:n,entity_seq_num_2:n,comp_id_1:r,comp_id_2:r,atom_id_1:r,atom_id_2:r,value_order:o(f)},pdbx_molecule:{prd_id:r,instance_id:n,asym_id:r},pdbx_molecule_features:{prd_id:r,class:o(f),type:o(f),name:r,details:r},entity_src_nat:{entity_id:r,pdbx_organism_scientific:r,pdbx_plasmid_name:r,pdbx_src_id:n,pdbx_beg_seq_num:n,pdbx_end_seq_num:n},entity_src_gen:{entity_id:r,pdbx_gene_src_gene:y(",",_=>_),pdbx_gene_src_scientific_name:r,plasmid_name:r,pdbx_src_id:n,pdbx_beg_seq_num:n,pdbx_end_seq_num:n},pdbx_entity_src_syn:{organism_scientific:r,entity_id:r,pdbx_src_id:n,pdbx_beg_seq_num:n,pdbx_end_seq_num:n},pdbx_entity_branch_descriptor:{entity_id:r,descriptor:r,type:o(f),program:r,program_version:r,ordinal:n},pdbx_entity_instance_feature:{details:r,feature_type:o(r),auth_asym_id:r,asym_id:r,auth_seq_num:r,seq_num:n,comp_id:r,auth_comp_id:r,ordinal:n},pdbx_entity_branch_list:{entity_id:r,hetero:o(f),comp_id:r,num:n},pdbx_entity_branch_link:{link_id:n,details:r,entity_id:r,entity_branch_list_num_1:n,entity_branch_list_num_2:n,comp_id_1:r,comp_id_2:r,atom_id_1:r,leaving_atom_id_1:r,atom_stereo_config_1:o(f),atom_id_2:r,leaving_atom_id_2:r,atom_stereo_config_2:o(f),value_order:o(f)},pdbx_entity_branch:{entity_id:r,type:o(r)},pdbx_branch_scheme:{entity_id:r,hetero:o(f),asym_id:r,mon_id:r,num:n,pdb_asym_id:r,pdb_seq_num:r,pdb_mon_id:r,auth_asym_id:r,auth_seq_num:r,auth_mon_id:r},pdbx_chem_comp_related:{comp_id:r,related_comp_id:r,relationship_type:o(r),details:r},ihm_starting_model_details:{starting_model_id:r,entity_id:r,entity_description:r,asym_id:r,entity_poly_segment_id:n,starting_model_source:o(r),starting_model_auth_asym_id:r,starting_model_sequence_offset:n,dataset_list_id:n},ihm_starting_comparative_models:{id:n,starting_model_id:r,starting_model_auth_asym_id:r,starting_model_seq_id_begin:n,starting_model_seq_id_end:n,template_auth_asym_id:r,template_seq_id_begin:n,template_seq_id_end:n,template_sequence_identity:i,template_sequence_identity_denominator:o(n),template_dataset_list_id:n,alignment_file_id:n},ihm_starting_model_seq_dif:{id:n,entity_id:r,asym_id:r,seq_id:n,comp_id:r,starting_model_id:r,db_asym_id:r,db_seq_id:n,db_comp_id:r,details:r},ihm_model_representation:{id:n,name:r,details:r},ihm_model_representation_details:{id:n,representation_id:n,entity_poly_segment_id:n,entity_id:r,entity_description:r,entity_asym_id:r,model_object_primitive:o(r),starting_model_id:r,model_mode:o(r),model_granularity:o(r),model_object_count:n},ihm_struct_assembly_details:{id:n,assembly_id:n,parent_assembly_id:n,entity_description:r,entity_id:r,asym_id:r,entity_poly_segment_id:n},ihm_struct_assembly:{id:n,name:r,description:r},ihm_modeling_protocol:{id:n,num_steps:n,protocol_name:r},ihm_modeling_protocol_details:{id:n,protocol_id:n,step_id:n,struct_assembly_id:n,dataset_group_id:n,struct_assembly_description:r,step_name:r,step_method:r,num_models_begin:n,num_models_end:n,multi_scale_flag:o(f),multi_state_flag:o(f),ordered_flag:o(f),script_file_id:n,software_id:n},ihm_multi_state_modeling:{state_id:n,state_group_id:n,population_fraction:i,population_fraction_sd:i,state_type:r,state_name:r,experiment_type:o(r),details:r},ihm_modeling_post_process:{id:n,protocol_id:n,analysis_id:n,step_id:n,type:o(r),feature:o(r),num_models_begin:n,num_models_end:n},ihm_ensemble_info:{ensemble_id:n,ensemble_name:r,post_process_id:n,model_group_id:n,ensemble_clustering_method:o(r),ensemble_clustering_feature:o(r),num_ensemble_models:n,num_ensemble_models_deposited:n,ensemble_precision_value:i,ensemble_file_id:n},ihm_model_list:{model_id:n,model_name:r,assembly_id:n,protocol_id:n,representation_id:n},ihm_model_group:{id:n,name:r,details:r},ihm_model_group_link:{model_id:n,group_id:n},ihm_model_representative:{id:n,model_group_id:n,model_id:n,selection_criteria:o(r)},ihm_dataset_list:{id:n,data_type:o(r),database_hosted:o(f)},ihm_dataset_group:{id:n,name:r,application:o(r),details:r},ihm_dataset_group_link:{dataset_list_id:n,group_id:n},ihm_related_datasets:{dataset_list_id_derived:n,dataset_list_id_primary:n}
3,ihm_dataset_related_db_reference:{id:n,dataset_list_id:n,db_name:o(r),accession_code:r,version:r,details:r},ihm_external_reference_info:{reference_id:n,reference_provider:r,reference_type:o(r),reference:r,refers_to:o(r),associated_url:r},ihm_external_files:{id:n,reference_id:n,file_path:r,content_type:o(r),file_size_bytes:i,details:r},ihm_dataset_external_reference:{id:n,dataset_list_id:n,file_id:n},ihm_localization_density_files:{id:n,file_id:n,ensemble_id:n,entity_id:r,entity_poly_segment_id:n,asym_id:r},ihm_predicted_contact_restraint:{id:n,group_id:n,entity_id_1:r,entity_id_2:r,asym_id_1:r,asym_id_2:r,comp_id_1:r,comp_id_2:r,seq_id_1:n,seq_id_2:n,rep_atom_1:o(r),rep_atom_2:o(r),distance_lower_limit:i,distance_upper_limit:i,probability:i,restraint_type:o(r),model_granularity:o(r),dataset_list_id:n,software_id:n},ihm_cross_link_list:{id:n,group_id:n,entity_description_1:r,entity_description_2:r,entity_id_1:r,entity_id_2:r,comp_id_1:r,comp_id_2:r,seq_id_1:n,seq_id_2:n,linker_type:o(r),dataset_list_id:n},ihm_cross_link_restraint:{id:n,group_id:n,entity_id_1:r,entity_id_2:r,asym_id_1:r,asym_id_2:r,comp_id_1:r,comp_id_2:r,seq_id_1:n,seq_id_2:n,atom_id_1:r,atom_id_2:r,restraint_type:o(r),conditional_crosslink_flag:o(r),model_granularity:o(r),distance_threshold:i,psi:i,sigma_1:i,sigma_2:i},ihm_cross_link_result_parameters:{id:n,restraint_id:n,model_id:n,psi:i,sigma_1:i,sigma_2:i},ihm_2dem_class_average_restraint:{id:n,dataset_list_id:n,number_raw_micrographs:n,pixel_size_width:i,pixel_size_height:i,image_resolution:i,image_segment_flag:o(f),number_of_projections:n,struct_assembly_id:n,details:r},ihm_2dem_class_average_fitting:{id:n,restraint_id:n,model_id:n,cross_correlation_coefficient:i,rot_matrix:s(3,3),tr_vector:h(3)},ihm_3dem_restraint:{id:n,dataset_list_id:n,model_id:n,struct_assembly_id:n,fitting_method:r,number_of_gaussians:n,cross_correlation_coefficient:i},ihm_sas_restraint:{id:n,dataset_list_id:n,model_id:n,struct_assembly_id:n,profile_segment_flag:o(f),fitting_atom_type:r,fitting_method:r,fitting_state:o(r),radius_of_gyration:i,chi_value:i,details:r},ihm_starting_model_coord:{ordinal_id:n,starting_model_id:r,group_PDB:o(r),id:n,type_symbol:r,entity_id:r,atom_id:r,comp_id:r,seq_id:n,asym_id:r,Cartn_x:i,Cartn_y:i,Cartn_z:i,B_iso_or_equiv:i},ihm_sphere_obj_site:{id:n,entity_id:r,seq_id_begin:n,seq_id_end:n,asym_id:r,Cartn_x:i,Cartn_y:i,Cartn_z:i,object_radius:i,rmsf:i,model_id:n},ihm_gaussian_obj_site:{id:n,entity_id:r,seq_id_begin:n,seq_id_end:n,asym_id:r,mean_Cartn_x:i,mean_Cartn_y:i,mean_Cartn_z:i,weight:i,covariance_matrix:s(3,3),model_id:n},ihm_gaussian_obj_ensemble:{id:n,entity_id:r,seq_id_begin:n,seq_id_end:n,asym_id:r,mean_Cartn_x:i,mean_Cartn_y:i,mean_Cartn_z:i,weight:i,covariance_matrix:s(3,3),ensemble_id:n},ihm_feature_list:{feature_id:n,feature_type:o(r),entity_type:o(r)},ihm_poly_residue_feature:{ordinal_id:n,feature_id:n,entity_id:r,asym_id:r,comp_id_begin:r,comp_id_end:r,seq_id_begin:n,seq_id_end:n},ihm_derived_distance_restraint:{id:n,group_id:n,feature_id_1:n,feature_id_2:n,group_conditionality:o(r),random_exclusion_fraction:i,distance_upper_limit:i,restraint_type:o(r),dataset_list_id:n},ma_model_list:{ordinal_id:n,model_id:n,model_group_id:n,model_name:r,model_group_name:r,model_type:o(r),data_id:n},ma_target_entity:{entity_id:r,data_id:n,origin:o(r)},ma_target_entity_instance:{asym_id:r,entity_id:r,details:r},ma_target_ref_db_details:{target_entity_id:r,db_name:o(r),db_code:r,db_accession:r,seq_db_isoform:r,seq_db_align_begin:r,seq_db_align_end:r,ncbi_taxonomy_id:r,organism_scientific:r},ma_data:{id:n,content_type:o(r),content_type_other_details:r,name:r},ma_software_group:{ordinal_id:n,group_id:n,software_id:n},ma_qa_metric:{id:n,name:r,type:o(r),mode:o(r),software_group_id:n},ma_qa_metric_global:{ordinal_id:n,model_id:n,metric_id:n,metric_value:i},ma_qa_metric_local:{ordinal_id:n,model_id:n,label_asym_id:r,label_seq_id:n,label_comp_id:r,metric_id:n,metric_value:i},ma_qa_metric_local_pairwise:{ordinal_id:n,model_id:n,label_asym_id_1:r,label_seq_id_1:n,label_comp_id_1:r,label_asym_id_2:r,label_seq_id_2:n,label_comp_id_2:r,metric_id:n,metric_value:i}},gm}var OV;function H$(){if(OV)return mi;
3OV=1,Object.defineProperty(mi,"__esModule",{value:!0}),mi.AtomicHierarchy=mi.AtomicIndex=mi.ChainsSchema=mi.ResiduesSchema=mi.AtomsSchema=void 0;const e=lt(),t=bl();mi.AtomsSchema={type_symbol:e.Column.Schema.Aliased(t.mmCIF_Schema.atom_site.type_symbol),label_atom_id:t.mmCIF_Schema.atom_site.label_atom_id,auth_atom_id:t.mmCIF_Schema.atom_site.auth_atom_id,label_alt_id:t.mmCIF_Schema.atom_site.label_alt_id,label_comp_id:t.mmCIF_Schema.atom_site.label_comp_id,auth_comp_id:t.mmCIF_Schema.atom_site.auth_comp_id,pdbx_formal_charge:t.mmCIF_Schema.atom_site.pdbx_formal_charge},mi.ResiduesSchema={group_PDB:t.mmCIF_Schema.atom_site.group_PDB,label_seq_id:t.mmCIF_Schema.atom_site.label_seq_id,auth_seq_id:t.mmCIF_Schema.atom_site.auth_seq_id,pdbx_PDB_ins_code:t.mmCIF_Schema.atom_site.pdbx_PDB_ins_code},mi.ChainsSchema={label_asym_id:t.mmCIF_Schema.atom_site.label_asym_id,auth_asym_id:t.mmCIF_Schema.atom_site.auth_asym_id,label_entity_id:t.mmCIF_Schema.atom_site.label_entity_id};var r;(function(i){function c(){return{label_entity_id:"",label_asym_id:"",auth_seq_id:0,pdbx_PDB_ins_code:void 0}}i.EmptyResidueKey=c})(r||(mi.AtomicIndex=r={}));var n;return(function(i){function c(_,g){return _.residueAtomSegments.index[_.chainAtomSegments.offsets[g]]}i.chainStartResidueIndex=c;function o(_,g){return _.residueAtomSegments.index[_.chainAtomSegments.offsets[g+1]-1]+1}i.chainEndResidueIndexExcl=o;function s(_,g){return o(_,g)-c(_,g)}i.chainResidueCount=s;function h(_,g){return _.residueAtomSegments.offsets[g]}i.residueFirstAtomIndex=h;function f(_,g){return _.chainAtomSegments.index[g]}i.atomChainIndex=f;function y(_,g){return _.chainAtomSegments.index[_.residueAtomSegments.offsets[g]]}i.residueChainIndex=y})(n||(mi.AtomicHierarchy=n={})),mi}var k2={},kV;function BD(){return kV||(kV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultAtomNumber=e.DefaultAtomWeight=e.DefaultVdwRadius=e.ElementAtomWeights=e.ElementVdwRadii=e.AtomicNumbers=void 0,e.VdwRadius=t,e.AtomWeight=r,e.AtomNumber=n,e.AtomicNumbers={H:1,D:1,T:1,HE:2,LI:3,BE:4,B:5,C:6,N:7,O:8,F:9,NE:10,NA:11,MG:12,AL:13,SI:14,P:15,S:16,CL:17,AR:18,K:19,CA:20,SC:21,TI:22,V:23,CR:24,MN:25,FE:26,CO:27,NI:28,CU:29,ZN:30,GA:31,GE:32,AS:33,SE:34,BR:35,KR:36,RB:37,SR:38,Y:39,ZR:40,NB:41,MO:42,TC:43,RU:44,RH:45,PD:46,AG:47,CD:48,IN:49,SN:50,SB:51,TE:52,I:53,XE:54,CS:55,BA:56,LA:57,CE:58,PR:59,ND:60,PM:61,SM:62,EU:63,GD:64,TB:65,DY:66,HO:67,ER:68,TM:69,YB:70,LU:71,HF:72,TA:73,W:74,RE:75,OS:76,IR:77,PT:78,AU:79,HG:80,TL:81,PB:82,BI:83,PO:84,AT:85,RN:86,FR:87,RA:88,AC:89,TH:90,PA:91,U:92,NP:93,PU:94,AM:95,CM:96,BK:97,CF:98,ES:99,FM:100,MD:101,NO:102,LR:103,RF:104,DB:105,SG:106,BH:107,HS:108,MT:109},e.ElementVdwRadii={1:1.1,2:1.4,3:1.81,4:1.53,5:1.92,6:1.7,7:1.55,8:1.52,9:1.47,10:1.54,11:2.27,12:1.73,13:1.84,14:2.1,15:1.8,16:1.8,17:1.75,18:1.88,19:2.75,20:2.31,21:2.3,22:2.15,23:2.05,24:2.05,25:2.05,26:2.05,27:2,28:2,29:2,30:2.1,31:1.87,32:2.11,33:1.85,34:1.9,35:1.83,36:2.02,37:3.03,38:2.49,39:2.4,40:2.3,41:2.15,42:2.1,43:2.05,44:2.05,45:2,46:2.05,47:2.1,48:2.2,49:2.2,50:1.93,51:2.17,52:2.06,53:1.98,54:2.16,55:3.43,56:2.68,57:2.5,58:2.48,59:2.47,60:2.45,61:2.43,62:2.42,63:2.4,64:2.38,65:2.37,66:2.35,67:2.33,68:2.32,69:2.3,70:2.28,71:2.27,72:2.25,73:2.2,74:2.1,75:2.05,76:2,77:2,78:2.05,79:2.1,80:2.05,81:1.96,82:2.02,83:2.07,84:1.97,85:2.02,86:2.2,87:3.48,88:2.83,89:2,90:2.4,91:2,92:2.3,93:2,94:2,95:2,96:2,97:2,98:2,99:2,100:2,101:2,102:2,103:2,104:2,105:2,106:2,107:2,108:2,109:2},e.ElementAtomWeights={1:1.008,2:4.0026,3:6.94,4:9.0122,5:10.81,6:10.81,7:14.007,8:15.999,9:18.998,10:20.18,11:22.99,12:24.305,13:26.982,14:28.085,15:30.974,16:32.06,17:35.45,18:39.948,19:39.098,20:40.078,21:44.956,22:47.867,23:50.942,24:51.996,25:54.938,26:55.845,27:58.933,28:58.693,29:63.546,30:65.38,31:69.723,32:72.63,33:74.922,34:78.971,35:79.904,36:83.798,37:85.468,38:87.62,39:88.906,40:91.224,41:92.906,42:95.95,43:96.906,44:101.07,45:102.91,46:106.42,47:107.87,48:112.41,49:114.82,50:118.71,51:121.76,52:127.6,53:127.6,54:131.29,55:132.91,56:137.33,57:138.91,58:140.12,59:140.91,60:144.24,61:144.912,62:150.36,63:151.96,64:157.25,65:158.93,66:162.5,67:164.93,68:167.26,69:168.93,70:173.05,71:174.97,72:178.49,73:180.95,74:183.84,75:186.21,76:190.23,77:192.22,78:195.08,79:196.97,80:200.59,81:204.38,82:207.2,83:208.98,84:1.97,85:2.02,86:2.2,87:3.48,88:2.83,89:2,90:232.04,91:231.04,92:238.03,93:237.048,94:244.064,95:243.061,96:247.07,97:247.07,98:251.079,99:252.083,100:257.095,101:258.098,102:259.101,103:262.11,104:267.122,105:270.131,106:271.134,107:270.133,108:270.134,109:278.156},e.DefaultVdwRadius=1.7,e.DefaultAtomWeight=10.81,e.DefaultAtomNumber=0;function t(i){const c=e.AtomicNumbers[i];return c===void 0?e.DefaultVdwRadius:e.ElementVdwRadii[c]}function r(i){const c=e.AtomicNumbers[i];return c===void 0?e.DefaultAtomWeight:e.ElementAtomWeights[c]}function n(i){const c=e.AtomicNumbers[i];return c===void 0?e.DefaultAtomNumber:c}})(k2)),k2}var FV;function ma(){return FV||(FV=1,(function(e){Object.defineProperty(e,"__esMo
3dule",{value:!0});const t=At;t.__exportStar(zZ(),e),t.__exportStar(H$(),e),t.__exportStar(BD(),e)})(R2)),R2}var ym={},hr={},vm={},Jr={},LV;function vr(){if(LV)return Jr;LV=1,Object.defineProperty(Jr,"__esModule",{value:!0}),Jr.assignIfUndefined=t,Jr.shallowMerge2=r,Jr.shallowEqual=n,Jr.shallowMerge=i,Jr.shallowMergeArray=c,Jr.deepClone=o,Jr.mapObjectMap=s,Jr.mapArrayToObject=h,Jr.objectForEach=f,Jr.pickObjectKeys=y,Jr.pickObjectKeysWithRemapping=_,Jr.objectOfArraysToArrayOfObjects=g,Jr.omitObjectKeys=a,Jr.objectFromKeysAndValues=d,Jr.isPlainObject=p,Jr.promiseAllObj=u;const e=Object.prototype.hasOwnProperty;function t(m,v){for(const b of Object.keys(v))e.call(v,b)&&typeof m[b]>"u"&&(m[b]=v[b]);return m}function r(m,v){let b=!1;for(const P of Object.keys(v))if(e.call(v,P)&&v[P]!==m[P]){b=!0;break}return b?Object.assign({},m,v):m}function n(m,v){if(!m)return!v;if(!v)return!1;const b=Object.keys(m);if(Object.keys(v).length!==b.length)return!1;for(const P of b)if(!e.call(m,P)||m[P]!==v[P])return!1;return!0}function i(m,...v){return c(m,v)}function c(m,v){let b=m;for(let P=0;P<v.length;P++)if(v[P]&&(b=r(m,v[P]),b!==m)){for(let C=P+1;C<v.length;C++)b=Object.assign(b,v[C]);break}return b}function o(m){if(m===null||typeof m!="object")return m;if(m instanceof Array){const v=[];for(let b=0,P=m.length;b<P;b++)v[b]=o(m[b]);return v}if(typeof m=="object"&&!("prototype"in m)){const v={};for(const b in m)e.call(m,b)&&(v[b]=o(m[b]));return v}throw new Error(`Can't clone, type "${typeof m}" unsupported`)}function s(m,v){const b={};for(const P of Object.keys(m))b[P]=v(m[P]);return b}function h(m,v){const b={};for(const P of m)b[P]=v(P);return b}function f(m,v){if(m)for(const b of Object.keys(m))v(m[b],b)}function y(m,v){const b={};for(const P of v)Object.hasOwn(m,P)&&(b[P]=m[P]);return b}function _(m,v,b){const P={};for(const C of v){let l=b[C];l!==null&&(l===void 0&&(l=C),Object.hasOwn(m,l)&&(P[C]=m[l]))}return P}function g(m){let v;for(const P in m){const C=m[P].length;if(v!==void 0&&v!==C)throw new Error("FormatError: arrays must have the same length.");v=C}if(v===void 0)return[];const b=new Array(v);for(let P=0;P<v;P++){const C={};for(const l in m)C[l]=m[l][P];b[P]=C}return b}function a(m,v){const b={...m};for(const P of v)delete b[P];return b}function d(m,v){const b={};for(let P=0;P<m.length;P++)b[m[P]]=v[P];return b}function p(m){return typeof m=="object"&&m!==null&&!Array.isArray(m)}async function u(m){const v=Object.keys(m),b=Object.values(m),P=await Promise.all(b);return d(v,P)}return Jr}var NV;function HZ(){if(NV)return vm;NV=1,Object.defineProperty(vm,"__esModule",{value:!0}),vm.canonicalJsonString=t,vm.onelinerJsonString=r;const e=vr();function t(i){return JSON.stringify(i,(c,o)=>(0,e.isPlainObject)(o)?n(o):o)}function r(i){return JSON.stringify(i,void 0,"	").replace(/,\n\t*/g,", ").replace(/\n\t*/g,"")}function n(i){const c={};for(const o of Object.keys(i).sort()){const s=i[o];s!==void 0&&(c[o]=s)}return c}return vm}var qV;function Vt(){if(qV)return hr;qV=1,Object.defineProperty(hr,"__esModule",{value:!0}),hr.arrayMax=t,hr.arrayMin=r,hr.arrayMinMax=n,hr.arraySum=i,hr.arrayMean=c,hr.arrayRms=o,hr.fillSerial=s,hr.arrayRemoveInPlace=h,hr.arrayRemoveAtInPlace=f,hr.arraySetAdd=y,hr.arraySetRemove=_,hr.arrayAreIntersecting=g,hr.arrayIntersectionSize=a,hr.arrayEqual=d,hr.arrayIsIdentity=p,hr.arrayMapUpsert=u,hr.range=m,hr.arrayExtend=v,hr.sortIfNeeded=b,hr.arrayIsSorted=P,hr.filterInPlace=C,hr.arrayDistinct=l,hr.arrayCopyOffset=S;const e=HZ();function t(T){let A=-1/0;for(let x=0,M=T.length;x<M;++x)T[x]>A&&(A=T[x]);return A}function r(T){let A=1/0;for(let x=0,M=T.length;x<M;++x)T[x]<A&&(A=T[x]);return A}function n(T){let A=1/0,x=-1/0;for(let M=0,D=T.length;M<D;++M)T[M]<A&&(A=T[M]),T[M]>x&&(x=T[M]);return[A,x]}function i(T,A=1,x=0){const M=T.length;let D=0;for(let V=x;V<M;V+=A)D+=T[V];return D}function c(T,A=1,x=0){return i(T,A,x)/(T.length/A)}function o(T){const A=T.length;let x=0;for(let M=0;M<A;++M){const D=T[M];x+=D*D}return Math.sqrt(x/A)}function s(T,A){for(let x=0,M=A?Math.min(A,T.length):T.length;x<M;++x)T[x]=x;return T}function h(T,A){let x=0,M=!1;for(const D=T.length;x<D;x++)if(T[x]===A){M=!0;break}return M?(f(T,x),!0):!1}function f(T,A){for(let x=A,M=T.length-1;x<M;x++)T[x]=T[x+1];T.pop()}function y(T,A){return T.indexOf(A)>=0?!1:(T.push(A),!0)}function _(T,A){const x=T.indexOf(A);if(x<0)return!1;for(let M=x,D=T.length-1;M<D;M++)T[M]=T[M+1];return T.pop(),!0}function g(T,A){for(let x=0,M=T.length;x<M;++x)if(A.includes(T[x]))return!0;return!1}function a(T,A){let x=0;for(let M=0,D=T.length;M<D;
3++M)A.includes(T[M])&&(x+=1);return x}function d(T,A){if(!T||T.length===0)return!A||A.length===0;if(!A)return!1;const x=T.length;if(x!==A.length)return!1;for(let M=0;M<x;M++)if(T[M]!==A[M])return!1;return!0}function p(T){for(let A=0,x=T.length;A<x;A++)if(T[A]!==A)return!1;return!0}function u(T,A,x){for(let M=0,D=T.length;M<D;++M)if(T[M][0]===A){T[M][1]=x;return}T.push([A,x])}function m(T,A){A===void 0&&(A=T,T=0);const x=Math.max(A-T,0),M=Array(x);for(let D=0;D<x;D++)M[D]=T+D;return M}function v(T,A){const x=T.length,M=A.length;T.length+=M;for(let D=0;D<M;D++)T[x+D]=A[D];return T}function b(T,A){return P(T,A)?T:T.sort(A)}function P(T,A){for(let x=1,M=T.length;x<M;x++)if(A(T[x-1],T[x])>0)return!1;return!0}function C(T,A){const x=T.length;let M=0;for(let D=0;D<x;D++)A(T[D])&&(T[M++]=T[D]);return T.length=M,T}function l(T){const A=new Set,x=[];for(const M of T){const D=(0,e.canonicalJsonString)(M);A.has(D)||(A.add(D),x.push(M))}return x}function S(T,A,x,M,D){for(let V=0;V<D;V++)T[x+V]=A[M+V];return T}return hr}var UV;function WZ(){if(UV)return ym;UV=1,Object.defineProperty(ym,"__esModule",{value:!0}),ym.calcModelCenter=r,ym.getAsymIdCount=n;const e=Ge(),t=Vt();function r(i,c){const o=[],s=[],h=[];i.x.length&&(o.push(...(0,t.arrayMinMax)(i.x)),s.push(...(0,t.arrayMinMax)(i.y)),h.push(...(0,t.arrayMinMax)(i.z))),c&&(c.spheres.x.length&&(o.push(...(0,t.arrayMinMax)(c.spheres.x)),s.push(...(0,t.arrayMinMax)(c.spheres.y)),h.push(...(0,t.arrayMinMax)(c.spheres.z))),c.gaussians.x.length&&(o.push(...(0,t.arrayMinMax)(c.gaussians.x)),s.push(...(0,t.arrayMinMax)(c.gaussians.y)),h.push(...(0,t.arrayMinMax)(c.gaussians.z))));const[f,y]=(0,t.arrayMinMax)(o),[_,g]=(0,t.arrayMinMax)(s),[a,d]=(0,t.arrayMinMax)(h),p=f+(y-f)/2,u=_+(g-_)/2,m=a+(d-a)/2;return e.Vec3.create(p,u,m)}function n(i){const c=new Set,o=new Set;return i.properties.structAsymMap.forEach(({auth_id:s},h)=>{c.add(s),o.add(h)}),{auth:c.size,label:o.size}}return ym}var F2={},bm={},gc={},_m={},jV;function W$(){if(jV)return _m;jV=1,Object.defineProperty(_m,"__esModule",{value:!0}),_m.Scheduler=void 0;function e(){const i=(function(){const b=typeof window<"u"&&window,P=typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self;return b||typeof eV<"u"&&eV||P})(),c={},o=typeof document<"u"?document:void 0;let s=1,h;function f(b,...P){typeof b!="function"&&(b=new Function(""+b));const C={callback:b,args:P};return c[s]=C,h(s),s++}function y(b){delete c[b]}function _(b){const P=b.callback,C=b.args;switch(C.length){case 0:P();break;case 1:P(C[0]);break;case 2:P(C[0],C[1]);break;case 3:P(C[0],C[1],C[2]);break;default:P.apply(void 0,C);break}}function g(b){const P=c[b];y(b),_(P)}function a(){h=function(b){process.nextTick(function(){g(b)})}}function d(){if(i&&i.postMessage&&!i.importScripts){let b=!0;const P=i.onmessage;return i.onmessage=function(){b=!1},i.postMessage("","*"),i.onmessage=P,b}}function p(){const b="setImmediate$"+Math.random()+"$",P=function(C){C.source===i&&typeof C.data=="str
3ing"&&C.data.indexOf(b)===0&&g(+C.data.slice(b.length))};window.addEventListener?window.addEventListener("message",P,!1):window.attachEvent("onmessage",P),h=function(C){window.postMessage(b+C,"*")}}function u(){const b=new MessageChannel;b.port1.onmessage=function(P){const C=P.data;g(C)},h=function(P){b.port2.postMessage(P)}}function m(){const b=o.documentElement;h=function(P){let C=o.createElement("script");C.onreadystatechange=function(){g(P),C.onreadystatechange=null,b.removeChild(C),C=null},b.appendChild(C)}}function v(){h=function(b){setTimeout(g,0,b)}}return typeof process<"u"&&{}.toString.call(process)==="[object process]"?a():d()?p():typeof MessageChannel<"u"?u():o&&"onreadystatechange"in o.createElement("script")?m():v(),{setImmediate:f,clearImmediate:y}}const t=(function(){return typeof setImmediate<"u"?typeof window<"u"?{setImmediate:(i,...c)=>window.setImmediate(i,...c),clearImmediate:i=>window.clearImmediate(i)}:{setImmediate,clearImmediate}:e()})();function r(i){t.setImmediate(i)}const n={setImmediate:t.setImmediate,clearImmediate:t.clearImmediate,immediatePromise(){return new Promise(r)},delay(i,c=void 0){return new Promise(o=>setTimeout(o,i,c))}};return _m.Scheduler=n,_m}var Sm={},dn={},GV;function Ct(){if(GV)return dn;GV=1;var e={};Object.defineProperty(dn,"__esModule",{value:!0}),dn.isTimingMode=dn.isDebugMode=dn.isProductionMode=void 0,dn.setProductionMode=i,dn.setDebugMode=c,dn.setTimingMode=o,dn.addConsoleStatsProvider=h,dn.removeConsoleStatsProvider=f,dn.consoleStats=y;let t=(function(){try{return!0}catch{return!1}})();dn.isProductionMode=t;let r=(function(){try{const g=e.DEBUG;return g==="*"||g==="molstar"}catch{return!1}})();dn.isDebugMode=r;let n=!1;dn.isTimingMode=n;function i(_){typeof _<"u"&&(dn.isProductionMode=t=_)}function c(_){typeof _<"u"&&(dn.isDebugMode=r=_)}function o(_){typeof _<"u"&&(dn.isTimingMode=n=_)}const s=[];function h(_){s.includes(_)||s.push(_)}function f(_){const g=s.indexOf(_);g!==-1&&s.splice(g,1)}function y(){for(const _ of s)_()}return dn}var zV;function $Z(){if(zV)return Sm;zV=1,Object.defineProperty(Sm,"__esModule",{value:!0}),Sm.UserTiming=void 0;const e=Ct(),r=typeof performance<"u"&&!!performance.mark&&performance.measure&&e.isTimingMode;var n;return(function(i){function c(y){return`startTask${y.id}`}function o(y){return`endTask${y.id}`}function s(y){r&&performance.mark(c(y))}i.markStart=s;function h(y){r&&performance.mark(o(y))}i.markEnd=h;function f(y){r&&performance.measure(`✳️ ${y.name}`,c(y),o(y))}i.measure=f})(n||(Sm.UserTiming=n={})),Sm}var HV;function $$(){if(HV)return gc;HV=1,Object.defineProperty(gc,"__esModule",{value:!0}),gc.ExecuteObservable=i,gc.CreateObservableCtx=c,gc.ExecuteInContext=o,gc.ExecuteObservableChild=s;const e=RD(),t=ci(),r=W$(),n=$Z();function i(b,P,C=250){const l=f(b,P,C),S=new v(l,l.root);return d(b,S)}function c(b,P,C=250){const l=f(b,P,C);return new v(l,l.root)}function o(b,P){return d(P,b)}function s(b,P,C){return b.runChild(P,C)}function h(b){return{taskId:b.id,taskName:b.name,message:"",startedTime:0,canAbort:!0,isIndeterminate:!0,current:0,max:0}}function f(b,P,C){const l={abortRequested:!1,treeAborted:!1,reason:""};return{updateRateMs:C,lastNotified:(0,t.now)(),observer:P,abortToken:l,taskId:b.id,root:{progress:h(b),children:[]},tryAbort:y(l)}}function y(b){return P=>{b.abortRequested=!0,b.reason=P||b.reason}}function _(b){return{progress:{...b.progress},children:b.children.map(_)}}function g(b){return b.progress.canAbort&&b.children.every(g)}function a(b){return{root:_(b.root),canAbort:g(b.root),requestAbort:b.tryAbort}}async function d(b,P){n.UserTiming.markStart(b),P.node.progress.startedTime=(0,t.now)();try{const C=await b.f(P);return n.UserTiming.markEnd(b),n.UserTiming.measure(b),P.info.abortToken.abortRequested&&p(P.info),C}catch(C){throw e.Task.isAbort(C)&&(P.isAborted=!0,P.node.children.length>0&&await new Promise(l=>{P.onChildrenFinished=l}),b.onAbort&&b.onAbort()),C}}function p(b){throw b.abortToken.treeAborted||(b.abortToken.treeAborted=!0,u(b.root),m(b,(0,t.now)())),e.Task.Aborted(b.abortToken.reason)}function u(b){const P=b.progress;P.isIndeterminate=!0,P.canAbort=!1,P.message="Aborting...";for(const C of b.children)u(C)}function m(b,P){b.lastNotified=P;const C=a(b);b.observer(C)}class v{checkAborted(){this.info.abortToken.abortRequested&&(this.isAborted=!0,p(this.info))}get shouldUpdate(){return this.checkAborted(),(0,t.now)()-this.lastUpdatedTime>this.info.updateRateMs}updateProgress(P){if(this.checkAborted(),!P)return;const C=this.node.progress;typeof P=="string"?(C.message=P,C.isIndeterminate=!0):(typeof P.canAbort<"u"&&(C.canAbort=P.canAbort),typeof P.message<"u"&&(C.message=P.message),typeof P.current<"u"&&(C.current=P.current),t
3ypeof P.max<"u"&&(C.max=P.max),C.isIndeterminate=typeof C.current>"u"||typeof C.max>"u",typeof P.isIndeterminate<"u"&&(C.isIndeterminate=P.isIndeterminate))}update(P,C){if(this.lastUpdatedTime=(0,t.now)(),this.updateProgress(P),!C)return m(this.info,this.lastUpdatedTime),this.checkAborted(),r.Scheduler.immediatePromise()}async runChild(P,C){this.updateProgress(C);const l={progress:h(P),children:[]},S=this.node.children;S.push(l);const T=new v(this.info,l);try{return await d(P,T)}catch(A){if(e.Task.isAbort(A)&&this.isAborted)return;throw A}finally{const A=S.indexOf(l);if(A>=0){for(let x=A,M=S.length-1;x<M;x++)S[x]=S[x+1];S.pop()}S.length===0&&this.onChildrenFinished&&this.onChildrenFinished()}}constructor(P,C){this.isSynchronous=!1,this.isExecuting=!0,this.lastUpdatedTime=0,this.onChildrenFinished=void 0,this.node=C,this.info=P}}return gc}var yc={},WV;function X$(){if(WV)return yc;WV=1,Object.defineProperty(yc,"__esModule",{value:!0}),yc.SyncRuntimeContext=yc.SynchronousRuntimeContext=void 0;class e{constructor(){this.shouldUpdate=!1,this.isSynchronous=!0}update(r,n){}}return yc.SynchronousRuntimeContext=e,yc.SyncRuntimeContext=new e,yc}var $V;function RD(){if($V)return bm;$V=1,Object.defineProperty(bm,"__esModule",{value:!0}),bm.Task=void 0;const e=$$(),t=X$(),r=Yn();var n;return(function(i){class c{run(u,m=250){return u?(0,e.ExecuteObservable)(this,u,m):this.f(t.SyncRuntimeContext)}runAsChild(u,m){return u.isSynchronous?this.f(t.SyncRuntimeContext):(0,e.ExecuteObservableChild)(u,this,m)}runInContext(u){return u.isSynchronous?this.f(t.SyncRuntimeContext):(0,e.ExecuteInContext)(u,this)}constructor(u,m,v){this.name=u,this.f=m,this.onAbort=v,this.id=d()}}function o(p){const u=p;return!!p&&typeof u.id=="number"&&typeof u.name=="string"&&!!u.run}i.is=o;function s(p){return!!p&&!!p.isAborted}i.isAbort=s;function h(p){return{isAborted:!0,reason:p,toString(){return`Aborted${p?": "+p:""}`}}}i.Aborted=h;function f(p,u,m){return new c(p,u,m)}i.create=f;function y(p,u){return f(p,async m=>u)}i.constant=y;function _(){return f("",async p=>{})}i.empty=_;function g(p,u){return f(p,async m=>{throw new Error(u)})}i.fail=g;function a(p,u){return o(p)?u?p.runInContext(u):p.run():p}i.resolveInContext=a;const d=(0,r.idFactory)(0,1073741823)})(n||(bm.Task=n={})),bm}var Cm={},XV;function XZ(){if(XV)return Cm;XV=1,Object.defineProperty(Cm,"__esModule",{value:!0}),Cm.RuntimeContext=void 0;const e=X$();var t;return(function(r){r.Synchronous=e.SyncRuntimeContext})(t||(Cm.RuntimeContext=t={})),Cm}var Pm={},KV;function KZ(){if(KV)return Pm;KV=1,Object.defineProperty(Pm,"__esModule",{value:!0}),Pm.Progress=void 0;var e;return(function(t){function r(i,c=""){const o=i.progress;if(!i.children.length)return o.isIndeterminate?`${c}${o.taskName}: ${o.message}`:`${c}${o.taskName}: [${o.current}/${o.max}] ${o.message}`;const s=c+"  |_ ",h=i.children.map(f=>r(f,s));return o.isIndeterminate?`${c}${o.taskName}: ${o.message}
4${h.join(`
5`)}`:`${c}${o.taskName}: [${o.current}/${o.max}] ${o.message}
6${h.join(`
7`)}`}function n(i){return r(i.root)}t.format=n})(e||(Pm.Progress=e={})),Pm}var oC={},YV;function YZ(){if(YV)return oC;YV=1,Object.defineProperty(oC,"__esModule",{value:!0}),oC.MultistepTask=t;const e=RD();function t(r,n,i,c){return o=>e.Task.create(r,async s=>i(o,h=>s.update({message:`${n[h]}`,current:h+1,max:n.length}),s),c)}return oC}var sC={},QV;function K$(){if(QV)return sC;QV=1,Object.defineProperty(sC,"__esModule",{value:!0}),sC.chunkedSubtask=t;const e=ci();async function t(r,n,i,c,o){let s=Math.max(n,0),h=0,f=0;if(r.isSynchronous)return c(Number.MAX_SAFE_INTEGER,i),i;let y=(0,e.now)(),_=0,g=0;for(;(_=c(s,i))>0;){h+=_;const a=(0,e.now)()-y;g+=a,f+=a,r.shouldUpdate&&(await o(r,i,h),s=Math.round(g*h/f)+1,y=(0,e.now)(),g=0)}return r.shouldUpdate&&await o(r,i,h),i}return sC}var ZV;function nt(){return ZV||(ZV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.chunkedSubtask=e.MultistepTask=e.Scheduler=e.Progress=e.RuntimeContext=e.Task=void 0;const t=RD();Object.defineProperty(e,"Task",{enumerable:!0,get:function(){return t.Task}});const r=XZ();Object.defineProperty(e,"RuntimeContext",{enumerable:!0,get:function(){return r.RuntimeContext}});const n=KZ();Object.defineProperty(e,"Progress",{enumerable:!0,get:function(){return n.Progress}});const i=W$();Object.defineProperty(e,"Scheduler",{enumerable:!0,get:function(){return i.Scheduler}});const c=YZ();Object.defineProperty(e,"MultistepTask",{enumerable:!0,get:function(){return c.MultistepTask}});const o=K$();Object.defineProperty(e,"chunkedSubtask",{enumerable:!0,get:function(){return o.chunkedSubtask}})})(F2)),F2}var Tm={},L2={},xm={},N2={},Am={},JV;function QZ(){if(JV)return Am;
7JV=1,Object.defineProperty(Am,"__esModule",{value:!0}),Am.ChunkedArray=void 0;var e;return(function(t){function r(a){return a.creator&&a.chunkSize}t.is=r;function n(a){const d=a.growBy*a.elementSize;a.currentSize=d,a.currentIndex=0,a.currentChunk=new a.ctor(d),a.allocatedSize+=d,a.chunks[a.chunks.length]=a.currentChunk}function i(a,d,p,u,m){a.currentIndex>=a.currentSize&&n(a);const v=a.currentChunk,b=a.currentIndex;return v[b]=d,v[b+1]=p,v[b+2]=u,v[b+3]=m,a.currentIndex+=4,a.elementCount++}t.add4=i;function c(a,d,p,u){a.currentIndex>=a.currentSize&&n(a);const m=a.currentChunk,v=a.currentIndex;return m[v]=d,m[v+1]=p,m[v+2]=u,a.currentIndex+=3,a.elementCount++}t.add3=c;function o(a,d,p){a.currentIndex>=a.currentSize&&n(a);const u=a.currentChunk,m=a.currentIndex;return u[m]=d,u[m+1]=p,a.currentIndex+=2,a.elementCount++}t.add2=o;function s(a,d){return a.currentIndex>=a.currentSize&&n(a),a.currentChunk[a.currentIndex]=d,a.currentIndex+=1,a.elementCount++}t.add=s;function h(a,d,p){for(let u=0;u<d;u++)a.currentIndex>=a.currentSize&&n(a),a.currentChunk[a.currentIndex++]=p,a.elementCount++;return a.elementCount}t.addRepeat=h;function f(a,d){const{elementSize:p}=a;for(let u=0,m=d.length;u<m;u+=p){a.currentIndex>=a.currentSize&&n(a);const{currentChunk:v}=a;for(let b=0;b<p;b++)v[a.currentIndex++]=d[u+b];a.elementCount++}return a.elementCount}t.addMany=f;function y(a,d=!1){return _(a,d)}t.compact=y;function _(a,d){const{ctor:p,chunks:u,currentIndex:m}=a;if(!u.length)return new p(0);if(u.length===1&&(d||m===a.allocatedSize))return u[0];let v=0;for(let l=0,S=u.length-1;l<S;l++)v+=u[l].length;v+=a.currentIndex;const b=new p(v);let P=0;if(b.buffer)for(let l=0,S=u.length-1;l<S;l++)b.set(u[l],P),P+=u[l].length;else for(let l=0,S=u.length-1;l<S;l++){const T=u[l];for(let A=0,x=T.length;A<x;A++)b[P+A]=T[A];P+=T.length}const C=u[u.length-1];if(b.buffer&&m>=a.currentSize)b.set(C,P);else for(let l=0,S=C.length;l<S;l++)b[P+l]=C[l];return b}t._compact=_;function g(a,d,p,u){const m={ctor:a,elementSize:d,growBy:Math.max(1,Math.ceil(p)),allocatedSize:0,elementCount:0,currentSize:0,currentChunk:void 0,currentIndex:0,chunks:[]};if(typeof u>"u")return m;if(typeof u=="number")return m.currentChunk=new a(u*d),m.allocatedSize=u*d,m.currentSize=m.currentChunk.length,m.chunks[0]=m.currentChunk,m;const v=u;if(v.length%d!==0)throw new Error("initialChunk length must be a multiple of the element size.");return m.currentChunk=v,m.allocatedSize=v.length,m.currentSize=v.length,m.chunks[0]=v,m}t.create=g})(e||(Am.ChunkedArray=e={})),Am}var cC={},eE;function ZZ(){if(eE)return cC;eE=1,Object.defineProperty(cC,"__esModule",{value:!0}),cC.makeBuckets=n;const e=gT();function t(i,c,o){return i[c].key<i[o].key?-1:1}function r(i,c,o,s,h){const f=new Map,y=[];let _=c(i[0]),g=!0;for(let m=s;m<h;m++){const v=c(i[m]);if(f.has(v))f.get(v).count++,_!==v&&(g=!1);else{const b={key:v,count:1,offset:m};f.set(v,b),y[y.length]=b}_=v}const a=new Int32Array(y.length+1);a[y.length]=h;let d=!0;if(o){for(let m=1,v=y.length;m<v;m++)if(y[m-1].key>y[m].key){d=!1;break}}if(g&&d){for(let m=0;m<y.length;m++)a[m]=y[m].offset;return a}o&&!d&&(0,e.sort)(y,0,y.length,t,e.arraySwap);let p=0;for(let m=0;m<y.length;m++){const v=y[m];v.offset=p,p+=v.count}const u=new Int32Array(h-s);for(let m=s;m<h;m++){const v=c(i[m]),b=f.get(v);u[b.offset++]=i[m]}for(let m=0,v=u.length;m<v;m++)i[m+s]=u[m];a[0]=s;for(let m=1;m<y.length;m++)a[m]=y[m-1].offset+s;return a}function n(i,c,o){const s=o&&o.start||0,h=o&&o.end||i.length;if(h-s<=0)throw new Error("Can only bucket non-empty collections.");return r(i,c,!!(o&&o.sort),s,h)}return cC}var Zl={},tE;function JZ(){if(tE)return Zl;tE=1,Object.defineProperty(Zl,"__esModule",{value:!0}),Zl.EquivalenceClassesImpl=void 0,Zl.EquivalenceClasses=t;class e{createGroup(n,i){const c=this.id++,o=[n];return this.groups[c]=o,{id:c,keys:o,value:i}}add(n,i){const c=this.getHash(i);if(this.byHash.has(c)){const o=this.byHash.get(c);for(let h=0,f=o.length;h<f;h++){const y=o[h];if(this.areEqual(i,y.value))return y.keys[y.keys.length]=n,y.value}const s=this.createGroup(n,i);return o[o.length]=s,s.value}else{const o=this.createGroup(n,i);return this.byHash.set(c,[o]),o.value}}constructor(n,i){this.getHash=n,this.areEqual=i,this.id=0,this.byHash=new Map,this.groups=[]}}Zl.EquivalenceClassesImpl=e;function t(r,n){return new e(r,n)}return Zl}var wr={},rE;function Dn(){if(rE)return wr;
7rE=1,Object.defineProperty(wr,"__esModule",{value:!0}),wr.PCG=void 0,wr.hash1=e,wr.hash2=t,wr.hash3=r,wr.hash4=n,wr.hashString=i,wr.cantorPairing=c,wr.sortedCantorPairing=o,wr.invertCantorPairing=s,wr.hashFnv32a=h,wr.hashFnv256a=f,wr.hashFnv256o=y,wr.hashMurmur32o=P,wr.hashMurmur128o=C,wr.murmurHash3_32=l,wr.murmurHash3_128_fromBytes=S,wr.murmurHash3_128=T,wr.mortonOrder3d=x,wr.invertMortonOrder3d=M;function e(D){let V=D^D>>4;return V=(V^3735928559)+(V<<5),V=V^V>>11,V}function t(D,V){let R=23;return R=31*R+D|0,R=31*R+V|0,R=R^R>>4,R=(R^3735928559)+(R<<5),R=R^R>>11,R}function r(D,V,R){let E=23;return E=31*E+D|0,E=31*E+V|0,E=31*E+R|0,E=E^E>>4,E=(E^3735928559)+(E<<5),E=E^E>>11,E}function n(D,V,R,E){let I=23;return I=31*I+D|0,I=31*I+V|0,I=31*I+R|0,I=31*I+E|0,I=I^I>>4,I=(I^3735928559)+(I<<5),I=I^I>>11,I}function i(D){let V=0;for(let R=0,E=D.length;R<E;R++)V=(V<<5)-V+D.charCodeAt(R)|0;return V}function c(D,V){return(D+V)*(D+V+1)/2+V}function o(D,V){return D<V?c(D,V):c(V,D)}function s(D,V){const R=Math.floor((Math.sqrt(8*V+1)-1)/2),E=(R*R+R)/2,I=V-E;return D[0]=R-I,D[1]=I,D}function h(D){let V=2166136261;for(let R=0,E=D.length;R<E;++R)V^=D[R],V+=(V<<1)+(V<<4)+(V<<7)+(V<<8)+(V<<24);return V>>>0}function f(D,V){V.set(a);for(let R=0,E=D.length;R<E;++R)V[0]^=D[R]&255,u(V);return V}function y(D){return g.hash(D)}class _{constructor(){this.hashTarget=new Uint32Array(8),this.numberBytes=new Uint8Array(8),this.numberView=new DataView(this.numberBytes.buffer)}hash(V){return this.hashTarget.set(a),this.hashValue(V,0),b(this.hashTarget)}hashValue(V,R){if(R>50)return;const E=typeof V;switch(this.addByte(E.charCodeAt(0)),E){case"string":this.addString(V);break;case"number":this.addNumber(V);break;case"boolean":this.addByte(V?1:0);break;case"object":V===null?this.addByte(0):Array.isArray(V)?this.addArray(V,R):this.addObject(V,R);break;case"undefined":this.addByte(255);break}}addByte(V){this.hashTarget[0]^=V&255,u(this.hashTarget)}addString(V){for(let R=0;R<V.length;R++){const E=V.charCodeAt(R);E<128?this.addByte(E):E<2048?(this.addByte(192|E>>6),this.addByte(128|E&63)):(this.addByte(224|E>>12),this.addByte(128|E>>6&63),this.addByte(128|E&63))}}addNumber(V){if(Number.isNaN(V))this.addByte(127),this.addByte(192),this.addByte(0),this.addByte(0),this.addByte(0),this.addByte(0),this.addByte(0),this.addByte(0);else if(!Number.isFinite(V))V>0?(this.addByte(127),this.addByte(128),this.addByte(0),this.addByte(0)):(this.addByte(255),this.addByte(128),this.addByte(0),this.addByte(0)),this.addByte(0),this.addByte(0),this.addByte(0),this.addByte(0);else{this.numberView.setFloat64(0,V,!1);for(let R=0;R<8;R++)this.addByte(this.numberBytes[R])}}addArray(V,R){this.addNumber(V.length);for(let E=0;E<V.length;E++)this.addNumber(E),this.hashValue(V[E],R+1)}addObject(V,R){const E=Object.keys(V).sort();this.addNumber(E.length);for(const I of E)this.addString(I),this.hashValue(V[I],R+1)}}const g=new _,a=new Uint32Array([1818371886,129696066,1656234357,1653982605,383153456,3715178979,3004645376,256]),d=new Uint32Array(8),p=new Uint32Array(8);function u(D){d[0]=0,d[1]=0,d[2]=D[0]<<24,d[3]=D[0]>>>8|D[1]<<24,d[4]=D[1]>>>8|D[2]<<24,d[5]=D[2]>>>8|D[3]<<24,d[6]=D[3]>>>8|D[4]<<24,d[7]=D[4]>>>8|D[5]<<24,p[0]=D[0]<<8,p[1]=D[0]>>>24|D[1]<<8,p[2]=D[1]>>>24|D[2]<<8,p[3]=D[2]>>>24|D[3]<<8,p[4]=D[3]>>>24|D[4]<<8,p[5]=D[4]>>>24|D[5]<<8,p[6]=D[5]>>>24|D[6]<<8,p[7]=D[6]>>>24|D[7]<<8;let V=0;for(let R=0;R<8;R++){const E=D[R]*59+V;D[R]=E>>>0,V=Math.floor(E/4294967296)}V=0;for(let R=0;R<8;R++){const E=D[R]+d[R]+p[R]+V;D[R]=E>>>0,V=E>=4294967296?1:0}}const m=["00000000","0000000","000000","00000","0000","000","00","0"];function v(D){const V=D.toString(16);return V.length>=8?V:m[V.length]+V}function b(D){let V="";for(let R=7;R>=0;R--)V+=v(D[R]);return V}function P(D,V=42){const R=JSON.stringify(D);return l(R,V)}function C(D,V=42){const R=JSON.stringify(D);return T(R,V)}function l(D,V){let R=V>>>0;const E=D.length%4,I=D.length-E;for(let w=0;w<I;w+=4){let O=D.charCodeAt(w)&255|(D.charCodeAt(w+1)&255)<<8|(D.charCodeAt(w+2)&255)<<16|(D.charCo
7deAt(w+3)&255)<<24;O=Math.imul(O,3432918353),O=O<<15|O>>>17,O=Math.imul(O,461845907),R^=O,R=R<<13|R>>>19,R=Math.imul(R,5)+3864292196}let B=0;switch(E){case 3:B^=(D.charCodeAt(I+2)&255)<<16;case 2:B^=(D.charCodeAt(I+1)&255)<<8;case 1:B^=D.charCodeAt(I)&255,B=Math.imul(B,3432918353),B=B<<15|B>>>17,B=Math.imul(B,461845907),R^=B}return R^=D.length,R^=R>>>16,R=Math.imul(R,2246822507),R^=R>>>13,R=Math.imul(R,3266489909),R^=R>>>16,R>>>0}function S(D,V){const R={length:D.length,charCodeAt(E){return D[E]}};return T(R,V)}function T(D,V){let R=V>>>0,E=V>>>0,I=V>>>0,B=V>>>0;const w=D.length%16,O=D.length-w;for(let N=0;N<O;N+=16){let k=D.charCodeAt(N)&255|(D.charCodeAt(N+1)&255)<<8|(D.charCodeAt(N+2)&255)<<16|(D.charCodeAt(N+3)&255)<<24,j=D.charCodeAt(N+4)&255|(D.charCodeAt(N+5)&255)<<8|(D.charCodeAt(N+6)&255)<<16|(D.charCodeAt(N+7)&255)<<24,H=D.charCodeAt(N+8)&255|(D.charCodeAt(N+9)&255)<<8|(D.charCodeAt(N+10)&255)<<16|(D.charCodeAt(N+11)&255)<<24,G=D.charCodeAt(N+12)&255|(D.charCodeAt(N+13)&255)<<8|(D.charCodeAt(N+14)&255)<<16|(D.charCo
7deAt(N+15)&255)<<24;k=Math.imul(k,597399067),k=k<<15|k>>>17,k=Math.imul(k,2869860233),R^=k,R=R<<19|R>>>13,R+=E,R=Math.imul(R,5)+1444728091,j=Math.imul(j,2869860233),j=j<<16|j>>>16,j=Math.imul(j,951274213),E^=j,E=E<<17|E>>>15,E+=I,E=Math.imul(E,5)+197830471,H=Math.imul(H,951274213),H=H<<17|H>>>15,H=Math.imul(H,2716044179),I^=H,I=I<<15|I>>>17,I+=B,I=Math.imul(I,5)+2530024501,G=Math.imul(G,2716044179),G=G<<13|G>>>19,G=Math.imul(G,597399067),B^=G,B=B<<13|B>>>19,B+=R,B=Math.imul(B,5)+850148119}let F=0,L=0,U=0,q=0;switch(w){case 15:q^=D.charCodeAt(O+14)<<16;case 14:q^=D.charCodeAt(O+13)<<8;case 13:q^=D.charCodeAt(O+12),q=Math.imul(q,2716044179),q=q<<13|q>>>19,q=Math.imul(q,597399067),B^=q;case 12:U^=D.charCodeAt(O+11)<<24;case 11:U^=D.charCodeAt(O+10)<<16;case 10:U^=D.charCodeAt(O+9)<<8;case 9:U^=D.charCodeAt(O+8),U=Math.imul(U,951274213),U=U<<17|U>>>15,U=Math.imul(U,2716044179),I^=U;case 8:L^=D.charCodeAt(O+7)<<24;case 7:L^=D.charCodeAt(O+6)<<16;case 6:L^=D.charCodeAt(O+5)<<8;case 5:L^=D.charCodeAt(O+4),L=Math.imul(L,2869860233),L=L<<16|L>>>16,L=Math.imul(L,951274213),E^=L;case 4:F^=D.charCodeAt(O+3)<<24;case 3:F^=D.charCodeAt(O+2)<<16;case 2:F^=D.charCodeAt(O+1)<<8;case 1:F^=D.charCodeAt(O),F=Math.imul(F,597399067),F=F<<15|F>>>17,F=Math.imul(F,2869860233),R^=F}return R^=D.length,E^=D.length,I^=D.length,B^=D.length,R+=E,R+=I,R+=B,E+=R,I+=R,B+=R,R^=R>>>16,R=Math.imul(R,2246822507),R^=R>>>13,R=Math.imul(R,3266489909),R^=R>>>16,E^=E>>>16,E=Math.imul(E,2246822507),E^=E>>>13,E=Math.imul(E,3266489909),E^=E>>>16,I^=I>>>16,I=Math.imul(I,2246822507),I^=I>>>13,I=Math.imul(I,3266489909),I^=I>>>16,B^=B>>>16,B=Math.imul(B,2246822507),B^=B>>>13,B=Math.imul(B,3266489909),B^=B>>>16,R+=E,R+=I,R+=B,E+=R,I+=R,B+=R,(R>>>0).toString(16).padStart(8,"0")+(E>>>0).toString(16).padStart(8,"0")+(I>>>0).toString(16).padStart(8,"0")+(B>>>0).toString(16).padStart(8,"0")}class A{constructor(V=26699){this.state=V>>>0}int(){const V=this.state;this.state=Math.imul(this.state,1664525)+1013904223,this.state=this.state>>>0;const R=(V>>>18^V)>>>5,E=V>>>27;return(R>>>E|R<<32-E)>>>0}float(){return this.int()/4294967296}}wr.PCG=A;function x(D,V,R){let E=0;for(let I=0;I<21;++I)E|=(D>>I&1)<<3*I+2,E|=(V>>I&1)<<3*I+1,E|=(R>>I&1)<<3*I;return E}function M(D){let V=0,R=0,E=0;for(let I=0;I<21;++I)V|=(D>>3*I+2&1)<<I,R|=(D>>3*I+1&1)<<I,E|=(D>>3*I&1)<<I;return[V,R,E]}return wr}var Mm={},nE;function eJ(){if(nE)return Mm;nE=1,Object.defineProperty(Mm,"__esModule",{value:!0}),Mm.Grouper=r,Mm.groupBy=n;const e=Z_();class t{add(c){const o=this.getKey(c);if(this.map.has(o)){const s=this.map.get(o);s[s.length]=c}else{const s=[c];this.map.set(o,s),this.keys[this.keys.length]=o,this.groups[this.groups.length]=s}}getGrouping(){return{keys:this.keys,groups:this.groups,map:this.map}}constructor(c){this.getKey=c,this.map=new Map,this.keys=[],this.groups=[]}}function r(i){return new t(i)}function n(i,c){const o=r(c);if(e.Column.is(i)){const s=i.value;for(let h=0,f=i.rowCount;h<f;h++)o.add(s(h))}else for(let s=0,h=i.length;s<h;s++)o.add(i[s]);return o.getGrouping()}return Mm}var bs={},iE;function vT(){if(iE)return bs;iE=1,Object.defineProperty(bs,"__esModule",{value:!0}),bs.arrayFind=e,bs.iterableToArray=t,bs.createRangeArray=r,bs.arrayPickIndices=n,bs.arrayGetCtor=i;function e(c,o){for(let s=0,h=c.length;s<h;s++)if(o(c[s]))return c[s]}function t(c){if(Array.from)return Array.from(c);const o=[];for(;;){const{done:s,value:h}=c.next();if(s)break;o[o.length]=h}return o}function r(c,o,s){const h=o-c+1,f=s?new s(h):new Int32Array(h);for(let y=0;y<h;y++)f[y]=y+c;return f}function n(c,o){const s=new(i(c))(o.length);for(let h=0,f=o.length;h<f;h++)s[h]=c[o[h]];return s}function i(c){const o=c.constructor;if(!o)throw new Error("data does not define a constructor and it should");return o}return bs}var aE;function _t(){return aE||(aE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(QZ(),e),t.__exportStar(ZZ(),e),t.__exportStar(JZ(),e),t.__exportStar(Dn(),e),t.__exportStar(gT(),e),t.__exportStar(eJ(),e),t.__exportStar(vT(),e)})(N2)),N2}var q2={},Dm={},U2={},Im={},oE;function OD(){if(oE)return Im;
7oE=1,Object.defineProperty(Im,"__esModule",{value:!0}),Im.IntTuple=void 0;const e=Dn();var t;return(function(r){r.Zero=0;const{_int32:n,_float64:i,_int32_1:c,_float64_1:o}=(function(){const m=new ArrayBuffer(8),v=new ArrayBuffer(8);return{_int32:new Int32Array(m),_float64:new Float64Array(m),_int32_1:new Int32Array(v),_float64_1:new Float64Array(v)}})();function s(m){return typeof m=="number"}r.is=s;function h(m,v){return n[0]=m,n[1]=v,i[0]}r.create=h;function f(m){return i[0]=m,n[1]-n[0]}r.diff=f;function y(m){return i[0]=m,n[0]}r.fst=y;function _(m){return i[0]=m,n[1]}r.snd=_;function g(m,v){return i[0]=m,o[0]=v,n[0]===c[0]&&n[1]===c[1]}r.areEqual=g;function a(m,v){i[0]=m,o[0]=v;const b=n[0]-c[0];return b!==0?b:n[1]-c[1]}r.compare=a;function d(m,v,b){i[0]=m[v],o[0]=m[b];const P=n[0]-c[0];return P!==0?P:n[1]-c[1]}r.compareInArray=d;function p(m){return i[0]=m,(0,e.hash2)(n[0],n[1])}r.hashCode=p;function u(m){return i[0]=m,`(${n[0]}, ${n[1]})`}r.toString=u})(t||(Im.IntTuple=t={})),Im}var sE;function tJ(){return sE||(sE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.areEqual=e.toString=e.hashCode=e.size=e.min=e.end=e.start=e.is=e.Empty=void 0,e.ofRange=r,e.ofBounds=n,e.ofLength=i,e.max=c,e.has=o,e.indexOf=s,e.getAt=h,e.areIntersecting=f,e.isSubInterval=y,e.findPredecessorIndex=_,e.findPredecessorIndexInInterval=g,e.findRange=a,e.intersect=d,e.intersectionSize=p,e.offset=u;const t=OD();e.Empty=t.IntTuple.Zero;function r(m,v){return v<m?t.IntTuple.create(m,m):t.IntTuple.create(m,v+1)}function n(m,v){return v<=m?t.IntTuple.create(m,m):t.IntTuple.create(m,v)}function i(m){return m<0?t.IntTuple.create(0,0):t.IntTuple.create(0,m)}e.is=t.IntTuple.is,e.start=t.IntTuple.fst,e.end=t.IntTuple.snd,e.min=t.IntTuple.fst;function c(m){return t.IntTuple.snd(m)-1}e.size=t.IntTuple.diff,e.hashCode=t.IntTuple.hashCode,e.toString=t.IntTuple.toString;function o(m,v){return t.IntTuple.fst(m)<=v&&v<t.IntTuple.snd(m)}function s(m,v){const b=(0,e.start)(m);return v>=b&&v<(0,e.end)(m)?v-b:-1}function h(m,v){return t.IntTuple.fst(m)+v}e.areEqual=t.IntTuple.areEqual;function f(m,v){const b=(0,e.size)(m),P=(0,e.size)(v);return b===0&&P===0?!0:b>0&&P>0&&c(m)>=(0,e.min)(v)&&(0,e.min)(m)<=c(v)}function y(m,v){return(0,e.size)(m)?(0,e.size)(v)?(0,e.start)(m)<=(0,e.start)(v)&&(0,e.end)(m)>=(0,e.end)(v):!0:(0,e.size)(v)===0}function _(m,v){const b=(0,e.start)(m);if(v<=b)return 0;const P=(0,e.end)(m);return v>=P?P-b:v-b}function g(m,v,b){const P=(0,e.start)(b),C=(0,e.start)(m);if(v<=P+C)return P;const l=(0,e.end)(b);return v>=l+C?l:v-C}function a(m,v,b){return n(_(m,v),_(m,b+1))}function d(m,v){return f(m,v)?n(Math.max((0,e.start)(m),(0,e.start)(v)),Math.min((0,e.end)(m),(0,e.end)(v))):e.Empty}function p(m,v){return(0,e.size)(a(m,(0,e.min)(v),c(v)))}function u(m,v){return t.IntTuple.create((0,e.start)(m)+v,(0,e.end)(m)+v)}})(U2)),U2}var cE;function In(){if(cE)return Dm;cE=1,Object.defineProperty(Dm,"__esModule",{value:!0}),Dm.Interval=void 0;const t=At.__importStar(tJ());var r;return(function(n){n.Empty=t.Empty,n.ofSingleton=i=>t.ofRange(i,i),n.ofRange=t.ofRange,n.ofBounds=t.ofBounds,n.ofLength=t.ofLength,n.is=t.is,n.has=t.has,n.indexOf=t.indexOf,n.getAt=t.getAt,n.start=t.start,n.end=t.end,n.min=t.min,n.max=t.max,n.size=t.size,n.hashCode=t.hashCode,n.toString=t.toString,n.areEqual=t.areEqual,n.areIntersecting=t.areIntersecting,n.isSubInterval=t.isSubInterval,n.findPredecessorIndex=t.findPredecessorIndex,n.findPredecessorIndexInInterval=t.findPredecessorIndexInInterval,n.findRange=t.findRange,n.intersectionSize=t.intersectionSize,n.intersect=t.intersect,n.offset=t.offset})(r||(Dm.Interval=r={})),Dm}var wm={},j2={},Vm={},G2={},uE;function rJ(){return uE||(uE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Empty=void 0,e.ofSingleton=c,e.ofSortedArray=o,e.ofUnsortedArray=s,e.ofRange=h,e.is=f,e.isRange=y,e.start=_,e.end=g,e.min=a,e.max=d,e.size=p,e.hashCode=u,e.toString=m,e.indexOf=v,e.indexOfInInterval=b,e.indexOfInRange=P,e.has=C,e.getAt=l,e.areEqual=S,e.findPredecessorIndex=T,e.findPredecessorIndexInInterval=A,e.findRange=x,e.areIntersecting=V,e.isSubset=R,e.union=E,e.intersectionSize=I,e.intersect=w,e.subtract=O,e.deduplicate=F,e.indicesOf=L;const t=vT(),r=Dn(),n=gT(),i=In();e.Empty=[];function c(N){return[N]}function o(N){return N}function s(N){return(0,n.sortArray)(N),N}function h(N,k){if(k<N)return[];const j=new Int32Array(k-N+1);for(let H=N;H<=k;H++)j[H-N]=H;return j}function f(N){return N&&(Array.isArray(N)||!!N.buffer)}function y(N){return N[N.length-1]-N[0]+1===N.length}function _(N){return N[0]}function g(N){return N[N.length-1]+1}function a(N){return N[0]}function d(N){return N[N.length-1]}function p(N){return N.length}function u(N){const k=N.length;return k?k>2?(0,r.hash4)(k,N[0],N[k-1],N[k>>1]):(0,r.hash3)(k,N[0],N[k-1]):0}function m(N){const k=N.length;return k>5?`[${N[0]}, ${N[1]}, ..., ${N[k-1]}
7], length ${k}`:`[${N.join(", ")}]`}function v(N,k){const j=N.length;return j===0?-1:N[0]<=k&&k<=N[j-1]?M(N,k,0,j):-1}function b(N,k,j){return P(N,k,i.Interval.start(j),i.Interval.end(j))}function P(N,k,j,H){return N.length===0||H<=j?-1:N[j]<=k&&k<=N[H-1]?M(N,k,j,H):-1}function C(N,k){return v(N,k)>=0}function l(N,k){return N[k]}function S(N,k){if(N===k)return!0;let j=N.length;if(j!==k.length||N[0]!==k[0]||N[j-1]!==k[j-1])return!1;if(y(N))return!0;j--;for(let H=1;H<j;H++)if(N[H]!==k[H])return!1;return!0}function T(N,k){return D(N,k,0,N.length)}function A(N,k,j){return D(N,k,i.Interval.start(j),i.Interval.end(j))}function x(N,k,j){return i.Interval.ofBounds(T(N,k),T(N,j+1))}function M(N,k,j,H){let G=j,z=H-1;for(;G<=z;){if(G+11>z){for(let Y=G;Y<=z;Y++)if(k===N[Y])return Y;return-1}const W=G+z>>1,X=N[W];if(k<X)z=W-1;else if(k>X)G=W+1;else return W}return-1}function D(N,k,j,H){if(j===H||N[j]>=k)return j;if(N[H-1]<k)return H;let G=j,z=H;for(;z-G>4;){const W=G+z>>1;N[W]>=k?z=W:G=W+1}for(let W=G;W<z;W++)if(N[W]>=k)return W;return z}function V(N,k){if(N===k)return!0;let{startI:j,startJ:H,endI:G,endJ:z}=q(N,k);for(;j<G&&H<z;){const W=N[j],X=k[H];if(W<X)j++;else if(W>X)H++;else return!0}return!1}function R(N,k){if(N===k)return!0;const j=k.length;let{startI:H,startJ:G,endI:z,endJ:W}=q(N,k);if(W-G<j||z-H<j)return!1;let X=0;for(;H<z&&G<W;){const Y=N[H],K=k[G];Y<K?H++:Y>K?G++:(H++,G++,X++)}return X===j}function E(N,k){if(N===k)return N;const j=N.length,H=k.length;if(j===0)return k;if(H===0)return N;if(N[0]>k[0])return E(k,N);const{startI:G,startJ:z,endI:W,endJ:X}=q(N,k),Y=B(N,k,G,z,W,X);if(Y===j&&Y===H||Y===H)return N;if(Y===j)return k;const K=new Int32Array(j+H-Y);let Q=0,J=0,ae=0;for(Q=0;Q<G;Q++)K[ae++]=N[Q];for(;J<X&&N[G]>k[J];)K[ae++]=k[J++];for(;Q<W&&J<X;){const te=N[Q],ne=k[J];te<ne?(K[ae++]=te,Q++):te>ne?(K[ae++]=ne,J++):(K[ae++]=te,Q++,J++)}for(;Q<W;Q++)K[ae++]=N[Q];for(;J<X;J++)K[ae++]=k[J];for(;Q<j;Q++)K[ae++]=N[Q];for(;J<H;J++)K[ae++]=k[J];return K}function I(N,k){if(N===k)return p(N);const{startI:j,startJ:H,endI:G,endJ:z}=q(N,k);return B(N,k,j,H,G,z)}function B(N,k,j,H,G,z){let W=j,X=H,Y=0;for(;W<G&&X<z;){const K=N[W],Q=k[X];K<Q?W++:K>Q?X++:(W++,X++,Y++)}return Y}function w(N,k){if(N===k)return N;const{startI:j,startJ:H,endI:G,endJ:z}=q(N,k),W=B(N,k,j,H,G,z),X=N.length,Y=k.length;if(!W)return e.Empty;if(W===X&&W===Y||W===Y)return k;if(W===X)return N;const K=new Int32Array(W);let Q=0,J=j,ae=H;for(;J<G&&ae<z;){const te=N[J],ne=k[ae];te<ne?J++:(te>ne||(K[Q++]=te,J++),ae++)}return K}function O(N,k){if(N===k)return e.Empty;const j=N.length,{startI:H,startJ:G,endI:z,endJ:W}=q(N,k);let X=H,Y=G,K=0;for(;X<z&&Y<W;){const ae=N[X],te=k[Y];ae<te?X++:ae>te?Y++:(X++,Y++,K++)}if(!K)return N;if(K>=j)return e.Empty;const Q=new Int32Array(j-K);let J=0;for(let ae=0;ae<H;ae++)Q[J++]=N[ae];for(X=H,Y=G;X<z&&Y<W;){const ae=N[X],te=k[Y];ae<te?(Q[J++]=ae,X++):(ae>te||X++,Y++)}for(;X<j;X++)Q[J++]=N[X];return Q}function F(N){if(N.length<2)return N;let k=1;for(let G=0,z=N.length-1;G<z;G++)N[G]!==N[G+1]&&k++;if(k===N.length)return N;const j=new Int32Array(k);let H=0;for(let G=0,z=N.length-1;G<z;G++)N[G]!==N[G+1]&&(j[H++]=N[G]);return j[H]=N[N.length-1],j}function L(N,k){if(S(N,k))return(0,t.createRangeArray)(0,N.length-1);const{startI:j,startJ:H,endI:G,endJ:z}=q(N,k);let W=j,X=H,Y=0;for(;W<G&&X<z;){const ae=N[W],te=k[X];ae<te?W++:ae>te?X++:(W++,X++,Y++)}const K=N.length;if(!Y)return e.Empty;if(Y===K)return(0,t.createRangeArray)(0,N.length-1);const Q=new Int32Array(Y);let J=0;for(W=j,X=H;W<G&&X<z;){const ae=N[W],te=k[X];ae<te?W++:(ae>te||(Q[J++]=W,W++),X++)}return Q}const U={startI:0,startJ:0,endI:0,endJ:0};function q(N,k){const j=N.length,H=k.length,G=j/H;return j>=128||H>=128||G<=.34||G>=2.99?(U.startI=T(N,_(k)),U.startJ=T(k,_(N)),U.endI=T(N,g(k)),U.endJ=T(k,g(N))):(U.startI=0,U.startJ=0,U.endI=j,U.endJ=H),U}})(G2)),G2}var lE;function Na(){if(lE)return Vm;lE=1,Object.defineProperty(Vm,"__esModule",{value:!0}),Vm.SortedArray=void 0;const t=At.__importStar(rJ());var r;return(function(n){n.Empty=t.Empty,n.ofUnsortedArray=t.ofUnsortedArray,n.ofSingleton=t.ofSingleton,n.ofSortedArray=t.ofSortedArray,n.ofRange=t.ofRange,n.ofBounds=(i,c)=>t.ofRange(i,c-1),n.is=t.is,n.isRange=t.isRange,n.has=t.has,n.indexOf=t.indexOf,n.indexOfInInterval=t.indexOfInInterval,n.indexOfInRange=t.indexOfInRange,n.start=t.start,n.end=t.end,n.min=t.min,n.max=t.max,n.size=t.size,n.hashCode=t.hashCode,n.toString=t.toString,n.areEqual=t.areEqual,n.areIntersecting=t.areIntersecting,n.isSubset=t.isSubset,n.union=t.union,n.intersect=t.intersect,n.subtract=t.subtract,n.findPredecessorIndex=t.findPredecessorIndex,n.findPredecessorIndexInInterval=t.findPredecessorIndexInInterval,n.findRange=t.findR
7ange,n.intersectionSize=t.intersectionSize,n.deduplicate=t.deduplicate,n.indicesOf=t.indicesOf})(r||(Vm.SortedArray=r={})),Vm}var dE;function nJ(){return dE||(dE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ofBounds=e.ofRange=e.ofSingleton=e.Empty=void 0,e.ofSortedArray=n,e.size=i,e.has=c,e.indexOf=o,e.getAt=s,e.min=h,e.max=f,e.start=y,e.end=_,e.isEmpty=g,e.hashCode=a,e.toString=d,e.areEqual=p,e.areIntersecting=u,e.isSubset=m,e.findPredecessorIndex=v,e.findPredecessorIndexInInterval=b,e.findRange=P,e.intersectionSize=C,e.union=l,e.intersect=S,e.subtract=T,e.forEach=U,e.forEachSegment=q,e.indexedIntersect=N;const t=Na(),r=In();e.Empty=r.Interval.Empty,e.ofSingleton=r.Interval.ofSingleton,e.ofRange=r.Interval.ofRange,e.ofBounds=r.Interval.ofBounds;function n(k){return k.length?t.SortedArray.isRange(k)?r.Interval.ofRange(k[0],k[k.length-1]):k:e.Empty}function i(k){return r.Interval.is(k)?r.Interval.size(k):t.SortedArray.size(k)}function c(k,j){return r.Interval.is(k)?r.Interval.has(k,j):t.SortedArray.has(k,j)}function o(k,j){return r.Interval.is(k)?r.Interval.indexOf(k,j):t.SortedArray.indexOf(k,j)}function s(k,j){return r.Interval.is(k)?r.Interval.getAt(k,j):k[j]}function h(k){return r.Interval.is(k)?r.Interval.min(k):t.SortedArray.min(k)}function f(k){return r.Interval.is(k)?r.Interval.max(k):t.SortedArray.max(k)}function y(k){return r.Interval.is(k)?r.Interval.start(k):t.SortedArray.start(k)}function _(k){return r.Interval.is(k)?r.Interval.end(k):t.SortedArray.end(k)}function g(k){return i(k)===0}function a(k){return r.Interval.is(k)?r.Interval.hashCode(k):t.SortedArray.hashCode(k)}function d(k){return r.Interval.is(k)?r.Interval.toString(k):t.SortedArray.toString(k)}function p(k,j){return r.Interval.is(k)?r.Interval.is(j)?r.Interval.areEqual(k,j):A(k,j):r.Interval.is(j)?A(j,k):t.SortedArray.areEqual(k,j)}function u(k,j){return r.Interval.is(k)?r.Interval.is(j)?r.Interval.areIntersecting(k,j):x(j,k):r.Interval.is(j)?x(k,j):t.SortedArray.areIntersecting(k,j)}function m(k,j){return r.Interval.is(k)?r.Interval.is(j)?r.Interval.isSubInterval(k,j):D(k,j):r.Interval.is(j)?M(k,j):t.SortedArray.isSubset(k,j)}function v(k,j){return r.Interval.is(k)?r.Interval.findPredecessorIndex(k,j):t.SortedArray.findPredecessorIndex(k,j)}function b(k,j,H){return r.Interval.is(k)?r.Interval.findPredecessorIndexInInterval(k,j,H):t.SortedArray.findPredecessorIndexInInterval(k,j,H)}function P(k,j,H){return r.Interval.is(k)?r.Interval.findRange(k,j,H):t.SortedArray.findRange(k,j,H)}function C(k,j){return r.Interval.is(k)?r.Interval.is(j)?r.Interval.intersectionSize(k,j):B(j,k):r.Interval.is(j)?B(k,j):t.SortedArray.intersectionSize(k,j)}function l(k,j){return r.Interval.is(k)?r.Interval.is(j)?E(k,j):I(j,k):r.Interval.is(j)?I(k,j):n(t.SortedArray.union(k,j))}function S(k,j){return r.Interval.is(k)?r.Interval.is(j)?r.Interval.intersect(k,j):w(j,k):r.Interval.is(j)?w(k,j):n(t.SortedArray.intersect(k,j))}function T(k,j){return r.Interval.is(k)?r.Interval.is(j)?O(k,j):L(k,j):r.Interval.is(j)?F(k,j):n(t.SortedArray.subtract(k,j))}function A(k,j){return r.Interval.size(k)===t.SortedArray.size(j)&&r.Interval.start(k)===t.SortedArray.start(j)&&r.Interval.end(k)===t.SortedArray.end(j)}function x(k,j){return k.length!==0&&r.Interval.size(t.SortedArray.findRange(k,r.Interval.min(j),r.Interval.max(j)))!==0}function M(k,j){const H=r.Interval.min(j),G=r.Interval.max(j);if(G-H+1===0)return!0;const z=t.SortedArray.min(k),W=t.SortedArray.max(k);if(H<z||G>W)return!1;const X=t.SortedArray.findRange(k,H,G);return r.Interval.size(X)===r.Interval.size(j)}function D(k,j){const H=r.Interval.min(k),G=r.Interval.max(k);if(G-H+1===0)return!1;const z=t.SortedArray.min(j),W=t.SortedArray.max(j);return z>=H&&W<=G}function V(k,j){const H=i(k),G=i(j);return H===0&&G===0?!0:H>0&&G>0&&f(k)>=h(j)&&h(k)<=f(j)}function R(k,j){return i(k)?i(j)?h(k)<=h(j)&&f(k)>=f(j):!0:i(j)===0}function E(k,j){if(r.Interval.areEqual(k,j))return k;const H=r.Interval.size(k),G=r.Interval.size(j);if(!G)return k;if(!H)return j;const z=r.Interval.min(k),W=r.Interval.min(j);if(V(k,j))return r.Interval.ofRange(Math.min(z,W),Math.max(r.Interval.max(k),r.Interval.max(j)));let X,Y,K,Q;z<W?(X=H,Y=z,K=G,Q=W):(X=G,Y=W,K=H,Q=z);const J=new Int32Array(H+G);for(let ae=0;ae<X;ae++)J[ae]=ae+Y;for(let ae=0;ae<K;ae++)J[ae+X]=ae+Q;return n(J)}function I(k,j){const H=r.Interval.size(j);if(!H)return k;if(R(j,k))return j;const G=r.Interval.min(j),z=r.Interval.max(j),W=t.SortedArray.findRange(k,G,z),X=r.Interval.start(W),Y=r.Interval.end(W),K=new Int32Array(X+(k.length-Y)+H);let Q=0;for(let J=0;J<X;J++)K[Q++]=k[J];for(let J=G;J<=z;J++)K[Q++]=J;for(let J=Y,ae=k.length;J<ae;J++)K[Q++]=k[J];return n(K)}
7function B(k,j){if(!r.Interval.size(j))return 0;const H=t.SortedArray.findRange(k,r.Interval.min(j),r.Interval.max(j));return r.Interval.end(H)-r.Interval.start(H)}function w(k,j){if(!r.Interval.size(j))return e.Empty;const H=t.SortedArray.findRange(k,r.Interval.min(j),r.Interval.max(j)),G=r.Interval.start(H),z=r.Interval.end(H),W=z-G;if(!W)return e.Empty;if(W===k.length)return k;const X=new Int32Array(W);let Y=0;for(let K=G;K<z;K++)X[Y++]=k[K];return n(X)}function O(k,j){if(r.Interval.areEqual(k,j))return e.Empty;if(!r.Interval.areIntersecting(k,j))return k;const H=r.Interval.min(k),G=r.Interval.max(k),z=r.Interval.min(j),W=r.Interval.max(j);if(G<H||W<z)return k;if(r.Interval.isSubInterval(j,k))return e.Empty;if(r.Interval.isSubInterval(k,j)){const X=z-H,Y=G-W;if(X<=0)return r.Interval.ofRange(W+1,W+Y);if(Y<=0)return r.Interval.ofRange(H,H+X-1);const K=new Int32Array(X+Y);let Q=0;for(let J=0;J<X;J++)K[Q++]=H+J;for(let J=1;J<=Y;J++)K[Q++]=W+J;return n(K)}return H<z?r.Interval.ofRange(H,z-1):r.Interval.ofRange(W+1,G)}function F(k,j){const H=r.Interval.min(j),G=r.Interval.max(j);if(G<H)return k;const z=t.SortedArray.findRange(k,H,G),W=r.Interval.start(z),X=r.Interval.end(z),Y=k.length-(X-W);if(Y<=0)return e.Empty;if(Y===k.length)return k;const K=new Int32Array(Y);let Q=0;for(let J=0;J<W;J++)K[Q++]=k[J];for(let J=X,ae=k.length;J<ae;J++)K[Q++]=k[J];return n(K)}function L(k,j){const H=r.Interval.min(k),G=r.Interval.max(k);if(G<H)return k;const z=G-H+1,W=t.SortedArray.findRange(j,H,G),X=r.Interval.start(W),Y=r.Interval.end(W),K=Y-X;if(K===0)return k;const Q=z-K;if(Q<=0)return e.Empty;const J=new Int32Array(Q),ae=j.length-1,te=j[Math.min(X,ae)],ne=j[Math.min(Y,ae)];let $=0;for(let ie=H;ie<te;ie++)J[$++]=ie;for(let ie=te;ie<=ne;ie++)t.SortedArray.indexOfInInterval(j,ie,W)<0&&(J[$++]=ie);for(let ie=ne+1;ie<=G;ie++)J[$++]=ie;return n(J)}function U(k,j,H){if(r.Interval.is(k)){const G=r.Interval.min(k);for(let z=G,W=r.Interval.max(k);z<=W;z++)j(z,z-G,H)}else for(let G=0,z=k.length;G<z;G++)j(k[G],G,H);return H}function q(k,j,H,G){if(r.Interval.is(k)){let z=0;for(let W=r.Interval.min(k),X=r.Interval.max(k);W<=X;W++){const Y=j(W);let K=W+1;for(;K<X&&j(K)===Y;)K++;W=K-1,H(Y,z,G),z++}}else{let z=0;for(let W=0,X=k.length;W<X;W++){const Y=j(k[W]);let K=W+1;for(;K<X&&j(k[K])===Y;)K++;W=K-1,H(Y,z,G),z++}}return G}function N(k,j,H){if(j===H)return k;const G=i(k),z=j.length,W=H.length;if(G===0||z===0||W===0)return e.Empty;const X=t.SortedArray.findPredecessorIndex(H,j[h(k)]),Y=t.SortedArray.findPredecessorIndex(H,j[f(k)]+1);let K=0,Q=0,J=0,ae=X;for(;J<G&&ae<Y;){const ne=j[s(k,J)],$=H[ae];ne<$?J++:(ne>$||(K++,J++),ae++)}if(K===0)return e.Empty;if(K===z&&K===W)return k;const te=new Int32Array(K);for(Q=0,J=0,ae=X;J<G&&ae<Y;){const ne=j[s(k,J)],$=H[ae];ne<$?J++:(ne>$||(te[Q++]=ae,J++),ae++)}return n(te)}})(j2)),j2}var fE;function nn(){if(fE)return wm;fE=1,Object.defineProperty(wm,"__esModule",{value:!0}),wm.OrderedSet=void 0;const t=At.__importStar(nJ()),r=In();var n;return(function(i){i.Empty=t.Empty,i.ofSingleton=t.ofSingleton,i.ofRange=t.ofRange,i.ofBounds=t.ofBounds,i.ofSortedArray=t.ofSortedArray,i.has=t.has,i.indexOf=t.indexOf,i.getAt=t.getAt,i.isEmpty=t.isEmpty,i.min=t.min,i.max=t.max,i.start=t.start,i.end=t.end,i.size=t.size,i.hashCode=t.hashCode,i.areEqual=t.areEqual,i.areIntersecting=t.areIntersecting,i.isSubset=t.isSubset,i.union=t.union,i.intersect=t.intersect,i.indexedIntersect=t.indexedIntersect,i.subtract=t.subtract,i.findPredecessorIndex=t.findPredecessorIndex,i.findPredecessorIndexInInterval=t.findPredecessorIndexInInterval,i.findRange=t.findRange,i.intersectionSize=t.intersectionSize;function c(_,g,a){return t.forEach(_,g,a)}i.forEach=c;function o(_,g,a,d){return t.forEachSegment(_,g,a,d)}i.forEachSegment=o;function s(_){return r.Interval.is(_)}i.isInterval=s;function h(_){return!r.Interval.is(_)}i.isSortedArray=h;function f(_){const g=[];return i.forEach(_,a=>g.push(a)),g}i.toArray=f;function y(_){return t.toString(_)}i.toString=y})(n||(wm.OrderedSet=n={})),wm}var Em={},na={},mE;function iJ(){if(mE)return na;mE=1,Object.defineProperty(na,"__esModule",{value:!0}),na.SegmentIterator=void 0,na.create=n,na.ofOffsets=i,na.count=c,na.getSegment=o,na.project
7Value=s,na.segments=f;const e=nn(),t=In(),r=Na();function n(y){const _=r.SortedArray.ofSortedArray(y),g=r.SortedArray.max(_),a=new Int32Array(g);for(let d=0,p=y.length-1;d<p;d++)for(let u=y[d],m=y[d+1];u<m;u++)a[u]=d;return{offsets:_,index:a,count:y.length-1}}function i(y,_){const g=t.Interval.start(_),a=new Int32Array(y.length+1);for(let d=0,p=y.length;d<p;d++)a[d]=y[d]-g;return a[y.length]=t.Interval.end(_)-g,n(a)}function c({count:y}){return y}function o({index:y},_){return y[_]}function s({offsets:y},_,g){const a=e.OrderedSet.max(y),d=g>=a?-1:e.OrderedSet.findPredecessorIndex(y,g-1);return e.OrderedSet.findRange(_,e.OrderedSet.getAt(y,d),e.OrderedSet.getAt(y,d+1)-1)}class h{move(){for(;this.hasNext;)if(this.updateValue()){this.value.index=this.segmentMin++,this.hasNext=this.segmentMax>=this.segmentMin&&t.Interval.size(this.setRange)>0;break}else this.updateSegmentRange();return this.value}updateValue(){const _=this.segments[this.segmentMin+1],g=e.OrderedSet.findPredecessorIndexInInterval(this.set,_,this.setRange);return this.value.start=t.Interval.start(this.setRange),this.value.end=g,this.setRange=t.Interval.ofBounds(g,t.Interval.end(this.setRange)),g>this.value.start}updateSegmentRange(){const _=t.Interval.min(this.setRange),g=t.Interval.max(this.setRange);if(g<_){this.hasNext=!1;return}this.segmentMin=this.segmentMap[e.OrderedSet.getAt(this.set,_)],this.segmentMax=this.segmentMap[e.OrderedSet.getAt(this.set,g)],this.hasNext=this.segmentMax>=this.segmentMin}setSegment(_){this.setRange=t.Interval.ofBounds(_.start,_.end),this.updateSegmentRange()}constructor(_,g,a,d){this.segments=_,this.segmentMap=g,this.set=a,this.segmentMin=0,this.segmentMax=0,this.setRange=t.Interval.Empty,this.value={index:0,start:0,end:0},this.hasNext=!1,this.setRange=d,this.updateSegmentRange()}}na.SegmentIterator=h;function f(y,_,g){const a=typeof g<"u"?t.Interval.ofBounds(g.start,g.end):t.Interval.ofBounds(0,e.OrderedSet.size(_));return new h(y.offsets,y.index,_,a)}return na}var pE;function J_(){if(pE)return Em;pE=1,Object.defineProperty(Em,"__esModule",{value:!0}),Em.Segmentation=void 0;const t=At.__importStar(iJ());var r;return(function(n){n.create=t.create,n.ofOffsets=t.ofOffsets,n.count=t.count,n.getSegment=t.getSegment,n.projectValue=t.projectValue,n.transientSegments=t.segments})(r||(Em.Segmentation=r={})),Em}var uC={},hE;function aJ(){if(hE)return uC;hE=1,Object.defineProperty(uC,"__esModule",{value:!0}),uC.LinkedIndex=e;function e(r){return new t(r)}class t{remove(n){const{prev:i,next:c}=this,o=i[n],s=c[n];o>=0&&(c[o]=s,i[n]=-1),s>=0&&(i[s]=o,c[n]=-1),n===this.head&&(o<0?this.head=s:this.head=o)}has(n){return this.prev[n]>=0||this.next[n]>=0||this.head===n}constructor(n){this.head=n>0?0:-1,this.prev=new Int32Array(n),this.next=new Int32Array(n);for(let i=0;i<n;i++)this.next[i]=i+1,this.prev[i]=i-1;this.prev[0]=-1,this.next[n-1]=-1}}return uC}var Bm={},gE;function oJ(){if(gE)return Bm;gE=1,Object.defineProperty(Bm,"__esModule",{value:!0}),Bm.IntMap=void 0;const e=vT();var t;return(function(r){r.Empty=new Map;function n(h){return(0,e.iterableToArray)(h.keys())}r.keyArray=n;function i(){return new Map}r.Mutable=i;function c(h){return h}r.asImmutable=c;function o(h){const f=i(),y=h.keys();for(;;){const{done:_,value:g}=y.next();if(_)break;f.set(g,h.get(g))}return f}r.copy=o;function s(h,f){const y=f.keys();for(;;){const{done:_,value:g}=y.next();if(_)break;h.set(g,f.get(g))}return h}r.addFrom=s})(t||(Bm.IntMap=t={})),Bm}var Rm={},yE;function kD(){if(yE)return Rm;yE=1,Object.defineProperty(Rm,"__esModule",{value:!0}),Rm.Iterator=void 0;class e{move(){return++this.index,this.lastValue=this.xs[this.index],this.hasNext=this.index<this.length-1,this.lastValue}constructor(s){this.xs=[],this.index=-1,this.length=0,this.hasNext=!1,this.length=s.length,this.hasNext=s.length>0,this.xs=s,this.index=-1,this.lastValue=s.length>0?s[0]:void 0}}class t{move(){return++this.value,this.hasNext=this.value<this.max,this.value}constructor(s,h){this.max=h,this.value=0,this.hasNext=!1,this.value=s-1,this.hasNext=h>=s}}class r{move(){return this.hasNext=!1,this.value}constructor(s){this.value=s,this.hasNext=!0}}class n{move(){const s=this.f(this.base.move());return this.hasNext=this.base.hasNext,s}constructor(s,h){this.base=s,this.f=h,this.hasNext=!1,this.hasNext=s.hasNext}}class i{move(){const s=this.next;
7return this.hasNext=this.findNext(),s}findNext(){for(;this.base.hasNext;)if(this.next=this.base.move(),this.p(this.next))return!0;return!1}constructor(s,h){this.base=s,this.p=h,this.hasNext=this.findNext()}}var c;return(function(o){o.Empty=new t(0,-1);function s(a){return new e(a)}o.Array=s;function h(a){return new r(a)}o.Value=h;function f(a,d){return new t(a,d)}o.Range=f;function y(a,d){return new n(a,d)}o.map=y;function _(a,d){return new i(a,d)}o.filter=_;function g(a,d,p){for(;a.hasNext;)if(d(a.move(),p))return p;return p}o.forEach=g})(c||(Rm.Iterator=c={})),Rm}var vE;function at(){return vE||(vE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Iterator=e.IntMap=e.LinkedIndex=e.Tuple=e.SortedArray=e.Segmentation=e.OrderedSet=e.Interval=void 0;const t=In();Object.defineProperty(e,"Interval",{enumerable:!0,get:function(){return t.Interval}});const r=nn();Object.defineProperty(e,"OrderedSet",{enumerable:!0,get:function(){return r.OrderedSet}});const n=J_();Object.defineProperty(e,"Segmentation",{enumerable:!0,get:function(){return n.Segmentation}});const i=Na();Object.defineProperty(e,"SortedArray",{enumerable:!0,get:function(){return i.SortedArray}});const c=OD();Object.defineProperty(e,"Tuple",{enumerable:!0,get:function(){return c.IntTuple}});const o=aJ();Object.defineProperty(e,"LinkedIndex",{enumerable:!0,get:function(){return o.LinkedIndex}});const s=oJ();Object.defineProperty(e,"IntMap",{enumerable:!0,get:function(){return s.IntMap}});const h=kD();Object.defineProperty(e,"Iterator",{enumerable:!0,get:function(){return h.Iterator}})})(q2)),q2}var bE;function sJ(){if(bE)return xm;bE=1,Object.defineProperty(xm,"__esModule",{value:!0}),xm.IntAdjacencyGraph=void 0;const e=_t(),t=at();var r;(function(i){function c(u,m){if(u===m)return!0;if(u.vertexCount!==m.vertexCount||u.edgeCount!==m.edgeCount)return!1;const{a:v,b,offset:P}=u,{a:C,b:l,offset:S}=m;for(let T=0,A=u.a.length;T<A;T++)if(v[T]!==C[T])return!1;for(let T=0,A=u.b.length;T<A;T++)if(b[T]!==l[T])return!1;for(let T=0,A=u.offset.length;T<A;T++)if(P[T]!==S[T])return!1;for(const T of Object.keys(u.edgeProps)){const A=u.edgeProps[T],x=m.edgeProps[T];if(!x)return!1;for(let M=0,D=A.length;M<D;M++)if(A[M]!==x[M])return!1}return!0}i.areEqual=c;class o{getEdgeIndex(m,v){let b,P;m<v?(b=m,P=v):(b=v,P=m);for(let C=this.offset[b],l=this.offset[b+1];C<l;C++)if(this.b[C]===P)return C;return-1}getDirectedEdgeIndex(m,v){for(let b=this.offset[m],P=this.offset[m+1];b<P;b++)if(this.b[b]===v)return b;return-1}getVertexEdgeCount(m){return this.offset[m+1]-this.offset[m]}constructor(m,v,b,P,C,l){this.offset=m,this.a=v,this.b=b,this.edgeCount=P,this.props=l,this.vertexCount=m.length-1,this.edgeProps=C||{}}}function s(u,m,v,b,P,C){return new o(u,m,v,b,P,C)}i.create=s;class h{createGraph(m,v){return s(this.offsets,this.a,this.b,this.edgeCount,m,v)}addNextEdge(){const m=this.xs[this.current],v=this.ys[this.current],b=this.offsets[m]+this.bucketFill[m];this.a[b]=m,this.b[b]=v,this.bucketFill[m]++;const P=this.offsets[v]+this.bucketFill[v];this.a[P]=v,this.b[P]=m,this.bucketFill[v]++,this.current++,this.curA=b,this.curB=P}addAllEdges(){for(let m=0;m<this.edgeCount;m++)this.addNextEdge()}assignProperty(m,v){m[this.curA]=v,m[this.curB]=v}assignDirectedProperty(m,v,b,P){m[this.curA]=v,m[this.curB]=P,b[this.curB]=v,b[this.curA]=P}constructor(m,v,b){this.vertexCount=m,this.xs=v,this.ys=b,this.current=0,this.curA=0,this.curB=0,this.edgeCount=v.length,this.offsets=new Int32Array(this.vertexCount+1),this.bucketFill=new Int32Array(this.vertexCount);const P=new Int32Array(this.vertexCount);for(let l=0,S=this.xs.length;l<S;l++)P[this.xs[l]]++;for(let l=0,S=this.ys.length;l<S;l++)P[this.ys[l]]++;let C=0;for(let l=0;l<this.vertexCount;l++)this.offsets[l]=C,C+=P[l];this.offsets[this.vertexCount]=C,this.slotCount=C,this.a=new Int32Array(C),this.b=new Int32Array(C)}}i.EdgeBuilder=h;class f{createGraph(m,v){return s(this.offsets,this.a,this.b,this.edgeCount,m,v)}addNextEdge(){const m=this.xs[this.current],v=this.ys[this.current],b=this.offsets[m]+this.bucketFill[m];this.a[b]=m,this.b[b]=v,this.bucketFill[m]++,this.current++,this.curA=b}addAllEdges(){for(let m=0;m<this.edgeCount;m++)this.addNextEdge()}assignProperty(m,v){m[this.curA]=v}constructor(m,v,b){this.vertexCount=m,this.xs=v,this.ys=b,this.current=0,this.curA=0,this.edgeCount=v.length,this.offsets=new Int32Array(this.vertexCount+1),this.bucketFill=new Int32Array(this.vertexCount);const P=new Int32Array(this.vertexCount);for(let l=0,S=this.xs.length;l<S;l++)P[this.xs[l]]++;let C=0;for(let l=0;l<this.vertexCount;l++)this.offsets[l]=C,C+=P[l];this.offsets[this.vertexCount]=C,this.slotCount=C,this.a=new Int32Array(C),this.b=new Int32Array(C)}}i.DirectedEdgeBuilder=f;class y{addEdge(m,v){let b=m,P=v;m>v&&(b=v,P=m);const C=(0,e.cantorPairing)(b,P);return this.included.has(C)?!1:(this.included.add(C),this.xs[this.xs.length]=b,this.ys[this.ys.length]=P,!0)}getGraph(){return _(this.vertexCount,this.xs,this.ys)}getEdgeBuiler(){return new h(this.vertexCount,this.xs,this.ys)}constructor(m){this.vertexCount=m,this.xs=[],this.ys=[],this.included=new Set}}i.UniqueEdgeBuilder=y;function _(u,m,v){const b=new i.EdgeBuilder(u,m,v);return b.addAllEdges(),b.createGraph({})}i.fromVertexPairs=_;function g(u,m,v){const{b,offset:P,vertexCount:C,edgeProps:l}=u,S=new Int32Array(C);for(let I=0,B=m.length;I<B;I++)S[m[I]]=I+1;let T=0;for(let I=0;I<C;I++)if(S[I]!==0)for(let B=P[I],w=P[I+1];B<w;B++)b[B]>I&&S[b[B]]!==0&&T++;const A=new Int32Array(m.length+1),x=new Int32Array(2*T),M=new Int32Array(2*T),D=new Int32Array(2*T);let V=0,R=0;for(let I=0;I<C;I++){if(S[I]===0)continue;const B=S[I]-1;for(let w=P[I],O=P[I+1];w<O;w++){const F=S[b[w]];F!==0&&(M[V]=B,D[V]=F-1,x[V]=w,V++)}A[++R]=V}const E={};for(const I of Object.keys(l))E[I]=(0,e.arrayPickIndices)(l[I],x);return s(A,M,D,T,E,v)}i.induceByVertices=g;function a(u){const m=u.vertexCount;if(m===0)return{componentCount:0,componentIndex:new Int32Array(0)};if(u.edgeCount===0){const T=new Int32Array(m);for(let A=0,x=m;A<x;A++)T[A]=A;return{componentCount:m,componentIndex:T}}const v=new Int32Array(m);for(let T=0,A=m;T<A;
7T++)v[T]=-1;let b=0;v[0]=b;const{offset:P,b:C}=u,l=[0],S=(0,t.LinkedIndex)(m);for(S.remove(0);l.length>0;){const T=l.pop(),A=v[T];for(let x=P[T],M=P[T+1];x<M;x++){const D=C[x];S.has(D)&&(S.remove(D),l.push(D),v[D]=A)}l.length===0&&S.head>=0&&(l.push(S.head),v[S.head]=++b,S.remove(S.head))}return{componentCount:m,componentIndex:v}}i.connectedComponents=a;function d(u,m,v,b){if(t.SortedArray.areIntersecting(m,v))return!0;if(b<1)return!1;const P=new Set;for(let C=0,l=m.length;C<l;++C)P.add(m[C]);return n(u,m,v,b,P)}i.areVertexSetsConnected=d;function p(u){const m=u.vertexCount,{offset:v,b}=u,P=new Array(m),C=new Int32Array(m);for(let l=0;l<m;l++){const S=new Int32Array(m).fill(-1);let T=0,A=0;for(C[A++]=l,S[l]=0;T<A;){const x=C[T++],M=S[x];for(let D=v[x],V=v[x+1];D<V;D++){const R=b[D];S[R]<0&&(S[R]=M+1,C[A++]=R)}}P[l]=S}return P}i.graphShortestPaths=p})(r||(xm.IntAdjacencyGraph=r={}));function n(i,c,o,s,h){const{b:f,offset:y}=i,_=[];for(let g=0,a=c.length;g<a;++g){const d=c[g];for(let p=y[d],u=y[d+1];p<u;++p){const m=f[p];if(!h.has(m)){if(t.SortedArray.has(o,m))return!0;h.add(m),_[_.length]=m}}}return s>1?n(i,_,o,s-1,h):!1}return xm}var _E;function is(){return _E||(_E=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),At.__exportStar(sJ(),e)})(L2)),L2}var Om={},SE;function as(){if(SE)return Om;SE=1,Object.defineProperty(Om,"__esModule",{value:!0}),Om.FormatPropertyProvider=void 0;class e{constructor(){this.map=new Map,this.applicable=new Map}add(n,i,c){this.map.set(n,i),c&&this.applicable.set(n,c)}remove(n){this.map.delete(n),this.applicable.delete(n)}get(n){return this.map.get(n)}isApplicable(n){if(!this.map.has(n.sourceData.kind))return!1;const i=this.applicable.get(n.sourceData.kind);return i?i(n):!0}}var t;return(function(r){function n(i,c){const{name:o}=i,s=new e;return{descriptor:i,formatRegistry:s,isApplicable(h){return s.isApplicable(h)},get(h){const f=c?.asDynamic?h._dynamicPropertyData:h._staticPropertyData;if(f[o])return f[o];if(h.customProperties.has(i))return;const y=s.get(h.sourceData.kind);if(y)return f[o]=y(h),h.customProperties.add(i),f[o]},set(h,f){c?.asDynamic?h._dynamicPropertyData[o]=f:h._staticPropertyData[o]=f},delete(h){c?.asDynamic?delete h._dynamicPropertyData[o]:delete h._staticPropertyData[o]}}}r.create=n})(t||(Om.FormatPropertyProvider=t={})),Om}var z2={},H2={},W2={},Pa={},km={},Fm={},CE;function FD(){if(CE)return Fm;CE=1,Object.defineProperty(Fm,"__esModule",{value:!0}),Fm.Lab=i;const e=wn(),t=LD(),r=er(),n=ir();function i(){return i.zero()}return(function(c){function o(){const B=[.1,0,0];return B[0]=0,B}c.zero=o;function s(B,w,O){const F=o();return F[0]=B,F[1]=w,F[2]=O,F}c.create=s;function h(B,w,O,F){return B[0]=w,B[1]=O,B[2]=F,B}c.set=h;function f(B,w){const O=w[0]-B[0],F=w[1]-B[1],L=w[2]-B[2];return Math.sqrt(O*O+F*F+L*L)}c.distance=f;function y(B,w){const[O,F,L]=e.Color.toRgb(w),[U,q,N]=I(O,F,L),k=116*q-16;return B[0]=k<0?0:k,B[1]=500*(U-q),B[2]=200*(q-N),B}c.fromColor=y;function _(B,w){return t.Hcl.toLab(B,w)}c.fromHcl=_;function g(B){let w=(B[0]+16)/116,O=isNaN(B[1])?w:w+B[1]/500,F=isNaN(B[2])?w:w-B[2]/200;w=l*V(w),O=C*V(O),F=S*V(F);const L=D(3.2404542*O-1.5371385*w-.4985314*F),U=D(-.969266*O+1.8760108*w+.041556*F),q=D(.0556434*O-.2040259*w+1.0572252*F);return e.Color.fromRgb(Math.round((0,n.clamp)(L,0,255)),Math.round((0,n.clamp)(U,0,255)),Math.round((0,n.clamp)(q,0,255)))}c.toColor=g;function a(B,w){const[O,F,L]=w,U=Math.sqrt(F*F+L*L);let q=((0,r.radToDeg)(Math.atan2(L,F))+360)%360;return Math.round(U*1e4)===0&&(q=Number.NaN),B[0]=q,B[1]=U,B[2]=O,B}c.toHcl=a;function d(B,w){return B[0]=w[0],B[1]=w[1],B[2]=w[2],B}c.copy=d;function p(B,w,O){return B[0]=w[0]-P*O,B[1]=w[1],B[2]=w[2],B}c.darken=p;function u(B,w,O){return p(B,w,-O)}c.lighten=u;const m=[0,0,0];function v(B,w,O){return a(m,w),t.Hcl.toLab(B,t.Hcl.saturate(m,m,O))}c.saturate=v;function b(B,w,O){return v(B,w,-O)}c.desaturate=b;const P=18,C=.95047,l=1,S=1.08883,T=.137931034,A=.206896552,x=.12841855,M=.008856452;function D(B){return 255*(B<=.00304?12.92*B:1.055*Math.pow(B,1/2.4)-.055)}function V(B){return B>A?B*B*B:x*(B-T)}
7function R(B){return(B/=255)<=.04045?B/12.92:Math.pow((B+.055)/1.055,2.4)}function E(B){return B>M?Math.pow(B,1/3):B/x+T}function I(B,w,O){B=R(B),w=R(w),O=R(O);const F=E((.4124564*B+.3575761*w+.1804375*O)/C),L=E((.2126729*B+.7151522*w+.072175*O)/l),U=E((.0193339*B+.119192*w+.9503041*O)/S);return[F,L,U]}})(i||(Fm.Lab=i={})),Fm}var PE;function LD(){if(PE)return km;PE=1,Object.defineProperty(km,"__esModule",{value:!0}),km.Hcl=r;const e=er(),t=FD();function r(){return r.zero()}return(function(n){function i(){const C=[.1,0,0];return C[0]=0,C}n.zero=i;function c(C,l,S){const T=i();return T[0]=C,T[1]=l,T[2]=S,T}n.create=c;function o(C,l,S,T){return C[0]=l,C[1]=S,C[2]=T,C}n.set=o;function s(C){return!isNaN(C[0])}n.hasHue=s;const h=[0,0,0];function f(C,l){return t.Lab.toHcl(C,t.Lab.fromColor(h,l))}n.fromColor=f;function y(C,l){return t.Lab.toHcl(C,l)}n.fromLab=y;const _=[0,0,0];function g(C){return t.Lab.toColor(a(_,C))}n.toColor=g;function a(C,l){let[S,T,A]=l;return isNaN(S)&&(S=0),S=(0,e.degToRad)(S),C[0]=A,C[1]=Math.cos(S)*T,C[2]=Math.sin(S)*T,C}n.toLab=a;function d(C,l){return C[0]=l[0],C[1]=l[1],C[2]=l[2],C}n.copy=d;function p(C,l,S){return C[0]=l[0],C[1]=Math.max(0,l[1]+P*S),C[2]=l[2],C}n.saturate=p;function u(C,l,S){return p(C,l,-S)}n.desaturate=u;const m=[0,0,0];function v(C,l,S){return a(m,l),t.Lab.toHcl(C,t.Lab.darken(m,m,S))}n.darken=v;function b(C,l,S){return v(C,l,-S)}n.lighten=b;const P=18})(r||(km.Hcl=r={})),km}var Lm={},Nm={},TE;function cJ(){if(TE)return Nm;TE=1,Object.defineProperty(Nm,"__esModule",{value:!0}),Nm.Rgb=e;function e(){return e.zero()}return(function(t){function r(){const c=[.1,0,0];return c[0]=0,c}t.zero=r;function n(c,o){return c[0]=(o>>16&255)/255,c[1]=(o>>8&255)/255,c[2]=(o&255)/255,c}t.fromColor=n;function i(c){return c[0]*255<<16|c[1]*255<<8|c[2]*255}t.toColor=i})(e||(Nm.Rgb=e={})),Nm}var xE;function uJ(){if(xE)return Lm;xE=1,Object.defineProperty(Lm,"__esModule",{value:!0}),Lm.Hsl=t;const e=cJ();function t(){return t.zero()}return(function(r){function n(){const g=[.1,0,0];return g[0]=0,g}r.zero=n;const i=(0,e.Rgb)();function c(g,a){return e.Rgb.fromColor(i,a),r.fromRgb(g,i)}r.fromColor=c;function o(g){return y(i,g),e.Rgb.toColor(i)}r.toColor=o;function s(g,a){const[d,p,u]=a,m=Math.min(d,p,u),v=Math.max(d,p,u),b=(v+m)/2;let P=0,C=0;return v===m?(P=0,C=Number.NaN):P=b<.5?(v-m)/(v+m):(v-m)/(2-v-m),d===v?C=(p-u)/(v-m):p===v?C=2+(u-d)/(v-m):u===v&&(C=4+(d-p)/(v-m)),C*=60,C<0&&(C+=360),g[0]=C,g[1]=P,g[2]=b,g}r.fromRgb=s;const h=[0,0,0],f=[0,0,0];function y(g,a){const[d,p,u]=a;let m,v,b;if(p===0)m=v=b=u;else{const P=h,C=f,l=u<.5?u*(1+p):u+p-u*p,S=2*u-l,T=d/360;P[0]=T+1/3,P[1]=T,P[2]=T-1/3;for(let A=0;A<3;A++)P[A]<0&&(P[A]+=1),P[A]>1&&(P[A]-=1),6*P[A]<1?C[A]=S+(l-S)*6*P[A]:2*P[A]<1?C[A]=l:3*P[A]<2?C[A]=S+(l-S)*(2/3-P[A])*6:C[A]=S;m=C[0],v=C[1],b=C[2]}return g[0]=m,g[1]=v,g[2]=b,g}r.toRgb=y;function _(g,a,d,p){const u=a,m=d,[v,b,P]=u,[C,l,S]=m;let T,A,x;!isNaN(v)&&!isNaN(C)?(C>v&&C-v>180?x=C-(v+360):C<v&&v-C>180?x=C+360-v:x=C-v,A=v+p*x):isNaN(v)?isNaN(C)?A=Number.NaN:(A=C,(P===1||P===0)&&(T=l)):(A=v,(S===1||S===0)&&(T=b)),T===void 0&&(T=b+p*(l-b));const M=P+p*(S-P);return g[0]=A,g[1]=T,g[2]=M,g}r.interpolate=_})(t||(Lm.Hsl=t={})),Lm}var AE;function wn(){if(AE)return Pa;AE=1,Object.defineProperty(Pa,"__esModule",{value:!0}),Pa.Color=n,Pa.ColorList=i,Pa.ColorTable=c,Pa.ColorMap=o,Pa.getAdjustedColorMap=s,Pa.ColorSwatch=h;const e=LD(),t=FD(),r=uJ();function n(f){return f}(function(f){function y(z){return`rgb(${z>>16&255}, ${z>>8&255}, ${z&255})`}f.toStyle=y;function _(z){return"#"+("000000"+z.toString(16)).slice(-6)}f.toHexStyle=_;function g(z){return"0x"+("000000"+z.toString(16)).slice(-6)}f.toHexString=g;function a(z){return`RGB: ${f.toRgb(z).join(", ")}`}f.toRgbString=a;function d(z){return[z>>16&255,z>>8&255,z&255]}f.toRgb=d;function p(z){return[(z>>16&255)/255,(z>>8&255)/255,(z&255)/255]}f.toRgbNormalized=p;function u(z){return parseInt(z.replace("#","0x"))}f.fromHexStyle=u;function m(z){return parseInt(z)}f.fromHexString=m;function v(z,W,X){return z<<16|W<<8|X}f.fromRgb=v;function b(z,W,X){return z*255<<16|W*255<<8|X*255}f.fromNormalizedRgb=b;function P(z,W){return v(z[W],z[W+1],z[W+2])}f.fromArray=P;function C(z,W){return b(z[W],z[W+1],z[W+2])}f.fromNormalizedArray=C;function l(z){return typeof z=="number"?z:z[0]}f.fromColorListEntry=l;function S(z,W,X){return W[X]=z>>16&255,W[X+1]=z>>8&255,W[X+2]=z&255,W}f.toArray=S;function T(z,W,X){return W[X]=(z>>16&255)/255,W[X+1]=(z>>8&255)/255,W[X+2]=(z&255)/255,W}f.toArrayNormalized=T;function A(z,W){return z[0]=W>>16&255,z[1]=W>>8&255,z[2]=W&255,z}f.toVec3=A;function x(z,W){return z[0]=(W>>16&255)/255,z[1]=(W>>8&255)/255,z[2]=(W&255)/255,z}f.toVec3Normalized=x;function M(z,W,X){const Y=z>>16&255,K=z>>8&255,Q=z&255,J=W>>16&255,ae=W>>8&255,te=W&255,ne=Y+(J-Y)*X,$=K+(ae-K)*X,ie=Q+(te-Q)*X;return ne<<16|$<<8|ie}f.interpolate=M;const D=r.Hsl.zero(),V=r.Hsl.zero();function R(z,W,X){const Y=r.Hsl.fromColor(D,z),K=r.Hsl.fromColor(V,W);return r.Hsl.interpolate(Y,Y,K,X),r.Hsl.toColor(Y)}f.interpolateHsl=R;function E(z){const W=z>>16&255,X=z>>8&255,Y=z&255;return W!==X||W!==Y}f.hasHue=E;const I=[0,0,0];function B(z,W){return E(z)?(e.Hcl.fromColor(I,z),e.Hcl.toColor(e.Hcl.saturate(I,I,W))):z}f.saturate=B;function w(z,W){return B(z,-W)}f.desaturate=w;const O=[0,0,0];function F(z,W){return t.Lab.fromColor(O,z),t.Lab.toColor(t.Lab.darken(O,O,W))}f.darken=F;function L(z,W){return F(z,-W)}f.lighten=L;function U(z){return z<=.03928?z/12.92:Math.pow((z+.055)/1.055,2.4)}function q(z){const W=U((z>>16&255)/255),X=U((z>>8&255)/255),Y=U((z&255)/255);return .2126*W+.7152*X+.0722*Y}f.luminance=q;function N(z,W){const X=q(z),Y=q(W);return X>Y?(X+.05)/(Y+.05):(Y+.05)/(X+.05)}f.contrast=N;function k(z){return z<.04045?z*.0773993808:Math.pow(z*.9478672986+.0521327014,2.4)}function j(z){return b(k((z>>16&255)/255),k((z>>8&255)/255),k((z&255)/255))}f.sRGBToLinear=j;
7function H(z){return z<.0031308?z*12.92:1.055*Math.pow(z,.41666)-.055}function G(z){return b(H((z>>16&255)/255),H((z>>8&255)/255),H((z&255)/255))}f.linearToSRGB=G})(n||(Pa.Color=n={}));function i(f,y,_,g){return{label:f,description:_,list:g,type:y}}function c(f){return f}function o(f){return f}function s(f,y,_){const g={};for(const a in f){let d=f[a];d=n.saturate(d,y),d=n.darken(d,-_),g[a]=d}return g}function h(f){return f}return Pa}var $2={},X2={},K2={},ME;function ui(){return ME||(ME=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.upperCase=e.lowerCase=void 0,e.indentString=r,e.splitCamelCase=n,e.camelCaseToWords=i,e.upperCaseAny=s,e.capitalize=h,e.splitSnakeCase=f,e.snakeCaseToWords=y,e.splitKebabCase=_,e.kebabCaseToWords=g,e.stringToWords=a,e.substringStartsWith=d,e.interpolate=p,e.trimChar=u,e.trimCharStart=m,e.trimCharEnd=v,e.stripTags=b,e.escapeRegExp=P;const t=/^/mg;function r(C,l,S){return l===0?C:C.replace(t,S.repeat(l))}function n(C,l=" "){return C.replace(/([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g,`$1${l}$2`)}function i(C){return h(n(C))}const c=C=>C.toLowerCase();e.lowerCase=c;const o=C=>C.toUpperCase();e.upperCase=o;function s(C){return C?typeof C=="string"?C.toUpperCase():`${C}`.toUpperCase():""}function h(C){return C.toLowerCase().replace(/^\w|\s\w/g,e.upperCase)}function f(C){return C.replace(/_/g," ")}function y(C){return h(f(C))}function _(C){return C.replace(/-/g," ")}function g(C){return h(_(C))}function a(C){return h(n(f(_(C))))}function d(C,l,S,T){const A=T.length;if(A>S-l)return!1;for(let x=0;x<A;x++)if(C.charCodeAt(l+x)!==T.charCodeAt(x))return!1;return!0}function p(C,l){const S=Object.keys(l),T=Object.values(l);return new Function(...S,`return \`${C}\`;`)(...T)}function u(C,l){let S=0,T=C.length;for(;S<T&&C[S]===l;)++S;for(;T>S&&C[T-1]===l;)--T;return S>0||T<C.length?C.substring(S,T):C}function m(C,l){let S=0;const T=C.length;for(;S<T&&C[S]===l;)++S;return S>0?C.substring(S,T):C}function v(C,l){let S=C.length;for(;S>0&&C[S-1]===l;)--S;return S<C.length?C.substring(0,S):C}function b(C){return C.replace(/<\/?[^>]+>/g,"")}function P(C){return C.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}})(K2)),K2}var DE;function pa(){return DE||(DE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ColorListOptionsSet=e.ColorListOptionsScale=e.ColorListOptions=e.ColorListNames=e.ColorLists=void 0,e.getColorListFromName=n;const t=ui(),r=wn();e.ColorLists={reds:(0,r.ColorList)("Reds","sequential","Reds, sequential color scheme from ColorBrewer 2.0",[16774640,16703698,16563105,16552562,16476746,15678252,13309981,10817301,6750221]),oranges:(0,r.ColorList)("Oranges","sequential","Oranges, sequential color scheme from ColorBrewer 2.0",[16774635,16705230,16634018,16625259,16616764,15821075,14239745,10892803,8333060]),greens:(0,r.ColorList)("Greens","sequential","Greens, sequential color scheme from ColorBrewer 2.0",[16252149,15070688,13101504,10607003,7652470,4303709,2329413,27948,17435]),blues:(0,r.ColorList)("Blues","sequential","Blues, sequential color scheme from ColorBrewer 2.0",[16251903,14609399,13032431,10406625,7057110,4362950,2191797,545180,536683]),purples:(0,r.ColorList)("Purples","sequential","Purples, sequential color scheme from ColorBrewer 2.0",[16579581,15724021,14342891,12369372,10394312,8420794,6967715,5515151,4128893]),greys:(0,r.ColorList)("Greys","sequential","Greys, sequential color scheme from ColorBrewer 2.0",[16777215,15790320,14277081,12434877,9868950,7566195,5395026,2434341,0]),"orange-red":(0,r.ColorList)("Orange-Red","sequential","OrRd, sequential color scheme from ColorBrewer 2.0",[16775148,16705736,16635038,16628612,16551257,15689032,14102559,11730944,8323072]),"blue-green":(0,r.ColorList)("Blue-Green","sequential","BuGn, sequential color scheme from ColorBrewer 2.0",[16252157,15070713,13429990,10082505,6734500,4304502,2329413,27948,17435]),"purple-blue-green":(0,r.ColorList)("Purple-Blue-Green","sequential","PuBuGn, sequential color scheme from ColorBrewer 2.0",[16775163,15524592,13685222,10927579,6793679,3576e3,164234,93273,83510]),"green-blue":(0,r.ColorList)("Green-Blue","sequential","GnBu, sequential color scheme from ColorBrewer 2.0",[16252144,14742491,13429701,11066805,8113348,5157843,2854078,551084,540801]),"purple-blue":(0,r.ColorList)("Purple-Blue","sequential","PuBu, sequential color scheme from ColorBrewer 2.0",[16775163,15525874,13685222,10927579,7645647,3576e3,356528,285325,145496]),"blue-purple":(0,r.ColorList)("Blue-Purple","sequential","BuPu, sequential color scheme from ColorBrewer 2.0",[16252157,14740724,12571622,10403034,9213638,9202609,8929693,8458108,5046347]),"red-purple":(0,r.ColorList)("Red-Purple","sequential","RdPu, sequential color scheme from ColorBrewer 2.0",[16775155,16638173,16565696,16424885,16214177,14496919,11403646,7995767,4784234]),"purple-red":(0,r.ColorList)("Purple-Red","sequential","PuRd, sequential color scheme from ColorBrewer 2.0",[16250105,15196655,13941210,13210823,14640560,15149450,13505110,9961539,6750239]),"yellow-orange-red":(0,r.ColorList)("Yellow-Orange-Red","sequential","YlOrRd, sequential color scheme from ColorBrewer 2.0",[16777164,16772512,16701814,16691788,16616764,16535082,14883356,12386342,8388646]),"yellow-orange-brown":(0,r.ColorList)("Yellow-Orange-Brown","sequential","YlOrBr, sequential color scheme from ColorBrewer 2.0",[16777189,16775100,16704401,16696399,16685353,15495188,13388802,10040324,6694150]),"yellow-green":(0,r.ColorList)("Yellow-Green","sequential","YlGn, sequential color scheme from ColorBrewer 2.0",[16777189,16252089,14282915,11394446,7915129,4303709,2327619,26679,17705]),"yellow-green-blue":(0,r.ColorList)("Yellow-Green-Blue","sequential","YlGnBu, sequential color scheme from ColorBrewer 2.0",[16777177,15595697,13101492,8375739,4306628,1937856,2252456,2438292,531800]),"red-blue":(0,r.ColorList)("Red-Blue","diverging","RdBu, diverging color scheme from ColorBrewer 2.0",[6750239,11671595,14049357,16033154,16636871,16250871,13755888,9618910,4428739,2188972,340065]),"red-grey":(0,r.ColorList)("Red-Grey","diverging","RdGy, diverging color scheme from ColorBrewer 2.0",[6750239,11671595,14049357,16033154,16636871,16777215,14737632,12237498,8882055,5066061,1710618]),"pink-yellow-green":(0,r.ColorList)("Pink-Yellow-Green","diverging","PiYG, diverging color scheme from ColorBrewer 2.0",[9306450,12917629,14579630,15840986,16638191,16250871,15136208,12116358,8371265,5083681,2581529]),"brown-white-green":(0,r.ColorList)("Brown-White-Green","diverging","BrBG, diverging color scheme from ColorBrewer 2.0",[5517317,9195786,12550445,
714664317,16181443,16119285,13101797,8441281,3512207,91742,15408]),"purple-green":(0,r.ColorList)("Purple-Green","diverging","PRGn, diverging color scheme from ColorBrewer 2.0",[4194379,7744131,10055851,12756431,15193320,16250871,14282963,10935200,5942881,1800247,17435]),"purple-orange":(0,r.ColorList)("Purple-Orange","diverging","PuOr, diverging color scheme from ColorBrewer 2.0",[2949195,5515144,8418220,11709394,14211819,16250871,16703670,16627811,14713364,11753478,8338184]),"orange-purple":(0,r.ColorList)("Orange-Purple","diverging","Reversed PuOr, diverging color scheme from ColorBrewer 2.0",[8338184,11753478,14713364,16627811,16703670,16250871,14211819,11709394,8418220,5515144,2949195]),"red-yellow-green":(0,r.ColorList)("Red-Yellow-Green","diverging","RdYlGn, diverging color scheme from ColorBrewer 2.0",[10813478,14102567,16018755,16625249,16703627,16777151,14282635,10934634,6733155,1742928,26679]),"red-yellow-blue":(0,r.ColorList)("Red-Yellow-Blue","diverging","RdYlBu, diverging color scheme from ColorBrewer 2.0",[10813478,14102567,16018755,16625249,16703632,16777151,14742520,11262441,7646673,4552116,3225237]),spectral:(0,r.ColorList)("Spectral","diverging","Spectral, diverging color scheme from ColorBrewer 2.0",[10355010,13975119,16018755,16625249,16703627,16777151,15136152,11263396,6734501,3311805,6180770]),magma:(0,r.ColorList)("Magma","sequential","Magma, sequential color scheme from Matplotlib, perceptually uniform shades of black-red-white",[4,131595,328726,591648,920363,1314358,1708098,2167117,2691418,3346535,3870576,4460406,4985210,5510013,5969279,6560384,7019905,7676289,8135554,8660609,9185665,9710720,10235519,10826110,11351164,12007289,12532343,13057395,13516656,14042475,14567784,14962532,15357537,15687006,16017244,16216156,16349533,16483167,16551011,16619112,16686957,16689523,16692347,16694658,16696970,16699282,16701594,16638627,16640940,16577718,16580031]),"magma-no-black":(0,r.ColorList)("Magma (no black)","sequential","Magma, sequential color scheme from Matplotlib, perceptually uniform shades of black-red-white (with the black region removed)",[4329332,4853881,5378684,5903742,6363263,6888576,7413633,7938689,8463745,8988801,9513600,10038655,10563454,11088508,11613562,12138360,12728949,13254258,13714030,14239338,14699366,15094114,15489119,15753309,16017499,16216411,16350045,16483424,16551523,16619368,16621934,16689780,16692091,16694402,16696969,16633746,16636058,16638371,16575148,16577461,16514239]),inferno:(0,r.ColorList)("Inferno","sequential","Inferno, sequential color scheme from Matplotlib, perceptually uniform shades of black-red-yellow",[4,131596,328727,657186,1050925,1444665,1969221,2427985,3082843,3737955,4328040,4852843,5377645,5902702,6427502,6952814,7477870,8133997,8659051,9184105,9643623,10168676,10693729,11218782,11743834,12334932,12794703,13254730,13583429,14109502,14504250,14833460,15162926,15427112,15757088,15955993,16154643,16288012,16421383,16489222,16557322,16559634,16497183,16434218,16305463,16176966,16048470,15919721,15921789,16120210,16580516]),"inferno-no-black":(0,r.ColorList)("Inferno (no black)","sequential","Inferno, sequential color scheme from Matplotlib, perceptually uniform shades of black-red-yellow (with the black region removed)",[4721514,5246316,5771373,6296430,6821486,7346542,7871597,8396651,8921450,9446504,9971557,10496610,10956127,11481435,12006486,12466258,12926285,13386056,13780802,14241085,14570295,14965297,15229227,15558693,15757342,15956248,16154897,16288267,16421638,16489734,16492043,16494612,16496926,16368426,16305463,16111429,15982678,15853928,15856253,16119953,16580260]),plasma:(0,r.ColorList)("Plasma","sequential","Plasma, sequential color scheme from Matplotlib, perceptually uniform shades of blue-red-yellow",[1771148,2426257,3081365,3671193,4195228,4784799,5308834,5833124,6357158,6815911,7340200,7864744,8324007,8783782,9309348,9769377,10164126,10624154,11018902,11413393,11808141,12137352,12466307,12795519,13124730,13453685,13717361,14046573,14309992,14573668,14837344,15035483,15299159,15497299,15695438,15893834,16091974,16224833,16357693,16425017,16557877,16625457,16627245,16629289,16631334,16567845,16438820,16310052,16115494,15921190,15726625]),viridis:(0,r.ColorList)("Viridis","sequential","Viridis, sequential color scheme from Matplotlib, perceptually uniform shades of blue-green-yellow",[4524123,4656994,4658793,4726127,4727668,4663929,4599933,4535937,4406404,4276870,4081800,3952010,3822475,3627148,3497356,3302029,3172237,3042446,2912654,2782862,2652814,2523022,2393229,2328973,2198924,2069132,2004874,2005897,2007175,2139525,2337154,2666111,3060348,3520376,4045684,4570991,5227369,5883748,6605661,7392854,8180303,8967495,9819967,10672695,11525166,12443174,13295646,14148121,15000344,15852828,16639780]),cividis:(0,r.ColorList)("Cividis","sequential","Cividis, sequential color scheme from Matplotlib, perceptually uniform shades of blue-grey-yellow, should look effectively identical to colorblind and non-colorblind users",[8273,9305,10079,76644,339560,668266,1062508,1390957,1916270,2375790,2835566,3295342,3754862,4214638,4543085,5068397,5462638,5856878,6185326,6579567,6908272,7236721,7499890,7828595,8091764,8354933,8617846,8946551,9209463,9472888,9736056,10064760,10327928,10656632,10985591,11379830,11708532,12102770,12497264,12891501,13285994,13745766,14140259,14600287,14994522,15389014,15717970,16046926,16310347,16508232,16640581]),twilight:(0,r.ColorList)("Twilight","cyclical","Twilight, cyclical color scheme from Matplotlib, perceptually uniform shades of white-blue-black-red-white",[14670305,14211037,13554648,12766675,11847630,10993866,10139847,9351365,8628419,8036290,7509952,7048895,6718653,6519739,6386105,6252470,6184114,6181293,6112935,6044831,5976470,5777291,5447293,5052270,4592479,4067665,3674181,3281211,3150646,3543352,4067644,4657728,5379141,6166345,6953549,7741007,8463184,9120336,9777743,10304079,10830671,11291984,11687762,12083541,12348505,12613471,12878439,13077872,13211771,13411209,13545111,13809830,14074293,14338756,14537169,14735067,14801121]),"set-2":(0,r.ColorList)("Set-2","qualitative","Set2, categorical color scheme from ColorBrewer 2.0",[6734501,16551266,9281739,15174339,10934356,16767279,15058068,11776947]),accent:(0,r.ColorList)("Accent","qualitative","Acce
7nt, categorical color scheme from ColorBrewer 2.0",[8374655,12496596,16629894,16777113,3697840,15729279,12540695,6710886]),"set-1":(0,r.ColorList)("Set-1","qualitative","Set1, categorical color scheme from ColorBrewer 2.0",[14948892,3636920,5091146,9981603,16744192,16777011,10901032,16220607,10066329]),"set-3":(0,r.ColorList)("Set-3","qualitative","Set3, categorical color scheme from ColorBrewer 2.0",[9294791,16777139,12499674,16482418,8434131,16626786,11787881,16567781,14277081,12353725,13429701,16772463]),"dark-2":(0,r.ColorList)("Dark-2","qualitative","Dark2, categorical color scheme from ColorBrewer 2.0",[1810039,14245634,7696563,15149450,6727198,15117058,10909213,6710886]),paired:(0,r.ColorList)("Paired","qualitative","Paired, categorical color scheme from ColorBrewer 2.0",[10931939,2062516,11722634,3383340,16489113,14883356,16629615,16744192,13284054,6962586,16777113,11622696]),"pastel-2":(0,r.ColorList)("Pastel-2","qualitative","Pastel2, categorical color scheme from ColorBrewer 2.0",[11789005,16633260,13358568,16042724,15136201,16773806,15852236,13421772]),"pastel-1":(0,r.ColorList)("Pastel-1","qualitative","Pastel1, categorical color scheme from ColorBrewer 2.0",[16495790,11783651,13429701,14601188,16701862,16777164,15063229,16636652,15921906]),turbo:(0,r.ColorList)("Turbo","sequential","Turbo color scheme from D3.js, improved (smooth) rainbow colormap for visualization",[2299675,3547990,4337541,4799658,4934343,4872413,4613867,4289780,3900152,3510520,3120629,2796271,2602726,2474716,2477264,2611140,2875575,3270826,3731101,4387984,5109892,5897080,6815085,7798371,8781145,9829201,10811209,11858498,12774460,13755446,14605618,15389486,16042283,16563496,16757029,16753699,16750369,16746782,16743196,16608538,16146200,15487253,14763026,13973263,13052940,12198408,11344133,10621442,9965056,9571328,9440256]),"turbo-no-black":(0,r.ColorList)("Turbo (no black)","sequential","Turbo color scheme from D3.js, improved (smooth) rainbow colormap for visualization, with black region removed",[4866485,4872413,4354034,3770361,3120629,2667241,2475736,2611140,3073454,3928216,5109892,6487408,8126047,9829201,11531332,13167162,14605618,15780908,16693543,16753699,16748063,16741916,16146200,15026195,13644558,12198408,10818563,9833728]),warm:(0,r.ColorList)("Warm","sequential","Warm, sequential color scheme from D3.js",[7225514,7684013,8208303,8797873,9322162,9846195,10370483,10960051,11484338,12008625,12532911,13057452,13581737,14040742,14434210,14959005,15352473,15746196,16074382,16402824,16665475,16731772,16732790,16733808,16734826,16735843,16737117,16738135,16739409,16740939,16742471,16743746,16745277,16747065,16748598,16487987,16162097,15901743,15575598,15184174,14858031,14466608,14140466,13748788,13422648,13030972,12704833,12378438,12052044,11791187,11530331]),cool:(0,r.ColorList)("Cool","sequential","Cool, sequential color scheme from D3.js",[7225514,7095217,6899639,6769597,6574275,6313160,6117837,5856977,5596117,5335513,5009115,4748510,4422368,4161761,3835361,3575009,3314401,3053791,2793438,2598363,2337752,2208213,2013137,1883340,1819335,1755074,1691068,1692086,1758640,1825706,1957795,2155164,2352790,2615695,2878601,3207042,3600764,3994230,4453489,4912492,5437031,5961315,6551391,7140956,7730778,8386136,8975703,9630807,10285911,10940761,11530331]),"cubehelix-default":(0,r.ColorList)("CubehelixDefault","sequential","CubehelixDefault, sequential color scheme from D3.js",[0,525064,984594,1313308,1576742,1709360,1776697,1712705,1649479,1520715,1457486,1394254,1396557,1529674,1662534,2057794,2518076,3109175,3765555,4618288,5536047,6519343,7568178,8550967,9599551,10516809,11368789,12155235,12745329,13270146,13663891,13861539,13928371,13929921,13800654,13606106,13411811,13217514,12957935,12829170,12700403,12768243,12835826,13099761,13428976,13823727,14349039,14939888,15530483,16186616,16777215]),rainbow:(0,r.ColorList)("Rainbow","cyclical","Rainbow, cyclical color scheme from D3.js",[7225514,8208303,9322162,10370483,11484338,12532911,13581737,14434210,15352473,16074382,16665475,16732790,16734826,16737117,16739409,16742471,16745277,16748598,16162097,15575598,14858031,14140466,13422648,12704833,12052044,11530331,10285911,8975703,7730777,6485855,5437031,4453489,3600764,2878601,2352790,1957795,1758896,1691068,1819335,2013137,2337752,2793438,3314401,3835617,4422368,5009115,5596117,6117837,6574275,6899639,7225514]),sinebow:(0,r.ColorList)("Sinebow","cyclical","Sinebow, cyclical color scheme from D3.js",[16728128,16666162,16473382,16149788,15695122,15174923,14458117,13740802,12892928,11978752,10999043,9953287,8972813,7860757,6879262,5831722,4849463,3931972,3079507,2357858,1635442,1109378,648082,317858,118193,49087,111053,303833,561890,1081837,1602292,2319098,3036157,3884287,4798463,5778172,6823928,7804402,8916458,9897952,10945493,11927752,12845243,13697708,14419357,15141773,15667837,16129133,16459357,16659022,16728128]),"category-10":(0,r.ColorList)("Category10","qualitative","Category10, categorical color scheme from D3.js / tab10 from Matplotlib (default in Matplotlib)",[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175]),"observable-10":(0,r.ColorList)("Observable10","qualitative","Observable10, categorical color scheme from D3.js",[4352464,15708440,16740956,7128496,3975505,16747191,10773490,9944053,10251086,9738400]),"tableau-10":(0,r.ColorList)("Tableau10","qualitative","Tableau10, categorical color scheme from D3.js",[5142951,15896108,14767961,7780274,5873999,15583561,11500193,16752039,10253663,12234923]),"simple-rainbow":(0,r.ColorList)("Simple rainbow","sequential","Simple 5-color rainbow (blue-green-yellow-orange-red)",[3367393,3516485,16383744,15501073,12526114]),"red-white-blue":(0,r.ColorList)("Red-White-Blue","diverging","Diverging color scheme with red-white-blue",[12526114,16777215,3367393]),"many-distinct":(0,r.ColorList)("Many-Distinct","qualitative","Customized color scheme combining colors from multiple standard schemes (Dark2, Set1, Set2)",[1810039,14245634,7696563,15149450,6727198,15117058,10909213,6710886,14948892,3636920,5091146,9981603,16744192,16777011,10901032,16220607,10066329,6734501,16551266,9281739,15174339,10934356,16767279,15058068,11776947])},e.ColorListNames=Object.keys(e.ColorLists),e.ColorListOptions=e.ColorListNames.map(i=>[i,e.ColorLists[i].label,(0,t.capitalize)(e.ColorLists[i].type),e.ColorLists[i].description]),e.ColorListOptionsScale=e.ColorListOptions.filter(i=>e.ColorLists[i[0]].type==="sequential"||e.ColorLists[i[0]].type==="diverging"||e.ColorLists[i[0]].type==="cyclical"),e.ColorListOptionsSet=e.ColorListOptions.filter(i=>e.ColorLists[i[0]].type==="qualitative");function n(i){return i in e.ColorLists?e.ColorLists[i]:(console.warn(`unknown color list named '${i}'`),e.ColorLists["red-yellow-blue"])}})(X2)),X2}var qm={},IE;function qa(){if(IE)return qm;
7IE=1,Object.defineProperty(qm,"__esModule",{value:!0}),qm.TableLegend=e,qm.ScaleLegend=t;function e(r){return{kind:"table-legend",table:r}}function t(r,n,i){return{kind:"scale-legend",minLabel:r,maxLabel:n,colors:i}}return qm}var wE;function ND(){return wE||(wE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ColorScale=e.DefaultColorScaleProps=void 0;const t=wn(),r=pa(),n=et(),i=qa(),c=Na(),o=ir();e.DefaultColorScaleProps={domain:[0,1],reverse:!1,listOrName:"red-yellow-blue",minLabel:"",maxLabel:""};var s;(function(h){function f(u){return _(u,"continuous")}h.create=f;function y(u){return _(u,"discrete")}h.createDiscrete=y;function _(u,m){const{domain:v,reverse:b,listOrName:P}={...e.DefaultColorScaleProps,...u},C=typeof P=="string"?(0,r.getColorListFromName)(P).list:P,l=b?C.slice().reverse():C;let S=0,T=0,A=0;function x(E,I){T=E,A=I,S=A-T||1}x(v[0],v[1]);const M=(0,n.defaults)(u.minLabel,T.toString()),D=(0,n.defaults)(u.maxLabel,A.toString());let V;if(l.every(E=>Array.isArray(E))){const E=[...l];E.sort((O,F)=>O[1]-F[1]);const I=E.map(O=>O[0]),B=c.SortedArray.ofSortedArray(E.map(O=>O[1])),w=I.length-1;switch(m){case"continuous":V=O=>g(O,I,B,T,w,S);break;case"discrete":V=O=>d(O,I,B,T,w,S);break}}else switch(m){case"continuous":V=E=>a(E,l,T,S);break;case"discrete":V=E=>p(E,l,T,A,S);break}return{color:V,colorToArray:(E,I,B)=>{t.Color.toArray(V(E),I,B)},normalizedColorToArray:(E,I,B)=>{t.Color.toArrayNormalized(V(E),I,B)},setDomain:x,get legend(){return(0,i.ScaleLegend)(M,D,l)}}}function g(u,m,v,b,P,C){const l=(0,o.clamp)((u-b)/C,0,1),S=c.SortedArray.findPredecessorIndex(v,l);if(S===0)return m[0];if(S>P)return m[P];const T=v[S-1],A=v[S],x=(0,o.clamp)((l-T)/(A-T),0,1);return t.Color.interpolate(m[S-1],m[S],x)}function a(u,m,v,b){const P=Math.min(m.length-1,Math.max(0,(u-v)/b*(m.length-1))),C=Math.floor(P),l=m[C],S=m[Math.ceil(P)];return t.Color.interpolate(l,S,P-C)}function d(u,m,v,b,P,C){if(m.length===0)return t.Color.fromRgb(0,0,0);const l=(0,o.clamp)((u-b)/C,0,1),S=c.SortedArray.findPredecessorIndex(v,l);return S===0?m[0]:S>P?m[P]:m[S]}function p(u,m,v,b,P){if(m.length===0)return t.Color.fromRgb(0,0,0);const C=P/m.length;if(u<=v)return m[0];if(u>=b)return m[m.length-1];const l=Math.min(m.length-1,Math.floor((u-v)/C));return m[l]}})(s||(e.ColorScale=s={}))})($2)),$2}var VE;function vt(){return VE||(VE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ColorScale=e.ColorTable=e.ColorMap=e.Color=void 0;var t=wn();Object.defineProperty(e,"Color",{enumerable:!0,get:function(){return t.Color}}),Object.defineProperty(e,"ColorMap",{enumerable:!0,get:function(){return t.ColorMap}}),Object.defineProperty(e,"ColorTable",{enumerable:!0,get:function(){return t.ColorTable}});var r=ND();Object.defineProperty(e,"ColorScale",{enumerable:!0,get:function(){return r.ColorScale}})})(W2)),W2}var Um={},EE;function lJ(){return EE||(EE=1,Object.defineProperty(Um,"__esModule",{value:!0}),Um.SaccharideNames=void 0,Um.SaccharideNames=new Set(["145","147","149","289","291","293","445","475","491","510","604","045","05L","07E","07Y","08U","09X","0AT","0BD","0H0","0HX","0LP","0MK","0NZ","0TS","0UB","0V4","0WK","0XY","0YT","10M","12E","14T","15L","16F","16G","16O","17T","18D","18O","18T","1AR","1BW","1CF","1FT","1GL","1GN","1JB","1LL","1NA","1S3","1S4","1SD","1X4","20S","20X","22O","22S","23V","24S","25E","26M","26O","26Q","26R","26V","26W","26Y","27C","2DG","2DR","2F8","2FG","2FL","2FP","2GL","2GS","2H5","2HA","2M4","2M5","2M8","2OS","2SI","2WP","2WS","32O","34V","38J","3BU","3CM","3DO","3DY","3FM","3GR","3HD","3J3","3J4","3LJ","3LR","3MF","3MG","3MK","3R3","3S6","3SA","3YW","40J","42D","44S","46D","46M","46Z","48Z","49A","49S","49T","49V","4AM","4CQ","4GC","4GL","4GP","4JA","4N2","4NN","4QY","4R1","4RS","4SG","4U0","4U1","4U2","4UZ","4V5","50A","51N","56N","57S","5DI","5GF","5GO","5II","5KQ","5KS","5KT","5KV","5L2","5L3","5LS","5LT","5MM","5N6","5QP","5RP","5SA","5SP","5TH","5TJ","5TK","5TM","61J","62I","64K","66O","6BG","6C2","6DM","6GB","6GP","6GR","6K3","6KH","6KL","6KS","6KU","6KW","6LA","6LS","6LW","6MJ","6MN","6PG","6PY","6PZ","6S2","6SA","6UD","6Y6","6YR","6ZC","73
7E","79J","7CV","7D1","7GP","7JZ","7K2","7K3","7NU","7SA","83Y","89Y","8B7","8B9","8EX","8GA","8GG","8GP","8I4","8LM","8LR","8OQ","8PK","8S0","8YV","95Z","96O","98U","9AM","9C1","9CD","9GP","9KJ","9MR","9OK","9PG","9QG","9QZ","9RN","9S7","9SG","9SJ","9SM","9SP","9T1","9T7","9VP","9WJ","9WN","9WZ","9YW","A0K","A1AIO","A1APB","A1APC","A1APD","A1CCV","A1CCW","A1CF3","A1CF4","A1CWR","A1E3E","A1EAX","A1EFW","A1EGT","A1EGV","A1EGW","A1EGX","A1EGY","A1EJ0","A1EJ2","A1EKO","A1EN6","A1H03","A1H0P","A1H0Z","A1H10","A1H1B","A1H1F","A1H1V","A1I0J","A1I0L","A1I9U","A1ID6","A1IH4","A1IVP","A1IZL","A1JAQ","A1JUC","A1L1P","A1Q","A2G","A5C","A6P","AAL","AAO","ABC","ABD","ABE","ABF","ABL","AC1","ACG","ACR","ACX","ADA","ADG","ADR","AF1","AFD","AFL","AFO","AFP","AFR","AGC","AGH","AGL","AGR","AH2","AH8","AHG","AHM","AHR","AIG","ALL","ALX","AMG","AMN","AMU","AMV","ANA","AOG","AOS","AQA","ARA","ARB","ARE","ARI","ARW","ASC","ASG","ASO","AXP","AXR","AY9","AZC","B0D","B16","B1H","B1N","B2G","B4G","B6D","B7G","B8D","B9D","BBK","BBV","BCD","BCW","BDF","BDG","BDP","BDR","BDZ","BEM","BFN","BFP","BG6","BG8","BGC","BGL","BGN","BGP","BGS","BHG","BM3","BM7","BMA","BMX","BND","BNG","BNX","BO1","BOG","BQY","BRI","BS7","BTG","BTU","BW3","BWG","BXF","BXP","BXX","BXY","BZD","C3B","C3G","C3X","C4B","C4W","C4X","C5X","CAP","CBF","CBI","CBK","CDR","CE5","CE6","CE8","CEG","CEX","CEY","CEZ","CGF","CJB","CKB","CKP","CNP","CR1","CR6","CRA","CT3","CTO","CTR","CTT","D0N","D1M","D5E","D6G","DAF","DAG","DAN","DDA","DDB","DDL","DEG","DEL","DFR","DFX","DG0","DGC","DGD","DGM","DGO","DGS","DGU","DIG","DJB","DJE","DK4","DKX","DKZ","DL6","DLD","DLF","DLG","DMU","DNO","DO8","DOM","DP5","DPC","DQQ","DQR","DR2","DR3","DR4","DR5","DRI","DSR","DT6","DVC","DYM","E3M","E4P","E5G","EAG","EBG","EBQ","ED6","EEN","EEQ","EGA","EJT","EMP","EMZ","EPG","EQP","EQV","ERE","ERI","ETT","EUS","F1P","F1X","F55","F58","F6P","F8X","FBP","FCA","FCB","FCT","FDP","FDQ","FFC","FFX","FIF","FIX","FK9","FKD","FMF","FMO","FNG","FNY","FRU","FSA","FSI","FSM","FSR","FSW","FU4","FUB","FUC","FUD","FUF","FUL","FUY","FVQ","FX1","FYJ","G0S","G16","G1P","G20","G28","G2F","G3F","G3I","G4D","G4S","G6D","G6P","G6S","G7P","G8Z","GAA","GAC","GAD","GAF","GAL","GAT","GBH","GC1","GC4","GC9","GCB","GCD","GCN","GCO","GCS","GCT","GCU","GCV","GCW","GDA","GDL","GE1","GE3","GFP","GIV","GL0","GL1","GL2","GL4","GL5","GL6","GL7","GL9","GLA","GLB","GLC","GLD","GLF","GLG","GLO","GLP","GLS","GLT","GLW","GM0","GMB","GMH","GMT","GMZ","GN1","GN4","GNS","GNX","GP0","GP1","GP4","GPH","GPK","GPM","GPO","GPQ","GPU","GPV","GPW","GQ1","GRF","GRX","GS1","GS4","GS9","GSA","GSD","GTE","GTH","GTK","GTM","GTR","GU0","GU1","GU2","GU3","GU4","GU5","GU6","GU8","GU9","GUF","GUL","GUP","GUZ","GXL","GXV","GYE","GYG","GYP","GYU","GYV","GZL","H1M","H1S","H2P","H3S","H53","H6Q","H6Z","HBZ","HD4","HDL","HLA","HMS","HNV","HNW","HSG","HSH","HSJ","HSQ","HSR","HSU","HSX","HSY","HSZ","HTG","HTM","HVC","I57","IAB","IDC","IDF","IDG","IDR","IDS","IDT","IDU","IDX","IDY","IEM","IN1","IPT","ISD","ISL","ISX","IVG","IXD","J5B","JFZ","JHM","JLT","JRV","JS2","JSV","JV4","JVA","JVS","JZR","K5B","K99","KBA","KBG","KD5","KDA","KDB","KDD","KDE","KDF","KDM","KDN","KDO","KDR","KFN","KG1","KGM","KHP","KME","KO1","KO2","KOT","KQC","KTU","L1L","L6N","L6S","L6T","LAG","LAH","LAI","LAK","LAO","LAT","LB2","LBS","LBT","LCN","LDY","LEC","LER","LFC","LFR","LGC","LGU","LKA","LKS","LM2","LMO","LMT","LMU","LNV","LOG","LOX","LPK","LRH","LSM","LTG","LTM","LVO","LVZ","LXB","LXC","LXZ","LZ0","M1F","M1P","M2F","M3M","M3N","M55","M6D","M6P","M7B","M7P","M8C","MA1","MA2","MA3","MA8","MAB","MAF","MAG","MAL","MAN","MAT","MAV","MAW","MBE","MBF","MBG","MCU","MDA","MDP","MFA","MFB","MFU","MG5","MGA","MGC","MGL","MGS","MJJ","MLB","MLR","MMA","MMN","MN0","MNA","MQG","MQT","MRH","MRP","MSX","MTT","MUB","MUG","MUR","MVP","MXY","MXZ","MYG","N1L","N3U","N9S","NA1","NAA","NAG","NBG","NBX","NBY","NDG","NED","NFG","NG1","NG6","NGA","NGB","NGC","NGE","NGF","NGK","NGL","NGR","NGS","NGY","NGZ","NHF","NLC","NM6","NM9","NNG","NOJ","NPF","NSQ","NT1","NTF","NTO","NTP","NXD","NYT","O1G","OAK","OEL","OI7","OPM","ORP","OSU","OTG","OTN","OTU","OX2","P53","P6P","P8E","PA1","PA5","PAV","PDX","PH5","PKM","PNA","PNG","PNJ","PNW","PPC","PRP","PSG","PSJ","PSV","PTQ","PUF","PZU","QDK","QIF","QKH","QPS","QV4","R1P","R1X","R2B","R2G","R5P","RAA","RAE","RAF","RAM","RAO","RAT","RB5","RBL","RCD","RDP","REL","RER","RF5","RG1","RGG","RHA","RHC","RI2","RIB","RIP","RM4","RNS","RNT","ROB","ROR","RP3","RP5","RP6","RPA","RR7","RRJ","RRY","RST","RTG","RTV","RUB","RUG","RUU","RV7","RVG","RVM","RWI","RY7","R
7ZM","S6P","S7P","S81","SA0","SCG","SCR","SDD","SDY","SEJ","SF6","SF9","SFJ","SFU","SG4","SG5","SG6","SG7","SGA","SGC","SGD","SGN","SGS","SHB","SHD","SHG","SI3","SIA","SID","SIO","SIZ","SLB","SLM","SLT","SMD","SN5","SNG","SOE","SOG","SOL","SOR","SR1","SSG","SSH","STW","STZ","SUC","SUP","SUS","SWE","SZZ","T68","T6D","T6P","T6T","TA6","TAG","TCB","TCG","TDG","TEU","TF0","TFU","TGA","TGK","TGR","TGY","TH1","TM5","TM6","TM9","TMR","TMX","TNX","TOA","TOC","TQY","TRE","TRV","TS8","TT7","TTV","TTZ","TU4","TUG","TUJ","TUP","TUR","TVD","TVG","TVM","TVS","TVV","TVY","TW7","TWA","TWD","TWG","TWJ","TWY","TXB","TY6","TYV","U1Y","U2A","U2D","U63","U8V","U97","U9A","U9D","U9G","U9J","U9M","UAP","UBH","UBO","UCD","UDC","UEA","V3M","V3P","V71","VDF","VG1","VJ1","VJ4","VPH","VPQ","VTB","W9T","WIA","WKO","WKT","WOO","WT8","WUN","WZ1","WZ2","WZ4","X0X","X1P","X1X","X2F","X2Y","X34","X4S","X5S","X6N","X6X","X6Y","X6Z","XBP","XDP","XDX","XGP","XIL","XIQ","XKJ","XLF","XLS","XMM","XS2","XUL","XXM","XXR","XXX","XY6","XY9","XYB","XYF","XYL","XYP","XYS","XYT","XYZ","Y8W","Y98","YDR","YIO","YJM","YKR","YO5","YX0","YX1","YYB","YYD","YYH","YYJ","YYK","YYM","YYQ","YYR","YZ0","YZT","Z0F","Z15","Z16","Z2D","Z2T","Z3K","Z3L","Z3Q","Z3U","Z4K","Z4R","Z4S","Z4U","Z4V","Z4W","Z4Y","Z57","Z5J","Z5L","Z61","Z6G","Z6H","Z6J","Z6W","Z8H","Z8T","Z9D","Z9E","Z9H","Z9K","Z9L","Z9M","Z9N","Z9W","ZB0","ZB1","ZB2","ZB3","ZCD","ZCZ","ZD0","ZDC","ZDM","ZDO","ZEE","ZEL","ZGE","ZMR","UMQ","SQD"])),Um}var BE;function xf(){return BE||(BE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SaccharideCompIdMap=e.MonosaccharidesColorTable=e.SaccharidesSnfgMap=e.UnknownSaccharideComponent=e.SaccharideType=e.SaccharideColors=e.SaccharideShape=void 0,e.getSaccharideName=o,e.getSaccharideShape=h,e.setSaccharideCompIdMapType=p;const t=vt(),r=lJ();var n;(function(u){u[u.FilledSphere=0]="FilledSphere",u[u.FilledCube=1]="FilledCube",u[u.CrossedCube=2]="CrossedCube",u[u.Divi
7dedDiamond=3]="DividedDiamond",u[u.FilledCone=4]="FilledCone",u[u.DevidedCone=5]="DevidedCone",u[u.FlatBox=6]="FlatBox",u[u.FilledStar=7]="FilledStar",u[u.FilledDiamond=8]="FilledDiamond",u[u.FlatDiamond=9]="FlatDiamond",u[u.FlatHexagon=10]="FlatHexagon",u[u.Pentagon=11]="Pentagon",u[u.DiamondPrism=12]="DiamondPrism",u[u.PentagonalPrism=13]="PentagonalPrism",u[u.HexagonalPrism=14]="HexagonalPrism",u[u.HeptagonalPrism=15]="HeptagonalPrism"})(n||(e.SaccharideShape=n={})),e.SaccharideColors=(0,t.ColorMap)({Blue:37052,Green:42577,Yellow:16765952,Orange:16021792,Pink:16162465,Purple:10830745,LightBlue:9424105,Brown:10582605,Red:15539236,Secondary:15854817});var i;(function(u){u[u.Hexose=0]="Hexose",u[u.HexNAc=1]="HexNAc",u[u.Hexosamine=2]="Hexosamine",u[u.Hexuronate=3]="Hexuronate",u[u.Deoxyhexose=4]="Deoxyhexose",u[u.DeoxyhexNAc=5]="DeoxyhexNAc",u[u.DiDeoxyhexose=6]="DiDeoxyhexose",u[u.Pentose=7]="Pentose",u[u.Deoxynonulosonate=8]="Deoxynonulosonate",u[u.DiDeoxynonulosonate=9]="DiDeoxynonulosonate",u[u.Unknown=10]="Unknown",u[u.Assigned=11]="Assigned"})(i||(e.SaccharideType=i={}));const c={[i.Hexose]:"Hexose",[i.HexNAc]:"HexNAc",[i.Hexosamine]:"Hexosamine",[i.Hexuronate]:"Hexuronate",[i.Deoxyhexose]:"Deoxyhexose",[i.DeoxyhexNAc]:"DeoxyhexNAc",[i.DiDeoxyhexose]:"Di-deoxyhexose",[i.Pentose]:"Pentose",[i.Deoxynonulosonate]:"Deoxynonulosonate",[i.DiDeoxynonulosonate]:"Di-deoxynonulosonate",[i.Unknown]:"Unknown",[i.Assigned]:"Assigned"};function o(u){return c[u]}const s={[i.Hexose]:n.FilledSphere,[i.HexNAc]:n.FilledCube,[i.Hexosamine]:n.CrossedCube,[i.Hexuronate]:n.DividedDiamond,[i.Deoxyhexose]:n.FilledCone,[i.DeoxyhexNAc]:n.DevidedCone,[i.DiDeoxyhexose]:n.FlatBox,[i.Pentose]:n.FilledStar,[i.Deoxynonulosonate]:n.FilledDiamond,[i.DiDeoxynonulosonate]:n.FlatDiamond,[i.Unknown]:n.FlatHexagon,[i.Assigned]:n.Pentagon};function h(u,m){return u===i.Unknown?m===4?n.DiamondPrism:m===5?n.PentagonalPrism:m===6?n.HexagonalPrism:m===7?n.HeptagonalPrism:n.FlatHexagon:s[u]}e.UnknownSaccharideComponent={abbr:"Unk",name:"Unknown",color:e.SaccharideColors.Secondary,type:i.Unknown};const f=[{abbr:"Glc",name:"Glucose",color:e.SaccharideColors.Blue,type:i.Hexose},{abbr:"Man",name:"Mannose",color:e.SaccharideColors.Green,type:i.Hexose},{abbr:"Gal",name:"Galactose",color:e.SaccharideColors.Yellow,type:i.Hexose},{abbr:"Gul",name:"Gulose",color:e.SaccharideColors.Orange,type:i.Hexose},{abbr:"Alt",name:"Altrose",color:e.SaccharideColors.Pink,type:i.Hexose},{abbr:"All",name:"Allose",color:e.SaccharideColors.Purple,type:i.Hexose},{abbr:"Tal",name:"Talose",color:e.SaccharideColors.LightBlue,type:i.Hexose},{abbr:"Ido",name:"Idose",color:e.SaccharideColors.Brown,type:i.Hexose},{abbr:"GlcNAc",name:"N-Acetyl Glucosamine",color:e.SaccharideColors.Blue,type:i.HexNAc},{abbr:"ManNAc",name:"N-Acetyl Mannosamine",color:e.SaccharideColors.Green,type:i.HexNAc},{abbr:"GalNAc",name:"N-Acetyl Galactosamine",color:e.SaccharideColors.Yellow,type:i.HexNAc},{abbr:"GulNAc",name:"N-Acetyl Gulosamine",color:e.SaccharideColors.Orange,type:i.HexNAc},{abbr:"AltNAc",name:"N-Acetyl Altrosamine",color:e.SaccharideColors.Pink,type:i.HexNAc},{abbr:"AllNAc",name:"N-Acetyl Allosamine",color:e.SaccharideColors.Purple,type:i.HexNAc},{abbr:"TalNAc",name:"N-Acetyl Talosamine",color:e.SaccharideColors.LightBlue,type:i.HexNAc},{abbr:"IdoNAc",name:"N-Acetyl Idosamine",color:e.SaccharideColors.Brown,type:i.HexNAc},{abbr:"GlcN",name:"Glucosamine",color:e.SaccharideColors.Blue,type:i.Hexosamine},{abbr:"ManN",name:"Mannosamine",color:e.SaccharideColors.Green,type:i.Hexosamine},{abbr:"GalN",name:"Galactosamine",color:e.SaccharideColors.Yellow,type:i.Hexosamine},{abbr:"GulN",name:"Gulosamine",color:e.SaccharideColors.Orange,type:i.Hexosamine},{abbr:"AltN",name:"Altrosamine",color:e.SaccharideColors.Pink,type:i.Hexosamine},{abbr:"AllN",name:"Allosamine",color:e.SaccharideColors.Purple,type:i.Hexosamine},{abbr:"TalN",name:"Talosamine",color:e.SaccharideColors.LightBlue,type:i.Hexosamine},{abbr:"IdoN",name:"Idosamine",color:e.SaccharideColors.Brown,type:i.Hexosamine},{abbr:"GlcNS",name:"N-sulfo Glucosamine",color:e.SaccharideColors.Blue,type:i.Hexosamine},{abbr:"GlcA",name:"Glucuronic Acid",color:e.SaccharideColors.Blue,type:i.Hexuronate},{abbr:"ManA",name:"Mannuronic Acid",color:e.SaccharideColors.Green,type:i.Hexuronate},{abbr:"GalA",name:"Galacturonic Acid",color:e.SaccharideColors.Yellow,type:i.Hexuronate},{abbr:"GulA",name:"Guluronic Acid",color:e.SaccharideColors.Orange,type:i.Hexuronate},{abbr:"AltA",name:"Altruronic Acid",color:e.SaccharideColors.Pink,type:i.Hexuronate},{abbr:"AllA",name:"Alluronic Acid",color:e.SaccharideColors.Purple,type:i.Hexuronate},{abbr:"TalA",name:"Taluronic Acid",color:e.SaccharideColors.LightBlue,type:i.Hexuronate},{abbr:"IdoA",name:"Iduronic Acid",color:e.SaccharideColors.Brown,type:i.Hexuronate},{abbr:"Qui",name:"Quinovose",color:e.SaccharideColors.Blue,type:i.Deoxyhexose},{abbr:"Rha",name:"Rhamnose",color:e.SaccharideColors.Green,type:i.Deoxyhexose},{abbr:"6dGul",name:"6-Deoxy Gulose",color:e.SaccharideColors.Orange,type:i.Deoxyhexose},{abbr:"6dAlt",name:"6-Deoxy Altrose",color:e.SaccharideColors.Pink,type:i.Deoxyhexose},{abbr:"6dTal",name:"6-Deoxy Talose",color:e.SaccharideColors.LightBlue,type:i.Deoxyhexose},{abbr:"Fuc",name:"Fucose",color:e.SaccharideColors.Red,type:i.Deoxyhexose},{abbr:"QuiNAc",name:"N-Acetyl Quinovosamine",color:e.SaccharideColors.Blue,type:i.DeoxyhexNAc}
7,{abbr:"RhaNAc",name:"N-Acetyl Rhamnosamine",color:e.SaccharideColors.Green,type:i.DeoxyhexNAc},{abbr:"6dAltNAc",name:"N-Acetyl 6-Deoxy Altrosamine",color:e.SaccharideColors.Pink,type:i.DeoxyhexNAc},{abbr:"6dTalNAc",name:"N-Acetyl 6-Deoxy Talosamine",color:e.SaccharideColors.LightBlue,type:i.DeoxyhexNAc},{abbr:"FucNAc",name:"N-Acetyl Fucosamine",color:e.SaccharideColors.Red,type:i.DeoxyhexNAc},{abbr:"AAT",name:"AAT",color:e.SaccharideColors.Red,type:i.DeoxyhexNAc},{abbr:"Oli",name:"Olivose",color:e.SaccharideColors.Blue,type:i.DiDeoxyhexose},{abbr:"Tyv",name:"Tyvelose",color:e.SaccharideColors.Green,type:i.DiDeoxyhexose},{abbr:"Abe",name:"Abequose",color:e.SaccharideColors.Orange,type:i.DiDeoxyhexose},{abbr:"Par",name:"Paratose",color:e.SaccharideColors.Pink,type:i.DiDeoxyhexose},{abbr:"Dig",name:"Digitoxose",color:e.SaccharideColors.Purple,type:i.DiDeoxyhexose},{abbr:"Col",name:"Colitose",color:e.SaccharideColors.LightBlue,type:i.DiDeoxyhexose},{abbr:"Ara",name:"Arabinose",color:e.SaccharideColors.Green,type:i.Pentose},{abbr:"Lyx",name:"Lyxose",color:e.SaccharideColors.Yellow,type:i.Pentose},{abbr:"Xyl",name:"Xylose",color:e.SaccharideColors.Orange,type:i.Pentose},{abbr:"Rib",name:"Ribose",color:e.SaccharideColors.Pink,type:i.Pentose},{abbr:"Kdn",name:"Keto-Deoxy Nonulonic Acid",color:e.SaccharideColors.Green,type:i.Deoxynonulosonate},{abbr:"Neu5Ac",name:"N-Acetyl Neuraminic Acid",color:e.SaccharideColors.Purple,type:i.Deoxynonulosonate},{abbr:"Neu5Gc",name:"N-Glycolyl Neuraminic Acid",color:e.SaccharideColors.LightBlue,type:i.Deoxynonulosonate},{abbr:"Neu",name:"Neuraminic Acid",color:e.SaccharideColors.Brown,type:i.Deoxynonulosonate},{abbr:"Sia",name:"Sialic acid",color:e.SaccharideColors.Red,type:i.Deoxynonulosonate},{abbr:"Pse",name:"Pseudaminic Acid",color:e.SaccharideColors.Green,type:i.DiDeoxynonulosonate},{abbr:"Leg",name:"Legionaminic Acid",color:e.SaccharideColors.Yellow,type:i.DiDeoxynonulosonate},{abbr:"Aci",name:"Acinetaminic Acid",color:e.SaccharideColors.Pink,type:i.DiDeoxynonulosonate},{abbr:"4eLeg",name:"4-Epilegionaminic Acid",color:e.SaccharideColors.LightBlue,type:i.DiDeoxynonulosonate},{abbr:"Bac",name:"Bacillosamine",color:e.SaccharideColors.Blue,type:i.Unknown},{abbr:"LDmanHep",name:"L-Glycero-D-Manno Heptose",color:e.SaccharideColors.Green,type:i.Unknown},{abbr:"Kdo",name:"Keto-Deoxy Octulonic Acid",color:e.SaccharideColors.Yellow,type:i.Unknown},{abbr:"Dha",name:"3-Deoxy Lyxo-Heptulosaric Acid",color:e.SaccharideColors.Orange,type:i.Unknown},{abbr:"DDmanHep",name:"D-Glycero-D-Manno-Heptose",color:e.SaccharideColors.Pink,type:i.Unknown},{abbr:"MurNAc",name:"N-Acetyl Muramic Acid",color:e.SaccharideColors.Purple,type:i.Unknown},{abbr:"MurNGc",name:"N-Glycolyl Muramic Acid",color:e.SaccharideColors.LightBlue,type:i.Unknown},{abbr:"Mur",name:"Muramic Acid",color:e.SaccharideColors.Brown,type:i.Unknown},{abbr:"K3O",name:"D-glycero-a-D-talo-oct-2-Ulosonic Acid",color:e.SaccharideColors.Red,type:i.Unknown},{abbr:"dUA",name:"4-deoxy-4,5-didehydro iduronic acid",color:e.SaccharideColors.Secondary,type:i.Unknown},{abbr:"Api",name:"Apicose",color:e.SaccharideColors.Green,type:i.Assigned},{abbr:"Fru",name:"Fructose",color:e.SaccharideColors.Green,type:i.Assigned},{abbr:"Tag",name:"Tagatose",color:e.SaccharideColors.Yellow,type:i.Assigned},{abbr:"Sor",name:"Sorbose",color:e.SaccharideColors.Orange,type:i.Assigned},{abbr:"Psi",name:"Psicose",color:e.SaccharideColors.Pink,type:i.Assigned}];e.SaccharidesSnfgMap=(function(){const u=new Map;for(let m=0,v=f.length;m<v;++m){const b=f[m];u.set(b.abbr,b)}return u})(),e.MonosaccharidesColorTable=[["Glc-family",e.SaccharideColors.Blue],["Man-family",e.SaccharideColors.Green],["Gal-family",e.SaccharideColors.Yellow],["Gul-family",e.SaccharideColors.Orange],["Alt-family",e.SaccharideColors.Pink],["All-family",e.SaccharideColors.Purple],["Tal-family",e.SaccharideColors.LightBlue],["Ido-family",e.SaccharideColors.Brown],["Fuc-family",e.SaccharideColors.Red],["Generic/Unknown/Secondary",e.SaccharideColors.Secondary]];const y={Glc:["GLC","BGC","Z8T","TRE","MLR"],Man:["MAN","BMA"],Gal:["GLA","GAL","GZL","GXL","GIV"],Gul:["4GL","GL0","GUP","Z8H"],Alt:["Z6H","3MK","SHD"],All:["AFD","ALL","WOO","Z2D"],Tal:["ZEE","A5C","SDY"],Ido:["ZCD","Z0F","4N2"],GlcNAc:["NDG","NAG","NGZ"],ManNAc:["BM3","BM7"],GalNAc:["A2G","NGA","YYQ"],GulNAc:["LXB"],AltNAc:[],AllNAc:["NAA"],TalNAc:[],IdoNAc:["LXZ","HSQ"],GlcN:["PA1","GCS"],ManN:["95Z"],GalN:["X6X","1GN"],GulN:[],AltN:[],AllN:[],TalN:[],IdoN:[],GlcA:["GCU","BDP"],ManA:["MAV","BEM"],GalA:["ADA","GTR","GTK"],GulA:["LGU"],AltA:[],AllA:[],TalA:["X1X","X0X"],IdoA:["IDR"],Qui:["G6D","YYK"],Rha:["RAM","RM4","XXR"],"6dGul":["66O"],"6dAlt":[],"6dTal":[],Fuc:["FUC","FUL","FCA","FCB","GYE"],QuiNAc:["Z9W"],RhaNAc:[],"6dAltNAc":[],"6dTalNAc":[],FucNAc:["49T"],Oli:["DDA","RAE","Z5J"],Tyv:["TYV"],Abe:["ABE"],Par:["PZU"],Dig:["Z3U"],Col:[],Ara:["64K","ARA","ARB","AHR","FUB","BXY","BXX","SEJ"],Lyx:["LDY","Z4W"],Xyl:["XYS","XYP","XYZ","HSY","LXC"],Rib:["YYM","RIP","RIB","BDR","0MK","Z6J","32O"],Kdn:["KDM","KDN"],Neu5Ac:["SIA","SLB"],Neu5Gc:["NGC","NGE"],Neu:[],Sia:[],Pse:[],Leg:[],Aci:[],"4eLeg":[],Bac:[],LDmanHep:["GMH"],Kdo:["KDO"],Dha:[],DDmanHep:["289"],MurNAc:["MUB","AMU"],MurNGc:[],Mur:["1S4","MUR"],Api:["XXM"],Fru:["BDF","Z9N","FRU","LFR"],Tag:["T6T"],Sor:["SOE","UEA"],Psi:["PSV","SF6","SF9","TTV"]},_={Glc:["AGLC","BGLC"],GlcNAc:["AGLCNA","BGLCNA","BGLCN0"],GlcA:["AGLCA","BGLCA","BGLCA0"],Man:["AMAN","BMAN"],Rha:["ARHM","BRHM"],Ara:["AARB","BARB"],Gal:["AGAL","BGAL"],GalNAc:["AGALNA","BGALNA"],Gul:["AGUL","BGUL"],Alt:["AALT","BALT"],All:["AALL","BALL"],Tal:["ATAL","BTAL"],Ido:["AIDO","BI
7DO"],IdoA:["AIDOA","BIDOA"],Fuc:["AFUC","BFUC"],Lyx:["ALYF","BLYF"],Xyl:["AXYL","BXYL","AXYF","BXYF"],Rib:["ARIB","BRIB"],Fru:["AFRU","BFRU"],Neu5Ac:["ANE5AC","BNE5AC"]},g={Glc:["0GA","0GB","1GA","1GB","2GA","2GB","3GA","3GB","4GA","4GB","6GA","6GB","ZGA","ZGB","YGA","YGB","XGA","XGB","WGA","WGB","VGA","VGB","UGA","UGB","TGA","TGB","SGA","SGB","RGA","RGB","QGA","QGB","PGA","PGB","0gA","0gB","1gA","1gB","2gA","2gB","3gA","3gB","4gA","4gB","6gA","6gB","ZgA","ZgB","YgA","YgB","XgA","XgB","WgA","WgB","VgA","VgB","UgA","UgB","TgA","TgB","SgA","SgB","RgA","RgB","QgA","QgB","PgA","PgB"],GlcNAc:["0YA","0YB","1YA","1YB","3YA","3YB","4YA","4YB","6YA","6YB","WYA","WYB","VYA","VYB","UYA","UYB","QYA","QYB","0yA","0yB","1yA","1yB","3yA","3yB","4yA","4yB","6yA","6yB","WyA","WyB","VyA","VyB","UyA","UyB","QyA","QyB","0YS","0Ys","3YS","3Ys","4YS","4Ys","6YS","6Ys","QYS","QYs","UYS","UYs","VYS","VYs","WYS","WYs","0yS","0ys","3yS","3ys","4yS","4ys"],GlcA:["0ZA","0ZB","1ZA","1ZB","2ZA","2ZB","3ZA","3ZB","4ZA","4ZB","ZZA","ZZB","YZA","YZB","WZA","WZB","TZA","TZB","0zA","0zB","1zA","1zB","2zA","2zB","3zA","3zB","4zA","4zB","ZzA","ZzB","YzA","YzB","WzA","WzB","TzA","TzB","TZBP","WZBP","YZBP","4ZBP","ZZBP","3ZBP","2ZBP","1ZBP","0ZBP","0ZF","1ZF","4ZF","0Zf","1Zf","4Zf"],GlcN:["0YN","3YN","4YN","6YN","WYN","VYN","UYN","QYN","3Yn","4Yn","WYn","0Yn","0YP","3YP","4YP","6YP","WYP","VYP","UYP","QYP","0Yp","3Yp","4Yp","WYp","QYN","WYN","VYN","3YN","UYN","4YN","6YN","1YN","0YN","QYn","VYn","WYn","3Yn","UYn","6Yn","4Yn","1Yn","0Yn","QYNP","WYNP","VYNP","3YNP","UYNP","4YNP","6YNP","1YNP","0YNP","QYnP","UYnP","VYnP","6YnP","WYnP","4YnP","3YnP","1YnP","0YnP"],Man:["0MA","0MB","1MA","1MB","2MA","2MB","3MA","3MB","4MA","4MB","6MA","6MB","ZMA","ZMB","YMA","YMB","XMA","XMB","WMA","WMB","VMA","VMB","UMA","UMB","TMA","TMB","SMA","SMB","RMA","RMB","QMA","QMB","PMA","PMB","0mA","0mB","1mA","1mB","2mA","2mB","3mA","3mB","4mA","4mB","6mA","6mB","ZmA","ZmB","YmA","YmB","XmA","XmB","WmA","WmB","VmA","VmB","UmA","UmB","TmA","TmB","SmA","SmB","RmA","RmB","QmA","QmB","PmA","PmB"],ManNAc:["0WA","0WB","1WA","1WB","3WA","3WB","4WA","4WB","6WA","6WB","WWA","WWB","VWA","VWB","UWA","UWB","QWA","QWB","0wA","0wB","1wA","1wB","3wA","3wB","4wA","4wB","6wA","6wB","WwA","WwB","VwA","VwB","UwA","UwB","QwA","QwB"],Ara:["0AA","0AB","1AA","1AB","2AA","2AB","3AA","3AB","4AA","4AB","ZAA","ZAB","YAA","YAB","WAA","WAB","TAA","TAB","0AD","0AU","1AD","1AU","2AD","2AU","3AD","3AU","5AD","5AU","ZAD","ZAU","0aA","0aB","1aA","1aB","2aA","2aB","3aA","3aB","4aA","4aB","ZaA","ZaB","YaA","YaB","WaA","WaB","TaA","TaB","0aD","0aU","1aD","1aU","2aD","2aU","3aD","3aU","5aD","5aU","ZaD","ZaU"],Gal:["0LA","0LB","1LA","1LB","2LA","2LB","3LA","3LB","4LA","4LB","6LA","6LB","ZLA","ZLB","YLA","YLB","XLA","XLB","WLA","WLB","VLA","VLB","ULA","ULB","TLA","TLB","SLA","SLB","RLA","RLB","QLA","QLB","PLA","PLB","0lA","0lB","1lA","1lB","2lA","2lB","3lA","3lB","4lA","4lB","6lA","6lB","ZlA","ZlB","YlA","YlB","XlA","XlB","WlA","WlB","VlA","VlB","UlA","UlB","TlA","TlB","SlA","SlB","RlA","RlB","QlA","QlB","PlA","PlB"],GalNAc:["0VA","0VB","1VA","1VB","3VA","3VB","4VA","4VB","6VA","6VB","WVA","WVB","VVA","VVB","UVA","UVB","QVA","QVB","0vA","0vB","1vA","1vB","3vA","3vB","4vA","4vB","6vA","6vB","WvA","WvB","VvA","VvB","UvA","UvB","QvA","QvB"],GalA:["0OA","0OB","1OA","1OB","2OA","2OB","3OA","3OB","4OA","4OB","ZOA","ZOB","YOA","YOB","WOA","WOB","TOA","TOB","0oA","0oB","1oA","1oB","2oA","2oB","3oA","3oB","4oA","4oB","ZoA","ZoB","YoA","YoB","WoA","WoB","ToA","ToB"],Gul:["0KA","0KB","1KA","1KB","2KA","2KB","3KA","3KB","4KA","4KB","6KA","6KB","ZKA","ZKB","YKA","YKB","XKA","XKB","WKA","WKB","VKA","VKB","UKA","UKB","TKA","TKB","SKA","SKB","RKA","RKB","QKA","QKB","PKA","PKB","0kA","0kB","1kA","1kB","2kA","2kB","3kA","3kB","4kA","4kB","6kA","6kB","ZkA","ZkB","YkA","YkB","XkA","XkB","WkA","WkB","VkA","VkB","UkA","UkB","TkA","TkB","SkA","SkB","RkA","RkB","QkA","QkB","PkA","PkB"],Alt:["0EA","0EB","1EA","1EB","2EA","2EB","3EA","3EB","4EA","4EB","6EA","6EB","ZEA","ZEB","YEA","YEB","XEA","XEB","WEA","WEB","VEA","VEB","UEA","UEB","TEA","TEB","SEA","SEB","REA","REB","QEA","QEB","PEA","PEB","0eA","0eB","1eA","1eB","2eA","2eB","3eA","3eB","4eA","4eB","6eA","6eB","ZeA","ZeB","YeA","YeB","XeA","XeB","WeA","WeB","VeA","VeB","UeA","UeB","TeA","TeB","SeA","SeB","ReA","ReB","QeA","QeB","PeA","PeB"],All:["0NA","0NB","1NA","1NB","2NA","2NB","3NA","3NB","4NA","4NB","6NA","6NB","ZNA","ZNB","YNA","YNB","XNA","XNB","WNA","WNB","VNA","VNB","UNA","UNB","TNA","TNB","SNA","SNB","RNA","RNB","QNA","QNB","PNA","PNB","0nA","0nB","1nA","1nB","2nA","2nB","3nA","3nB","4nA","4nB","6nA","6nB","ZnA","ZnB","YnA","YnB","XnA","XnB","WnA","WnB","VnA","VnB","UnA","UnB","TnA","TnB","SnA","SnB","RnA","RnB","QnA","QnB","PnA","PnB"],Tal:["0TA","0TB","1TA","1TB","2TA","2TB","3TA","3TB","4TA","4TB","6TA","6TB","ZTA","ZTB","YTA","YTB","XTA","XTB","WTA","WTB","VTA","VTB","UTA","UTB","TTA","TTB","STA","STB","RTA","RTB","QTA","QTB","PTA","PTB","0tA","0tB","1tA","1tB","2tA","2tB","3tA","3tB","4tA","4tB","6tA","6tB","ZtA","ZtB","YtA","YtB","XtA","XtB","WtA","WtB","VtA","VtB","UtA","UtB","TtA","TtB","StA","StB","RtA","RtB","QtA","QtB","PtA","PtB"],Ido:["0IA","0IB","1IA","1IB","2IA","2IB","3IA","3IB","4IA","4IB","6IA","6
7IB","ZIA","ZIB","YIA","YIB","XIA","XIB","WIA","WIB","VIA","VIB","UIA","UIB","TIA","TIB","SIA","SIB","RIA","RIB","QIA","QIB","PIA","PIB","0iA","0iB","1iA","1iB","2iA","2iB","3iA","3iB","4iA","4iB","6iA","6iB","ZiA","ZiB","YiA","YiB","XiA","XiB","WiA","WiB","ViA","ViB","UiA","UiB","TiA","TiB","SiA","SiB","RiA","RiB","QiA","QiB","PiA","PiB"],IdoA:["0UA","0UB","1UA","1UB","2UA","2UB","3UA","3UB","4UA","4UB","ZUA","ZUB","YUA","YUB","WUA","WUB","TUA","TUB","0uA","0uB","1uA","1uB","2uA","2uB","3uA","3uB","4uA","4uB","ZuA","ZuB","YuA","YuB","WuA","WuB","TuA","TuB","YuAP"],Fuc:["0FA","0FB","1FA","1FB","2FA","2FB","3FA","3FB","4FA","4FB","ZFA","ZFB","YFA","YFB","WFA","WFB","TFA","TFB","0fA","0fB","1fA","1fB","2fA","2fB","3fA","3fB","4fA","4fB","ZfA","ZfB","YfA","YfB","WfA","WfB","TfA","TfB"],Rha:["0HA","0HB","1HA","1HB","2HA","2HB","3HA","3HB","4HA","4HB","ZHA","ZHB","YHA","YHB","WHA","WHB","THA","THB","0hA","0hB","1hA","1hB","2hA","2hB","3hA","3hB","4hA","4hB","ZhA","ZhB","YhA","YhB","WhA","WhB","ThA","ThB"],Qui:["0QA","0QB","1QA","1QB","2QA","2QB","3QA","3QB","4QA","4QB","ZQA","ZQB","YQA","YQB","WQA","WQB","TQA","TQB","0qA","0qB","1qA","1qB","2qA","2qB","3qA","3qB","4qA","4qB","ZqA","ZqB","YqA","YqB","WqA","WqB","TqA","TqB"],Lyx:["0DA","0DB","1DA","1DB","2DA","2DB","3DA","3DB","4DA","4DB","ZDA","ZDB","YDA","YDB","WDA","WDB","TDA","TDB","0DD","0DU","1DD","1DU","2DD","2DU","3DD","3DU","5DD","5DU","ZDD","ZDU","0dA","0dB","1dA","1dB","2dA","2dB","3dA","3dB","4dA","4dB","ZdA","ZdB","YdA","YdB","WdA","WdB","TdA","TdB","0dD","0dU","1dD","1dU","2dD","2dU","3dD","3dU","5dD","5dU","ZdD","ZdU"],Xyl:["0XA","0XB","1XA","1XB","2XA","2XB","3XA","3XB","4XA","4XB","ZXA","ZXB","YXA","YXB","WXA","WXB","TXA","TXB","0XD","0XU","1XD","1XU","2XD","2XU","3XD","3XU","5XD","5XU","ZXD","ZXU","0xA","0xB","1xA","1xB","2xA","2xB","3xA","3xB","4xA","4xB","ZxA","ZxB","YxA","YxB","WxA","WxB","TxA","TxB","0xD","0xU","1xD","1xU","2xD","2xU","3xD","3xU","5xD","5xU","ZxD","ZxU"],Rib:["0RA","0RB","1RA","1RB","2RA","2RB","3RA","3RB","4RA","4RB","ZRA","ZRB","YRA","YRB","WRA","WRB","TRA","TRB","0RD","0RU","1RD","1RU","2RD","2RU","3RD","3RU","5RD","5RU","ZRD","ZRU","0rA","0rB","1rA","1rB","2rA","2rB","3rA","3rB","4rA","4rB","ZrA","ZrB","YrA","YrB","WrA","WrB","TrA","TrB","0rD","0rU","1rD","1rU","2rD","2rU","3rD","3rU","5rD","5rU","ZrD","ZrU"],Fru:["0CA","0CB","1CA","1CB","2CA","2CB","3CA","3CB","4CA","4CB","5CA","5CB","WCA","WCB","0CD","0CU","1CD","1CU","2CD","2CU","3CD","3CU","4CD","4CU","6CD","6CU","WCD","WCU","VCD","VCU","UCD","UCU","QCD","QCU","0cA","0cB","1cA","1cB","2cA","2cB","3cA","3cB","4cA","4cB","5cA","5cB","WcA","WcB","0cD","0cU","1cD","1cU","2cD","2cU","3cD","3cU","4cD","4cU","6cD","6cU","WcD","WcU","VcD","VcU","UcD","UcU","QcD","QcU"],Tag:["0JA","0JB","1JA","1JB","2JA","2JB","3JA","3JB","4JA","4JB","5JA","5JB","WJA","WJB","0JD","0JU","1JD","1JU","2JD","2JU","3JD","3JU","4JD","4JU","6JD","6JU","WJD","WJU","VJD","VJU","UJD","UJU","QJD","QJU","0jA","0jB","1jA","1jB","2jA","2jB","3jA","3jB","4jA","4jB","5jA","5jB","WjA","WjB","0jD","0jU","1jD","1jU","2jD","2jU","3jD","3jU","4jD","4jU","6jD","6jU","WjD","WjU","VjD","VjU","UjD","UjU","QjD","QjU"],Sor:["0BA","0BB","1BA","1BB","2BA","2BB","3BA","3BB","4BA","4BB","5BA","5BB","WBA","WBB","0BD","0BU","1BD","1BU","2BD","2BU","3BD","3BU","4BD","4BU","6BD","6BU","WBD","WBU","VBD","VBU","UBD","UBU","QBD","QBU","0bA","0bB","1bA","1bB","2bA","2bB","3bA","3bB","4bA","4bB","5bA","5bB","WbA","WbB","0bD","0bU","1bD","1bU","2bD","2bU","3bD","3bU","4bD","4bU","6bD","6bU","WbD","WbU","VbD","VbU","UbD","UbU","QbD","QbU"],Psi:["0PA","0PB","1PA","1PB","2PA","2PB","3PA","3PB","4PA","4PB","5PA","5PB","WPA","WPB","0PD","0PU","1PD","1PU","2PD","2PU","3PD","3PU","4PD","4PU","6PD","6PU","WPD","WPU","VPD","VPU","UPD","UPU","QPD","QPU","0pA","0pB","1pA","1pB","2pA","2pB","3pA","3pB","4pA","4pB","5pA","5pB","WpA","WpB","0pD","0pU","1pD","1pU","2pD","2pU","3pD","3pU","4pD","4pU","6pD","6pU","WpD","WpU","VpD","VpU","UpD","UpU","QpD","QpU"],Neu5Ac:["0SA","0SB","4SA","4SB","7SA","7SB","8SA","8SB","9SA","9SB","ASA","ASB","BSA","BSB","CSA","CSB","DSA","DSB","ESA","ESB","FSA","FSB","GSA","GSB","HSA","HSB","ISA","ISB","JSA","JSB","KSA","KSB","0sA","0sB","4sA","4sB","7sA","7sB","8sA","8sB","9sA","9sB","AsA","AsB","BsA","BsB","CsA","CsB","DsA","DsB","EsA","EsB","FsA","FsB","GsA","GsB","HsA","HsB","IsA","IsB","JsA","JsB","KsA","KsB"],Neu5Gc:["0GL","4GL","7GL","8GL","9GL","CGL","DGL","EGL","FGL","GGL","HGL","IGL","JGL","KGL","0gL","4gL","7gL","8gL","9gL","AgL","BgL","CgL","DgL","EgL","FgL","GgL","HgL","IgL","JgL","KgL"],Tyv:["YTV","4TV","2TV","1TV","0TV","YTv","4Tv","2Tv","1Tv","0Tv"],Abe:["YAE","2AE","4AE","1AE","0AE","YAe","4Ae","2Ae","1Ae","0Ae"],Bac:["0BC","1BC","3BC","0bC","1bC","3bC"],Kdn:["0KN","4KN","5KN","7KN","8KN","9KN","AKN","BKN","CKN","DKN","EKN","FKN","GKN","HKN","IKN","JKN","KKN","LKN","MKN","NKN","OKN","PKN","QKN","RKN","SKN","TKN","UKN","VKN","WKN","XKN","YKN","0Kn","4Kn","5Kn","7Kn","8Kn","9Kn","AKn","BKn","CKn","DKn","EKn","FKn","GKn","HKn","IKn","JKn","KKn","LKn","MKn","NKn","OKn","PKn","QKn","RKn","SKn","TKn","UKn","VKn","WKn","XKn","YKn"],Kdo:["0KO","4KO","5KO","7KO","8KO","AKO","BKO","CKO","DKO","EKO","FKO","GKO","HKO","IKO","JKO","KKO","0Ko","4Ko","5Ko","7Ko","8Ko","AKo","BKo","CKo","DKo","EKo","FKo","GKo","HKo","IKo","JKo","KKo"],QuiNAc:["0QF","1QF","3QF","0Qf","1Qf","3Qf"],AAT:["0FC","1FC","3FC","0Fc","1Fc","3Fc"],Ara4N:["ZaN","3aN","2aN","1aN","0aN","Zan","3an","2an","1an","0an"],Aci:["JeC","8eC","4eC","2eC","0eC","Jec","8ec","4ec","2ec","0ec"],Leg:["JLG","8LG","4LG","2LG","0LG","JLg","8Lg","4Lg","2Lg","0Lg"],Pse:["JmP","8mP","4mP","2mP","0mP","Jmp","8mp","4mp","2mp","0mp"],Fus:["EgF","HgF","JgF","8gF","KgF","7gF","4gF","2gF","0gF","Egf","Hgf","Jgf","8gf","Kgf","7gf","4gf","2gf","0gf"],DDmanpHep:["ODH","NDH","LDH","MDH","KDH","7DH","PDH","SDH","RDH","XDH","QDH","VDH","UDH","6DH","TDH","ZDH","YDH","2DH","WDH","3DH","4DH","1DH","ODh","NDh","LDh","MDh","KDh","7Dh","PDh","SDh","RDh","XDh","QDh","VDh","UDh","6Dh","TDh","ZDh","YDh","2Dh","WDh","3Dh","4Dh","1Dh"],LDmanpHep:["OLH","NLH","LLH","MLH","KLH","7LH","PLH","SLH","RLH","XLH","QLH","VLH","ULH","6LH","TLH","ZLH","YLH","2LH","WLH","3LH","4LH","1LH","OLh","NLh","LLh","MLh","KLh","7Lh","PLh","SLh","RLh","XLh","QLh","VLh","ULh","6Lh","TLh","ZLh","YLh","2Lh","WLh","3Lh","4Lh","1Lh"],K3O:["dKX","EKX","hKX","HKX","jKX","JKX","pKX","8KX","MKX","kKX","KKX","qKX","7KX","xKX","WKX","tKX","3KX","sKX","4KX","5KX","2KX","0KX","dKx","EKx","hKx","HKx","jKx","JKx","pKx","8Kx","MKx","kKx","KKx","qKx","7Kx","xKx","WKx","tKx","3Kx","sKx","4Kx","5Kx","2Kx","0Kx"],MurNAc:["UMR","4MR","6MR","1MR","0MR","UMr","4Mr","6
7Mr","1Mr","0Mr"],Oli:["WdR","4dR","3dR","1dR","0dR"],dUA:["Z45","345","245","145","045"],GlcNS:["QYS","UYS","VYS","6YS","WYS","4YS","3YS","1YS","0YS","QYs","UYs","VYs","6Ys","WYs","4Ys","3Ys","1Ys","0Ys","QyS","UyS","VyS","6yS","WyS","4yS","3yS","1yS","0yS","Qys","Uys","Vys","6ys","Wys","4ys","3ys","1ys","0ys"]},a=(function(){const u=new Map;for(let m=0,v=f.length;m<v;++m){const b=f[m],P=y[b.abbr];if(P)for(let l=0,S=P.length;l<S;++l)u.set(P[l],b);const C=_[b.abbr];if(C)for(let l=0,S=C.length;l<S;++l)u.set(C[l],b)}return r.SaccharideNames.forEach(m=>{u.has(m)||u.set(m,e.UnknownSaccharideComponent)}),u})(),d=(function(){const u=new Map;for(let m=0,v=f.length;m<v;++m){const b=f[m],P=y[b.abbr];if(P)for(let S=0,T=P.length;S<T;++S)u.set(P[S],b);const C=_[b.abbr];if(C)for(let S=0,T=C.length;S<T;++S)u.set(C[S],b);const l=g[b.abbr];if(l)for(let S=0,T=l.length;S<T;++S)u.has(l[S])||u.set(l[S],b)}return r.SaccharideNames.forEach(m=>{u.has(m)||u.set(m,e.UnknownSaccharideComponent)}),u})();function p(u){e.SaccharideCompIdMap=u==="default"?a:d}e.SaccharideCompIdMap=a})(H2)),H2}var jm={},RE;function Hi(){if(RE)return jm;RE=1,Object.defineProperty(jm,"__esModule",{value:!0}),jm.SetUtils=void 0;var e;return(function(t){function r(d){return Array.from(d.values())}t.toArray=r;function n(d,p){if(d===p)return!0;if(d.size<p.size)return!1;for(const u of p)if(!d.has(u))return!1;return!0}t.isSuperset=n;function i(d,...p){for(let u=0;u<p.length;u++)for(const m of p[u])d.add(m);return d}t.add=i;function c(d,p){const u=new Set(d);if(d===p)return u;for(const m of p)u.add(m);return u}t.union=c;function o(...d){if(d.length===0)return new Set;const p=new Set(d[0]);for(let u=1,m=d.length;u<m;u++)for(const v of d[u])p.add(v);return p}t.unionMany=o;function s(d){if(d.length===0)return new Set;const p=new Set(d[0]);for(let u=1;u<d.length;u++)for(const m of d[u])p.add(m);return p}t.unionManyArrays=s;function h(d,p){if(d===p)return new Set(d);const u=new Set;for(const m of p)d.has(m)&&u.add(m);return u}t.intersection=h;function f(d,p){if(d===p)return d.size>0;d.size<p.size&&([d,p]=[p,d]);for(const u of p)if(d.has(u))return!0;return!1}t.areIntersecting=f;function y(d,p){if(d===p)return d.size;d.size<p.size&&([d,p]=[p,d]);let u=0;for(const m of p)d.has(m)&&(u+=1);return u}t.intersectionSize=y;function _(d,p){if(d===p)return new Set;const u=new Set(d);for(const m of p)u.delete(m);return u}t.difference=_;function g(d,p){if(d===p)return 0;let u=d.size;for(const m of d)p.has(m)&&(u-=1);return u}t.differenceSize=g;function a(d,p){if(d===p)return!0;if(d.size!==p.size)return!1;for(const u of p)if(!d.has(u))return!1;return!0}t.areEqual=a})(e||(jm.SetUtils=e={})),jm}var Gm={},OE;function dJ(){return OE||(OE=1,Object.defineProperty(Gm,"__esModule",{value:!0}),Gm.LipidNames=void 0,Gm.LipidNames=new Set(["DAPC","DBPC","DFPC","DGPC","DIPC","DLPC","DNPC","DOPC","DPPC","DRPC","DTPC","DVPC","DXPC","DYPC","LPPC","PAPC","PEPC","PGPC","PIPC","POPC","PRPC","PUPC","DAPE","DBPE","DFPE","DGPE","DIPE","DLPE","DNPE","DOPE","DPPE","DRPE","DTPE","DUPE","DVPE","DXPE","DYPE","LPPE","PAPE","PGPE","PIPE","POPE","PQPE","PRPE","PUPE","DAPS","DBPS","DFPS","DGPS","DIPS","DLPS","DNPS","DOPS","DPPS","DRPS","DTPS","DUPS","DVPS","DXPS","DYPS","LPPS","PAPS","PGPS","PIPS","POPS","PQPS","PRPS","PUPS","DAPA","DBPA","DFPA","DGPA","DIPA","DLPA","DNPA","DOPA","DPPA","DRPA","DTPA","DVPA","DXPA","DYPA","LPPA","PAPA","PGPA","PIPA","POPA","PRPA","PUPA","DAPG","DBPG","DFPG","DGPG","DIPG","DLPG","DNPG","DOPG","DPPG","DRPG","DTPG","DVPG","DXPG","DYPG","LPPG","PAPG","PGPG","PIPG","POPG","PRPG","DMPC","DPP","DPPI","PAPI","PIPI","POP","POPI","PUPI","PVP","PVPI","PADG","PIDG","PODG","PUDG","PVDG","APC","CPC","IPC","LPC","OPC","PPC","TPC","UPC","VPC","BNSM","DBSM","DPSM","DXSM","PGSM","PNSM","POSM","PVSM","XNSM","DPCE","DXCE","PNCE","XNCE","PA","ST","OL","LEO","LEN","AR","DHA","PC","PE","PS","PH-","P2-","PGR","PGS","PI","CHL"])),Gm}var zm={},kE;function fJ(){return kE||(kE=1,Object.defineProperty(zm,"__esModule",{value:!0}),zm.IonNames=void 0,zm.IonNames=new Set(["118","119","543","1AL","1CU","2FK","2HP","2OF","3CO","3MT","3NI","3OF","3P8","4MO","4PU","4TI","6MO","ACT","AG","AL","ALF","AM","ATH","AU","AU3","AUC","AZI","BA","BCT","BEF","BF4","BO4","BR","BS3","BSY","CA","CAC","CD","CD1","CD3","CD5","CE","CF","CHT","CL","CO","CO3","CO5","CON","CR","CS","CSB","CU","CU1","CU3","CUA","CUZ","CYN","DME","DMI","DSC","DTI","DY","
7E4N","EDR","EMC","ER3","EU","EU3","F","FE","FE2","FPO","GA","GD3","GEP","HAI","HG","HGC","IN","IOD","IR","IR3","IRI","IUM","K","KO4","LA","LCO","LCP","LI","LU","MAC","MG","MH2","MH3","MLI","MMC","MN","MN3","MN5","MN6","MO1","MO2","MO3","MO4","MO5","MO6","MOO","MOS","MOW","MW1","MW2","MW3","NA","NA2","NA5","NA6","NAO","NAW","ND","NET","NH4","NI","NI1","NI2","NI3","NO2","NO3","NRU","NT3","O4M","OAA","OC1","OC2","OC3","OC4","OC5","OC6","OC7","OC8","OCL","OCM","OCN","OCO","OF1","OF2","OF3","OH","OS","OS4","OXL","PB","PBM","PD","PDV","PER","PI","PO3","PO4","PR","PT","PT4","PTN","RB","RH3","RHD","RHF","RU","SB","SCN","SE4","SEK","SM","SMO","SO3","SO4","SR","T1A","TB","TBA","TCN","TEA","TH","THE","TL","TMA","TRA","UNX","V","VN3","VO4","W","WO5","Y1","YB","YB2","YH","YT3","ZCM","ZN","ZN2","ZN3","ZNO","ZO3","ZR","ZTM","NCO","OHX"])),zm}var FE;function dt(){return FE||(FE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultResidueHydrophobicity=e.ResidueHydrophobicity=e.BondType=e.DefaultMaxAsa=e.MaxAsa=e.SecondaryStructureType=e.PolymerNames=e.isPyrimidineBase=e.isPurineBase=e.BaseNames=e.PyrimidineBaseNames=e.PurineBaseNames=e.PeptideBaseNames=e.DnaBaseNames=e.RnaBaseNames=e.CommonProteinCaps=e.AminoAcidNames=e.AminoAcidNamesD=e.AminoAcidNamesL=e.WaterNames=e.LipidComponentTypeNames=e.IonComponentTypeNames=e.OtherComponentTypeNames=e.SaccharideComponentTypeNames=e.RNAComponentTypeNames=e.DNAComponentTypeNames=e.ProteinComponentTypeNames=e.OtherProteinComponentTypeNames=e.ProteinTerminusComponentTypeNames=e.BetaProteinComponentTypeNames=e.GammaProteinComponentTypeNames=e.LProteinComponentTypeNames=e.DProteinComponentTypeNames=e.TraceAtoms=e.NucleicBackboneAtoms=e.ProteinBackboneAtoms=e.PolymerTypeAtomRoleId=e.PolymerType=e.MoleculeType=e.EntityType=void 0,e.ElementSymbol=s,e.getElementFromAtomicNumber=f,e.getMoleculeType=p,e.getPolymerType=u,e.getComponentType=m,e.getDefaultChemicalComponent=v,e.getEntityType=b,e.getEntitySubtype=P,e.isPolymer=C,e.isNucleic=l,e.isProtein=S;const t=Y_(),r=xf(),n=Hi(),i=dJ(),c=fJ(),o=(function(){const x=Object.create(null),M=[];for(let D=65;D<=90;D++)M[M.length]=String.fromCharCode(D);for(let D=97;D<=122;D++)M[M.length]=String.fromCharCode(D);for(let D=48;D<=57;D++)M[M.length]=String.fromCharCode(D);for(const D of M){x[D]=D.toUpperCase();for(const V of M){x[D+V]=(D+V).toUpperCase();for(const R of M)x[D+V+R]=(D+V+R).toUpperCase()}}return x})();function s(x){return o[x]||x.toUpperCase()}const h=new Map([[1,"H"],[2,"He"],[3,"Li"],[4,"Be"],[5,"B"],[6,"C"],[7,"N"],[8,"O"],[9,"F"],[10,"Ne"],[11,"Na"],[12,"Mg"],[13,"Al"],[14,"Si"],[15,"P"],[16,"S"],[17,"Cl"],[18,"Ar"],[19,"K"],[20,"Ca"],[21,"Sc"],[22,"Ti"],[23,"V"],[24,"Cr"],[25,"Mn"],[26,"Fe"],[27,"Co"],[28,"Ni"],[29,"Cu"],[30,"Zn"],[31,"Ga"],[32,"Ge"],[33,"As"],[34,"Se"],[35,"Br"],[36,"Kr"],[37,"Rb"],[38,"Sr"],[39,"Y"],[40,"Zr"],[41,"Nb"],[42,"Mo"],[43,"Tc"],[44,"Ru"],[45,"Rh"],[46,"Pd"],[47,"Ag"],[48,"Cd"],[49,"In"],[50,"Sn"],[51,"Sb"],[52,"Te"],[53,"I"],[54,"Xe"],[55,"Cs"],[56,"Ba"],[57,"La"],[58,"Ce"],[59,"Pr"],[60,"Nd"],[61,"Pm"],[62,"Sm"],[63,"Eu"],[64,"Gd"],[65,"Tb"],[66,"Dy"],[67,"Ho"],[68,"Er"],[69,"Tm"],[70,"Yb"],[71,"Lu"],[72,"Hf"],[73,"Ta"],[74,"W"],[75,"Re"],[76,"Os"],[77,"Ir"],[78,"Pt"],[79,"Au"],[80,"Hg"],[81,"Tl"],[82,"Pb"],[83,"Bi"],[84,"Po"],[85,"At"],[86,"Rn"],[87,"Fr"],[88,"Ra"],[89,"Ac"],[90,"Th"],[91,"Pa"],[92,"U"],[93,"Np"],[94,"Pu"],[95,"Am"],[96,"Cm"],[97,"Bk"],[98,"Cf"],[99,"Es"],[100,"Fm"],[101,"Md"],[102,"No"],[103,"Lr"],[104,"Rf"],[105,"Db"],[106,"Sg"],[107,"Bh"],[108,"Hs"],[109,"Mt"],[110,"Ds"],[111,"Rg"],[112,"Cn"],[113,"Uut"],[114,"Fl"],[115,"Uup"],[116,"Lv"],[117,"Uus"],[118,"Uuo"]].map(x=>[x[0],s(x[1])]));function f(x){return h.has(x)?h.get(x):s("H")}var y;(function(x){x[x.unknown=0]="unknown",x[x.polymer=1]="polymer",x[x["non-polymer"]=2]="non-polymer",x[x.macrolide=3]="macrolide",x[x.water=4]="water",x[x.branched=5]="branched"})(y||(e.EntityType=y={}));var _;(function(x){x[x.Unknown=0]="Unknown",x[x.Other=1]="Other",x[x.Water=2]="Water",x[x.Ion=3]="Ion",x[x.Lipid=4]="Lipid",x[x.Protein=5]="Protein",x[x.RNA=6]="RNA",x[x.DNA=7]="DNA",x[x.PNA=8]="PNA",x[x.Saccharide=9]="Saccharide"})(_||(e.MoleculeType=_={}));var g;(function(x){x[x.NA=0]="NA",x[x.Protein=1]="Protein",x[x.GammaProtein=2]="GammaProtein",x[x.BetaProtein=3]="BetaProtein",x[x.RNA=4]="RNA",x[x.DNA=5]="DNA",x[x.PNA=6]="PNA"})(g||(e.PolymerType=g={})),e.PolymerTypeAtomRoleId={[g.NA]:{trace:new Set,directionFrom:new Set,directionTo:new Set,backboneStart:new Set,backboneEnd:new Set,coarseBackbone:new Set},[g.Protein]:{trace:new Set(["CA"]),directionFrom:new Set(["C"]),directionTo:new Set(["O","OC1","O1","OX1","OXT","OT1"]),backboneStart:new Set(["N"]),backboneEnd:new Set(["C"]),coarseBackbone:new Set(["CA","CA1","BB","BAS"])},[g.GammaProtein]:{trace:new Set(["CA"]),directionFrom:new Set(["C"]),directionTo:new Set(["O"]),backboneStart:new Set(["N"]),backboneEnd:new Set(["CD"]),coarseBackbone:new Set(["CA"])},[g.BetaProtein]:{trace:new Set(["CA"]),directionFrom:new Set(["C"]),directionTo:new Set(["O"]),backboneStart:new Set(["N"]),backboneEnd:new Set(["CG"]),coarseBackbone:new Set(["CA"])},[g.RNA]:{trace:new Set(["O3'","O3*"]),directionFrom:new Set(["C4'","C4*"]),directionTo:new Set(["C3'","C3*"]),backboneStart:new Set(["P"]),backboneEnd:new Set(["O3'","O3*"]),coarseBackbone:new Set(["P"])},[g.DNA]:{trace:new Set(["O3'","O3*"]),directionFrom:new Set(["C3'","C3*"]),directionTo:new Set(["C1'","C1*"]),backboneStart:new Set(["P"]),backboneEnd:new Set(["O3'","O3*"]),coarseBackbone:new Set(["P"])},[g.PNA]:{trace:new Set(["N4'","N4*"]),directionFrom:new Set(["N4'","N4*"]),directionTo:new Set(["C7'","C7*"]),backboneStart:new Set(["N1'","N1*"]),backboneEnd:new Set(["C'","C*"]),coarseBackbone:new Set(["P"])}},e.ProteinBackboneAtoms=new Set(["CA","C","N","O","O1","O2","OC1","OC2","OT1","OT2","OX1","OXT","H","H1","H2","H3","HA","HN","HXT","CA1","BB","BAS"]),e.NucleicBackboneAtoms=new Set(["P","OP1","OP2","HOP2","HOP3","O2'","O3'","O4'","O5'","C1'","C2'","C3'","C4'","C5'","H1'","H2'","H2''","HO2'","H3'","H4'","H5'","H5''","HO3'","HO5'","O2*","O3*","O4*","O5*","C1*","C2*","C3*","C4*","C5*"]),e.TraceAtoms=new Set(["CA","CA1","BB","BAS","O3'","O3*","N4'","N4*"]),e.DProteinComponentTypeNames=new Set(["d-peptide linking","d-peptide nh3 amino terminus","d-peptide cooh carboxy terminus","d-gamma-peptide, c-delta linking","d-beta-peptide, c-gamma linking"]),e.LProteinComponentTypeNames=new Set(["l-peptide linking","l-peptide nh3 amino terminus","l-peptide cooh carboxy terminus","l-gamma-peptide, c-delta linking","l-beta-peptide, c-gamma linking"]),e.GammaProteinComponentTypeNames=new Set(["d-gamma-peptide, c-delta linking","l-gamma-peptide, c-delta linking"]),e.BetaProteinComponentTypeNames=new Set(["d-beta-peptide, c-gamma linking","l-beta-peptide, c-gamma linking"]),e.ProteinTerminusComponentTypeNames=new Set(["d-peptide nh3 amino terminus","d-peptide cooh carboxy terminus","l-peptide nh3 amino terminus","l-peptide cooh carboxy terminus"]),e.OtherProteinComponentTypeNames=new Set(["peptide linking","peptide-like"]),e.ProteinComponentTypeNames=n.SetUtils.unionMany(e.DProteinComponentTypeNames,e.LProteinComponentTypeNames,e.OtherProteinComponentTypeNames),e.DNAComponentTypeNames=new Set(["dna linking","l-dna linking","dna oh 5 prime terminus","dna oh 3 prime terminus"]),e.RNAComponentTypeNames=new Set(["rna linking","l-rna linking","rna oh 5 prime terminus","rna oh 3 prime terminus"]),e.SaccharideComponentTypeNames=n.SetUtils.unionMany(new Set(["d-saccharide, beta linking","l-saccharide, beta linking","d-saccharide, alpha linking","l-saccharide, alpha linking","l-saccharide","d-saccharide","saccharide"]),new Set(["d-saccharide 1,4 and 1,4 linking","l-saccharide 1,4 and 1,4 linking","d-saccharide 1,4 and 1,6 linking","l-saccharide 1,4 and 1,6 linking"])),e.OtherComponentTypeNames=new Set(["non-polymer","other"]),e.IonComponentTypeNames=new Set(["ion"]),e.LipidComponentTypeNames=new Set(["lipid"]),e.WaterNames=new Set(["SOL","WAT","HOH","H2O","W","DOD","D3O","TIP","TIP3","TIP4","SPC"]),e.AminoAcidNamesL=new Set(["HIS","ARG","LYS","ILE","PHE","LEU","TRP","ALA","MET","PRO","CYS","ASN","VAL","GLY","SER","GLN","TYR","ASP","GLU","THR","SEC","PYL","UNK","MSE","SEP","TPO","PTR","PCA","HYP","HSD","HSE","HSP","LSN","ASPP","GLUP","HID","HIE","HIP","LYN","ASH","GLH"]),e.AminoAcidNamesD=new Set(["DAL","DAR","DSG","DAS","DCY","DGL","DGN","DHI","DIL","DLE","DLY","MED","DPN","DPR","DSN","DTH","DTR","DTY","DVA","DNE"]),e.AminoAcidNames=n.SetUtils.unionMany(e.AminoAcidNamesL,e.AminoAcidNamesD),e.CommonProteinCaps=new Set(["NME","ACE","NH2","FOR","FMT"]),e.Rna
7BaseNames=new Set(["A","C","T","G","I","U","N"]),e.DnaBaseNames=new Set(["DA","DC","DT","DG","DI","DU","DN"]),e.PeptideBaseNames=new Set(["APN","CPN","TPN","GPN"]),e.PurineBaseNames=new Set(["A","G","I","DA","DG","DI","APN","GPN"]),e.PyrimidineBaseNames=new Set(["C","T","U","DC","DT","DU","CPN","TPN"]),e.BaseNames=n.SetUtils.unionMany(e.RnaBaseNames,e.DnaBaseNames,e.PeptideBaseNames);const a=x=>e.PurineBaseNames.has(x.toUpperCase());e.isPurineBase=a;const d=x=>e.PyrimidineBaseNames.has(x.toUpperCase());e.isPyrimidineBase=d,e.PolymerNames=n.SetUtils.unionMany(e.AminoAcidNames,e.BaseNames);function p(x,M){return M=M.toUpperCase(),e.PeptideBaseNames.has(M)?_.PNA:e.ProteinComponentTypeNames.has(x)?_.Protein:e.RNAComponentTypeNames.has(x)?_.RNA:e.DNAComponentTypeNames.has(x)?_.DNA:e.SaccharideComponentTypeNames.has(x)?_.Saccharide:e.WaterNames.has(M)?_.Water:c.IonNames.has(M)?_.Ion:i.LipidNames.has(M)?_.Lipid:e.OtherComponentTypeNames.has(x)?r.SaccharideCompIdMap.has(M)?_.Saccharide:e.AminoAcidNames.has(M)?_.Protein:e.RnaBaseNames.has(M)?_.RNA:e.DnaBaseNames.has(M)?_.DNA:_.Other:_.Unknown}function u(x,M){return M===_.Protein?e.GammaProteinComponentTypeNames.has(x)?g.GammaProtein:e.BetaProteinComponentTypeNames.has(x)?g.BetaProtein:e.ProteinTerminusComponentTypeNames.has(x)?g.NA:g.Protein:M===_.RNA?g.RNA:M===_.DNA?g.DNA:M===_.PNA?g.PNA:g.NA}function m(x){return x=x.toUpperCase(),e.AminoAcidNames.has(x)?"peptide linking":e.RnaBaseNames.has(x)?"rna linking":e.DnaBaseNames.has(x)?"dna linking":r.SaccharideCompIdMap.has(x)?"saccharide":"other"}function v(x){return{formula:"",formula_weight:0,id:x,name:x,mon_nstd_flag:e.PolymerNames.has(x)?"y":"n",pdbx_synonyms:[],type:m(x)}}function b(x){return x=x.toUpperCase(),e.WaterNames.has(x)?"water":e.PolymerNames.has(x)?"polymer":r.SaccharideCompIdMap.has(x)?"branched":"non-polymer"}function P(x,M){return x=x.toUpperCase(),e.LProteinComponentTypeNames.has(M)?"polypeptide(L)":e.DProteinComponentTypeNames.has(M)?"polypeptide(D)":e.RNAComponentTypeNames.has(M)?"polyribonucleotide":e.DNAComponentTypeNames.has(M)?"polydeoxyribonucleotide":e.SaccharideComponentTypeNames.has(M)||r.SaccharideCompIdMap.has(x)?"oligosaccharide":e.PeptideBaseNames.has(x)?"peptide nucleic acid":e.AminoAcidNamesL.has(x)?"polypeptide(L)":e.AminoAcidNamesD.has(x)?"polypeptide(D)":e.RnaBaseNames.has(x)?"polyribonucleotide":e.DnaBaseNames.has(x)?"polydeoxyribonucleotide":e.IonComponentTypeNames.has(M)||c.IonNames.has(x)?"ion":e.LipidComponentTypeNames.has(M)||i.LipidNames.has(x)?"lipid":e.OtherProteinComponentTypeNames.has(M)?"peptide-like":"other"}function C(x){return l(x)||S(x)}function l(x){return x===_.DNA||x===_.RNA||x===_.PNA}function S(x){return x===_.Protein}var T;(function(x){x.is=t.BitFlags.has,x.create=t.BitFlags.create;let M;(function(D){D[D.None=0]="None",D[D.DoubleHelix=1]="DoubleHelix",D[D.Helix=2]="Helix",D[D.Beta=4]="Beta",D[D.Bend=8]="Bend",D[D.Turn=16]="Turn",D[D.LeftHanded=32]="LeftHanded",D[D.RightHanded=64]="RightHanded",D[D.ClassicTurn=128]="ClassicTurn",D[D.InverseTurn=256]="InverseTurn",D[D.HelixOther=512]="HelixOther",D[D.Helix27=1024]="Helix27",D[D.Helix3Ten=2048]="Helix3Ten",D[D.HelixAlpha=4096]="HelixAlpha",D[D.HelixGamma=8192]="HelixGamma",D[D.HelixOmega=16384]="HelixOmega",D[D.HelixPi=32768]="HelixPi",D[D.HelixPolyproline=65536]="HelixPolyproline",D[D.DoubleHelixOther=131072]="DoubleHelixOther",D[D.DoubleHelixZ=262144]="DoubleHelixZ",D[D.DoubleHelixA=524288]="DoubleHelixA",D[D.DoubleHelixB=1048576]="DoubleHelixB",D[D.BetaOther=2097152]="BetaOther",D[D.BetaStrand=4194304]="BetaStrand",D[D.BetaSheet=8388608]="BetaSheet",D[D.BetaBarell=16777216]="BetaBarell",D[D.TurnOther=33554432]="TurnOther",D[D.Turn1=67108864]="Turn1",D[D.Turn2=134217728]="Turn2",D[D.Turn3=268435456]="Turn3",D[D.NA=536870912]="NA"})(M=x.Flag||(x.Flag={})),x.SecondaryStructureMmcif={helx_lh_27_p:M.Helix|M.LeftHanded|M.Helix27,helx_lh_3t_p:M.Helix|M.LeftHanded|M.Helix3Ten,helx_lh_al_p:M.Helix|M.LeftHanded|M.HelixAlpha,helx_lh_a_n:M.DoubleHelix|M.LeftHanded|M.DoubleHelixA,helx_lh_b_n:M.DoubleHelix|M.LeftHanded|M.DoubleHelixB,helx_lh_ga_p:M.Helix|M.LeftHanded|M.HelixGamma,helx_lh_n:M.DoubleHelix|M.LeftHanded,helx_lh_om_p:M.Helix|M.LeftHanded|M.HelixOmega,helx_lh_ot_n:M.DoubleHelix|M.LeftHanded|M.DoubleHelixOther,helx_lh_ot_p:M.Helix|M.LeftHanded|M.HelixOther,helx_lh_p:M.Helix|M.LeftHanded,helx_lh_pi_p:M.Helix|M.LeftHanded|M.HelixPi,helx_lh_pp_p:M.Helix|M.LeftHanded|M.HelixPolyprol
7ine,helx_lh_z_n:M.DoubleHelix|M.LeftHanded|M.DoubleHelixZ,helx_n:M.DoubleHelix,helx_ot_n:M.DoubleHelix,helx_ot_p:M.Helix,helx_p:M.Helix,helx_rh_27_p:M.Helix|M.RightHanded|M.Helix27,helx_rh_3t_p:M.Helix|M.RightHanded|M.Helix3Ten,helx_rh_al_p:M.Helix|M.RightHanded|M.HelixAlpha,helx_rh_a_n:M.DoubleHelix|M.RightHanded|M.DoubleHelixA,helx_rh_b_n:M.DoubleHelix|M.RightHanded|M.DoubleHelixB,helx_rh_ga_p:M.Helix|M.RightHanded|M.HelixGamma,helx_rh_n:M.DoubleHelix|M.RightHanded,helx_rh_om_p:M.Helix|M.RightHanded|M.HelixOmega,helx_rh_ot_n:M.DoubleHelix|M.RightHanded|M.DoubleHelixOther,helx_rh_ot_p:M.Helix|M.RightHanded|M.HelixOther,helx_rh_p:M.Helix|M.RightHanded,helx_rh_pi_p:M.Helix|M.RightHanded|M.HelixPi,helx_rh_pp_p:M.Helix|M.RightHanded|M.HelixPolyproline,helx_rh_z_n:M.DoubleHelix|M.RightHanded|M.DoubleHelixZ,strn:M.Beta|M.BetaStrand,turn_ot_p:M.Turn|M.TurnOther,turn_p:M.Turn,turn_ty1p_p:M.Turn|M.InverseTurn|M.Turn1,turn_ty1_p:M.Turn|M.ClassicTurn|M.Turn1,turn_ty2p_p:M.Turn|M.InverseTurn|M.Turn2,turn_ty2_p:M.Turn|M.ClassicTurn|M.Turn2,turn_ty3p_p:M.Turn|M.InverseTurn|M.Turn3,turn_ty3_p:M.Turn|M.ClassicTurn|M.Turn3,bend:M.Bend,other:M.None},x.SecondaryStructurePdb={1:M.Helix|M.RightHanded|M.HelixAlpha,2:M.Helix|M.RightHanded|M.HelixOmega,3:M.Helix|M.RightHanded|M.HelixPi,4:M.Helix|M.RightHanded|M.HelixGamma,5:M.Helix|M.RightHanded|M.Helix3Ten,6:M.Helix|M.LeftHanded|M.HelixAlpha,7:M.Helix|M.LeftHanded|M.HelixOmega,8:M.Helix|M.LeftHanded|M.HelixGamma,9:M.Helix|M.Helix27,10:M.Helix|M.HelixPolyproline},x.SecondaryStructureStride={H:M.Helix|M.HelixAlpha,G:M.Helix|M.Helix3Ten,I:M.Helix|M.HelixPi,E:M.Beta|M.BetaSheet,B:M.Beta|M.BetaStrand,T:M.Turn,C:M.NA},x.SecondaryStructureDssp={H:M.Helix|M.HelixAlpha,B:M.Beta|M.BetaStrand,E:M.Beta|M.BetaSheet,G:M.Helix|M.Helix3Ten,I:M.Helix|M.HelixPi,T:M.Turn,S:M.Bend}})(T||(e.SecondaryStructureType=T={})),e.MaxAsa={ALA:121,ARG:265,ASN:187,ASP:187,CYS:148,GLU:214,GLN:214,GLY:97,HIS:216,ILE:195,LEU:191,LYS:230,MET:203,PHE:228,PRO:154,SER:143,THR:163,TRP:264,TYR:255,VAL:165,HSD:216,HSE:216,HSP:216,HID:216,HIE:216,HIP:216,ASH:187,GLH:214},e.DefaultMaxAsa=121;var A;(function(x){x.is=t.BitFlags.has;let M;(function(w){w[w.None=0]="None",w[w.Covalent=1]="Covalent",w[w.MetallicCoordination=2]="MetallicCoordination",w[w.HydrogenBond=4]="HydrogenBond",w[w.Disulfide=8]="Disulfide",w[w.Aromatic=16]="Aromatic",w[w.Computed=32]="Computed"})(M=x.Flag||(x.Flag={}));function D(w){return t.BitFlags.create(w)}x.create=D;function V(w){return(w&x.Flag.Covalent)!==0}x.isCovalent=V;function R(w){return w===Math.pow(2,6)-1}x.isAll=R,x.Names={covalent:M.Covalent,"metal-coordination":M.MetallicCoordination,"hydrogen-bond":M.HydrogenBond,disulfide:M.Disulfide,aromatic:M.Aromatic,computed:M.Computed};function E(w){return w in x.Names}x.isName=E;function I(w){switch(w){case"covalent":return M.Covalent;case"metal-coordination":return M.MetallicCoordination;case"hydrogen-bond":return M.HydrogenBond;case"disulfide":return M.Disulfide;case"aromatic":return M.Aromatic;case"computed":return M.Computed}}x.fromName=I;function B(w){let O=M.None;for(let F=0,L=w.length;F<L;++F)O|=I(w[F]);return O}x.fromNames=B})(A||(e.BondType=A={})),e.ResidueHydrophobicity={ALA:[.17,.5,.33],ARG:[.81,1.81,1],ASN:[.42,.85,.43],ASP:[1.23,3.64,2.41],ASH:[-.07,.43,.5],CYS:[-.24,-.02,.22],GLN:[.58,.77,.19],GLU:[2.02,3.63,1.61],GLH:[-.01,.11,.12],GLY:[.01,1.15,1.14],HIS:[.17,.11,-.06],ILE:[-.31,-1.12,-.81],LEU:[-.56,-1.25,-.69],LYS:[.99,2.8,1.81],MET:[-.23,-.67,-.44],PHE:[-1.13,-1.71,-.58],PRO:[.45,.14,-.31],SER:[.13,.46,.33],THR:[.14,.25,.11],TRP:[-1.85,-2.09,-.24],TYR:[-.94,-.71,.23],VAL:[.07,-.46,-.53],HSD:[.17,.11,-.06],HSE:[.17,.11,-.06],HSP:[.96,2.33,1.37],HID:[.17,.11,-.06],HIE:[.17,.11,-.06],HIP:[.96,2.33,1.37]},e.DefaultResidueHydrophobicity=[0,0,0]})(z2)),z2}var LE;function Ua(){if(LE)return Tm;LE=1,Object.defineProperty(Tm,"__esModule",{value:!0}),Tm.IndexPairBonds=void 0;const e=is(),t=as(),r=dt();function n(c,o,s,h){const f=new e.IntAdjacencyGraph.EdgeBuilder(h,c,o),y=new Int32Array(f.slotCount),_=new Array(f.slotCount),g=new Array(f.slotCount),a=new Int8Array(f.slotCount),d=new Array(f.slotCount),p=new Array(f.slotCount);for(let u=0,m=f.edgeCount;u<m;u++)f.addNextEdge(),f.assignProperty(y,s.key?s.key[u]:-1),f.assignDirectedProperty(_,s.operatorA?s.operatorA[u]:-1,g,s.operatorB?s.operatorB[u]:-1),f.assignProperty(a,s.order?s.order[u]:1),f.assignProperty(d,s.distance?s.distance[u]:-1),f.assignProperty(p,s.flag?s.flag[u]:r.BondType.Flag.Covalent);return f.createGraph({key:y,operatorA:_,operatorB:g,order:a,distance:d,flag:p})}var i;return(function(c){c.Descriptor={name:"index_pair_bonds"},c.Provider=t.FormatPropertyProvider.create(c.Descriptor,{asDynamic:!0}),c.DefaultProps={maxDistance:-1,cacheable:!0};function o(h,f={}){const y={...c.DefaultProps,...f},{pairs:_,count:g}
7=h,a=_.indexA.toArray(),d=_.indexB.toArray(),p=_.key&&_.key.toArray(),u=_.operatorA&&_.operatorA.toArray(),m=_.operatorB&&_.operatorB.toArray(),v=_.order&&_.order.toArray(),b=_.distance&&_.distance.toArray(),P=_.flag&&_.flag.toArray();let C=!1;if(u&&m){C=!0;for(let T=0,A=u.length;T<A;++T)if(u[T]===-1||m[T]===-1){C=!1;break}}const l=n(a,d,{key:p,operatorA:u,operatorB:m,order:v,distance:b,flag:P},g),S=new Map;if(C){const{operatorA:T,operatorB:A}=l.edgeProps;for(let x=0,M=T.length;x<M;++x)if(T[x]===A[x]){const D=T[x];S.has(D)?S.get(D).push(x):S.set(D,[x])}}return{bonds:l,maxDistance:y.maxDistance,cacheable:y.cacheable,hasOperators:C,bySameOperator:S}}c.fromData=o;function s(h,f,y,_,g){let a,d,p,u;f<y?(a=f,d=y,p=_,u=g):(a=y,d=f,p=g,u=_);for(let m=h.offset[a],v=h.offset[a+1];m<v;m++)if(h.b[m]===d&&h.edgeProps.operatorA[m]===p&&h.edgeProps.operatorB[m]===u)return m;return-1}c.getEdgeIndexForOperators=s})(i||(Tm.IndexPairBonds=i={})),Tm}var lC={},vc={},NE;function Pr(){if(NE)return vc;NE=1,Object.defineProperty(vc,"__esModule",{value:!0}),vc.CustomProperties=void 0,vc.CustomPropertyDescriptor=t;const e=et();function t(n){return n}(function(n){function i(c){return c.__key||(c.__key=e.UUID.create22()),c.__key}n.getUUID=i})(t||(vc.CustomPropertyDescriptor=t={}));class r{constructor(){this._list=[],this._set=new Set,this._refs=new Map,this._assets=new Map}get all(){return this._list}add(i){this._set.has(i)||(this._list.push(i),this._set.add(i))}reference(i,c){let o=this._refs.get(i)||0;o+=c?1:-1,this._refs.set(i,Math.max(o,0))}hasReference(i){return(this._refs.get(i)||0)>0}has(i){return this._set.has(i)}assets(i,c){const o=this._assets.get(i);if(o)for(const s of o)s.dispose();c?this._assets.set(i,c):this._assets.delete(i)}dispose(){this._assets.forEach(i=>{for(const c of i)c.dispose()})}}return vc.CustomProperties=r,vc}var dC={},_s={},pi={},bc={},qE;function Wi(){if(qE)return bc;qE=1,Object.defineProperty(bc,"__esModule",{value:!0}),bc.TokenColumnProvider=r,bc.TokenColumn=n,bc.areValuesEqualProvider=i,bc.areTokensEmpty=c;const e=lt(),t=La();function r(o){return function(s){return n(o,s)}}function n(o,s){const{data:h,indices:f,count:y}=o,{valueType:_}=s,g=_==="str"?a=>h.substring(f[2*a],f[2*a+1]):_==="int"?a=>(0,t.parseInt)(h,f[2*a],f[2*a+1])||0:a=>(0,t.parseFloat)(h,f[2*a],f[2*a+1])||0;return{schema:s,__array:void 0,isDefined:!0,rowCount:y,value:g,valueKind:a=>e.Column.ValueKinds.Present,toArray:a=>e.ColumnHelpers.createAndFillArray(y,g,a),areValuesEqual:i(o)}}function i(o){const{data:s,indices:h}=o;return function(f,y){const _=h[2*f],g=h[2*y],a=h[2*f+1]-_;if(a!==h[2*y+1]-g)return!1;for(let d=0;d<a;d++)if(s.charCodeAt(d+_)!==s.charCodeAt(d+g))return!1;return!0}}function c(o){const{count:s,indices:h}=o;for(let f=0;f<s;++f)if(h[2*f]!==h[2*f+1])return!1;return!0}return bc}var UE;function bT(){if(UE)return pi;UE=1,Object.defineProperty(pi,"__esModule",{value:!0}),pi.CifField=void 0,pi.CifFile=n,pi.CifBlock=i,pi.CifSaveFrame=c,pi.CifCategory=o,pi.tensorFieldNameGetter=h,pi.getTensor=f,pi.getCifFieldType=y;const e=lt(),t=La(),r=Wi();function n(_,g){return{name:g,blocks:_}}function i(_,g,a,d=[]){return{categoryNames:_,header:a,categories:g,saveFrames:d,getField(p){const[u,m]=p.split(".");return g[u].getField(m||"")}}}function c(_,g,a){return{categoryNames:_,header:a,categories:g}}function o(_,g,a,d){return{rowCount:g,name:_,fieldNames:[...a],getField(p){return d[p]}}}(function(_){function g(p){return{rowCount:0,name:p,fieldNames:[],getField(u){}}}_.empty=g;function a(p,u){const m=Object.keys(u);return{rowCount:m.length>0?u[m[0]].rowCount:0,name:p,fieldNames:m,getField(v){return u[v]}}}_.ofFields=a;function d(p,u){const m={};for(const v of u._columns)m[v]=s.ofColumn(u[v]);return a(p,m)}_.ofTable=d})(o||(pi.CifCategory=o={}));var s;(function(_){function g(v){return a([v])}_.ofString=g;function a(v){const b=v.length,P=T=>{const A=v[T];return!A||A==="."||A==="?"?"":A},C=T=>{const A=v[T];return(0,t.parseInt)(A,0,A.length)||0},l=T=>{const A=v[T];return(0,t.parseFloat)(A,0,A.length)||0};return{__array:void 0,binaryEncoding:void 0,isDefined:!0,rowCount:b,str:P,int:C,float:l,valueKind:T=>{const A=v[T],x=A.length;if(x>1)return e.Column.ValueKinds.Present;if(x===0)return e.Column.ValueKinds.NotPresent;const M=A.charCodeAt(0);return M===46?e.Column.ValueKinds.NotPresent:M===63?e.Column.ValueKinds.Unknown:e.Column.ValueKinds.Present}
7,areValuesEqual:(T,A)=>v[T]===v[A],toStringArray:T=>T?e.ColumnHelpers.createAndFillArray(b,P,T):v,toIntArray:T=>e.ColumnHelpers.createAndFillArray(b,C,T),toFloatArray:T=>e.ColumnHelpers.createAndFillArray(b,l,T)}}_.ofStrings=a;function d(v){const b=v.length,P=T=>""+v[T],C=T=>v[T],l=T=>e.Column.ValueKinds.Present,S=T=>!T||T.array&&v instanceof T.array?v:e.ColumnHelpers.createAndFillArray(b,C,T);return{__array:void 0,binaryEncoding:void 0,isDefined:!0,rowCount:b,str:P,int:C,float:C,valueKind:l,areValuesEqual:(T,A)=>v[T]===v[A],toStringArray:T=>e.ColumnHelpers.createAndFillArray(b,P,T),toIntArray:S,toFloatArray:S}}_.ofNumbers=d;function p(v){const{data:b,indices:P,count:C}=v,l=x=>{const M=b.substring(P[2*x],P[2*x+1]);return M==="."||M==="?"?"":M},S=x=>(0,t.parseInt)(b,P[2*x],P[2*x+1])||0,T=x=>(0,t.parseFloat)(b,P[2*x],P[2*x+1])||0;return{__array:void 0,binaryEncoding:void 0,isDefined:!0,rowCount:C,str:l,int:S,float:T,valueKind:x=>{const M=P[2*x],D=P[2*x+1]-M;if(D>1)return e.Column.ValueKinds.Present;if(D===0)return e.Column.ValueKinds.NotPresent;const V=b.charCodeAt(M);return V===46?e.Column.ValueKinds.NotPresent:V===63?e.Column.ValueKinds.Unknown:e.Column.ValueKinds.Present}
7,areValuesEqual:(0,r.areValuesEqualProvider)(v),toStringArray:x=>e.ColumnHelpers.createAndFillArray(C,l,x),toIntArray:x=>e.ColumnHelpers.createAndFillArray(C,S,x),toFloatArray:x=>e.ColumnHelpers.createAndFillArray(C,T,x)}}_.ofTokens=p;function u(v){const{rowCount:b,valueKind:P,areValuesEqual:C,isDefined:l}=v;let S,T,A;switch(v.schema.valueType){case"float":case"int":S=M=>""+v.value(M),T=v.value,A=v.value;break;case"str":S=v.value,T=M=>{const D=v.value(M);return(0,t.parseInt)(D,0,D.length)||0},A=M=>{const D=v.value(M);return(0,t.parseFloat)(D,0,D.length)||0};break;case"list":const{separator:x}=v.schema;S=M=>v.value(M).join(x),T=M=>NaN,A=M=>NaN;break;default:throw new Error(`unsupported valueType '${v.schema.valueType}'`)}return{__array:void 0,binaryEncoding:void 0,isDefined:l,rowCount:b,str:S,int:T,float:A,valueKind:P,areValuesEqual:C,toStringArray:x=>e.ColumnHelpers.createAndFillArray(b,S,x),toIntArray:x=>e.ColumnHelpers.createAndFillArray(b,T,x),toFloatArray:x=>e.ColumnHelpers.createAndFillArray(b,A,x)}}_.ofColumn=u;function m(v,b){return u(e.Column.Undefined(v,b))}_.ofUndefined=m})(s||(pi.CifField=s={}));function h(_,g,a,d){const p=a?0:1;switch(g){case 1:return d==="brackets"?u=>`${_}[${u+p}]`:u=>`${_}_${u+p}`;case 2:return d==="brackets"?(u,m)=>`${_}[${u+p}][${m+p}]`:(u,m)=>`${_}_${u+p}${m+p}`;case 3:return d==="brackets"?(u,m,v)=>`${_}[${u+p}][${m+p}][${v+p}]`:(u,m,v)=>`${_}_${u+p}${m+p}${v+p}`;default:throw new Error("Tensors with rank > 3 or rank 0 are currently not supported.")}}function f(_,g,a,d){const p=g.create();if(g.rank===1){const u=g.dimensions[0];for(let m=0;m<u;m++){const v=_.getField(d(m));g.set(p,m,v?v.float(a):0)}}else if(g.rank===2){const u=g.dimensions[0],m=g.dimensions[1];for(let v=0;v<u;v++)for(let b=0;b<m;b++){const P=_.getField(d(v,b));g.set(p,v,b,P?P.float(a):0)}}else if(g.rank===3){const u=g.dimensions[0],m=g.dimensions[1],v=g.dimensions[2];for(let b=0;b<u;b++)for(let P=0;P<m;P++)for(let C=0;C<v;C++){const l=_.getField(d(b,P,C));g.set(p,b,P,C,l?l.float(a):0)}}else throw new Error("Tensors with rank > 3 or rank 0 are currently not supported.");return p}function y(_){let g=0,a=!1,d=0;for(let p=0,u=_.rowCount;p<u;p++){if(_.valueKind(p)!==e.Column.ValueKinds.Present){d++;continue}const v=(0,t.getNumberType)(_.str(p));if(v!==t.NumberTypes.Int)if(v===t.NumberTypes.Float)g++;else{a=!0;break}}return a||d===_.rowCount?e.Column.Schema.str:g>0?e.Column.Schema.float:e.Column.Schema.int}return pi}var jE;function _T(){if(jE)return _s;jE=1,Object.defineProperty(_s,"__esModule",{value:!0}),_s.FieldPath=void 0,_s.toDatabaseCollection=o,_s.toDatabase=s,_s.toTable=h;const e=At,t=lt(),r=Ge(),n=et(),i=e.__importStar(bT());var c;(function(b){function P(S){return S.replace(".","_").replace(/\[/,"_").replace(/(\[|\])/g,"")}b.canonical=P;function C(S,T){return P(S)===P(T)}b.equal=C;function l(S,T,A=!1){const x=`${S}${T?`.${T}`:""}`;return A?P(x):x}b.create=l})(c||(_s.FieldPath=c={}));function o(b,P,C){const l={};for(const S of P.blocks)l[S.header]=s(b,S,C);return l}function s(b,P,C){return p(b,P,C)}function h(b,P){return new d(P,b,!0)}function f(b){switch(b.valueType){case"str":return(P,C,l)=>y(b,P,P.str,P.toStringArray);case"int":return(P,C,l)=>_(b,P,P.int,P.toIntArray);case"float":return(P,C,l)=>_(b,P,P.float,P.toFloatArray);case"list":throw new Error("Use createListColumn instead.");case"tensor":throw new Error("Use createTensorColumn instead.")}}function y(b,P,C,l){return{schema:b,__array:P.__array,isDefined:P.isDefined,rowCount:P.rowCount,value:b.transform==="lowercase"?S=>C(S).toLowerCase():b.transform==="uppercase"?S=>C(S).toUpperCase():C,valueKind:P.valueKind,areValuesEqual:P.areValuesEqual,toArray:b.transform==="lowercase"?S=>Array.from(l(S)).map(T=>T.toLowerCase()):b.transform==="uppercase"?S=>Array.from(l(S)).map(T=>T.toUpperCase()):l}}function _(b,P,C,l){return{schema:b,__array:P.__array,isDefined:P.isDefined,rowCount:P.rowCount,value:C,valueKind:P.valueKind,areValuesEqual:P.areValuesEqual,toArray:l}}function g(b,P,C){const l=b.separator,S=b.itemParse,T=P.getField(C),A=T?M=>T.str(M).split(l).map(D=>S(D.trim())).filter(D=>!!D):M=>[],x=M=>t.ColumnHelpers.createAndFillArray(P.rowCount,A,M);return{schema:b,__array:void 0,isDefined:!!T,rowCount:P.rowCount,value:A,valueKind:T?T.valueKind:()=>t.Column.ValueKinds.NotPresent,areValuesEqual:(M,D)=>(0,n.arrayEqual)(A(M),A(D)),toArray:x}}function a(b,P,C){const l=b.space,S=P.fieldNames.includes(`${C}[0]`)||P.fieldNames.includes(`${C}[0][0]`)||P.fieldNames.includes(`${C}[0][0][0]`),T=S?0:1,A=P.fieldNames.includes(`${C}_1`)||P.fieldNames.includes(`${C}_11`)||P.fieldNames.includes(`${C}_111`)?"underscore":"brackets",x=i.tensorFieldNameGetter(C,l.rank,S,A),M=P.getField(x(T,T,T))||t.Column.Undef
7ined(P.rowCount,b),D=R=>i.getTensor(P,l,R,x),V=R=>t.ColumnHelpers.createAndFillArray(P.rowCount,D,R);return{schema:b,__array:void 0,isDefined:M.isDefined,rowCount:P.rowCount,value:D,valueKind:M.valueKind,areValuesEqual:(R,E)=>r.Tensor.areEqualExact(D(R),D(E)),toArray:V}}class d{constructor(P,C,l){this._isDefined=l;const S=Object.keys(C);this._rowCount=P.rowCount,this._columns=S,this._schema=C;const T=Object.create(null);for(const A of S)Object.defineProperty(this,A,{get:function(){if(T[A])return T[A];const x=C[A];if(x.valueType==="list")T[A]=g(x,P,A);else if(x.valueType==="tensor")T[A]=a(x,P,A);else{const M=f(x),D=P.getField(A);T[A]=D?M(D,P,A):t.Column.Undefined(P.rowCount,x)}return T[A]},enumerable:!0,configurable:!1})}}function p(b,P,C){const l=Object.create(null);for(const S of Object.keys(b))l[S]=v(S,b[S],P,C);return t.Database.ofTables(P.header,b,l)}function u(b){const P=Object.create(null);for(const C of Object.keys(b.categories))for(const l of b.categories[C].fieldNames){const S=c.create(C,l,!0);P[S]=b.categories[C].getField(l)}return P}function m(b,P,C,l){const S=c.create(P,b),T=c.canonical(S);if(T in C)return C[T];if(l&&S in l)for(const A of l[S]){const x=c.canonical(A);if(x in C)return C[x]}}function v(b,P,C,l){let S=C.categories[b];if(l){const T=u(C),A=Object.create(null),x=[];let M=0;for(const D of Object.keys(P)){const V=m(D,b,T,l);V&&(A[D]=V,x.push(D),M=V.rowCount)}S={rowCount:M,name:b,fieldNames:[...x],getField(D){return A[D]}}}return new d(S||i.CifCategory.empty(b),P,!!S)}return _s}var Y2={},Hm={},Wm={},$m={},Xm={},GE;function qD(){if(GE)return Xm;GE=1,Object.defineProperty(Xm,"__esModule",{value:!0}),Xm.Axes3D=t;const e=Ge();function t(){return t.empty()}return(function(r){function n(d,p,u,m){return{origin:d,dirA:p,dirB:u,dirC:m}}r.create=n;function i(){return{origin:(0,e.Vec3)(),dirA:(0,e.Vec3)(),dirB:(0,e.Vec3)(),dirC:(0,e.Vec3)()}}r.empty=i;function c(d,p){return e.Vec3.copy(d.origin,p.origin),e.Vec3.copy(d.dirA,p.dirA),e.Vec3.copy(d.dirB,p.dirB),e.Vec3.copy(d.dirC,p.dirC),d}r.copy=c;function o(d){return c(i(),d)}r.clone=o;function s(d,p){return e.Vec3.set(d,e.Vec3.magnitude(p.dirA)*2,e.Vec3.magnitude(p.dirB)*2,e.Vec3.magnitude(p.dirC)*2)}r.size=s;const h=(0,e.Vec3)();function f(d){return s(h,d),h[0]*h[1]*h[2]}r.volume=f;function y(d,p){return e.Vec3.copy(d.origin,p.origin),e.Vec3.normalize(d.dirA,p.dirA),e.Vec3.normalize(d.dirB,p.dirB),e.Vec3.normalize(d.dirC,p.dirC),d}r.normalize=y;const _=(0,e.Mat3)();function g(d,p,u){e.Vec3.transformMat4(d.origin,p.origin,u);const m=e.Mat3.directionTransform(_,u);return e.Vec3.transformMat3(d.dirA,p.dirA,m),e.Vec3.transformMat3(d.dirB,p.dirB,m),e.Vec3.transformMat3(d.dirC,p.dirC,m),d}r.transform=g;function a(d,p,u){return e.Vec3.scale(d.dirA,p.dirA,u),e.Vec3.scale(d.dirB,p.dirB,u),e.Vec3.scale(d.dirC,p.dirC,u),d}r.scale=a})(t||(Xm.Axes3D=t={})),Xm}var Km={},Ym={},zE;function ST(){if(zE)return Ym;
7zE=1,Object.defineProperty(Ym,"__esModule",{value:!0}),Ym.Matrix=void 0;var e;return(function(t){function r(a,d,p=Float32Array){const u=a*d;return{data:new p(u),size:u,cols:a,rows:d}}t.create=r;function n(a,d,p){return a.data[a.rows*p+d]}t.get=n;function i(a,d,p,u){return a.data[a.rows*p+d]=u,a}t.set=i;function c(a,d,p,u){return a.data[a.rows*p+d]+=u,a}t.add=c;function o(a){return a.data.fill(0),a}t.makeZero=o;function s(a){return{data:a.data.slice(),size:a.size,cols:a.cols,rows:a.rows}}t.clone=s;function h(a,d,p){return{data:a,size:d*p,cols:d,rows:p}}t.fromArray=h;function f(a,d){if(a.cols!==d.rows||a.rows!==d.cols)throw new Error("transpose: matrix dimensions incompatible");if(a.data===d.data)throw new Error("transpose: matrices share memory");const p=d.rows,u=d.cols,m=d.data,v=a.data;for(let b=0,P=0,C=0;b<p;C+=1,P+=u,++b){let l=C;for(let S=0;S<u;l+=p,S++)v[l]=m[P+S]}return a}t.transpose=f;function y(a,d,p){const u=d.cols,m=d.rows,v=p.rows,b=d.data,P=p.data,C=a.data;for(let l=0,S=0,T=0;l<m;S+=u,l++)for(let A=0,x=0;x<v;T++,x++){let M=0,D=S;for(let V=0;V<u;D++,A++,V++)M+=b[D]*P[A];C[T]=M}return a}t.multiplyABt=y;function _(a){const d=a.rows,p=a.cols,u=a.data,m=new Array(p);for(let v=0;v<p;++v)m[v]=0;for(let v=0,b=0;v<d;++v)for(let P=0;P<p;++P,++b)m[P]+=u[b];for(let v=0;v<p;++v)m[v]/=d;return m}t.meanRows=_;function g(a,d){const p=a.rows,u=a.cols,m=a.data;for(let v=0,b=0;v<p;++v)for(let P=0;P<u;++P,++b)m[b]-=d[P];return a}t.subRows=g})(e||(Ym.Matrix=e={})),Ym}var _c={},HE;function mJ(){if(HE)return _c;HE=1,Object.defineProperty(_c,"__esModule",{value:!0}),_c.swap=t,_c.hypot=r,_c.JacobiSVDImpl=c,_c.svd=o;const e=ST();function t(s,h,f,y){y=s[h],s[h]=s[f],s[f]=y}function r(s,h){return s=Math.abs(s),h=Math.abs(h),s>h?(h/=s,s*Math.sqrt(1+h*h)):h>0?(s/=h,h*Math.sqrt(1+s*s)):0}const n=1192092896e-16,i=1e-37;function c(s,h,f,y,_,g,a,d){const p=n*2,u=i;let m=0,v=0,b=0,P=0;const C=Math.max(g,30);let l=0,S=0,T=0,A=0,x=0,M=0,D=0,V=0,R=0,E=0,I=0,B=0,w=0,O=0,F=0,L=0,U=0,q=4660,N=0,k=0,j=0;const H=new Float64Array(a<<3);for(;m<a;m++){for(b=0,I=0;b<g;b++)V=s[m*h+b],I+=V*V;if(H[m]=I,y){for(b=0;b<a;b++)y[m*_+b]=0;y[m*_+m]=1}}for(;P<C;P++){for(x=0,m=0;m<a-1;m++)for(v=m+1;v<a;v++){for(l=m*h|0,S=v*h|0,F=H[m],L=0,U=H[v],b=2,L+=s[l]*s[S],L+=s[l+1]*s[S+1];b<g;b++)L+=s[l+b]*s[S+b];if(!(Math.abs(L)<=p*Math.sqrt(F*U))){for(L*=2,B=F-U,w=r(L,B),B<0?(O=(w-B)*.5,D=Math.sqrt(O/w),M=L/(w*D*2)):(M=Math.sqrt((w+B)/(w*2)),D=L/(w*M*2)),F=0,U=0,b=2,R=M*s[l]+D*s[S],E=-D*s[l]+M*s[S],s[l]=R,s[S]=E,F+=R*R,U+=E*E,R=M*s[l+1]+D*s[S+1],E=-D*s[l+1]+M*s[S+1],s[l+1]=R,s[S+1]=E,F+=R*R,U+=E*E;b<g;b++)R=M*s[l+b]+D*s[S+b],E=-D*s[l+b]+M*s[S+b],s[l+b]=R,s[S+b]=E,F+=R*R,U+=E*E;if(H[m]=F,H[v]=U,x=1,y)for(T=m*_|0,A=v*_|0,b=2,R=M*y[T]+D*y[A],E=-D*y[T]+M*y[A],y[T]=R,y[A]=E,R=M*y[T+1]+D*y[A+1],E=-D*y[T+1]+M*y[A+1],y[T+1]=R,y[A+1]=E;b<a;b++)R=M*y[T+b]+D*y[A+b],E=-D*y[T+b]+M*y[A+b],y[T+b]=R,y[A+b]=E}}if(x===0)break}for(m=0;m<a;m++){for(b=0,I=0;b<g;b++)V=s[m*h+b],I+=V*V;H[m]=Math.sqrt(I)}for(m=0;m<a-1;m++){for(v=m,b=m+1;b<a;b++)H[v]<H[b]&&(v=b);if(m!==v&&(t(H,m,v,I),y)){for(b=0;b<g;b++)t(s,m*h+b,v*h+b,V);for(b=0;b<a;b++)t(y,m*_+b,v*_+b,V)}}for(m=0;m<a;m++)f[m]=H[m];if(y)for(m=0;m<d;m++){for(I=m<a?H[m]:0;I<=u;){for(k=1/g,b=0;b<g;b++)q=q*214013+2531011,N=(q>>16&32767&256)!==0?k:-k,s[m*h+b]=N;for(P=0;P<2;P++)for(v=0;v<m;v++){for(I=0,b=0;b<g;b++)I+=s[m*h+b]*s[v*h+b];for(j=0,b=0;b<g;b++)V=s[m*h+b]-I*s[v*h+b],s[m*h+b]=V,j+=Math.abs(V);for(j=j?1/j:0,b=0;b<g;b++)s[m*h+b]*=j}for(I=0,b=0;b<g;b++)V=s[m*h+b],I+=V*V;I=Math.sqrt(I)}for(D=1/I,b=0;b<g;b++)s[m*h+b]*=D}}function o(s,h,f,y){let _=0,g=0;const a=s.rows,d=s.cols;let p=a,u=d;p<u&&(_=1,g=p,p=u,u=g);const m=e.Matrix.create(p,p),v=e.Matrix.create(1,u),b=e.Matrix.create(u,u);if(_===0)e.Matrix.transpose(m,s);else{for(g=0;g<d*a;g++)m.data[g]=s.data[g];for(;g<u*p;g++)m.data[g]=0}if(c(m.data,p,v.data,b.data,u,p,u,p),h){for(g=0;g<u;g++)h.data[g]=v.data[g];for(;g<d;g++)h.data[g]=0}_===0?(f&&e.Matrix.transpose(f,m),y&&e.Matrix.transpose(y,b)):(f&&e.Matrix.transpose(f,b),y&&e.Matrix.transpose(y,m))}return _c}var WE;function _l(){if(WE)return Km;
7WE=1,Object.defineProperty(Km,"__esModule",{value:!0}),Km.PrincipalAxes=void 0;const e=ST(),t=wt(),r=mJ(),n=qD(),i=rn();var c;return(function(o){function s(g){const a=h(g),d=_(g,a);return{momentsAxes:a,boxAxes:d}}o.ofPositions=s;function h(g){if(g.length===3)return n.Axes3D.create(t.Vec3.fromArray((0,t.Vec3)(),g,0),t.Vec3.create(1,0,0),t.Vec3.create(0,1,0),t.Vec3.create(0,0,1));const a=e.Matrix.fromArray(g,3,g.length/3),d=a.rows,p=d/3,u=e.Matrix.create(3,3),m=e.Matrix.create(1,3),v=e.Matrix.create(3,3),b=e.Matrix.create(3,3),P=e.Matrix.meanRows(a),C=e.Matrix.subRows(e.Matrix.clone(a),P),l=e.Matrix.transpose(e.Matrix.create(d,3),C);e.Matrix.multiplyABt(u,l,l),(0,r.svd)(u,m,v,b);const S=t.Vec3.create(P[0],P[1],P[2]),T=t.Vec3.create(v.data[0],v.data[3],v.data[6]),A=t.Vec3.create(v.data[1],v.data[4],v.data[7]),x=t.Vec3.create(v.data[2],v.data[5],v.data[8]);return t.Vec3.scale(T,T,Math.sqrt(m.data[0]/p)),t.Vec3.scale(A,A,Math.sqrt(m.data[1]/p)),t.Vec3.scale(x,x,Math.sqrt(m.data[2]/p)),n.Axes3D.create(S,T,A,x)}o.calculateMomentsAxes=h;function f(g){const a=n.Axes3D.clone(g);return t.Vec3.magnitude(a.dirC)<i.EPSILON&&t.Vec3.cross(a.dirC,a.dirA,a.dirB),n.Axes3D.normalize(a,a)}o.calculateNormalizedAxes=f;const y=(0,t.Vec3)();function _(g,a){if(g.length===3)return n.Axes3D.clone(a);let d=-1/0,p=-1/0,u=-1/0,m=-1/0,v=-1/0,b=-1/0;const P=(0,t.Vec3)(),C=(0,t.Vec3)(),l=a.origin,S=f(a);for(let I=0,B=g.length;I<B;I+=3){t.Vec3.projectPointOnVector(P,t.Vec3.fromArray(P,g,I),S.dirA,l);const w=t.Vec3.dot(S.dirA,t.Vec3.normalize(C,t.Vec3.sub(C,P,l))),O=t.Vec3.distance(P,l);w>0?O>d&&(d=O):O>p&&(p=O),t.Vec3.projectPointOnVector(P,t.Vec3.fromArray(P,g,I),S.dirB,l);const F=t.Vec3.dot(S.dirB,t.Vec3.normalize(C,t.Vec3.sub(C,P,l))),L=t.Vec3.distance(P,l);F>0?L>u&&(u=L):L>m&&(m=L),t.Vec3.projectPointOnVector(P,t.Vec3.fromArray(P,g,I),S.dirC,l);const U=t.Vec3.dot(S.dirC,t.Vec3.normalize(C,t.Vec3.sub(C,P,l))),q=t.Vec3.distance(P,l);U>0?q>v&&(v=q):q>b&&(b=q)}const T=t.Vec3.setMagnitude((0,t.Vec3)(),S.dirA,(d+p)/2),A=t.Vec3.setMagnitude((0,t.Vec3)(),S.dirB,(u+m)/2),x=t.Vec3.setMagnitude((0,t.Vec3)(),S.dirC,(v+b)/2),M=t.Vec3.isFinite(T),D=t.Vec3.isFinite(A),V=t.Vec3.isFinite(x),R=(0,t.Vec3)(),E=function(I,B,w){t.Vec3.copy(y,l),M&&t.Vec3.scaleAndAdd(y,y,S.dirA,I),D&&t.Vec3.scaleAndAdd(y,y,S.dirB,B),V&&t.Vec3.scaleAndAdd(y,y,S.dirC,w),t.Vec3.add(R,R,y)};return E(d,u,v),E(d,u,-b),E(d,-m,-b),E(d,-m,v),E(-p,-m,-b),E(-p,-m,v),E(-p,u,v),E(-p,u,-b),t.Vec3.scale(R,R,1/8),n.Axes3D.create(R,T,A,x)}o.calculateBoxAxes=_})(c||(Km.PrincipalAxes=c={})),Km}var $E;function ja(){if($E)return $m;$E=1,Object.defineProperty($m,"__esModule",{value:!0}),$m.Sphere3D=o;const e=nn(),t=qD(),r=_l(),n=wt(),i=Xr(),c=rn();function o(){return o.zero()}return(function(s){function h(L){return L.extrema!==void 0}s.hasExtrema=h;function f(L,U){return{center:L,radius:U}}s.create=f;function y(){return{center:(0,n.Vec3)(),radius:0}}s.zero=y;function _(L){const U=f(n.Vec3.clone(L.center),L.radius);return h(L)&&(U.extrema=L.extrema.map(q=>n.Vec3.clone(q))),U}s.clone=_;function g(L,U,q){return n.Vec3.copy(L.center,U),L.radius=q,L}s.set=g;function a(L,U){return n.Vec3.copy(L.center,U.center),L.radius=U.radius,h(U)&&d(L,U.extrema.map(q=>n.Vec3.clone(q))),L}s.copy=a;function d(L,U){return L.extrema!==void 0?(L.extrema.length=0,L.extrema.push(...U)):L.extrema=U,L}s.setExtrema=d;function p(L){const{x:U,y:q,z:N,indices:k}=L;let j=0,H=0,G=0,z=0;const W=e.OrderedSet.size(k);for(let X=0;X<W;X++){const Y=e.OrderedSet.getAt(k,X);j+=U[Y],H+=q[Y],G+=N[Y]}W>0&&(j/=W,H/=W,G/=W);for(let X=0;X<W;X++){const Y=e.OrderedSet.getAt(k,X),K=U[Y]-j,Q=q[Y]-H,J=N[Y]-G,ae=K*K+Q*Q+J*J;ae>z&&(z=ae)}return{center:n.Vec3.create(j,H,G),radius:Math.sqrt(z)}}s.computeBounding=p;function u(L,U,q){return n.Vec3.transformMat4(L.center,U.center,q),L.radius=U.radius*i.Mat4.getMaxScaleOnAxis(q),h(U)&&d(L,U.extrema.map(N=>n.Vec3.transformMat4((0,n.Vec3)(),N,q))),L}s.transform=u;function m(L,U,q){return n.Vec3.add(L.center,U.center,q),h(U)&&d(L,U.extrema.map(N=>n.Vec3.add((0,n.Vec3)(),N,q))),L}s.translate=m;function v(L,U,q){return n.Vec3.scale(L.center,U.center,q),L.radius=U.radius*q,h(U)&&d(L,U.extrema.map(N=>n.Vec3.scale((0,n.Vec3)(),N,q))),L}s.scale=v;function b(L,U,q){return n.Vec3.scale(L.center,U.center,q),L.radius=U.radius*q,L}s.scaleNX=b;function P(L,U,q){return n.Vec3.toArray(L.center,U,q),U[q+3]=L.radius,U}s.toArray=P;function C(L,U,q){return n.Vec3.fromArray(L.center,U,q),L.radius=U[q+3],L}s.fromArray=C;function l(L,U){return n.Vec3.scale(L.center,n.Vec3.add(L.center,U.max,U.min),.5),L.radius=n.Vec3.distance(L.center,U.max),s.setExtrema(L,[n.Vec3.create(U.min[0],U.min[1],U.min[2]),n.Vec3.create(U.max[0],U.max[1],U.max[2]),n.Vec3.create(U.max[0],U.min[1],U.min[2]),n.Vec3.create(U.min[0],U.max[1],U.max[2]),n.Vec3.create(U.min[0],U.min[1],U.max[2]),n.Vec3.create(U.max[0],U.min[1],U.max[2]),n.Vec3.create(U.max[0],U.max[1],U.min[2]),n.Vec3.create(U.min[0],U.max[1],U.min[2])]),L}
7s.fromBox3D=l;function S(L,U){return n.Vec3.copy(L.center,U.origin),L.radius=Math.max(n.Vec3.magnitude(U.dirA),n.Vec3.magnitude(U.dirB),n.Vec3.magnitude(U.dirC)),L}s.fromAxes3D=S;const T=(0,n.Vec3)();function A(L,U,q){const[N,k,j]=U,H=n.Vec3.create(0,0,0);n.Vec3.transformMat4(H,H,q);const G=n.Vec3.create(N,k,j);n.Vec3.transformMat4(G,G,q);const z=n.Vec3.create(N,0,0);n.Vec3.transformMat4(z,z,q);const W=n.Vec3.create(0,k,j);n.Vec3.transformMat4(W,W,q);const X=n.Vec3.create(0,0,j);n.Vec3.transformMat4(X,X,q);const Y=n.Vec3.create(N,0,j);n.Vec3.transformMat4(Y,Y,q);const K=n.Vec3.create(N,k,0);n.Vec3.transformMat4(K,K,q);const Q=n.Vec3.create(0,k,0);n.Vec3.transformMat4(Q,Q,q),n.Vec3.add(T,H,G),n.Vec3.scale(T,T,.5);const J=Math.max(n.Vec3.distance(H,G),n.Vec3.distance(z,W));return s.set(L,T,J/2),s.setExtrema(L,[H,G,z,W,X,Y,K,Q]),L}s.fromDimensionsAndTransform=A;const x=(0,n.Vec3)();function M(L,U,q){return n.Vec3.distance(U.center,q)<U.radius?s.copy(L,U):(n.Vec3.sub(x,U.center,q),n.Vec3.sub(x,U.center,x),n.Vec3.setMagnitude(x,x,U.radius),n.Vec3.scale(L.center,n.Vec3.add(x,x,q),.5),L.radius=n.Vec3.distance(L.center,q),L)}s.addVec3=M;function D(L,U,q){return n.Vec3.copy(L.center,U.center),L.radius=Math.max(U.radius,n.Vec3.distance(U.center,q.center)+q.radius),h(U)&&h(q)&&d(L,[...U.extrema.map(N=>n.Vec3.clone(N)),...q.extrema.map(N=>n.Vec3.clone(N))]),L}
7s.expandBySphere=D;const V=(0,n.Vec3)();function R(L,U,q){var N,k;if(n.Vec3.copy(L.center,U.center),L.radius=U.radius+q,U.radius<1e-12||((k=(N=U.extrema)===null||N===void 0?void 0:N.length)!==null&&k!==void 0?k:0)<=1)return L.extrema=void 0,L;if(h(U)){const j=new Float32Array(U.extrema.length*3);for(let G=0;G<U.extrema.length;G++)n.Vec3.toArray(U.extrema[G],j,G*3);const H=r.PrincipalAxes.calculateMomentsAxes(j);t.Axes3D.scale(H,t.Axes3D.normalize(H,H),q),d(L,U.extrema.map(G=>{n.Vec3.normalize(V,n.Vec3.sub(V,G,U.center));const z=n.Vec3.clone(G),W=n.Vec3.dot(V,H.dirA)<0?-1:1;n.Vec3.scaleAndAdd(z,z,H.dirA,W);const X=n.Vec3.dot(V,H.dirB)<0?-1:1;n.Vec3.scaleAndAdd(z,z,H.dirB,X);const Y=n.Vec3.dot(V,H.dirC)<0?-1:1;return n.Vec3.scaleAndAdd(z,z,H.dirC,Y),n.Vec3.distance(L.center,z)>L.radius&&(U.extrema.length>=14&&n.Vec3.normalize(V,n.Vec3.sub(V,z,U.center)),n.Vec3.scaleAndAdd(z,L.center,V,L.radius)),z}))}return L}s.expand=R;function E(L,U){return L.radius===U.radius&&n.Vec3.exactEquals(L.center,U.center)}s.exactEquals=E;function I(L,U){const q=L.radius,N=U.radius;return Math.abs(q-N)<=c.EPSILON*Math.max(1,Math.abs(q),Math.abs(N))&&n.Vec3.equals(L.center,U.center)}s.equals=I;function B(L,U){if(h(U)){for(const q of U.extrema)if(n.Vec3.distance(L.center,q)>L.radius)return!1;return!0}else return n.Vec3.distance(L.center,U.center)+U.radius<=L.radius}s.includes=B;function w(L,U){return n.Vec3.distance(L.center,U.center)<=L.radius+U.radius}s.overlaps=w;function O(L,U){return n.Vec3.distance(L.center,U.center)-L.radius+U.radius}s.distance=O;function F(L,U){const{center:q,radius:N}=L;return n.Vec3.distance(U,q)-N}s.distanceToVec=F})(o||($m.Sphere3D=o={})),$m}var XE;function os(){if(XE)return Wm;XE=1,Object.defineProperty(Wm,"__esModule",{value:!0}),Wm.Box3D=n;const e=nn(),t=ja(),r=wt();function n(){return n.zero()}return(function(i){function c(w,O){return{min:w,max:O}}i.create=c;function o(){return{min:(0,r.Vec3)(),max:(0,r.Vec3)()}}i.zero=o;function s(w,O){return r.Vec3.copy(w.min,O.min),r.Vec3.copy(w.max,O.max),w}i.copy=s;function h(w,O,F){return r.Vec3.copy(w.min,O),r.Vec3.copy(w.max,F),w}i.set=h;function f(w){return s(o(),w)}i.clone=f;const y=(0,r.Vec3)();function _(w,O){return t.Sphere3D.hasExtrema(O)&&O.extrema.length>=14?a(w,O.extrema):(r.Vec3.set(y,O.radius,O.radius,O.radius),r.Vec3.sub(w.min,O.center,y),r.Vec3.add(w.max,O.center,y),w)}i.fromSphere3D=_;function g(w,O){for(let F=0,L=O.length;F<L;F++)l(w,O[F]);return w}i.addVec3Array=g;function a(w,O){return C(w),g(w,O),w}i.fromVec3Array=a;function d(w,O){return t.Sphere3D.hasExtrema(O)&&O.extrema.length>=14?g(w,O.extrema):(l(w,r.Vec3.subScalar(y,O.center,O.radius)),l(w,r.Vec3.addScalar(y,O.center,O.radius)),w)}i.addSphere3D=d;function p(w,O){return l(w,O.min),l(w,O.max),w}i.addBox3D=p;function u(w,O){return r.Vec3.clamp(y,O.center,w.min,w.max),r.Vec3.squaredDistance(y,O.center)<=O.radius*O.radius}i.intersectsSphere3D=u;function m(w){const O=r.Vec3.create(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),F=r.Vec3.create(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),{x:L,y:U,z:q,indices:N}=w;for(let k=0,j=e.OrderedSet.size(N);k<j;k++){const H=e.OrderedSet.getAt(N,k);O[0]=Math.min(L[H],O[0]),O[1]=Math.min(U[H],O[1]),O[2]=Math.min(q[H],O[2]),F[0]=Math.max(L[H],F[0]),F[1]=Math.max(U[H],F[1]),F[2]=Math.max(q[H],F[2])}return{min:O,max:F}}i.computeBounding=m;function v(w,O){return r.Vec3.sub(w,O.max,O.min)}i.size=v;const b=(0,r.Vec3)();function P(w){return v(b,w),b[0]*b[1]*b[2]}i.volume=P;function C(w){return r.Vec3.set(w.min,Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),r.Vec3.set(w.max,-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),w}i.setEmpty=C;function l(w,O){return r.Vec3.min(w.min,w.min,O),r.Vec3.max(w.max,w.max,O),w}i.add=l;function S(w,O,F){return r.Vec3.sub(w.min,O.min,F),r.Vec3.add(w.max,O.max,F),w}i.expand=S;function T(w,O,F){return r.Vec3.subScalar(w.min,O.min,F),r.Vec3.addScalar(w.max,O.max,F),w}i.expandUniformly=T;function A(w,O,F){return r.Vec3.scale(w.min,O.min,F),r.Vec3.scale(w.max,O.max,F),w}i.scale=A;const x=(0,r.Vec3)();function M(w,O,F){const[L,U,q]=O.min,[N,k,j]=O.max;return C(w),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,L,U,q),F)),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,L,U,j),F)),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,L,k,q),F)),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,L,k,j),F)),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,N,U,q),F)),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,N,U,j),F)),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,N,k,q),F)),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,N,k,j),F)),w}i.transform=M;function D(w,O){return!(O[0]<w.min[0]||O[0]>w.max[0]||O[1]<w.min[1]||O[1]>w.max[1]||O[2]<w.min[2]||O[2]>w.max[2])}i.containsVec3=D;function V(w,O){return!(w.max[0]<O.min[0]||w.min[0]>O.max[0]||w.max[1]<O.min[1]||w.min[1]>O.max[1]||w.max[2]<O.min[2]||w.min[2]>O.max[2])}i.overlaps=V;function R(w,O){const F=O.center,L=O.radius;return!(F[0]-L<w.min[0]||F[0]+L>w.max[0]||F[1]-L<w.min[1]||F[1]+L>w.max[1]||F[2]-L<w.min[2]||F[2]+L>w.max[2])}i.containsSphere3D=R;function E(w,O){return r.Vec3.center(w,O.max,O.min)}i.center=E;function I(w,O){return r.Vec3.exactEquals(w.min,O.min)&&r.Vec3.exactEquals(w.max,O.max)}i.exactEquals=I;function B(w,O){return r.Vec3.equals(w.min,O.min)&&r.Vec3.equals(w.max,O.max)}i.equals=B})(n||(Wm.Box3D=n={})),Wm}var KE;function UD(){if(KE)return Hm;
7KE=1,Object.defineProperty(Hm,"__esModule",{value:!0}),Hm.getRegularGrid3dDelta=r,Hm.fillGridDim=n;const e=wt(),t=os();function r({box:i,dimensions:c}){return e.Vec3.div((0,e.Vec3)(),t.Box3D.size((0,e.Vec3)(),i),e.Vec3.subScalar((0,e.Vec3)(),c,1))}function n(i,c,o){const s=new Float32Array(i);for(let h=0;h<s.length;h++)s[h]=c+o*h;return s}return Hm}var Qm={},YE;function eS(){if(YE)return Qm;YE=1,Object.defineProperty(Qm,"__esModule",{value:!0}),Qm.SymmetryOperator=void 0;const e=ir(),t=K_(),r=Xr(),n=rs(),i=wt();var c;(function(h){h.DefaultName="1_555",h.Default=f(h.DefaultName,r.Mat4.identity()),h.RotationTranslationEpsilon=.005;function f(D,V,R){var E;let{assembly:I,ncsId:B,hkl:w,spgrOp:O,key:F}=R||{};const L=w?i.Vec3.clone(w):(0,i.Vec3)();O=O??-1,F=F??-1,B=B||-1;const U=r.Mat4.isIdentity(V),q=a(R,U),N=(E=R?.instanceId)!==null&&E!==void 0?E:D;return U?{name:D,instanceId:N,assembly:I,matrix:V,inverse:r.Mat4.identity(),isIdentity:!0,hkl:L,spgrOp:O,ncsId:B,suffix:q,key:F}:(r.Mat4.isRotationAndTranslation(V,h.RotationTranslationEpsilon)||console.warn(`Symmetry operator (${D}) should be a composition of rotation and translation.`),{name:D,instanceId:N,assembly:I,matrix:V,inverse:r.Mat4.invert((0,r.Mat4)(),V),isIdentity:!1,hkl:L,spgrOp:O,key:F,ncsId:B,suffix:q})}h.create=f;function y(D){return!!D&&!!D.matrix&&!!D.inverse&&typeof D.name=="string"}function _(D,V,R,E){const I=B=>B>=0&&B<=9?`${B}`:`(${B})`;return`${D+1}_${I(V+5)}${I(R+5)}${I(E+5)}`}h.getSymmetryOperatorName=_;function g(D){return"ASM-"+D.join("-")}h.getAssemblyOperatorName=g;function a(D,V){if(!D)return"";if(D.assembly)return y(D)?D.suffix:V?"":`_${D.assembly.operId}`;if(typeof D.spgrOp<"u"&&typeof D.hkl<"u"&&D.spgrOp!==-1){const[R,E,I]=D.hkl;return`-${_(D.spgrOp,R,E,I)}`}return D.ncsId!==-1?`_${D.ncsId}`:""}const d=(0,r.Mat4)();function p(D,V){r.Mat4.setIdentity(d);for(let R=0;R<3;R++)for(let E=0;E<3;E++)r.Mat4.setValue(d,R,E,t.Mat3.getValue(D,R,E));return r.Mat4.setTranslation(d,V),r.Mat4.isRotationAndTranslation(d,h.RotationTranslationEpsilon)}h.checkIfRotationAndTranslation=p;function u(D,V,R,E){const I=r.Mat4.identity();for(let B=0;B<3;B++)for(let w=0;w<3;w++)r.Mat4.setValue(I,B,w,t.Mat3.getValue(V,B,w));return r.Mat4.setTranslation(I,R),f(D,I,{ncsId:E})}h.ofRotationAndOffset=u;const m=n.Quat.identity(),v=(0,n.Quat)(),b=(0,n.Quat)(),P=(0,i.Vec3)();function C(D,V,R){const E=V.inverse;if(V.isIdentity)return r.Mat4.copy(D,E);const I=1-R;r.Mat4.getRotation(v,E),n.Quat.slerp(v,m,v,I);const B=n.Quat.getAxisAngle(P,v);return r.Mat4.fromRotation(D,B,P),r.Mat4.setValue(D,0,3,I*r.Mat4.getValue(E,0,3)),r.Mat4.setValue(D,1,3,I*r.Mat4.getValue(E,1,3)),r.Mat4.setValue(D,2,3,I*r.Mat4.getValue(E,2,3)),D}h.lerpFromIdentity=C;function l(D,V,R,E){if(Math.abs(E)<=1e-5)return r.Mat4.copy(D,V);if(Math.abs(E-1)<=1e-5)return r.Mat4.copy(D,R);r.Mat4.getRotation(v,V),r.Mat4.getRotation(b,R),n.Quat.slerp(b,v,b,E);const I=n.Quat.getAxisAngle(P,b);return r.Mat4.fromRotation(D,I,P),r.Mat4.setValue(D,0,3,(0,e.lerp)(r.Mat4.getValue(V,0,3),r.Mat4.getValue(R,0,3),E)),r.Mat4.setValue(D,1,3,(0,e.lerp)(r.Mat4.getValue(V,1,3),r.Mat4.getValue(R,1,3),E)),r.Mat4.setValue(D,2,3,(0,e.lerp)(r.Mat4.getValue(V,2,3),r.Mat4.getValue(R,2,3),E)),D}h.slerp=l;function S(D,V){const R=r.Mat4.mul((0,r.Mat4)(),V.matrix,D.matrix);return f(V.name,R,V)}h.compose=S;class T{constructor(V,R,E=o){this.operator=V,this.coordinates=R,this.r=E,this._x=R.x,this._y=R.y,this._z=R.z,this._m=V.matrix}invariantPosition(V,R){return R[0]=this._x[V],R[1]=this._y[V],R[2]=this._z[V],R}position(V,R){return R[0]=this._x[V],R[1]=this._y[V],R[2]=this._z[V],i.Vec3.transformMat4(R,R,this._m),R}x(V){const R=this._m,E=R[0],I=R[4],B=R[8],w=R[12],O=this._x[V],F=this._y[
7V],L=this._z[V],U=R[3]*O+R[7]*F+R[11]*L+R[15]||1;return(E*O+I*F+B*L+w)/U}y(V){const R=this._m,E=R[1],I=R[5],B=R[9],w=R[13],O=this._x[V],F=this._y[V],L=this._z[V],U=R[3]*O+R[7]*F+R[11]*L+R[15]||1;return(E*O+I*F+B*L+w)/U}z(V){const R=this._m,E=R[2],I=R[6],B=R[10],w=R[14],O=this._x[V],F=this._y[V],L=this._z[V],U=R[3]*O+R[7]*F+R[11]*L+R[15]||1;return(E*O+I*F+B*L+w)/U}}class A{constructor(V,R,E=o){this.operator=V,this.coordinates=R,this.r=E,this._x=R.x,this._y=R.y,this._z=R.z,this._m=V.matrix}invariantPosition(V,R){return R[0]=this._x[V],R[1]=this._y[V],R[2]=this._z[V],R}position(V,R){return R[0]=this.x(V),R[1]=this.y(V),R[2]=this.z(V),R}x(V){const R=this._m;return R[0]*this._x[V]+R[4]*this._y[V]+R[8]*this._z[V]+R[12]}y(V){const R=this._m;return R[1]*this._x[V]+R[5]*this._y[V]+R[9]*this._z[V]+R[13]}z(V){const R=this._m;return R[2]*this._x[V]+R[6]*this._y[V]+R[10]*this._z[V]+R[14]}}class x{constructor(V,R,E=o){this.operator=V,this.coordinates=R,this.r=E,this._x=R.x,this._y=R.y,this._z=R.z}invariantPosition(V,R){return R[0]=this._x[V],R[1]=this._y[V],R[2]=this._z[V],R}position(V,R){return R[0]=this._x[V],R[1]=this._y[V],R[2]=this._z[V],R}x(V){return this._x[V]}y(V){return this._y[V]}z(V){return this._z[V]}}function M(D,V,R=o){return r.Mat4.isIdentity(D.matrix)?new x(D,V,R):s(D.matrix)?new A(D,V,R):new T(D,V,R)}h.createMapping=M})(c||(Qm.SymmetryOperator=c={}));function o(h){return 0}function s(h){return h[3]===0&&h[7]===0&&h[11]===0&&h[15]===1}return Qm}var Sc={},Q2={},QE;function pJ(){return QE||(QE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SpacegroupNumber=e.SpacegroupName=e.SpacegroupNameToIndexMap=e.GroupData=e.OperatorData=e.TransformData=void 0,e.getSpacegroupIndexFromNumber=t,e.getSpacegroupNumberFromIndex=r,e.getSpacegroupIndex=n,e.TransformData=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[-1,0,0,0],[0,-1,0,0],[0,0,-1,0],[0,1,0,.5],[1,0,0,.5],[-1,0,0,.5],[0,0,1,.5],[0,-1,0,.5],[0,0,-1,.5],[1,0,0,.25],[0,-1,0,.25],[0,0,1,.25],[-1,0,0,.25],[0,1,0,.25],[0,-1,0,.75],[0,0,1,.75],[0,1,0,.75],[1,0,0,.75],[-1,0,0,.75],[0,0,-1,.25],[0,0,-1,.75],[1,-1,0,0],[-1,1,0,0],[0,0,1,1/3],[0,0,1,2/3],[1,0,0,2/3],[0,1,0,1/3],[0,-1,0,2/3],[1,-1,0,1/3],[-1,1,0,2/3],[-1,0,0,1/3],[1,0,0,1/3],[0,1,0,2/3],[0,-1,0,1/3],[1,-1,0,2/3],[-1,1,0,1/3],[-1,0,0,2/3],[0,0,-1,1/3],[0,0,-1,2/3],[0,0,1,5/6],[0,0,1,1/6],[0,0,-1,5/6],[0,0,-1,1/6]],e.OperatorData=[[0,1,2],[3,4,5],[3,1,5],[3,6,5],[7,6,2],[8,6,5],[0,4,2],[0,4,9],[7,10,2],[7,10,9],[0,10,2],[8,10,5],[3,1,11],[3,6,11],[0,10,9],[8,6,11],[3,4,2],[0,4,5],[3,4,9],[7,10,5],[8,4,9],[8,10,9],[8,10,2],[0,6,9],[3,10,9],[0,10,11],[7,1,9],[8,1,11],[7,4,11],[7,6,9],[7,10,11],[3,10,2],[8,1,5],[0,4,11],[3,1,2],[3,1,9],[7,4,2],[8,1,2],[8,1,9],[3,6,9],[7,4,9],[8,6,2],[8,6,9],[3,6,2],[12,13,14],[15,16,14],[12,17,18],[15,19,18],[20,13,18],[21,16,18],[20,17,14],[21,19,14],[0,1,5],[8,10,11],[7,6,11],[7,6,5],[8,4,2],[7,4,5],[7,1,5],[7,1,11],[0,10,5],[0,1,11],[0,6,11],[0,6,5],[3,10,11],[8,4,11],[15,13,22],[12,16,22],[15,17,23],[12,19,23],[21,13,23],[20,16,23],[21,17,22],[20,19,22],[4,0,2],[1,3,2],[4,0,14],[1,3,18],[4,0,9],[1,3,9],[4,0,18],[1,3,14],[10,7,9],[6,8,9],[4,7,14],[6,3,18],[10,0,18],[1,8,14],[1,3,5],[4,0,5],[6,8,11],[10,7,11],[1,3,11],[4,0,11],[10,7,2],[6,8,2],[3,10,22],[7,1,23],[8,4,23],[0,6,22],[1,0,5],[4,3,5],[1,0,23],[4,3,22],[10,7,14],[6,8,18],[8,6,22],[7,10,23],[4,3,11],[1,0,11],[1,0,22],[4,3,23],[10,7,18],[6,8,14],[8,6,23],[7,10,22],[6,7,11],[10,8,11],[8,1,23],[0,10,22],[3,6,22],[7,4,23],[4,3,2],[1,0,2],[10,8,2],[6,7,2],[4,3,9],[1,0,9],[10,8,9],[6,7,9],[4,8,14],[6,0,18],[10,3,18],[1,7,14],[4,8,18],[6,0,14],[10,3,14],[1,7,18],[6,7,5],[10,8,5],[6,8,5],[10,7,5],[8,1,22],[0,10,23],[3,6,23],[7,4,22],[4,24,2],[25,3,2],[4,24,26],[25,3,27],[4,24,27],[25,3,26],[28,29,26],[30,31,26],[32,33,26],[34,35,27],[36,37,27],[38,39,27],[2,0,1],[1,2,0],[1,25,5],[24,0,5],[39,36,40],[35,38,40],[37,34,40],[33,30,41],[29,32,41],[31,28,41],[5,3,4],[4,5,3],[25,1,5],[0,24,5],[24,4,5],[3,25,5],[4,3,41],[25,1,40],[24,4,41],[3,25,40],[4,3,40],[25,1,41],[24,4,40],[3,25,41],[35,34,40],[37,36,40],[39,38,40],[29,28,41],[31,30,41],[33,32,41],[3,5,4],[5,4,3],[25,1,2],[0,24,2],[24,4,2],[3,25,2],[25,1,9],[0,24,9],[24,4,9],[3,25,9],[30,33,26],[32,29,26],[28,31,26],[36,39,27],[38,35,27],[34,37,27],[0,2,1],[2,1,0],[30,33,42],[32,29,42],[28,31,42],[36,39,43],[38,35,43],[34,37,43],[7,9,6],[9,6,7],[25,1,11],[0,24,11],[24,4,11],[3,25,11],[35,34,44],[37,36,44],[39,38,44],[29,28,45],[3
71,30,45],[33,32,45],[8,11,10],[11,10,8],[1,25,2],[24,0,2],[1,25,42],[24,0,43],[1,25,43],[24,0,42],[1,25,27],[24,0,26],[1,25,26],[24,0,27],[1,25,9],[24,0,9],[4,24,5],[25,3,5],[4,24,11],[25,3,11],[1,0,40],[4,3,44],[0,24,45],[1,0,41],[4,3,45],[0,24,44],[0,24,40],[0,24,41],[2,3,4],[5,3,1],[5,0,4],[4,2,3],[1,5,3],[4,5,0],[2,7,6],[2,8,10],[5,8,6],[5,7,10],[1,9,7],[4,9,8],[1,11,8],[4,11,7],[9,0,6],[9,3,10],[11,3,6],[11,0,10],[6,2,7],[10,2,8],[6,5,8],[10,5,7],[9,7,1],[9,8,4],[11,8,1],[11,7,4],[6,9,0],[10,9,3],[6,11,3],[10,11,0],[9,7,6],[9,8,10],[11,8,6],[11,7,10],[6,9,7],[10,9,8],[6,11,8],[10,11,7],[2,3,10],[5,8,1],[11,0,4],[10,2,3],[1,5,8],[4,11,0],[5,0,1],[2,0,4],[2,3,1],[1,5,0],[4,2,0],[1,2,3],[11,8,10],[11,7,6],[9,7,10],[9,8,6],[10,11,8],[6,11,7],[10,9,7],[6,9,8],[5,8,10],[5,7,6],[2,7,10],[2,8,6],[4,11,8],[1,11,7],[4,9,7],[1,9,8],[11,3,10],[11,0,6],[9,0,10],[9,3,6],[10,5,8],[6,5,7],[10,2,7],[6,2,8],[11,8,4],[11,7,1],[9,7,4],[9,8,1],[10,11,3],[6,11,0],[10,9,0],[6,9,3],[22,15,13],[22,12,16],[14,12,13],[14,15,16],[13,22,15],[16,22,12],[13,14,12],[16,14,15],[22,21,17],[22,20,19],[14,20,17],[14,21,19],[13,23,21],[16,23,20],[13,18,20],[16,18,21],[23,15,17],[23,12,19],[18,12,17],[18,15,19],[17,22,21],[19,22,20],[17,14,20],[19,14,21],[23,21,13],[23,20,16],[18,20,13],[18,21,16],[17,23,15],[19,23,12],[17,18,12],[19,18,15],[5,0,6],[2,7,4],[9,3,1],[6,5,0],[4,2,7],[1,9,3],[0,2,4],[3,2,1],[0,5,1],[2,1,3],[2,4,0],[5,1,0],[7,9,10],[8,9,6],[7,11,6],[9,6,8],[9,10,7],[11,6,7],[1,7,11],[4,8,11],[1,8,9],[4,7,9],[0,9,10],[3,9,6],[3,11,10],[0,11,6],[2,6,8],[2,10,7],[5,6,7],[5,10,8],[6,0,11],[10,3,11],[6,3,9],[10,0,9],[7,2,10],[8,2,6],[8,5,10],[7,5,6],[9,1,8],[9,4,7],[11,1,7],[11,4,8],[7,9,4],[8,9,1],[8,11,4],[7,11,1],[9,6,3],[9,10,0],[11,6,0],[11,10,3],[19,12,23],[13,15,22],[16,21,18],[17,20,14],[20,14,17],[21,18,16],[15,22,13],[12,23,19],[18,16,21],[14,17,20],[23,19,12],[22,13,15],[19,20,22],[13,21,23],[16,15,14],[17,12,18],[20,18,13],[21,14,19],[15,23,17],[12,22,16],[18,19,15],[14,13,12],[23,16,20],[22,17,21],[16,12,22],[17,15,23],[19,21,14],[13,20,18],[12,14,13],[15,18,19],[21,22,17],[20,23,16],[14,16,15],[18,17,12],[22,19,20],[23,13,21],[16,20,23],[17,21,22],[19,15,18],[13,12,14],[12,18,17],[15,14,16],[21,23,13],[20,22,19],[14,19,21],[18,13,20],[22,16,12],[23,17,15],[19,12,22],[17,21,23],[16,15,18],[13,20,14],[20,14,13],[15,18,16],[21,23,17],[12,22,19],[18,16,15],[14,13,20],[22,19,12],[23,17,21],[3,2,4],[3,5,1],[0,5,4],[2,4,3],[5,1,3],[5,4,0],[1,7,9],[4,8,9],[1,8,11],[4,7,11],[0,9,6],[3,9,10],[3,11,6],[0,11,10],[2,6,7],[2,10,8],[5,6,8],[5,10,7],[6,0,9],[10,3,9],[6,3,11],[10,0,11],[7,2,6],[8,2,10],[8,5,6],[7,5,10],[9,1,7],[9,4,8],[11,1,8],[11,4,7],[7,9,1],[8,9,4],[8,11,1],[7,11,4],[9,6,0],[9,10,3],[11,6,3],[11,10,0],[8,9,10],[8,11,6],[7,11,10],[9,10,8],[11,6,8],[11,10,7],[6,0,2],[10,3,2],[6,3,5],[10,0,5],[7,2,1],[8,2,4],[8,5,1],[7,5,4],[9,1,0],[9,4,3],[11,1,3],[11,4,0],[1,7,2],[4,8,2],[1,8,5],[4,7,5],[0,9,1],[3,9,4],[3,11,1],[0,11,4],[2,6,0],[2,10,3],[5,6,3],[5,10,0],[0,2,6],[3,2,10],[3,5,6],[0,5,10],[2,1,7],[2,4,8],[5,1,8],[5,4,7],[16,12,14],[13,21,18],[19,15,23],[17,20,22],[12,14,16],[21,18,13],[15,23,19],[20,22,17],[14,16,12],[18,13,21],[23,19,15],[22,17,20],[19,20,18],[17,15,14],[16,21,22],[13,12,23],[20,18,19],[15,14,17],[21,22,16],[12,23,13],[18,19,20],[14,17,15],[22,16,21],[23,13,12],[6,0,5],[10,3,5],[6,3,2],[10,0,2],[7,2,4],[8,2,1],[8,5,4],[7,5,1],[9,1,3],[9,4,0],[11,1,0],[11,4,3],[1,7,5],[4,8,5],[1,8,2],[4,7,2],[0,9,4],[3,9,1],[3,11,4],[0,11,1],[2,6,3],[2,10,0],[5,6,0],[5,10,3],[0,2,10],[3,2,6],[3,5,10],[0,5,6],[2,1,8],[2,4,7],[5,1,7],[5,4,8],[21,17,23],[20,16,22],[12,13,18],[15,19,14],[23,21,17],[22,20,16],[18,12,13],[14,15,19],[17,23,21],[16,22,20],[13,18,12],[19,14,15],[21,13,22],[20,19,23],[12,17,14],[15,16,18],[23,15,13],[22,12,19],[18,20,17],[14,21,16],[17,22,15],[16,23,12],[13,14,20],[19,18,21],[15,17,22],[12,16,23],[20,13,14],[21,19,18],[22,21,13],[23,20,19],[14,12,17],[18,15,16],[13,23,15],[19,22,12],[17,18,20],[16,14,21],[15,13,23],[12,19,22],[20,17,18],[21,16,14],[22,15,17],[23,12,16],[14,20,13],[18,21,19],[13,22,21],[19,23,20],[17,14,12],[16,18,15],[6,5,3],[4,9,3],[9,3,4],[5,7,4],[4,5,7],[5,3,6]],e.GroupData
vendor: 16,485 bytes, line 7
7=[[0],[0,1],[0,2],[0,3],[0,2,4,5],[0,6],[0,7],[0,6,4,8],[0,7,4,9],[0,6,2,1],[0,3,1,10],[0,6,2,1,4,8,5,11],[0,12,1,7],[0,1,13,14],[0,12,1,7,4,15,11,9],[0,16,2,17],[0,18,12,17],[0,16,5,19],[0,20,13,19],[0,18,12,17,4,21,15,19],[0,16,2,17,4,22,5,19],[0,16,2,17,23,24,13,25,26,20,27,28,4,22,5,19],[0,16,17,2,29,21,30,15],[0,20,13,19,29,31,32,33],[0,16,6,34],[0,18,7,34],[0,16,7,35],[0,16,36,37],[0,18,36,38],[0,16,14,39],[0,20,40,34],[0,16,8,41],[0,18,8,42],[0,16,9,42],[0,16,6,34,4,22,8,41],[0,18,7,34,4,21,9,41],[0,16,7,35,4,22,9,42],[0,16,6,34,23,24,14,39],[0,16,10,43,23,24,7,35],[0,16,36,37,23,24,9,42],[0,16,8,41,23,24,40,38],[0,16,6,34,23,24,14,39,26,20,40,38,4,22,8,41],[0,16,44,45,23,24,46,47,26,20,48,49,4,22,50,51],[0,16,6,34,29,21,9,42],[0,16,8,41,29,21,7,35],[0,16,36,37,29,21,14,39],[0,16,2,17,1,52,6,34],[0,16,2,17,53,54,9,42],[0,16,12,33,1,52,7,35],[0,16,2,17,11,55,8,41],[0,56,2,57,1,58,6,37],[0,56,15,25,1,58,9,39],[0,20,27,17,1,59,40,34],[0,56,12,28,1,58,7,38],[0,16,5,19,1,52,8,41],[0,22,13,28,1,55,14,38],[0,18,13,60,1,61,14,43],[0,16,15,30,1,52,9,42],[0,16,5,19,11,55,6,34],[0,21,12,19,1,54,7,41],[0,20,13,19,1,59,14,41],[0,20,3,30,1,59,10,42],[0,18,12,17,1,61,7,34,4,21,15,19,11,54,9,41],[0,24,13,17,1,62,14,34,4,20,27,19,11,59,40,41],[0,16,2,17,1,52,6,34,4,22,5,19,11,55,8,41],[0,16,12,33,1,52,7,35,4,22,15,30,11,55,9,42],[0,31,3,17,1,63,10,34,4,56,32,19,11,58,36,41],[0,22,2,19,64,59,14,38,4,16,5,17,65,62,40,39],[0,16,2,17,1,52,6,34,23,24,13,25,64,62,14,39,26,20,27,28,65,59,40,38,4,22,5,19,11,55,8,41],[0,16,2,17,66,67,44,45,23,24,13,25,68,69,46,47,26,20,27,28,70,71,48,49,4,22,5,19,72,73,50,51],[0,16,2,17,1,52,6,34,29,21,15,30,53,54,9,42],[0,16,5,19,1,52,8,41,29,21,12,33,53,54,7,35],[0,20,13,19,1,59,14,41,29,31,32,33,53,63,36,35],[0,31,3,17,1,63,10,34,29,20,27,30,53,59,40,42],[0,16,74,75],[0,18,76,77],[0,16,78,79],[0,18,80,81],[0,16,74,75,29,21,82,83],[0,21,84,85,29,16,86,87],[0,16,88,89],[0,16,88,89,29,21,90,91],[0,16,74,75,1,52,88,89],[0,16,78,79,1,52,92,93],[0,16,94,95,11,55,88,89],[0,16,82,83,53,54,88,89],[0,16,74,75,1,52,88,89,29,21,82,83,53,54,90,91],[0,21,84,85,96,97,88,91,29,16,86,87,98,99,90,89],[0,16,74,75,2,17,100,101],[0,16,94,95,5,19,100,101],[0,18,76,77,2,33,102,103],[0,18,104,105,106,107,100,108],[0,16,78,79,2,17,109,108],[0,16,82,83,15,30,100,101],[0,18,80,81,2,33,110,111],[0,18,112,113,114,115,100,108],[0,16,74,75,2,17,100,101,29,21,82,83,15,30,116,117],[0,21,84,85,118,119,116,101,29,16,86,87,120,121,100,117],[0,16,74,75,6,34,122,123],[0,16,74,75,8,41,124,125],[0,16,78,79,7,35,122,123],[0,16,82,83,9,42,122,123],[0,16,74,75,7,35,126,127],[0,16,74,75,9,42,128,129],[0,16,78,79,6,34,126,127],[0,16,78,79,8,41,128,129],[0,16,74,75,6,34,122,123,29,21,82,83,9,42,128,129],[0,16,74,75,7,35,126,127,29,21,82,83,8,41,124,125],[0,21,84,85,6,42,130,131,29,16,86,87,9,34,132,133],[0,21,84,85,7,41,134,135,29,16,86,87,8,35,136,137],[0,16,89,88,2,17,122,123],[0,16,89,88,12,33,126,127],[0,16,89,88,5,19,124,125],[0,16,89,88,15,30,128,129],[0,16,88,89,6,34,100,101],[0,16,89,88,7,35,109,108],[0,16,89,88,8,41,138,139],[0,16,89,88,9,42,116,117],[0,16,89,88,6,34,100,101,29,21,91,90,9,42,116,117],[0,16,89,88,7,35,109,108,29,21,91,90,8,41,138,139],[0,16,89,88,2,17,122,123,29,21,91,90,15,30,128,129],[0,16,89,88,118,121,132,131,29,21,91,90,120,119,130,133],[0,16,74,75,2,17,100,101,1,52,88,89,6,34,122,123],[0,16,74,75,12,33,109,108,1,52,88,89,7,35,126,127],[0,16,74,75,2,17,100,101,11,55,140,141,8,41,124,125],[0,16,74,75,2,17,100,101,53,54,90,91,9,42,128,129],[0,16,74,75,5,19,138,139,1,52,88,89,8,41,124,125],[0,16,74,75,15,30,116,117,1,52,88,89,9,42,128,129],[0,16,94,95,5,19,100,101,11,55,88,89,6,34,124,125],[0,16,94,95,15,30,109,108,11,55,88,89,7,35,128,129],[0,16,78,79,2,17,109,108,1,52,92,93,6,34,126,127],[0,16,78,79,12,33,100,101,1,52,92,93,7,35,122,123],[0,16,82,83,12,33,138,139,53,54,88,89,8,41,126,127],[0,16,82,83,2,17,116,117,53,54,88,89,9,42,122,123],[0,16,78,79,5,19,116,117,1,52,92,93,8,41,128,129],[0,16,82,83,15,30,100,101,1,52,90,91,9,42,122,123],[0,16,82,83,15,30,100,101,53,54,88,89,6,34,128,129],[0,16,82,83,5,19,109,108,53,54,88,89,7,35,124,125],[0,16,74,75,2,17,100,101,1,52,88,89,6,34,122,123,29,21,82,83,15,30,116,117,53,54,90,91,9,42,128,129],[0,16,74,75,12,33,109,108,1,52,88,89,7,35,126,127,29,21,82,83,5,19,138,139,53,54,90,91,8,41,124,125],[0,21,84,85,118,119,116,101,96,97,88,91,9,34,132,133,29,16,86,87,120,121,100,117,98,99,90,89,6,42,130,131],[0,21,84,85,142,143,138,108,96,97,88,91,8,35,136,137,29,16,86,87,144,145,109,139,98,99,90,89,7,41,134,135],[0,146,147],[0,148,149],[0,150,151],[0,146,147,152,153,154,155,156,157],[0,158,159],[0,146,147,1,160,161],[0,146,147,1,160,161,152,153,154,162,163,164,155,156,157,165,166,167],[0,158,159,1,168,169],[0,146,147,101,170,171],[0,146,147,100,172,173],[0,148,149,174,175,171],[0,148,149,100,176,177],[0,150,151,178,179,171],[0,150,151,100,180,181],[0,146,147,100,172,173,152,153,154,182,183,184,155,156,157,185,186,187],[0,158,159,101,188,189],[0,146,147,122,190,191],[0,146,147,123,192,193],[0,146,147,126,194,195],[0,146,147,127,196,197],[0,146,147,122,190,191,152,153,154,198,199,200,155,156,157,201,202,203],[0,158,159,123,204,205],[0,146,147,126,194,195,152,153,154,206,207,208,155,156,157,209,210,211],[0,158,159,129,212,213],[0,146,147,101,170,171,1,160,161,123,192,193],[0,146,147,108,214,215,1,160,161,127,196,197],[0,146,147,100,172,173,1,160,161,122,190,191],[0,146,147,109,216,217,1,160,161,126,194,195],[0,146,147,100,172,173,1,160,161,122,190,191,152,153,154,182,183,184,162,163,164,198,199,200,155,156,157,185,186,187,165,166,167,201,202,203],[0,158,159,101,188,189,1,168,169,123,204,205],[0,146,147,109,216,217,1,160,161,126,194,195,152,153,154,218,219,220,162,163,164,206,207,208,155,156,157,221,222,223,165,166,167,209,210,211],[0,158,159,117,224,225,1,168,169,129,212,213],[0,146,147,16,226,227],[0,148,149,18,228,229],[0,150,151,18,230,231],[0,150,151,16,232,233],[0,148,149,16,234,235],[0,146,147,18,236,237],[0,146,147,52,238,239],[0,146,147,16,226,227,1,160,161,52,238,239],[0,146,147,18,236,237,1,160,161,61,240,241],[0,146,147,16,226,227,100,172,173,101,170,171],[0,148,149,18,228,229,242,172,181,243,214,244],[0,150,151,18,230,231,245,172,177,246,214,247],[0,150,151,16,232,233,245,172,177,174,170,248],[0,148,149,16,234,235,242,172,181,178,170,249],[0,146,147,18,236,237,100,172,173,108,214,215],[0,146,147,16,226,227,122,190,191,123,192,193],[0,146,147,16,226,227,126,194,195,127,196,197],[0,146,147,18,236,237,126,194,195,123,192,193],[0,146,147,18,236,237,122,190,191,127,196,197],[0,146,147,52,238,239,122,190,191,101,170,171],[0,146,147,61,240,241,126,194,195,101,170,171],[0,146,147,52,238,239,100,172,173,123,192,193],[0,146,147,61,240,241,100,172,173,127,196,197],[0,146,147,16,226,227,100,172,173,101,170,171,1,160,161,52,239,238,122,190,191,123,192,193],[0,146,147,16,226,227,109,216,217,108,214,215,1,160,161,52,239,238,126,194,195,127,196,197],[0,146,147,18,236,237,109,216,217,101,170,171,1,160,161,61,241,240,126,194,195,123,192,193],[0,146,147,18,236,237,100,172,173,108,214,215,1,160,161,61,241,240,122,190,191,127,196,197],[0,16,2,17,158,250,251,252,159,253,254,255],[0,16,2,17,158,250,251,252,159,253,254,255,23,24,13,25,256,257,258,259,260,261,262,263,26,20,27,28,264,265,266,267,268,269,270,271,4,22,5,19,272,273,274,275,276,277,278,279],[0,16,2,17,158,250,251,252,159,253,254,255,29,21,15,30,280,281,282,283,284,285,286,287],[0,20,13,19,158,273,266,259,159,261,278,271],[0,20,13,19,158,273,266,259,159,261,278,271,29,31,32,33,280,288,289,290,284,291,292,293],[0,16,2,17,158,250,251,252,159,253,254,255,1,52,6,34,168,294,295,296,169,297,298,299],[0,16,2,17,158,250,251,252,159,253,254,255,53,54,9,42,300,301,302,303,304,305,306,307],[0,16,2,17,158,250,251,252,159,253,254,255,1,52,6,34,168,294,295,296,169,297,298,299,23,24,13,25,256,257,258,259,260,261,262,263,64,62,14,39,308,309,310,311,312,313,314,315,26,20,27,28,264,265,266,267,268,269,270,271,65,59,40,38,316,317,318,319,320,321,322,323,4,22,5,19,272,273,274,275,276,277,278,279,11,55,8,41,324,325,326,327,328,329,330,331],[0,16,2,17,158,250,251,252,159,253,254,255,66,67,44,45,332,333,334,335,336,337,338,339,23,24,13,25,256,257,258,259,260,261,262,263,68,69,46,47,340,341,342,343,344,345,346,347,26,20,27,28,264,265,266,267,268,269,270,271,70,71,48,49,348,349,350,351,352,353,354,355,4,22,5,19,272,273,274,275,276,277,278,279,72,73,50,51,356,357,358,359,360,361,362,363],[0,16,2,17,158,250,251,252,159,253,254,255,1,52,6,34,168,294,295,296,169,297,298,299,29,21,15,30,280,281,282,283,284,285,286,287,53,54,9,42,300,301,302,303,304,305,306,307],[0,20,13,19,158,273,266,259,159,261,278,271,1,59,14,41,168,325,318,311,169,313,330,323],[0,20,13,19,158,273,266,259,159,261,278,271,1,59,14,41,168,325,318,311,169,313,330,323,29,31,32,33,280,288,289,290,284,291,292,293,53,63,36,35,300,364,365,366,304,367,368,369],[0,16,2,17,158,250,251,252,159,253,254,255,100,101,75,74,370,371,188,372,373,374,375,189],[0,16,2,17,158,250,251,252,159,253,254,255,116,117,83,82,376,377,224,378,379,380,381,225],[0,16,2,17,158,250,251,252,159,253,254,255,100,101,75,74,370,371,188,372,373,374,375,189,23,24,13,25,256,257,258,259,260,261,262,263,382,383,384,385,386,387,388,389,390,391,392,393,26,20,27,28,264,265,266,267,268,269,270,271,394,395,396,397,398,399,400,401,402,403,404,405,4,22,5,19,272,273,274,275,276,277,278,279,138,139,95,94,406,407,408,409,410,411,412,413],[0,24,5,28,158,265,258,275,159,277,270,263,414,415,416,417,418,419,420,421,422,423,424,425,23,16,27,19,256,273,251,267,260,269,278,255,426,427,428,429,430,431,432,433,434,435,436,437,26,22,13,17,264,250,274,259,268,261,254,279,438,439,440,441,442,443,444,445,446,447,448,449,4,20,2,25,272,257,266,252,276,253,262,271,450,451,452,453,454,455,456,457,458,459,460,461],[0,16,2,17,158,250,251,252,159,253,254,255,100,101,75,74,370,371,188,372,373,374,375,189,29,21,15,30,280,281,282,283,284,285,286,287,116,117,83,82,376,377,224,378,379,380,381,225],[0,20,13,19,158,273,266,259,159,261,278,271,450,415,440,429,454,431,420,445,458,447,436,425],[0,20,13,19,158,273,266,259,159,261,278,271,462,463,464,465,466,467,468,469,470,471,472,473],[0,20,13,19,158,273,266,259,159,261,278,271,462,463,464,465,466,467,468,469,470,471,472,473,29,31,32,33,280,288,289,290,284,291,292,293,450,415,440,429,454,431,420,445,458,447,436,425],[0,16,2,17,158,250,251,252,159,253,254,255,123,122,88,89,204,474,475,476,205,477,478,479],[0,16,2,17,158,250,251,252,159,253,254,255,123,122,88,89,204,474,475,476,205,477,478,479,23,24,13,25,256,257,258,259,260,261,262,263,480,481,482,483,484,485,486,487,488,489,490,491,26,20,27,28,264,265,266,267,268,269,270,271,492,493,494,495,496,497,498,499,500,501,502,503,4,22,5,19,272,273,274,275,276,277,278,279,125,124,140,141,504,505,506,507,508,509,510,511],[0,16,2,17,158,250,251,252,159,253,254,255,123,122,88,89,204,474,475,476,205,477,478,479,29,21,15,30,280,281,282,283,284,285,286,287,129,128,90,91,212,512,513,514,213,515,516,517],[0,16,2,17,158,250,251,252,159,253,254,255,129,128,90,91,212,512,513,514,213,515,516,517],[0,16,2,17,158,250,251,252,159,253,254,255,129,128,90,91,212,512,513,514,213,515,516,517,23,24,13,25,256,257,258,259,260,261,262,263,518,519,520,521,522,523,524,525,526,527,528,529,26,20,27,28,264,265,266,267,268,269,270,271,530,531,532,533,534,535,536,537,538,539,540,541,4,22,5,19,272,273,274,275,276,277,278,279,127,126,92,93,542,543,544,545,546,547,548,549],[0,20,13,19,158,273,266,259,159,261,278,271,550,551,552,553,554,555,556,557,558,559,560,561,29,31,32,33,280,288,289,290,284,291,292,293,562,563,564,565,566,567,568,569,570,571,572,573],[0,16,2,17,158,250,251,252,159,253,254,255,100,101,75,74,370,371,188,372,373,374,375,189,1,52,6,34,168,294,295,296,169,297,298,299,122,123,89,88,475,476,204,474,479,478,477,205],[0,16,2,17,158,250,251,252,159,253,254,255,100,101,75,74,370,371,188,372,373,374,375,189,53,54,9,42,300,301,302,303,304,305,306,307,128,129,91,90,513,514,212,512,517,516,515,213],[0,16,2,17,158,250,251,252,159,253,254,255,116,117,83,82,376,377,224,378,379,380,381,225,1,52,6,34,168,294,295,296,169,297,298,299,128,129,91,90,513,514,212,512,517,516,515,213],[0,16,2,17,158,250,251,252,159,253,254,255,116,117,83,82,376,377,224,378,379,380,381,225,53,54,9,42,300,301,302,303,304,305,306,307,122,123,89,88,475,476,204,474,479,478,477,205],[0,16,2,17,158,250,251,252,159,253,254,255,100,101,75,74,370,371,188,372,373,374,375,189,1,52,6,34,168,294,295,296,169,297,298,299,122,123,89,88,475,476,204,474,479,478,477,205,23,24,13,25,256,257,258,259,260,261,262,263,382,383,384,385,386,387,388,389,390,391,392,393,64,62,14,39,308,309,310,311,312,313,314,315,481,480,483,482,486,487,484,485,491,490,489,488,26,20,27,28,264,265,266,267,268,269,270,271,394,395,396,397,398,399,400,401,402,403,404,405,65,59,40,38,316,317,318,319,320,321,322,323,493,492,495,494,498,499,496,497,503,502,501,500,4,22,5,19,272,273,274,275,276,277,278,279,138,139,95,94,406,407,408,409,410,411,412,413,11,55,8,41,324,325,326,327,328,329,330,331,124,125,141,140,506,507,504,505,511,510,509,508],[0,16,2,17,158,250,251,252,159,253,254,255,116,117,83,82,376,377,224,378,379,380,381,225,1,52,6,34,168,294,295,296,169,297,298,299,128,129,91,90,513,514,212,512,517,516,515,213,23,24,13,25,256,257,258,259,260,261,262,263,574,575,576,577,578,579,580,581,582,583,584,585,64,62,14,39,308,309,310,311,312,313,314,315,519,518,521,520,524,525,522,523,529,528,527,526,26,20,27,28,264,265,266,267,268,269,270,271,586,587,588,589,590,591,592,593,594,595,596,597,65,59,40,38,316,317,318,319,320,321,322,323,531,530,533,532,536,537,534,535,541,540,539,538,4,22,5,19,272,273,274,275,276,277,278,279,109,108,79,78,598,599,600,601,602,603,604,605,11,55,8,41,324,325,326,327,328,329,330,331,126,127,93,92,544,545,542,543,549,548,547,546],[0,24,5,28,158,265,258,275,159,277,270,263,414,415,416,417,418,419,420,421,422,423,424,425,66,69,50,49,332,349,342,359,336,361,354,347,493,123,483,140,498,507,204,485,503,490,509,205,23,16,27,19,256,273,251,267,260,269,278,255,426,427,428,429,430,431,432,433,434,435,436,437,68,67,48,51,340,357,334,351,344,353,362,339,124,480,89,494,506,499,484,474,511,478,501,488,26,22,13,17,264,250,274,259,268,261,254,279,438,439,440,441,442,443,444,445,446,447,448,449,70,73,46,45,348,333,358,343,352,345,338,363,122,492,141,482,475,487,496,505,479,510,489,500,4,20,2,25,272,257,266,252,276,253,262,271,450,451,452,453,454,455,456,457,458,459,460,461,72,71,44,47,356,341,350,335,360,337,346,355,481,125,495,88,486,476,504,497,491,502,477,508],[0,24,5,28,158,265,258,275,159,277,270,263,414,415,416,417,418,419,420,421,422,423,424,425,606,607,608,609,610,611,612,613,614,615,616,617,531,129,521,92,536,545,212,523,541,528,547,213,23,16,27,19,256,273,251,267,260,269,278,255,426,427,428,429,430,431,432,433,434,435,436,437,618,619,620,621,622,623,624,625,626,627,628,629,126,518,91,532,544,537,522,512,549,516,539,526,26,22,13,17,264,250,274,259,268,261,254,279,438,439,440,441,442,443,444,445,446,447,448,449,630,631,632,633,634,635,636,637,638,639,640,641,128,530,93,520,513,525,534,543,517,548,527,538,4,20,2,25,272,257,266,252,276,253,262,271,450,451,452,453,454,455,456,457,458,459,460,461,642,643,644,645,646,647,648,649,650,651,652,653,519,127,533,90,524,514,542,535,529,540,515,546],[0,16,2,17,158,250,251,252,159,253,254,255,100,101,75,74,370,371,188,372,373,374,375,189,1,52,6,34,168,294,295,296,169,297,298,299,122,123,89,88,475,476,204,474,479,478,477,205,29,21,15,30,280,281,282,283,284,285,286,287,116,117,83,82,376,377,224,378,379,380,381,225,53,54,9,42,300,301,302,303,304,305,306,307,128,129,91,90,513,514,212,512,517,516,515,213],[0,20,13,19,158,273,266,259,159,261,278,271,462,463,464,465,466,467,468,469,470,471,472,473,1,59,14,41,168,325,318,311,169,313,330,323,551,550,553,552,556,557,554,555,561,560,559,558,29,31,32,33,280,288,289,290,284,291,292,293,450,415,440,429,454,431,420,445,458,447,436,425,53,63,36,35,300,364,365,366,304,367,368,369,563,562,565,564,568,569,566,567,573,572,571,570],[0,16],[0,18],[0,16,26,20],[0,2,23,13],[0,3,4,32],[0,2,29,15],[0,3,29,27],[0,52],[0,63],[0,52,26,59],[0,63,26,54],[0,52,16,1],[0,18,1,61],[0,52,16,1,26,59,20,65],[0,31,1,63],[0,1,24,62],[0,15,1,9],[0,5,1,8],[0,31,1,63,26,21,65,54],[0,2,57,56],[0,60,3,16],[0,22,57,3],[0,2,28,20],[0,17,13,24],[0,20,19,13,4,24,17,27],[0,22,57,3,4,16,60,32],[0,22,57,3,23,20,30,12,26,24,33,15,4,16,60,32],[0,22,57,3,29,18,27,25],[0,22,3,57,1,55,10,37],[0,22,385,396,3,57,109,117],[0,22,57,3,159,279,654,655,158,274,656,657,29,18,25,27,284,658,262,269,280,659,257,267]],
7e.SpacegroupNameToIndexMap
vendor: 5,234 bytes, line 7
7={"P 1":0,"P -1":1,"P 1 2 1":2,"P 1 21 1":3,"C 1 2 1":4,"P 1 m 1":5,"P 1 c 1":6,"C 1 m 1":7,"C 1 c 1":8,"P 1 2/m 1":9,"P 1 21/m 1":10,"C 1 2/m 1":11,"P 1 2/c 1":12,"P 1 21/c 1":13,"C 1 2/c 1":14,"P 2 2 2":15,"P 2 2 21":16,"P 21 21 2":17,"P 21 21 21":18,"C 2 2 21":19,"C 2 2 2":20,"F 2 2 2":21,"I 2 2 2":22,"I 21 21 21":23,"P m m 2":24,"P m c 21":25,"P c c 2":26,"P m a 2":27,"P c a 21":28,"P n c 2":29,"P m n 21":30,"P b a 2":31,"P n a 21":32,"P n n 2":33,"C m m 2":34,"C m c 21":35,"C c c 2":36,"A m m 2":37,"A b m 2":38,"A m a 2":39,"A b a 2":40,"F m m 2":41,"F d d 2":42,"I m m 2":43,"I b a 2":44,"I m a 2":45,"P 2/m 2/m 2/m":46,"P m m m":46,"P 2/n 2/n 2/n":47,"P n n n":47,"P 2/c 2/c 2/m":48,"P c c m":48,"P 2/b 2/a 2/n":49,"P b a n":49,"P 21/m 2/m 2/a":50,"P m m a":50,"P 2/n 21/n 2/a":51,"P n n a":51,"P 2/m 2/n 21/a":52,"P m n a":52,"P 21/c 2/c 2/a":53,"P c c a":53,"P 21/b 21/a 2/m":54,"P b a m":54,"P 21/c 21/c 2/n":55,"P c c n":55,"P 2/b 21/c 21/m":56,"P b c m":56,"P 21/n 21/n 2/m":57,"P n n m":57,"P 21/m 21/m 2/n":58,"P m m n":58,"P 21/b 2/c 21/n":59,"P b c n":59,"P 21/b 21/c 21/a":60,"P b c a":60,"P 21/n 21/m 21/a":61,"P n m a":61,"C 2/m 2/c 21/m":62,"C m c m":62,"C 2/m 2/c 21/a":63,"C m c a":63,"C 2/m 2/m 2/m":64,"C m m m":64,"C 2/c 2/c 2/m":65,"C c c m":65,"C 2/m 2/m 2/a":66,"C m m a":66,"C 2/c 2/c 2/a":67,"C c c a":67,"F 2/m 2/m 2/m":68,"F m m m":68,"F 2/d 2/d 2/d":69,"F d d d":69,"I 2/m 2/m 2/m":70,"I m m m":70,"I 2/b 2/a 2/m":71,"I b a m":71,"I 21/b 21/c 21/a":72,"I b c a":72,"I 21/m 21/m 21/a":73,"I m m a":73,"P 4":74,"P 41":75,"P 42":76,"P 43":77,"I 4":78,"I 41":79,"P -4":80,"I -4":81,"P 4/m":82,"P 42/m":83,"P 4/n":84,"P 42/n":85,"I 4/m":86,"I 41/a":87,"P 4 2 2":88,"P 4 21 2":89,"P 41 2 2":90,"P 41 21 2":91,"P 42 2 2":92,"P 42 21 2":93,"P 43 2 2":94,"P 43 21 2":95,"I 4 2 2":96,"I 41 2 2":97,"P 4 m m":98,"P 4 b m":99,"P 42 c m":100,"P 42 n m":101,"P 4 c c":102,"P 4 n c":103,"P 42 m c":104,"P 42 b c":105,"I 4 m m":106,"I 4 c m":107,"I 41 m d":108,"I 41 c d":109,"P -4 2 m":110,"P -4 2 c":111,"P -4 21 m":112,"P -4 21 c":113,"P -4 m 2":114,"P -4 c 2":115,"P -4 b 2":116,"P -4 n 2":117,"I -4 m 2":118,"I -4 c 2":119,"I -4 2 m":120,"I -4 2 d":121,"P 4/m 2/m 2/m":122,"P4/m m m":122,"P 4/m 2/c 2/c":123,"P4/m c c":123,"P 4/n 2/b 2/m":124,"P4/n b m":124,"P 4/n 2/n 2/c":125,"P4/n n c":125,"P 4/m 21/b 2/m":126,"P4/m b m":126,"P 4/m 21/n 2/c":127,"P4/m n c":127,"P 4/n 21/m 2/m":128,"P4/n m m":128,"P 4/n 2/c 2/c":129,"P4/n c c":129,"P 42/m 2/m 2/c":130,"P42/m m c":130,"P 42/m 2/c 2/m":131,"P42/m c m":131,"P 42/n 2/b 2/c":132,"P42/n b c":132,"P 42/n 2/n 2/m":133,"P42/n n m":133,"P 42/m 21/b 2/c":134,"P42/m b c":134,"P 42/m 21/n 2/m":135,"P42/m n m":135,"P 42/n 21/m 2/c":136,"P42/n m c":136,"P 42/n 21/c 2/m":137,"P42/n c m":137,"I 4/m 2/m 2/m":138,"I4/m m m":138,"I 4/m 2/c 2/m":139,"I4/m c m":139,"I 41/a 2/m 2/d":140,"I41/a m d":140,"I 41/a 2/c 2/d":141,"I41/a c d":141,"P 3":142,"P 31":143,"P 32":144,"H 3":145,"R 3":146,"P -3":147,"H -3":148,"R -3":149,"P 3 1 2":150,"P 3 2 1":151,"P 31 1 2":152,"P 31 2 1":153,"P 32 1 2":154,"P 32 2 1":155,"H 3 2":156,"R 3 2":157,"P 3 m 1":158,"P 3 1 m":159,"P 3 c 1":160,"P 3 1 c":161,"H 3 m":162,"R 3 m":163,"H 3 c":164,"R 3 c":165,"P -3 1 2/m":166,"P -3 1 m":166,"P -3 1 2/c":167,"P -3 1 c":167,"P -3 2/m 1":168,"P -3 m 1":168,"P -3 2/c 1":169,"P -3 c 1":169,"H -3 2/m":170,"H -3 m":170,"R -3 2/m":171,"R -3 m":171,"H -3 2/c":172,"H -3 c":172,"R -3 2/c":173,"R -3 c":173,"P 6":174,"P 61":175,"P 65":176,"P 62":177,"P 64":178,"P 63":179,"P -6":180,"P 6/m":181,"P 63/m":182,"P 6 2 2":183,"P 61 2 2":184,"P 65 2 2":185,"P 62 2 2":186,"P 64 2 2":187,"P 63 2 2":188,"P 6 m m":189,"P 6 c c":190,"P 63 c m":191,"P 63 m c":192,"P -6 m 2":193,"P -6 c 2":194,"P -6 2 m":195,"P -6 2 c":196,"P 6/m 2/m 2/m":197,"P 6/m m m":197,"P 6/m 2/c 2/c":198,"P 6/m c c":198,"P 63/m 2/c 2/m":199,"P 63/m c m":199,"P 63/m 2/m 2/c":200,"P 63/m m c":200,"P 2 3":201,"F 2 3":202,"I 2 3":203,"P 21 3":204,"I 21 3":205,"P 2/m -3":206,"P m -3":206,"P 2/n -3":207,"P n -3":207,"F 2/m -3":208,"F m -3":208,"F 2/d -3":209,"F d -3":209,"I 2/m -3":210,"I m -3":210,"P 21/a -3":211,"P a -3":211,"I 21/a -3":212,"I a -3":212,"P 4 3 2":213,"P 42 3 2":214,"F 4 3 2":215,"F 41 3 2":216,"I 4 3 2":217,"P 43 3 2":218,"P 41 3 2":219,"I 41 3 2":220,"P -4 3 m":221,"F -4 3 m":222,"I -4 3 m":223,"P -4 3 n":224,"F -4 3 c":225,"I -4 3 d":226,"P 4/m -3 2/m":227,"P m -3 m":227,"P 4/n -3 2/n":228,"P n -3 n":228,"P 42/m -3 2/n":229,"P m -3 n":229,"P 42/n -3 2/m":230,"P n -3 m":230,"F 4/m -3 2/m":231,"F m -3 m":231,"F 4/m -3 2/c":232,"F m -3 c":232,"F 41/d -3 2/m":233,"F d -3 m":233,"F 41/d -3 2/c":234,"F d -3 c":234,"I 4/m -3 2/m":235,"I m -3 m":235,"I 41/a -3 2/d":236,"I a -3 d":236,"P 1 1 2":237,"P 1 1 21":238,"B 1 1 2":239,"B 2":239,"A 1 2 1":240,"C 1 21 1":241,"I 1 2 1":242,"I 2":242,"I 1 21 1":243,"P 1 1 m":244,"P 1 1 b":245,"B 1 1 m":246,"B 1 1 b":247,"P 1 1 2/m":248,"P 1 1 21/m":249,"B 1 1 2/m":250,"P 1 1 2/b":251,"P 1 1 21/b":252,"P 1 21/n 1":253,"P 1 21/a 1":254,"B 1 1 2/b":255,"P 21 2 2":256,"P 2 21 2":257,"P 21 21 2 (a)":258,"P 21 2 21":259,"P 2 21 21":260,"C 2 2 21a)":261,"C 2 2 2a":262,"F 2 2 2a":263,"I 2 2 2a":264,"P 21/m 21/m 2/n a":265,"P 42 21 2a":266,"I 2 3a":267};function 
7t(i){switch(i){case 1146:return 146;case 1148:return 149;case 1155:return 157;case 1160:return 163;case 1161:return 165;case 1166:return 171;case 1167:return 173;case 1003:return 237;case 1004:return 238;case 1005:return 239;case 2005:return 240;case 3005:return 241;case 4005:return 242;case 5005:return 243;case 1006:return 244;case 1007:return 245;case 1008:return 246;case 1009:return 247;case 1010:return 248;case 1011:return 249;case 1012:return 250;case 1013:return 251;case 1014:return 252;case 2014:return 253;case 3014:return 254;case 1015:return 255;case 1017:return 256;case 2017:return 257;case 1018:return 258;case 2018:return 259;case 3018:return 260;case 1020:return 261;case 1021:return 262;case 1022:return 263;case 1023:return 264;case 1059:return 265;case 1094:return 266;case 1197:return 267}let c=0;return i>146&&++c,i>148&&++c,i>155&&++c,i>160&&++c,i>161&&++c,i>166&&++c,i>167&&++c,i-1+c}function r(i){if(i<146)return i+1;if(i===146)return 1146;if(i<149)return i+1-1;if(i===149)return 1148;if(i<157)return i+1-2;if(i===157)return 1155;if(i<163)return i+1-3;if(i===163)return 1160;if(i<165)return i+1-4;if(i===165)return 1161;if(i<171)return i+1-5;if(i===171)return 1166;if(i<173)return i+1-6;if(i===173)return 1167;if(i<237)return i+1-7;if(i===237)return 1003;if(i===238)return 1004;if(i===239)return 1005;if(i===240)return 2005;if(i===241)return 3005;if(i===242)return 4005;if(i===243)return 5005;if(i===244)return 1006;if(i===245)return 1007;if(i===246)return 1008;if(i===247)return 1009;if(i===248)return 1010;if(i===249)return 1011;if(i===250)return 1012;if(i===251)return 1013;if(i===252)return 1014;if(i===253)return 2014;if(i===254)return 3014;if(i===255)return 1015;if(i===256)return 1017;if(i===257)return 2017;if(i===258)return 1018;if(i===259)return 2018;if(i===260)return 3018;if(i===261)return 1020;if(i===262)return 1021;if(i===263)return 1022;if(i===264)return 1023;if(i===265)return 1059;if(i===266)return 1094;if(i===267)return 1197;throw new Error(`unknown spacegroup index '${i}'`)}e.SpacegroupName=(function(){const i=Object.create(null);for(const c of Object.keys(e.SpacegroupNameToIndexMap))i[e.SpacegroupNameToIndexMap[c]]=c;return i})(),e.SpacegroupNumber=(function(){const i=Object.create(null);for(const c of Object.keys(e.SpacegroupNameToIndexMap)){const o=e.SpacegroupNameToIndexMap[c];i[o]=r(o)}return i})();function n(i){const c=typeof i=="number"?t(i):e.SpacegroupNameToIndexMap[i];return typeof c>"u"||typeof e.SpacegroupName[c]>"u"?-1:c}})(Q2)),Q2}var ZE;function hJ(){if(ZE)return Sc;ZE=1,Object.defineProperty(Sc,"__esModule",{value:!0}),Sc.SpacegroupCell=Sc.Spacegroup=void 0;const e=Ge(),t=pJ(),r=eS();var n;(function(c){c.Zero=s("P 1",e.Vec3.create(1,1,1),e.Vec3.create(Math.PI/2,Math.PI/2,Math.PI/2));function o(h){return h?h.index===0&&h.size[0]===1&&h.size[1]===1&&h.size[1]===1:!0}c.isZero=o;function s(h,f,y){const _=(0,t.getSpacegroupIndex)(h);if(_<0)return console.warn(`Unknown spacegroup '${h}', returning a 'P 1' with cellsize [1, 1, 1]`),c.Zero;const g=f[0]*f[1]*f[2],a=y[0],d=y[1],p=y[2],u=f[0],m=f[1],v=f[2],b=Math.cos(d),P=(Math.cos(a)-Math.cos(d)*Math.cos(p))/Math.sin(p),C=Math.sqrt(1-b*b-P*P),l=[u,0,0],S=[Math.cos(p)*m,Math.sin(p)*m,0],T=[b*v,P*v,C*v],A=e.Mat4.ofRows([[l[0],S[0],T[0],0],[0,S[1],T[1],0],[0,0,T[2],0],[0,0,0,1]]),x=e.Mat4.invert(e.Mat4.zero(),A);return{index:_,size:f,volume:g,anglesInRadians:y,toFractional:x,fromFractional:A}}c.create=s})(n||(Sc.SpacegroupCell=n={}));var i;return(function(c){c.ZeroP1=o(n.Zero);function o(C){const l=t.GroupData[C.index].map(A=>u(t.OperatorData[A])),S=t.SpacegroupName[C.index],T=t.SpacegroupNumber[C.index];return{name:S,num:T,cell:C,operators:l}}c.create=o;const s=(0,e.Vec3)(),h=(0,e.Mat4)();function f(C,l,S,T,A,x){return e.Vec3.set(s,S,T,A),e.Mat4.fromTranslation(h,s),e.Mat4.mul(x,e.Mat4.mul(x,e.Mat4.mul(x,C.cell.fromFractional,h),C.operators[l]),C.cell.toFractional)}c.setOperatorMatrix=f;function y(C,l,S,T,A){const x=f(C,l,S,T,A,e.Mat4.zero());return r.SymmetryOperator.create(r.SymmetryOperator.getSymmetryOperatorName(l,S,T,A),x,{hkl:e.Vec3.create(S,T,A),spgrOp:l})}c.getSymmetryOperator=y;const _=(0,e.Vec3)(),g=(0,e.Vec3)(),a=(0,e.Vec3)(),d=(0,e.Vec3)();function p(C,l,S,T,A,x){const M=e.Mat4.zero();e.Vec3.set(s,S,T,A),e.Vec3.floor(_,x),e.Mat4.copy(M,C.operators[l]),e.Vec3.floor(g,e.Vec3.transformMat4(g,x,M)),e.Mat4.getTranslation(d,M),e.Vec3.sub(d,d,g),e.Vec3.add(d,d,_),e.Vec3.add(d,d,s),e.Mat4.setTranslation(M,d),e.Mat4.mul(M,C.cell.fromFractional,M),e.Mat4.mul(M,M,C.cell.toFractional),e.Vec3.sub(a,g,_);const D=S-a[0],V=T-a[1],R=A-a[2];return r.SymmetryOperator.create(r.SymmetryOperator.getSymmetryOperatorName(l,D,V,R),M,{hkl:e.Vec3.create(D,V,R),spgrOp:l})}c.getSymmetryOperatorRef=p;
7function u(C){const l=t.TransformData[C[0]],S=t.TransformData[C[1]],T=t.TransformData[C[2]];return e.Mat4.ofRows([l,S,T,[0,0,0,1]])}function m(C){return[P(v(C[0],C[4],C[8]),b(C[12])),P(v(C[1],C[5],C[9]),b(C[13])),P(v(C[2],C[6],C[10]),b(C[14]))].join(",")}c.getOperatorXyz=m;function v(C,l,S){const T=[];if(C>0?T.push("+X"):C<0&&T.push("-X"),l>0?T.push("+Y"):l<0&&T.push("-Y"),S>0?T.push("+Z"):S<0&&T.push("-Z"),T.length===1)return T[0].charAt(0)==="+"?T[0].substr(1):T[0];if(T.length===2){const A=T[0].charAt(0),x=T[1].charAt(0);if(A==="+")return`${T[0].substr(1)}${T[1]}`;if(x==="+")return`${T[1].substr(1)}${T[0]}`}throw new Error(`unknown rotation '${T}', ${C} ${l} ${S}`)}function b(C){switch(C){case 1/2:return"1/2";case 1/4:return"1/4";case 3/4:return"3/4";case 1/3:return"1/3";case 2/3:return"2/3";case 1/6:return"1/6";case 5/6:return"5/6"}return""}function P(C,l){return l===""?C:C.length>2?`${C}+${l}`:C.charAt(0)==="-"?`${l}${C}`:`${l}+${C}`}})(i||(Sc.Spacegroup=i={})),Sc}var Zm={},JE;function Y$(){if(JE)return Zm;JE=1,Object.defineProperty(Zm,"__esModule",{value:!0}),Zm.Result=void 0;var e;return(function(t){function r(o,s,h){o.squaredDistances[o.count]=h,o.indices[o.count++]=s}t.add=r;function n(o){o.count=0}t.reset=n;function i(){return{count:0,indices:[],squaredDistances:[]}}t.create=i;function c(o,s){for(let h=0;h<s.count;++h)o.indices[h]=s.indices[h],o.squaredDistances[h]=s.squaredDistances[h];return o.count=s.count,o}t.copy=c})(e||(Zm.Result=e={})),Zm}var fC={},Jm={},eB;function Q$(){if(eB)return Jm;eB=1,Object.defineProperty(Jm,"__esModule",{value:!0}),Jm.FibonacciHeap=void 0;class e{constructor(c,o){this.parent=null,this.child=null,this.degree=0,this.isMarked=!1,this.key=c,this.value=o,this.prev=this,this.next=this}}class t{constructor(c){if(this._index=-1,this._items=[],this._len=0,c){let o=c,s=0;do this._items[s++]=o,o=o.next;while(c!==o);this._len=s}}hasNext(){return this._index<this._len-1}next(){return this._items[++this._index]}reset(c){this._index=-1,this._len=0;let o=c,s=0;do this._items[s++]=o,o=o.next;while(c!==o);this._len=s}}const r=new t;class n{constructor(c){this._minNode=null,this._nodeCount=0,this._compare=c||this._defaultCompare}clear(){this._minNode=null,this._nodeCount=0}decreaseKey(c,o){if(!c)throw new Error("Cannot decrease key of non-existent node");if(this._compare({key:o},{key:c.key})>0)throw new Error("New key is larger than old key");c.key=o;const s=c.parent;s&&this._compare(c,s)<0&&(this._cut(c,s,this._minNode),this._cascadingCut(s,this._minNode)),this._compare(c,this._minNode)<0&&(this._minNode=c)}delete(c){const o=c.parent;o&&(this._cut(c,o,this._minNode),this._cascadingCut(o,this._minNode)),this._minNode=c,this.extractMinimum()}extractMinimum(){const c=this._minNode;if(c){if(c.child){let s=c.child;do s.parent=null,s=s.next;while(s!==c.child)}let o=null;c.next!==c&&(o=c.next),this._removeNodeFromList(c),this._nodeCount--,this._minNode=this._mergeLists(o,c.child),this._minNode&&(this._minNode=this._consolidate(this._minNode))}return c}findMinimum(){return this._minNode}insert(c,o){const s=new e(c,o);return this._minNode=this._mergeLists(this._minNode,s),this._nodeCount++,s}isEmpty(){return this._minNode===null}size(){return this._minNode===null?0:this._getNodeListSize(this._minNode)}union(c){this._minNode=this._mergeLists(this._minNode,c._minNode),this._nodeCount+=c._nodeCount}_defaultCompare(c,o){return c.key>o.key?1:c.key<o.key?-1:0}_cut(c,o,s){c.parent=null,o.degree--,c.next===c?o.child=null:o.child=c.next,this._removeNodeFromList(c);const h=this._mergeLists(s,c);return c.isMarked=!1,h}_cascadingCut(c,o){const s=c.parent;return s&&(c.isMarked?(o=this._cut(c,s,o),o=this._cascadingCut(s,o)):c.isMarked=!0),o}_consolidate(c){const o=[];for(r.reset(c);r.hasNext();){let h=r.next(),f=o[h.degree];for(;f;){if(this._compare(h,f)>0){const y=h;h=f,f=y}this._linkHeaps(f,h),o[h.degree]=null,h.degree++,f=o[h.degree]}o[h.degree]=h}let s=null;for(let h=0;h<o.length;h++){const f=o[h];f&&(f.next=f,f.prev=f,s=this._mergeLists(s,f))}return s}_removeNodeFromList(c){const o=c.prev,s=c.next;o.next=s,s.prev=o,c.next=c,c.prev=c}_linkHeaps(c,o){this._removeNodeFromList(c),o.child=this._mergeLists(c,o.child),c.parent=o,c.isMarked=!1}_mergeLists(c,o){if(!c)return o||null;if(!o)return c;const s=c.next;return c.next=o.next,c.next.prev=c,o.next=s,o.next.prev=o,this._compare(c,o)<0?c:o}_getNodeListSize(c){let o=0,s=c;do o++,s.child&&(o+=this._getNodeListSize(s.child)),s=s.next;while(s!==c);return o}}return Jm.FibonacciHeap=n,Jm}var ep={},tB;function Af(){if(tB)return ep;tB=1,Object.defineProperty(ep,"__esModule",{value:!0}),ep.memoizeLatest=e,ep.memoize1=t;function e(r){let n,i;return(...c)=>{if(!n||n.length!==c.length)return n=c,i=r.apply(void 0,c),i;for(let o=0,s=c.length;o<s;o++)if(c[o]!==n[o])return n=c,i=r.apply(void 0,c),i;return i}}function t(r){const n=new Map;return i=>{if(n.has(i))return n.get(i);const c=r(i);return n.set(i,c),c}}return ep}var tp={},rB;function CT(){if(rB)return tp;rB=1,Object.defineProperty(tp,"__esModule",{value:!0}),tp.Ray3D=t;const e=wt();function t(){return t.create(e.Vec3.create(0,0,0),e.Vec3.create(1,0,0))}return(function(r){function n(u,m){return{origin:u,direction:m}}r.create=n;function i(u,m){return e.Vec3.copy(u.origin,m.origin),e.Vec3.copy(u.direction,m.direction),u}r.copy=i;function c(u){return i(r(),u)}r.clone=c;function o(u,m,v){return e.Vec3.copy(u.origin,m.origin),e.Vec3.normalize(u.direction,e.Vec3.sub(u.direction,v,m.origin)),u}r.targetTo=o;function s(u,m,v){return e.Vec3.transformMat4(u.origin,m.origin,v),e.Vec3.transformDirection(u.direction,m.direction,v),u}r.transform=s;const h=(0,e.Vec3)();function f(u,m){const{center:v,radius:b}=m,{origin:P,direction:C}=u,l=e.Vec3.sub(h,P,v),S=e.Vec3.dot(C,C),T=2*e.Vec3.dot(l,C),A=e.Vec3.dot(l,l)-b*b,x=T*T-4*S*A;if(x<0)return-1;const M=(-T-Math.sqrt(x))/(2*S);return M<0?-1:M}function y(u,m,v){const b=f(m,v);return b<0?!1:(e.Vec3.scaleAndAdd(u,m.origin,m.direction,b),!0)}r.intersectSphere3D=y;function _(u,m){return f(u,m)>=0}r.isIntersectingSphere3D=_;function g(u,m){return e.Vec3.distance(u.origin,m.center)<m.radius}r.isInsideSphere3D=g;function a(u,m){const{origin:v,direction:b}=u,[P,C,l]=m.min,[S,T,A]=m.max,[x,M,D]=v,V=1/b[0],R=1/b[1],E=1/b[2];let I,B,w,O,F,L;return V>=0?(I=(P-x)*V,B=(S-x)*V):(I=(S-x)*V,B=(P-x)*V),R>=0?(w=(C-M)*R,O=(T-M)*R):(w=(T-M)*R,O=(C-M)*R),I>O||w>B||(w>I&&(I=w),O<B&&(B=O),E>=0?(F=(l-D)*E,L=(A-D)*E):(F=(A-D)*E,L=(l-D)*E),I>L||F>B)?-1:(F>I&&(I=F),L<B&&(B=L),I>=0?I:-1)}function d(u,m,v){const b=a(m,v);return b<0?!1:(e.Vec3.scaleAndAdd(u,m.origin,m.direction,b),!0)}r.intersectBox3D=d;function p(u,m){return a(u,m)>=0}r.isIntersectingBox3D=p})(t||(tp.Ray3D=t={})),tp}var nB;function jD(){if(nB)return fC;nB=1,Object.defineProperty(fC,"__esModule",{value:!0}),fC.GridLookup3D=s;const e=Y$(),t=os(),r=Ge(),n=at(),i=Q$(),c=Af(),o=CT();function s(A,x,M){return new h(A,x,M)}class h{find(x,M,D,V,R){this.ctx.x=x,this.ctx.y=M,this.ctx.z=D,this.ctx.radius=V,this.ctx.isCheck=!1;const E=R??this.result;return a(this.ctx,E),E}nearest(x,M,D,V=1,R,E){this.ctx.x=x,this.ctx.y=M,this.ctx.z=D,this.ctx.k=V,this.ctx.stopIf=R;const I=E??this.result;return T(this.ctx,I),I}check(x,M,D,V){return this.ctx.x=x,this.ctx.y=M,this.ctx.z=D,this.ctx.radius=V,this.ctx.isCheck=!0,a(this.ctx,this.result)}approxNearest(x,M,D,V,R){this.ctx.x=x,this.ctx.y=M,this.ctx.z=D,this.ctx.radius=V,this.ctx.isCheck=!1;const E=R??this.result;return u(this.ctx,E),E}constructor(x,M,D){const V=_(x,M,D);this.ctx=g(V),this.boundary={box:V.boundingBox,sphere:V.boundingSphere},this.buckets={offset:V.bucketOffset,count:V.bucketCounts,array:V.bucketArray},this.result=e.Result.create()}}function f(A){const{expandedBox:x,size:[M,D,V],data:{x:R,y:E,z:I,radius:B,indices:w},elementCount:O,delta:F}=A,L=M*D*V,{min:[U,q,N]}=x;let k=0,j=0;const H=new Uint32Array(L),G=new Int32Array(O);for(let K=0;K<O;K++){const Q=n.OrderedSet.getAt(w,K),J=Math.floor((R[Q]-U)/F[0]),ae=Math.floor((E[Q]-q)/F[1]),te=Math.floor((I[Q]-N)/F[2]),ne=(J*D+ae)*V+te;(H[ne]+=1)===1&&(j+=1),G[K]=ne}if(B)for(let K=0;K<O;K++){const Q=n.OrderedSet.getAt(w,K);B[Q]>k&&(k=B[Q])}const z=new Int32Array(j);for(let K=0,Q=0;K<L;K++){const J=H[K];J>0&&(H[K]=Q+1,z[Q]=J,Q+=1)}const W=new Uint32Array(j);for(let K=1;K<j;++K)W[K]+=W[K-1]+z[K-1];const X=new Int32Array(j),Y=new Int32Array(O);for(let K=0;K<O;K++){const Q=H[G[K]];if(Q>0){const J=Q-1;Y[W[J]+X[J]]=K,X[J]+=1}}
7return{size:A.size,bucketArray:Y,bucketCounts:z,bucketOffset:W,grid:H,delta:F,min:A.expandedBox.min,data:A.data,maxRadius:k,expandedBox:A.expandedBox,boundingBox:A.boundingBox,boundingSphere:A.boundingSphere}}const y=2**24;function _(A,x,M){const D=t.Box3D.expand((0,t.Box3D)(),x.box,r.Vec3.create(.5,.5,.5)),{indices:V}=A,R=t.Box3D.size((0,r.Vec3)(),D);let E,I;const B=n.OrderedSet.size(V),w=typeof M=="number"?M:32,O=Array.isArray(M)&&M;if(O&&!r.Vec3.isZero(O))I=[Math.ceil(R[0]/O[0]),Math.ceil(R[1]/O[1]),Math.ceil(R[2]/O[2])],E=O;else if(B>0){const q=Math.ceil(B/w),N=Math.pow(q/(R[0]*R[1]*R[2]),1/3);I=[Math.ceil(R[0]*N),Math.ceil(R[1]*N),Math.ceil(R[2]*N)],E=[R[0]/I[0],R[1]/I[1],R[2]/I[2]]}else E=R,I=[1,1,1];const F=I[0]*I[1]*I[2];if(F>y){const q=Math.cbrt(F/y);I=[Math.ceil(I[0]/q),Math.ceil(I[1]/q),Math.ceil(I[2]/q)],E=[R[0]/I[0],R[1]/I[1],R[2]/I[2]]}const L={x:A.x,y:A.y,z:A.z,indices:V,radius:A.radius},U={size:I,data:L,expandedBox:D,boundingBox:x.box,boundingSphere:x.sphere,elementCount:B,delta:E};return f(U)}function g(A){return{grid:A,x:.1,y:.1,z:.1,k:1,stopIf:void 0,radius:.1,isCheck:!1}}function a(A,x){const{min:M,size:[D,V,R],bucketOffset:E,bucketCounts:I,bucketArray:B,grid:w,data:{x:O,y:F,z:L,indices:U,radius:q},delta:N,maxRadius:k}=A.grid,{radius:j,isCheck:H,x:G,y:z,z:W}=A,X=j+k,Y=X*X;e.Result.reset(x);const K=Math.max(0,Math.floor((G-X-M[0])/N[0])),Q=Math.max(0,Math.floor((z-X-M[1])/N[1])),J=Math.max(0,Math.floor((W-X-M[2])/N[2])),ae=Math.min(D-1,Math.floor((G+X-M[0])/N[0])),te=Math.min(V-1,Math.floor((z+X-M[1])/N[1])),ne=Math.min(R-1,Math.floor((W+X-M[2])/N[2]));if(K>ae||Q>te||J>ne)return!1;for(let $=K;$<=ae;$++)for(let ie=Q;ie<=te;ie++)for(let Z=J;Z<=ne;Z++){const re=w[($*V+ie)*R+Z];if(re===0)continue;const oe=re-1,ce=E[oe],ue=I[oe],pe=ce+ue;for(let he=ce;he<pe;he++){const fe=n.OrderedSet.getAt(U,B[he]),de=O[fe]-G,ge=F[fe]-z,Ce=L[fe]-W,ve=de*de+ge*ge+Ce*Ce;if(ve<=Y){if(k>0&&Math.sqrt(ve)-q[fe]>j)continue;if(H)return!0;e.Result.add(x,B[he],ve)}}}return x.count>0}function d(A){const x=[],M=A*2+1;for(let D=0;D<M;++D)for(let V=0;V<M;++V)for(let R=0;R<M;++R)x.push(r.Vec3.create(D-A,V-A,R-A));return x.sort((D,V)=>r.Vec3.squaredMagnitude(D)-r.Vec3.squaredMagnitude(V)),x.flat()}const p=(0,c.memoize1)(d);function u(A,x){const{min:M,size:[D,V,R],bucketOffset:E,bucketCounts:I,bucketArray:B,grid:w,data:{x:O,y:F,z:L,indices:U},delta:q}=A.grid,{radius:N,x:k,y:j,z:H}=A,G=N*N;e.Result.reset(x);const z=Math.max(0,Math.floor((k-N-M[0])/q[0])),W=Math.max(0,Math.floor((j-N-M[1])/q[1])),X=Math.max(0,Math.floor((H-N-M[2])/q[2])),Y=Math.min(D-1,Math.floor((k+N-M[0])/q[0])),K=Math.min(V-1,Math.floor((j+N-M[1])/q[1])),Q=Math.min(R-1,Math.floor((H+N-M[2])/q[2]));if(z>Y||W>K||X>Q)return!1;const J=Math.floor((k-M[0])/q[0]),ae=Math.floor((j-M[1])/q[1]),te=Math.floor((H-M[2])/q[2]),ne=p(Math.max(Y-z,K-W,Q-X)+1);for(let $=0,ie=ne.length;$<ie;$+=3){const Z=J+ne[$],re=ae+ne[$+1],oe=te+ne[$+2];if(Z<z||Z>Y||re<W||re>K||oe<X||oe>Q)continue;const ce=w[(Z*V+re)*R+oe];if(ce===0)continue;const ue=ce-1,pe=E[ue],he=I[ue],fe=pe+he;let de=Number.MAX_VALUE;for(let ge=pe;ge<fe;ge++){const Ce=n.OrderedSet.getAt(U,B[ge]),ve=O[Ce]-k,le=F[Ce]-j,me=L[Ce]-H,ee=ve*ve+le*le+me*me;ee<=G&&ee<de&&(e.Result.add(x,B[ge],ee),de=ee)}if(de!==Number.MAX_VALUE)return!0}return x.count>0}const m=(0,o.Ray3D)(),v=new Set,b=new Set,P=[.1],C=[.1],l=[.1],S=new i.FibonacciHeap;function T(A,x){const{min:M,expandedBox:D,boundingSphere:{center:V},size:[R,E,I],bucketOffset:B,bucketCounts:w,bucketArray:O,grid:F,data:{x:L,y:U,z:q,indices:N,radius:k},delta:j,maxRadius:H}=A.grid,{x:G,y:z,z:W,k:X,stopIf:Y}=A,K=n.OrderedSet.size(N);if(e.Result.reset(x),K===0||X<=0)return!1;let Q,J,ae,te=!1,ne=1,$=!0,ie=0,Z=P,re=C,oe=0,ce=!0,ue,pe=!1;const he=l,fe=H*H;Z.length=0,he.length=0,v.clear(),S.clear(),r.Vec3.set(m.origin,G,z,W),t.Box3D.containsVec3(D,m.origin)?(Q=Math.floor((G-M[0])/j[0]),J=Math.floor((z-M[1])/j[1]),ae=Math.floor((W-M[2])/j[2])):(o.Ray3D.targetTo(m,m,V),o.Ray3D.intersectBox3D(m.origin,m,D),Q=Math.max(0,Math.min(R-1,Math.floor((m.origin[0]-M[0])/j[0]))),J=Math.max(0,Math.min(E-1,Math.floor((m.origin[1]-M[1])/j[1]))),ae=Math.max(0,Math.min(I-1,Math.floor((m.origin[2]-M[2])/j[2]))));const de=H!==0?Math.max(1,Math.min(R-1,Math.ceil(H/j[0]))):1,ge=H!==0?Math.max(1,Math.min(E-1,Math.ceil(H/j[1]))):1,Ce=H!==0?Math.max(1,Math.min(I-1,Math.ceil(H/j[2]))):1;for(Z.push(Q,J,ae,(Q*E+J)*I+ae);x.count<K;){const ve=ne*4;for(let le=0;le<ve;le+=4)if(ue=Z[le+3],!v.has(ue)){v.add(ue),pe=v.size>=F.length;const me=F[ue];if(me!==0){const ee=oe,se=me-1,ye=B[se],Se=w[se],Ae=ye+Se;for(let _e=ye;_e<Ae;
7_e++){const be=O[_e],xe=n.OrderedSet.getAt(N,be),we=L[xe]-G,Be=U[xe]-z,Me=q[xe]-W;let Re=we*we+Be*Be+Me*Me;if(H!==0){const Te=k[xe];Re-=Te*Te}ce&&Re>oe&&(oe=Re),S.insert(Re,be)}ee<oe&&(ce=!1)}}re.length=0,ie=0,b.clear();for(let le=0;le<ve;le+=4){Q=Z[le],J=Z[le+1],ae=Z[le+2];for(let me=-de;me<=de;me++){const ee=Q+me;if(!(ee<0||ee>=R))for(let se=-ge;se<=ge;se++){const ye=J+se;if(!(ye<0||ye>=E))for(let Se=-Ce;Se<=Ce;Se++){const Ae=ae+Se;if(!(Ae<0||Ae>=I)&&(ue=(ee*E+ye)*I+Ae,!b.has(ue)&&(b.add(ue),!v.has(ue)))){if(!$){const _e=M[0]+ee*j[0]-G,be=M[1]+ye*j[1]-z,xe=M[2]+Ae*j[2]-W;if(_e*_e+be*be+xe*xe-fe>oe){he.push(ee,ye,Ae,ue);continue}}re.push(ee,ye,Ae,ue),ie++}}}}}if($=!1,ie===0){if(X===1){const le=S.findMinimum();if(le){const{key:me,value:ee}=le;return e.Result.add(x,ee,me),!0}}else for(;!S.isEmpty()&&(pe||S.findMinimum().key<=oe)&&x.count<X;){const le=S.extractMinimum(),me=le.key,ee=le.value;e.Result.add(x,ee,me),Y&&!te&&(te=Y(ee,me))}if(x.count>=X||te||x.count>=K)return x.count>0;if($=!0,ce=!0,he.length>0){for(let le=0,me=he.length;le<me;le++)Z.push(he[le]);he.length=0,ne=Z.length}}else{const le=Z;Z=re,re=le,ne=ie}}return x.count>0}return fC}var iB;function rt(){return iB||(iB=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(UD(),e),t.__exportStar(eS(),e),t.__exportStar(hJ(),e),t.__exportStar(Y$(),e),t.__exportStar(jD(),e),t.__exportStar(os(),e),t.__exportStar(ja(),e),t.__exportStar(qD(),e)})(Y2)),Y2}var Ss={},Z2={},rp={},J2={},np={},aB;function GD(){if(aB)return np;aB=1,Object.defineProperty(np,"__esModule",{value:!0}),np.Location=void 0;const e=Ge();var t;return(function(r){function n(p,u,m){return{kind:"element-location",structure:p,unit:u,element:m||0}}r.create=n;function i(p){return n(p.structure,p.unit,p.element)}r.clone=i;function c(p,u,m,v){return u&&(p.structure=u),m&&(p.unit=m),v!==void 0&&(p.element=v),p}r.set=c;function o(p,u){return p.unit=u.unit,p.element=u.element,p}r.copy=o;function s(p){return!!p&&p.kind==="element-location"}r.is=s;function h(p,u){return p.unit===u.unit&&p.element===u.element}r.areEqual=h;const f=(0,e.Vec3)(),y=(0,e.Vec3)();function _(p,u){return p.unit.conformation.position(p.element,f),u.unit.conformation.position(u.element,y),e.Vec3.distance(f,y)}r.distance=_;function g(p,u){return u.unit.conformation.position(u.element,p)}r.position=g;function a(p){return p.unit.model.atomicHierarchy.residueAtomSegments.index[p.element]}r.residueIndex=a;function d(p){return p.unit.model.atomicHierarchy.chainAtomSegments.index[p.element]}r.chainIndex=d})(t||(np.Location=t={})),np}var ip={},ex={},mC={},oB;function gJ(){if(oB)return mC;oB=1,Object.defineProperty(mC,"__esModule",{value:!0}),mC.HashSet=t;class e{add(n){const i=this.getHash(n);if(this.byHash.has(i)){const c=this.byHash.get(i);for(let o=0,s=c.length;o<s;o++)if(this.areEqual(n,c[o]))return!1;return c[c.length]=n,this.size++,!0}else return this.byHash.set(i,[n]),this.size++,!0}has(n){const i=this.getHash(n);if(!this.byHash.has(i))return!1;const c=this.byHash.get(i);for(let o=0,s=c.length;o<s;o++)if(this.areEqual(n,c[o]))return!0;return!1}constructor(n,i){this.getHash=n,this.areEqual=i,this.size=0,this.byHash=new Map}}function t(r,n){return new e(r,n)}return mC}var pC={},sB;function zD(){if(sB)return pC;sB=1,Object.defineProperty(pC,"__esModule",{value:!0}),pC.LinkedList=e;function e(){return new r}function t(n){return{previous:null,next:null,inList:!0,value:n}}class r{constructor(){this.count=0,this.first=null,this.last=null}addFirst(i){const c=t(i);return c.inList=!0,this.first&&(this.first.previous=c),c.next=this.first,this.first=c,this.count++,this.last||(this.last=c),c}addLast(i){const c=t(i);return this.last!==null&&(this.last.next=c),c.previous=this.last,this.last=c,this.first===null&&(this.first=c),c.inList=!0,this.count++,c}removeFirst(){const i=this.first;if(i)return this.remove(i),i.value}removeLast(){const i=this.last;if(i)return this.remove(i),i.value}remove(i){i.inList&&(i.inList=!1,i.previous!==null?i.previous.next=i.next:i.previous===null&&(this.first=i.next),i.next!==null?i.next.previous=i.previous:i.next===null&&(this.last=i.previous),i.next=null,i.previous=null,this.count--)}find(i){let c=this.first;for(;c!==null;){if(c.value===i)return c;c=c.next}}}return pC}var ap={},cB;function HD(){if(cB)return ap;cB=1,Object.defineProperty(ap,"__esModule",{value:!0}),ap.UniqueArray=void 0;var e;return(function(t){function r(){return{keys:new Set,array:[]}}t.create=r;
7function n({keys:c,array:o},s,h){return c.has(s)?!1:(c.add(s),o[o.length]=h,!0)}t.add=n;function i({keys:c},o){return c.has(o)}t.has=i})(e||(ap.UniqueArray=e={})),ap}var uB;function ha(){return uB||(uB=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(gJ(),e),t.__exportStar(zD(),e),t.__exportStar(HD(),e)})(ex)),ex}var op={},tx={},rx={},sp={},lB;function tS(){if(lB)return sp;lB=1,Object.defineProperty(sp,"__esModule",{value:!0}),sp.Type=void 0;var e;return(function(t){function r(h,f,y){return{kind:"variable",name:h,type:f,isConstraint:y}}t.Variable=r;function n(h,f,y){return{kind:"value",namespace:h,name:f,parent:y}}t.Value=n;function i(h,f,y,_){return{kind:"container",namespace:h,name:f,child:y,alias:_}}t.Container=i;function c(h){return{kind:"union",types:h}}t.Union=c;function o(h,f,y,_){const g=Object.create(null);for(const a of _)g[a]=!0;return{kind:"oneof",namespace:h,name:f,type:y,values:g}}t.OneOf=o,t.Any={kind:"any"},t.AnyValue={kind:"any-value"},t.Num=n("","Number"),t.Str=n("","String"),t.Bool=o("","Bool",t.Str,["true","false"]);function s({values:h}){return Object.keys(h).sort()}t.oneOfValues=s})(e||(sp.Type=e={})),sp}var uo={},cp={},dB;function PT(){if(dB)return cp;dB=1,Object.defineProperty(cp,"__esModule",{value:!0}),cp.Expression=void 0;var e;return(function(t){function r(f){return{name:f}}t.Symbol=r;function n(f,y){return y?{head:f,args:y}:{head:f}}t.Apply=n;function i(f){return!!f&&Array.isArray(f)}t.isArgumentsArray=i;function c(f){return!!f&&!Array.isArray(f)}t.isArgumentsMap=c;function o(f){return!s(f)&&!h(f)}t.isLiteral=o;function s(f){return!!f&&!!f.head&&typeof f=="object"}t.isApply=s;function h(f){return!!f&&typeof f.name=="string"}t.isSymbol=h})(e||(cp.Expression=e={})),cp}var fB;function Mf(){if(fB)return uo;fB=1,Object.defineProperty(uo,"__esModule",{value:!0}),uo.Arguments=void 0,uo.Argument=t,uo.MSymbol=n,uo.CustomPropSymbol=i,uo.isSymbol=c;const e=PT();function t(o,s){const{description:h=void 0,isOptional:f=!1,isRest:y=!1,defaultValue:_=void 0}=s||{};return{type:o,isOptional:f,isRest:y,defaultValue:_,description:h}}var r;(function(o){o.None=s({});function s(f){return{kind:"dictionary",map:f,"@type":0}}o.Dictionary=s;function h(f,y){const{nonEmpty:_=!1}=y||{};return{kind:"list",type:f,nonEmpty:_,"@type":0}}o.List=h})(r||(uo.Arguments=r={}));function n(o,s,h,f){const y=function(_){return e.Expression.Apply(e.Expression.Symbol(y.id),_)};return y.info={namespace:"",name:o,description:f},y.id="",y.args=s,y.type=h,y}function i(o,s,h,f){const y=function(_){return e.Expression.Apply(e.Expression.Symbol(y.id),_)};return y.info={namespace:o,name:s,description:f},y.id=`${o}.${s}`,y.args=r.None,y.type=h,y}function c(o){const s=o;return typeof s=="function"&&!!s.info&&!!s.args&&typeof s.info.namespace=="string"&&!!s.type}return uo}var Jl={},mB;function TT(){if(mB)return Jl;mB=1,Object.defineProperty(Jl,"__esModule",{value:!0}),Jl.symbol=t,Jl.normalizeTable=r,Jl.symbolList=n;const e=Mf();function t(s,h,f){return(0,e.MSymbol)("",s,h,f)}function r(s){c("","",s)}function n(s){const h=[];return o(s,h),h}function i(s){const h=/([a-z])([A-Z])([a-z]|$)/g;return s.replace(h,(f,y,_,g)=>`${y}-${_.toLocaleLowerCase()}${g}`).replace(h,(f,y,_,g)=>`${y}-${_.toLocaleLowerCase()}${g}`)}function c(s,h,f){if((0,e.isSymbol)(f)){f.info.namespace=s,f.info.name=f.info.name||i(h),f.id=`${f.info.namespace}.${f.info.name}`;return}const y=`${f["@namespace"]||i(h)}`,_=s?`${s}.${y}`:y;for(const g of Object.keys(f))typeof f[g]!="object"&&!(0,e.isSymbol)(f[g])||c(_,g,f[g])}function o(s,h){if((0,e.isSymbol)(s)){h.push(s);return}for(const f of Object.keys(s))typeof s[f]!="object"&&!(0,e.isSymbol)(s[f])||o(s[f],h)}return Jl}var pB;function Z$(){return pB||(pB=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SymbolMap=e.SymbolList=e.core=e.TTargs=e.Types=void 0;const t=tS(),r=Mf(),n=TT();var i;(function(m){m.AnyVar=t.Type.Variable("a",t.Type.Any),m.AnyValueVar=t.Type.Variable("a",t.Type.Any),m.ConstrainedVar=t.Type.Variable("a",t.Type.Any,!0),m.Regex=t.Type.Value("Core","Regex"),m.Set=v=>t.Type.Container("Core","Set",v||m.AnyValueVar),m.List=v=>t.Type.Container("Core","List",v||m.AnyVar),m.Fn=(v,b)=>t.Type.Container("Core","Fn",v||m.AnyVar,b),m.Flags=(v,b)=>t.Type.Container("Core","Flags",v,b),m.BitFlags=m.Flags(t.Type.Num,"BitFlags")})(i||(e.Types=i={}));function c(m,v){return(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(m)}),m,v)}function o(m,v){return(0,n.symbol)(r.Arguments.List(m,{nonEmpty:!0}),m,v)}function s(m,v,b){return(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(m),1:(0,r.Argument)(m)}),v,b)}e.TTargs=r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.Num),1:(0,r.Argument)(t.Type.Num)});const h={"@header":"Types",bool:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.AnyValue)}),t.Type.Bool,"Convert a value to boolean."),num:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.AnyValue)}
7),t.Type.Num,"Convert a value to number."),str:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.AnyValue)}),t.Type.Str,"Convert a value to string."),regex:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.Str,{description:"Expression"}),1:(0,r.Argument)(t.Type.Str,{isOptional:!0,description:"Flags, e.g. 'i' for ignore case"})}),i.Regex,"Creates a regular expression from a string using the ECMAscript syntax."),list:(0,n.symbol)(r.Arguments.List(i.AnyVar),i.List()),set:(0,n.symbol)(r.Arguments.List(i.AnyValueVar),i.Set()),bitflags:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.Num)}),i.BitFlags,"Interpret a number as bitflags."),compositeKey:(0,n.symbol)(r.Arguments.List(t.Type.AnyValue),t.Type.AnyValue)},f={"@header":"Logic",not:c(t.Type.Bool),and:o(t.Type.Bool),or:o(t.Type.Bool)},y={"@header":"Control",eval:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.Fn(i.AnyVar))}),i.AnyVar,"Evaluate a function."),fn:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.AnyVar)}),i.Fn(i.AnyVar),'Wrap an expression to a "lazy" function.'),if:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.Bool,{description:"Condition"}),1:(0,r.Argument)(t.Type.Variable("a",t.Type.Any),{description:"If true"}),2:(0,r.Argument)(t.Type.Variable("b",t.Type.Any),{description:"If false"})}),t.Type.Union([t.Type.Variable("a",t.Type.Any),t.Type.Variable("b",t.Type.Any)])),assoc:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.Str,{description:"Name"}),1:(0,r.Argument)(t.Type.Variable("a",t.Type.Any),{description:"Value to assign"})}),t.Type.Variable("a",t.Type.Any))},_={"@header":"Relational",eq:s(t.Type.Variable("a",t.Type.AnyValue,!0),t.Type.Bool),neq:s(t.Type.Variable("a",t.Type.AnyValue,!0),t.Type.Bool),lt:s(t.Type.Num,t.Type.Bool),lte:s(t.Type.Num,t.Type.Bool),gr:s(t.Type.Num,t.Type.Bool),gre:s(t.Type.Num,t.Type.Bool),inRange:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.Num,{description:"Value to test"}),1:(0,r.Argument)(t.Type.Num,{description:"Minimum value"}),2:(0,r.Argument)(t.Type.Num,{description:"Maximum value"})}),t.Type.Bool,"Check if the value of the 1st argument is >= 2nd and <= 3rd.")},g={"@header":"Math",add:o(t.Type.Num),sub:o(t.Type.Num),mult:o(t.Type.Num),div:s(t.Type.Num,t.Type.Num),pow:s(t.Type.Num,t.Type.Num),mod:s(t.Type.Num,t.Type.Num),min:o(t.Type.Num),max:o(t.Type.Num),cantorPairing:s(t.Type.Num,t.Type.Num),sortedCantorPairing:s(t.Type.Num,t.Type.Num),invertCantorPairing:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.Num)}),i.List(t.Type.Num)),floor:c(t.Type.Num),ceil:c(t.Type.Num),roundInt:c(t.Type.Num),trunc:c(t.Type.Num),abs:c(t.Type.Num),sign:c(t.Type.Num),sqrt:c(t.Type.Num),cbrt:c(t.Type.Num),sin:c(t.Type.Num),cos:c(t.Type.Num),tan:c(t.Type.Num),asin:c(t.Type.Num),acos:c(t.Type.Num),atan:c(t.Type.Num),sinh:c(t.Type.Num),cosh:c(t.Type.Num),tanh:c(t.Type.Num),exp:c(t.Type.Num),log:c(t.Type.Num),log10:c(t.Type.Num),atan2:s(t.Type.Num,t.Type.Num)},a={"@header":"Strings",concat:o(t.Type.Str),match:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.Regex),1:(0,r.Argument)(t.Type.Str)}),t.Type.Bool)},d={"@header":"Lists",getAt:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.List()),1:(0,r.Argument)(t.Type.Num)}),i.AnyVar),equal:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.List()),1:(0,r.Argument)(i.List())}),t.Type.Bool)},p={"@header":"Sets",has:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.Set(i.ConstrainedVar)),1:(0,r.Argument)(i.ConstrainedVar)}),t.Type.Bool,"Check if the the 1st argument includes the value of the 2nd."),isSubset:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.Set(i.ConstrainedVar)),1:(0,r.Argument)(i.Set(i.ConstrainedVar))}),t.Type.Bool,"Check if the the 1st argument is a subset of the 2nd.")},u={"@header":"Flags",hasAny:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.Flags(i.ConstrainedVar)),1:(0,r.Argument)(i.Flags(i.ConstrainedVar))}),t.Type.Bool,"Check if the the 1st argument has at least one of the 2nd one's flags."),hasAll:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.Flags(i.ConstrainedVar)),1:(0,r.Argument)(i.Flags(i.ConstrainedVar))}),t.Type.Bool,"Check if the the 1st argument has all 2nd one's flags.")};e.core={"@header":"Language Primitives",type:h,logic:f,ctrl:y,rel:_,math:g,str:a,list:d,set:p,flags:u},(0,n.normalizeTable)(e.core),e.SymbolList=(0,n.symbolList)(e.core),e.SymbolMap=(function(){const m=Object.create(null);for(const v of e.SymbolList)m[v.id]=v;return m})()})(rx)),rx}var Cc={},hB;function WD(){if(hB)return Cc;hB=1,Object.defineProperty(Cc,"__esModule",{value:!0}),Cc.structureQuery=Cc.Types=void 0;const e=At,t=tS(),r=e.__importStar(Z$()),n=Mf(),i=TT();var c;(function(m){m.ElementSymbol=t.Type.Value("Structure","ElementSymbol"),m.AtomName=t.Type.Value("Structure","AtomName"),m.BondFlag=t.Type.OneOf("Structure","BondFlag",t.Type.Str,["covalent","metallic","ion","hydrogen","sulfide","computed","aromatic"]),m.BondFlags=r.Types.Flags(m.BondFlag,"BondFlags"),m.SecondaryStructureFlag=t.Type.OneOf("Structure","SecondaryStructureFlag",t.Type.Str,["alpha","beta","3-10","pi","sheet","strand","helix","turn","none"]),m.SecondaryStructureFlags=r.Types.Flags(m.SecondaryStructureFlag,"SecondaryStructureFlag"),m.RingFingerprint=t.Type.Value("Structure","RingFingerprint"),m.EntityType=t.Type.OneOf("Structure","EntityType",t.Type.Str,["polymer","non-polymer","water","branched"]),m.
7EntitySubtype=t.Type.OneOf("Structure","EntitySubtype",t.Type.Str,["other","polypeptide(D)","polypeptide(L)","polydeoxyribonucleotide","polyribonucleotide","polydeoxyribonucleotide/polyribonucleotide hybrid","cyclic-pseudo-peptide","peptide nucleic acid","oligosaccharide"]),m.ObjectPrimitive=t.Type.OneOf("Structure","ObjectPrimitive",t.Type.Str,["atomistic","sphere","gaussian","other"]),m.ResidueId=t.Type.Value("Structure","ResidueId"),m.ElementSet=t.Type.Value("Structure","ElementSet"),m.ElementSelection=t.Type.Value("Structure","ElementSelection"),m.ElementReference=t.Type.Value("Structure","ElementReference"),m.ElementSelectionQuery=r.Types.Fn(m.ElementSelection,"ElementSelectionQuery")})(c||(Cc.Types=c={}));const o={"@header":"Types",elementSymbol:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(t.Type.Str)}),c.ElementSymbol,"Create element symbol representation from a string value."),atomName:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(t.Type.AnyValue)}),c.AtomName,"Convert a value to an atom name."),entityType:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.EntityType)}),c.EntityType,`Create normalized representation of entity type: ${t.Type.oneOfValues(c.EntityType).join(", ")}.`),bondFlags:(0,i.symbol)(n.Arguments.List(c.BondFlag),c.BondFlags,`Create bond flags representation from a list of strings. Allowed flags: ${t.Type.oneOfValues(c.BondFlag).join(", ")}.`),ringFingerprint:(0,i.symbol)(n.Arguments.List(c.ElementSymbol,{nonEmpty:!0}),c.RingFingerprint,"Create ring fingerprint from the supplied atom element list."),secondaryStructureFlags:(0,i.symbol)(n.Arguments.List(c.SecondaryStructureFlag),c.SecondaryStructureFlags,`Create secondary structure flags representation from a list of strings. Allowed flags: ${t.Type.oneOfValues(c.SecondaryStructureFlag).join(", ")}.`),authResidueId:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(t.Type.Str,{description:"auth_asym_id"}),1:(0,n.Argument)(t.Type.Num,{description:"auth_seq_id"}),2:(0,n.Argument)(t.Type.Str,{description:"pdbx_PDB_ins_code",isOptional:!0})}),c.ResidueId,'Residue identifier based on "auth_" annotation.'),labelResidueId:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(t.Type.Str,{description:"label_entity_id"}),1:(0,n.Argument)(t.Type.Str,{description:"label_asym_id"}),2:(0,n.Argument)(t.Type.Num,{description:"label_seq_id"}),3:(0,n.Argument)(t.Type.Str,{description:"pdbx_PDB_ins_code",isOptional:!0})}),c.ResidueId,`Residue identifier based on mmCIF's "label_" annotation.`)},s={"@header":"Iteration Slots",element:(0,i.symbol)(n.Arguments.None,c.ElementReference,"A reference to the current element."),elementSetReduce:(0,i.symbol)(n.Arguments.None,t.Type.Variable("a",t.Type.AnyValue,!0),"Current value of the element set reducer.")},h={"@header":"Generators",all:(0,i.symbol)(n.Arguments.None,c.ElementSelectionQuery,"The entire structure."),atomGroups:(0,i.symbol)(n.Arguments.Dictionary({"entity-test":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!0,description:"Test for the 1st atom of every entity"}),"chain-test":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!0,description:"Test for the 1st atom of every chain"}),"residue-test":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!0,description:"Test for the 1st atom every residue"}),"atom-test":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!0}),"group-by":(0,n.Argument)(t.Type.Any,{isOptional:!0,defaultValue:"atom-key",description:"Group atoms to sets based on this property. Default: each atom has its own set"})}),c.ElementSelectionQuery,"Return all atoms for which the tests are satisfied, grouped into sets."),bondedAtomicPairs:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:"true for covalent bonds",description:"Test each bond with this predicate. Each bond is visited twice with swapped atom order."})}),c.ElementSelectionQuery,"Return all pairs of atoms for which the test is satisfied."),rings:(0,i.symbol)(n.Arguments.Dictionary({fingerprint:(0,n.Argument)(c.RingFingerprint,{isOptional:!0}),"only-aromatic":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!1})}),c.ElementSelectionQuery,"Return all rings or those with the specified fingerprint and/or only aromatic rings."),queryInSelection:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),query:(0,n.Argument)(c.ElementSelectionQuery),"in-complement":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!1})}),c.ElementSelectionQuery,"Executes query only on atoms that are in the source selection."),empty:(0,i.symbol)(n.Arguments.None,c.ElementSelectionQuery,"Nada.")},f={"@header":"Selection Modifications",queryEach:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),query:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"Query every atom set in the input selection separately."),intersectBy:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),by:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"Intersect each atom set from the first sequence from atoms in the second one."),exceptBy:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),by:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"Remove all atoms from 'selection' that occur in 'by'."),unionBy:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),by:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"For each atom set A in the orginal sequence, combine all atoms sets in the target selection that intersect with A."),union:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"Collects all atom sets in the sequence into a single atom set."),cluster:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),"min-distance":(0,n.Argument)(t.Type.Num,{isOptional:!0,defaultValue:0}),"max-distance":(0,n.Argument)(t.Type.Num),"min-size":(0,n.Argument)(t.Type.Num,{description:"Minimal number of sets to merge, must be at least 2",isOptional:!0,defaultValue:2}),"max-size":(0,n.Argument)(t.Type.Num,{description:"Maximal number of sets to merge, if not set, no limit",isOptional:!0})}),c.ElementSelectionQuery,"Combines atom sets that have mutual distance in the interval [min-radius, max-radius]. Minimum/maximum size determines how many atom sets can be combined."),includeSurroundings:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),radius:(0,n.Argument)(t.Type.Num),"atom-radius":(0,n.Argument)(t.Type.Num,{isOptional:!0,defaultValue:0,description:"Value added to each atom before the distance check, for example VDW radius. Using this argument is computationally demanding."}),"as-whole-residues":(0,n.Argument)(t.Type.Bool,{isOptional:!0})}),c.ElementSelectionQuery,"For each atom set in the selection, include all surrouding atoms/residues that are within the specified radius."),surroundingLigands:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),radius:(0,n.Argument)(t.Type.Num),"include-water":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!0})}),c.ElementSelectionQuery,"Find all ligands components around the source query."),includeConnected:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),"bond-test":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:"true for covalent bonds"}),"layer-count":(0,n.Argument)(t.Type.Num,{isOptional:!0,defaultValue:1,description:"Number of bonded layers to include."}),"fixed-point":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!1,description:"Continue adding layers as long as new connections exist."}),"as-whole-residues":(0,n.Argument)(t.Type.Bool,{isOptional:!0})}),c.ElementSelectionQuery,"Pick all atom sets that are connected to the target."),wholeResidues:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"Expand the selection to whole residues."),expandProperty:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),property:(0,n.Argument)(t.Type.AnyValue)}),c.ElementSelectionQuery,"To each atom set in the selection, add all atoms that have the same property value that was already present in the set.")},y={"@header":"Selection Filters",pick:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),test:(0,n.Argument)(t.Type.Bool)}),c.ElementSelectionQuery,"Pick all atom sets that satisfy the test."),first:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"Take the 1st atom set in the sequence."),withSameAtomProperties:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),source:(0,n.Argument)(c.ElementSelectionQuery),property:(0,n.Argument)(t.Type.Any)}),c.ElementSelectionQuery,"Pick all atom sets for which the set of given atom properties is a subset of the source properties."),intersectedBy:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),by:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"Pick all atom sets that have non-zero intersection with the target."),within:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),target:(0,n.Argument)(c.ElementSelectionQuery),"min-radius":(0,n.Argument)(t.Type.Num,{isOptional:!0,defaultValue:0}),"max-radius":(0,n.Argument)(t.Type.Num),"atom-radius":(0,n.Argument)(t.Type.Num,{isOptional:!0,defaultValue:0,description:"Value added to each atom before the distance check, for example VDW radius. Using this argument is computationally demanding."}),invert:(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!1,description:"If true, pick only atom sets that are further than the specified radius."})}),c.ElementSelectionQuery,"Pick all atom sets from selection that have any atom within the radius of any atom from target."),isConnectedTo:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),target:(0,n.Argument)(c.ElementSelectionQuery),"bond-test":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:"true for covalent bonds"}),disjunct:(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!0,description:"If true, there must exist a bond to an atom that lies outside the given atom set to pass test."}),invert:(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!1,description:"If true, return atom sets that are not connected."})}),c.ElementSelectionQuery,"Pick all atom sets that are connected to the target.")},_={"@header":"Selection Combinators",intersect:(0,i.symbol)(n.Arguments.List(c.ElementSelectionQuery),c.ElementSelectionQuery,"Return all unique atom sets that appear in all of the source selections."),merge:(0,i.symbol)(n.Arguments.List(c.ElementSelectionQuery),c.ElementSelectionQuery,"Merges multiple selections into a single one. Only unique atom sets are kept."),distanceCluster:(0,i.symbol)(n.Arguments.Dictionary({matrix:(0,n.Argument)(r.Types.List(r.Types.List(t.Type.Num)),{description:"Distance matrix, represented as list of rows (num[][])). Lower triangle is min distance, upper triangle is max distance."}),selections:(0,n.Argument)(r.Types.List(c.ElementSelectionQuery),{description:"A list of held selections."})}),c.ElementSelectionQuery,"Pick combinations of atom sets from the source sequences that are mutually within distances specified by a matrix.")},g={"@header":"Atom Sets",atomCount:(0,i.symbol)(n.Arguments.None,t.Type.Num),countQuery:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery)}
7),t.Type.Num,"Counts the number of occurences of a specific query inside the current atom set."),reduce:(0,i.symbol)(n.Arguments.Dictionary({initial:(0,n.Argument)(t.Type.Variable("a",t.Type.AnyValue,!0),{description:"Initial value assigned to slot.atom-set-reduce. Current atom is set to the 1st atom of the current set for this."}),value:(0,n.Argument)(t.Type.Variable("a",t.Type.AnyValue,!0),{description:"Expression executed for each atom in the set"})}),t.Type.Variable("a",t.Type.AnyValue,!0),"Execute the value expression for each atom in the current atom set and return the result. Works the same way as Array.reduce in JavaScript (``result = value(value(...value(initial)))``)"),propertySet:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(r.Types.ConstrainedVar)}),r.Types.Set(r.Types.ConstrainedVar),"Returns a set with all values of the given property in the current atom set.")},a={"@header":"Atom Properties",core:{"@header":"Core Properties",elementSymbol:p(c.ElementSymbol),vdw:p(t.Type.Num,"Van der Waals radius"),mass:p(t.Type.Num,"Atomic weight"),atomicNumber:p(t.Type.Num,"Atomic number"),x:p(t.Type.Num,"Cartesian X coordinate"),y:p(t.Type.Num,"Cartesian Y coordinate"),z:p(t.Type.Num,"Cartesian Z coordinate"),atomKey:p(t.Type.AnyValue,"Unique value for each atom. Main use case is grouping of atoms."),bondCount:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementReference,{isOptional:!0,defaultValue:"slot.current-atom"}),flags:(0,n.Argument)(c.BondFlags,{isOptional:!0,defaultValue:"covalent"})}
7),t.Type.Num,"Number of bonds (by default only covalent bonds are counted)."),sourceIndex:p(t.Type.Num,"Index of the atom/element in the input file."),operatorName:p(t.Type.Str,"Name of the symmetry operator applied to this element."),instanceId:p(t.Type.Str,"Canonical name of the symmetry operator applied to this element."),operatorKey:p(t.Type.Num,"Key of the symmetry operator applied to this element."),modelIndex:p(t.Type.Num,"Index of the model in the input file."),modelLabel:p(t.Type.Str,"Label/header of the model in the input file."),modelEntryId:p(t.Type.Str,"Entry ID of the model (e.g., PDB ID).")},topology:{connectedComponentKey:p(t.Type.AnyValue,"Unique value for each connected component.")},macromolecular:{"@header":"Macromolecular Properties (derived from the mmCIF format)",authResidueId:p(c.ResidueId,"type.auth-residue-id symbol executed on current atom's residue"),labelResidueId:p(c.ResidueId,"type.label-residue-id symbol executed on current atom's residue"),residueKey:p(t.Type.AnyValue,"Unique value for each tuple ``(label_entity_id,auth_asym_id, auth_seq_id, pdbx_PDB_ins_code)``, main use case is grouping of atoms"),chainKey:p(t.Type.AnyValue,"Unique value for each tuple ``(label_entity_id, auth_asym_id)``, main use case is grouping of atoms"),entityKey:p(t.Type.AnyValue,"Unique value for each tuple ``label_entity_id``, main use case is grouping of atoms"),isHet:p(t.Type.Bool,"Equivalent to atom_site.group_PDB !== ATOM"),id:p(t.Type.Num,"_atom_site.id"),label_atom_id:p(c.AtomName),label_alt_id:p(t.Type.Str),label_comp_id:p(t.Type.Str),label_asym_id:p(t.Type.Str),label_entity_id:p(t.Type.Str),label_seq_id:p(t.Type.Num),auth_atom_id:p(c.AtomName),auth_comp_id:p(t.Type.Str),auth_asym_id:p(t.Type.Str),auth_seq_id:p(t.Type.Num),residueSourceIndex:p(t.Type.Num),pdbx_PDB_ins_code:p(t.Type.Str),pdbx_formal_charge:p(t.Type.Num),occupancy:p(t.Type.Num),B_iso_or_equiv:p(t.Type.Num),entityType:p(c.EntityType,"Type of the entity as defined in mmCIF (polymer, non-polymer, branched, water)"),entitySubtype:p(c.EntitySubtype,"Subtype of the entity as defined in mmCIF _entity_poly.type and _pdbx_entity_branch.type (other, polypeptide(D), polypeptide(L), polydeoxyribonucleotide, polyribonucleotide, polydeoxyribonucleotide/polyribonucleotide hybrid, cyclic-pseudo-peptide, peptide nucleic acid, oligosaccharide)"),entityPrdId:p(t.Type.Str,"The PRD ID of the entity."),entityDescription:p(r.Types.List(t.Type.Str)),objectPrimitive:p(c.ObjectPrimitive,"Type of the primitive object used to model this segment as defined in mmCIF/IHM (atomistic, sphere, gaussian, other)"),secondaryStructureKey:p(t.Type.AnyValue,"Unique value for each secondary structure element."),secondaryStructureFlags:p(c.SecondaryStructureFlags),isModified:p(t.Type.Bool,"True if the atom belongs to modification of a standard residue."),modifiedParentName:p(t.Type.Str,"'3-letter' code of the modifed parent residue."),isNonStandard:p(t.Type.Bool,"True if this is a non-standard residue."),chemCompType:p(t.Type.Str,"Type of the chemical component as defined in mmCIF.")},ihm:{hasSeqId:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(t.Type.Num)}),t.Type.Bool,"Checks if the current element represents a given sequence id"),overlapsSeqIdRange:(0,i.symbol)(n.Arguments.Dictionary({beg:(0,n.Argument)(t.Type.Num),end:(0,n.Argument)(t.Type.Num)}),t.Type.Bool,"Checks if the current element overlaps with the specified residue range")}},d={"@header":"Bond Properties",flags:u(c.BondFlags),order:u(t.Type.Num),key:u(t.Type.Num),length:u(t.Type.Num),atomA:u(c.ElementReference),atomB:u(c.ElementReference)};function p(m,v){return(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementReference,{isOptional:!0,defaultValue:"slot.current-atom"})}),m,v)}function u(m,v){return(0,i.symbol)(n.Arguments.None,m,v)}return Cc.structureQuery={"@header":"Structure Queries",type:o,slot:s,generator:h,modifier:f,filter:y,combinator:_,atomSet:g,atomProperty:a,bondProperty:d},Cc}var up={},gB;function yJ(){if(gB)return up;gB=1,Object.defineProperty(up,"__esModule",{value:!0}),up.internal=void 0;const e=At,t=tS(),r=e.__importStar(WD()),n=Mf(),i=TT(),c={"@header":"Generators",bundleElement:(0,i.symbol)(n.Arguments.Dictionary({groupedUnits:(0,n.Argument)(t.Type.Any),set:(0,n.Argument)(t.Type.Any),ranges:(0,n.Argument)(t.Type.Any)}),t.Type.Any),bundle:(0,i.symbol)(n.Arguments.Dictionary({elements:(0,n.Argument)(t.Type.Any)}),r.Types.ElementSelectionQuery,"A selection with single structure containing represented by the bundle."),current:(0,i.symbol)(n.Arguments.None,r.Types.ElementSelectionQuery,"Current selection provided by the query context. Avoid using this in State Transforms.")};return up.internal={"@header":"Internal Queries",generator:c},up}var yB;function $D(){return yB||(yB=1,(function(e){Object.defineProperty(e,"__esMo
7dule",{value:!0}),e.MolScriptSymbolTable=e.SymbolMap=e.SymbolList=void 0;const t=Z$(),r=WD(),n=yJ(),i=TT(),c={core:t.core,structureQuery:r.structureQuery,internal:n.internal};e.MolScriptSymbolTable=c,(0,i.normalizeTable)(c),e.SymbolList=(0,i.symbolList)(c),e.SymbolMap=(function(){const o=Object.create(null);for(const s of e.SymbolList)o[s.id]=s;return o})()})(tx)),tx}var vB;function dr(){if(vB)return op;vB=1,Object.defineProperty(op,"__esModule",{value:!0}),op.MolScriptBuilder=void 0;const e=$D();var t;return(function(r){r.core=e.MolScriptSymbolTable.core,r.struct=e.MolScriptSymbolTable.structureQuery,r.internal=e.MolScriptSymbolTable.internal;function n(P){return r.struct.type.atomName([P])}r.atomName=n;function i(P){return r.struct.type.elementSymbol([P])}r.es=i;function c(...P){return r.core.type.list(P)}r.list=c;function o(...P){return r.core.type.set(P)}r.set=o;function s(P,C){return r.core.type.regex([P,C])}r.re=s;function h(P){return r.core.ctrl.fn([P])}r.fn=h;function f(P){return r.core.ctrl.eval([P])}r.evaluate=f;const y=r.struct.atomProperty.core,_=r.struct.atomProperty.macromolecular,g=r.struct.atomProperty.topology;function a(P){return y[P]()}r.acp=a;function d(P){return g[P]()}r.atp=d;function p(P){return _[P]()}r.ammp=p;const u=r.struct.atomSet.propertySet;function m(P){return u([a(P)])}r.acpSet=m;function v(P){return u([d(P)])}r.atpSet=v;function b(P){return u([p(P)])}r.ammpSet=b})(t||(op.MolScriptBuilder=t={})),op}var ed={},lp={},nx={},td={},bB;function rS(){if(bB)return td;bB=1,Object.defineProperty(td,"__esModule",{value:!0}),td.CentroidHelper=void 0;const e=wt(),t=ja(),r=e.Vec3.add,n=e.Vec3.squaredDistance,i=e.Vec3.distance;class c{reset(){e.Vec3.set(this.center,0,0,0),this.radiusSq=0,this.count=0}includeStep(s){r(this.center,this.center,s),this.count++}finishedIncludeStep(){this.count!==0&&e.Vec3.scale(this.center,this.center,1/this.count)}radiusStep(s){const h=n(s,this.center);h>this.radiusSq&&(this.radiusSq=h)}radiusSphereStep(s,h){const f=i(s,this.center)+h,y=f*f;y>this.radiusSq&&(this.radiusSq=y)}getSphere(s){return s||(s=(0,t.Sphere3D)()),e.Vec3.copy(s.center,this.center),s.radius=Math.sqrt(this.radiusSq),s}getCount(){return this.count}constructor(){this.count=0,this.center=(0,e.Vec3)(),this.radiusSq=0}}return td.CentroidHelper=c,(function(o){const s=new o,h=(0,e.Vec3)(),f=(0,e.Vec3)();function y({x:a,y:d,z:p},u){s.reset();const m=a.length;for(let v=0;v<m;v++)e.Vec3.set(h,a[v],d[v],p[v]),s.includeStep(h);s.finishedIncludeStep();for(let v=0;v<m;v++)e.Vec3.set(h,a[v],d[v],p[v]),s.radiusStep(h);return e.Vec3.copy(u.center,s.center),u.radius=Math.sqrt(s.radiusSq),u}o.fromArrays=y;function _(a,d,p){s.reset();for(let u=0;u<a;u++)d(u,h),s.includeStep(h);s.finishedIncludeStep();for(let u=0;u<a;u++)d(u,h),s.radiusStep(h);return e.Vec3.copy(p.center,s.center),p.radius=Math.sqrt(s.radiusSq),p}o.fromProvider=_;function g(a,d,p){s.reset();for(let u=0;u<a;u++)d(u,h,f),s.includeStep(h),s.includeStep(f);s.finishedIncludeStep();for(let u=0;u<a;u++)d(u,h,f),s.radiusStep(h),s.radiusStep(f);return e.Vec3.copy(p.center,s.center),p.radius=Math.sqrt(s.radiusSq),p}o.fromPairProvider=g})(c||(td.CentroidHelper=c={})),td}var Cs={},rd={},_B;function xT(){if(_B)return rd;_B=1,Object.defineProperty(rd,"__esModule",{value:!0}),rd.InterUnitGraph=void 0;const e=ha(),t=_t();class r{getConnectedUnits(c){return this.map.has(c)?this.map.get(c):n}getEdgeIndex(c,o,s,h){const f=this.edgeKeyIndex.get(r.getEdgeUnitKey(o,h));if(f===void 0)return-1;const y=f.get(r.getEdgeIndexKey(c,s));return y!==void 0?y:-1}hasEdge(c,o,s,h){return this.getEdgeIndex(c,o,s,h)!==-1}getEdge(c,o,s,h){const f=this.getEdgeIndex(c,o,s,h);return f!==-1?this.edges[f]:void 0}getEdgeIndices(c,o){return this.vertexKeyIndex.get(r.getVertexKey(c,o))||[]}constructor(c){this.map=c;let o=0;const s=[],h=new Map,f=new Map;this.map.forEach(y=>{y.forEach(_=>{o+=_.edgeCount,_.connectedIndices.forEach(g=>{_.getEdges(g).forEach(a=>{const{unitA:d,unitB:p}=_,u=r.getEdgeIndexKey(d,p),m=r.getEdgeIndexKey(g,a.indexB),v=h.get(u);v===void 0?h.set(u,new Map([[m,s.length]])):v.set(m,s.length);const b=r.getVertexKey(g,d),P=f.get(b);P===void 0?f.set(b,[s.length]):P.push(s.length),s.push({...a,indexA:g,unitA:d,unitB:p})})})})}),this.edgeCount=o,this.edges=s,this.edgeKeyIndex=h,this.vertexKeyIndex=f}}rd.InterUnitGraph=r,(function(i){class c{hasEdges(g){return this.edgeMap.has(g)}getEdges(g){return this.edgeMap.has(g)?this.edgeMap.get(g):n}get areUnitsOrdered(){return this.unitA<this.unitB}constructor(g,a,d,p,u){this.unitA=g,this.unitB=a,this.edgeCount=d,this.connectedIndices=p,this.edgeMap=u}}i.UnitPairEdges=c;function o(_,g){return(0,t.cantorPairing)(_,g)}i.getEdgeUnitKey=o;function s(_,g){return(0,t.cantorPairing)(_,g)}i.getEdgeIndexKey=s;function h(_,g){return(0,t.cantorPairing)(_,g)}i.getVertexKey=h;function f(_,g,a){_.has(g)?_.get(g).push(a):_.set(g,[a])}class y{constructor(){this.map=new Map}startUnitPair(g,a){this.uA=g,this.uB=a,this.mapAB=new Map,this.mapBA=new Map,this.linkedA=e.UniqueArray.create(),this.linkedB=e.UniqueArray.create(),this.linkCount=0}finishUnitPair(){this.linkCount!==0&&(f(this.map,this.uA,new c(this.uA,this.uB,this.linkCount,this.linkedA.array,this.mapAB)),f(this.map,this.uB,new c(this.uB,this.uA,this.linkCount,this.linkedB.array,this.mapBA)))}add(g,a,d){f(this.mapAB,g,{indexB:a,props:d}),f(this.mapBA,a,{indexB:g,props:d}),e.UniqueArray.add(this.linkedA,g,g),e.UniqueArray.add(this.linkedB,a,a),this.linkCount+=1}getMap(){return this.map}}i.Builder=y})(r||(rd.InterUnitGraph=r={}));const n=[];return rd}var SB;function XD(){if(SB)return Cs;SB=1,Object.defineProperty(Cs,"__esModule",{value:!0}),Cs.InterUnitBonds=Cs.IntraUnitBonds=void 0;const e=is(),t=Zn(),r=xT();var n;(function(c){c.Empty=e.IntAdjacencyGraph.create([],[],[],0,{flags:[],order:[],key:[]})})(n||(Cs.IntraUnitBonds=n={}));class i extends r.InterUnitGraph{getBondFromLocation(o){return t.Unit.isAtomic(o.aUnit)&&t.Unit.isAtomic(o.bUnit)?this.getEdge(o.aIndex,o.aUnit.id,o.bIndex,o.bUnit.id):void 0}getBondIndexFromLocation(o){return t.Unit.isAtomic(o.aUnit)&&t.Unit.isAtomic(o.bUnit)?this.getEdgeIndex(o.aIndex,o.aUnit.id,o.bIndex,o.bUnit.id):-1}}return Cs.InterUnitBonds=i,(function(c){class o extends r.InterUnitGraph.UnitPairEdges{}c.UnitPairBonds=o})(i||(Cs.InterUnitBonds=i={})),Cs}var hC={},ix={},CB;function AT(){return CB||(CB=1,(function(e){Object.defineProperty(e,"__esMo
7dule",{value:!0}),e.MetalsSet=e.DefaultBondComputationProps=e.DefaultBondMaxRadius=void 0,e.getElementIdx=o,e.getElementPairThreshold=s,e.getElementThreshold=h,e.getPairingThreshold=f,e.isHydrogen=_,e.DefaultBondMaxRadius=4,e.DefaultBondComputationProps={forceCompute:!1,noCompute:!1,maxRadius:e.DefaultBondMaxRadius};const t={H:0,h:0,D:0,d:0,T:0,t:0,He:2,HE:2,he:2,Li:3,LI:3,li:3,Be:4,BE:4,be:4,B:5,b:5,C:6,c:6,N:7,n:7,O:8,o:8,F:9,f:9,Ne:10,NE:10,ne:10,Na:11,NA:11,na:11,Mg:12,MG:12,mg:12,Al:13,AL:13,al:13,Si:14,SI:14,si:14,P:15,p:15,S:16,s:16,Cl:17,CL:17,cl:17,Ar:18,AR:18,ar:18,K:19,k:19,Ca:20,CA:20,ca:20,Sc:21,SC:21,sc:21,Ti:22,TI:22,ti:22,V:23,v:23,Cr:24,CR:24,cr:24,Mn:25,MN:25,mn:25,Fe:26,FE:26,fe:26,Co:27,CO:27,co:27,Ni:28,NI:28,ni:28,Cu:29,CU:29,cu:29,Zn:30,ZN:30,zn:30,Ga:31,GA:31,ga:31,Ge:32,GE:32,ge:32,As:33,AS:33,as:33,Se:34,SE:34,se:34,Br:35,BR:35,br:35,Kr:36,KR:36,kr:36,Rb:37,RB:37,rb:37,Sr:38,SR:38,sr:38,Y:39,y:39,Zr:40,ZR:40,zr:40,Nb:41,NB:41,nb:41,Mo:42,MO:42,mo:42,Tc:43,TC:43,tc:43,Ru:44,RU:44,ru:44,Rh:45,RH:45,rh:45,Pd:46,PD:46,pd:46,Ag:47,AG:47,ag:47,Cd:48,CD:48,cd:48,In:49,IN:49,in:49,Sn:50,SN:50,sn:50,Sb:51,SB:51,sb:51,Te:52,TE:52,te:52,I:53,i:53,Xe:54,XE:54,xe:54,Cs:55,CS:55,cs:55,Ba:56,BA:56,ba:56,La:57,LA:57,la:57,Ce:58,CE:58,ce:58,Pr:59,PR:59,pr:59,Nd:60,ND:60,nd:60,Pm:61,PM:61,pm:61,Sm:62,SM:62,sm:62,Eu:63,EU:63,eu:63,Gd:64,GD:64,gd:64,Tb:65,TB:65,tb:65,Dy:66,DY:66,dy:66,Ho:67,HO:67,ho:67,Er:68,ER:68,er:68,Tm:69,TM:69,tm:69,Yb:70,YB:70,yb:70,Lu:71,LU:71,lu:71,Hf:72,HF:72,hf:72,Ta:73,TA:73,ta:73,W:74,w:74,Re:75,RE:75,re:75,Os:76,OS:76,os:76,Ir:77,IR:77,ir:77,Pt:78,PT:78,pt:78,Au:79,AU:79,au:79,Hg:80,HG:80,hg:80,Tl:81,TL:81,tl:81,Pb:82,PB:82,pb:82,Bi:83,BI:83,bi:83,Po:84,PO:84,po:84,At:85,AT:85,at:85,Rn:86,RN:86,rn:86,Fr:87,FR:87,fr:87,Ra:88,RA:88,ra:88,Ac:89,AC:89,ac:89,Th:90,TH:90,th:90,Pa:91,PA:91,pa:91,U:92,u:92,Np:93,NP:93,np:93,Pu:94,PU:94,pu:94,Am:95,AM:95,am:95,Cm:96,CM:96,cm:96,Bk:97,BK:97,bk:97,Cf:98,CF:98,cf:98,Es:99,ES:99,es:99,Fm:100,FM:100,fm:100,Md:101,MD:101,md:101,No:102,NO:102,no:102,Lr:103,LR:103,lr:103,Rf:104,RF:104,rf:104,Db:105,DB:105,db:105,Sg:106,SG:106,sg:106,Bh:107,BH:107,bh:107,Hs:108,HS:108,hs:108,Mt:109,MT:109,mt:109},r={0:1.42,1:1.42,3:2.7,4:2.7,6:1.75,7:1.6,8:1.52,11:2.7,12:2.7,13:2.7,14:1.9,15:2,16:1.9,17:1.8,19:2.7,20:2.7,21:2.7,22:2.7,23:2.7,24:2.7,25:2.7,26:2.7,27:2.7,28:2.7,29:2.7,30:2.7,31:2.7,33:2.68,37:2.7,38:2.7,39:2.7,40:2.7,41:2.7,42:2.7,43:2.7,44:2.7,45:2.7,46:2.7,47:2.7,48:2.7,49:2.7,50:2.7,55:2.7,56:2.7,57:2.7,58:2.7,59:2.7,60:2.7,61:2.7,62:2.7,63:2.7,64:2.7,65:2.7,66:2.7,67:2.7,68:2.7,69:2.7,70:2.7,71:2.7,72:2.7,73:2.7,74:2.7,75:2.7,76:2.7,77:2.7,78:2.7,79:2.7,80:2.7,81:2.7,82:2.7,83:2.7,87:2.7,88:2.7,89:2.7,90:2.7,91:2.7,92:2.7,93:2.7,94:2.7,95:2.7,96:2.7,97:2.7,98:2.7,99:2.7,100:2.7,101:2.7,102:2.7,103:2.7,104:2.7,105:2.7,106:2.7,107:2.7,108:2.7,109:2.88},n={0:.8,20:1.31,27:1.2,35:1.15,44:1.1,54:1,60:1.84,72:1.88,84:1.75,85:1.56,86:1.76,98:1.6,99:1.68,100:1.63,112:1.6,113:1.59,114:1.36,129:1.45,135:1.47,144:1.6,152:1.45,170:1.4,180:1.55,202:2.4,222:2.24,224:1.91,225:1.98,243:2.02,269:2,293:1.9,316:1.8,420:2.37,480:2.3,512:2.3,544:2.3,612:2.1,629:1.54,665:1,813:2.6,851:2.65,854:2.27,894:1.93,896:2.1,937:2.05,938:2.06,981:1.62,1258:2.68,1309:2.33,1484:1,1763:2.14,1823:2.48,1882:2.1,1944:1.72,2063:2.72,2380:2.34,3132:2.6,3367:2.44,3733:2.11,3819:2.6,3821:2.36,4736:2.75,5724:2.73,5959:2.63,6519:2.84,6750:2.87,8991:2.81},i=2.001;e.MetalsSet=(function(){const g=["LI","NA","K","RB","CS","FR","BE","MG","CA","SR","BA","RA","AL","GA","IN","SN","TL","PB","BI","SC","TI","V","CR","MN","FE","CO","NI","CU","ZN","Y","ZR","NB","MO","TC","RU","RH","PD","AG","CD","LA","HF","TA","W","RE","OS","IR","PT","AU","HG","AC","RF","DB","SG","BH","HS","MT","CE","PR","ND","PM","SM","EU","GD","TB","DY","HO","ER","TM","YB","LU","TH","PA","U","NP","PU","AM","CM","BK","CF","ES","FM","MD","NO","LR"],a=new Set;for(const d of g)a.add(t[d]);return a})();function c(g,a){return g<a?(g+a)*(g+a+1)/2+a:(g+a)*(g+a+1)/2+g}function o(g){const a=t[g];return a===void 0?-1:a}function s(g,a){if(g<0||a<0)return-1;const d=n[c(g,a)];return d===void 0?-1:d}function h(g){if(g<0)return i;const a=r[g];return a===void 0?i:a}function f(g,a,d,p){const u=s(g,a);return u>0?u:a<0?d:(d+p)/1.95}const y=t.H;function _(g){return g===y}})(ix)),ix}var dp={},PB;function KD(){if(PB)return dp;PB=1,Object.defineProperty(dp,"__esModule",{value:!0}),dp.getIntraBondOrderFromTable=r,dp.getInterBondOrderFromTable=i;const e=dt(),t=new Map([["HIS|CD2|CG",2],["HIS|CE1|ND1",2],["ARG|CZ|NH2",2],["PHE|CE1|CZ",2],["PHE|CD2|CE2",2],["PHE|CD1|CG",2],["TRP|CD1|CG",2],["TRP|CD2|CE2",2],["TRP|CE3|CZ3",2],["TRP|CH2|CZ2",2],["ASN|CG|OD1",2],["GLN|CD|OE1",2],["TYR|CD1|CG",2],["TYR|CD2|CE2",2],["TYR|CE1|CZ",2],["ASP|CG|OD1",2],["GLU|C
7D|OE1",2],["G|C8|N7",2],["G|C4|C5",2],["G|C2|N3",2],["G|C6|O6",2],["C|C4|N3",2],["C|C5|C6",2],["C|C2|O2",2],["A|C2|N3",2],["A|C6|N1",2],["A|C4|C5",2],["A|C8|N7",2],["U|C5|C6",2],["U|C2|O2",2],["U|C4|O4",2],["DG|C8|N7",2],["DG|C4|C5",2],["DG|C2|N3",2],["DG|C6|O6",2],["DC|C4|N3",2],["DC|C5|C6",2],["DC|C2|O2",2],["DA|C2|N3",2],["DA|C6|N1",2],["DA|C4|C5",2],["DA|C8|N7",2],["DT|C5|C6",2],["DT|C2|O2",2],["DT|C4|O4",2]]);function r(c,o,s){return[o,s]=o<s?[o,s]:[s,o],e.AminoAcidNames.has(c)&&o==="C"&&s==="O"||e.BaseNames.has(c)&&o==="OP1"&&s==="P"?2:t.get(`${c}|${o}|${s}`)||1}const n=new Map([["LYS|NZ|RET|C15",2]]);function i(c,o,s,h){return c>s&&([c,s]=[s,c],[o,h]=[h,o]),n.get(`${c}|${o}|${s}|${h}`)||1}return dp}var fp={},mp={},pp={},lo={},ax={},gC={},Pc={},TB;function YD(){if(TB)return Pc;TB=1,Object.defineProperty(Pc,"__esModule",{value:!0}),Pc.Encoding=Pc.VERSION=void 0,Pc.VERSION="0.3.0";var e;return(function(t){(function(i){i[i.Int8=1]="Int8",i[i.Int16=2]="Int16",i[i.Int32=3]="Int32",i[i.Uint8=4]="Uint8",i[i.Uint16=5]="Uint16",i[i.Uint32=6]="Uint32"})(t.IntDataType||(t.IntDataType={})),(function(i){i[i.Float32=32]="Float32",i[i.Float64=33]="Float64"})(t.FloatDataType||(t.FloatDataType={}));function r(i){let c;return i instanceof Int8Array?c=t.IntDataType.Int8:i instanceof Int16Array?c=t.IntDataType.Int16:i instanceof Int32Array?c=t.IntDataType.Int32:i instanceof Uint8Array?c=t.IntDataType.Uint8:i instanceof Uint16Array?c=t.IntDataType.Uint16:i instanceof Uint32Array?c=t.IntDataType.Uint32:i instanceof Float32Array?c=t.FloatDataType.Float32:i instanceof Float64Array?c=t.FloatDataType.Float64:c=t.IntDataType.Int32,c}t.getDataType=r;function n(i){if(i instanceof Int8Array||i instanceof Int16Array||i instanceof Int32Array)return!0;for(let c=0,o=i.length;c<o;c++)if(c<0)return!1;return!0}t.isSignedIntegerDataType=n})(e||(Pc.Encoding=e={})),Pc}var Tc={},xB;function QD(){if(xB)return Tc;xB=1,Object.defineProperty(Tc,"__esModule",{value:!0}),Tc.IsNativeEndianLittle=void 0,Tc.flipByteOrder=e,Tc.uint8ToString=r,Tc.IsNativeEndianLittle=new Uint16Array(new Uint8Array([18,52]).buffer)[0]===13330;function e(n,i){const c=new ArrayBuffer(n.length),o=new Uint8Array(c);for(let s=0,h=n.length;s<h;s+=i)for(let f=0;f<i;f++)o[s+i-f-1]=n[s+f];return c}const t=28672;function r(n){if(n.length>t){const i=[];for(let c=0;c<n.length;c+=t)i.push(String.fromCharCode.apply(null,n.subarray(c,c+t)));return i.join("")}else return String.fromCharCode.apply(null,n)}return Tc}var AB;function vJ(){if(AB)return gC;AB=1,Object.defineProperty(gC,"__esModule",{value:!0}),gC.decode=n;const e=YD(),t=QD(),r=Gt();function n(S){let T=S.data;for(let A=S.encoding.length-1;A>=0;A--)T=i(T,S.encoding[A]);return T}function i(S,T){switch(T.kind){case"ByteArray":switch(T.type){case e.Encoding.IntDataType.Uint8:return S;case e.Encoding.IntDataType.Int8:return s(S);case e.Encoding.IntDataType.Int16:return f(S);case e.Encoding.IntDataType.Uint16:return y(S);case e.Encoding.IntDataType.Int32:return _(S);case e.Encoding.IntDataType.Uint32:return g(S);case e.Encoding.FloatDataType.Float32:return a(S);case e.Encoding.FloatDataType.Float64:return d(S);default:(0,r.assertUnreachable)(T.type)}case"FixedPoint":return p(S,T);case"IntervalQuantization":return u(S,T);case"RunLength":return m(S,T);case"Delta":return v(S,T);case"IntegerPacking":return C(S,T);case"StringArray":return l(S,T)}}function c(S,T){switch(S){case e.Encoding.IntDataType.Int8:return new Int8Array(T);case e.Encoding.IntDataType.Int16:return new Int16Array(T);case e.Encoding.IntDataType.Int32:return new Int32Array(T);case e.Encoding.IntDataType.Uint8:return new Uint8Array(T);case e.Encoding.IntDataType.Uint16:return new Uint16Array(T);case e.Encoding.IntDataType.Uint32:return new Uint32Array(T);default:return new Int32Array(T)}}function o(S,T){switch(S){case e.Encoding.FloatDataType.Float32:return new Float32Array(T);case e.Encoding.FloatDataType.Float64:return new Float64Array(T);default:return new Float64Array(T)}}function s(S){return new Int8Array(S.buffer,S.byteOffset)}function h(S,T,A){return t.IsNativeEndianLittle?new A(S.buffer):new A((0,t.flip
7ByteOrder)(S,T))}function f(S){return h(S,2,Int16Array)}function y(S){return h(S,2,Uint16Array)}function _(S){return h(S,4,Int32Array)}function g(S){return h(S,4,Uint32Array)}function a(S){return h(S,4,Float32Array)}function d(S){return h(S,8,Float64Array)}function p(S,T){const A=S.length,x=o(T.srcType,A),M=1/T.factor;for(let D=0;D<A;D++)x[D]=M*S[D];return x}function u(S,T){const A=S.length,x=o(T.srcType,A),M=(T.max-T.min)/(T.numSteps-1),D=T.min;for(let V=0;V<A;V++)x[V]=D+M*S[V];return x}function m(S,T){const A=c(T.srcType,T.srcSize);let x=0;for(let M=0,D=S.length;M<D;M+=2){const V=S[M],R=S[M+1];for(let E=0;E<R;++E)A[x++]=V}return A}function v(S,T){const A=S.length,x=c(T.srcType,A);if(!A)return S;x[0]=S[0]+(T.origin|0);for(let M=1;M<A;++M)x[M]=S[M]+x[M-1];return x}function b(S,T){const A=T.byteCount===1?127:32767,x=-A-1,M=S.length,D=new Int32Array(T.srcSize);let V=0,R=0;for(;V<M;){let E=0,I=S[V];for(;I===A||I===x;)E+=I,V++,I=S[V];E+=I,D[R]=E,V++,R++}return D}function P(S,T){const A=T.byteCount===1?255:65535,x=S.length,M=new Int32Array(T.srcSize);let D=0,V=0;for(;D<x;){let R=0,E=S[D];for(;E===A;)R+=E,D++,E=S[D];R+=E,M[V]=R,D++,V++}return M}function C(S,T){return S.length===T.srcSize?S:T.isUnsigned?P(S,T):b(S,T)}function l(S,T){const A=n({encoding:T.offsetEncoding,data:T.offsets}),x=n({encoding:T.dataEncoding,data:S}),M=T.stringData,D=new Array(A.length);D[0]="";for(let E=1,I=A.length;E<I;E++)D[E]=M.substring(A[E-1],A[E]);let V=0;const R=new Array(x.length);for(let E=0,I=x.length;E<I;E++)R[V++]=D[x[E]+1];return R}return gC}var fo={},hp={},Ta={},MB;function Df(){if(MB)return Ta;MB=1,Object.defineProperty(Ta,"__esModule",{value:!0}),Ta.getMantissaMultiplier=e,Ta.integerDigitCount=t,Ta.getArrayDigitCount=r,Ta.isInteger=n,Ta.getPrecision=i,Ta.toPrecision=c,Ta.toFixed=o;function e(s,h,f){let y=1,_;for(_=0;_<h;_++){const g=y*s;if(Math.abs(Math.round(g)-g)<=f)return _;y*=10}return-1}function t(s,h){return Math.abs(s)<h?0:Math.floor(Math.log10(Math.abs(s)))+1}function r(s,h,f){let y=1,_=0;for(let g=0,a=s.length;g<a;g++){if(y>=0){const p=e(s[g],h,f);p<0?y=-1:p>y&&(y=p)}const d=Math.abs(s[g]);if(d>f){const p=Math.floor(Math.log10(Math.abs(d)))+1;p>_&&(_=p)}}return{mantissaDigits:y,integerDigits:_}}function n(s){s=s.trim();const h=parseInt(s,10);return Number.isNaN(h)?!1:h.toString()===s}function i(s){if(!isFinite(s))return 0;let h=1,f=0;for(;Math.round(s*h)/h!==s;)h*=10,++f;return f}function c(s,h){return parseFloat(s.toPrecision(h))}function o(s,h){return parseFloat(s.toFixed(h))}return Ta}var DB;function ZD(){if(DB)return hp;DB=1,Object.defineProperty(hp,"__esModule",{value:!0}),hp.classifyIntArray=n,hp.classifyFloatArray=i;const e=J$(),t=Df(),r=Gt();function n(s){return c.classify(s)}function i(s){return o.classify(s)}var c;(function(s){function h(P,C){return P>=0?Math.ceil((P+1)/C):Math.ceil((P+1)/(-C-1))}function f(P){let C=!1;for(let l=0,S=P.length;l<S;l++)if(P[l]<0){C=!0;break}return C?{signed:C,limit8:127,limit16:32767}:{signed:C,limit8:255,limit16:65535}}function y(){return{pack8:0,pack16:0,count:0}}function _({limit8:P,limit16:C},l,S){l.pack8+=h(S,P),l.pack16+=h(S,C),l.count+=1}function g(P,C){P.pack8+=h(C,127),P.pack16+=h(C,32767),P.count+=1}function a(P){return P.count*4<P.pack16*2?{length:P.count*4,elem:4}:P.pack16*2<P.pack8?{length:P.pack16*2,elem:2}:{length:P.pack8,elem:1}}function d(P,C){const l=y();for(let S=0,T=P.length;S<T;S++)_(C,l,P[S]);return{...a(l),kind:"pack"}}function p(P,C){const l=y();let S=P[0];for(let T=1,A=P.length;T<A;T++)g(l,P[T]-S),S=P[T];return{...a(l),kind:"delta"}}function u(P,C){const l=y();let S=1;for(let T=1,A=P.length;T<A;T++)P[T-1]!==P[T]?(_(C,l,P[T-1]),_(C,l,S),S=1):S++;return _(C,l,P[P.length-1]),_(C,l,S),{...a(l),kind:"rle"}}function m(P,C){const l=y();let S=1,T=0,A=0;for(let x=1,M=P.length;x<M;x++){const D=P[x]-T;A!==D?(g(l,A),g(l,S),S=1):S++,A=D,T=P[x]}return g(l,A),g(l,S),{...a(l),kind:"delta-rle"}}function v(P){const C=f(P),l=[d(P,C),u(P,C),p(P),m(P)];return l.sort((S,T)=>S.length-T.length),l}s.getSize=v;function b(P){if(P.length<2)return e.ArrayEncoding.by(e.ArrayEncoding.byteArray);const l=v(P)[0];switch(l.kind){case"pack":return e.ArrayEncoding.by(e.ArrayEncoding.integerPacking);case"rle":return e.ArrayEncoding.by(e.ArrayEncoding.runLength).and(e.ArrayEncoding.integerPacking);case"delta":return e.ArrayEncoding.by(e.ArrayEncoding.delta).and(e.ArrayEncoding.integerPacking);case"delta-rle":return e.ArrayEncoding.by(e.ArrayEncoding.delta).and(e.ArrayEncoding.runLength).and(e.ArrayEncoding.integerPacking);default:(0,r.assertUnreachable)(l)}}s.classify=b})(c||(c={}));var o;return(function(s){function f(_){const{mantissaDigits:a,integerDigits:d}=(0,t.getArrayDigitCount)(_,4,1e-6);if(a<0||a+d>10)return e.ArrayEncoding.by(e.ArrayEncoding.byteArray);if(a===0)return c.classify(_);const p=y(a),u=new Int32Array(_.length);for(let P=0,C=_.length;P<C;P++)u[P]=Math.round(p*_[P]);const v=c.getSize(u)[0],b=e.ArrayEncoding.by(e.ArrayEncoding.fixedPoint(p));switch(v.kind){case"pack":return b.and(e.ArrayEncoding.integerPacking);case"rle":return b.and(e.ArrayEncoding.runLength).and(e.ArrayEncoding.integerPacking);case"delta":return b.and(e.ArrayEncoding.delta).and(e.ArrayEncoding.integerPacking);case"delta-rle":return b.and(e.ArrayEncoding.delta).and(e.ArrayEncoding.runLength).and(e.ArrayEncoding.integerPacking);default:(0,r.assertUnreachable)(v)}}s.classify=f;function y(_){let g=1;for(let a=0;a<_;a++)g*=10;return g}})(o||(o={})),hp}var IB;
7function J$(){if(IB)return fo;IB=1,Object.defineProperty(fo,"__esModule",{value:!0}),fo.ArrayEncoding=fo.ArrayEncoder=fo.ArrayEncoderImpl=void 0;const e=_t(),t=YD(),r=ZD();class n{and(s){return new n(this.providers.concat([s]))}encode(s){const h=[];for(const f of this.providers){const y=f(s);if(!y.encodings.length)throw new Error("Encodings must be non-empty.");s=y.data;for(const _ of y.encodings)h.push(_)}if(!(s instanceof Uint8Array))throw new Error("The encoding must result in a Uint8Array. Fix your encoding chain.");return{encoding:h,data:s}}constructor(s){this.providers=s}}fo.ArrayEncoderImpl=n;var i;(function(o){function s(y){return new n([y])}o.by=s;function h(y){let _=s(f(y[0]));for(let g=1;g<y.length&&y[g-1].kind!=="IntegerPacking";g++)_=_.and(f(y[g]));return _}o.fromEncoding=h;function f(y){switch(y.kind){case"ByteArray":return c.byteArray;case"FixedPoint":return c.fixedPoint(y.factor);case"IntervalQuantization":return c.intervalQuantizaiton(y.min,y.max,y.numSteps);case"RunLength":return c.runLength;case"Delta":return c.delta;case"IntegerPacking":return c.integerPacking;case"StringArray":return c.stringArray}}})(i||(fo.ArrayEncoder=i={}));var c;return(function(o){function s(x){return new n([x])}o.by=s;function h(x){return{encodings:[{kind:"ByteArray",type:t.Encoding.IntDataType.Uint8}],data:x}}function f(x){return{encodings:[{kind:"ByteArray",type:t.Encoding.IntDataType.Int8}],data:new Uint8Array(x.buffer,x.byteOffset)}}const y={[t.Encoding.IntDataType.Int16]:function(x,M,D){x.setInt16(2*M,D,!0)},[t.Encoding.IntDataType.Uint16]:function(x,M,D){x.setUint16(2*M,D,!0)},[t.Encoding.IntDataType.Int32]:function(x,M,D){x.setInt32(4*M,D,!0)},[t.Encoding.IntDataType.Uint32]:function(x,M,D){x.setUint32(4*M,D,!0)},[t.Encoding.FloatDataType.Float32]:function(x,M,D){x.setFloat32(4*M,D,!0)},[t.Encoding.FloatDataType.Float64]:function(x,M,D){x.setFloat64(8*M,D,!0)}},_={[t.Encoding.IntDataType.Int16]:2,[t.Encoding.IntDataType.Uint16]:2,[t.Encoding.IntDataType.Int32]:4,[t.Encoding.IntDataType.Uint32]:4,[t.Encoding.FloatDataType.Float32]:4,[t.Encoding.FloatDataType.Float64]:8};function g(x){const M=t.Encoding.getDataType(x);if(M===t.Encoding.IntDataType.Int8)return f(x);if(M===t.Encoding.IntDataType.Uint8)return h(x);const D=new Uint8Array(x.length*_[M]),V=y[M],R=new DataView(D.buffer);for(let E=0,I=x.length;E<I;E++)V(R,E,x[E]);return{encodings:[{kind:"ByteArray",type:M}],data:D}}o.byteArray=g;function a(x,M){const D=t.Encoding.getDataType(x),V=new Int32Array(x.length);for(let R=0,E=x.length;R<E;R++)V[R]=Math.round(x[R]*M);return{encodings:[{kind:"FixedPoint",factor:M,srcType:D}],data:V}}function d(x){return M=>a(M,x)}o.fixedPoint=d;function p(x,M,D,V,R){const E=t.Encoding.getDataType(x);if(!x.length)return{encodings:[{kind:"IntervalQuantization",min:M,max:D,numSteps:V,srcType:E}],data:new Int32Array(0)};if(D<M){const w=M;M=D,D=w}const I=(D-M)/(V-1),B=new R(x.length);for(let w=0,O=x.length;w<O;w++){const F=x[w];F<=M?B[w]=0:F>=D?B[w]=V-1:B[w]=Math.round((F-M)/I)|0}return{encodings:[{kind:"IntervalQuantization",min:M,max:D,numSteps:V,srcType:E}],data:B}}function u(x,M,D,V=Int32Array){return R=>p(R,x,M,D,V)}o.intervalQuantizaiton=u;function m(x){let M=t.Encoding.getDataType(x);if(M===void 0&&(x=new Int32Array(x),M=t.Encoding.IntDataType.Int32),!x.length)return{encodings:[{kind:"RunLength",srcType:M,srcSize:0}],data:new Int32Array(0)};let D=2;for(let I=1,B=x.length;I<B;I++)x[I-1]!==x[I]&&(D+=2);const V=new Int32Array(D);let R=0,E=1;for(let I=1,B=x.length;I<B;I++)x[I-1]!==x[I]?(V[R]=x[I-1],V[R+1]=E,E=1,R+=2):++E;return V[R]=x[x.length-1],V[R+1]=E,{encodings:[{kind:"RunLength",srcType:M,srcSize:x.length}],data:V}}o.runLength=m;function v(x){if(!t.Encoding.isSignedIntegerDataType(x))throw new Error("Only signed integer types can be encoded using delta encoding.");let M=t.Encoding.getDataType(x);if(M===void 0&&(x=new Int32Array(x),M=t.Encoding.IntDataType.Int32),!x.length)return{encodings:[{kind:"Delta",origin:0,srcType:M}],data:new x.constructor(0)};const D=new x.constructor(x.length),V=x[0];D[0]=x[0];for(let R=1,E=x.length;R<E;R++)D[R]=x[R]-x[R-1];return D[0]=0,{encodings:[{kind:"Delta",origin:V,srcType:M}],data:D}}o.delta=v;function b(x){for(let M=0,D=x.length;M<D;M++)if(x[M]<0)return!0;return!1}function P(x,M){let D=0;for(let V=0,R=x.length;V<R;V++)D+=x[V]/M|0;return D+=x.length,D}function C(x,M){const D=-M-1;let V=0;for(let R=0,E=x.length;R<E;R++){const I=x[R];I>=0?V+=I/M|0:V+=I/D|0}return V+=x.length,V}
7function l(x){const M=b(x),D=M?C(x,127):P(x,255),V=M?C(x,32767):P(x,65535);return x.length*4<V*2?{isSigned:M,size:x.length,bytesPerElement:4}:V*2<D?{isSigned:M,size:V,bytesPerElement:2}:{isSigned:M,size:D,bytesPerElement:1}}function S(x,M){const D=M.isSigned?M.bytesPerElement===1?127:32767:M.bytesPerElement===1?255:65535,V=-D-1,R=x.length,E=M.isSigned?M.bytesPerElement===1?new Int8Array(M.size):new Int16Array(M.size):M.bytesPerElement===1?new Uint8Array(M.size):new Uint16Array(M.size);let I=0;for(let w=0;w<R;w++){let O=x[w];if(O>=0)for(;O>=D;)E[I]=D,++I,O-=D;else for(;O<=V;)E[I]=V,++I,O-=V;E[I]=O,++I}const B=g(E);return{encodings:[{kind:"IntegerPacking",byteCount:M.bytesPerElement,isUnsigned:!M.isSigned,srcSize:R},B.encodings[0]],data:B.data}}function T(x){const M=l(x);return M.bytesPerElement===4?g(x):S(x,M)}o.integerPacking=T;function A(x){const M=Object.create(null),D=[],V=new Int32Array(x.length),R=e.ChunkedArray.create(Int32Array,1,Math.min(1024,x.length<32?x.length+1:Math.round(x.length/8)+1));e.ChunkedArray.add(R,0);let E=0,I=0;for(const U of x){if(U==null){V[I++]=-1;continue}let q=M[U];q===void 0&&(E+=U.length,q=D.length,D[q]=U,M[U]=q,e.ChunkedArray.add(R,E)),V[I++]=q}const B=e.ChunkedArray.compact(R),O=(0,r.classifyIntArray)(B).encode(B),L=(0,r.classifyIntArray)(V).encode(V);return{encodings:[{kind:"StringArray",dataEncoding:L.encoding,stringData:D.join(""),offsetEncoding:O.encoding,offsets:O.data}],data:L.data}}o.stringArray=A})(c||(fo.ArrayEncoding=c={})),fo}var wB;function MT(){return wB||(wB=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.decode=void 0;const t=At;var r=vJ();Object.defineProperty(e,"decode",{enumerable:!0,get:function(){return r.decode}}),t.__exportStar(YD(),e),t.__exportStar(J$(),e),t.__exportStar(ZD(),e)})(ax)),ax}var VB;function JD(){if(VB)return lo;VB=1,Object.defineProperty(lo,"__esModule",{value:!0}),lo.Encoder=lo.Category=lo.Field=void 0;const e=kD(),t=MT(),r=Gt();var n;(function(g){let a;(function(P){P[P.Str=0]="Str",P[P.Int=1]="Int",P[P.Float=2]="Float"})(a=g.Type||(g.Type={}));function d(P,C,l){return{name:P,type:a.Str,value:C,valueKind:l&&l.valueKind,defaultFormat:l&&l.encoder?{encoder:l.encoder}:void 0,shouldInclude:l&&l.shouldInclude}}g.str=d;function p(P,C,l){return{name:P,type:a.Int,value:C,valueKind:l&&l.valueKind,defaultFormat:l?{encoder:l.encoder,typedArray:l.typedArray}:void 0,shouldInclude:l&&l.shouldInclude}}g.int=p;function u(P,C,l){return{name:P,type:a.Float,value:C,valueKind:l&&l.valueKind,defaultFormat:l?{encoder:l.encoder,typedArray:l.typedArray,digitCount:typeof l.digitCount<"u"?l.digitCount:void 0}:void 0,shouldInclude:l&&l.shouldInclude}}g.float=u;function m(P){return p(P,(C,l,S)=>S+1,{typedArray:Int32Array,encoder:t.ArrayEncoding.by(t.ArrayEncoding.delta).and(t.ArrayEncoding.runLength).and(t.ArrayEncoding.integerPacking)})}g.index=m;class v{constructor(){this.fields=[]}index(C){return this.fields.push(g.index(C)),this}str(C,l,S){return this.fields.push(g.str(C,l,S)),this}int(C,l,S){return this.fields.push(g.int(C,l,S)),this}vec(C,l,S){for(let T=0;T<l.length;T++)this.fields.push(g.int(`${C}[${T+1}]`,l[T],S));return this}float(C,l,S){return this.fields.push(g.float(C,l,S)),this}many(C){for(let l=0;l<C.length;l++)this.fields.push(C[l]);return this}add(C){return this.fields.push(C),this}getFields(){return this.fields}}g.Builder=v;function b(){return new v}g.build=b})(n||(lo.Field=n={}));var i;(function(g){g.Empty={fields:[],source:[]};function a(p){const u=[],m=[],v=[],b=[];for(let C of p.split(/[\r\n]+/)){if(C=C.trim(),C.length===0)continue;const l=/^!/.test(C);l&&(C=C.substr(1));const S=C.split(/\./),T=S[1],A=l?T?b:m:T?v:u;A[A.length]=C,T&&!u.includes(S[0])&&(u[u.length]=S[0])}const P=v.map(C=>C.split(".")[0]);return{includeCategory(C){return m.includes(C)?!1:u.length<=0||u.indexOf(C)!==-1},includeField(C,l){const S=C+"."+l;return b.includes(S)?!1:!P.includes(C)||v.includes(S)}}}g.filterOf=a,g.DefaultFilter={includeCategory(p){return!0},includeField(p,u){return!0}},g.DefaultFormatter={getFormat(p,u){}};function d(p,u){return u?{fields:_(p._schema),source:[{data:p,rowCount:u.length,keys:()=>e.Iterator.Array(u)}]}:{fields:_(p._schema),source:[{data:p,rowCount:p._rowCount}]}}g.ofTable=d})(i||(lo.Category=i={}));var c;(function(g){function a(p,u,m){p.startDataBlock(u);for(const v of m._tableNames)p.writeCategory({name:v,instance:()=>i.ofTable(m[v])})}g.writeDatabase=a;function d(p,u){for(const m of Object.keys(u))a(p,m,u[m])}g.writeDatabaseCollection=d})(c||(lo.Encoder=c={}));function o(g){return(a,d)=>d[g].value(a)}function s(g){return(a,d)=>d[g].value(a).join(d[g].schema.separator)}function h(g,...a){return(d,p)=>p[g].schema.space.get(p[g].value(d),...a)}function f(g){return(a,d)=>d[g].valueKind(a)}function y(g,a){const d=[],p=n.Type.Float,u=f(g);if(a.rank===1){const m=a.dimensions[0];for(let v=0;v<m;v++){const b=`${g}[${v+1}]`;d.push({name:b,type:p,value:h(g,v),valueKind:u})}}else if(a.rank===2){const m=a.dimensions[0],v=a.dimensions[1];for(let b=0;b<m;b++)for(let P=0;P<v;P++){const C=`${g}[${b+1}][${P+1}]`;d.push({name:C,type:p,value:h(g,b,P),valueKind:u})}}else if(a.rank===3){const m=a.dimensions[0],v=a.dimensions[1],b=a.dimensions[2];for(let P=0;P<m;P++)for(let C=0;C<v;C++)for(let l=0;l<b;l++){const S=`${g}[${P+1}][${C+1}][${l+1}]`;d.push({name:S,type:p,value:h(g,P,C,l),valueKind:u})}}else throw new Error("Tensors with rank > 3 or rank 0 are currently not supported.");return d}function _(g){const a=[];for(const d of Object.keys(g)){const p=g[d];p.valueType==="int"?a.push({name:d,type:n.Type.Int,value:o(d),valueKind:f(d)}):p.valueType==="float"?a.push({name:d,type:n.Type.Float,value:o(d),valueKind:f(d)}):p.valueType==="str"?a.push({name:d,type:n.Type.Str,value:o(d),valueKind:f(d)}):p.valueType==="list"?a.push({name:d,type:n.Type.Str,value:s(d),valueKind:f(d)}):p.valueType==="tensor"?a.push(...y(d,p.space)):(0,r.assertUnreachable)(p.valueType)}return a}return lo}var nd={},ox={},EB;
7function bJ(){return EB||(EB=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Generic=e.Util=e.Iterator=e.Int=e.DB=void 0;const t=At,r=t.__importStar(lt());e.DB=r;const n=t.__importStar(at());e.Int=n;const i=kD();Object.defineProperty(e,"Iterator",{enumerable:!0,get:function(){return i.Iterator}});const c=t.__importStar(_t());e.Util=c;const o=t.__importStar(ha());e.Generic=o})(ox)),ox}var BB;function eX(){if(BB)return nd;BB=1,Object.defineProperty(nd,"__esModule",{value:!0}),nd.getFieldDigitCount=t,nd.getIncludedFields=r,nd.getCategoryInstanceData=n;const e=bJ();function t(i){return i.defaultFormat&&typeof i.defaultFormat.digitCount<"u"?Math.max(0,Math.min(i.defaultFormat.digitCount,16)):6}function r(i){return i.fields.some(c=>!!c.shouldInclude)?i.fields.filter(c=>!c.shouldInclude||i.source.some(o=>c.shouldInclude(o.data))):i.fields}function n(i,c){const o=i.instance(c),s=o.source.filter(y=>y.rowCount>0);if(!s.length)return{instance:o,rowCount:0,source:[]};const h=s.reduce((y,_)=>y+_.rowCount,0),f=s.map(y=>({data:y.data,keys:()=>y.keys?y.keys():e.Iterator.Range(0,y.rowCount-1),rowCount:y.rowCount}));return{instance:o,rowCount:h,source:f}}return nd}var RB;function _J(){if(RB)return pp;RB=1,Object.defineProperty(pp,"__esModule",{value:!0}),pp.TextEncoder=void 0;const e=lt(),t=ED(),r=JD(),n=eX();class i{constructor(){this.builder=t.StringBuilder.create(),this.encoded=!1,this.dataBlockCreated=!1,this.filter=r.Category.DefaultFilter,this.formatter=r.Category.DefaultFormatter,this.isBinary=!1,this.binaryEncodingProvider=void 0}setFilter(v){this.filter=v||r.Category.DefaultFilter}isCategoryIncluded(v){return this.filter.includeCategory(v)}setFormatter(v){this.formatter=v||r.Category.DefaultFormatter}startDataBlock(v){this.dataBlockCreated=!0,t.StringBuilder.write(this.builder,`data_${(v||"").replace(/[ \n\t]/g,"").toUpperCase()}
8#
9`)}writeCategory(v,b,P){if(this.encoded)throw new Error("The writer contents have already been encoded, no more writing.");if(!this.dataBlockCreated)throw new Error("No data block created.");if(!P?.ignoreFilter&&!this.filter.includeCategory(v.name))return;const{instance:C,rowCount:l,source:S}=(0,n.getCategoryInstanceData)(v,b);l&&(l===1?s(v,C,S,this.builder,this.filter,this.formatter):h(v,C,S,this.builder,this.filter,this.formatter))}encode(){this.encoded=!0}writeTo(v){const b=t.StringBuilder.getChunks(this.builder);for(let P=0,C=b.length;P<C;P++)v.writeString(b[P])}getSize(){return t.StringBuilder.getSize(this.builder)}getData(){return t.StringBuilder.getString(this.builder)}}pp.TextEncoder=i;function c(m,v,b,P,C,l){const S=P.valueKind,T=S?S(b,v):e.Column.ValueKinds.Present;if(T!==e.Column.ValueKinds.Present)T===e.Column.ValueKinds.NotPresent?a(m):d(m);else{const A=P.value(b,v,l),x=P.type;if(x===r.Field.Type.Str)return f(A)?(u(m,A),!0):p(m,A);x===r.Field.Type.Int?_(m,A):g(m,A,C)}return!1}function o(m,v,b){const P=[];for(const C of v){const l=b.getFormat(m,C.name);l&&typeof l.digitCount<"u"?P[P.length]=C.type===r.Field.Type.Float?Math.pow(10,Math.max(0,Math.min(l.digitCount,15))):0:P[P.length]=C.type===r.Field.Type.Float?Math.pow(10,(0,n.getFieldDigitCount)(C)):0}return P}function s(m,v,b,P,C,l){const S=(0,n.getIncludedFields)(v),T=b[0],A=T.data;let x=S.reduce((R,E)=>C.includeField(m.name,E.name)?Math.max(R,E.name.length):0,0);if(x===0)return;x+=m.name.length+6;const D=T.keys().move(),V=o(m.name,v.fields,l);for(let R=0;R<S.length;R++){const E=S[R];if(!C.includeField(m.name,E.name))continue;t.StringBuilder.writePadRight(P,`_${m.name}.${E.name}`,x),c(P,A,D,E,V[R],0)||t.StringBuilder.newline(P)}t.StringBuilder.write(P,`#
10`)}function h(m,v,b,P,C,l){const S=(0,n.getIncludedFields)(v),T=C===r.Category.DefaultFilter?S:S.filter(D=>C.includeField(m.name,D.name)),A=T.length;if(A===0)return;const x=o(m.name,T,l);y(P,"loop_");for(let D=0;D<A;D++)y(P,`_${m.name}.${T[D].name}`);let M=0;for(let D=0;D<b.length;D++){const V=b[D],R=V.data;if(V.rowCount===0)continue;const E=V.keys();for(;E.hasNext;){const I=E.move();let B=!1;for(let w=0;w<A;w++)B=c(P,R,I,T[w],x[w],M);B||t.StringBuilder.newline(P),M++}}t.StringBuilder.write(P,`#
11`)}function f(m){return typeof m=="string"&&m.indexOf(`
12`)>=0}function y(m,v){t.StringBuilder.write(m,v),t.StringBuilder.newline(m)}function _(m,v){t.StringBuilder.writeInteger(m,v),t.StringBuilder.whitespace1(m)}function g(m,v,b){t.StringBuilder.writeFloat(m,v,b),t.StringBuilder.whitespace1(m)}function a(m){t.StringBuilder.writeSafe(m,". ")}function d(m){t.StringBuilder.writeSafe(m,"? ")}function p(m,v){if(!v)return t.StringBuilder.writeSafe(m,". "),!1;const b=v.charCodeAt(0);let P=!1,C=0,l=!1,S=!1;for(let T=0,A=v.length-1;T<=A;T++)switch(v.charCodeAt(T)){case 9:P=!0;break;case 10:return u(m,v),!0;case 32:P=!0;break;case 34:if(T&&T===A)break;if(l)return u(m,v),!0;S=!0,P=!0,C=0;break;case 39:if(T&&T===A)break;if(S)return u(m,v),!0;l=!0,P=!0,C=1;break}return!P&&(b===35||b===36||b===59||b===91||b===93||b===95)&&(P=!0),P?(t.StringBuilder.writeSafe(m,C?'"':"'"),t.StringBuilder.writeSafe(m,v),t.StringBuilder.writeSafe(m,C?'" ':"' ")):(t.StringBuilder.writeSafe(m,v),t.StringBuilder.writeSafe(m," ")),!1}function u(m,v){t.StringBuilder.writeSafe(m,`
13;`+v),t.StringBuilder.writeSafe(m,`
14;
15`)}return pp}var gp={},yC={},xc={},sx={},OB;function nS(){return OB||(OB=1,(function(e){Object.defineProperty(e,"__esMo
15dule",{value:!0}),e.ChunkedBigString=e.MAX_STRING_LENGTH=e.StringLike=void 0;const t=$s();e.StringLike={is(i){return typeof i.charCodeAt=="function"},toString(i){try{return i.toString()}catch(c){throw new Error(`Failed to convert StringLike object into string. This might be because the length ${i.length} exceeds maximum allowed string length ${e.MAX_STRING_LENGTH}. (${c})`)}}},e.MAX_STRING_LENGTH=536870888;const r=28;class n{get length(){return this._length}constructor(c=r){this._chunks=[],this._length=0,this._tmpArray=[],this.STRING_CHUNK_SIZE=2**c,this.STRING_CHUNK_SHIFT=c,this.STRING_CHUNK_MASK=2**c-1}static fromString(c,o=r){const s=new n(o);return s._append(c),s}static fromStrings(c,o=r){const s=new n(o);for(const h of c)s._append(h);return s}static fromUtf8Data(c,o=0,s=c.length,h=r){const f=2**h,y=[];let _=o;for(;_<s;){let g=Math.min(_+f,s);if(g<s){for(;(c[g]&192)===128;)if(g--,g===_)throw new Error("Input is rubbish, no UTF-8 character start found in a chunk")}const a=(0,t.utf8Read)(c,_,g-_);y.push(a),_=g}return n.fromStrings(y,h)}_append(c){const o=this.STRING_CHUNK_SIZE,s=this._chunks.length===0||this._chunks[this._chunks.length-1].length===o?"":this._chunks.pop();let h=o-s.length;for(this._chunks.push(s+c.substring(0,h));h<c.length;)this._chunks.push(c.substring(h,h+o)),h+=o;this._length+=c.length}_getChunkIndex(c){return c>>>this.STRING_CHUNK_SHIFT}_getIndexInChunk(c){return c&this.STRING_CHUNK_MASK}_isOutOfRange(c){return c<0||c>=this.length}at(c){return-this.length<=c&&c<0?this.at(c+this.length):this.charAt(c)||void 0}charAt(c){if(this._isOutOfRange(c))return"";const o=this._getChunkIndex(c),s=this._getIndexInChunk(c);return this._chunks[o][s]}charCodeAt(c){if(this._isOutOfRange(c))return NaN;const o=this._getChunkIndex(c),s=this._getIndexInChunk(c);return this._chunks[o].charCodeAt(s)}substring(c,o){const s=Math.min(Math.max(c??0,0),this.length),h=Math.min(Math.max(o??this.length,0),this.length);if(s>h)return this.substring(h,s);if(s===h)return"";if(h-s>e.MAX_STRING_LENGTH)throw new Error(`Trying to create get a substring longer (${h-s}) than maximum allowed string length (${e.MAX_STRING_LENGTH}).`);const f=this._getChunkIndex(s),y=this._getIndexInChunk(s),_=this._getChunkIndex(h),g=this._getIndexInChunk(h);if(f===_)return this._chunks[f].substring(y,g);{const a=this._getTmpArray();a.push(this._chunks[f].substring(y,this.STRING_CHUNK_SIZE));for(let d=f+1;d<_;d++)a.push(this._chunks[d]);return a.push(this._chunks[_].substring(0,g)),a.join("")}}_getTmpArray(){for(;this._tmpArray.length;)this._tmpArray.pop();return this._tmpArray}indexOf(c,o=0){if(c.length>this.STRING_CHUNK_SIZE)throw new Error("NotImplementedError: indexOf is only implemented for searchString shorter than STRING_CHUNK_SIZE");o<0&&(o=0);const s=this._getChunkIndex(o);for(let h=s;h<this._chunks.length;h++){const f=this._chunks[h],y=h===s?this._getIndexInChunk(o):0,_=f.indexOf(c,y);if(_>=0)return h*this.STRING_CHUNK_SIZE+_;if(h!==this._chunks.length-1){const g=Math.max(this.STRING_CHUNK_SIZE-c.length+1,y),d=(f.substring(g,void 0)+this._chunks[h+1].substring(0,c.length-1)).indexOf(c);if(d>=0)return h*this.STRING_CHUNK_SIZE+g+d}}return-1}includes(c,o=0){return this.indexOf(c,o)>=0}startsWith(c,o=0){if(c.length>this.STRING_CHUNK_SIZE)throw new Error("NotImplementedError: startsWith is only implemented for searchString shorter than STRING_CHUNK_SIZE");return this.substring(o,o+c.length)===c}toString(){try{return this._chunks.join("")}catch(c){throw new Error(`Failed to convert StringLike object into string. This might be because the length ${this.length} exceeds maximum allowed string length ${e.MAX_STRING_LENGTH}. (${c})`)}}}e.ChunkedBigString=n})(sx)),sx}var kB;function $s(){if(kB)return xc;kB=1,Object.defineProperty(xc,"__esModule",{value:!0}),xc.utf8Write=t,xc.utf8Read=o,xc.utf8ReadLong=s,xc.utf8ByteCount=h;const e=nS();function t(f,y,_){for(let g=0,a=_.length;g<a;g++){const d=_.charCodeAt(g);if(d<128){f[y++]=d>>>0&127|0;continue}if(d<2048){f[y++]=d>>>6&31|192,f[y++]=d>>>0&63|128;continue}if(d<65536){f[y++]=d>>>12&15|224,f[y++]=d>>>6&63|128,f[y++]=d>>>0&63|128;continue}if(d<1114112){f[y++]=d>>>18&7|240,f[y++]=d>>>12&63|128,f[y++]=d>>>6&63|128,f[y++]=d>>>0&63|128;continue}throw new Error("bad codepoint "+d)}}const r=(function(){const f=[];for(let y=0;y<1024;y++)f[y]=String.fromCharCode(y);return f})();function n(f){throw new Error(f)}function i(f,y,_){const g=r;let a,d=0;const p=[],u=512;for(let m=y,v=y+_;m<v;m++){const b=f[m];(b&128)===0?p[d++]=g[b]:(b&224)===192?p[d++]=g[(b&15)<<6|f[++m]&63]:(b&240)===224?p[d++]=String.fromCharCode((b&15)<<12|(f[++m]&63)<<6|(f[++m]&63)<<0):(b&248)===240?p[d++]=String.fromCharCode((b&7)<<18|(f[++m]&63)<<12|(f[++m]&63)<<6|(f[++m]&63)<<0):n("Invalid byte "+b.toString(16)),d===u&&(a=a||[],a[a.length]=p.join(""),d=0)}return a?(d>0&&(a[a.length]=p.slice(0,d).join("")),a.join("")):p.slice(0,d).join("")}const c=typeof TextDecoder<"u"?new TextDecoder:void 0;function o(f,y=0,_=f.length){if(c){const g=y||_!==f.length?f.subarray(y,y+_):f;return c.decode(g)}else return i(f,y,_)}function s(f,y=0,_=f.length){if(_<=e.MAX_STRING_LENGTH)return o(f,y,_);const g=e.ChunkedBigString.fromUtf8Data(f,y,y+_);return g.length<=e.MAX_STRING_LENGTH?g.toString():g}function h(f){let y=0;for(let _=0,g=f.length;_<g;_++){const a=f.charCodeAt(_);if(a<128){y+=1;continue}if(a<2048){y+=2;continue}if(a<65536){y+=3;continue}if(a<1114112){y+=4;continue}n("bad codepoint "+a)}return y}return xc}var FB;
15function SJ(){if(FB)return yC;FB=1,Object.defineProperty(yC,"__esModule",{value:!0}),yC.encodeMsgPack=t;const e=$s();function t(i){const c=new ArrayBuffer(r(i)),o=new DataView(c),s=new Uint8Array(c);return n(i,o,s,0),s}function r(i){const c=typeof i;if(c==="string"){const o=(0,e.utf8ByteCount)(i);if(o<32)return 1+o;if(o<256)return 2+o;if(o<65536)return 3+o;if(o<4294967296)return 5+o}if(i instanceof Uint8Array){const o=i.byteLength;if(o<256)return 2+o;if(o<65536)return 3+o;if(o<4294967296)return 5+o}if(c==="number"){if(Math.floor(i)!==i)return 9;if(i>=0){if(i<128)return 1;if(i<256)return 2;if(i<65536)return 3;if(i<4294967296)return 5;throw new Error("Number too big 0x"+i.toString(16))}if(i>=-32)return 1;if(i>=-128)return 2;if(i>=-32768)return 3;if(i>=-2147483648)return 5;throw new Error("Number too small -0x"+i.toString(16).substr(1))}if(c==="boolean"||i===null||i===void 0)return 1;if(c==="object"){let o,s=0;if(Array.isArray(i)){o=i.length;for(let h=0;h<o;h++)s+=r(i[h])}else{const h=Object.keys(i);o=h.length;for(let f=0;f<o;f++){const y=h[f];s+=r(y)+r(i[y])}}if(o<16)return 1+s;if(o<65536)return 3+s;if(o<4294967296)return 5+s;throw new Error("Array or object too long 0x"+o.toString(16))}throw new Error("Unknown type "+c)}function n(i,c,o,s){const h=typeof i;if(h==="string"){const f=(0,e.utf8ByteCount)(i);if(f<32)return c.setUint8(s,f|160),(0,e.utf8Write)(o,s+1,i),1+f;if(f<256)return c.setUint8(s,217),c.setUint8(s+1,f),(0,e.utf8Write)(o,s+2,i),2+f;if(f<65536)return c.setUint8(s,218),c.setUint16(s+1,f),(0,e.utf8Write)(o,s+3,i),3+f;if(f<4294967296)return c.setUint8(s,219),c.setUint32(s+1,f),(0,e.utf8Write)(o,s+5,i),5+f}if(i instanceof Uint8Array){const f=i.byteLength,y=new Uint8Array(c.buffer);if(f<256)return c.setUint8(s,196),c.setUint8(s+1,f),y.set(i,s+2),2+f;if(f<65536)return c.setUint8(s,197),c.setUint16(s+1,f),y.set(i,s+3),3+f;if(f<4294967296)return c.setUint8(s,198),c.setUint32(s+1,f),y.set(i,s+5),5+f}if(h==="number"){if(!isFinite(i))throw new Error("Number not finite: "+i);if(Math.floor(i)!==i)return c.setUint8(s,203),c.setFloat64(s+1,i),9;if(i>=0){if(i<128)return c.setUint8(s,i),1;if(i<256)return c.setUint8(s,204),c.setUint8(s+1,i),2;if(i<65536)return c.setUint8(s,205),c.setUint16(s+1,i),3;if(i<4294967296)return c.setUint8(s,206),c.setUint32(s+1,i),5;throw new Error("Number too big 0x"+i.toString(16))}if(i>=-32)return c.setInt8(s,i),1;if(i>=-128)return c.setUint8(s,208),c.setInt8(s+1,i),2;if(i>=-32768)return c.setUint8(s,209),c.setInt16(s+1,i),3;if(i>=-2147483648)return c.setUint8(s,210),c.setInt32(s+1,i),5;throw new Error("Number too small -0x"+(-i).toString(16).substr(1))}if(i==null)return c.setUint8(s,192),1;if(h==="boolean")return c.setUint8(s,i?195:194),1;if(h==="object"){let f,y=0;const _=Array.isArray(i);let g;if(_?f=i.length:(g=Object.keys(i),f=g.length),f<16?(c.setUint8(s,f|(_?144:128)),y=1):f<65536?(c.setUint8(s,_?220:222),c.setUint16(s+1,f),y=3):f<4294967296&&(c.setUint8(s,_?221:223),c.setUint32(s+1,f),y=5),_)for(let a=0;a<f;a++)y+=n(i[a],c,o,s+y);else for(let a=0,d=g.length;a<d;a++){const p=g[a];y+=n(p,c,o,s+y),y+=n(i[p],c,o,s+y)}return y}throw new Error("Unknown type "+h)}return yC}var LB;function CJ(){if(LB)return gp;LB=1,Object.defineProperty(gp,"__esModule",{value:!0}),gp.BinaryEncoder=void 0;const e=lt(),t=SJ(),r=MT(),n=JD(),i=eX(),c=ZD();class o{setFilter(d){this.filter=d||n.Category.DefaultFilter}isCategoryIncluded(d){return this.filter.includeCategory(d)}setFormatter(d){this.formatter=d||n.Category.DefaultFormatter}startDataBlock(d){this.dataBlocks.push({header:(d||"").replace(/[ \n\t]/g,"").toUpperCase(),categories:[]})}writeCategory(d,p,u){if(!this.data)throw new Error("The writer contents have already been encoded, no more writing.");if(!this.dataBlocks.length)throw new Error("No data block created.");if(!u?.ignoreFilter&&!this.filter.includeCategory(d.name))return;const{instance:m,rowCount:v,source:b}=(0,i.getCategoryInstanceData)(d,p);if(!v)return;const P={name:"_"+d.name,columns:[],rowCount:v},C=(0,i.getIncludedFields)(m);for(const l of C){if(!this.filter.includeField(d.name,l.name))continue;const S=this.formatter.getFormat(d.name,l.name);P.columns.push(_(d.name,l,b,v,S,this.binaryEncodingProvider,this.autoClassify))}P.columns.length&&this.dataBlocks[this.dataBlocks.length-1].categories.push(P)}encode(){this.encodedData||(this.encodedData=(0,t.encodeMsgPack)(this.data),this.data=null,this.dataBlocks=null)}writeTo(d){d.writeBinary(this.encodedData)}getData(){return this.encode(),this.encodedData}getSize(){return this.encodedData.length}constructor(d,p,u){this.autoClassify=u,this.dataBlocks=[],this.filter=n.Category.DefaultFilter,this.formatter=n.Category.DefaultFormatter,this.isBinary=!0,this.binaryEncodingProvider=void 0,this.binaryEncodingProvider=p,this.data={encoder:d,version:r.VERSION,dataBlocks:this.dataBlocks}}}gp.BinaryEncoder=o;function s(a,d){return d&&d.typedArray?d.typedArray:a.defaultFormat&&a.defaultFormat.typedArray?a.defaultFormat.typedArray:a.type===n.Field.Type.Str?Array:a.type===n.Field.Type.Int?Int32Array:Float64Array}function h(a){return a===n.Field.Type.Str?r.ArrayEncoder.by(r.ArrayEncoding.stringArray):r.ArrayEncoder.by(r.ArrayEncoding.byteArray)}function f(a,d,p,u){return p&&p.encoder?p.encoder:d.defaultFormat&&d.defaultFormat.encoder?d.defaultFormat.encoder:u?u.get(a,d.name):void 0}function y(a,d){return a===n.Field.Type.Str?r.ArrayEncoder.by(r.ArrayEncoding.stringArray):a===n.Field.Type.Int?(0,c.classifyIntArray)(d):(0,c.classifyFloatArray)(d)}function _(a,d,p,u,m,v,b){const{array:P,allPresent:C,mask:l}=g(d,s(d,m),u,p);let S;d.type===n.Field.Type.Str?S=r.ArrayEncoder.by(r.ArrayEncoding.stringArray):S=f(a,d,m,v),S||(b?S=y(d.type,P):S=h(d.type));const T=S.encode(P);let A;if(!C){const x=r.ArrayEncoder.by(r.ArrayEncoding.runLength).and(r.ArrayEncoding.byteArray).encode(l);x.data.length<l.length?A=x:A=r.ArrayEncoder.by(r.ArrayEncoding.byteArray).encode(l)}return{name:d.name,data:T,mask:A}}function g(a,d,p,u){const m=a.type===n.Field.Type.Str,v=new d(p),b=new Uint8Array(p),P=a.valueKind,C=a.value;let l=!0,S=0;for(let T=0;T<u.length;T++){const A=u[T].data,x=u[T].keys();for(;x.hasNext;){const M=x.move(),D=P?P(M,A):e.Column.ValueKinds.Present;if(D!==e.Column.ValueKinds.Present)b[S]=D,m&&(v[S]=""),l=!1;else{const V=C(M,A,S);typeof V=="string"&&!V?(b[S]=e.Column.ValueKinds.NotPresent,l=!1):b[S]=e.Column.ValueKinds.Present,v[S]=V}S++}}return{array:v,allPresent:l,mask:b}}return gp}var NB;
15function $i(){if(NB)return mp;NB=1,Object.defineProperty(mp,"__esModule",{value:!0}),mp.CifWriter=void 0;const e=At,t=_J(),r=CJ(),n=e.__importStar(JD()),i=MT();var c;return(function(o){o.Encoder=n.Encoder,o.Category=n.Category,o.Field=n.Field,o.Encoding=i.ArrayEncoding;function s(d){const{binary:p=!1,encoderName:u="mol*"}=d||{};return p?new r.BinaryEncoder(u,d?d.binaryEncodingPovider:void 0,d?!!d.binaryAutoClassifyEncoding:!1):new t.TextEncoder}o.createEncoder=s;function h(){return o.Field.build()}o.fields=h;var f=o.Encoding;o.Encodings={deltaRLE:f.by(f.delta).and(f.runLength).and(f.integerPacking),fixedPoint2:f.by(f.fixedPoint(100)).and(f.delta).and(f.integerPacking),fixedPoint3:f.by(f.fixedPoint(1e3)).and(f.delta).and(f.integerPacking)};function y(d,p){return{fields:d,source:[p]}}o.categoryInstance=y;function _(d){return{get(p,u){const m=d.categories[p];if(!m)return;const v=m.getField(u);return v&&v.binaryEncoding?i.ArrayEncoder.fromEncoding(v.binaryEncoding):void 0}}}o.createEncodingProviderFromCifFrame=_;function g(d){return{get(p,u){for(let m=0;m<d.length;m++){const v=d[m];if(v.categoryName===p&&v.columnName===u)return a(v)}}}}o.createEncodingProviderFromJsonConfig=g;function a(d){const p=d.precision;if(p!==void 0){const u=Math.pow(10,p),m=f.by(f.fixedPoint(u));switch(d.encoding){case"pack":return m.and(f.integerPacking);case"rle":return m.and(f.runLength).and(f.integerPacking);case"delta":return m.and(f.delta).and(f.integerPacking);case"delta-rle":return m.and(f.delta).and(f.runLength).and(f.integerPacking)}}else switch(d.encoding){case"pack":return f.by(f.integerPacking);case"rle":return f.by(f.runLength).and(f.integerPacking);case"delta":return f.by(f.delta).and(f.integerPacking);case"delta-rle":return f.by(f.delta).and(f.runLength).and(f.integerPacking)}throw new Error("cannot be reached")}})(c||(mp.CifWriter=c={})),mp}var qB;function tX(){if(qB)return fp;qB=1,Object.defineProperty(fp,"__esModule",{value:!0}),fp.ComponentBond=void 0;const e=dt(),t=bl(),r=$i(),n=lt(),i=as();var c;return(function(o){o.Descriptor={name:"chem_comp_bond",cifExport:{prefix:"",categories:[{name:"chem_comp_bond",instance(g){const a=o.Provider.get(g.firstModel);if(!a)return r.CifWriter.Category.Empty;const d=a.data;if(!d)return r.CifWriter.Category.Empty;const p=g.structures[0].uniqueResidueNames,{comp_id:u,_rowCount:m}=d,v=[];for(let b=0;b<m;b++)p.has(u.value(b))&&(v[v.length]=b);return r.CifWriter.Category.ofTable(d,v)}}]}},o.Provider=i.FormatPropertyProvider.create(o.Descriptor);function s(g,a){return n.Table.pick(a,t.mmCIF_Schema.chem_comp_bond,d=>g.properties.chemicalComponentMap.has(a.comp_id.value(d)))}o.chemCompBondFromTable=s;function h(g){const a=new Map;function d(S){if(a.has(S))return a.get(S);const T=new _(S);return a.set(S,T),T}const{comp_id:p,atom_id_1:u,atom_id_2:m,value_order:v,pdbx_aromatic_flag:b,_rowCount:P,pdbx_ordinal:C}=g;let l=d(p.value(0));for(let S=0;S<P;S++){const T=p.value(S),A=u.value(S),x=m.value(S),M=v.value(S),D=b.value(S)==="y",V=C.value(S);l.compId!==T&&(l=d(T));let R=e.BondType.Flag.Covalent,E=1;switch(D&&(R|=e.BondType.Flag.Aromatic),M.toLowerCase()){case"delo":R|=e.BondType.Flag.Aromatic;break;case"doub":E=2;break;case"trip":E=3;break;case"quad":E=4;break}l.add(A,x,E,R,V)}return a}o.getEntriesFromChemCompBond=h;function f(g,a,d,p){return p&&d.startsWith("D")&&a!=="DOD"&&(d="H"+d.substring(1)),g.get(d)}class y{get(a,d){return f(this.map,this.compId,a,d)}constructor(a,d){this.atomId=a,this.compId=d,this.map=new Map}}o.Pairs=y;class _{add(a,d,p,u,m,v=!0){const b=this.map.get(a);if(b!==void 0)b.map.get(d)===void 0&&b.map.set(d,{order:p,flags:u,key:m});else{const P=new y(a,this.compId);P.map.set(d,{order:p,flags:u,key:m}),this.map.set(a,P)}v&&this.add(d,a,p,u,m,!1)}get(a,d){return f(this.map,this.compId,a,d)}constructor(a){this.compId=a,this.map=new Map}}o.Entry=_})(c||(fp.ComponentBond=c={})),fp}var yp={},UB;function DT(){if(UB)return yp;UB=1,Object.defineProperty(yp,"__esModule",{value:!0}),yp.StructConn=void 0;const e=dt(),t=lt(),r=at(),n=$i(),i=KD(),c=as();var o;return(function(s){s.Descriptor={name:"struct_conn",cifExport:{prefix:"",categories:[{name:"struct_conn",instance(g){const a=s.Provider.get(g.firstModel);if(!a||a.entries.length===0)return n.CifWriter.Category.Empty;const d=g.structures[0],p=[];for(const u of a.entries)f(d,u.partnerA.atomIndex)&&f(d,u.partnerB.atomIndex)&&(p[p.length]=u.rowIndex);return n.CifWriter.Category.ofTable(a.data,p)}}]}},s.Provider=c.FormatPropertyProvider.create(s.Descriptor);function h(g){const a=s.Provider.get(g);return!!a&&a.entries.length/g.atomicConformation.atomId.rowCount>.95}s.isExhaustive=h;function f({units:g},a){for(let d=0,p=g.length;d<p;d++)if(r.SortedArray.indexOf(g[d].elements,a)>=0)return!0;return!1}function y(g){const a=new Map;for(const d of g){const{partnerA:{atomIndex:p},partnerB:{atomIndex:u}}=d;a.has(p)?a.get(p).push(d):a.set(p,[d]),a.has(u)?a.get(u).push(d):a.set(u,[d])}return a}s.getAtomIndexFromEntries=y;function _(g,a){const{conn_type_id:d,pdbx_dist_value:p,pdbx_value_order:u}=g,m={label_asym_id:g.ptnr1_label_asym_id,label_seq_id:g.ptnr1_label_seq_id,auth_seq_id:g.ptnr1_auth_seq_id,label_atom_id:g.ptnr1_label_atom_id,label_alt_id:g.pdbx_ptnr1_label_alt_id,ins_code:g.pdbx_ptnr1_PDB_ins_code,symmetry:g.ptnr1_symmetry},v={label_asym_id:g.ptnr2_label_asym_id,label_seq_id:g.ptnr2_label_seq_id,auth_seq_id:g.ptnr2_auth_seq_id,label_atom_id:g.ptnr2_label_atom_id,label_alt_id:g.pdbx_ptnr2_label_alt_id,ins_code:g.pdbx_ptnr2_PDB_ins_code,symmetry:g.ptnr2_symmetry},b=Array.from(a.entities.data.id.toArray()),P=(l,S)=>{if(S.label_asym_id.valueKind(l)!==t.Column.ValueKinds.Present)return;const T=S.label_asym_id.value(l),A=S.label_atom_id.value(l);if(!A)return;const x=S.auth_seq_id.valueKind(l)===t.Column.ValueKind.Present?S.auth_seq_id.value(l):S.label_seq_id.value(l),M=S.ins_code.value(l),D=S.label_alt_id.value(l);for(const V of b){const R=a.atomicHierarchy.index.findResidue(V,T,x,M);if(R<0)continue;const E=a.atomicHierarchy.index.findAtomOnResidue(R,A,D);if(!(E<0))return{residueIndex:R,atomIndex:E,symmetry:S.symmetry.value(l)}}},C=[];for(let l=0;l<g._rowCount;l++){const S=P(l,m),T=P(l,v);if(S===void 0||T===void 0)continue;const A=d.value(l),x=u.value(l)||"";let M=e.BondType.Flag.None,D=1;switch(x){case"sing":D=1;break;case"doub":D=2;break;case"trip":D=3;break;case"quad":D=4;break;default:D=(0,i.getInterBondOrderFromTable)(g.ptnr1_label_comp_id.value(l),g.ptnr1_label_atom_id.value(l),g.ptnr2_label_comp_id.value(l),g.ptnr2_label_atom_id.value(l))}switch(A){case"covale":M=e.BondType.Flag.Covalent;break;case"disulf":M=e.BondType.Flag.Covalent|e.BondType.Flag.Disulfide;break;case"hydrog":M=e.BondType.Flag.HydrogenBond;break;case"metalc":M=e.BondType.Flag.MetallicCoordination;break}C.push({rowIndex:l,flags:M,order:D,distance:p.value(l),partnerA:S,partnerB:T})}return C}s.getEntriesFromStructConn=_})(o||(yp.StructConn=o={})),yp}var jB;function PJ(){if(jB)return hC;jB=1,Object.defineProperty(hC,"__esModule",{value:!0}),hC.computeIntraUnitBonds=x;const e=dt(),t=XD(),r=is(),n=AT(),i=at(),c=KD(),o=Ua(),s=tX(),h=DT(),f=Ge(),y=rn(),_=NT(),g=_t(),a=f.Vec3.distance,d=6,p=5.5,u=3.9;function m(M,D,V,R,E,I,B){const w=new r.IntAdjacencyGraph.EdgeBuilder(I,M,D),O=new 
15Uint16Array(w.slotCount),F=new Int8Array(w.slotCount),L=new Uint32Array(w.slotCount);for(let U=0,q=w.edgeCount;U<q;U++)w.addNextEdge(),w.assignProperty(O,R[U]),w.assignProperty(F,V[U]),w.assignProperty(L,E[U]);return w.createGraph({flags:O,order:F,key:L},B)}const v=(0,f.Vec3)(),b=(0,f.Vec3)();function P(M,D,V){return M.conformation.position(D,v),M.conformation.position(V,b),a(v,b)}const C=new Set;function l(M){const D=o.IndexPairBonds.Provider.get(M.model),{elements:V}=M,{type_symbol:R}=M.model.atomicHierarchy.atoms,E=M.elements.length,{maxDistance:I}=D,{offset:B,b:w,edgeProps:{order:O,distance:F,flag:L,key:U,operatorA:q,operatorB:N}}=D.bonds,{atomSourceIndex:k}=M.model.atomicHierarchy,{invertedIndex:j}=_.Model.getInvertedAtomSourceIndex(M.model),H=[],G=[],z=[],W=[],X=[],Y=M.conformation.operator.key;for(let K=0;K<E;K++){const Q=V[K],J=(0,n.getElementIdx)(R.value(Q)),ae=(0,n.isHydrogen)(J),te=k.value(Q);for(let ne=B[te],$=B[te+1];ne<$;++ne){const ie=j[w[ne]];if(Q>=ie)continue;const Z=i.SortedArray.indexOf(M.elements,ie);if(Z<0)continue;const re=q[ne],oe=N[ne];if(re>=0&&re!==Y||oe>=0&&oe!==Y)continue;const ce=(0,n.getElementIdx)(R.value(ie)),ue=F[ne],pe=P(M,Q,ie);let he=!1;if(ue>=0)he=(0,y.equalEps)(pe,ue,.3);else if(I>=0)he=pe<I;else{const fe=(0,n.getPairingThreshold)(J,ce,(0,n.getElementThreshold)(J),(0,n.getElementThreshold)(ce));he=pe<fe,ae&&(0,n.isHydrogen)(ce)&&(he=!1)}he&&(H[H.length]=K,G[G.length]=Z,W[W.length]=O[ne],z[z.length]=L[ne],X[X.length]=U[ne])}}return m(H,G,W,z,X,E,{canRemap:!1,cacheable:D.cacheable})}function S(M,D){const V=_.Model.isCoarseGrained(M.model),R=V?d:D.maxRadius,{x:E,y:I,z:B}=M.model.atomicConformation,w=M.elements.length,{elements:O,residueIndex:F,chainIndex:L}=M,{type_symbol:U,label_atom_id:q,label_alt_id:N,label_comp_id:k}=M.model.atomicHierarchy.atoms,{label_seq_id:j}=M.model.atomicHierarchy.residues,{traceElementIndex:H}=M.model.atomicHierarchy.derived.residue,{index:G}=M.model.atomicHierarchy,{byEntityKey:z}=M.model.sequence,W=M.lookup3d,X=h.StructConn.Provider.get(M.model),Y=s.ComponentBond.Provider.get(M.model),K=h.StructConn.isExhaustive(M.model),Q=[],J=[],ae=[],te=[],ne=[];let $=-1,ie,Z=!0,re=!0,oe=!0;const ce=C,ue=!!X?.residueCantorPairs.size;for(let pe=0;pe<w;pe++){const he=O[pe],fe=U.value(he);Z&&fe!=="H"&&fe!=="O"&&(Z=!1);const de=D.forceCompute?void 0:X&&X.byAtomIndex.get(he);let ge=!1;if(de)for(const Be of de){const{partnerA:Me,partnerB:Re}=Be;if(Me.symmetry!==Re.symmetry)continue;const Te=Me.atomIndex===he?Re:Me,Ve=i.SortedArray.indexOf(M.elements,Te.atomIndex);Ve<0||O[Ve]<he||(Q[Q.length]=pe,J[J.length]=Ve,ae[ae.length]=Be.flags,te[te.length]=Be.order,ne[ne.length]=Be.rowIndex,ge||ce.clear(),ge=!0,ce.add(Ve))}if(K)continue;const Ce=F[he],ve=j.value(Ce),le=k.value(he);if(!D.forceCompute&&Ce!==$)if(Y&&Y.entries.has(le)){const Be=z[G.getEntityFromChain(L[he])];Be&&Be.sequence.microHet.has(ve)?ie=void 0:ie=Y.entries.get(le)}else ie=void 0;$=Ce;const me=(0,n.getElementIdx)(fe),ee=(0,n.isHydrogen)(me),se=q.value(he),ye=ie?ie.get(se,ee):void 0,{indices:Se,count:Ae,squaredDistances:_e}=W.find(E[he],I[he],B[he],R),be=(0,n.getElementThreshold)(me),xe=N.value(he),we=n.MetalsSet.has(me);for(let Be=0;Be<Ae;Be++){const Me=Se[Be];if(ge&&ce.has(Me))continue;const Re=O[Me];if(Re<=he)continue;const Te=N.value(Re);if(xe&&Te&&xe!==Te)continue;if(ue){const De=(0,g.sortedCantorPairing)(F[he],F[Re]);if(X.residueCantorPairs.has(De))continue}const Ve=(0,n.getElementIdx)(U.value(Re)),qe=(0,n.isHydrogen)(Ve);if(ee&&qe)continue;const ke=(we||n.MetalsSet.has(Ve))&&!(ee||qe),ze=F[Re];if(Ce===ze&&ye){const De=ye.get(q.value(Re),qe);if(De){Q[Q.length]=pe,J[J.length]=Me,te[te.length]=De.order;let Oe=De.flags;ke&&(Oe|e.BondType.Flag.Covalent&&(Oe^=e.BondType.Flag.Covalent),Oe|=e.BondType.Flag.MetallicCoordination),ae[ae.length]=Oe,ne[ne.length]=De.key}continue}const We=Math.sqrt(_e[Be]);if(We===0)continue;let Je=!1;if(V)Ce===ze?Je=We<=p:Je=We<=u&&H[Ce]===he&&H[ze]===Re;else{const De=(0,n.getPairingThreshold)(me,Ve,be,(0,n.getElementThreshold)(Ve));Je=We<=De}if(Je){Q[Q.length]=pe,J[J.length]=Me,te[te.length]=(0,c.getIntraBondOrderFromTable)(le,se,q.value(Re)),ae[ae.length]=(ke?e.BondType.Flag.MetallicCoordination:e.BondType.Flag.Covalent)|e.BondType.Flag.Computed,ne[ne.length]=-1;const De=j.value(ze);ve===De&&(re=!1),Math.abs(ve-De)>1&&(oe=!1)}}}return m(Q,J,te,ae,ne,w,{canRemap:Z||re&&oe})}function T(M){if(M.conformation.operator.key===-1)return!1;const D=o.IndexPairBonds.Provider.get(M.model);return!!D?.hasOperators}function A(M){const D=o.IndexPairBonds.Provider.get(M.model),V=D.bySameOperator.get(M.conformation.operator.key);if(!V)return t.IntraUnitBonds.Empty;const{a:R,b:E,edgeProps:{key:I,flag:B,order:w}}=D.bonds,{invertedIndex:O}=_.Model.getInvertedAtomSourceIndex(M.model),{elements:F}=M,L=[],U=[],q=[],N=[],k=[];for(let j=0,H=V.length;j<H;++j){const G=V[j];if(R[G]>=E[G])continue;const z=O[R[G]],W=i.SortedArray.indexOf(F,z);if(W<0)continue;const X=O[E[G]],Y=i.SortedArray.indexOf(F,X);Y<0||(L[L.length]=W,U[U.length]=Y,q[q.length]=B[G],N[N.length]=w[G],k[k.length]=I[G])}return m(L,U,N,q,k,F.length,{canRemap:!1,cacheable:D.cacheable})}function x(M,D){const V={...n.DefaultBondComputationProps,...D};return V.noCompute||M.elements.length<=1?t.IntraUnitBonds.Empty:!V.forceCompute&&o.IndexPairBonds.Provider.get(M.model)?T(M)?A(M):l(M):S(M,V)}return hC}var vC={},GB;function TJ(){if(GB)return vC;GB=1,Object.defineProperty(vC,"__esModule",{value:!0}),vC.computeInterUnitBonds=D;const e=dt(),t=Wa(),r=Zn(),n=AT(),i=XD(),c=at(),o=Ge(),s=KD(),h=Ua(),f=xT(),y=DT(),_=rn(),g=Al(),a=_t(),d=o.Vec3.distance,p=o.Vec3.set,u=o.Vec3.squaredDistance,m=o.Vec3.transformMat4,v=(0,o.Vec3)(),b=(0,o.Vec3)();function P(R,E,I,B){return R.conformation.position(E,v),I.conformation.position(B,b),d(v,b)}const C=(0,o.Mat4)(),l=(0,o.Vec3)();function S(R,E,I,B){const{maxRadius:w}=I,{elements:O,residueIndex:F}=R,{x:L,y:U,z:q}=R.model.atomicConformation,{elements:N,residueIndex:k}=E,j=R.elements.length,{type_symbol:H,label_alt_id:G,label_atom_id:z,label_comp_id:W}=R.model.atomicHierarchy.atoms,{type_symbol:X,label_alt_id:Y,label_atom_id:K,label_comp_id:Q}=E.model.atomicHierarchy.atoms,{auth_seq_id:J}=R.model.atomicHierarchy.residues,{auth_seq_id:ae}=E.model.atomicHierarchy.residues,{occupancy:te}=R.model.atomicConformation,{occupancy:ne}=E.model.atomicConformation,$=te.isDefined&&ne.isDefined,ie=R.model===E.model&&y.StructConn.Provider.get(R.model),Z=!I.forceCompute&&R.model===E.model&&h.IndexPairBonds.Provider.get(R.model),{atomSourceIndex:re}=R.model.atomicHierarchy,{invertedIndex:oe}=Z?g.Model.getInvertedAtomSourceIndex(E.model):{invertedIndex:void 0},ce=R.model===E.model&&y.StructConn.isExhaustive(R.model),ue=o.Mat4.mul(C,E.conformation.operator.inverse,R.conformation.operator.matrix),pe=!o.Mat4.isIdentity(ue),{center:he,radius:fe}=E.boundary.sphere,de=(fe+w)*(fe+w);B.startUnitPair(R.id,E.id);const ge=R.conformation.operator.key,Ce=E.conformation.operator.key;for(let ve=0;ve<j;ve++){const le=O[ve];if(p(l,L[le],U[le],q[le]),pe&&m(l,l,ue),u(l,he)>de)continue;if(!I.forceCompute&&Z){const{maxDistance:Te}=Z,{offset:Ve,b:qe,edgeProps:{order:ke,distance:ze,flag:We,key:Je,operatorA:De,operatorB:Oe}}=Z.bonds,Fe=re.value(le),Le=(0,n.getElementIdx)(H.value(le));for(let He=Ve[Fe],Pe=Ve[Fe+1];He<Pe;++He){const Ie=oe[qe[He]],Ee=c.SortedArray.indexOf(E.elements,Ie);if(Ee<0)continue;const Ue=De[He],$e=Oe[He];if(Ue>=0&&$e>=0&&(Ue===$e||Ue!==ge||$e!==Ce))continue;const Ye=(0,n.getElementIdx)(H.value(Ie)),Qe=ze[He],it=P(R,le,E,Ie);let ht=!1;if(Qe>=0)ht=(0,_.equalEps)(it,Qe,.3);else if(Te>=0)ht=it<Te;else{const mt=(0,n.getPairingThreshold)(Le,Ye,(0,n.getElementThreshold)(Le),(0,n.getElementThreshold)(Ye));ht=it<mt,(0,n.isHydrogen)(Le)&&(0,n.isHydrogen)(Ye)&&(ht=!1)}ht&&B.add(ve,Ee,{order:ke[He],flag:We[He],key:Je[He]})}continue}const me=I.forceCompute?void 0:ie&&ie.byAtomIndex.get(le);if(me&&me.length){let Te=!1;for(const Ve of me){const{partnerA:qe,partnerB:ke}=Ve,ze=qe.atomIndex===le?ke:qe,We=c.SortedArray.indexOf(E.elements,ze.atomIndex);We<0||P(R,le,E,ze.atomIndex)>w||(B.add(ve,We,{order:Ve.order,flag:Ve.flags,key:Ve.rowIndex}),Te=!0)}if(Te)continue}if(ce)continue;const ee=te.value(le),{lookup3d:se}=E,{indices:ye,count:Se,squaredDistances:Ae}=se.find(l[0],l[1],l[2],w);if(Se===0)continue;const _e=(0,n.getElementIdx)(H.value(le)),be=(0,n.isHydrogen)(_e),xe=(0,n.getElementThreshold)(_e),we=G.value(le),Be=n.MetalsSet.has(_e),Me=z.value(le),Re=W.value(F[le]);for(let Te=0;Te<Se;Te++){const Ve=ye[Te],qe=N[Ve],ke=Y.value(qe);if(we&&ke&&we!==ke||$&&ne.value(qe)<1&&ee<1&&J.value(F[le])===ae.value(k[qe]))continue;if(ie&&R.model===E.model){const Fe=(0,a.sortedCantorPairing)(F[le],k[qe]);
15if(ie.residueCantorPairs.has(Fe))continue}const ze=(0,n.getElementIdx)(X.value(qe)),We=(0,n.isHydrogen)(ze);if(be&&We)continue;const Je=(Be||n.MetalsSet.has(ze))&&!(be||We),De=Math.sqrt(Ae[Te]);if(De===0)continue;const Oe=(0,n.getPairingThreshold)(_e,ze,xe,(0,n.getElementThreshold)(ze));if(De<=Oe){const Fe=K.value(qe),Le=Q.value(k[qe]);B.add(ve,Ve,{order:(0,s.getInterBondOrderFromTable)(Re,Le,Me,Fe),flag:(Je?e.BondType.Flag.MetallicCoordination:e.BondType.Flag.Covalent)|e.BondType.Flag.Computed,key:-1})}}}B.finishUnitPair()}function T(R){for(const E of R.models){const I=h.IndexPairBonds.Provider.get(E);if(!I?.hasOperators)return!1}for(const E of R.units)if(E.conformation.operator.key===-1)return!1;return!0}function A(R,E){const I=new Map;for(const B of R.units){const{key:w}=B.conformation.operator;I.has(w)?I.get(w).add(B):I.set(w,new Set([B]))}for(const B of R.models){const w=h.IndexPairBonds.Provider.get(B),{a:O,b:F}=w.bonds,{order:L,flag:U,key:q,operatorA:N,operatorB:k}=w.bonds.edgeProps,{invertedIndex:j}=g.Model.getInvertedAtomSourceIndex(B),H=new Map;for(const W of R.units)if(W.model===B)for(let X=0,Y=W.elements.length;X<Y;++X){const K=W.elements[X];H.has(K)?H.get(K).add(W):H.set(K,new Set([W]))}const G=new Map;for(let W=0,X=N.length;W<X;++W){let Y,K;if(N[W]===k[W]?(Y=H.get(j[O[W]]),K=H.get(j[F[W]])):(Y=I.get(N[W]),K=I.get(k[W])),!(!Y||!K)){for(const Q of Y)if(N[W]===Q.conformation.operator.key)for(const J of K){if(k[W]!==J.conformation.operator.key||Q===J||!r.Unit.isAtomic(Q)||!r.Unit.isAtomic(J)||Q.id>J.id)continue;const ae=(0,a.cantorPairing)(Q.id,J.id);G.has(ae)?G.get(ae).add(W):G.set(ae,new Set([W]))}}}const z=[-1,-1];G.forEach((W,X)=>{const[Y,K]=(0,a.invertCantorPairing)(z,X),Q=R.unitMap.get(Y),J=R.unitMap.get(K);E.startUnitPair(Y,K),W.forEach(ae=>{const te=j[O[ae]],ne=c.SortedArray.indexOf(Q.elements,te);if(ne<0)return;const $=j[F[ae]],ie=c.SortedArray.indexOf(J.elements,$);ie<0||E.add(ne,ie,{order:L[ae],flag:U[ae],key:q[ae]})}),E.finishUnitPair()})}}const x={...n.DefaultBondComputationProps,ignoreWater:!0,ignoreIon:!0};function M(R,E){const I=new f.InterUnitGraph.Builder,B=R.models.some(O=>h.IndexPairBonds.Provider.get(O)),w=R.models.some(O=>y.StructConn.isExhaustive(O));return E.noCompute||R.isCoarseGrained&&!B&&!w?new i.InterUnitBonds(I.getMap()):!E.forceCompute&&T(R)?(A(R,I),new i.InterUnitBonds(I.getMap())):(t.Structure.eachUnitPair(R,(O,F)=>{S(O,F,E,I)},{maxRadius:E.maxRadius,validUnit:O=>E.validUnit(O),validUnitPair:(O,F)=>E.validUnitPair(R,O,F)}),new i.InterUnitBonds(I.getMap()))}function D(R,E){const I={...x,...E};return M(R,{...I,validUnit:E&&E.validUnit||(B=>r.Unit.isAtomic(B)),validUnitPair:E&&E.validUnitPair||((B,w,O)=>{if(!t.Structure.validUnitPair(B,w,O))return!1;const L=w.model.atomicHierarchy.derived.residue.moleculeType,U=O.model.atomicHierarchy.derived.residue.moleculeType,q=(!r.Unit.isAtomic(w)||L[w.residueIndex[w.elements[0]]]!==e.MoleculeType.Water)&&(!r.Unit.isAtomic(O)||U[O.residueIndex[O.elements[0]]]!==e.MoleculeType.Water),N=!r.Unit.isAtomic(w)||L[w.residueIndex[w.elements[0]]]!==e.MoleculeType.Ion,k=!r.Unit.isAtomic(O)||U[O.residueIndex[O.elements[0]]]!==e.MoleculeType.Ion,j=N&&k;return(q||!I.ignoreWater)&&(j||!I.ignoreIon)?!0:V(w,O)})})}function V(R,E){if(R.model!==E.model||!r.Unit.isAtomic(R)||!r.Unit.isAtomic(E))return!1;const I=y.StructConn.Provider.get(R.model);if(!I)return!1;const B=R.elements.length<E.elements.length?R:E,w=R.elements.length>=E.elements.length?R:E,{elements:O}=B,{elements:F}=w,{indexOf:L}=c.SortedArray;for(let U=0,q=O.length;U<q;U++){const N=O[U],k=I.byAtomIndex.get(N);if(k?.length)for(const j of k){const H=j.partnerA.atomIndex===N?j.partnerB.atomIndex:j.partnerA.atomIndex;if(L(F,H)>=0)return!0}}return!1}return vC}var zB;function IT(){return zB||(zB=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Bond=void 0;const t=At,r=jr(),n=dt(),i=at(),c=rS();t.__exportStar(XD(),e),t.__exportStar(PJ(),e),t.__exportStar(TJ(),e);var o;(function(s){function h(S,T,A,x,M,D){return{kind:"bond-location",aStructure:S,aUnit:T,aIndex:A,bStructure:x,bUnit:M,bIndex:D}}s.Location=h;function f(S){return!!S&&S.kind==="bond-location"}s.isLocation=f;
15function y(S,T){return S.aStructure.label===T.aStructure.label&&S.bStructure.label===T.bStructure.label&&S.aIndex===T.aIndex&&S.bIndex===T.bIndex&&S.aUnit.id===T.aUnit.id&&S.bUnit.id===T.bUnit.id}s.areLocationsEqual=y;function _(S,T){return{kind:"bond-loci",structure:S,bonds:T}}s.Loci=_;function g(S){return!!S&&S.kind==="bond-loci"}s.isLoci=g;function a(S,T){if(S.structure!==T.structure||S.bonds.length!==T.bonds.length)return!1;for(let A=0,x=S.bonds.length;A<x;++A)if(!y(S.bonds[A],T.bonds[A]))return!1;return!0}s.areLociEqual=a;function d(S){return S.bonds.length===0}s.isLociEmpty=d;function p(S,T){if(T===S.structure)return S;const A=[];return S.bonds.forEach(x=>{const M=T.unitMap.get(x.aUnit.id);if(!M)return;const D=T.unitMap.get(x.bUnit.id);if(!D)return;const V=x.aUnit.elements[x.aIndex],R=i.SortedArray.indexOf(M.elements,V);if(R===-1)return;const E=x.bUnit.elements[x.bIndex],I=i.SortedArray.indexOf(D.elements,E);I!==-1&&A.push(h(S.structure,M,R,S.structure,D,I))}),_(T,A)}s.remapLoci=p;function u(S){const T=[],A=new Map;for(const x of S.bonds){const{aIndex:M,aUnit:D,bIndex:V,bUnit:R}=x;D===R?A.has(D.id)?A.get(D.id).push(M,V):A.set(D.id,[M,V]):(A.has(D.id)?A.get(D.id).push(M):A.set(D.id,[M]),A.has(R.id)?A.get(R.id).push(V):A.set(R.id,[V]))}return A.forEach((x,M)=>{T.push({unit:S.structure.unitMap.get(M),indices:i.SortedArray.deduplicate(i.SortedArray.ofUnsortedArray(x))})}),r.StructureElement.Loci(S.structure,T)}s.toStructureElementLoci=u;function m(S){const{aUnit:T,aIndex:A}=S.bonds[0];return r.StructureElement.Loci(S.structure,[{unit:T,indices:i.OrderedSet.ofSingleton(A)}])}s.toFirstStructureElementLoci=m;function v(S,T){if(T.aUnit===T.bUnit){const A=T.aUnit.bonds,x=A.getEdgeIndex(T.aIndex,T.bIndex);return x<0?n.BondType.create(n.BondType.Flag.None):n.BondType.create(A.edgeProps.flags[x])}else{const A=S.interUnitBonds.getBondFromLocation(T);return A?n.BondType.create(A.props.flag):n.BondType.create(n.BondType.Flag.None)}}s.getType=v;function b(S,T){if(T.aUnit===T.bUnit){const A=T.aUnit.bonds,x=A.getEdgeIndex(T.aIndex,T.bIndex);return x<0?0:A.edgeProps.order[x]}else{const A=S.interUnitBonds.getBondFromLocation(T);return A?A.props.order:0}}s.getOrder=b;function P(S){let T=0;for(const A of S.unitSymmetryGroups){const x=A.units[0];r.Unit.isAtomic(x)&&(T+=x.bonds.edgeCount*A.units.length)}return T}s.getIntraUnitBondCount=P;class C{move(){return this.advance(),this.current}setElement(T,A,x){this.structure=T,this.unit=A,this.index=x,this.interBondIndices=T.interUnitBonds.getEdgeIndices(x,A.id),this.interBondCount=this.interBondIndices.length,this.interBondIndex=0,this.intraBondEnd=A.bonds.offset[x+1],this.intraBondIndex=A.bonds.offset[x],this.hasNext=this.interBondIndex<this.interBondCount||this.intraBondIndex<this.intraBondEnd}advance(){if(this.intraBondIndex<this.intraBondEnd)this.current.otherUnit=this.unit,this.current.otherIndex=this.unit.bonds.b[this.intraBondIndex],this.current.type=this.unit.bonds.edgeProps.flags[this.intraBondIndex],this.current.order=this.unit.bonds.edgeProps.order[this.intraBondIndex],this.intraBondIndex+=1;else if(this.interBondIndex<this.interBondCount){const T=this.structure.interUnitBonds.edges[this.interBondIndices[this.interBondIndex]];this.current.otherUnit=this.structure.unitMap.get(T.unitA!==this.unit.id?T.unitA:T.unitB),this.current.otherIndex=T.indexA!==this.index?T.indexA:T.indexB,this.current.type=T.props.flag,this.current.order=T.props.order,this.interBondIndex+=1}else{this.hasNext=!1;return}this.hasNext=this.interBondIndex<this.interBondCount||this.intraBondIndex<this.intraBondEnd}constructor(){this.current={},this.hasNext=!1}}s.ElementBondIterator=C;function l(S,T){return c.CentroidHelper.fromPairProvider(S.bonds.length,(A,x,M)=>{const{aUnit:D,aIndex:V,bUnit:R,bIndex:E}=S.bonds[A];D.conformation.position(D.elements[V],x),R.conformation.position(R.elements[E],M)},T)}s.getBoundingSphere=l})(o||(e.Bond=o={}))})(nx)),nx}var Ps={},id={},HB;function xJ(){if(HB)return id;HB=1,Object.defineProperty(id,"__esModule",{value:!0}),id.computeRings=c,id.getFingerprint=p,id.createIndex=v;const e=at(),t=is(),r=dt(),n=_t(),i=Vt();function c(b){const P=y(b),C=s(b,P),l=e.Segmentation.transientSegments(b.model.atomicHierarchy.residueAtomSegments,b.elements);for(;l.hasNext;){const S=l.move();g(C,S.start,S.end)}return C.rings}var o;(function(b){b[b.MaxDepth=5]="MaxDepth"})(o||(o={}));function s(b,P){return{startVertex:0,endVertex:0,count:0,isRingAtom:new Int32Array(P),marked:new Int32Array(P),queue:new Int32Array(P),pred:new Int32Array(P),depth:new Int32Array(P),left:new Int32Array(o.MaxDepth),right:new Int32Array(o.MaxDepth),color:new Int32Array(P),currentColor:0,currentAltLoc:"",hasAltLoc:!1,rings:[],currentRings:[],unit:b,bonds:b.bonds,altLoc:b.model.atomicHierarchy.atoms.label_alt_id}}function h(b){b.count=b.endVertex-b.startVertex;const{isRingAtom:P,pred:C,color:l,depth:S,marked:T}=b;
15for(let A=0;A<b.count;A++)P[A]=0,C[A]=-1,T[A]=-1,l[A]=0,S[A]=0;b.currentColor=0,b.currentAltLoc="",b.hasAltLoc=!1}function f(b){const{depth:P}=b;for(let C=0;C<b.count;C++)P[C]=b.count+1}function y(b){const P=e.Segmentation.transientSegments(b.model.atomicHierarchy.residueAtomSegments,b.elements);let C=0;for(;P.hasNext;){const l=P.move();C=Math.max(C,l.end-l.start)}return C}function _(b,P){const C=b.bonds.offset,l=b.startVertex+P,S=C[l],A=C[l+1]-S;return!(A<=1||b.isRingAtom[P]&&A===2)}function g(b,P,C){if(b.startVertex=P,b.endVertex=C,b.endVertex-b.startVertex<3)return;b.currentRings=[];const{elements:l}=b.unit,S=[];for(let A=b.startVertex;A<b.endVertex;A++){const x=b.altLoc.value(l[A]);(0,i.arraySetAdd)(S,x)}(0,i.arraySetRemove)(S,"");let T=1;if(S.length===0){h(b);for(let A=0;A<b.count;A++)_(b,A)&&(f(b),T=d(b,A,T))}else for(let A=0;A<S.length;A++){h(b),b.hasAltLoc=!0,b.currentAltLoc=S[A];for(let x=0;x<b.count;x++){if(!_(b,x))continue;const M=b.altLoc.value(l[b.startVertex+x]);M&&M!==b.currentAltLoc||(f(b),T=d(b,x,T))}}for(let A=0,x=b.currentRings.length;A<x;A++)b.rings.push(b.currentRings[A])}function a(b,P,C,l){if(C<P)return!1;const{pred:S,color:T,left:A,right:x}=b,M=++b.currentColor;let D=P;for(let F=0;F<o.MaxDepth&&(T[D]=M,D=S[D],!(D<0));F++);let V=0,R=0,E=!1,I=0;D=C;for(let F=0;F<o.MaxDepth;F++){if(T[D]===M){I=D,E=!0;break}if(x[R++]=D,D=S[D],D<0)break}if(!E)return!1;D=P;for(let F=0;F<o.MaxDepth&&(A[V++]=D,!(I===D||(D=S[D],D<0)));F++);const B=V+R;if(B<3)return!1;const w=new Int32Array(B);let O=0;for(let F=0;F<V;F++)w[O++]=b.startVertex+A[F],l[A[F]]=1;for(let F=R-1;F>=0;F--)w[O++]=b.startVertex+x[F],l[x[F]]=1;(0,n.sortArray)(w);for(let F=0,L=b.currentRings.length;F<L;F++){const U=b.currentRings[F];if(w.length===U.length){if(e.SortedArray.areEqual(w,U))return!1}else if(w.length>U.length&&e.SortedArray.isSubset(w,U))return!1}return b.currentRings.push(e.SortedArray.ofSortedArray(w)),!0}function d(b,P,C){const{bonds:l,startVertex:S,endVertex:T,isRingAtom:A,marked:x,queue:M,pred:D,depth:V}=b,{elements:R}=b.unit,{b:E,edgeProps:{flags:I},offset:B}=l;x[P]=C,V[P]=0,M[0]=P;let w=0,O=1;for(;w<O;){const F=M[w++],L=V[F],U=S+F,q=B[U],N=B[U+1];for(let k=q;k<N;k++){const j=E[k];if(j<S||j>=T||!r.BondType.isCovalent(I[k]))continue;if(b.hasAltLoc){const z=b.altLoc.value(R[j]);if(z&&b.currentAltLoc!==z)continue}const H=j-S;if(x[H]===C){if(D[H]!==F&&D[F]!==H&&a(b,F,H,A))return C+1;continue}const G=Math.min(V[H],L+1);G>o.MaxDepth||(V[H]=G,x[H]=C,M[O++]=H,D[H]=F)}}return C+1}function p(b){const P=b.length,C=new Array(P);for(let A=0;A<P;A++)C[A]=b[P-A-1];const l=u(b),S=u(C);let T=!1;for(let A=0;A<P;A++){const x=b[(A+l)%P],M=C[(A+S)%P];if(x!==M){T=x<M;break}}return T?m(b,l):m(C,S)}function u(b){const P=b.length,C=new Int32Array(P*2);for(let A=0;A<C.length;A++)C[A]=-1;let l="",S="",T=0;for(let A=1;A<C.length;A++){let x=C[A-T-1];for(;x!==-1&&(l=b[A%P],S=b[(T+x+1)%P],l!==S);)l<S&&(T=A-x-1),x=C[x];x===-1?(l=b[A%P],S=b[(T+x+1)%P],l!==S?(l<S&&(T=A),C[A-T]=-1):C[A-T]=x+1):C[A-T]=x+1}return T}function m(b,P){const C=b.length,l=[];let S;for(S=0;S<C-1;S++)l.push(b[(S+P)%C]),l.push("-");return l.push(b[(S+P)%C]),l.join("")}function v(b,P){const C=new Map,l=new Map;for(let M=0,D=b.length;M<D;M++){const V=b[M];for(let R=0,E=V.length;R<E;R++){const I=V[R];C.has(I)?C.get(I).push(M):C.set(I,[M])}}for(let M=0,D=P.length;M<D;M++){const V=P[M],R=b[V];for(let E=0,I=R.length;E<I;E++){const B=R[E];l.has(B)?l.get(B).push(V):l.set(B,[V])}}const S=new t.IntAdjacencyGraph.UniqueEdgeBuilder(b.length);for(let M=0,D=b.length;M<D;M++){const V=b[M];for(let R=0,E=V.length;R<E;R++){const I=V[R],B=C.get(I);if(B.length!==1)for(let w=0,O=B.length;w<O;w++){const F=B[w];M>=F||S.addEdge(M,F)}}}const T=t.IntAdjacencyGraph.connectedComponents(S.getGraph()),A=T.componentIndex,x=[];for(let M=0;M<T.componentCount;M++)x[M]=[];for(let M=0,D=b.length;M<D;M++)x[A[M]].push(M);return{elementRingIndices:C,elementAromaticRingIndices:l,ringComponentIndex:A,ringComponents:x}}return id}var cx={},WB;function Xi(){return WB||(WB=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Halogens=e.Metalloids=e.PostTransitionMetals=e.NobleGases=e.DiatomicNonmetals=e.PolyatomicNonmetals=e.AlkalineEarthMetals=e.AlkaliMetals=e.ElementNames=e.Elements=void 0,e.isAlkaliMetal=n,e.isAlkalineEarthMetal=i,e.isPolyatomicNonmetal=c,e.isDiatomicNonmetal=o,e.isNobleGas=s,e.isPostTransitionMetal=h,e.isMetalloid=f,e.isHalogen=y,e.isTransitionMetal=_,e.isLanthanide=g,e.isActinide=a,e.isMetal=d,e.isNonmetal=p;const t=BD();var r;(function(u){u.H="H",u.D="D",u.T="T",u.HE="HE",u.LI="LI",u.BE="BE",u.B="B",u.C="C",u.N="N",u.O="O",u.F="F",u.NE="NE",u.NA="NA",u.MG="MG",u.AL="AL",u.SI="SI",u.P="P",u.S="S",u.CL="CL",u.AR="AR",u.K="K",u.CA="CA",u.SC="SC",u.TI="TI",u.V="V",u.CR="CR",u.MN="MN",u.FE="FE",u.CO="CO",u.NI="NI",u.CU="CU",u.ZN="ZN",u.GA="GA",u.GE="GE",u.AS="AS",u.SE="SE",u.BR="BR",u.KR="KR",u.RB="RB",u.SR="SR",u.Y="Y",u.ZR="ZR",u.NB="NB",u.MO="MO",u.TC="TC",u.RU="RU",u.RH="RH",u.PD="PD",u.AG="AG",u.CD="CD",u.IN="IN",u.SN="SN",u.SB="SB",u.TE="TE",u.I="I",u.XE="XE",u.CS="CS",u.BA="BA",u.LA="LA",u.CE="CE",u.PR="PR",u.ND="ND",u.PM="PM",u.SM="SM",u.EU="EU",u.GD="GD",u.TB="TB",u.DY="DY",u.HO="HO",u.ER="ER",u.TM="TM",u.YB="YB",u.LU="LU",u.HF="HF",u.TA="TA",u.W="W",u.RE="RE",u.OS="OS",u.IR="IR",u.PT="PT",u.AU="AU",u.HG="HG",u.TL="TL",u.PB="PB",u.BI="BI",u.PO="PO",u.AT="AT",u.RN="RN",u.FR="FR",u.RA="RA",u.AC="AC",u.TH="TH",u.PA="PA",u.U="U",u.NP="NP",u.PU="PU",u.AM="AM",u.CM="CM",u.BK="BK",u.CF="CF",u.ES="ES",u.FM="FM",u.MD="MD",u.NO="NO",u.LR="LR",u.RF="RF",u.DB="DB",u.SG="SG",u.BH="BH",u.HS="HS",u.MT="MT",u.DS="DS",u.RG="RG",u.CN="CN",u.NH="NH",u.FL="FL",u.MC="MC",u.LV="LV",u.TS="TS",u.OG="OG"})(r||(e.Elements=r={})),e.ElementNames={H:"Hydrogen",HE:"Helium",LI:"Lithium",BE:"Beryllium",B:"Boron",C:"Carbon",N:"Nitrogen",O:"Oxygen",F:"Fluorine",NE:"Neon",NA:"Sodium",MG:"Magnesium",AL:"Aluminum",
15SI:"Silicon",P:"Phosphorus",S:"Sulfur",CL:"Chlorine",AR:"Argon",K:"Potassium",CA:"Calcium",SC:"Scandium",TI:"Titanium",V:"Vanadium",CR:"Chromium",MN:"Manganese",FE:"Iron",CO:"Cobalt",NI:"Nickel",CU:"Copper",ZN:"Zinc",GA:"Gallium",GE:"Germanium",AS:"Arsenic",SE:"Selenium",BR:"Bromine",KR:"Krypton",RB:"Rubidium",SR:"Strontium",Y:"Yttrium",ZR:"Zirconium",NB:"Niobium",MO:"Molybdenum",TC:"Technetium",RU:"Ruthenium",RH:"Rhodium",PD:"Palladium",AG:"Silver",CD:"Cadmium",IN:"Indium",SN:"Tin",SB:"Antimony",TE:"Tellurium",I:"Iodine",XE:"Xenon",CS:"Cesium",BA:"Barium",LA:"Lanthanum",CE:"Cerium",PR:"Praseodymium",ND:"Neodymium",PM:"Promethium",SM:"Samarium",EU:"Europium",GD:"Gadolinium",TB:"Terbium",DY:"Dysprosium",HO:"Holmium",ER:"Erbium",TM:"Thulium",YB:"Ytterbium",LU:"Lutetium",HF:"Hafnium",TA:"Tantalum",W:"Wolfram",RE:"Rhenium",OS:"Osmium",IR:"Iridium",PT:"Platinum",AU:"Gold",HG:"Mercury",TL:"Thallium",PB:"Lead",BI:"Bismuth",PO:"Polonium",AT:"Astatine",RN:"Radon",FR:"Francium",RA:"Radium",AC:"Actinium",TH:"Thorium",PA:"Protactinium",U:"Uranium",NP:"Neptunium",PU:"Plutonium",AM:"Americium",CM:"Curium",BK:"Berkelium",CF:"Californium",ES:"Einsteinium",FM:"Fermium",MD:"Mendelevium",NO:"Nobelium",LR:"Lawrencium",RF:"Rutherfordium",DB:"Dubnium",SG:"Seaborgium",BH:"Bohrium",HS:"Hassium",MT:"Meitnerium",DS:"Darmstadtium",RG:"Roentgenium",CN:"Copernicium",NH:"Nihonium",FL:"Flerovium",MC:"Moscovium",LV:"Livermorium",TS:"Tennessine",OG:"Oganesson"},e.AlkaliMetals=new Set(["LI","NA","K","RB","CS","FR"]);function n(u){return e.AlkaliMetals.has(u)}e.AlkalineEarthMetals=new Set(["BE","MG","CA","SR","BA","RA"]);function i(u){return e.AlkalineEarthMetals.has(u)}e.PolyatomicNonmetals=new Set(["C","P","S","SE"]);function c(u){return e.PolyatomicNonmetals.has(u)}e.DiatomicNonmetals=new Set(["H","N","O","F","CL","BR","I"]);function o(u){return e.DiatomicNonmetals.has(u)}e.NobleGases=new Set(["HE","NE","AR","KR","XE","RN"]);function s(u){return e.NobleGases.has(u)}e.PostTransitionMetals=new Set(["ZN","GA","CD","IN","SN","HG","TI","PB","BI","PO","CN"]);function h(u){return e.PostTransitionMetals.has(u)}e.Metalloids=new Set(["B","SI","GE","AS","SB","TE","AT"]);function f(u){return e.Metalloids.has(u)}e.Halogens=new Set(["F","CL","BR","I","AT"]);function y(u){return e.Halogens.has(u)}function _(u){const m=(0,t.AtomNumber)(u);return m>=21&&m<=29||m>=39&&m<=47||m>
15=72&&m<=79||m>=104&&m<=108}function g(u){const m=(0,t.AtomNumber)(u);return m>=57&&m<=71}function a(u){const m=(0,t.AtomNumber)(u);return m>=89&&m<=103}function d(u){return n(u)||i(u)||g(u)||a(u)||_(u)||h(u)}function p(u){return o(u)||c(u)||s(u)}})(cx)),cx}var Ts={},$B;function Sl(){if($B)return Ts;$B=1,Object.defineProperty(Ts,"__esModule",{value:!0}),Ts.getCoarseBegCompId=n,Ts.getElementMoleculeType=i,Ts.getAtomicMoleculeType=c,Ts.getAtomIdForAtomRole=s,Ts.getPositions=f;const e=dt(),t=Ge(),r=jr();function n(y,_){const g=y.coarseElements.entityKey[_],a=y.model.sequence.byEntityKey[g].sequence,d=y.coarseElements.seq_id_begin.value(_);return a.compId.value(d-1)}function i(y,_){switch(y.kind){case r.Unit.Kind.Atomic:return y.model.atomicHierarchy.derived.residue.moleculeType[y.residueIndex[_]];case r.Unit.Kind.Spheres:case r.Unit.Kind.Gaussians:const g=n(y,_),a=y.model.properties.chemicalComponentMap.get(g);if(a)return(0,e.getMoleculeType)(a.type,g)}return e.MoleculeType.Unknown}function c(y,_){return y.atomicHierarchy.derived.residue.moleculeType[_]}const o=new Set;function s(y,_){const g=e.PolymerTypeAtomRoleId[y];if(g!==void 0){const a=g[_];if(a!==void 0)return a}return o}const h=t.Vec3.zero();function f(y,_){const g=y.conformation,a=new Float32Array(_.length*3),{elements:d}=y;for(let p=0,u=_.length;p<u;++p)g.position(d[_[p]],h),t.Vec3.toArray(h,a,p*3);return a}return Ts}var XB;function eI(){if(XB)return Ps;XB=1,Object.defineProperty(Ps,"__esModule",{value:!0}),Ps.UnitRings=Ps.UnitRing=void 0;const e=xJ(),t=Zn(),r=at(),n=dt(),i=Xi(),c=Sl(),o=_l(),s=Ge();class h{get index(){return this._index?this._index:(this._index=(0,e.createIndex)(this.all,this.aromaticRings),this._index)}get byFingerprint(){return this._byFingerprint?this._byFingerprint:(this._byFingerprint=y(this.unit,this.all),this._byFingerprint)}get elementRingIndices(){return this.index.elementRingIndices}get elementAromaticRingIndices(){return this.index.elementAromaticRingIndices}get ringComponentIndex(){return this.index.ringComponentIndex}get ringComponents(){return this.index.ringComponents}get aromaticRings(){return this._aromaticRings?this._aromaticRings:(this._aromaticRings=a(this.unit,this.all),this._aromaticRings)}constructor(p,u){this.unit=u,this.all=p}}Ps.UnitRings=h;var f;(function(d){function p(l,S){const{elements:T}=l,{type_symbol:A}=l.model.atomicHierarchy.atoms,x=[];for(let M=0,D=S.length;M<D;M++)x[x.length]=A.value(T[S[M]]);return u(x)}d.fingerprint=p;function u(l){return(0,e.getFingerprint)(l)}d.elementFingerprint=u;const m=new Set([i.Elements.B,i.Elements.C,i.Elements.N,i.Elements.O,i.Elements.SI,i.Elements.P,i.Elements.S,i.Elements.GE,i.Elements.AS,i.Elements.SN,i.Elements.SB,i.Elements.BI]),v=new Set([i.Elements.B,i.Elements.C,i.Elements.N,i.Elements.SI,i.Elements.P,i.Elements.S,i.Elements.GE,i.Elements.AS,i.Elements.SN,i.Elements.SB,i.Elements.BI]),b=.05;function P(l,S){const{elements:T,bonds:{b:A,offset:x,edgeProps:{flags:M,order:D}}}=l,{type_symbol:V,label_comp_id:R}=l.model.atomicHierarchy.atoms;if(R.value(l.elements[S[0]])==="PRO")return!1;let E=0,I=!1;for(let w=0,O=S.length;w<O;++w){const F=S[w];!I&&m.has(V.value(T[F]))&&(I=!0);for(let L=x[F],U=x[F+1];L<U;++L)n.BondType.is(n.BondType.Flag.Aromatic,M[L])&&r.SortedArray.has(S,A[L])&&(E+=1)}for(let w=0,O=S.length;w<O;++w){const F=S[w],L=V.value(T[F]);if(!v.has(L))continue;let U=0,q=!1;for(let N=x[F],k=x[F+1];N<k;++N){U+=1;const j=M[N],H=D[N];(n.BondType.is(n.BondType.Flag.Aromatic,j)||H===2||H===3)&&(q=!0)}if(U>=4&&!q)return!1}if(E===2*S.length)return!0;if(!I||S.length<5||E>0)return!1;const B=o.PrincipalAxes.calculateMomentsAxes((0,c.getPositions)(l,S));return s.Vec3.magnitude(B.dirC)<b}d.isAromatic=P;function C(l,S){const{label_alt_id:T}=l.model.atomicHierarchy.atoms,{elements:A}=l;for(let x=0,M=S.length;x<M;++x){const D=A[S[x]],V=T.value(D);if(V)return V}return""}d.getAltId=C})(f||(Ps.UnitRing=f={})),(function(d){function p(m){if(t.Unit.Traits.is(m.traits,t.Unit.Trait.Water)||t.Unit.Traits.is(m.traits,t.Unit.Trait.CoarseGrained))return new d([],m);const v=(0,e.computeRings)(m);return new d(v,m)}d.create=p;function u(m,v){const b=new Map;for(let P=0,C=v.length;P<C;P++){const l=v[P];g(m,l,b)}return b}d.byFingerprintAndResidue=u})(h||(Ps.UnitRings=h={}));function y(d,p){const u=new Map;let m=0;for(let v=0,b=p.length;v<b;v++){const P=p[v],C=f.fingerprint(d,P);u.has(C)?u.get(C).push(m):u.set(C,[m]),m++}return u}function _(d,p){const{elements:u}=d,m=d.model.atomicHierarchy.residueAtomSegments.index,v=m[u[p[0]]];for(let b=1,P=p.length;b<P;b++)if(v!==m[u[p[b]]])return-1;return v}function g(d,p,u){const m=d.byFingerprint.get(p);if(m)for(let v=0,b=m.length;v<b;v++){const P=m[v],C=_(d.unit,d.all[P]);C>=0&&(u.has(C)?u.get(C).push(P):u.set(C,[P]))}}function a(d,p){const u=[];for(let m=0,v=p.length;m<v;++m)f.isAromatic(d,p[m])&&u.push(m);return u}return Ps}var mo={},vp={},KB;function Ga(){if(KB)return vp;KB=1,Object.defineProperty(vp,"__esModule",{value:!0}),vp.SortedRanges=void 0;const e=In(),t=nn(),r=Na();var n;return(function(i){function c(T){return r.SortedArray.ofSortedArray(T)}i.ofSortedRanges=c;function o(T){return T[0]}i.start=o;function s(T){return T[T.length-1]+1}i.end=s;function h(T){return T[0]}i.min=h;function f(T){return T[T.length-1]}i.max=f;function y(T){let A=0;for(let x=0,M=T.length;x<M;x+=2)A+=T[x+1]-T[x]+1;return A}i.size=y;function _(T){return T.length/2}i.count=_;function g(T,A){return T[A*2]}i.startAt=g;function a(T,A){return T[A*2+1]+1}i.endAt=a;function d(T,A){return T[A*2]}i.minAt=d;function p(T,A){return T[A*2+1]}i.maxAt=p;function u(T,A){if(T.length!==A.length)return!1;for(let x=0,M=T.length;x<M;++x)if(T[x]!==A[x])return!1;return!0}i.areEqual=u;function m(T,A){let x=0;for(let M=0,D=T.length;M<D;M+=2)for(let V=T[M],R=T[M+1];V<=R;++V)A(V,x),++x}i.forEach=m;function v(T,A){return P(T,A)!==-1}i.has=v;function b(T,A,x){return C(T,A,x)!==-1}i.hasFrom=b;function P(T,A){return C(T,A,0)}i.firstIntersectionIndex=P;function C(T,A,x){if(d(T,x)>t.OrderedSet.max(A)||f(T)<t.OrderedSet.min(A))return-1;for(let M=x,D=_(T);M<D;++M){const V=e.Interval.ofRange(d(T,M),p(T,M));if(t.OrderedSet.areIntersecting(V,A))return M}return-1}i.firstIntersectionIndexFrom=C;function l(T,A){return new S(T,A)}i.transientSegments=l;class S{updateValue(){this.value.index=this.curIndex,this.value.start=t.OrderedSet.findPredecessorIndex(this.set,g(this.ranges,this.curIndex)),this.value.end=t.OrderedSet.findPredecessorIndex(this.set,a(this.ranges,this.curIndex))}
15move(){return this.hasNext&&(this.updateValue(),this.curIndex=C(this.ranges,this.set,this.curIndex+1),this.hasNext=this.curIndex!==-1),this.value}constructor(A,x){this.ranges=A,this.set=x,this.value={index:0,start:0,end:0},this.curIndex=0,this.hasNext=!1,this.curIndex=P(A,x),this.hasNext=this.curIndex!==-1}}i.Iterator=S})(n||(vp.SortedRanges=n={})),vp}var YB;function AJ(){if(YB)return mo;YB=1,Object.defineProperty(mo,"__esModule",{value:!0}),mo.getAtomicPolymerElements=i,mo.getCoarsePolymerElements=c,mo.getAtomicGapElements=o,mo.getCoarseGapElements=s,mo.getNucleotideElements=h,mo.getProteinElements=f;const e=Ke(),t=at(),r=Ga(),n=dt();function i(y){const _=[],{elements:g,model:a}=y,{residueAtomSegments:d}=y.model.atomicHierarchy,{traceElementIndex:p}=a.atomicHierarchy.derived.residue,u=r.SortedRanges.transientSegments(y.model.atomicRanges.polymerRanges,g),m=t.Segmentation.transientSegments(d,g);for(;u.hasNext;){const v=u.move();for(m.setSegment(v);m.hasNext;){const b=m.move(),{start:P,end:C,index:l}=b;if(t.OrderedSet.areIntersecting(t.Interval.ofRange(g[P],g[C-1]),g)){const S=p[l];_.push(S===-1?d.offsets[l]:S)}}}return t.SortedArray.ofSortedArray(_)}function c(y){const _=[],{elements:g,model:a}=y,{spheres:d,gaussians:p}=a.coarseHierarchy,u=e.Unit.isSpheres(y)?d.polymerRanges:p.polymerRanges,m=r.SortedRanges.transientSegments(u,g);for(;m.hasNext;){const{start:v,end:b}=m.move();for(let P=v;P<b;++P)_.push(g[P])}return t.SortedArray.ofSortedArray(_)}function o(y){const _=[],{elements:g,model:a,residueIndex:d}=y,{residueAtomSegments:p}=y.model.atomicHierarchy,{traceElementIndex:u}=a.atomicHierarchy.derived.residue,m=r.SortedRanges.transientSegments(y.model.atomicRanges.gapRanges,y.elements);for(;m.hasNext;){const v=m.move(),b=d[g[v.start]],P=d[g[v.end-1]],C=u[b],l=u[P];_.push(C===-1?p.offsets[b]:C),_.push(l===-1?p.offsets[P]:l)}return t.SortedArray.ofSortedArray(_)}function s(y){const _=[],{elements:g,model:a}=y,{spheres:d,gaussians:p}=a.coarseHierarchy,u=e.Unit.isSpheres(y)?d.gapRanges:p.gapRanges,m=r.SortedRanges.transientSegments(u,g);for(;m.hasNext;){const{start:v,end:b}=m.move();_.push(g[v],g[b-1])}return t.SortedArray.ofSortedArray(_)}function h(y){const _=[],{elements:g,model:a}=y,{chainAtomSegments:d,residueAtomSegments:p}=a.atomicHierarchy,{moleculeType:u,traceElementIndex:m}=a.atomicHierarchy.derived.residue,v=t.Segmentation.transientSegments(d,g),b=t.Segmentation.transientSegments(p,g);for(;v.hasNext;)for(b.setSegment(v.move());b.hasNext;){const{index:P}=b.move();if((0,n.isNucleic)(u[P])){const C=m[P];_.push(C===-1?p.offsets[P]:C)}}return t.SortedArray.ofSortedArray(_)}function f(y){const _=[],{elements:g,model:a}=y,{chainAtomSegments:d,residueAtomSegments:p}=a.atomicHierarchy,{moleculeType:u,traceElementIndex:m}=a.atomicHierarchy.derived.residue,v=t.Segmentation.transientSegments(d,g),b=t.Segmentation.transientSegments(p,g);for(;v.hasNext;)for(b.setSegment(v.move());b.hasNext;){const{index:P}=b.move();if((0,n.isProtein)(u[P])){const C=m[P];_.push(C===-1?p.offsets[P]:C)}}return t.SortedArray.ofSortedArray(_)}return mo}var bp={},QB;function MJ(){if(QB)return bp;QB=1,Object.defineProperty(bp,"__esModule",{value:!0}),bp.toPositionsArray=n,bp.getPrincipalAxes=i;const e=_l(),t=Ge(),r=(0,t.Vec3)();function n(c){const{elements:o,conformation:s}=c,h=new Float32Array(o.length*3);for(let f=0,y=o.length;f<y;f++)s.invariantPosition(o[f],r),t.Vec3.toArray(r,h,f*3);return h}function i(c){const o=n(c);return e.PrincipalAxes.ofPositions(o)}return bp}var _p={},Sp={},ZB;function Ki(){if(ZB)return Sp;ZB=1,Object.defineProperty(Sp,"__esModule",{value:!0}),Sp.BoundaryHelper=void 0;const e=wt(),t=rS(),r=ja(),n=os(),i=Af(),c=e.Vec3.dot,o=e.Vec3.copy,s=e.Vec3.scaleAndSub,h=e.Vec3.scaleAndAdd;class f{computeExtrema(v,b){const P=c(this.dir[v],b);P<this.minDist[v]&&(this.minDist[v]=P,o(this.extrema[v*2],b)),P>this.maxDist[v]&&(this.maxDist[v]=P,o(this.extrema[v*2+1],b))}computeSphereExtrema(v,b,P){const C=this.dir[v],l=c(C,b);l-P<this.minDist[v]&&(this.minDist[v]=l-P,s(this.extrema[v*2],b,C,P)),l+P>this.maxDist[v]&&(this.maxDist[v]=l+P,h(this.extrema[v*2+1],b,C,P))}includeSphere(v){if(r.Sphere3D.hasExtrema(v)&&v.extrema.length>1)for(const b of v.extrema)this.includePosition(b);else this.includePositionRadius(v.center,v.radius)}includePosition(v){for(let b=0;b<this.dirLength;++b)this.computeExtrema(b,v)}includePositionRadius(v,b){for(let P=0;P<this.dirLength;++P)this.computeSphereExtrema(P,v,b)}finishedIncludeStep(){this.dirLength<49&&this.refineExtrema();for(let v=0;v<this.extrema.length;v++)this.centroidHelper.includeStep(this.extrema[v]);this.centroidHelper.finishedIncludeStep()}refineExtrema(){const v=y("98"),b=[],P=[],C=[];for(let l=0,S=v.length;l<S;++l){b[l]=1/0,P[l]=-1/0,C[l*2]=(0,e.Vec3)(),C[l*2+1]=(0,e.Vec3)();const T=v[l];for(let A=0,x=this.extrema.length;A<x;++A){const M=this.extrema[A],D=c(T,M);D<b[l]&&(b[l]=D,o(C[l*2],M)),D>P[l]&&(P[l]=D,o(C[l*2+1],M))}}this.extrema=C}radiusSphere(v){if(r.Sphere3D.hasExtrema(v)&&v.extrema.length>1)for(const b of v.extrema)this.radiusPosition(b);else this.radiusPositionRadius(v.center,v.radius)}
15radiusPosition(v){this.centroidHelper.radiusStep(v)}radiusPositionRadius(v,b){this.centroidHelper.radiusSphereStep(v,b)}getSphere(v){return r.Sphere3D.setExtrema(this.centroidHelper.getSphere(v),this.extrema.slice())}getBox(v){return n.Box3D.fromVec3Array(v||(0,n.Box3D)(),this.extrema)}reset(){this.extrema.length=this.dirLength*2;for(let v=0;v<this.dirLength;++v)this.minDist[v]=1/0,this.maxDist[v]=-1/0,this.extrema[v*2]=(0,e.Vec3)(),this.extrema[v*2+1]=(0,e.Vec3)();this.centroidHelper.reset()}constructor(v){this.minDist=[],this.maxDist=[],this.extrema=[],this.centroidHelper=new t.CentroidHelper,this.dir=y(v),this.dirLength=this.dir.length,this.reset()}}Sp.BoundaryHelper=f;const y=(0,i.memoize1)(m=>{let v;switch(m){case"6":v=[..._];break;case"14":v=[..._,...g];break;case"26":v=[..._,...g,...a];break;case"98":v=[..._,...g,...a,...d,...p,...u];break}return v.map(b=>{const P=e.Vec3.create(b[0],b[1],b[2]);return e.Vec3.normalize(P,P)})}),_=[[1,0,0],[0,1,0],[0,0,1]],g=[[1,1,1],[-1,1,1],[-1,-1,1],[1,-1,1]],a=[[1,1,0],[1,-1,0],[1,0,1],[1,0,-1],[0,1,1],[0,1,-1]],d=[[0,1,2],[0,2,1],[1,0,2],[2,0,1],[1,2,0],[2,1,0],[0,1,-2],[0,2,-1],[1,0,-2],[2,0,-1],[1,-2,0],[2,-1,0]],p=[[1,1,2],[2,1,1],[1,2,1],[1,-1,2],[1,1,-2],[1,-1,-2],[2,-1,1],[2,1,-1],[2,-1,-1],[1,-2,1],[1,2,-1],[1,-2,-1]],u=[[2,2,1],[1,2,2],[2,1,2],[2,-2,1],[2,2,-1],[2,-2,-1],[1,-2,2],[1,2,-2],[1,-2,-2],[2,-1,2],[2,1,-2],[2,-1,-2]];return Sp}var JB;function wT(){if(JB)return _p;JB=1,Object.defineProperty(_p,"__esModule",{value:!0}),_p.getFastBoundary=f,_p.getBoundary=_;const e=Ge(),t=nn(),r=Ki(),n=os(),i=ja(),c=e.Vec3.set,o=new r.BoundaryHelper("14"),s=new r.BoundaryHelper("98");function h(g){return g>1e4?o:s}function f(g){const a=n.Box3D.computeBounding(g);return{box:a,sphere:i.Sphere3D.fromBox3D((0,i.Sphere3D)(),a)}}const y=(0,e.Vec3)();function _(g){const{x:a,y:d,z:p,radius:u,indices:m}=g,v=t.OrderedSet.size(m);if(v>25e4)return f(g);const b=h(v);b.reset();for(let C=0;C<v;C++){const l=t.OrderedSet.getAt(m,C);c(y,a[l],d[l],p[l]),b.includePositionRadius(y,u&&u[l]||0)}b.finishedIncludeStep();for(let C=0;C<v;C++){const l=t.OrderedSet.getAt(m,C);c(y,a[l],d[l],p[l]),b.radiusPositionRadius(y,u&&u[l]||0)}const P=b.getSphere();if(!u&&i.Sphere3D.hasExtrema(P)&&v<=P.extrema.length){const C=[];for(let l=0;l<v;l++){const S=t.OrderedSet.getAt(m,l);C.push(e.Vec3.create(a[S],d[S],p[S]))}i.Sphere3D.setExtrema(P,C)}return{box:b.getBox(),sphere:P}}return _p}var Cp={},eR;function DJ(){if(eR)return Cp;eR=1,Object.defineProperty(Cp,"__esModule",{value:!0}),Cp.ElementSetIntraBondCache=void 0;const e=at();class t{constructor(){this.data=new Map}get(n){const i=e.SortedArray.hashCode(n);if(this.data.has(i)){for(const[c,o]of this.data.get(i))if(e.SortedArray.areEqual(n,c))return o}}set(n,i){const c=e.SortedArray.hashCode(n);if(this.data.has(c)){const o=this.data.get(c);for(const s of o)if(e.SortedArray.areEqual(n,s[0])){s[1]=i;return}o.push([n,i])}else this.data.set(c,[[n,i]])}static get(n){return n._dynamicPropertyData.ElementSetIntraBondCache||(n._dynamicPropertyData.ElementSetIntraBondCache=new t),n._dynamicPropertyData.ElementSetIntraBondCache}}return Cp.ElementSetIntraBondCache=t,Cp}var Pp={},ad={},xs={},tR;function tI(){if(tR)return xs;tR=1,Object.defineProperty(xs,"__esModule",{value:!0}),xs.Symmetry=xs.Assembly=void 0;const e=_t(),t=rt(),r=Qn(),n=er();class i{get operatorGroups(){return this._operators?this._operators:(this._operators=this.operatorsProvider(),this._operators)}constructor(s,h,f){this.operatorsProvider=f,this.id=s,this.details=h}}xs.Assembly=i,(function(o){function s(h,f,y){return new o(h,f,y)}o.create=s})(i||(xs.Assembly=i={}));var c;return(function(o){o.Default={assemblies:[],spacegroup:t.Spacegroup.ZeroP1,isNonStandardCrystalFrame:!1};function s(f,y){const _=y.toLocaleLowerCase(),g=r.ModelSymmetry.Provider.get(f);return g?(0,e.arrayFind)(g.assemblies,a=>a.id.toLowerCase()===_):void 0}o.findAssembly=s;function h(f){const{cell:y,name:_,num:g}=f.spacegroup,{size:a,anglesInRadians:d}=y,p=a[0].toFixed(2),u=a[1].toFixed(2),m=a[2].toFixed(2),v=(0,n.radToDeg)(d[0]).toFixed(2),b=(0,n.radToDeg)(d[1]).toFixed(2),P=(0,n.radToDeg)(d[2]).toFixed(2),C=[];return C.push(`Unit Cell <b>${_}</b> #${g}`),C.push(`${p}×${u}×${m} Å`),C.push(`α=${v}° β=${b}° γ=${P}°`),C.join(" | ")}o.getUnitcellLabel=h})(c||(xs.Symmetry=c={})),xs}var rR;function IJ(){if(rR)return ad;rR=1,Object.defineProperty(ad,"__esModule",{value:!0}),ad.createAssemblies=c,ad.operatorGroupsProvider=s,ad.getMatrices=h;const e=Ge(),t=eS(),r=tI(),n=Ke(),i=Ke();function c(a,d,p){if(!a._rowCount)return[];const u=h(p),m=[];for(let v=0;v<a._rowCount;v++)m[m.length]=o(a,d,v,u);return m}function o(a,d,p,u){const m=a.id.value(p),v=a.details.value(p),b=[],{assembly_id:P,oper_expression:C,asym_id_list:l}=d;for(let S=0,T=d._rowCount;S<T;S++)P.value(S)===m&&(b[b.length]={assemblyId:m,expression:C.value(S),asymIds:l.value(S)});return r.Assembly.create(m,v,s(b,u))}function s(a,d){return()=>{const p=[];let u=0;for(let m=0;m<a.length;m++){const v=a[m],b=g(v.expression),P=f(b),C=_(d,P,u,v.assemblyId),l=n.Queries.generators.atoms({chainTest:n.Queries.pred.and(n.Queries.pred.eq(S=>i.StructureProperties.unit.operator_name(S.element),t.SymmetryOperator.DefaultName),n.Queries.pred.inSet(S=>i.StructureProperties.chain.label_asym_id(S.element),v.asymIds))});p[p.length]={selector:l,operators:C,asymIds:v.asymIds},u+=C.length}return p}}function h(a){const{id:d,matrix:p,vector:u,_schema:m}=a,v=new Map,b=(0,e.Vec3)();for(let P=0,C=a._rowCount;P<C;P++){const l=e.Tensor.toMat4((0,e.Mat4)(),m.matrix.space,p.value(P));e.Tensor.toVec3(b,m.vector.space,u.value(P)),e.Mat4.setTranslation(l,b),e.Mat4.setValue(l,3,3,1),v.set(d.value(P),l)}return v}function f(a){const d=[],p=[];for(let u=0;u<a.length;u++)p[u]="";return y(a,d,a.length-1,p),d}function y(a,d,p,u){if(p<0){d[d.length]=u.slice(0);return}const m=a[p],v=m.length;for(let b=0;b<v;b++)u[p]=m[b],y(a,d,p-1,u)}function _(a,d,p,u){const m=[];let v=p;for(const b of d){const P=e.Mat4.identity();for(let S=0;S<b.length;S++)e.Mat4.mul(P,P,a.get(b[S]));v++;const C=`ASM_${v}`,l=t.SymmetryOperator.getAssemblyOperatorName(b);m[m.length]=t.SymmetryOperator.create(C,P,{instanceId:l,assembly:{id:u,operId:v,operList:b}})}return m}
15function g(a){const d=/\(?([^\(\)]+)\)?]*/g,p=[],u=[];let m;for(;m=d.exec(a);)p[p.length]=m[1];return p.forEach(v=>{const b=[];v.split(",").forEach(P=>{const C=P.indexOf("-");if(C>0){const l=parseInt(P.substring(0,C)),S=parseInt(P.substr(C+1));for(let T=l;T<=S;T++)b[b.length]=T.toString()}else b[b.length]=P.trim()}),u[u.length]=b}),u}return ad}var nR;function Qn(){if(nR)return Pp;nR=1,Object.defineProperty(Pp,"__esModule",{value:!0}),Pp.ModelSymmetry=void 0;const e=bl(),t=rt(),r=Ge(),n=IJ(),i=as();var c;(function(y){y.Descriptor={name:"model_symmetry"},y.Provider=i.FormatPropertyProvider.create(y.Descriptor);function _(a){const d=(0,n.createAssemblies)(a.pdbx_struct_assembly,a.pdbx_struct_assembly_gen,a.pdbx_struct_oper_list),p=h(a.symmetry,a.cell),u=o(a.atom_sites);return{assemblies:d,spacegroup:p,isNonStandardCrystalFrame:u,ncsOperators:f(a.struct_ncs_oper)}}y.fromData=_;function g(a,d){const p=t.SpacegroupCell.create("P 1",a,d),u=t.Spacegroup.create(p);return{assemblies:[],spacegroup:u,isNonStandardCrystalFrame:!1}}y.fromCell=g})(c||(Pp.ModelSymmetry=c={}));function o(y,_){return y._rowCount===0,!1}function s(y){const _=y.Int_Tables_number.value(0),g=y["space_group_name_H-M"].value(0);return y.Int_Tables_number.isDefined?y["space_group_name_H-M"].isDefined?g:_:g}function h(y,_){if(y._rowCount===0||_._rowCount===0)return t.Spacegroup.ZeroP1;const g=_.length_a.value(0),a=_.length_b.value(0),d=_.length_c.value(0);if(g===0||a===0||d===0)return t.Spacegroup.ZeroP1;const p=_.angle_alpha.value(0),u=_.angle_beta.value(0),m=_.angle_gamma.value(0);if(p===0||u===0||m===0)return t.Spacegroup.ZeroP1;const v=s(y),b=t.SpacegroupCell.create(v,r.Vec3.create(g,a,d),r.Vec3.scale((0,r.Vec3)(),r.Vec3.create(p,u,m),Math.PI/180));return t.Spacegroup.create(b)}function f(y){if(y._rowCount===0)return;const{id:_,matrix:g,vector:a}=y,d=e.mmCIF_Schema.struct_ncs_oper.matrix.space,p=e.mmCIF_Schema.struct_ncs_oper.vector.space,u=[];for(let m=0;m<y._rowCount;m++){const v=r.Tensor.toMat3((0,r.Mat3)(),d,g.value(m)),b=r.Tensor.toVec3((0,r.Vec3)(),p,a.value(m));if(!t.SymmetryOperator.checkIfRotationAndTranslation(v,b)||y.code.value(m)==="given"&&!r.Mat3.isIdentity(v)&&!r.Vec3.isZero(b))continue;const P=_.value(m);u[u.length]=t.SymmetryOperator.ofRotationAndOffset(`ncs_${P}`,v,b,P)}return u}return Pp}var bC={},iR;function wJ(){if(iR)return bC;iR=1,Object.defineProperty(bC,"__esModule",{value:!0}),bC.getResonance=c;const e=Na(),t=_t(),r=dt(),n=Zn(),i={delocalizedTriplets:{getThirdElement:()=>{},getTripletIndices:()=>{},triplets:[]}};function c(s){return n.Unit.Traits.is(s.traits,n.Unit.Trait.Water)||n.Unit.Traits.is(s.traits,n.Unit.Trait.CoarseGrained)?i:{delocalizedTriplets:o(s)}}function o(s){const h=s.bonds,{b:f,edgeProps:y,offset:_}=h,{order:g,flags:a}=y,{elementAromaticRingIndices:d}=s.rings,p=[],u=new Map,m=new Map,v=(b,P,C)=>{const l=p.length;p.push(e.SortedArray.ofUnsortedArray([b,P,C])),u.set((0,t.sortedCantorPairing)(b,P),C),m.has(b)?m.get(b).push(l):m.set(b,[l])};for(let b=0;b<s.elements.length;b++){if(d.has(b)||_[b+1]-_[b]+1<2)continue;const C=[];for(let l=_[b],S=_[b+1];l<S;l++){const T=a[l];r.BondType.is(T,r.BondType.Flag.Aromatic)&&C.push(f[l])}if(C.length>=2){v(b,C[0],C[1]);for(let l=1,S=C.length;l<S;l++)v(b,C[l],C[0])}}return{getThirdElement:(b,P)=>u.get((0,t.sortedCantorPairing)(b,P)),getTripletIndices:b=>m.get(b),triplets:p}}return bC}var aR;function Zn(){if(aR)return lp;aR=1,Object.defineProperty(lp,"__esModule",{value:!0}),lp.Unit=void 0;const e=eS(),t=Al(),r=rt(),n=IT(),i=ma(),c=et(),o=eI(),s=at(),h=_t(),f=AJ(),y=MJ(),_=wT(),g=Ge(),a=Ua(),d=DJ(),p=Qn(),u=wJ();var m;return(function(v){let b;(function(ne){ne[ne.Atomic=0]="Atomic",ne[ne.Spheres=1]="Spheres",ne[ne.Gaussians=2]="Gaussians"})(b=v.Kind||(v.Kind={})),(function(ne){ne[ne.Atomic=0]="Atomic",ne[ne.Spheres=1]="Spheres",ne[ne.Gaussians=2]="Gaussians"})(v.Kinds||(v.Kinds={}));function P(ne){return ne.kind===b.Atomic}v.isAtomic=P;function C(ne){return ne.kind===b.Spheres||ne.kind===b.Gaussians}v.isCoarse=C;function l(ne){return ne.kind===b.Spheres}v.isSpheres=l;function S(ne){return ne.kind===b.Gaussians}v.isGaussians=S;function T(ne,$,ie,Z,re,oe,ce,ue,pe){switch(re){case b.Atomic:return new F(ne,$,ie,Z,oe,ue,e.SymmetryOperator.createMapping(ce,oe.atomicConformation,B(oe)),pe??L());case b.Spheres:return G(ne,$,ie,Z,oe,b.Spheres,ue,e.SymmetryOperator.createMapping(ce,oe.coarseConformation.spheres,w(oe)),pe??k());case b.Gaussians:return G(ne,$,ie,Z,oe,b.Gaussians,ue,e.SymmetryOperator.createMapping(ce,oe.coarseConformation.gaussians,O()),pe??k())}}v.create=T;function A(ne){const $=s.IntMap.Mutable();for(let ie=0,Z=ne.length;ie<Z;ie++)$.set(ne[ie].id,ie);return $}function x(ne){const $=[];for(let ie=0,Z=ne.length;ie<Z;ie++)$.push(ne[ie].id);return(0,h.hashFnv32a)($)}function M(ne){const $={};return{elements:ne[0].elements,units:ne,get unitIndexMap(){return $.unitIndexMap||($.unitIndexMap=A(ne)),$.unitIndexMap},hashCode:V(ne[0]),transformHash:x(ne)}}v.SymmetryGroup=M,(function(ne){function $(Z,re){return Z.hashCode!==re.hashCode?!1:s.SortedArray.areEqual(Z.elements,re.elements)}ne.areInvariantElementsEqual=$;function ie(Z){const re=s.IntMap.Mutable();for(let oe=0,ce=Z.length;oe<ce;++oe){const ue=Z[oe];for(let pe=0,he=ue.units.length;pe<he;++pe)re.set(ue.units[pe].id,oe)}return re}ne.getUnitSymmetryGroupsIndexMap=ie})(M=v.SymmetryGroup||(v.SymmetryGroup={}));function D(ne){return v.isAtomic(ne)?ne.model.atomicConformation.id:ne.model.coarseConformation.id}v.conformationId=D;function V(ne){return(0,h.hash2)(ne.invariantId,s.SortedArray.hashCode(ne.elements))}v.hashUnit=V;let R;(function(ne){ne[ne.None=0]="None",ne[ne.MultiChain=1]="MultiChain",ne[ne.Partitioned=2]="Partitioned",ne[ne.FastBoundary=4]="FastBoundary",ne[ne.Water=8]="Water",ne[ne.CoarseGrained=16]="CoarseGrained"})(R=v.Trait||(v.Trait={}));let E;(function(ne){ne.is=c.BitFlags.has,ne.create=c.BitFlags.create})(E=v.Traits||(v.Traits={}));function I(){return{}}function B(ne){const $=ne.atomicHierarchy.atoms.type_symbol.value;return ie=>(0,i.VdwRadius)($(ie))}function w(ne){const $=ne.coarseConformation.spheres.radius;return ie=>$[ie]}function O(ne){return $=>0}class F{get transientCache(){return this._transientCache===void 0&&(this._transientCache=new Map),this._transientCache}getChild($){return $.length===this.elements.length?this:new F(this.id,this.invariantId,this.chainGroupId,this.traits,this.model,$,this.conformation,L())}getCopy($,ie,Z,re){const oe=new F($,ie,Z,this.traits,this.model,this.elements,this.conformation,this.props);return re?.propagateTransientCache&&(oe._transientCache=this._transientCache),oe}applyOperator($,ie,Z=!1){const re=Z?ie:e.SymmetryOperator.compose(this.conformation.operator,ie);return new F($,this.invariantId,this.chainGroupId,this.traits,this.model,this.elements,e.SymmetryOperator.createMapping(re,this.model.atomicConformation,this.conformation.r),this.props)}remapModel($,ie,Z){var re,oe;Z||(Z={...this.props,bonds:ie&&!(!((oe=(re=this.props.bonds)===null||re===void 0?void 0:re.props)===null||oe===void 0)&&oe.canRemap)?void 0:Y(this,this.props.bonds,$,ie)},v.isSameConformation(this,$)||(Z.boundary=void 0,Z.lookup3d=void 0,Z.principalAxes=void 0));let ce=this.conformation.operator;const ue=p.ModelSymmetry.Provider.get($);if(ce.spgrOp!==-1&&ue&&ue!==p.ModelSymmetry.Provider.get(this.model)){const[he,fe,de]=ce.hkl,{toFractional:ge}=ue.spacegroup.cell,Ce=g.Vec3.transformMat4((0,g.Vec3)(),t.Model.getCenter($),ge);ce=r.Spacegroup.getSymmetryOperatorRef(ue.spacegroup,ce.spgrOp,he,fe,de,Ce)}const pe=this.model.atomicConformation!==$.atomicConformation||ce!==this.conformation.operator?e.SymmetryOperator.createMapping(ce,$.atomicConformation,B($)):this.conformation;return new F(this.id,this.invariantId,this.chainGroupId,this.traits,$,this.elements,pe,Z)}get boundary(){if(this.props.boundary)return this.props.boundary;const $=E.is(this.traits,R.FastBoundary),{x:ie,y:Z,z:re}=this.model.atomicConformation,oe=$?void 0:t.Model.getAtomicRadii(this.model);return this.props.boundary=$?(0,_.getFastBoundary)({x:ie,y:Z,z:re,radius:oe,indices:this.elements}):(0,_.getBoundary)({x:ie,y:Z,z:re,radius:oe,indices:this.elements}),this.props.boundary}get lookup3d(){if(this.props.lookup3d)return this.props.lookup3d;const{x:$,y:ie,z:Z}=this.model.atomicConformation;return this.props.lookup3d=(0,r.GridLookup3D)({x:$,y:ie,z:Z,indices:this.elements},this.boundary),this.props.lookup3d}get principalAxes(){return this.props.principalAxes?this.props.principalAxes:(this.props.principalAxes=(0,y.getPrincipalAxes)(this),this.props.principalAxes)}get bonds(){var $;if(this.props.bonds)return this.props.bonds;const ie=d.ElementSetIntraBondCache.get(this.model);let Z=ie.get(this.elements);return Z||(Z=(0,n.computeIntraUnitBonds)(this),!(($=Z.props)===null||$===void 0)&&$.cacheable&&ie.set(this.elements,Z)),this.props.bonds=Z,this.props.bonds}get rings(){return this.props.rings?this.props.rings:(this.props.rings=o.UnitRings.create(this),this.props.rings)}get resonance(){return this.props.resonance?this.props.resonance:(this.props.resonance=(0,u.getResonance)(this),this.props.resonance)}get polymerElements(){return this.props.polymerElements?this.props.polymerElements:(this.props.polymerElements=(0,f.getAtomicPolymerElements)(this),this.props.polymerElements)}get gapElements(){return this.props.gapElements?this.props.gapElements:(this.props.gapElements=(0,f.getAtomicGapElements)(this),this.props.gapElements)}get nucleotideElements(){return this.props.nucleotideElements?this.props.nucleotideElements:(this.props.nucleotideElements=(0,f.getNucleotideElements)(this),this.props.nucleotideElements)}get proteinElements(){return this.props.proteinElements?this.props.proteinElements:(this.props.proteinElements=(0,f.getProteinElements)(this),this.props.proteinElements)}get residueCount(){if(this.props.residueCount!==void 0)return this.props.residueCount;let $=0;const ie=s.Segmentation.transientSegments(this.model.atomicHierarchy.residueAtomSegments,this.elements);for(;ie.hasNext;)ie.move(),$+=1;return this.props.residueCount=$,this.props.residueCount}getResidueIndex($){return this.residueIndex[this.elements[$]]}constructor($,ie,Z,re,oe,ce,ue,pe){this.kind=b.Atomic,this.objectPrimitive="atomistic",this._transientCache=void 0,this.id=$,this.invariantId=ie,this.chainGroupId=Z,this.traits=re,this.model=oe,this.elements=ce,this.conformation=ue,this.residueIndex=oe.atomicHierarchy.residueAtomSegments.index,this.chainIndex=oe.atomicHierarchy.chainAtomSegments.index,this.props=pe}}v.Atomic=F;function L(){return I()}class U{get transientCache(){return this._transientCache===void 0&&(this._transientCache=new Map),this._transientCache}getChild($){return $.length===this.elements.length?this:G(this.id,this.invariantId,this.chainGroupId,this.traits,this.model,this.kind,$,this.conformation,k())}getCopy($,ie,Z,re){const oe=G($,ie,Z,this.traits,this.model,this.kind,this.elements,this.conformation,this.props);return re?.propagateTransientCache&&(oe._transientCache=this._transientCache),oe}applyOperator($,ie,Z=!1){const re=Z?ie:e.SymmetryOperator.compose(this.conformation.operator,ie);return G($,this.invariantId,this.chainGroupId,this.traits,this.model,this.kind,this.elements,e.SymmetryOperator.createMapping(re,this.getCoarseConformation(),this.conformation.r),this.props)}remapModel($,ie,Z){const re=this.getCoarseConformation(),oe=q(this.kind,$);Z||(Z={...this.props},v.isSameConformation(this,$)||(Z.boundary=void 0,Z.lookup3d=void 0,Z.principalAxes=void 0));const ce=re!==oe?e.SymmetryOperator.createMapping(this.conformation.operator,oe,this.kind===v.Kind.Spheres?w($):O()):this.conformation;return new U(this.id,this.invariantId,this.chainGroupId,this.traits,$,this.kind,this.elements,ce,Z)}get boundary(){if(this.props.boundary)return this.props.boundary;const{x:$,y:ie,z:Z}=this.getCoarseConformation(),re=this.getCoarseRadii();return this.props.boundary=E.is(this.traits,R.FastBoundary)?(0,_.getFastBoundary)({x:$,y:ie,z:Z,radius:re,indices:this.elements}):(0,_.getBoundary)({x:$,y:ie,z:Z,radius:re,indices:this.elements}),this.props.boundary}get lookup3d(){if(this.props.lookup3d)return this.props.lookup3d;const{x:$,y:ie,z:Z}=this.getCoarseConformation();return this.props.lookup3d=(0,r.GridLookup3D)({x:$,y:ie,z:Z,indices:this.elements},this.boundary),this.props.lookup3d}get principalAxes(){return this.props.principalAxes?this.props.principalAxes:(this.props.principalAxes=(0,y.getPrincipalAxes)(this),this.props.principalAxes)}get polymerElements(){return this.props.polymerElements?this.props.polymerElements:(this.props.polymerElements=(0,f.getCoarsePolymerElements)(this),this.props.polymerElements)}get gapElements(){return this.props.gapElements?this.props.gapElements:(this.props.gapElements=(0,f.getCoarseGapElements)(this),this.props.gapElements)}getCoarseConformation(){return q(this.kind,this.model)}getCoarseRadii(){return N(this.kind,this.model)}constructor($,ie,Z,re,oe,ce,ue,pe,he){this._transientCache=void 0,this.kind=ce,this.objectPrimitive=ce===b.Spheres?"sphere":"gaussian",this.id=$,this.invariantId=ie,this.chainGroupId=Z,this.traits=re,this.model=oe,this.elements=ue,this.conformation=pe,this.coarseElements=ce===b.Spheres?oe.coarseHierarchy.spheres:oe.coarseHierarchy.gaussians,this.coarseConformation=ce===b.Spheres?oe.coarseConformation.spheres:oe.coarseConformation.gaussians,this.props=he}}function q(ne,$){return ne===b.Spheres?$.coarseConformation.spheres:$.coarseConformation.gaussians}function N(ne,$){return ne===b.Spheres?$.coarseConformation.spheres.radius:void 0}function k(){return I()}class j extends U{}v.Spheres=j;class H extends U{}v.Gaussians=H;function G(ne,$,ie,Z,re,oe,ce,ue,pe){return new U(ne,$,ie,Z,re,oe,ce,ue,pe)}function z(ne,$){return ne.chainGroupId===$.chainGroupId&&ne.conformation.operator.name===$.conformation.operator.name}v.areSameChainOperatorGroup=z;function W(ne,$){return g.Mat4.areEqual(ne.conformation.operator.matrix,$.conformation.operator.matrix,1e-6)}v.areOperatorsEqual=W;function X(ne,$){return ne===$?!0:s.SortedArray.areEqual(ne.elements,$.elements)?K(ne,$.model):!1}v.areConformationsEqual=X;function Y(ne,$,ie,Z){var re;if(!$)return;if(ne.model.atomicConformation.id===ie.atomicConformation.id)return $;const oe=a.IndexPairBonds.Provider.get(ne.model);if(oe){const ce=a.IndexPairBonds.Provider.get(ie);return!ce||oe===ce?$:void 0}return!((re=$.props)===null||re===void 0)&&re.canRemap||!Z||K(ne,ie)?$:void 0}function K(ne,$){const ie=t.Model.CoordinatesHistory.get(t.Model.getRoot($));if(ie)return ie.areEqual(ne.elements,ne.kind,$);const Z=ne.elements,{x:re,y:oe,z:ce}=ne.conformation.coordinates,{x:ue,y:pe,z:he}=Q(ne.kind,$);for(let fe=0,de=Z.length;fe<de;fe++){const ge=Z[fe];if(re[ge]!==ue[ge]||oe[ge]!==pe[ge]||ce[ge]!==he[ge])return!1}return!0}v.isSameConformation=K;function Q(ne,$){return ne===b.Atomic?$.atomicConformation:ne===b.Spheres?$.coarseConformation.spheres:$.coarseConformation.gaussians}v.getModelConformationOfKind=Q;function J(ne){return Q(ne.kind,ne.model)}
15v.getConformation=J;function ae(ne,$){return ne===b.Atomic?$.atomicHierarchy:ne===b.Spheres?$.coarseHierarchy.spheres:$.coarseHierarchy.gaussians}v.getModelHierarchyOfKind=ae;function te(ne){return ae(ne.kind,ne.model)}v.getHierarchy=te})(m||(lp.Unit=m={})),lp}var As={},oR;function VT(){if(oR)return As;oR=1,Object.defineProperty(As,"__esModule",{value:!0}),As.StructureLookup3D=As.StructureResult=void 0,As.StructureLookup3DResultContext=o;const e=rt(),t=Ge(),r=at(),n=xl(),i=Q$();var c;(function(h){function f(g,a,d,p){g.indices[g.count]=d,g.units[g.count]=a,g.squaredDistances[g.count]=p,g.count++}h.add=f;function y(){return{count:0,indices:[],units:[],squaredDistances:[]}}h.create=y;function _(g,a){for(let d=0;d<a.count;++d)g.indices[d]=a.indices[d],g.units[d]=a.units[d],g.squaredDistances[d]=a.squaredDistances[d];return g.count=a.count,g}h.copy=_})(c||(As.StructureResult=c={}));function o(){return{result:c.create(),closeUnitsResult:e.Result.create(),unitGroupResult:e.Result.create()}}class s{findUnitIndices(f,y,_,g){return this.unitLookup.find(f,y,_,g)}find(f,y,_,g,a){return this._find(f,y,_,g,a??this.findContext)}_find(f,y,_,g,a){e.Result.reset(a.result);const{units:d}=this.structure,p=this.unitLookup.find(f,y,_,g,a.closeUnitsResult);if(p.count===0)return a.result;for(let u=0,m=p.count;u<m;u++){const v=d[p.indices[u]];t.Vec3.set(this.pivot,f,y,_),v.conformation.operator.isIdentity||t.Vec3.transformMat4(this.pivot,this.pivot,v.conformation.operator.inverse);const P=v.lookup3d.find(this.pivot[0],this.pivot[1],this.pivot[2],g,a.unitGroupResult);for(let C=0,l=P.count;C<l;C++)c.add(a.result,v,P.indices[C],P.squaredDistances[C])}return a.result}nearest(f,y,_,g=1,a){return this._nearest(f,y,_,g,a??this.findContext)}_nearest(f,y,_,g,a){const d=a.result,p=this.heap;e.Result.reset(d),p.clear();const{units:u}=this.structure;let m=0;const v=this.unitLookup.nearest(f,y,_,u.length,C=>(m+=u[C].elements.length)>=g,a.closeUnitsResult);if(v.count===0)return d;let b=0,P=-Number.MAX_VALUE;for(let C=0,l=v.count;C<l;C++){const S=v.squaredDistances[C];if(b>=g&&P<S)break;t.Vec3.set(this.pivot,f,y,_);const T=u[v.indices[C]];T.conformation.operator.isIdentity||t.Vec3.transformMat4(this.pivot,this.pivot,T.conformation.operator.inverse);const x=T.lookup3d.nearest(this.pivot[0],this.pivot[1],this.pivot[2],g,void 0,a.unitGroupResult);if(x.count!==0){b+=x.count,P=Math.max(P,x.squaredDistances[x.count-1]);for(let M=0,D=x.count;M<D;M++)p.insert(x.squaredDistances[M],{index:x.indices[M],unit:T})}}if(g===1){const C=p.findMinimum();if(C){const{key:l}=C,{unit:S,index:T}=C.value;c.add(d,S,T,l)}}else for(;!p.isEmpty()&&d.count<g;){const C=p.extractMinimum(),{key:l}=C,{unit:S,index:T}=C.value;c.add(d,S,T,l)}return d}findIntoBuilder(f,y,_,g,a){const{units:d}=this.structure,p=this.unitLookup.find(f,y,_,g);if(p.count!==0)for(let u=0,m=p.count;u<m;u++){const v=d[p.indices[u]];t.Vec3.set(this.pivot,f,y,_),v.conformation.operator.isIdentity||t.Vec3.transformMat4(this.pivot,this.pivot,v.conformation.operator.inverse);const P=v.lookup3d.find(this.pivot[0],this.pivot[1],this.pivot[2],g);if(P.count===0)continue;const C=v.elements;a.beginUnit(v.id);for(let l=0,S=P.count;l<S;l++)a.addElement(C[P.indices[l]]);a.commitUnit()}}findIntoBuilderIf(f,y,_,g,a,d){const{units:p}=this.structure,u=this.unitLookup.find(f,y,_,g);if(u.count===0)return;const m=n.StructureElement.Location.create(this.structure);for(let v=0,b=u.count;v<b;v++){const P=p[u.indices[v]];t.Vec3.set(this.pivot,f,y,_),P.conformation.operator.isIdentity||t.Vec3.transformMat4(this.pivot,this.pivot,P.conformation.operator.inverse);const l=P.lookup3d.find(this.pivot[0],this.pivot[1],this.pivot[2],g);if(l.count===0)continue;const S=P.elements;m.unit=P,a.beginUnit(P.id);for(let T=0,A=l.count;T<A;T++)m.element=S[l.indices[T]],d(m)&&a.addElement(m.element);a.commitUnit()}}findIntoBuilderWithRadius(f,y,_,g,a,d,p,u){const{units:m}=this.structure,v=this.unitLookup.find(f,y,_,d);if(v.count===0)return;const b=n.StructureElement.Location.create(this.structure),P=g+a+d;for(let C=0,l=v.count;C<l;C++){const S=m[v.indices[C]];t.Vec3.set(this.pivot,f,y,_),S.conformation.operator.isIdentity||t.Vec3.transformMat4(this.pivot,this.pivot,S.conformation.operator.inverse);const A=S.lookup3d.find(this.pivot[0],this.pivot[1],this.pivot[2],P);if(A.count===0)continue;const x=S.elements;b.unit=S,u.beginUnit(S.id);for(let M=0,D=A.count;M<D;M++){b.element=x[A.indices[M]];const V=p(b);Math.sqrt(A.squaredDistances[M])-g-V>d||u.addElement(x[A.indices[M]])}u.commitUnit()}}check(f,y,_,g){const{units:a}=this.structure,d=this.unitLookup.find(f,y,_,g);if(d.count===0)return!1;for(let p=0,u=d.count;p<u;p++){const m=a[d.indices[p]];if(t.Vec3.set(this.pivot,f,y,_),m.conformation.operator.isIdentity||t.Vec3.transformMat4(this.pivot,this.pivot,m.conformation.operator.inverse),m.lookup3d.check(this.pivot[0],this.pivot[1],this.pivot[2],g))return!0}return!1}approxNearest(f,y,_,g,a){return this._approxNearest(f,y,_,g,a??this.findContext)}_approxNearest(f,y,_,g,a){e.Result.reset(a.result);const{units:d}=this.structure,p=this.unitLookup.find(f,y,_,g,a.closeUnitsResult);if(p.count===0)return a.result;let u=Number.MAX_VALUE;for(let m=0,v=p.count;m<v;m++){const b=d[p.indices[m]];t.Vec3.set(this.pivot,f,y,_),b.conformation.operator.isIdentity||t.Vec3.transformMat4(this.pivot,this.pivot,b.conformation.operator.inverse);const C=b.lookup3d.approxNearest(this.pivot[0],this.pivot[1],this.pivot[2],g,a.unitGroupResult);for(let l=0,S=C.count;l<S;l++)C.squaredDistances[l]<u&&(c.add(a.result,b,C.indices[l],C.squaredDistances[l]),u=C.squaredDistances[l])}return a.result}get boundary(){return this.structure.boundary}constructor(f){this.structure=f,this.pivot=(0,t.Vec3)(),this.heap=new i.FibonacciHeap,this.findContext=o();const{units:y,boundary:_}=f,g=y.length,a=new Float32Array(g),d=new Float32Array(g),p=new Float32Array(g),u=new Float32Array(g),m=(0,t.Vec3)();for(let b=0;b<g;b++){const P=y[b],C=P.boundary.sphere;t.Vec3.transformMat4(m,C.center,P.conformation.operator.matrix),a[b]=m[0],d[b]=m[1],p[b]=m[2],u[b]=C.radius}const v={x:a,y:d,z:p,radius:u,indices:r.OrderedSet.ofBounds(0,g)};this.unitLookup=(0,e.GridLookup3D)(v,_)}}return As.StructureLookup3D=s,As}var Tp={},xp={},ux={},Ap={},Ms={},sR;function If(){if(sR)return Ms;sR=1,Object.defineProperty(Ms,"__esModule",{value:!0}),Ms.structureUnion=r,Ms.structureAreEqual=i,Ms.structureAreIntersecting=c,Ms.structureIntersect=o,Ms.structureSubtract=s;const e=jr(),t=at();function r(h,f){if(f.length===0)return e.Structure.Empty;if(f.length===1)return f[0];const y=new Map,_=new Set;for(const{units:a}of f)for(let d=0,p=a.length;d<p;d++){const u=a[d];if(y.has(u.id)){if(_.has(u.id))continue;const m=t.SortedArray.union(y.get(u.id),u.elements);
15y.set(u.id,m),m.length===h.unitMap.get(u.id).elements.length&&_.add(u.id)}else y.set(u.id,u.elements),u.elements.length===h.unitMap.get(u.id).elements.length&&_.add(u.id)}const g=h.subsetBuilder(!0);return y.forEach(n,g),g.getStructure()}function n(h,f){this.setUnit(f,h)}function i(h,f){if(h===f)return!0;if(h.units.length!==f.units.length)return!1;const y=h.units,_=f.unitMap;for(let g=0,a=y.length;g<a;g++){const d=y[g];if(!_.has(d.id))return!1;const p=_.get(d.id);if(!t.SortedArray.areEqual(d.elements,p.elements))return!1}return!0}function c(h,f){if(h===f)return!0;let y,_;h.units.length<f.units.length?(y=h,_=f):(y=f,_=h);const g=y.units,a=_.unitMap;for(let d=0,p=g.length;d<p;d++){const u=g[d];if(!a.has(u.id))continue;const m=a.get(u.id);if(t.SortedArray.areIntersecting(u.elements,m.elements))return!0}return!1}function o(h,f){if(h===f)return h;if(!c(h,f))return e.Structure.Empty;let y,_;h.units.length<f.units.length?(y=h,_=f):(y=f,_=h);const g=y.units,a=_.unitMap,d=[];for(let p=0,u=g.length;p<u;p++){const m=g[p];if(!a.has(m.id))continue;const v=a.get(m.id);if(t.SortedArray.areIntersecting(m.elements,v.elements)){const b=t.SortedArray.intersect(m.elements,v.elements);d[d.length]=m.getChild(b)}}return e.Structure.create(d,{parent:h.parent||f.parent})}function s(h,f){if(h===f)return e.Structure.Empty;if(!c(h,f))return h;const y=h.units,_=f.unitMap,g=[];for(let a=0,d=y.length;a<d;a++){const p=y[a];if(!_.has(p.id)){g[g.length]=p;continue}const u=_.get(p.id),m=t.SortedArray.subtract(p.elements,u.elements);m.length>0&&(g[g.length]=p.getChild(m))}return e.Structure.create(g,{parent:h.parent||f.parent})}return Ms}var cR;function za(){if(cR)return Ap;cR=1,Object.defineProperty(Ap,"__esModule",{value:!0}),Ap.StructureSelection=void 0;const e=ha(),t=jr(),r=If(),n=at();var i;return(function(c){function o(l,S){return{kind:"singletons",source:l,structure:S}}c.Singletons=o;function s(l,S){return{kind:"sequence",source:l,structures:S}}c.Sequence=s;function h(l){return o(l,t.Structure.Empty)}c.Empty=h;function f(l){return l.kind==="singletons"}c.isSingleton=f;function y(l){return f(l)?l.structure.units.length===0:l.structures.length===0}c.isEmpty=y;function _(l){return f(l)?l.structure.elementCount:l.structures.length}c.structureCount=_;function g(l){return y(l)?t.Structure.Empty:f(l)?l.structure:(0,r.structureUnion)(l.source,l.structures)}c.unionStructure=g;function a(l){const S=[],{unitMap:T}=l.source;for(const A of g(l).units)A===T.get(A.id)?S[S.length]={unit:A,indices:n.OrderedSet.ofBounds(0,A.elements.length)}:S[S.length]={unit:A,indices:n.OrderedSet.ofSortedArray(n.SortedArray.indicesOf(T.get(A.id).elements,A.elements))};return t.StructureElement.Loci(l.source,S)}c.toLociWithCurrentUnits=a;function d(l){const S=[],{unitMap:T}=l.source;for(const A of g(l).units){const x=T.get(A.id);x===A?S[S.length]={unit:x,indices:n.OrderedSet.ofBounds(0,x.elements.length)}:S[S.length]={unit:x,indices:n.OrderedSet.ofSortedArray(n.SortedArray.indicesOf(x.elements,A.elements))}}return t.StructureElement.Loci(l.source,S)}c.toLociWithSourceUnits=d;function p(l,S,T){return S.length===0?h(l):T?o(l,(0,r.structureUnion)(l,S)):s(l,S)}class u{add(S){const T=S.elementCount;T!==0&&(this.structures[this.structures.length]=S,T!==1&&(this.allSingletons=!1))}getSelection(){return p(this.source,this.structures,this.allSingletons)}constructor(S){this.source=S,this.structures=[],this.allSingletons=!0}}class m{add(S){const T=S.elementCount;T===0||!this.uniqueSets.add(S)||(this.structures[this.structures.length]=S,T!==1&&(this.allSingletons=!1))}getSelection(){return p(this.structure,this.structures,this.allSingletons)}constructor(S){this.structure=S,this.structures=[],this.allSingletons=!0,this.uniqueSets=(0,e.HashSet)(t.Structure.hashCode,t.Structure.areUnitIdsAndIndicesEqual)}}function v(l){return new u(l)}c.LinearBuilder=v;function b(l){return new m(l)}c.UniqueBuilder=b;function P(l,S){let T=0;if(c.isSingleton(l))for(const A of l.structure.units){const{elements:x}=A;for(let M=0,D=x.length;M<D;M++){const V=t.Structure.create([A.getChild(n.SortedArray.ofSingleton(x[M]))],{parent:l.source});S(V,T++)}}else for(const A of l.structures)S(A,T++)}c.forEach=P;function C(l,S){return f(l)?o(S,l.structure):s(S,l.structures)}c.withInputStructure=C})(i||(Ap.StructureSelection=i={})),Ap}var Mp={},Dp={},xa={},Ip={},wp={},uR;function rI(){if(uR)return wp;uR=1,Object.defineProperty(wp,"__esModule",{value:!0}),wp.Schema=void 0;const e=dr(),t=nI(),r=kT();function n(_){return!!_.items}function i(_){const{and:g}=e.MolScriptBuilder.core.logic,{eq:a,gre:d,lte:p}=e.MolScriptBuilder.core.rel,{macromolecular:u,ihm:m,core:v}=e.MolScriptBuilder.struct.atomProperty,b={};s(_.label_entity_id)&&(b["entity-test"]=a([u.label_entity_id(),_.label_entity_id]));const P=[];s(_.operator_name)&&P.push(a([v.operatorName(),_.operator_name])),s(_.instance_id)&&P.push(a([v.instanceId(),_.instance_id])),s(_.label_asym_id)&&P.push(a([u.label_asym_id(),_.label_asym_id])),s(_.auth_asym_id)&&P.push(a([u.auth_asym_id(),_.auth_asym_id])),P.length===1?b["chain-test"]=P[0]:P.length>1&&(b["chain-test"]=g(P));const C=[];s(_.label_seq_id)&&C.push(m.hasSeqId({0:_.label_seq_id})),s(_.auth_seq_id)&&C.push(a([u.auth_seq_id(),_.auth_seq_id])),s(_.residue_index)&&C.push(a([u.residueSourceIndex(),_.residue_index])),s(_.pdbx_PDB_ins_code)&&C.push(a([u.pdbx_PDB_ins_code(),_.pdbx_PDB_ins_code])),(s(_.beg_label_seq_id)||s(_.end_label_seq_id))&&C.push(m.overlapsSeqIdRange({beg:_.beg_label_seq_id,end:_.end_label_seq_id})),s(_.beg_auth_seq_id)&&C.push(d([u.auth_seq_id(),_.beg_auth_seq_id])),s(_.end_auth_seq_id)&&C.push(p([u.auth_seq_id(),_.end_auth_seq_id])),C.length===1?b["residue-test"]=C[0]:C.length>1&&(b["residue-test"]=g(C));const l=[];return s(_.label_comp_id)&&l.push(a([u.label_comp_id(),_.label_comp_id])),s(_.auth_comp_id)&&l.push(a([u.auth_comp_id(),_.auth_comp_id])),s(_.atom_id)&&l.push(a([u.id(),_.atom_id])),s(_.atom_index)&&l.push(a([e.MolScriptBuilder.struct.atomProperty.core.sourceIndex(),_.atom_index])),s(_.label_atom_id)&&l.push(a([u.label_atom_id(),_.label_atom_id])),s(_.auth_atom_id)&&l.push(a([u.auth_atom_id(),_.auth_atom_id])),s(_.type_symbol)&&l.push(a([e.MolScriptBuilder.struct.atomProperty.core.elementSymbol(),_.type_symbol.toUpperCase()])),l.length===1?b["atom-test"]=l[0]:l.length>1&&(b["atom-test"]=g(l)),e.MolScriptBuilder.struct.generator.atomGroups(b)}function c(_){const g=[];return h(_,a=>g.push(i(a))),g.length===1?g[0]:o(g)}function o(_){return e.MolScriptBuilder.struct.combinator.merge(_.map(g=>e.MolScriptBuilder.struct.modifier.union([g])))}function s(_){return _!=null}function h(_,g){if(n(_))if(Array.isArray(_.items))if(_.prefix)for(const a of _.items)g(Object.assign({},_.prefix,a));else for(const a of _.items)g(a);else{const a={..._.prefix},d=Object.keys(_.items),p=_.items[d[0]].length;for(let u=0;u<p;u++){for(const m of d)a[m]=_.items[m][u];g(a)}}else g(_)}function f(_,g,a){const d=c(g);return r.Loci.fromExpression(_,d,a)}function y(_,g,a){const d=f(_,g,a);return t.Bundle.fromLoci(d)}return wp.Schema={forEachItem:h,toExpression:c,toLoci:f,toBundle:y},wp}var lR;function nI(){if(lR)return Ip;lR=1,Object.defineProperty(Ip,"__esModule",{value:!0}),Ip.Bundle=void 0;const e=at(),t=Wa(),r=_t(),n=Ga(),i=kT(),c=dr(),o=RT(),s=rI();var h;return(function(f){f.Empty={hash:-1,elements:[]};function y(l,S){return p(o.StructureSelection.toLociWithSourceUnits(o.StructureSelection.Singletons(l,S)))}f.fromSubStructure=y;function _(l){return p(o.StructureSelection.toLociWithSourceUnits(l))}f.fromSelection=_;function g(l,S,T){return p(i.Loci.fromExpression(l,S,T))}f.fromExpression=g;function a(l,S,T){return p(i.Loci.fromQuery(l,S,T))}f.fromQuery=a;function d(l,S,T){return s.Schema.toBundle(l,S,T)}f.fromSchema=d;function p(l){const S=[];for(const x of l.elements){const{unit:M,indices:D}=x;if(e.OrderedSet.size(D)===0)continue;const V=[],R=[];if(e.OrderedSet.isInterval(D))e.OrderedSet.size(D)===1?R.push(e.Interval.min(D)):V.push(e.Interval.min(D),e.Interval.max(D));else{let E=0;const I=D.length;for(;E<I;){const B=E;for(E++;E<I&&D[E-1]+1===D[E];)E++;const w=E;if(w-B>2)V.push(D[B],D[w-1]);else for(let O=B;O<w;O++)R[R.length]=D[O]}}S.push({unit:M,set:e.SortedArray.ofSortedArray(R),ranges:n.SortedRanges.ofSortedRanges(V)})}const T=new Map;for(let x=0,M=S.length;x<M;++x){const D=S[x],V=(0,r.hash2)((0,r.hashFnv32a)(D.ranges),(0,r.hashFnv32a)(D.set));if(T.has(V)){const{groupedUnits:R}=T.get(V);R.has(D.unit.invariantId)?R.get(D.unit.invariantId).push(D.unit.id):R.set(D.unit.invariantId,[D.unit.id])}else{const R=new Map;R.set(D.unit.invariantId,[D.unit.id]),T.set(V,{groupedUnits:R,set:D.set,ranges:D.ranges})}}const A=[];return T.forEach(x=>{const M=[];
15x.groupedUnits.forEach(D=>M.push(e.SortedArray.ofUnsortedArray(D))),M.sort((D,V)=>D[0]-V[0]),A.push({groupedUnits:M,set:x.set,ranges:x.ranges})}),{hash:l.structure.hashCode,elements:A}}f.fromLoci=p;function u(l,S){const T=[];for(let A=0,x=l.length;A<x;++A){const M=l[A];S.unitMap.has(M)&&T.push(S.unitMap.get(M))}return T}function m(l,S){l.hash!==-1&&(l.hash,S.hashCode);const T=[];for(const A of l.elements)for(const x of A.groupedUnits){const M=u(x,S);if(M.length===0)continue;let D;if(A.ranges.length===0)D=A.set;else if(A.set.length===0)if(A.ranges.length===2)D=e.Interval.ofRange(A.ranges[0],A.ranges[1]);else{const V=new Int32Array(n.SortedRanges.size(A.ranges));n.SortedRanges.forEach(A.ranges,(R,E)=>V[E]=R),D=e.SortedArray.ofSortedArray(V)}else{const V=n.SortedRanges.size(A.ranges),R=new Int32Array(A.set.length+V);n.SortedRanges.forEach(A.ranges,(E,I)=>R[I]=E),R.set(A.set,V),D=e.SortedArray.ofUnsortedArray(R)}for(const V of M)T.push({unit:V,indices:D})}return(0,i.Loci)(S,T)}f.toLoci=m;function v(l,S){l.hash!==-1&&(l.hash,S.hashCode);const T=[];for(const A of l.elements)for(const x of A.groupedUnits){const M=u(x,S);if(M.length===0)continue;const D=M[0].elements,V=n.SortedRanges.size(A.ranges),R=A.set.length,E=new Int32Array(R+V);let I;if(V===0){for(let B=0,w=R;B<w;++B)E[B]=D[A.set[B]];I=e.SortedArray.ofSortedArray(E)}
15else if(R===0)n.SortedRanges.forEach(A.ranges,(B,w)=>E[w]=D[B]),I=e.SortedArray.ofSortedArray(E);else if(e.SortedArray.min(A.set)>n.SortedRanges.max(A.ranges)){n.SortedRanges.forEach(A.ranges,(B,w)=>E[w]=D[B]);for(let B=0,w=R;B<w;++B)E[B+V]=D[A.set[B]];I=e.SortedArray.ofSortedArray(E)}else if(n.SortedRanges.min(A.ranges)>e.SortedArray.max(A.set)){for(let B=0,w=R;B<w;++B)E[B]=D[A.set[B]];n.SortedRanges.forEach(A.ranges,(B,w)=>E[w+R]=D[B]),I=e.SortedArray.ofSortedArray(E)}else{n.SortedRanges.forEach(A.ranges,(B,w)=>E[w]=D[B]);for(let B=0,w=R;B<w;++B)E[B+V]=D[A.set[B]];I=e.SortedArray.ofUnsortedArray(E)}for(const B of M)T.push(B.getChild(I))}return t.Structure.create(T,{parent:S})}f.toStructure=v;function b(l){return c.MolScriptBuilder.internal.generator.bundleElement({groupedUnits:c.MolScriptBuilder.core.type.list(l.groupedUnits.map(S=>c.MolScriptBuilder.core.type.list(S))),ranges:c.MolScriptBuilder.core.type.list(l.ranges),set:c.MolScriptBuilder.core.type.list(l.set)})}function P(l){return c.MolScriptBuilder.internal.generator.bundle({elements:c.MolScriptBuilder.core.type.list(l.elements.map(b))})}f.toExpression=P;function C(l,S){if(l.elements.length!==S.elements.length)return!1;for(let T=0,A=l.elements.length;T<A;++T){const x=l.elements[T],M=S.elements[T];if(x.groupedUnits.length!==M.groupedUnits.length)return!1;for(let D=0,V=M.groupedUnits.length;D<V;++D)if(!e.SortedArray.areEqual(x.groupedUnits[D],M.groupedUnits[D]))return!1;if(!e.SortedArray.areEqual(x.set,M.set)||!n.SortedRanges.areEqual(x.ranges,M.ranges))return!1}return!0}f.areEqual=C})(h||(Ip.Bundle=h={})),Ip}var dR;function iI(){if(dR)return xa;dR=1,Object.defineProperty(xa,"__esModule",{value:!0}),xa.defaultBondTest=s,xa.atomicSequence=h,xa.water=f,xa.atomicHet=y,xa.spheres=_,xa.bundleElementImpl=g,xa.bundleGenerator=a;const e=at(),t=xl(),r=jr(),n=Wa(),i=za(),c=dt(),o=nI();function s(d){return c.BondType.isCovalent(d.atomicBond.type)}function h(){return function(p){const{inputStructure:u}=p,m=t.StructureElement.Location.create(u),v=[];for(const b of u.units){if(b.kind!==r.Unit.Kind.Atomic)continue;m.unit=b;const P=b.elements;if(m.element=P[0],r.StructureProperties.entity.type(m)!=="polymer")continue;const C=e.Segmentation.transientSegments(b.model.atomicHierarchy.residueAtomSegments,P);let l=0;for(;C.hasNext;)l++,C.move();l<8||v.push(b)}return i.StructureSelection.Singletons(u,n.Structure.create(v,{parent:u}))}}function f(){return function(p){const{inputStructure:u}=p,m=t.StructureElement.Location.create(u),v=[];for(const b of u.units){if(b.kind!==r.Unit.Kind.Atomic)continue;m.unit=b;const P=b.elements;m.element=P[0],r.StructureProperties.entity.type(m)==="water"&&v.push(b)}return i.StructureSelection.Singletons(u,n.Structure.create(v,{parent:u}))}}function y(){return function(p){const{inputStructure:u}=p,m=t.StructureElement.Location.create(u),v=[];for(const b of u.units){if(b.kind!==r.Unit.Kind.Atomic)continue;m.unit=b;const P=b.elements;if(m.element=P[0],r.StructureProperties.entity.type(m)!=="water"){if(r.StructureProperties.entity.type(m)==="polymer"){const C=e.Segmentation.transientSegments(b.model.atomicHierarchy.residueAtomSegments,P);let l=0;for(;C.hasNext;)l++,C.move();if(l>=8)continue}v.push(b)}}return i.StructureSelection.Singletons(u,n.Structure.create(v,{parent:u}))}}function _(){return function(p){const{inputStructure:u}=p,m=[];for(const v of u.units)v.kind===r.Unit.Kind.Spheres&&m.push(v);return i.StructureSelection.Singletons(u,n.Structure.create(m,{parent:u}))}}function g(d,p,u){return{groupedUnits:d,ranges:p,set:u}}function a(d){return function(u){const m={hash:u.inputStructure.hashCode,elements:d};return i.StructureSelection.Sequence(u.inputStructure,[o.Bundle.toStructure(m,u.inputStructure)])}}return xa}var fR;function rX(){if(fR)return Dp;fR=1,Object.defineProperty(Dp,"__esModule",{value:!0}),Dp.QueryContext=void 0;const e=jr(),t=ci(),r=dt(),n=iI();class i{pushCurrentElement(){return this.currentElementStack[this.currentElementStack.length]=this.element,this.element=e.StructureElement.Location.create(void 0),this.element}popCurrentElement(){this.element=this.currentElementStack.pop()}pushCurrentBond(){return this.atomicBond&&this.currentAtomicBondStack.push(this.atomicBond),this.atomicBond=new c,this.atomicBond}popCurrentBond(){this.currentAtomicBondStack.length>0?this.atomicBond=this.currentAtomicBondStack.pop():this.atomicBond=void 0}pushCurrentStructure(){this.currentStructure&&this.currentStructureStack.push(this.currentStructure)}popCurrentStructure(){this.currentStructureStack.length?this.currentStructure=this.currentStructureStack.pop():this.currentStructure=void 0}pushInputStructure(s){this.inputStructureStack.push(this.inputStructure),this.inputStructure=s}popInputStructure(){if(this.inputStructureStack.length===0)throw new Error("Mu
15st push before pop.");this.inputStructure=this.inputStructureStack.pop()}throwIfTimedOut(){if(this.timeoutMs!==0&&(0,t.now)()-this.timeCreated>this.timeoutMs)throw new Error(`The query took too long to execute (> ${this.timeoutMs/1e3}s).`)}tryGetCurrentSelection(){if(!this.currentSelection)throw new Error("The current selection is not assigned.");return this.currentSelection}constructor(s,h){this.currentElementStack=[],this.currentAtomicBondStack=[],this.currentStructureStack=[],this.inputStructureStack=[],this.timeCreated=(0,t.now)(),this.element=e.StructureElement.Location.create(void 0),this.currentStructure=void 0,this.atomicBond=new c,this.currentSelection=void 0,this.inputStructure=s,this.timeoutMs=h&&h.timeoutMs||0,this.currentSelection=h&&h.currentSelection}}Dp.QueryContext=i;class c{constructor(){this.a=e.StructureElement.Location.create(void 0),this.aIndex=0,this.b=e.StructureElement.Location.create(void 0),this.bIndex=0,this.type=r.BondType.Flag.None,this.order=0,this.key=-1,this.testFn=n.defaultBondTest}setStructure(s){this.a.structure=s,this.b.structure=s}setTestFn(s){this.testFn=s||n.defaultBondTest}test(s,h){return this.testFn(s)?!0:h?(this.swap(),this.testFn(s)):!1}swap(){const s=this.aIndex;this.aIndex=this.bIndex,this.bIndex=s;const h=this.a.unit;this.a.unit=this.b.unit,this.b.unit=h;const f=this.a.element;this.a.element=this.b.element,this.b.element=f}get length(){return e.StructureElement.Location.distance(this.a,this.b)}}return Dp}var mR;function VJ(){if(mR)return Mp;mR=1,Object.defineProperty(Mp,"__esModule",{value:!0}),Mp.StructureQuery=void 0;const e=za(),t=rX();var r;return(function(n){function i(o,s,h){return o(new t.QueryContext(s,h))}n.run=i;function c(o,s,h){const f=o(new t.QueryContext(s,h));return e.StructureSelection.toLociWithSourceUnits(f)}n.loci=c})(r||(Mp.StructureQuery=r={})),Mp}var lx={},Ac={},pR;function nX(){if(pR)return Ac;pR=1,Object.defineProperty(Ac,"__esModule",{value:!0}),Ac.LinearGroupingBuilder=Ac.UniqueStructuresBuilder=void 0;const e=jr(),t=za(),r=ha(),n=If();class i{add(s){s.elementCount&&(s.elementCount!==1&&(this.allSingletons=!1),this.set.add(s)&&(this.structures[this.structures.length]=s))}getSelection(){return this.allSingletons?t.StructureSelection.Singletons(this.source,(0,n.structureUnion)(this.source,this.structures)):t.StructureSelection.Sequence(this.source,this.structures)}constructor(s){this.source=s,this.set=(0,r.HashSet)(e.Structure.hashCode,e.Structure.areUnitIdsAndIndicesEqual),this.structures=[],this.allSingletons=!0}}Ac.UniqueStructuresBuilder=i;class c{add(s,h,f){let y=this.builderMap.get(s);y||(y=this.source.subsetBuilder(!0),this.builders[this.builders.length]=y,this.builderMap.set(s,y)),y.addToUnit(h,f)}allSingletons(){for(let s=0,h=this.builders.length;s<h;s++)if(this.builders[s].elementCount>1)return!1;return!0}singletonSelection(){const s=this.source.subsetBuilder(!0),h=e.StructureElement.Location.create(this.source);for(let f=0,y=this.builders.length;f<y;f++)this.builders[f].setSingletonLocation(h),s.addToUnit(h.unit.id,h.element);return t.StructureSelection.Singletons(this.source,s.getStructure())}fullSelection(){const s=new Array(this.builders.length);for(let h=0,f=this.builders.length;h<f;h++)s[h]=this.builders[h].getStructure();return t.StructureSelection.Sequence(this.source,s)}getSelection(){return this.builders.length===0?t.StructureSelection.Empty(this.source):this.allSingletons()?this.singletonSelection():this.fullSelection()}constructor(s){this.source=s,this.builders=[],this.builderMap=new Map}}return Ac.LinearGroupingBuilder=c,Ac}var hR;function iX(){return hR||(hR=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.all=e.none=void 0,e.residues=y,e.chains=_,e.atoms=d,e.rings=b,e.querySelection=P,e.bondedAtomicPairs=C;const t=ha(),r=at(),n=jr(),i=Wa(),c=za(),o=nX(),s=If(),h=l=>c.StructureSelection.Sequence(l.inputStructure,[]);e.none=h;const f=l=>c.StructureSelection.Singletons(l.inputStructure,l.inputStructure);e.all=f;function y(l){return d({...l,groupBy:S=>n.StructureProperties.residue.key(S.element)})}function _(l){return d({...l,groupBy:S=>n.StructureProperties.chain.key(S.element)})}function g(l){return!0}function a(l){return 0}function d(l){if(!l||!l.atomTest&&!l.residueTest&&!l.chainTest&&!l.entityTest&&!l.unitTest&&!l.groupBy)return e.all;if(l.atomTest&&!l.residueTest&&!l.chainTest&&!l.entityTest&&!l.unitTest&&!l.groupBy)return p(l.atomTest);const S={unitTest:l.unitTest||g,entityTest:l.entityTest||g,chainTest:l.chainTest||g,residueTest:l.residueTest||g,atomTest:l.atomTest||g,groupBy:l.groupBy||a};return l.groupBy?m(S):u(S)}function p(l){return function(T){const{inputStructure:A}=T,{units:x}
15=A,M=T.pushCurrentElement(),D=A.subsetBuilder(!0);M.structure=A;for(const V of x){M.unit=V;const R=V.elements;D.beginUnit(V.id);for(let E=0,I=R.length;E<I;E++)M.element=R[E],l(T)&&D.addElement(M.element);D.commitUnit(),T.throwIfTimedOut()}return T.popCurrentElement(),c.StructureSelection.Singletons(A,D.getStructure())}}function u({unitTest:l,entityTest:S,chainTest:T,residueTest:A,atomTest:x}){return function(D){const{inputStructure:V}=D,{units:R}=V,E=D.pushCurrentElement(),I=V.subsetBuilder(!0),B=A===g&&x===g,w=x===g;E.structure=V;for(const O of R){if(E.unit=O,!l(D))continue;const{elements:F,model:L}=O;if(I.beginUnit(O.id),O.kind===n.Unit.Kind.Atomic){const U=r.Segmentation.transientSegments(O.model.atomicHierarchy.chainAtomSegments,F),q=r.Segmentation.transientSegments(O.model.atomicHierarchy.residueAtomSegments,F);for(;U.hasNext;){const N=U.move();if(E.element=F[N.start],!(!S(D)||!T(D))){if(B){I.addElementRange(F,N.start,N.end);continue}for(q.setSegment(N);q.hasNext;){const k=q.move();if(E.element=F[k.start],!!A(D)){if(w){I.addElementRange(F,k.start,k.end);continue}for(let j=k.start,H=k.end;j<H;j++)E.element=F[j],x(D)&&I.addElement(E.element)}}}}}else{const{chainElementSegments:U}=O.kind===n.Unit.Kind.Spheres?L.coarseHierarchy.spheres:L.coarseHierarchy.gaussians,q=r.Segmentation.transientSegments(U,F);for(;q.hasNext;){const N=q.move();if(E.element=F[N.start],!(!S(D)||!T(D))){if(B){I.addElementRange(F,N.start,N.end);continue}for(let k=N.start,j=N.end;k<j;k++)E.element=F[k],A(D)&&I.addElement(E.element)}}}I.commitUnit(),D.throwIfTimedOut()}return D.popCurrentElement(),c.StructureSelection.Singletons(V,I.getStructure())}}function m({unitTest:l,entityTest:S,chainTest:T,residueTest:A,atomTest:x,groupBy:M}){return function(V){const{inputStructure:R}=V,{units:E}=R,I=V.pushCurrentElement(),B=new o.LinearGroupingBuilder(R);I.structure=R;for(const w of E){if(I.unit=w,!l(V))continue;const{elements:O,model:F}=w;if(w.kind===n.Unit.Kind.Atomic){const L=r.Segmentation.transientSegments(F.atomicHierarchy.chainAtomSegments,O),U=r.Segmentation.transientSegments(F.atomicHierarchy.residueAtomSegments,O);for(;L.hasNext;){const q=L.move();if(I.element=O[q.start],!(!S(V)||!T(V)))for(U.setSegment(q);U.hasNext;){const N=U.move();if(I.element=O[N.start],!!A(V))for(let k=N.start,j=N.end;k<j;k++)I.element=O[k],x(V)&&B.add(M(V),w.id,I.element)}}}else{const{chainElementSegments:L}=w.kind===n.Unit.Kind.Spheres?F.coarseHierarchy.spheres:F.coarseHierarchy.gaussians,U=r.Segmentation.transientSegments(L,O);for(;U.hasNext;){const q=U.move();if(I.element=O[q.start],!(!S(V)||!T(V)))for(let N=q.start,k=q.end;N<k;N++)I.element=O[N],A(V)&&B.add(M(V),w.id,I.element)}}V.throwIfTimedOut()}return V.popCurrentElement(),B.getSelection()}}function v(l,S,T){const A=new Int32Array(S.length);for(let x=0,M=S.length;x<M;x++)A[x]=l.elements[S[x]];return i.Structure.create([l.getChild(r.SortedArray.ofSortedArray(A))],{parent:T})}function b(l,S){return function(A){const{units:x}=A.inputStructure,M=c.StructureSelection.LinearBuilder(A.inputStructure);if(!l||l.length===0){for(const D of x)if(n.Unit.isAtomic(D))if(S)for(const V of D.rings.aromaticRings)M.add(v(D,D.rings.all[V],A.inputStructure));else for(const V of D.rings.all)M.add(v(D,V,A.inputStructure))}else{const D=t.UniqueArray.create();for(let V=0;V<l.length;V++)t.UniqueArray.add(D,l[V],l[V]);for(const V of x){if(!n.Unit.isAtomic(V))continue;const R=V.rings;for(const E of D.array)if(R.byFingerprint.has(E))for(const I of R.byFingerprint.get(E))S&&!R.aromaticRings.includes(I)||M.add(v(V,R.all[I],A.inputStructure))}}return M.getSelection()}}function P(l,S,T=!1){return function(x){const M=l(x);if(c.StructureSelection.structureCount(M)===0)return M;const D=T?(0,s.structureSubtract)(x.inputStructure,c.StructureSelection.unionStructure(M)):c.StructureSelection.unionStructure(M);if(D.elementCount===0)return c.StructureSelection.Empty(x.inputStructure);x.throwIfTimedOut(),x.pushInputStructure(D);const V=S(x);return x.popInputStructure(),c.StructureSelection.withInputStructure(V,x.inputStructure)}}function C(l){return function(T){const A=T.inputStructure,x=A.interUnitBonds,M=c.StructureSelection.UniqueBuilder(T.inputStructure);T.pushCurrentBond();const D=T.atomicBond;D.setTestFn(l),D.setStructure(A);for(const V of A.units){if(V.kind!==n.Unit.Kind.Atomic)continue;const{offset:R,b:E,edgeProps:{flags:I,order:B,key:w}}=V.bonds;D.a.unit=V,D.b.unit=V;for(let O=0,F=V.elements.length;O<F;O++){D.aIndex=O,D.a.element=V.elements[O];for(let L=R[O],U=R[O+1];L<U;L++)if(D.bIndex=E[L],D.b.element=V.elements[E[L]],D.type=I[L],D.order=B[L],D.key=w[L],D.test(T,!1)){const q=A.subsetBu
15ilder(!1);q.beginUnit(V.id),q.addElement(D.a.element),q.addElement(D.b.element),q.commitUnit(),M.add(q.getStructure())}}}for(const V of x.edges)if(D.a.unit=A.unitMap.get(V.unitA),D.a.element=D.a.unit.elements[V.indexA],D.aIndex=V.indexA,D.b.unit=A.unitMap.get(V.unitB),D.b.element=D.b.unit.elements[V.indexB],D.bIndex=V.indexB,D.order=V.props.order,D.type=V.props.flag,D.key=V.props.key,D.test(T,!1)){const R=A.subsetBuilder(!1);R.addToUnit(D.a.unit.id,D.a.element),R.addToUnit(D.b.unit.id,D.b.element),M.add(R.getStructure())}return T.popCurrentBond(),M.getSelection()}}})(lx)),lx}var ki={},Vp={},gR;function EJ(){if(gR)return Vp;gR=1,Object.defineProperty(Vp,"__esModule",{value:!0}),Vp.StructureUniqueSubsetBuilder=void 0;const e=at(),t=_t(),r=OT(),n=Wa(),i=ha();class c{addToUnit(s,h){const f=this.unitMap.get(s);if(f)i.UniqueArray.add(f,h,h)&&this.elementCount++;else{const y=i.UniqueArray.create();i.UniqueArray.add(y,h,h),this.unitMap.set(s,y),this.ids[this.ids.length]=s,this.elementCount++}}has(s,h){const f=this.unitMap.get(s);return f?i.UniqueArray.has(f,h):!1}beginUnit(s){this.parentId=s,this.unitMap.has(s)?this.currentUnit=this.unitMap.get(s):this.currentUnit=this.currentUnit.array.length>0?i.UniqueArray.create():this.currentUnit}addElement(s){i.UniqueArray.add(this.currentUnit,s,s)&&this.elementCount++}commitUnit(){this.currentUnit.array.length===0||this.unitMap.has(this.parentId)||(this.ids[this.ids.length]=this.parentId,this.unitMap.set(this.parentId,this.currentUnit),this.parentId=-1)}getStructure(){if(this.isEmpty)return n.Structure.Empty;const s=[];(0,t.sortArray)(this.ids);const h=r.StructureSymmetry.UnitEquivalenceBuilder();for(let f=0,y=this.ids.length;f<y;f++){const _=this.ids[f],g=this.parent.unitMap.get(_),a=this.unitMap.get(_).array,d=a.length;if(a.length===g.elements.length){s[s.length]=g,h.add(g.id,g);continue}d>1&&(0,t.sortArray)(a);let p=g.getChild(e.SortedArray.ofSortedArray(a));const u=h.add(p.id,p);p!==u&&(p=u.applyOperator(p.id,p.conformation.operator,!0)),s[s.length]=p}return n.Structure.create(s,{parent:this.parent})}get isEmpty(){return this.elementCount===0}constructor(s){this.parent=s,this.ids=[],this.unitMap=e.IntMap.Mutable(),this.parentId=-1,this.currentUnit=i.UniqueArray.create(),this.elementCount=0}}return Vp.StructureUniqueSubsetBuilder=c,Vp}var Ep={},Bp={},dx={},fx={},_C={},yR;function aI(){if(yR)return _C;yR=1,Object.defineProperty(_C,"__esModule",{value:!0}),_C.SecondaryStructure=e;function e(t,r,n,i){return{type:t,key:r,elements:n,getIndex:i}}return _C}var Rp={},Mc={},ia={},mx={},vR;function oI(){return vR||(vR=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.File_=e.RUNNING_IN_NODEJS=void 0,e.RUNNING_IN_NODEJS=typeof process<"u"&&process.versions!=null&&process.versions.node!=null,e.File_=t();function t(){if(typeof File>"u"||e.RUNNING_IN_NODEJS){class r{arrayBuffer(){return this.blob.arrayBuffer()}slice(i,c,o){return this.blob.slice(i,c,o)}stream(){return this.blob.stream()}text(){return this.blob.text()}bytes(){return this.blob.bytes()}constructor(i,c,o){var s;this.blob=new Blob(i,o),this.size=this.blob.size,this.type=this.blob.type,this.name=c,this.lastModified=(s=o?.lastModified)!==null&&s!==void 0?s:0,this.webkitRelativePath=""}}return r}else return File}})(mx)),mx}var aa={},Fi={},bR;function BJ(){if(bR)return Fi;bR=1,Object.defineProperty(Fi,"__esModule",{value:!0}),Fi.toUint32=e,Fi.toInt32=t,Fi.readUshort=r,Fi.writeUshort=n,Fi.readUint=i,Fi.writeUint=c,Fi.readUTF8=h,Fi.writeUTF8=f,Fi.sizeUTF8=y;function e(_){return _>>>0}function t(_){return _>>0}function r(_,g){return _[g]|_[g+1]<<8}function n(_,g,a){_[g]=a&255,_[g+1]=a>>8&255}function i(_,g){return _[g+3]*(256*256*256)+(_[g+2]<<16|_[g+1]<<8|_[g])}function c(_,g,a){_[g]=a&255,_[g+1]=a>>8&255,_[g+2]=a>>16&255,_[g+3]=a>>24&255}function o(_,g,a){let d="";for(let p=0;p<a;p++)d+=String.fromCharCode(_[g+p]);return d}function s(_){return _.length<2?"0"+_:_}function h(_,g,a){let d="",p;for(let u=0;u<a;u++)d+="%"+s(_[g+u].toString(16));try{p=decodeURIComponent(d)}catch{return o(_,g,a)}return p}function f(_,g,a){const d=a.length;let p=0;for(let u=0;u<d;
15u++){const m=a.charCodeAt(u);if((m&4294967168)===0)_[g+p]=m,p++;else if((m&4294965248)===0)_[g+p]=192|m>>6,_[g+p+1]=128|m>>0&63,p+=2;else if((m&4294901760)===0)_[g+p]=224|m>>12,_[g+p+1]=128|m>>6&63,_[g+p+2]=128|m>>0&63,p+=3;else if((m&4294967295-(1<<21)+1)===0)_[g+p]=240|m>>18,_[g+p+1]=128|m>>12&63,_[g+p+2]=128|m>>6&63,_[g+p+3]=128|m>>0&63,p+=4;else throw new Error("e")}return p}function y(_){const g=_.length;let a=0;for(let d=0;d<g;d++){const p=_.charCodeAt(d);if((p&4294967168)===0)a++;else if((p&4294965248)===0)a+=2;else if((p&4294901760)===0)a+=3;else if((p&4294967295-(1<<21)+1)===0)a+=4;else throw new Error("e")}return a}return Fi}var Op={},_R;function RJ(){if(_R)return Op;_R=1,Object.defineProperty(Op,"__esModule",{value:!0}),Op.crc=r,Op.adler=n;const e=(function(){const i=new Uint32Array(256);for(let c=0;c<256;c++){let o=c;for(let s=0;s<8;s++)o&1?o=3988292384^o>>>1:o=o>>>1;i[c]=o}return i})();function t(i,c,o,s){for(let h=0;h<s;h++)i=e[(i^c[o+h])&255]^i>>>8;return i}function r(i,c,o){return t(4294967295,i,c,o)^4294967295}function n(i,c,o){let s=1,h=0,f=c;const y=c+o;for(;f<y;){const _=Math.min(f+5552,y);for(;f<_;)s+=i[f++],h+=s;s=s%65521,h=h%65521}return h<<16|s}return Op}var SC={},px={},SR;function aX(){return SR||(SR=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.U=void 0,e.checkCompressionStreamSupport=r,e.codes2map=n,e.makeCodes=i,e.revCodes=c;const t={deflate:void 0,"deflate-raw":void 0,gzip:void 0};function r(o){if(t[o]===void 0)try{new CompressionStream(o),t[o]=!0}catch{t[o]=!1}return!!t[o]}e.U=(function(){const o=Uint16Array,s=Uint32Array;return{next_code:new o(16),bl_count:new o(16),ordr:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],of0:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],exb:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],ldef:new o(32),df0:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],dxb:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],ddef:new s(32),flmap:new o(512),fltree:[],fdmap:new o(32),fdtree:[],lmap:new o(32768),ltree:[],ttree:[],dmap:new o(32768),dtree:[],imap:new o(512),itree:[],rev15:new o(32768),lhst:new s(286),dhst:new s(30),ihst:new s(19),lits:new s(15e3),strt:new o(65536),prev:new o(32768)}})(),(function(){for(let h=0;h<32768;h++){let f=h;f=(f&2863311530)>>>1|(f&1431655765)<<1,f=(f&3435973836)>>>2|(f&858993459)<<2,f=(f&4042322160)>>>4|(f&252645135)<<4,f=(f&4278255360)>>>8|(f&16711935)<<8,e.U.rev15[h]=(f>>>16|f<<16)>>>17}function s(h,f,y){for(;f--!==0;)h.push(0,y)}for(let h=0;h<32;h++)e.U.ldef[h]=e.U.of0[h]<<3|e.U.exb[h],e.U.ddef[h]=e.U.df0[h]<<4|e.U.dxb[h];s(e.U.fltree,144,8),s(e.U.fltree,112,9),s(e.U.fltree,24,7),s(e.U.fltree,8,8),i(e.U.fltree,9),n(e.U.fltree,9,e.U.flmap),c(e.U.fltree,9),s(e.U.fdtree,32,5),i(e.U.fdtree,5),n(e.U.fdtree,5,e.U.fdmap),c(e.U.fdtree,5),s(e.U.itree,19,0),s(e.U.ltree,286,0),s(e.U.dtree,30,0),s(e.U.ttree,320,0)})();function n(o,s,h){const f=o.length,y=e.U.rev15;for(let _=0;_<f;_+=2)if(o[_+1]!==0){const g=_>>1,a=o[_+1],d=g<<4|a,p=s-a;let u=o[_]<<p;const m=u+(1<<p);for(;u!==m;){const v=y[u]>>>15-s;h[v]=d,u++}}}function i(o,s){const h=o.length,f=e.U.bl_count;for(let g=0;g<=s;g++)f[g]=0;for(let g=1;g<h;g+=2)f[o[g]]++;const y=e.U.next_code;let _=0;f[0]=0;for(let g=1;g<=s;g++)_=_+f[g-1]<<1,y[g]=_;for(let g=0;g<h;g+=2){const a=o[g+1];a!==0&&(o[g]=y[a],y[a]++)}}function c(o,s){const h=e.U.rev15,f=15-s;for(let y=0;y<o.length;y+=2){const _=o[y]<<s-o[y+1];o[y]=h[_]>>>f}}})(px)),px}var CR;function OJ(){if(CR)return SC;CR=1,Object.defineProperty(SC,"__esModule",{value:!0}),SC._inflate=n;const e=aX();function t(y,_){const g=_===void 0;return _===void 0&&(_=new Uint8Array(y.length>>>2<<3)),{data:y,buf:_,noBuf:g,BFINAL:0,off:0,pos:0}}function r(y,_){const{data:g,noBuf:a}=y;let{buf:d,BFINAL:p,off:u,pos:m}=y,v=0;for(;p===0&&v<_;){let b,P,C=0,l=0;p=h(g,m,1),v+=1;const S=h(g,m+1,2);if(m+=3,S===0){(m&7)!==0&&(m+=8-(m&7));const T=(m>>>3)+4,A=g[T-4]|g[T-3]<<8;a&&(d=i(d,u+A)),d.set(new Uint8Array(g.buffer,g.byteOffset+T,A),u),m=T+A<<3,u+=A;continue}if(a&&(d=i(d,u+(1<<17))),S===1)b=e.U.flmap,P=e.U.fdmap,C=511,l=31;else if(S===2){const T=s(g,m,5)+257,A=s(g,m+5,5)+1,x=s(g,m+10,4)+4;m+=14;for(let R=0;R<38;R+=2)e.U.itree[R]=0,e.U.itree[R+1]=0;let M=1;for(let R=0;R<x;R++){const E=s(g,m+R*3,3);
15e.U.itree[(e.U.ordr[R]<<1)+1]=E,E>M&&(M=E)}m+=3*x,(0,e.makeCodes)(e.U.itree,M),(0,e.codes2map)(e.U.itree,M,e.U.imap),b=e.U.lmap,P=e.U.dmap,m=c(e.U.imap,(1<<M)-1,T+A,g,m,e.U.ttree);const D=o(e.U.ttree,0,T,e.U.ltree);C=(1<<D)-1;const V=o(e.U.ttree,T,A,e.U.dtree);l=(1<<V)-1,(0,e.makeCodes)(e.U.ltree,D),(0,e.codes2map)(e.U.ltree,D,b),(0,e.makeCodes)(e.U.dtree,V),(0,e.codes2map)(e.U.dtree,V,P)}else throw new Error(`unknown BTYPE ${S}`);for(;;){const T=b[f(g,m)&C];m+=T&15;const A=T>>>4;if(!(A>>>8))d[u++]=A;else{if(A===256)break;{let x=u+A-254;if(A>264){const E=e.U.ldef[A-257];x=u+(E>>>3)+s(g,m,E&7),m+=E&7}const M=P[f(g,m)&l];m+=M&15;const D=M>>>4,V=e.U.ddef[D],R=(V>>>4)+h(g,m,V&15);for(m+=V&15,a&&(d=i(d,u+(1<<17)));u<x;)d[u]=d[u++-R],d[u]=d[u++-R],d[u]=d[u++-R],d[u]=d[u++-R];u=x}}}}y.buf=d,y.BFINAL=p,y.off=u,y.pos=m}async function n(y,_,g){if(_[0]===3&&_[1]===0)return g||new Uint8Array(0);if((0,e.checkCompressionStreamSupport)("deflate-raw")){const d=new DecompressionStream("deflate-raw"),u=new Blob([_]).stream().pipeThrough(d);let m=0;const v=[],b=u.getReader(),P=async()=>{const{done:C,value:l}=await b.read();if(!C)return y.shouldUpdate&&await y.update({message:"Inflating blocks...",current:m,max:g?.length}),g?g.set(l,m):v.push(l),m+=l.length,P()};if(await P(),!g){g=new Uint8Array(m);for(let C=0,l=0;C<v.length;C++)g.set(v[C],l),l+=v[C].length}return g}const a=t(_,g);for(;a.BFINAL===0;)y.shouldUpdate&&await y.update({message:"Inflating blocks...",current:a.pos,max:_.length}),r(a,100);return a.buf.length===a.off?a.buf:a.buf.slice(0,a.off)}function i(y,_){const g=y.length;if(_<=g)return y;const a=new Uint8Array(Math.max(g<<1,_));return a.set(y,0),a}function c(y,_,g,a,d,p){let u=0;for(;u<g;){const m=y[f(a,d)&_];d+=m&15;const v=m>>>4;if(v<=15)p[u]=v,u++;else{let b=0,P=0;v===16?(P=3+s(a,d,2),d+=2,b=p[u-1]):v===17?(P=3+s(a,d,3),d+=3):v===18&&(P=11+s(a,d,7),d+=7);const C=u+P;for(;u<C;)p[u]=b,u++}}return d}function o(y,_,g,a){let d=0,p=0;const u=a.length>>>1;for(;p<g;){const m=y[p+_];a[p<<1]=0,a[(p<<1)+1]=m,m>d&&(d=m),p++}for(;p<u;)a[p<<1]=0,a[(p<<1)+1]=0,p++;return d}function s(y,_,g){return(y[_>>>3]|y[(_>>>3)+1]<<8)>>>(_&7)&(1<<g)-1}function h(y,_,g){return(y[_>>>3]|y[(_>>>3)+1]<<8|y[(_>>>3)+2]<<16)>>>(_&7)&(1<<g)-1}function f(y,_){return(y[_>>>3]|y[(_>>>3)+1]<<8|y[(_>>>3)+2]<<16)>>>(_&7)}return SC}var CC={},PC={},PR;function kJ(){if(PR)return PC;PR=1,Object.defineProperty(PC,"__esModule",{value:!0}),PC._hufTree=e;function e(n,i,c){const o=[],s=n.length,h=i.length;for(let m=0;m<h;m+=2)i[m]=0,i[m+1]=0;for(let m=0;m<s;m++)n[m]!==0&&o.push({lit:m,f:n[m],d:void 0});const f=o.length,y=o.slice(0);if(f===0)return 0;if(f===1){const m=o[0].lit,v=m===0?1:0;
15return i[(m<<1)+1]=1,i[(v<<1)+1]=1,1}o.sort(function(m,v){return m.f-v.f});let _=o[0],g=o[1],a=0,d=1,p=2;for(o[0]={lit:-1,f:_.f+g.f,l:_,r:g,d:0};d!==f-1;)a!==d&&(p===f||o[a].f<o[p].f)?_=o[a++]:_=o[p++],a!==d&&(p===f||o[a].f<o[p].f)?g=o[a++]:g=o[p++],o[d++]={lit:-1,f:_.f+g.f,l:_,r:g,d:void 0};let u=t(o[d-1],0);u>c&&(r(y,c,u),u=c);for(let m=0;m<f;m++)i[(y[m].lit<<1)+1]=y[m].d;return u}function t(n,i){return n.lit!==-1?(n.d=i,i):Math.max(t(n.l,i+1),t(n.r,i+1))}function r(n,i,c){let o=0,s=0;const h=1<<c-i;for(n.sort(function(f,y){return y.d===f.d?f.f-y.f:y.d-f.d}),o=0;o<n.length&&n[o].d>i;o++){const f=n[o].d;n[o].d=i,s+=h-(1<<c-f)}for(s=s>>>c-i;s>0;){const f=n[o].d;f<i?(n[o].d++,s-=1<<i-f-1):o++}for(;o>=0;o--)n[o].d===i&&s<0&&(n[o].d--,s++);s!==0&&console.log("debt left")}return PC}var TR;function FJ(){if(TR)return CC;TR=1,Object.defineProperty(CC,"__esModule",{value:!0}),CC._deflateRaw=o;const e=Gt(),t=kJ(),r=aX();function n(P,C,l,S){const{lits:T,strt:A,prev:x}=r.U;return{data:P,out:C,opt:c[S],i:0,pos:l<<3,cvrd:0,dlen:P.length,li:0,lc:0,bs:0,ebits:0,c:0,nc:0,lits:T,strt:A,prev:x}}function i(P,C){const{data:l,dlen:S,out:T,opt:A}=P;let{i:x,pos:M,cvrd:D,li:V,lc:R,bs:E,ebits:I,c:B,nc:w}=P;const{lits:O,strt:F,prev:L}=r.U,U=Math.min(x+C,S);for(;x<U;x++){if(B=w,x+1<S-2){w=f(l,x+1);const q=x+1&32767;L[q]=F[w],F[w]=q}if(D<=x){(V>14e3||R>26697)&&S-x>100&&(D<x&&(O[V]=x-D,V+=2,D=x),M=y(x===S-1||D===S?1:0,O,V,I,l,E,x-E,T,M),V=R=I=0,E=x);let q=0;if(x<S-2&&(q=s(l,x,L,B,Math.min(A[2],S-x),A[3])),q!==0){const N=q>>>16,k=q&65535,j=u(N,r.U.of0);r.U.lhst[257+j]++;const H=u(k,r.U.df0);r.U.dhst[H]++,I+=r.U.exb[j]+r.U.dxb[H],O[V]=N<<23|x-D,O[V+1]=k<<16|j<<8|H,V+=2,D=x+N}else r.U.lhst[l[x]]++;R++}}P.i=x,P.pos=M,P.cvrd=D,P.li=V,P.lc=R,P.bs=E,P.ebits=I,P.c=B,P.nc=w}const c=[[0,0,0,0,0],[4,4,8,4,0],[4,5,16,8,0],[4,6,16,16,0],[4,10,16,32,0],[8,16,32,32,0],[8,16,128,128,0],[8,32,128,256,0],[32,128,258,1024,1],[32,258,258,4096,1]];async function o(P,C,l,S,T){if((0,r.checkCompressionStreamSupport)("deflate-raw")){const w=new CompressionStream("deflate-raw"),L=new Blob([C]).stream().pipeThrough(w).getReader();let U=S;const q=async()=>{const{done:N,value:k}=await L.read();if(!N)return P.shouldUpdate&&await P.update({message:"Deflating...",current:U,max:l.length}),l.set(k,U),U+=k.length,q()};return await q(),U}const A=n(C,l,S,T),{dlen:x}=A;if(T===0){let{i:w,pos:O}=A;for(;w<x;){const F=Math.min(65535,x-w);v(l,O,w+F===x?1:0),O=_(C,w,F,l,O+8),w+=F}return O>>>3}for(x>2&&(A.nc=f(C,0),A.strt[A.nc]=0);A.i<x;)P.shouldUpdate&&await P.update({message:"Deflating...",current:A.i,max:x}),i(A,1024*1024);let{li:M,cvrd:D,pos:V}=A;const{i:R,lits:E,bs:I,ebits:B}=A;for((I!==R||C.length===0)&&(D<R&&(E[M]=R-D,M+=2,D=R),V=y(1,E,M,B,C,I,R-I,l,V));(V&7)!==0;)V++;return V>>>3}function s(P,C,l,S,T,A){let x=C&32767,M=l[x],D=x-M+32768&32767;if(M===x||S!==f(P,C-D))return 0;let V=0,R=0;const E=Math.min(32767,C);for(;D<=E&&--A!==0&&M!==x;){if(V===0||P[C+V]===P[C+V-D]){let I=h(P,C,D);if(I>V){if(V=I,R=D,V>=T)break;D+2<I&&(I=D+2);let B=0;for(let w=0;w<I-2;w++){const O=C-D+w+32768&32767,F=l[O],L=O-F+32768&32767;L>B&&(B=L,M=O)}}}x=M,M=l[x],D+=x-M+32768&32767}return V<<16|R}function h(P,C,l){if(P[C]!==P[C-l]||P[C+1]!==P[C+1-l]||P[C+2]!==P[C+2-l])return 0;const S=C,T=Math.min(P.length,C+258);for(C+=3;C<T&&P[C]===P[C-l];)C++;return C-S}function f(P,C){return(P[C]<<8|P[C+1])+(P[C+2]<<4)&65535}function y(P,C,l,S,T,A,x,M,D){r.U.lhst[256]++;const[V,R,E,I,B,w,O,F]=g(),L=((D+3&7)===0?0:8-(D+3&7))+32+(x<<3),U=S+a(r.U.fltree,r.U.lhst)+a(r.U.fdtree,r.U.dhst);let q=S+a(r.U.ltree,r.U.lhst)+a(r.U.dtree,r.U.dhst);q+=14+3*w+a(r.U.itree,r.U.ihst)+(r.U.ihst[16]*2+r.U.ihst[17]*3+r.U.ihst[18]*7);for(let k=0;k<286;k++)r.U.lhst[k]=0;for(let k=0;k<30;k++)r.U.dhst[k]=0;for(let k=0;k<19;k++)r.U.ihst[k]=0;const N=L<U&&L<q?0:U<q?1:2;if(b(M,D,P),b(M,D+1,N),D+=3,N===0){for(;(D&7)!==0;)D++;D=_(T,A,x,M,D)}else{let k,j;if(N===1)k=r.U.fltree,j=r.U.fdtree;else if(N===2){(0,r.makeCodes)(r.U.ltree,V),(0,r.revCodes)(r.U.ltree,V),(0,r.makeCodes)(r.U.dtree,R),(0,r.revCodes)(r.U.dtree,R),(0,r.makeCodes)(r.U.itree,E),(0,r.revCodes)(r.U.itree,E),k=r.U.ltree,j=r.U.dtree,v(M,D,I-257),D+=5,v(M,D,B-1),D+=5,v(M,D,w-4),D+=4;for(let G=0;G<w;G++)v(M,D+G*3,r.U.itree[(r.U.ordr[G]<<1)+1]);D+=3*w,D=d(O,r.U.itree,M,D),D=d(F,r.U.itree,M,D)}else(0,e.assertUnreachable)(N);let H=A;for(let G=0;G<l;G+=2){const z=C[G],W=z>>>23,X=H+(z&(1<<23)-1);for(;H<X;)D=m(T[H++],k,M,D);if(W!==0){const Y=C[G+1],K=Y>>16,Q=Y>>8&255,J=Y&255;
15D=m(257+Q,k,M,D),v(M,D,W-r.U.of0[Q]),D+=r.U.exb[Q],D=m(J,j,M,D),b(M,D,K-r.U.df0[J]),D+=r.U.dxb[J],H+=W}}D=m(256,k,M,D)}return D}function _(P,C,l,S,T){let A=T>>>3;return S[A]=l,S[A+1]=l>>>8,S[A+2]=255-S[A],S[A+3]=255-S[A+1],A+=4,S.set(new Uint8Array(P.buffer,C,l),A),T+(l+4<<3)}function g(){const P=(0,t._hufTree)(r.U.lhst,r.U.ltree,15),C=(0,t._hufTree)(r.U.dhst,r.U.dtree,15),l=[],S=p(r.U.ltree,l),T=[],A=p(r.U.dtree,T);for(let D=0;D<l.length;D+=2)r.U.ihst[l[D]]++;for(let D=0;D<T.length;D+=2)r.U.ihst[T[D]]++;const x=(0,t._hufTree)(r.U.ihst,r.U.itree,7);let M=19;for(;M>4&&r.U.itree[(r.U.ordr[M-1]<<1)+1]===0;)M--;return[P,C,x,S,A,M,l,T]}function a(P,C){let l=0;for(let S=0;S<C.length;S++)l+=C[S]*P[(S<<1)+1];return l}function d(P,C,l,S){for(let T=0;T<P.length;T+=2){const A=P[T],x=P[T+1];S=m(A,C,l,S);const M=A===16?2:A===17?3:7;A>15&&(v(l,S,x),S+=M)}return S}function p(P,C){let l=P.length;for(;l!==2&&P[l-1]===0;)l-=2;for(let S=0;S<l;S+=2){const T=P[S+1],A=S+3<l?P[S+3]:-1,x=S+5<l?P[S+5]:-1,M=S===0?-1:P[S-1];if(T===0&&A===T&&x===T){let D=S+5;for(;D+2<l&&P[D+2]===T;)D+=2;const V=Math.min(D+1-S>>>1,138);V<11?C.push(17,V-3):C.push(18,V-11),S+=V*2-2}else if(T===M&&A===T&&x===T){let D=S+5;for(;D+2<l&&P[D+2]===T;)D+=2;const V=Math.min(D+1-S>>>1,6);C.push(16,V-3),S+=V*2-2}else C.push(T,0)}return l>>>1}function u(P,C){let l=0;return C[l|16]<=P&&(l|=16),C[l|8]<=P&&(l|=8),C[l|4]<=P&&(l|=4),C[l|2]<=P&&(l|=2),C[l|1]<=P&&(l|=1),l}function m(P,C,l,S){return b(l,S,C[P<<1]),S+C[(P<<1)+1]}function v(P,C,l){l=l<<(C&7);const S=C>>>3;P[S]|=l,P[S+1]|=l>>>8}function b(P,C,l){l=l<<(C&7);const S=C>>>3;P[S]|=l,P[S+1]|=l>>>8,P[S+2]|=l>>>16}return CC}var xR;function iS(){if(xR)return aa;xR=1,Object.defineProperty(aa,"__esModule",{value:!0}),aa.Unzip=c,aa.unzip=o,aa.inflateRaw=h,aa.inflate=f,aa.ungzip=y,aa.deflate=_,aa.Zip=a,aa.zip=d;const e=BJ(),t=RJ(),r=OJ(),n=FJ(),i=nt();function c(m,v=!1){return i.Task.create("Unzip",b=>o(b,m,v))}async function o(m,v,b=!1){const P=Object.create(null),C=new Uint8Array(v);if((0,e.readUshort)(C,0)!==19280)throw new Error('Invalid ZIP file. A valid ZIP file must start with two magic bytes \\x50\\x4b ("PK" in ASCII).');let l=C.length-4;for(;(0,e.readUint)(C,l)!==101010256;)l--;let S=l;S+=4,S+=4;const T=(0,e.readUshort)(C,S);S+=2,S+=2,S+=4;const A=(0,e.readUint)(C,S);S+=4,S=A;for(let x=0;x<T;x++){S+=4,S+=4,S+=4,S+=4,S+=4,S+=4,S+=4;const M=(0,e.readUshort)(C,S),D=(0,e.readUshort)(C,S+2),V=(0,e.readUshort)(C,S+4);S+=6,S+=8;const R=(0,e.readUint)(C,S);S+=4,S+=M+D+V,await s(m,C,R,P,b)}return P}async function s(m,v,b,P,C){b+=4,b+=2,b+=2;const l=(0,e.readUshort)(v,b);b+=2,b+=4,b+=4;const S=(0,e.readUint)(v,b);b+=4;const T=(0,e.readUint)(v,b);b+=4;const A=(0,e.readUshort)(v,b);b+=2;const x=(0,e.readUshort)(v,b);b+=2;const M=(0,e.readUTF8)(v,b,A);if(b+=A,b+=x,C){P[M]={size:T,csize:S};return}const D=new Uint8Array(v.buffer,b,S);if(l===0)P[M]=D;else if(l===8){const V=new Uint8Array(T);await h(m,D,V),P[M]=V}else throw new Error(`unknown compression method: ${l}`)}async function h(m,v,b){return(0,r._inflate)(m,v,b)}function f(m,v,b){return h(m,new Uint8Array(v.buffer,v.byteOffset+2,v.length-6),b)}async function y(m,v,b){const P=v[3];let C=10;if(P&4){const M=(0,e.readUshort)(v,C);C+=M}if(P&8){let M=C;for(;v[M]!==0;)++M;C=M+1}if(P&16){let M=C;for(;v[M]!==0;)++M;C=M+1}P&1&&(C+=2);const l=(0,e.toInt32)((0,e.readUint)(v,v.length-8)),S=(0,e.readUint)(v,v.length-4);b===void 0&&(b=new Uint8Array(S));const T=new Uint8Array(v.buffer,v.byteOffset+C,v.length-C-8),A=await h(m,T,b),x=(0,t.crc)(A,0,A.length);return l!==x&&console.error("ungzip: checksums don't match"),A}async function _(m,v,b){b===void 0&&(b={level:6});let P=0;const C=new Uint8Array(50+Math.floor(v.length*1.1));C[P]=120,C[P+1]=156,P+=2,P=await(0,n._deflateRaw)(m,v,C,P,b.level);const l=(0,t.adler)(v,0,v.length);return C[P+0]=l>>>24&255,C[P+1]=l>>>16&255,C[P+2]=l>>>8&255,C[P+3]=l>>>0&255,new Uint8Array(C.buffer,0,P+4)}async function g(m,v,b){b===void 0&&(b={level:6});const P=new Uint8Array(50+Math.floor(v.length*1.1)),C=await(0,n._deflateRaw)(m,v,P,0,b.level);return new Uint8Array(P.buffer,0,C)}function a(m,v=!1){return i.Task.create("Zip",b=>d(b,m,v))}async function d(m,v,b=!1){let P=0;const C={};for(const D in v){const V=!p(D)&&!b,R=v[D],E=(0,t.crc)(R,0,R.length);C[D]={cpr:V,usize:R.length,crc:E,file:V?await g(m,R):R}}for(const D in C)P+=C[D].file.length+30+46+2*(0,e.sizeUTF8)(D);P+=22;const l=new Uint8Array(P);let S=0;const T=[];for(const D in C){const V=C[D];T.push(S),S=u(l,S,D,V,0)}let A=0;const x=S;for(const D in C){const V=C[D];T.push(S),S=u(l,S,D,V,1,T[A++])}const M=S-x;return(0,e.writeUint)(l,S,101010256),S+=4,S+=4,(0,e.writeUshort)(l,S,A),S+=2,(0,e.writeUshort)(l,S,A),S+=2,(0,e.writeUint)(l,S,M),S+=4,(0,e.writeUint)(l,S,x),S+=4,S+=2,l.buffer}function p(m){const v=m.split(".").pop().toLowerCase();return"png,jpg,jpeg,zip".indexOf(v)!==-1}function u(m,v,b,P,C,l=0){const S=P.file;(0,e.writeUint)(m,v,C===0?67324752:33639248),v+=4,C===1&&(v+=2),(0,e.writeUshort)(m,v,20),v+=2,(0,e.writeUshort)(m,v,0),v+=2,(0,e.writeUshort)(m,v,P.cpr?8:0),v+=2,(0,e.writeUint)(m,v,0),v+=4,(0,e.writeUint)(m,v,P.crc),v+=4,(0,e.writeUint)(m,v,S.length),v+=4,(0,e.writeUint)(m,v,P.usize),v+=4,(0,e.writeUshort)(m,v,(0,e.sizeUTF8)(b)),v+=2,(0,e.writeUshort)(m,v,0),v+=2,C===1&&(v+=2,v+=2,v+=6,(0,e.writeUint)(m,v,l),v+=4);const T=(0,e.writeUTF8)(m,v,b);return v+=T,C===0&&(m.set(S,v),v+=S.length),v}return aa}var AR;
15function ET(){if(AR)return ia;AR=1,Object.defineProperty(ia,"__esModule",{value:!0}),ia.DataCompressionMethod=void 0,ia.readStringFromFile=o,ia.readUint8ArrayFromFile=s,ia.readFromFile=h,ia.ajaxGet=f,ia.setFSModule=A,ia.ajaxGetMany=V;const e=$s(),t=nt(),r=Ha(),n=oI(),i=iS();var c;(function(I){I[I.None=0]="None",I[I.Gzip=1]="Gzip",I[I.Zip=2]="Zip"})(c||(ia.DataCompressionMethod=c={}));function o(I){return m(I,"string")}function s(I){return m(I,"binary")}function h(I,B){return m(I,B)}function f(I){return typeof I=="string"?l(I,I,"string"):l(I.title,I.url,I.type||"string",I.body,I.headers)}function y(I){if(n.RUNNING_IN_NODEJS)throw new Error("`isDone` should not be used when running in Node.js");if(I instanceof FileReader)return I.readyState===FileReader.DONE;if(I instanceof XMLHttpRequest)return I.readyState===XMLHttpRequest.DONE;throw new Error("unknown data type")}function _(I){return I?"Failed to download data. Possible reasons: Resource is not available, or CORS is not allowed on the server.":"Failed to open file."}function g(I,B,w){if(n.RUNNING_IN_NODEJS)throw new Error("`readData` should not be used when running in Node.js");return new Promise((O,F)=>{if(y(w)){const{error:U}=w;U!=null?F(U??_(w instanceof XMLHttpRequest)):O(w);return}let L=!1;w.onerror=U=>{if(L)return;const{error:q}=U.target;F(q??_(w instanceof XMLHttpRequest))},w.onprogress=U=>{if(!(!I.shouldUpdate||L))try{U.lengthComputable?I.update({message:B,isIndeterminate:!1,current:U.loaded,max:U.total}):I.update({message:`${B} ${(U.loaded/1024/1024).toFixed(2)} MB`,isIndeterminate:!0})}catch(q){L=!0,F(q)}},w.onload=U=>{O(w)}})}function a(I){return/\.gz$/i.test(I)?c.Gzip:/\.zip$/i.test(I)?c.Zip:c.None}const d=/^(__MACOSX|.DS_Store)/;async function p(I,B,w){switch(w){case c.None:return B;case c.Gzip:return(0,i.ungzip)(I,B);case c.Zip:const O=await(0,i.unzip)(I,B.buffer),F=Object.keys(O).filter(L=>!d.test(L));if(F.length!==1)throw new Error("can only decompress zip files with a single entry");return O[F[0]]}}async function u(I,B,w,O){if(B===null)throw new Error("no data given");let F=new Uint8Array(B);if(O!==c.None&&w!=="zip"&&(F=await p(I,F,O)),w==="binary")return F;if(w==="zip")return await(0,i.unzip)(I,F.buffer);if(w==="string")return(0,e.utf8ReadLong)(F);if(w==="xml")return new DOMParser().parseFromString((0,e.utf8Read)(F),"application/xml");if(w==="json")return JSON.parse((0,e.utf8Read)(F));throw new Error(`could not get requested response data '${w}'`)}function m(I,B){if(n.RUNNING_IN_NODEJS)return v(I,B);let w;return t.Task.create("Read File",async O=>{try{await O.update({message:"Opening file...",canAbort:!0}),w=new FileReader,w.readAsArrayBuffer(I);const L=(await g(O,"Reading...",w)).result;return await O.update({message:"Processing file...",canAbort:!1}),await u(O,L,B,a(I.name))}finally{w=void 0}},()=>{w&&w.abort()})}function v(I,B){return t.Task.create("Read File",async w=>{await w.update({message:"Opening file...",canAbort:!1});const O=await I.arrayBuffer();return await w.update({message:"Processing file...",canAbort:!1}),await u(w,O,B,a(I.name))})}class b{static get(){if(n.RUNNING_IN_NODEJS)throw new Error("`RequestPool.get` should not be used when running in Node.js");return this.pool.length?this.pool.pop():new XMLHttpRequest}static emptyFunc(){}static deposit(B){this.pool.length<this.poolSize&&(B.onabort=b.emptyFunc,B.onerror=b.emptyFunc,B.onload=b.emptyFunc,B.onprogress=b.emptyFunc,this.pool.push(B))}}b.pool=[],b.poolSize=15;function P(I,B){if(I.status>=200&&I.status<400){const{response:w}=I;if(b.deposit(I),(B==="binary"||B==="zip")&&w instanceof ArrayBuffer)return new Uint8Array(w);
15if(B==="string"&&typeof w=="string")return w;if(B==="xml"&&w instanceof XMLDocument)return w;if(B==="json"&&typeof w=="object")return w;throw new Error(`could not get requested response data '${B}'`)}else throw b.deposit(I),new Error(`Download failed with status code ${I.status}`)}function C(I){switch(I){case"json":return"json";case"xml":return"document";case"string":return"text";case"binary":return"arraybuffer";case"zip":return"arraybuffer"}}function l(I,B,w,O,F){if(n.RUNNING_IN_NODEJS)return B.startsWith("file://")?M(I,B,w):D(I,B,w,O,F);let L;return t.Task.create(I||"Download",async U=>{if(L=b.get(),L.open(O?"post":"get",B,!0),F)for(const[k,j]of Object.entries(F))L.setRequestHeader(k,j);L.responseType=C(w),L.send(O),await U.update({message:"Waiting for server...",canAbort:!0});const q=await g(U,"Downloading...",L);return L=void 0,await U.update({message:"Parsing response...",canAbort:!1}),P(q,w)},()=>{L&&(L.abort(),L=void 0)})}let S;function T(){if(!S)throw new Error("When running in Node.js and reading from files, call mol-util/data-source's setFSModule function first.");return S}function A(I){S=I}function x(I){return new Promise((B,w)=>{T().readFile(I,(O,F)=>{O?w(O):B(F)})})}function M(I,B,w,O,F){if(!n.RUNNING_IN_NODEJS)throw new Error("This function should only be used when running in Node.js");if(!B.startsWith("file://"))throw new Error("This function is only for URLs with protocol file://");return t.Task.create(I??"Download",async L=>{const U=B.substring(7);await L.update({message:"Loading file...",canAbort:!1});const q=await x(U);return await L.update({message:"Parsing response...",canAbort:!1}),await u(L,q.buffer,w,c.None)})}function D(I,B,w,O,F){if(!n.RUNNING_IN_NODEJS)throw new Error("This function should only be used when running in Node.js");const L=new AbortController;return t.Task.create(I??"Download",async U=>{await U.update({message:"Downloading...",canAbort:!0});const q=await fetch(B,{signal:L.signal,method:O?"POST":"GET",body:O,headers:F});if(!(q.status>=200&&q.status<400))throw new Error(`Download failed with status code ${q.status}`);const N=await q.bytes();return await U.update({message:"Parsing response...",canAbort:!1}),await u(U,N.buffer,w,c.None)},()=>{L.abort()})}async function V(I,B,w,O){const F=w.length,L=new Array(w.length);await I.update({message:"Downloading...",current:0,max:F});let U=[],q=[],N=0;for(let j=Math.min(F,O);N<j;N++){const H=w[N];U.push(E(N,H.id,B.resolve(r.Asset.getUrlAsset(B,H.url),H.isBinary?"binary":"string").runAsChild(I))),q.push(N)}let k=0;for(;U.length>0;){const j=await Promise.race(U),H=w[j.index],G=q.indexOf(j.index);if(k++,j.kind==="error"&&!H.canFail)throw new Error(`${H.url}: ${j.error}`);if(I.shouldUpdate&&await I.update({message:"Downloading...",current:k,max:F}),L[j.index]=j,U=U.filter(R,G),q=q.filter(R,G),N<F){const z=w[N],W=B.resolve(r.Asset.getUrlAsset(B,z.url),z.isBinary?"binary":"string").runAsChild(I);U.push(E(N,z.id,W)),q.push(N),N++}}return L}function R(I,B){return this!==B}async function E(I,B,w){try{return{kind:"ok",result:await w,index:I,id:B}}catch(O){return{kind:"error",error:O,index:I,id:B}}}return ia}var MR;function Ha(){if(MR)return Mc;MR=1,Object.defineProperty(Mc,"__esModule",{value:!0}),Mc.Asset=Mc.AssetManager=void 0;const e=Q_(),t=ET(),r=nt(),n=oI(),i=vT();var c;(function(h){function f(u,m){return{kind:"url",id:e.UUID.create22(),url:u,...m}}h.Url=f;function y(u){return{kind:"file",id:e.UUID.create22(),name:u.name,file:u}}h.File=y;function _(u){return u?.kind==="url"}h.isUrl=_;function g(u){return u?.kind==="file"}h.isFile=g;function a(u,m,v){return{data:u,dispose:()=>{v.release(m)}}}h.Wrapper=a;function d(u){return typeof u=="string"?u:u.url}h.getUrl=d;function p(u,m,v,b){return typeof m=="string"?u.tryFindUrl(m,v,b)||f(m,{body:v,headers:b}):m}h.getUrlAsset=p})(c||(Mc.Asset=c={}));function o(h,f){const y=h?Object.keys(h):[],_=f?Object.keys(f):[];if(y.length!==_.length)return!1;for(const g of y)if(h[g]!==f[g])return!1;return!0}class s{constructor(){this._assets=new Map}get assets(){return(0,i.iterableToArray)(this._assets.values())}tryFindUrl(f,y,_){const g=this.assets.values();for(;;){const a=g.next();if(a.done)return;const d=a.value.asset;if(c.isUrl(d)&&d.url===f&&(d.body||"")===(y||"")&&o(d.headers,_))return d}}tryFindFilename(f){const y=this._assets.values();for(;;){const{done:_,value:g}=y.next();if(_)break;if(g.file.name===f)return g.asset}}set(f,y,_){this._assets.set(f.id,{asset:f,file:y,refCount:0,tag:_?.tag,isStatic:_?.isStatic})}get(f){return this._assets.get(f.id)}delete(f){return this._assets.delete(f.id)}has(f){return this._assets.has(f.id)}resolve(f,y,_=!0){return c.isUrl(f)?r.Task.create(`Download ${f.title||f.url}`,async g=>{if(this._assets.has(f.id)){const p=this._assets.get(f.id);return p.refCount++,c.Wrapper(await(0,t.readFromFile)(p.file,y).runInContext(g),f,this)}if(!_)return c.Wrapper(await(0,t.ajaxGet)({...f,type:y}).runInContext(g),f,this);const a=await(0,t.ajaxGet)({...f,type:"binary"}).runInContext(g),d=new n.File_([a],"raw-data");return this._assets.set(f.id,{asset:f,file:d,refCount:1}),c.Wrapper(await(0,t.readFromFile)(d,y).runInContext(g),f,this)}):r.Task.create(`Read ${f.name}`,async g=>{if(this._assets.has(f.id)){const a=this._assets.get(f.id);return a.refCount++,c.Wrapper(await(0,t.readFromFile)(a.file,y).runInContext(g),f,this)}if(!(f.file instanceof n.File_))throw new Error(`Cannot resolve file asset '${f.name}' (${f.id})`);return _&&this._assets.set(f.id,{asset:f,file:f.file,refCount:1}),c.Wrapper(await(0,t.readFromFile)(f.file,y).runInContext(g),f,this)})}release(f){const y=this._assets.get(f.id);y&&(y.refCount--,y.refCount<=0&&!y.isStatic&&this._assets.delete(f.id))}clearTag(f){const y=Array.from(this._assets.keys());for(const _ of y){const g=this._assets.get(_);g&&g.tag===f&&this._assets.delete(_)}}clear(){this._assets.clear()}dispose(){this.clear()}}return Mc.AssetManager=s,Mc}var DR;function Ne(){if(DR)return Rp;DR=1,Object.defineProperty(Rp,"__esModule",{value:!0}),Rp.ParamDefinition=void 0;const e=et(),t=ns(),r=wt(),n=Xr(),i=vr(),c=ui(),o=pa(),s=Ha(),h=rn(),f=Vt();var y;return(function(_){_.Essential={isEssential:!0};function g(le,me){return me&&(me.label&&(le.label=me.label),me.description&&(le.description=me.description),me.legend&&(le.legend=me.legend),me.fieldLabels&&(le.fieldLabels=me.fieldLabels),me.isHidden&&(le.isHidden=me.isHidden),me.shortLabel&&(le.shortLabel=me.shortLabel),me.twoColumns&&(le.twoColumns=me.twoColumns),me.isEssential&&(le.isEssential=me.isEssential),me.category&&(le.category=me.category),me.hideIf&&(le.hideIf=me.hideIf),me.help&&(le.help=me.help)),le}function a(le){const me={...le};return me.isOptional=!0,me}_.Optional=a;function d(le,me){return g({type:"value",defaultValue:le},me)}_.Value=d;function p(le,me,ee){return g({type:"select",defaultValue:Ce(le,me),options:me,cycle:ee?.cycle},ee)}_.Select=p;function u(le,me,ee){const se=g({type:"multi-select",defaultValue:le,options:me},ee);return ee?.emptyValue&&(se.emptyValue=ee.emptyValue),se}_.MultiSelect=u;function m(le,me){return g({type:"boolean",defaultValue:le},me)}_.Boolean=m;function v(le="",me){return g({type:"text",defaultValue:le,multiline:me?.multiline,placeholder:me?.placeholder,disableInteractiveUpdates:me?.disableInteractiveUpdates},me)}_.Text=v;function b(le,me){const ee=g({type:"color",defaultValue:le},me);return me?.isExpanded&&(ee.isExpanded=me.isExpanded),ee}_.Color=b;function P(le,me){let ee;if(typeof le=="string"){const se=(0,o.getColorListFromName)(le);ee={kind:se.type!=="qualitative"?"interpolate":"set",colors:se.list}}else ee=le;return g({type:"color-list",presetKind:me?.presetKind||"all",defaultValue:ee,offsets:!!me?.offsets},me)}_.ColorList=P;function C(le,me,ee){return g(x({type:"vec3",defaultValue:le},me),ee)}_.Vec3=C;function l(le,me){return g({type:"mat4",defaultValue:le},me)}_.Mat4=l;function S(le,me){const ee=typeof le=="string"?s.Asset.Url(le):s.Asset.Url(le.url,{body:le.body});return g({type:"url",defaultValue:ee},me)}
15_.Url=S;function T(le){const me=g({type:"file",defaultValue:null},le);return le?.accept&&(me.accept=le.accept),me}_.File=T;function A(le){const me=g({type:"file-list",defaultValue:null},le);return le?.accept&&(me.accept=le.accept),me}_.FileList=A;function x(le,me){return me&&(typeof me.min<"u"&&(le.min=me.min),typeof me.max<"u"&&(le.max=me.max),typeof me.step<"u"&&(le.step=me.step)),le}function M(le,me,ee){const se=g(x({type:"number",defaultValue:le},me),ee);return ee?.immediateUpdate&&(se.immediateUpdate=!0),se}_.Numeric=M;function D(le,me,ee){return g(x({type:"interval",defaultValue:le},me),ee)}_.Interval=D;function V(le,me){const ee=g({type:"line-graph",defaultValue:le},me);return me?.getVolume&&(ee.getVolume=me.getVolume),me?.yAxis&&(ee.yAxis=me.yAxis),me?.getPresets&&(ee.getPresets=me.getPresets),ee}_.LineGraph=V;function R(le,me){const ee=g({type:"group",defaultValue:me?.customDefault||z(le),params:le},me);return me?.presets&&(ee.presets=me.presets),me?.isExpanded&&(ee.isExpanded=me.isExpanded),me?.isFlat&&(ee.isFlat=me.isFlat),me?.pivot&&(ee.pivot=me.pivot),ee}_.Group=R;function E(le){return R({},le)}_.EmptyGroup=E;function I(le,me,ee,se){const ye=Ce(le,me);return g({type:"mapped",defaultValue:{name:ye,params:ee(ye).defaultValue},select:p(ye,me,se),map:ee},se)}_.Mapped=I;function B(le,me,ee){const se=ee?.options?ee.options:Object.keys(me).map(Se=>[Se,me[Se].label||(0,c.stringToWords)(Se)]),ye=Ce(le,se);return g({type:"mapped",defaultValue:{name:ye,params:me[ye].defaultValue},select:p(ye,se,ee),map:Se=>me[Se]},ee)}_.MappedStatic=B;function w(le,me,ee){const se=g({type:"object-list",element:le,getLabel:me,ctor:O,defaultValue:ee?.defaultValue||[]},ee);return ee?.presets&&(se.presets=ee.presets),se}_.ObjectList=w;function O(){return z(this.element)}function F(){throw new Error("getValue not set. Fix runtime.")}function L(le=""){return{ref:le,getValue:F}}_.Ref=L;function U(le,me,ee){return g({type:"value-ref",defaultValue:L(ee?.defaultRef),getOptions:le,resolveRef:me},ee)}_.ValueRef=U;function q(le){return g({type:"data-ref",defaultValue:L(le?.defaultRef)},le)}_.DataRef=q;function N(le){return{ref:le,getValue:F}}_.asDataRef=N;function k(le,me,ee){return g({type:"converted",defaultValue:me(ee.defaultValue),converted:ee,fromValue:le,toValue:me},ee)}_.Converted=k;function j(le,me,ee,se,ye){const Se=Object.keys(me).map(Ae=>[Ae,Ae]);return g({type:"conditioned",select:p(ee(le),Se,ye),defaultValue:le,conditionParams:me,conditionForValue:ee,conditionedValue:se},ye)}_.Conditioned=j;function H(le,me){return g({type:"script",defaultValue:le},me)}_.Script=H;function G(le){return 0}_.For=G;function z(le){const me={};for(const ee of Object.keys(le))le[ee].isOptional||(me[ee]=le[ee].defaultValue);return me}_.getDefaultValues=z;function W(le,me,ee){return()=>le(me,ee)}function X(le,me,ee){if(me){if(le.type==="value-ref"){const se=me;se.ref?se.getValue=W(le.resolveRef,se.ref,ee):se.getValue=()=>{throw new Error("Unset ref in ValueRef value.")}}else if(le.type==="data-ref"){const se=me;se.ref?se.getValue=W(ee,se.ref,ee):se.getValue=()=>{throw new Error("Unset ref in ValueRef value.")}}else if(le.type==="group")Q(le.params,me,ee);else if(le.type==="mapped"){const se=me,ye=le.map(se.name);X(ye,se.params,ee)}else if(le.type==="object-list"){if(!K(le.element))return;for(const se of me)Q(le.element,se,ee)}}}function Y(le){if(le.type==="value-ref"||le.type==="data-ref")return!0;if(le.type==="group"){if(K(le.params))return!0}else if(le.type==="mapped"){for(const[me]of le.select.options)if(Y(le.map(me)))return!0}else if(le.type==="object-list")return K(le.element);return!1}function K(le){for(const me of Object.keys(le))if(Y(le[me]))return!0;return!1}function Q(le,me,ee){for(const se of Object.keys(le))X(le[se],me?.[se],ee)}_.resolveRefs=Q;function J(le,me,ee){if(me==null)return ee;if(le.type==="value-ref"||le.type==="data-ref"){const se=me;se&&typeof se.ref=="string"&&se.ref&&(0,f.arraySetAdd)(ee,se.ref)}else if(le.type==="group")ae(le.params,me,ee);else if(le.type==="mapped"){const se=me;if(!se)return ee;const ye=le.map(se.name);J(ye,se.params,ee)}else if(le.type==="object-list"){if(!K(le.element))return ee;for(const se of me)ae(le.element,se,ee)}return ee}function ae(le,me,ee){for(const se of Object.keys(le))J(le[se],me?.[se],ee);return ee}function te(le,me,ee){return!le||!me?ee:ae(le,me,ee)}_.collectRefs=te;function ne(le,me){for(const ee of Object.keys(le))le[ee].isOptional||(le[ee].defaultValue=me[ee])}_.setDefaultValues=ne;function $(le){return(0,i.deepClone)(le)}_.clone=$;function ie(le,me){}_.validate=ie;function Z(le,me,ee){if(me===ee)return!0;
15if(typeof me!="object"||typeof ee!="object")return!1;for(const se of Object.keys(le))if(!re(le[se],me[se],ee[se]))return!1;return!0}_.areEqual=Z;function re(le,me,ee){if(me===ee)return!0;if(le.type==="group")return Z(le.params,me,ee);if(le.type==="mapped"){const se=me,ye=ee;if(se.name!==ye.name)return!1;const Se=le.map(se.name);return re(Se,se.params,ye.params)}else if(le.type==="multi-select"){const se=me,ye=ee;if(se.length!==ye.length)return!1;if(se.length<10){for(let Se=0,Ae=se.length;Se<Ae;Se++)if(se[Se]!==ye[Se]&&ye.indexOf(se[Se])<0)return!1}else{const Se=new Set(ye);for(let Ae=0,_e=se.length;Ae<_e;Ae++)if(se[Ae]!==ye[Ae]&&!Se.has(se[Ae]))return!1}return!0}else{if(le.type==="interval")return me[0]===ee[0]&&me[1]===ee[1];if(le.type==="line-graph"){const se=me,ye=ee;if(se.length!==ye.length)return!1;for(let Se=0,Ae=se.length;Se<Ae;Se++)if(!t.Vec2.areEqual(se[Se],ye[Se]))return!1;return!0}else{if(le.type==="vec3")return r.Vec3.equals(me,ee);if(le.type==="mat4")return n.Mat4.areEqual(me,ee,h.EPSILON);if(le.type==="script"){const se=me,ye=ee;return se.language===ye.language&&se.expression===ye.expression}else if(le.type==="object-list"){const se=me,ye=ee,Se=se.length;if(Se!==ye.length)return!1;for(let Ae=0;Ae<Se;Ae++)if(!Z(le.element,se[Ae],ye[Ae]))return!1;return!0}else if(typeof me=="object"&&typeof ee=="object")return(0,e.shallowEqualObjects)(me,ee)}}return!1}_.isParamEqual=re;function oe(le,me,ee){if(me===void 0)return{...ee};if(ee===void 0)return{...me};const se={};for(const ye of Object.keys(le))se[ye]=ce(le[ye],me[ye],ee[ye]);return se}_.merge=oe;function ce(le,me,ee){if(me===void 0)return typeof ee=="object"&&!Array.isArray(ee)?{...ee}:ee;if(ee===void 0)return typeof me=="object"&&!Array.isArray(me)?{...me}:me;if(le.type==="group")return oe(le.params,me,ee);if(le.type==="mapped"){const se=me,ye=ee;if(se.name!==ye.name)return{...ye};const Se=le.map(ye.name);return{name:ye.name,params:ce(Se,se.params,ye.params)}}else return le.type==="value"?ee:typeof me=="object"&&typeof ee=="object"?Array.isArray(ee)?ee:{...me,...ee}:ee}_.mergeParam=ce;function ue(le,me){for(const ee of le.options)if(ee[0]===me)return!0;return!1}function pe(le,me,ee){if(me==null)return ee?le.defaultValue:void 0;if(le.type==="value")return me;if(le.type==="group"){const se={};for(const ye of Object.keys(le.params)){const Se=le.params[ye];me[ye]===void 0?ee&&(se[ye]=Se.defaultValue):se[ye]=pe(Se,me[ye],ee)}return se}else if(le.type==="mapped"){const se=me;if(typeof se.name!="string")return le.defaultValue;if(typeof se.params>"u")return ee?le.defaultValue:void 0;if(!ue(le.select,se.name))return le.defaultValue;const ye=le.map(se.name);return{name:se.name,params:pe(ye,se.params,ee)}}else{if(le.type==="select")return ue(le,me)?me:le.defaultValue;if(le.type==="multi-select"){if(!Array.isArray(me))return le.defaultValue;const se=me.filter(function(ye){return ue(this,ye)},le);return me.length>0&&se.length===0?le.defaultValue:se}else if(le.type==="object-list")return Array.isArray(me)?me.map(se=>he(le.element,se,ee?"all":"skip")):le.defaultValue}return me}function he(le,me,ee){if(typeof me!="object"||me===null)return ee?z(le):me;const se={};for(const ye of Object.keys(le)){const Se=le[ye];me[ye]===void 0?ee==="all"&&(se[ye]=Se.defaultValue):se[ye]=pe(Se,me[ye],ee!=="skip")}return se}_.normalizeParams=he;function fe(le,me){const ee=[];for(const se of Object.keys(le))if(!me)typeof le[se]=="string"?ee.push([se,le[se]]):ee.push([se,me===null?se:(0,c.stringToWords)(se)]);else{const ye=me(se,le[se]);ee.push(typeof ye=="string"?[se,ye]:[se,ye[0],ye[1]])}return ee}_.objectToOptions=fe;function de(le,me){const ee=[];for(const se of le)me?ee.push([se,me(se)]):ee.push([se,me===null?se:(0,c.stringToWords)(se)]);return ee}_.arrayToOptions=de;function ge(le,me){for(const ee of le.options)if(ee[0]===me)return ee[1];return""}_.optionLabel=ge;function Ce(le,me){for(const ee of me)if(ee[0]===le)return le;return me.length>0?me[0][0]:void 0}function ve(le,me){const ee={};for(const se of Object.keys(me)){const ye=me[se];!le[se]||ye===null||ye===void 0||le[se].defaultValue===ye||(ee[se]={...le[se],defaultValue:ye})}return{...le,...ee}}_.withDefaults=ve})(y||(Rp.ParamDefinition=y={})),Rp}var TC={},po={},IR;
15function Cl(){if(IR)return po;IR=1,Object.defineProperty(po,"__esModule",{value:!0}),po.Bridge=po.BridgeType=po.DSSPType=void 0;const e=et();var t;(function(i){i.is=e.BitFlags.has,i.create=e.BitFlags.create,(function(c){c[c._=0]="_",c[c.H=1]="H",c[c.B=2]="B",c[c.E=4]="E",c[c.G=8]="G",c[c.I=16]="I",c[c.S=32]="S",c[c.T=64]="T",c[c.T3=128]="T3",c[c.T4=256]="T4",c[c.T5=512]="T5",c[c.T3S=1024]="T3S",c[c.T4S=2048]="T4S",c[c.T5S=4096]="T5S"})(i.Flag||(i.Flag={}))})(t||(po.DSSPType=t={}));var r;(function(i){i[i.PARALLEL=0]="PARALLEL",i[i.ANTI_PARALLEL=1]="ANTI_PARALLEL"})(r||(po.BridgeType=r={}));class n{constructor(c,o,s){this.partner1=Math.min(c,o),this.partner2=Math.max(c,o),this.type=s}}return po.Bridge=n,po}var wR;function LJ(){if(wR)return TC;wR=1,Object.defineProperty(TC,"__esModule",{value:!0}),TC.assignBends=n;const e=Ge(),t=er(),r=Cl();function n(i){const{unit:c,flags:o,proteinInfo:s}=i,h=c.conformation,{traceElementIndex:f}=c.model.atomicHierarchy.derived.residue,{residueIndices:y,nIndices:_}=s,g=y.length,a=(C,l)=>C===-1?e.Vec3.setNaN(l):h.position(C,l),d=(0,e.Vec3)(),p=(0,e.Vec3)(),u=(0,e.Vec3)(),m=(0,e.Vec3)(),v=(0,e.Vec3)(),b=(0,e.Vec3)(),P=(0,e.Vec3)();e:for(let C=2;C<g-2;C++){for(let V=0;V<4;V++){const R=C+V-2;if(a(f[R],m),a(_[R+1],v),e.Vec3.squaredDistance(m,v)>6.25)continue e}const l=y[C-2],S=y[C],T=y[C+2],A=f[l],x=f[S],M=f[T];a(A,d),a(x,p),a(M,u),e.Vec3.sub(b,d,p),e.Vec3.sub(P,p,u);const D=(0,t.radToDeg)(e.Vec3.angle(b,P));D&&D>70&&(o[C]|=r.DSSPType.Flag.S)}}return TC}var xC={},VR;function NJ(){if(VR)return xC;VR=1,Object.defineProperty(xC,"__esModule",{value:!0}),xC.calcUnitBackboneHbonds=s;const e=is(),t=Ge(),r=9,n=-27.888,i=-.5,c=-9.9;function o(f,y,_,g){const a=t.Vec3.distance(f,g),d=t.Vec3.distance(y,g),p=t.Vec3.distance(y,_),u=t.Vec3.distance(f,_),m=n/a-n/d,v=n/p-n/u,b=m+v;return b<c?c:b}function s(f,y,_){const{residueIndices:g,cIndices:a,hIndices:d,nIndices:p,oIndices:u}=y,{index:m}=f.model.atomicHierarchy,v=f.conformation,{traceElementIndex:b}=f.model.atomicHierarchy.derived.residue,P=g.length,C=[],l=[],S=[],T=(0,t.Vec3)(),A=(0,t.Vec3)(),x=(0,t.Vec3)(),M=(0,t.Vec3)(),D=(0,t.Vec3)(),V=(0,t.Vec3)(),R=(0,t.Vec3)();for(let E=0,I=g.length;E<I;++E){const B=E,w=g[E],O=u[B],F=a[B],L=b[w];if(O===-1||F===-1||m.findAtomOnResidue(w,"OXT")!==-1)continue;v.invariantPosition(O,T),v.invariantPosition(F,A),v.invariantPosition(L,x);const{indices:U,count:q}=_.find(x[0],x[1],x[2],r);for(let N=0;N<q;++N){const k=U[N];if(k===B||k-1===B||k+1===B)continue;const j=p[k];if(j===-1)continue;v.invariantPosition(j,M);const H=d[k];if(H===-1){if(k===0)continue;const z=k-1,W=u[z],X=a[z];if(W===-1||X===-1)continue;v.invariantPosition(W,R),v.invariantPosition(X,V),t.Vec3.sub(D,V,R);const Y=t.Vec3.distance(R,V);t.Vec3.scaleAndAdd(D,M,D,1/Y)}else v.invariantPosition(H,D);const G=o(T,A,M,D);G>i||(C[C.length]=B,l[l.length]=k,S[S.length]=G)}}return h(P,C,l,S)}function h(f,y,_,g){const a=new e.IntAdjacencyGraph.DirectedEdgeBuilder(f,y,_),d=new Float32Array(a.slotCount);for(let p=0,u=a.edgeCount;p<u;p++)a.addNextEdge(),a.assignProperty(d,g[p]);return a.createGraph({energies:g})}return xC}var AC={},ER;function qJ(){if(ER)return AC;ER=1,Object.defineProperty(AC,"__esModule",{value:!0}),AC.assignTurns=t;const e=Cl();function t(r){const{proteinInfo:n,hbonds:i,flags:c}=r,o=[e.DSSPType.Flag.T3S,e.DSSPType.Flag.T4S,e.DSSPType.Flag.T5S,e.DSSPType.Flag.T3,e.DSSPType.Flag.T4,e.DSSPType.Flag.T5];for(let s=0;s<3;s++)for(let h=0,f=n.residueIndices.length-1;h<f;++h)if(i.getDirectedEdgeIndex(h,h+s+3)!==-1)if(c[h]|=o[s+3]|o[s],r.params.oldDefinition)for(let y=1;y<s+3;++y)c[h+y]|=o[s+3]|e.DSSPType.Flag.T;else for(let y=0;y<=s+3;++y)c[h+y]|=o[s+3]|e.DSSPType.Flag.T}return AC}var MC={},BR;function UJ(){if(BR)return MC;BR=1,Object.defineProperty(MC,"__esModule",{value:!0}),MC.assignHelices=t;const e=Cl();function t(r){const{proteinInfo:n,flags:i}=r,c=n.residueIndices.length,o=[e.DSSPType.Flag.T3S,e.DSSPType.Flag.T4S,e.DSSPType.Flag.T5S,e.DSSPType.Flag.T3,e.DSSPType.Flag.T4,e.DSSPType.Flag.T5],s=[0,0,0,e.DSSPType.Flag.G,e.DSSPType.Flag.H,e.DSSPType.Flag.I],h=r.params.oldOrdering?[4,3,5]:[3,4,5];for(let f=0;f<h.length;f++){const y=h[f];for(let _=1,g=c-y;_<g;_++){const a=e.DSSPType.create(i[_]),d=e.DSSPType.create(i[_-1]),p=e.DSSPType.create(i[_+1]);if(r.params.oldOrdering){if(y===3&&(e.DSSPType.is(a,e.DSSPType.Flag.H)||e.DSSPType.is(p,e.DSSPType.Flag.H))||y===5&&(e.DSSPType.is(a,e.DSSPType.Flag.H)||e.DSSPType.is(a,e.DSSPType.Flag.G)||e.DSSPType.is(p,e.DSSPType.Flag.H)||e.DSSPType.is(p,e.DSSPType.Flag.G)))continue}else if(y===4&&(e.DSSPType.is(a,e.DSSPType.Flag.G)||e.DSSPType.is(p,e.DSSPType.Flag.G))||y===5&&(e.DSSPType.is(a,e.DSSPType.Flag.H)||e.DSSPType.is(a,e.DSSPType.Flag.G)||e.DSSPType.is(p,e.DSSPType.Flag.H)||e.DSSPType.is(p,e.DSSPType.Flag.G)))continue;if(e.DSSPType.is(a,o[y])&&e.DSSPType.is(a,o[y-3])&&e.DSSPType.is(d,o[y])&&e.DSSPType.is(d,o[y-3]))if(r.params.oldDef
15inition)for(let u=0;u<y;u++)i[_+u]|=s[y];else for(let u=-1;u<=y;u++)i[_+u]|=s[y]}}}return MC}var DC={},RR;function jJ(){if(RR)return DC;RR=1,Object.defineProperty(DC,"__esModule",{value:!0}),DC.assignLadders=i;const e=Cl();function t(c,o){if(o.type!==c.type||o.partner1!==c.firstEnd+1)return!1;if(o.type===e.BridgeType.PARALLEL){if(o.partner2===c.secondEnd+1)return!0}else if(o.partner2===c.secondStart-1)return!0;return!1}function r(c,o){return c.type===o.type&&o.firstStart-c.firstEnd<6&&c.firstStart<o.firstStart&&o.nextLadder===0?c.type===e.BridgeType.PARALLEL?n(c,o):n(o,c):!1}function n(c,o){return o.secondStart-c.secondEnd>0&&(o.secondStart-c.secondEnd<6&&o.firstStart-c.firstEnd<3||o.secondStart-c.secondEnd<3)}function i(c){const{bridges:o,ladders:s}=c;for(let h=0;h<o.length;h++){const f=o[h];let y=!1;for(let _=0;_<s.length;_++){const g=s[_];t(g,f)&&(y=!0,g.firstEnd++,f.type===e.BridgeType.PARALLEL?g.secondEnd++:g.secondStart--)}y||(s[s.length]={previousLadder:0,nextLadder:0,firstStart:f.partner1,firstEnd:f.partner1,secondStart:f.partner2,secondEnd:f.partner2,type:f.type})}for(let h=0;h<s.length;h++){const f=s[h];for(let y=h;y<s.length;y++){const _=s[y];r(f,_)&&(f.nextLadder=y,_.previousLadder=h)}}}return DC}var IC={},OR;function GJ(){if(OR)return IC;OR=1,Object.defineProperty(IC,"__esModule",{value:!0}),IC.assignBridges=t;const e=Cl();function t(r){const{proteinInfo:n,hbonds:i,flags:c,bridges:o}=r,{offset:s,b:h}=i;let f,y;for(let _=0,g=n.residueIndices.length;_<g;++_)for(let a=s[_],d=s[_+1];a<d;a++){const p=h[a];_>p||(f=_+1,y=p,f!==y&&i.getDirectedEdgeIndex(y,f+1)!==-1&&(c[f]|=e.DSSPType.Flag.B,c[y]|=e.DSSPType.Flag.B,o[o.length]=new e.Bridge(f,y,e.BridgeType.PARALLEL)),f=_,y=p-1,f!==y&&i.getDirectedEdgeIndex(y-1,f)!==-1&&(c[f]|=e.DSSPType.Flag.B,c[y]|=e.DSSPType.Flag.B,o[o.length]=new e.Bridge(y,f,e.BridgeType.PARALLEL)),f=_,y=p,f!==y&&i.getDirectedEdgeIndex(y,f)!==-1&&(c[f]|=e.DSSPType.Flag.B,c[y]|=e.DSSPType.Flag.B,o[o.length]=new e.Bridge(y,f,e.BridgeType.ANTI_PARALLEL)),f=_+1,y=p-1,f!==y&&i.getDirectedEdgeIndex(y-1,f+1)!==-1&&(c[f]|=e.DSSPType.Flag.B,c[y]|=e.DSSPType.Flag.B,o[o.length]=new e.Bridge(y,f,e.BridgeType.ANTI_PARALLEL)))}o.sort((_,g)=>_.partner1>g.partner1?1:_.partner1<g.partner1?-1:0)}return IC}var wC={},kR;function zJ(){if(kR)return wC;kR=1,Object.defineProperty(wC,"__esModule",{value:!0}),wC.assignSheets=r;const e=Cl();function t(n){return e.DSSPType.is(n,e.DSSPType.Flag.G)||e.DSSPType.is(n,e.DSSPType.Flag.H)||e.DSSPType.is(n,e.DSSPType.Flag.I)}function r(n){const{ladders:i,flags:c}=n;for(let o=0;o<i.length;o++){const s=i[o];for(let f=s.firstStart;f<=s.firstEnd;f++){const y=s.firstStart-f,_=s.secondStart-y;s.firstStart!==s.firstEnd?(c[f]|=e.DSSPType.Flag.E,c[_]|=e.DSSPType.Flag.E):(!t(c[f])&&e.DSSPType.is(c[f],e.DSSPType.Flag.E)&&(c[f]|=e.DSSPType.Flag.B),!t(c[_])&&e.DSSPType.is(c[_],e.DSSPType.Flag.E)&&(c[_]|=e.DSSPType.Flag.B))}if(s.nextLadder===0)continue;const h=i[s.nextLadder];for(let f=s.firstStart;f<=h.firstEnd;f++)c[f]|=e.DSSPType.Flag.E;if(s.type===e.BridgeType.PARALLEL)for(let f=s.secondStart;f<=h.secondEnd;f++)c[f]|=e.DSSPType.Flag.E;else for(let f=h.secondEnd;f<=s.secondStart;f++)c[f]|=e.DSSPType.Flag.E}}return wC}var VC={},FR;function HJ(){if(FR)return VC;FR=1,Object.defineProperty(VC,"__esModule",{value:!0}),VC.calculateUnitDihedralAngles=r;const e=Ge(),t=er();function r(n,i){const{cIndices:c,nIndices:o,residueIndices:s}=i,h=n.conformation,{index:f}=n.model.atomicHierarchy,{traceElementIndex:y}=n.model.atomicHierarchy.derived.residue,_=s.length,g=(T,A)=>T===-1?e.Vec3.setNaN(A):h.position(T,A);let a=(0,e.Vec3)(),d=(0,e.Vec3)(),p=(0,e.Vec3)(),u=(0,e.Vec3)(),m=(0,e.Vec3)(),v=(0,e.Vec3)();const b=(0,e.Vec3)(),P=(0,e.Vec3)(),C=(0,e.Vec3)();if(_===0)return{phi:new Float32Array(0),psi:new Float32Array(0)};const l=new Float32Array(_-1),S=new Float32Array(_-1);g(-1,a),g(-1,d),g(-1,p),g(c[0],u),g(y[s[0]],m),g(o[0],v),g(c[1],b),g(y[s[1]],P),g(o[1],C);for(let T=0;T<_-1;++T)f.findAtomOnResidue(s[T],"OXT")===-1&&(l[T]=(0,t.radToDeg)(e.Vec3.dihedralAngle(a,v,m,u)),S[T]=(0,t.radToDeg)(e.Vec3.dihedralAngle(v,m,u,C)),a=u,d=m,p=v,u=b,m=P,v=C,g(c[T+1],b),g(y[s[T+1]],P),g(o[T+1],C));return{phi:l,psi:S}}return VC}var EC={},LR;function WJ(){if(LR)return EC;LR=1,Object.defineProperty(EC,"__esModule",{value:!0}),EC.calcUnitProteinTraceLookup3D=n;const e=rt(),t=at(),r=wT();function n(i,c){const{x:o,y:s,z:h}=i.model.atomicConformation,{traceElementIndex:f}=i.model.atomicHierarchy.derived.residue,y=new Uint32Array(c.length);for(let g=0,a=c.length;g<a;++g)y[g]=f[c[g]];const _={x:o,y:s,z:h,indices:t.SortedArray.ofSortedArray(y)};return(0,e.GridLookup3D)(_,(0,r.getBoundary)(_))}return EC}var BC={},NR;function $J(){if(NR)return BC;NR=1,Object.defineProperty(BC,"__esModule",{value:!0}),BC.getUnitProteinInfo=t;const e=at();function t(r){const{index:n}=r.model.atomicHierarchy,{proteinElements:i,residueIndex:c}=r,o=i.length,s=new Uint32Array(o),h=new Int32Array(o),f=new Int32Array(o),y=new Int32Array(o),_=new Int32Array(o);for(let g=0;g<o;++g){const a=c[i[g]];s[g]=a,h[g]=n.findAtomOnResidue(a,"C"),f[g]=n.findAtomOnResidue(a,"H"),y[g]=n.findAtomOnResidue(a,"O"),_[g]=n.findAtomOnResidue(a,"N")}return{residueIndices:e.SortedArray.ofSortedArray(s),cIndices:h,hIndices:f,oIndices:y,nIndices:_}}return BC}var qR;function XJ(){return qR||(qR=1,(function(e){Object.defineProperty(e,"__esMo
15dule",{value:!0}),e.DefaultDSSPComputationProps=e.DSSPComputationParams=void 0,e.computeUnitDSSP=u;const t=aI(),r=dt(),n=Ne(),i=LJ(),c=NJ(),o=Cl(),s=qJ(),h=UJ(),f=jJ(),y=GJ(),_=zJ(),g=HJ(),a=WJ(),d=$J(),p=at();e.DSSPComputationParams={oldDefinition:n.ParamDefinition.Boolean(!0,{description:"Whether to use the old DSSP convention for the annotation of turns and helices, causes them to be two residues shorter"}),oldOrdering:n.ParamDefinition.Boolean(!0,{description:"Alpha-helices are preferred over 3-10 helices"})},e.DefaultDSSPComputationProps=n.ParamDefinition.getDefaultValues(e.DSSPComputationParams);async function u(T,A){const x=(0,d.getUnitProteinInfo)(T),{residueIndices:M}=x,D=(0,a.calcUnitProteinTraceLookup3D)(T,M),V=(0,c.calcUnitBackboneHbonds)(T,x,D),R=M.length,E=new Uint32Array(R),I=(0,g.calculateUnitDihedralAngles)(T,x),B=[],w=[],O=A.oldDefinition?b:C,F=A.oldOrdering?P:l,L={params:A,getResidueFlag:O,getFlagName:F,unit:T,proteinInfo:x,flags:E,hbonds:V,torsionAngles:I,ladders:B,bridges:w};(0,s.assignTurns)(L),(0,h.assignHelices)(L),(0,i.assignBends)(L),(0,y.assignBridges)(L),(0,f.assignLadders)(L),(0,_.assignSheets)(L);const U=S(E,O),q=new Uint32Array(R),N=[],k=[],j=H=>p.SortedArray.indexOf(M,H);for(let H=0,G=M.length;H<G;++H){const z=U[H];q[H]=z;const W=O(E[H]);(k.length===0||W!==k[k.length-1].flags)&&(k[k.length]=m(v(z),E[H],O)),N[H]=k.length-1}return(0,t.SecondaryStructure)(q,N,k,j)}function m(T,A,x){return T==="helix"?{kind:"helix",flags:x(A)}:T==="sheet"?{kind:"sheet",flags:x(A)}:T==="turn"||T==="bend"?{kind:"turn",flags:x(A)}:{kind:"none"}}function v(T){return T===r.SecondaryStructureType.SecondaryStructureDssp.H||T===r.SecondaryStructureType.SecondaryStructureDssp.G||T===r.SecondaryStructureType.SecondaryStructureDssp.I?"helix":T===r.SecondaryStructureType.SecondaryStructureDssp.B||T===r.SecondaryStructureType.SecondaryStructureDssp.E?"sheet":T===r.SecondaryStructureType.SecondaryStructureDssp.T?"turn":T===r.SecondaryStructureType.SecondaryStructureDssp.S?"bend":"none"}function b(T){return o.DSSPType.is(T,o.DSSPType.Flag.H)?r.SecondaryStructureType.SecondaryStructureDssp.H:o.DSSPType.is(T,o.DSSPType.Flag.E)?r.SecondaryStructureType.SecondaryStructureDssp.E:o.DSSPType.is(T,o.DSSPType.Flag.B)?r.SecondaryStructureType.SecondaryStructureDssp.B:o.DSSPType.is(T,o.DSSPType.Flag.G)?r.SecondaryStructureType.SecondaryStructureDssp.G:o.DSSPType.is(T,o.DSSPType.Flag.I)?r.SecondaryStructureType.SecondaryStructureDssp.I:o.DSSPType.is(T,o.DSSPType.Flag.T)?r.SecondaryStructureType.SecondaryStructureDssp.T:o.DSSPType.is(T,o.DSSPType.Flag.S)?r.SecondaryStructureType.SecondaryStructureDssp.S:r.SecondaryStructureType.Flag.None}function P(T){return o.DSSPType.is(T,o.DSSPType.Flag.H)?"H":o.DSSPType.is(T,o.DSSPType.Flag.E)?"E":o.DSSPType.is(T,o.DSSPType.Flag.B)?"B":o.DSSPType.is(T,o.DSSPType.Flag.G)?"G":o.DSSPType.is(T,o.DSSPType.Flag.I)?"I":o.DSSPType.is(T,o.DSSPType.Flag.T)?"T":o.DSSPType.is(T,o.DSSPType.Flag.S)?"S":"-"}function C(T){return o.DSSPType.is(T,o.DSSPType.Flag.I)?r.SecondaryStructureType.SecondaryStructureDssp.I:o.DSSPType.is(T,o.DSSPType.Flag.H)?r.SecondaryStructureType.SecondaryStructureDssp.H:o.DSSPType.is(T,o.DSSPType.Flag.E)?r.SecondaryStructureType.SecondaryStructureDssp.E:o.DSSPType.is(T,o.DSSPType.Flag.B)?r.SecondaryStructureType.SecondaryStructureDssp.B:o.DSSPType.is(T,o.DSSPType.Flag.G)?r.SecondaryStructureType.SecondaryStructureDssp.G:o.DSSPType.is(T,o.DSSPType.Flag.T)?r.SecondaryStructureType.SecondaryStructureDssp.T:o.DSSPType.is(T,o.DSSPType.Flag.S)?r.SecondaryStructureType.SecondaryStructureDssp.S:r.SecondaryStructureType.Flag.None}function l(T){return o.DSSPType.is(T,o.DSSPType.Flag.I)?"I":o.DSSPType.is(T,o.DSSPType.Flag.H)?"H":o.DSSPType.is(T,o.DSSPType.Flag.E)?"E":o.DSSPType.is(T,o.DSSPType.Flag.B)?"B":o.DSSPType.is(T,o.DSSPType.Flag.G)?"G":o.DSSPType.is(T,o.DSSPType.Flag.T)?"T":o.DSSPType.is(T,o.DSSPType.Flag.S)?"S":"-"}function S(T,A){const x=new Uint32Array(T.length);for(let M=0,D=T.length;M<D;++M){const V=o.DSSPType.create(T[M]);x[M]=A(V)}return x}})(fx)),fx}var kp={},UR;function wf(){if(UR)return kp;UR=1,Object.defineProperty(kp,"__esModule",{value:!0}),kp.CustomStructureProperty=void 0;const e=Ne(),t=et(),r=Pr(),n=ui();var i;return(function(c){function o(h){const f=h.descriptor.name,y=h.type==="root"?"inheritedPropertyData":"currentPropertyData",_=a=>(f in a[y]||(a[y][f]={props:{...e.ParamDefinition.getDefaultValues(h.getParams(a))},data:t.ValueBox.create(void 0)}),a[y][f]),g=(a,d,p)=>{const u=_(a);a[y][f]={props:d,data:t.ValueBox.withValue(u.data,p)}};return{label:h.label,descriptor:h.descriptor,isHidden:h.isHidden,getParams:a=>{const d=e.ParamDefinition.clone(h.getParams(a));return e.ParamDefinition.setDefaultValues(d,_(a).props),d},defaultParams:h.defaultParams,isApplicable:h.isApplicable,attach:async(a,d,p={},u)=>{u&&d.customPropertyDescriptors.reference(h.descriptor,!0),h.type==="root"&&(d=d.root);const m=_(d.root).props,v=_(d),b=e.ParamDefinition.merge(h.defaultParams,m,p);if(v.data.value&&e.ParamDefinition.areEqual(h.defaultParams,v.props,b))return;const{value:P,assets:C}=await h.obtain(a,d,b);d.customPropertyDescriptors.add(h.descriptor),d.customPropertyDescriptors.assets(h.descriptor,C),g(d,b,P)},ref:(a,d)=>a.customPropertyDescriptors.reference(h.descriptor,d),get:a=>_(a).data,set:(a,d={},p)=>{h.type==="root"&&(a=a.root);const u=_(a),m=e.ParamDefinition.merge(h.defaultParams,u.props,d);e.ParamDefinition.areEqual(h.defaultParams,u.props,m)||(g(a,m,p),a.customPropertyDescriptors.assets(h.descriptor))},props:a=>_(a).props}}c.createProvider=o;function s(h,f,y){const _={value:e.ParamDefinition.Value(y,{isHidden:!0})};return o({label:(0,n.stringToWords)(h),descriptor:(0,r.CustomPropertyDescriptor)({name:h}),isHidden:!0,type:f,defaultParams:_,getParams:()=>({value:e.ParamDefinition.Value(y,{isHidden:!0})}),isApplicable:()=>!0,obtain:async(g,a,d)=>({...e.ParamDefinition.getDefaultValues(_),...d})})}c.createSimple=s})(i||(kp.CustomStructureProperty=i={})),kp}var Fp={},jR;function BT(){if(jR)return Fp;jR=1,Object.defineProperty(Fp,"__esModule",{value:!0}),Fp.ModelSecondaryStructure=void 0;const e=dt(),t=ma(),r=aI(),n=lt(),i=as();var c;(function(_){_.Descriptor={name:"model_secondary_structure"},_.Provider=i.FormatPropertyProvider.create(_.Descriptor);function g(a,d,p){const u=new Map,m=[{kind:"none"}],v=o(a,d);s(a,v,u,m),h(d,v,u,a._rowCount,m);const b=p.residues._rowCount,P=l=>l,C={type:new Int32Array(b),key:new Int32Array(b),elements:m};return u.size>0&&y(p,v,u,C),(0,r.SecondaryStructure)(C.type,C.key,C.elements,P)}_.fromStruct=g})(c||(Fp.ModelSecondaryStructure=c={}));function o(_,g){if(_._rowCount>0){if(_.beg_label_seq_id.valueKind(0)!==n.Column.ValueKinds.Present||_.end_label_seq_id.valueKind(0)!==n.Column.ValueKinds.Present)return"auth"}else if(g&&(g.beg_label_seq_id.valueKind(0)!==n.Column.ValueKinds.Present||g.end_label_seq_id.valueKind(0)!==n.Column.ValueKinds.Present))return"auth";return"label"}function s(_,g,a,d){if(!_._rowCount)return;const{beg_label_asym_id:p,beg_label_seq_id:u,beg_auth_seq_id:m,pdbx_beg_PDB_ins_code:v}=_,{end_label_seq_id:b,end_auth_seq_id:P,pdbx_end_PDB_ins_code:C}=_,{pdbx_PDB_helix_class:l,conf_type_id:S,details:T}=_,A=g==="label"?u:m,x=g==="label"?b:P;for(let M=0,D=_._rowCount;M<D;M++){const V=e.SecondaryStructureType.create(l.valueKind(M)===n.Column.ValueKinds.Present?e.SecondaryStructureType.SecondaryStructurePdb[l.value(M)]:S.valueKind(M)===n.Column.ValueKinds.Present?e.SecondaryStructureType.SecondaryStructureMmcif[S.value(M)]:e.SecondaryStructureType.Flag.NA),R={kind:"helix",flags:V,type_id:S.valueKind(M)===n.Column.ValueKinds.Present?S.value(M):"helx_p",helix_class:l.value(M),details:T.valueKind(M)===n.Column.ValueKinds.Present?T.value(M):void 0},E={startSeqId:A.value(M),startInsCode:v.value(M),endSeqId:x.value(M),endInsCode:C.value(M),type:V,key:d.length};d[d.length]=R;const I=p.value(M);if(a.has(I)){const B=a.get(I);B.has(E.startSeqId)?B.get(E.startSeqId).push(E):B.set(E.startSeqId,[E])}else a.set(I,new Map([[E.startSeqId,[E]]]))}}function h(_,g,a,d,p){if(!_._rowCount)return;const{beg_label_asym_id:u,beg_label_seq_id:m,beg_auth_seq_id:v,pdbx_beg_PDB_ins_code:b}=_,{end_label_seq_id:P,end_auth_seq_id:C,pdbx_end_PDB_ins_code:l}=_,{sheet_id:S}=_,T=g==="label"?m:v,A=g==="label"?P:C,x=new Map;let M=d+1;for(let D=0,V=_._rowCount;D<V;D++){const R=S.value(D);let E;x.has(R)?E=x.get(R):(E=M++,x.set(R,E));const I=e.SecondaryStructureType.create(e.SecondaryStructureType.Flag.Beta|e.SecondaryStructureType.Flag.BetaSheet),B={kind:"sheet",flags:I,sheet_id:R,symmetry:void 0},w={startSeqId:T.value(D),startInsCode:b.value(D),endSeqId:A.value(D),endInsCode:l.value(D),type:I,key:p.length};p[p.length]=B;const O=u.value(D);if(a.has(O)){const F=a.get(O);F.has(w.startSeqId)?F.get(w.startSeqId).push(w):F.set(w.startSeqId,[w])}else a.set(O,new Map([[w.startSeqId,[w]]]))}}function f(_,g,a,d,p,u){const{auth_seq_id:m,label_seq_id:v,pdbx_PDB_ins_code:b}=_.residues,{endSeqId:P,endInsCode:C,key:l,type:S}=a,T=g==="label"?v:m;let A=d;for(;A<p;){const x=T.value(A);if(u.type[A]=S,u.key[A]=l,x>P||x===P&&b.value(A)===C)break;A++}}function y(_,g,a,d){const{count:p}=_.chainAtomSegments,{label_asym_id:u}=_.chains,{auth_seq_id:m,label_seq_id:v,pdbx_PDB_ins_code:b}=_.residues,P=g==="label"?v:m;for(let C=0;C<p;C++){const l=t.AtomicHierarchy.chainStartResidueIndex(_,C),S=t.AtomicHierarchy.chainEndResidueIndexExcl(_,C),T=u.value(C);if(a.has(T)){const A=a.get(T);for(let x=l;x<S;x++){const M=P.value(x);if(A.has(M)){const D=A.get(M);for(const V of D){const R=b.value(x);V.startInsCode===R&&f(_,g,V,x,S,d)}}}}}}return Fp}var RC={},GR;
15function KJ(){if(GR)return RC;GR=1,Object.defineProperty(RC,"__esModule",{value:!0}),RC.computeUnitZhangSkolnik=_;const e=aI(),t=dt(),r=at(),n=wt(),i=[5.45,5.18,6.37],c=2.1,o=[6.1,10.4,13],s=1.42,h=(0,n.Vec3)(),f=(0,n.Vec3)();function y(p,u,m,v,b){const P=p.conformation,{traceElementIndex:C}=p.model.atomicHierarchy.derived.residue;for(let l=Math.max(0,m-2);l<=m;++l)for(let S=2;S<5;++S){if(l+S>=u.length)return!1;const T=u[l],A=u[l+S],x=C[T],M=C[A];if(x===-1||M===-1)return!1;P.invariantPosition(x,h),P.invariantPosition(M,f);const D=n.Vec3.distance(h,f);if(Math.abs(D-v[S-2])>=b)return!1}return!0}async function _(p){const u=p.proteinElements.length,m=new Uint32Array(u),v=[],b=[],{proteinElements:P,residueIndex:C}=p,l=P.length,S=new Uint32Array(l);for(let x=0;x<l;++x){const M=C[P[x]];S[x]=M}const T=r.SortedArray.ofSortedArray(S),A=x=>r.SortedArray.indexOf(T,x);for(let x=0,M=T.length;x<M;++x){let D=t.SecondaryStructureType.Flag.None;y(p,T,x,i,c)?D=t.SecondaryStructureType.Flag.Helix:y(p,T,x,o,s)&&(D=t.SecondaryStructureType.Flag.Beta),m[x]=D,(b.length===0||D!==d(b[b.length-1]))&&(b[b.length]=g(a(D),D)),v[x]=b.length-1}return(0,e.SecondaryStructure)(m,v,b,A)}function g(p,u){return p==="helix"?{kind:"helix",flags:u}:p==="sheet"?{kind:"sheet",flags:u}:{kind:"none"}}function a(p){return p===t.SecondaryStructureType.Flag.Helix?"helix":p===t.SecondaryStructureType.Flag.Beta?"sheet":"none"}function d(p){return p.kind==="helix"||p.kind==="sheet"?p.flags:t.SecondaryStructureType.Flag.None}return RC}var zR;function Pl(){return zR||(zR=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SecondaryStructureProvider=e.SecondaryStructureParams=void 0;const t=XJ(),r=Ne(),n=jr(),i=wf(),c=BT(),o=Pr(),s=Al(),h=KJ();function f(d){return{type:r.ParamDefinition.MappedStatic("auto",{auto:r.ParamDefinition.EmptyGroup({label:"Automatic"}),model:r.ParamDefinition.EmptyGroup({label:"Model"}),dssp:r.ParamDefinition.Group(t.DSSPComputationParams,{label:"DSSP",isFlat:!0}),"zhang-skolnick":r.ParamDefinition.EmptyGroup({label:"Zhang-Skolnick"})},{options:[["auto","Automatic"],["model","Model"],["dssp","DSSP"],["zhang-skolnick","Zhang-Skolnick"]]})}}e.SecondaryStructureParams=f(),e.SecondaryStructureProvider=i.CustomStructureProperty.createProvider({label:"Secondary Structure",descriptor:(0,o.CustomPropertyDescriptor)({name:"molstar_computed_secondary_structure"}),type:"root",defaultParams:e.SecondaryStructureParams,getParams:f,isApplicable:d=>!0,obtain:async(d,p,u)=>{const m={...r.ParamDefinition.getDefaultValues(e.SecondaryStructureParams),...u};switch(m.type.name){case"auto":return{value:await y(p)};case"dssp":return{value:await _(p,m.type.params)};case"model":return{value:await a(p)};case"zhang-skolnick":return{value:await g(p)}}}});async function y(d){const p=new Map;for(let u=0,m=d.unitSymmetryGroups.length;u<m;++u){const v=d.unitSymmetryGroups[u].units[0],b=v.model;if(s.Model.isFromPdbArchive(b)&&s.Model.isExperimental(b)&&!s.Model.isCoarseGrained(b)||s.Model.hasSecondaryStructure(b)){const P=c.ModelSecondaryStructure.Provider.get(b);P&&p.set(v.invariantId,P)}else if(n.Unit.isAtomic(v)&&!s.Model.isCoarseGrained(b)){const P=await(0,t.computeUnitDSSP)(v,t.DefaultDSSPComputationProps);p.set(v.invariantId,P)}else if(n.Unit.isAtomic(v)){const P=await(0,h.computeUnitZhangSkolnik)(v);p.set(v.invariantId,P)}}return p}async function _(d,p){const u=new Map;for(let m=0,v=d.unitSymmetryGroups.length;m<v;++m){const b=d.unitSymmetryGroups[m].units[0];if(n.Unit.isAtomic(b)&&!s.Model.isCoarseGrained(b.model)){const P=await(0,t.computeUnitDSSP)(b,p);u.set(b.invariantId,P)}}return u}async function g(d){const p=new Map;for(let u=0,m=d.unitSymmetryGroups.length;u<m;++u){const v=d.unitSymmetryGroups[u].units[0];if(n.Unit.isAtomic(v)){const b=await(0,h.computeUnitZhangSkolnik)(v);p.set(v.invariantId,b)}}return p}async function a(d){const p=new Map;for(let u=0,m=d.unitSymmetryGroups.length;u<m;++u){const v=d.unitSymmetryGroups[u].units[0];if(n.Unit.isAtomic(v)){const b=c.ModelSecondaryStructure.Provider.get(v.model);b&&p.set(v.invariantId,b)}}return p}})(dx)),dx}var HR;function Tl(){if(HR)return Bp;HR=1,Object.defineProperty(Bp,"__esModule",{value:!0}),Bp.StructureProperties=void 0;const e=Zn(),t=ma(),r=dt(),n=Pl(),i=rt();function c(l){return l}const o={true:l=>!0,false:l=>!1,zero:l=>0};function s(){throw new Error("Property only available for atomic models.")}function h(l){throw l?new Error(`Property only available for coarse models (${l}).`):new Error("Property only available for coarse models.")}const f={key:l=>
15l.element,x:l=>l.unit.conformation.x(l.element),y:l=>l.unit.conformation.y(l.element),z:l=>l.unit.conformation.z(l.element),id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicConformation.atomId.value(l.element):s(),occupancy:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicConformation.occupancy.value(l.element):s(),B_iso_or_equiv:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicConformation.B_iso_or_equiv.value(l.element):s(),sourceIndex:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atomSourceIndex.value(l.element):l.element,type_symbol:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atoms.type_symbol.value(l.element):s(),label_atom_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atoms.label_atom_id.value(l.element):s(),auth_atom_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atoms.auth_atom_id.value(l.element):s(),label_alt_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atoms.label_alt_id.value(l.element):s(),label_comp_id:y,auth_comp_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atoms.auth_comp_id.value(l.element):s(),pdbx_formal_charge:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atoms.pdbx_formal_charge.value(l.element):s(),vdw_radius:l=>e.Unit.isAtomic(l.unit)?(0,t.VdwRadius)(l.unit.model.atomicHierarchy.atoms.type_symbol.value(l.element)):s()};function y(l){return e.Unit.isAtomic(l.unit)||s(),l.unit.model.atomicHierarchy.atoms.label_comp_id.value(l.element)}function _(l){return e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.residues.label_seq_id.value(l.unit.residueIndex[l.element]):s()}function g(l){e.Unit.isAtomic(l.unit)||s();const S=l.unit.model.sequence.byEntityKey[m(l)];return S&&S.sequence.microHet.has(_(l))}function a(l){e.Unit.isAtomic(l.unit)||s();const S=l.unit.model.sequence.byEntityKey[m(l)];return S?S.sequence.microHet.get(_(l))||[y(l)]:[y(l)]}const d={key:l=>e.Unit.isAtomic(l.unit)?l.unit.residueIndex[l.element]:s(),group_PDB:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.residues.group_PDB.value(l.unit.residueIndex[l.element]):s(),label_comp_id:y,auth_comp_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atoms.auth_comp_id.value(l.element):s(),label_seq_id:_,auth_seq_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.residues.auth_seq_id.value(l.unit.residueIndex[l.element]):s(),pdbx_PDB_ins_code:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.residues.pdbx_PDB_ins_code.value(l.unit.residueIndex[l.element]):s(),isNonStandard:l=>e.Unit.isAtomic(l.unit)?a(l).some(S=>l.unit.model.properties.chemicalComponentMap.get(S).mon_nstd_flag[0]==="n"):s(),hasMicroheterogeneity:g,microheterogeneityCompIds:a,secondary_structure_type:l=>{var S;e.Unit.isAtomic(l.unit)||s();const T=(S=n.SecondaryStructureProvider.get(l.structure).value)===null||S===void 0?void 0:S.get(l.unit.invariantId);return T?T.type[T.getIndex(l.unit.residueIndex[l.element])]:r.SecondaryStructureType.Flag.NA},secondary_structure_key:l=>{var S;e.Unit.isAtomic(l.unit)||s();const T=(S=n.SecondaryStructureProvider.get(l.structure).value)===null||S===void 0?void 0:S.get(l.unit.invariantId);return T?T.key[T.getIndex(l.unit.residueIndex[l.element])]:-1},chem_comp_type:l=>e.Unit.isAtomic(l.unit)?l.unit.model.properties.chemicalComponentMap.get(y(l)).type:s(),residueSourceIndex:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.residueSourceIndex.value(l.unit.residueIndex[l.element]):s()},p={key:l=>e.Unit.isAtomic(l.unit)?l.unit.chainIndex[l.element]:s(),label_asym_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.chains.label_asym_id.value(l.unit.chainIndex[l.element]):l.unit.coarseElements.asym_id.value(l.element),auth_asym_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.chains.auth_asym_id.value(l.unit.chainIndex[l.element]):s(),label_entity_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.chains.label_entity_id.value(l.unit.chainIndex[l.element]):l.unit.coarseElements.entity_id.value(l.element)},u={key:f.key,entityKey:l=>e.Unit.isCoarse(l.unit)?l.unit.coarseElements.entityKey[l.element]:h(),x:f.x,y:f.y,z:f.z,asym_id:l=>e.Unit.isCoarse(l.unit)?l.unit.coarseElements.asym_id.value(l.element):h(),entity_id:l=>e.Unit.isCoarse(l.unit)?l.unit.coarseElements.entity_id.value(l.element):h(),seq_id_begin:l=>e.Unit.isCoarse(l.unit)?l.unit.coarseElements.seq_id_begin.value(l.element):h(),seq_id_end:l=>e.Unit.isCoarse(l.unit)?l.unit.coarseElements.seq_id_end.value(l.element):h(),sphere_radius:l=>e.Unit.isSpheres(l.unit)?l.unit.coarseConformation.radius[l.element]:h("spheres"),sphere_rmsf:l=>e.Unit.isSpheres(l.unit)?l.unit.coarseConformation.rmsf[l.element]:h("spheres"),gaussian_weight:l=>e.Unit.isGaussians(l.unit)?l.unit.coarseConformation.weight[l.element]:h("gaussians"),gaussian_covariance_matrix:l=>e.Unit.isGaussians(l.unit)?l.unit.coarseConformation.covariance_matrix[l.element]:h("gaussians")};function m(l){switch(l.unit.kind){case e.Unit.Kind.Atomic:return l.unit.model.atomicHierarchy.index.getEntityFromChain(l.unit.chainIndex[l.element]);case e.Unit.Kind.Spheres:return l.unit.model.coarseHierarchy.spheres.entityKey[l.element];case e.Unit.Kind.Gaussians:return l.unit.model.coarseHierarchy.gaussians.entityKey[l.element]}}const v={key:m,id:l=>l.unit.model.entities.data.id.value(m(l)),type:l=>l.unit.model.entities.data.type.value(m(l)),src_method:l=>l.unit.model.entities.data.src_method.value(m(l)),pdbx_description:l=>l.unit.model.entities.data.pdbx_description.value(m(l)),formula_weight:l=>l.unit.model.entities.data.formula_weight.value(m(l)),pdbx_number_of_molecules:l=>l.unit.model.entities.data.pdbx_number_of_molecules.value(m(l)),details:l=>l.unit.model.entities.data.details.value(m(l)),pdbx_mutation:l=>l.unit.model.entities.data.pdbx_mutation.value(m(l)),pdbx_fragment:l=>l.unit.model.entities.data.pdbx_fragment.value(m(l)),pdbx_ec:l=>l.unit.model.entities.data.pdbx_ec.value(m(l)),pdbx_parent_entity_id:l=>l.unit.model.entities.data.pdbx_parent_entity_id.value(m(l)),subtype:l=>l.unit.model.entities.subtype.value(m(l)),prd_id:l=>{var S,T;return(T=(S=l.unit.model.entities.prd_id)===null||S===void 0?void 0:S.value(m(l)))!==null&&T!==void 0?T:""}},b=[],P={id:l=>l.unit.id,chainGroupId:l=>l.unit.chainGroupId,multiChain:l=>e.Unit.Traits.is(l.unit.traits,e.Unit.Trait.MultiChain),object_primitive:l=>l.unit.objectPrimitive,operator_name:l=>l.unit.conformation.operator.name,instance_id:l=>l.unit.conformation.operator.instanceId,operator_key:l=>l.unit.conformation.operator.key,model_index:l=>l.unit.model.modelNum,model_label:l=>l.unit.model.label,model_entry_id:l=>l.unit.model.entryId,hkl:l=>l.unit.conformation.operator.hkl,spgrOp:l=>l.unit.conformation.operator.spgrOp,model_num:l=>l.unit.model.modelNum,pdbx_struct_assembly_id:l=>{var S;return((S=l.unit.conformation.operator.assembly)===null||S===void 0?void 0:S.id)||i.SymmetryOperator.DefaultName},pdbx_struct_oper_list_ids:l=>{var S;return((S=l.unit.conformation.operator.assembly)===null||S===void 0?void 0:S.operList)||b},struct_ncs_oper_id:l=>l.unit.conformation.operator.ncsId},C={constant:o,atom:f,residue:d,chain:p,entity:v,unit:P,coarse:u};return Bp.StructureProperties=C,Bp}var WR;function YJ(){if(WR)return Ep;WR=1,Object.defineProperty(Ep,"__esModule",{value:!0}),Ep.ResidueSet=void 0;const e=Tl();class t{add(n){let i=this.index.get(n.label_asym_id);i||(i=new Map,this.index.set(n.label_asym_id,i));let c=i.get(n.label_seq_id);return c||(c=[],i.set(n.label_seq_id,c)),this._find(n,c)?!1:(c.push(n),!0)}hasLabelAsymId(n){return this.index.has(n)}has(n){var i,c;const o=this._asym_id(n);if(!this.index.has(o))return;const s=this.index.get(o),h=this._seq_id(n);if(!s.has(h))return;const f=s.get(h),y=this._comp_id(n),_=this._alt_id(n),g=this._ins_code(n),a=(i=this._op_name(n))!==null&&i!==void 0?i:"1_555";for(const d of f)if(!(d.label_comp_id!==y||d.label_alt_id!==_||d.ins_code!==g)&&!(this.checkOperator&&((c=d.operator_name)!==null&&c!==void 0?c:"1_555")!==a))return d}static getLabel(n,i=!1){var c;return`${n.label_asym_id} ${n.label_comp_id} ${n.label_seq_id}:${n.ins_code}:${n.label_alt_id}${i?" "+((c=n.operator_name)!==null&&c!==void 0?c:"1_555"):""}`}static getEntryFromLocation(n){var i;return{label_asym_id:e.StructureProperties.chain.label_asym_id(n),label_comp_id:e.StructureProperties.atom.label_comp_id(n),label_seq_id:e.StructureProperties.residue.label_seq_id(n),label_alt_id:e.StructureProperties.atom.label_alt_id(n),ins_code:e.StructureProperties.residue.pdbx_PDB_ins_code(n),operator_name:(i=e.StructureProperties.unit.operator_name(n))!==null&&i!==void 0?i:"1_555"}}_find(n,i){var c,o;for(const s of i)if(!(s.label_comp_id!==n.label_comp_id||s.label_alt_id!==n.label_alt_id||s.ins_code!==n.ins_code)&&!(this.checkOperator&&((c=s.operator_name)!==null&&c!==void 0?c:"1_555")!==((o=n.operator_name)!==null&&o!==void 0?o:"1_555")))return!0;return!1}constructor(n){var i;this.index=new Map,this.checkOperator=!1,this._asym_id=e.StructureProperties.chain.label_asym_id,this._seq_id=e.StructureProperties.residue.label_seq_id,this._comp_id=e.StructureProperties.atom.label_comp_id,this._alt_id=e.StructureProperties.atom.label_alt_id,this._ins_code=e.StructureProperties.residue.pdbx_PDB_ins_code,this._op_name=e.StructureProperties.unit.operator_name,this.checkOperator=(i=n?.checkOperator)!==null&&i!==void 0?i:!1}}return Ep.ResidueSet=t,Ep}var $R;function QJ(){if($R)return ki;$R=1,Object.defineProperty(ki,"__esModule",{value:!0}),ki.wholeResidues=g,ki.includeSurroundings=m,ki.querySelection=v,ki.intersectBy=b,ki.exceptBy=P,ki.union=C,ki.expandProperty=l,ki.includeConnected=S,ki.surroundingLigands=x;const e=at(),t=jr(),r=za(),n=nX(),i=EJ(),c=If(),o=ha(),s=xl(),h=YJ(),f=Tl(),y=Vt();
15function _(R,E,I){const B=E.subsetBuilder(!0);for(const w of I.units){if(w.kind!==t.Unit.Kind.Atomic){B.setUnit(w.id,w.elements);continue}const{residueAtomSegments:O}=w.model.atomicHierarchy,F=E.unitMap.get(w.id).elements,L=w.elements;B.beginUnit(w.id);const U=e.Segmentation.transientSegments(O,L);for(;U.hasNext;){const q=U.move().index;for(let N=O.offsets[q],k=O.offsets[q+1];N<k;N++)e.SortedArray.has(F,N)&&B.addElement(N)}B.commitUnit(),R.throwIfTimedOut()}return B.getStructure()}function g(R){return function(I){const B=R(I);if(r.StructureSelection.isSingleton(B))return r.StructureSelection.Singletons(I.inputStructure,_(I,I.inputStructure,B.structure));{const w=new n.UniqueStructuresBuilder(I.inputStructure);for(const O of B.structures)w.add(_(I,I.inputStructure,O));return w.getSelection()}}}function a(R,E,I,B){const w=new i.StructureUniqueSubsetBuilder(E),O=E.lookup3d,F=B.radius;for(const L of I.units){const U=L.conformation,q=L.elements;for(let N=0,k=q.length;N<k;N++){const j=q[N];O.findIntoBuilder(U.x(j),U.y(j),U.z(j),F,w)}R.throwIfTimedOut()}return B.wholeResidues?_(R,E,w.getStructure()):w.getStructure()}function d(R,E,I,B){const w=new i.StructureUniqueSubsetBuilder(E),O=E.lookup3d,{elementRadius:F,elementRadiusClosure:L,sourceMaxRadius:U,radius:q}=B;R.pushCurrentElement(),R.element.structure=I;for(const N of I.units){R.element.unit=N;const k=N.conformation,j=N.elements;for(let H=0,G=j.length;H<G;H++){const z=j[H];R.element.element=z;const W=F(R);O.findIntoBuilderWithRadius(k.x(z),k.y(z),k.z(z),W,U,q,L,w)}R.throwIfTimedOut()}return R.popCurrentElement(),B.wholeResidues?_(R,E,w.getStructure()):w.getStructure()}function p(R,E){return I=>(R.element.structure=I.structure,R.element.unit=I.unit,R.element.element=I.element,E(R))}function u(R,E){let I=0;R.element.structure=R.inputStructure;for(const B of R.inputStructure.units){R.element.unit=B;const w=B.elements;for(let O=0,F=w.length;O<F;O++){const L=w[O];R.element.element=L;const U=E(R);U>I&&(I=U)}}return R.throwIfTimedOut(),I}function m(R,E){return function(B){const w=R(B);if(E.elementRadius){const O={...E,elementRadius:E.elementRadius,elementRadiusClosure:p(B,E.elementRadius),sourceMaxRadius:u(B,E.elementRadius)};if(r.StructureSelection.isSingleton(w)){const F=d(B,B.inputStructure,w.structure,O);return r.StructureSelection.Singletons(B.inputStructure,F)}else{const F=new n.UniqueStructuresBuilder(B.inputStructure);for(const L of w.structures)F.add(d(B,B.inputStructure,L,O));return F.getSelection()}}if(r.StructureSelection.isSingleton(w)){const O=a(B,B.inputStructure,w.structure,E);return r.StructureSelection.Singletons(B.inputStructure,O)}else{const O=new n.UniqueStructuresBuilder(B.inputStructure);for(const F of w.structures)O.add(a(B,B.inputStructure,F,E));return O.getSelection()}}}function v(R,E){return function(B){const w=R(B);if(r.StructureSelection.structureCount(w)===0)return w;const O=r.StructureSelection.UniqueBuilder(B.inputStructure),F=L=>O.add(L);return r.StructureSelection.forEach(w,(L,U)=>{B.pushInputStructure(L),r.StructureSelection.forEach(E(B),F),B.popInputStructure(),U%10===0&&B.throwIfTimedOut()}),O.getSelection()}}function b(R,E){return function(B){const w=R(B);if(r.StructureSelection.structureCount(w)===0)return w;const O=E(B);if(r.StructureSelection.structureCount(O)===0)return r.StructureSelection.Empty(B.inputStructure);const F=r.StructureSelection.unionStructure(O),L=r.StructureSelection.UniqueBuilder(B.inputStructure);return r.StructureSelection.forEach(w,(U,q)=>{const N=(0,c.structureIntersect)(F,U);N.elementCount!==0&&L.add(N),q%50===0&&B.throwIfTimedOut()}),L.getSelection()}}function P(R,E){return function(B){const w=R(B);if(r.StructureSelection.structureCount(w)===0)return w;const O=E(B);if(r.StructureSelection.structureCount(O)===0)return w;const F=r.StructureSelection.unionStructure(O),L=r.StructureSelection.UniqueBuilder(B.inputStructure);return r.StructureSelection.forEach(w,(U,q)=>{const N=(0,c.structureSubtract)(U,F);N.elementCount!==0&&L.add(N),q%50===0&&B.throwIfTimedOut()}),L.getSelection()}}function C(R){return function(I){const B=r.StructureSelection.LinearBuilder(I.inputStructure);
15return B.add(r.StructureSelection.unionStructure(R(I))),B.getSelection()}}function l(R,E){return function(B){const w=R(B),O=new Map,F=[];B.pushCurrentElement(),r.StructureSelection.forEach(w,(U,q)=>{B.element.structure=U;for(const N of U.units){B.element.unit=N;const k=N.elements;for(let j=0,H=k.length;j<H;j++){B.element.element=k[j];const G=E(B);let z;O.has(G)?z=O.get(G):(z=o.UniqueArray.create(),O.set(G,z)),o.UniqueArray.add(z,q,q)}}F[q]=B.inputStructure.subsetBuilder(!0),q%10===0&&B.throwIfTimedOut()}),B.element.structure=B.inputStructure;for(const U of B.inputStructure.units){B.element.unit=U;const q=U.elements;for(let N=0,k=q.length;N<k;N++){B.element.element=q[N];const j=E(B);if(!O.has(j))continue;const H=O.get(j).array;for(let G=0,z=H.length;G<z;G++)F[H[G]].addToUnit(U.id,q[N])}}B.popCurrentElement();const L=r.StructureSelection.UniqueBuilder(B.inputStructure);for(const U of F)L.add(U.getStructure());return L.getSelection()}}function S({query:R,layerCount:E,wholeResidues:I,bondTest:B,fixedPoint:w}){const O=Math.max(E,0);return function(L){const U=r.StructureSelection.UniqueBuilder(L.inputStructure),q=R(L);return L.pushCurrentBond(),L.atomicBond.setTestFn(B),r.StructureSelection.forEach(q,(N,k)=>{let j=N;if(w)for(;;){const H=j.elementCount;if(j=T(L,I,j),j.elementCount===H)break}else for(let H=0;H<O;H++)j=T(L,I,j);U.add(j),k%10===0&&L.throwIfTimedOut()}),L.popCurrentBond(),U.getSelection()}}function T(R,E,I){const B=A(R,I);return E?_(R,R.inputStructure,B):B}function A(R,E){const I=R.inputStructure,B=I.interUnitBonds,w=new i.StructureUniqueSubsetBuilder(I),O=R.atomicBond;for(const F of E.units){if(F.kind!==t.Unit.Kind.Atomic){w.beginUnit(F.id);for(let H=0,G=F.elements.length;H<G;H++)w.addElement(F.elements[H]);w.commitUnit();continue}const L=I.unitMap.get(F.id),{offset:U,b:q,edgeProps:{flags:N,order:k,key:j}}=L.bonds;O.setStructure(I),O.a.unit=L,O.b.unit=L;for(let H=0,G=F.elements.length;H<G;H++){w.addToUnit(F.id,F.elements[H]);const z=e.SortedArray.indexOf(L.elements,F.elements[H]);for(let W=U[z],X=U[z+1];W<X;W++){const Y=q[W],K=L.elements[Y];e.SortedArray.has(F.elements,K)||w.has(F.id,K)||(O.aIndex=z,O.a.element=F.elements[H],O.bIndex=Y,O.b.element=K,O.type=N[W],O.order=k[W],O.key=j[W],O.test(R,!0)&&w.addToUnit(F.id,K))}}for(const H of B.getConnectedUnits(L.id)){const G=E.unitMap.get(H.unitB),z=I.unitMap.get(H.unitB);for(const W of H.connectedIndices)if(e.SortedArray.has(F.elements,L.elements[W]))for(const X of H.getEdges(W)){const Y=z.elements[X.indexB];G&&e.SortedArray.has(G.elements,Y)||w.has(H.unitB,Y)||(O.a.unit=L,O.aIndex=W,O.a.element=L.elements[W],O.b.unit=z,O.bIndex=X.indexB,O.b.element=Y,O.type=X.props.flag,O.order=X.props.order,O.key=X.props.key,O.test(R,!0)&&w.addToUnit(H.unitB,Y))}}}return w.getStructure()}function x({query:R,radius:E,includeWater:I}){const B=f.StructureProperties.entity.type;function w(O){return B(O)==="water"}return function(F){const L=r.StructureSelection.unionStructure(R(F)),U=_(F,F.inputStructure,a(F,F.inputStructure,L,{radius:E})),q=M(F.inputStructure),N=D(F.inputStructure),k=s.StructureElement.Location.create(U),j=new Map,H=new h.ResidueSet({checkOperator:!0});for(const W of U.units){if(W.kind!==t.Unit.Kind.Atomic)continue;k.unit=W;const{elements:X}=W,Y=e.Segmentation.transientSegments(W.model.atomicHierarchy.chainAtomSegments,X),K=e.Segmentation.transientSegments(W.model.atomicHierarchy.residueAtomSegments,X);for(;Y.hasNext;){const Q=Y.move();k.element=X[Q.start];const J=f.StructureProperties.chain.label_asym_id(k),ae=f.StructureProperties.unit.operator_name(k);if(q.has(J)){j.has(J)?(0,y.arraySetAdd)(j.get(J),ae):j.set(J,[ae]);continue}const te=f.StructureProperties.entity.type(k);if(!(te==="water"||te==="polymer"))for(K.setSegment(Q);K.hasNext;){const ne=K.move();k.element=X[ne.start],N.addComponent(h.ResidueSet.getEntryFromLocation(k),H)}}F.throwIfTimedOut()}const G=F.inputStructure.subsetBuilder(!0);for(const W of F.inputStructure.units){if(W.kind!==t.Unit.Kind.Atomic)continue;k.unit=W;const{elements:X}=W,Y=e.Segmentation.transientSegments(W.model.atomicHierarchy.chainAtomSegments,X),K=e.Segmentation.transientSegments(W.model.atomicHierarchy.residueAtomSegments,X);for(G.beginUnit(W.id);Y.hasNext;){const Q=Y.move();k.element=X[Q.start];const J=f.StructureProperties.chain.label_asym_id(k),ae=f.StructureProperties.unit.operator_name(k);if(j.has(J)&&j.get(J).indexOf(ae)>=0){G.addElementRange(X,Q.start,Q.end);continue}if(H.hasLabelAsymId(J)&&f.StructureProperties.entity.type(k)!=="water")for(K.setSegment(Q);
15K.hasNext;){const te=K.move();k.element=X[te.start],H.has(k)&&G.addElementRange(X,te.start,te.end)}}G.commitUnit(),F.throwIfTimedOut()}const z=(0,c.structureUnion)(F.inputStructure,[G.getStructure(),L]);if(I){const W=new i.StructureUniqueSubsetBuilder(F.inputStructure),X=F.inputStructure.lookup3d;for(const Y of z.units){const K=Y.conformation,Q=Y.elements;for(let J=0,ae=Q.length;J<ae;J++){const te=Q[J];X.findIntoBuilderIf(K.x(te),K.y(te),K.z(te),E,W,w),W.addToUnit(Y.id,te)}F.throwIfTimedOut()}return r.StructureSelection.Sequence(F.inputStructure,[W.getStructure()])}else return r.StructureSelection.Sequence(F.inputStructure,[z])}}function M(R){var E;const I=R.models[0],B=new Set;if(((E=I.sourceData)===null||E===void 0?void 0:E.kind)!=="mmCIF")return B;const{_rowCount:w,asym_id:O}=I.sourceData.data.db.pdbx_molecule;for(let F=0;F<w;F++)B.add(O.value(F));return B}function D(R){var E,I,B;const w=R.models[0],O=new V;if(((E=w.sourceData)===null||E===void 0?void 0:E.kind)!=="mmCIF")return O;const F=w.sourceData.data.db.struct_conn,{conn_type_id:L}=F,{ptnr1_label_asym_id:U,ptnr1_label_comp_id:q,ptnr1_label_seq_id:N,ptnr1_symmetry:k,pdbx_ptnr1_label_alt_id:j,pdbx_ptnr1_PDB_ins_code:H}=F,{ptnr2_label_asym_id:G,ptnr2_label_comp_id:z,ptnr2_label_seq_id:W,ptnr2_symmetry:X,pdbx_ptnr2_label_alt_id:Y,pdbx_ptnr2_PDB_ins_code:K}=F;for(let Q=0;Q<F._rowCount;Q++){const J=L.value(Q);if(J!=="covale"&&J!=="metalc")continue;const ae={label_asym_id:U.value(Q),label_comp_id:q.value(Q),label_seq_id:N.value(Q),label_alt_id:j.value(Q),ins_code:H.value(Q),operator_name:(I=k.value(Q))!==null&&I!==void 0?I:"1_555"},te={label_asym_id:G.value(Q),label_comp_id:z.value(Q),label_seq_id:W.value(Q),label_alt_id:Y.value(Q),ins_code:K.value(Q),operator_name:(B=X.value(Q))!==null&&B!==void 0?B:"1_555"};O.addEdge(ae,te)}return O}class V{constructor(){this.vertices=new Map,this.edges=new Map}addVertex(E,I){this.vertices.has(I)||(this.vertices.set(I,E),this.edges.set(I,[]))}addEdge(E,I){const B=h.ResidueSet.getLabel(E),w=h.ResidueSet.getLabel(I);this.addVertex(E,B),this.addVertex(I,w),(0,y.arraySetAdd)(this.edges.get(B),w),(0,y.arraySetAdd)(this.edges.get(w),B)}addComponent(E,I){const B=h.ResidueSet.getLabel(E);if(!this.vertices.has(B)){I.add(E);return}const w=new Set,O=new Set,F=[B];for(O.add(B),I.add(E);F.length>0;){const L=F.pop();w.add(L);const U=this.vertices.get(L);for(const q of this.edges.get(L)){if(w.has(q)||(F.push(q),O.has(q)))continue;O.add(q);const N=this.vertices.get(q);U.operator_name===N.operator_name?I.add({...N,operator_name:E.operator_name}):I.add(N)}}}}return ki}var Aa={},Lp={},XR;function ZJ(){if(XR)return Lp;XR=1,Object.defineProperty(Lp,"__esModule",{value:!0}),Lp.checkStructureMinMaxDistance=t,Lp.checkStructureMaxRadiusDistance=r;const e=Ge();function t(c,o,s,h,f,y){return o.elementCount===0||s.elementCount===0?!0:o.elementCount<=s.elementCount?n.check(c,o,s,h,f,y):n.check(c,s,o,h,f,y)}function r(c,o,s,h,f){return o.elementCount===0||s.elementCount===0?!0:o.elementCount<=s.elementCount?i.check(c,o,s,h,f):i.check(c,s,o,h,f)}var n;(function(c){let o;(function(g){g[g.BelowMin=0]="BelowMin",g[g.WithinMax=1]="WithinMax",g[g.Miss=2]="Miss"})(o||(o={}));const s=(0,e.Vec3)();function h(g,a,d,p,u,m,v){const{elements:b,conformation:P}=a,C=s;g.element.unit=a;let l=!1;for(let S=0,T=b.length;S<T;S++){const A=b[S];g.element.element=A;const x=Math.max(0,e.Vec3.distance(d,P.position(A,C))-p-v(g));if(x<u)return o.BelowMin;x<m&&(l=!0)}return l?o.WithinMax:o.Miss}function f(g,a,d,p,u,m,v){const{units:b}=a;let P=!1;for(let C=0,l=b.length;C<l;C++){const S=h(g,b[C],d,p,u,m,v);if(S===o.BelowMin)return o.BelowMin;S===o.WithinMax&&(P=!0)}return P?o.WithinMax:o.Miss}const y=(0,e.Vec3)();function _(g,a,d,p,u,m){if(a.elementCount===0||d.elementCount===0)return 0;const{units:v}=a;let b=!1;g.element.structure=a;for(let P=0,C=v.length;P<C;P++){const l=v[P],{elements:S,conformation:T}=l;g.element.unit=l;for(let A=0,x=S.length;A<x;A++){const M=S[A];g.element.element=M;const D=f(g,d,T.position(M,y),m(g),p,u,m);if(D===o.BelowMin)return!1;D===o.WithinMax&&(b=!0)}}return b}c.check=_})(n||(n={}));var i;return(function(c){const o=(0,e.Vec3)();function s(_,g,a,d,p,u){const{elements:m,conformation:v}=g,b=o;_.element.unit=g;for(let P=0,C=m.length;P<C;P++){const l=m[P];if(_.element.element=l,Math.max(0,e.Vec3.distance(a,v.position(l,b))-d-u(_))<=p)return!0}return!1}function h(_,g,a,d,p,u){const{units:m}=g;
15for(let v=0,b=m.length;v<b;v++)if(s(_,m[v],a,d,p,u))return!0;return!1}const f=(0,e.Vec3)();function y(_,g,a,d,p){if(g.elementCount===0||a.elementCount===0)return 0;const{units:u}=g;_.element.structure=g;for(let m=0,v=u.length;m<v;m++){const b=u[m];_.element.unit=b;const{elements:P,conformation:C}=b;for(let l=0,S=P.length;l<S;l++){const T=P[l];if(_.element.element=T,h(_,a,C.position(T,f),p(_),d,p))return!0}}return!1}c.check=y})(i||(i={})),Lp}var KR;function oX(){if(KR)return Aa;KR=1,Object.defineProperty(Aa,"__esModule",{value:!0}),Aa.pick=h,Aa.first=f,Aa.getCurrentStructureProperties=y,Aa.withSameAtomProperties=g,Aa.areIntersectedBy=a,Aa.within=d,Aa.isConnectedTo=b;const e=Hi(),t=jr(),r=za(),n=If(),i=Ge(),c=ZJ(),o=Wa(),s=at();function h(P,C){return l=>{const S=P(l),T=r.StructureSelection.LinearBuilder(l.inputStructure);return l.pushCurrentElement(),r.StructureSelection.forEach(S,(A,x)=>{l.currentStructure=A,C(l)&&T.add(A),x%100&&l.throwIfTimedOut()}),l.popCurrentStructure(),T.getSelection()}}function f(P){return C=>{const l=P(C),S=r.StructureSelection.LinearBuilder(C.inputStructure);if(l.kind==="singletons"){if(l.structure.elementCount>0){const T=l.structure.units[0],A=o.Structure.create([T.getChild(s.SortedArray.ofSingleton(T.elements[0]))],{parent:C.inputStructure});S.add(A)}}else l.structures.length>0&&S.add(l.structures[0]);return S.getSelection()}}function y(P,C,l){const{units:S}=P.currentStructure,T=P.pushCurrentElement();T.structure=P.currentStructure;for(const A of S){T.unit=A;const x=A.elements,M=C;if(M){for(let D=0,V=x.length;D<V;D++)T.element=x[D],l.add(M(P));P.throwIfTimedOut()}}return P.popCurrentElement(),l}function _(P,C,l){const S=new Set,T=C(P);return P.pushCurrentElement(),r.StructureSelection.forEach(T,(A,x)=>{P.currentStructure=A,y(P,l,S),x%10&&P.throwIfTimedOut()}),P.popCurrentElement(),S}function g(P,C,l){return S=>{const T=P(S),A=_(S,C,l),x=r.StructureSelection.LinearBuilder(S.inputStructure);return S.pushCurrentStructure(),r.StructureSelection.forEach(T,(M,D)=>{S.currentStructure=M;const V=y(S,l,new Set);e.SetUtils.isSuperset(A,V)&&x.add(M),D%10&&S.throwIfTimedOut()}),S.popCurrentStructure(),x.getSelection()}}function a(P,C){return l=>{const S=r.StructureSelection.unionStructure(C(l)),T=r.StructureSelection.LinearBuilder(l.inputStructure);return r.StructureSelection.forEach(P(l),(A,x)=>{(0,n.structureAreIntersecting)(S,A)&&T.add(A),x%10&&l.throwIfTimedOut()}),T.getSelection()}}function d(P){return C=>{const l={queryCtx:C,selection:P.query(C),target:P.target(C),maxRadius:P.maxRadius,minRadius:P.minRadius?Math.max(0,P.minRadius):0,elementRadius:P.elementRadius,invert:!!P.invert};return l.minRadius===0&&typeof P.minRadius>"u"?p(l):l.minRadius===0?u(l):m(l)}}function p({queryCtx:P,selection:C,target:l,maxRadius:S,invert:T}){const A=r.StructureSelection.unionStructure(l).lookup3d,x=r.StructureSelection.LinearBuilder(P.inputStructure),M=i.Vec3.zero();return r.StructureSelection.forEach(C,(D,V)=>{const{units:R}=D;let E=!1;for(let I=0,B=R.length;I<B;I++){const w=R[I],{elements:O,conformation:F}=w;for(let L=0,U=O.length;L<U;L++){const q=O[L];if(F.position(q,M),A.check(M[0],M[1],M[2],S+F.r(q))){E=!0;break}}if(E)break}T&&(E=!E),E&&x.add(D),V%10===0&&P.throwIfTimedOut()}),x.getSelection()}function u({queryCtx:P,selection:C,target:l,maxRadius:S,invert:T,elementRadius:A}){const x=r.StructureSelection.unionStructure(l),M=r.StructureSelection.LinearBuilder(P.inputStructure);return P.pushCurrentElement(),r.StructureSelection.forEach(C,(D,V)=>{let R=(0,c.checkStructureMaxRadiusDistance)(P,x,D,S,A);T&&(R=!R),R&&M.add(D),V%10===0&&P.throwIfTimedOut()}),P.popCurrentElement(),M.getSelection()}function m({queryCtx:P,selection:C,target:l,minRadius:S,maxRadius:T,invert:A,elementRadius:x}){const M=r.StructureSelection.unionStructure(l),D=r.StructureSelection.LinearBuilder(P.inputStructure);return P.pushCurrentElement(),r.StructureSelection.forEach(C,(V,R)=>{let E=(0,c.checkStructureMinMaxDistance)(P,M,V,S,T,x);A&&(E=!E),E&&D.add(V),R%10===0&&P.throwIfTimedOut()}),P.popCurrentElement(),D.getSelection()}function v(P,C){const{queryCtx:l,input:S,target:T,disjunct:A}=P,x=l.atomicBond,M=S.interUnitBonds;x.setStructure(S);for(const D of C.units){if(!t.Unit.isAtomic(D))continue;const V=S.unitMap.get(D.id),{offset:R,b:E,edgeProps:{flags:I,order:B,key:w}}=V.bonds,O=M.getConnectedUnits(D.id),F=O.length,L=D.elements,U=V.elements;for(let q=0,N=L.length;q<N;q++){const k=s.SortedArray.indexOf(U,L[q]);x.a.unit=V,x.b.unit=V;for(let j=R[k],H=R[k+1];j<H;j++)if(x.b.element=V.elements[E[j]],!(A&&s.SortedArray.has(D.elements,x.b.element))&&T.hasElement(x.b)&&(x.aIndex=k,x.a.element=L[q],x.bIndex=E[j],x.type=I[j],x.order=B[j],x.key=w[j],x.test(l,!0)))return!0;for(let j=0;j<F;j++){const H=O[j],G=S.unitMap.get(H.unitB),z=G.elements,W=H.getEdges(k);for(let X=0,Y=W.length;X<Y;X++){const K=W[X];if(x.b.unit=G,x.b.element=z[K.indexB],!!T.hasElement(x.b)&&!(A&&C.hasElement(x.b))&&(x.a.unit=V,x.aIndex=k,x.a.element=L[q],x.bIndex=K.indexB,x.type=K.props.flag,x.order=K.props.order,x.key=K.props.key,x.test(l,!0)))return!0}}}}return!1}function b({query:P,target:C,disjunct:l,invert:S,bondTest:T}){return A=>{const x=C(A);if(r.StructureSelection.isEmpty(x))return x;const M=P(A);if(r.StructureSelection.isEmpty(M))return M;const D={queryCtx:A,input:A.inputStructure,disjunct:l,target:r.StructureSelection.unionStru
15cture(x)},V=r.StructureSelection.LinearBuilder(A.inputStructure);return A.pushCurrentBond(),A.atomicBond.setTestFn(T),r.StructureSelection.forEach(M,(R,E)=>{(v(D,R)||S)&&V.add(R),E%5===0&&A.throwIfTimedOut()}),A.popCurrentBond(),V.getSelection()}}return Aa}var Np={},YR;function JJ(){if(YR)return Np;YR=1,Object.defineProperty(Np,"__esModule",{value:!0}),Np.merge=i,Np.intersect=c;const e=za(),t=iX(),r=ha(),n=jr();function i(o){return o.length===0?t.none:o.length===1?o[0]:s=>{const h=e.StructureSelection.UniqueBuilder(s.inputStructure);for(let f=0;f<o.length;f++)e.StructureSelection.forEach(o[f](s),(y,_)=>{h.add(y),f%100&&s.throwIfTimedOut()});return h.getSelection()}}function c(o){return o.length===0?t.none:o.length===1?o[0]:s=>{const h=[];for(let a=0;a<o.length;a++)h.push(o[a](s));let f=0,y=e.StructureSelection.structureCount(h[0]);for(let a=1;a<h.length;a++){const d=e.StructureSelection.structureCount(h[a]);d<y&&(f=a,y=d)}s.throwIfTimedOut();const _=(0,r.HashSet)(a=>a.hashCode,n.Structure.areUnitIdsAndIndicesEqual);e.StructureSelection.forEach(h[f],a=>_.add(a));const g=e.StructureSelection.UniqueBuilder(s.inputStructure);for(let a=0;a<h.length;a++)a!==f&&(e.StructureSelection.forEach(h[a],d=>{_.has(d)&&g.add(d)}),s.throwIfTimedOut());return g.getSelection()}}return Np}var od={},QR;function eee(){if(QR)return od;QR=1,Object.defineProperty(od,"__esModule",{value:!0}),od.atomCount=r,od.countQuery=n,od.propertySet=i;const e=za(),t=oX();function r(c){return c.currentStructure.elementCount}function n(c){return o=>{const s=c(o);return e.StructureSelection.structureCount(s)}}function i(c){return o=>{const s=new Set;return(0,t.getCurrentStructureProperties)(o,c,s)}}return od}var qp={},ZR;function tee(){if(ZR)return qp;ZR=1,Object.defineProperty(qp,"__esModule",{value:!0}),qp.Predicates=void 0;var e;return(function(t){function r(a){return!!a&&!!a.has}function n(a,d){return p=>a(p)===d}t.eq=n;function i(a,d){return p=>a(p)<d}t.lt=i;function c(a,d){return p=>a(p)<=d}t.lte=c;function o(a,d){return p=>a(p)>d}t.gt=o;function s(a,d){return p=>a(p)>=d}t.gte=s;function h(a){return!0}function f(a){return!1}function y(a,d){if(r(d))return p=>d.has(a(p));{if(d.length===0)return f;const p=new Set;for(let u=0;u<d.length;u++)p.add(d[u]);return u=>p.has(a(u))}}t.inSet=y;function _(...a){switch(a.length){case 0:return h;case 1:return a[0];case 2:{const d=a[0],p=a[1];return u=>d(u)&&p(u)}case 3:{const d=a[0],p=a[1],u=a[2];return m=>d(m)&&p(m)&&u(m)}case 4:{const d=a[0],p=a[1],u=a[2],m=a[3];return v=>d(v)&&p(v)&&u(v)&&m(v)}case 5:{const d=a[0],p=a[1],u=a[2],m=a[3],v=a[4];return b=>d(b)&&p(b)&&u(b)&&m(b)&&v(b)}case 6:{const d=a[0],p=a[1],u=a[2],m=a[3],v=a[4],b=a[5];return P=>d(P)&&p(P)&&u(P)&&m(P)&&v(P)&&b(P)}default:{const d=a.length;return p=>{for(let u=0;u<d;u++)if(!a[u])return!1;return!0}}}}t.and=_;function g(...a){switch(a.length){case 0:return f;case 1:return a[0];case 2:{const d=a[0],p=a[1];return u=>d(u)||p(u)}case 3:{const d=a[0],p=a[1],u=a[2];return m=>d(m)||p(m)||u(m)}case 4:{const d=a[0],p=a[1],u=a[2],m=a[3];return v=>d(v)||p(v)||u(v)||m(v)}case 5:{const d=a[0],p=a[1],u=a[2],m=a[3],v=a[4];return b=>d(b)||p(b)||u(b)||m(b)||v(b)}case 6:{const d=a[0],p=a[1],u=a[2],m=a[3],v=a[4],b=a[5];return P=>d(P)||p(P)||u(P)||m(P)||v(P)||b(P)}default:{const d=a.length;return p=>{for(let u=0;u<d;u++)if(a[u])return!0;return!1}}}}t.or=g})(e||(qp.Predicates=e={})),qp}var JR;function RT(){return JR||(JR=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureQuery=e.StructureSelection=e.Queries=void 0;const t=At,r=za();Object.defineProperty(e,"StructureSelection",{enumerable:!0,get:function(){return r.StructureSelection}});const n=VJ();Object.defineProperty(e,"StructureQuery",{enumerable:!0,get:function(){return n.StructureQuery}}),t.__exportStar(rX(),e);const i=t.__importStar(iX()),c=t.__importStar(QJ()),o=t.__importStar(oX()),s=t.__importStar(JJ()),h=t.__importStar(iI()),f=t.__importStar(eee()),y=tee();e.Queries={generators:i,filters:o,modifiers:c,combinators:s,pred:y.Predicates,internal:h,atomset:f}})(ux)),ux}var eO;function OT(){if(eO)return xp;eO=1,Object.defineProperty(xp,"__esModule",{value:!0}),xp.StructureSymmetry=void 0;const e=at(),t=_t(),r=Dn(),n=rt(),i=Ge(),c=nt(),o=Al(),s=RT(),h=Wa(),f=Zn(),y=Qn(),_=Tl();var g;(function(C){function l(I,B){return c.Task.create("Build Assembly",async w=>{const O=I.models;if(O.length!==1)throw new Error("Can only build assemblies from structures based on 1 model.");const F=o.Symmetry.findAssembly(O[0],B);if(!F)throw new Error(`Assembly '${B}' is not defined.`);const L=n.SymmetryOperator.create(F.id,i.Mat4.identity(),{assembly:{id:F.id,operId:0,operList:[]}}),U=h.Structure.Builder({coordinateSystem:L,label:I.label,dynamicBonds:I.dynamicBonds}),q=new s.QueryContext(I);for(const N of F.operatorGroups){const k=N.selector(q);if(s.StructureSelection.structureCount(k)===0)continue;const{units:j}
15=s.StructureSelection.unionStructure(k);for(const H of N.operators)for(const G of j)U.addWithOperator(G,H)}return U.getStructure()})}C.buildAssembly=l;function S(I,B,w){return c.Task.create("Build Symmetry Assembly",async O=>{const F=I.models;if(F.length!==1)throw new Error("Can only build symmetry assemblies from structures based on 1 model.");const L=(0,i.Vec3)(),U=h.Structure.Builder({label:I.label,representativeModel:F[0],dynamicBonds:I.dynamicBonds}),q=new s.QueryContext(I);for(const N of B){const j=a(N.asymIds)(q);if(s.StructureSelection.structureCount(j)===0)continue;const{units:H}=s.StructureSelection.unionStructure(j);for(const{index:G,shift:[z,W,X]}of N.operators){const Y=d(w,G,z,W,X,L);for(const K of H)for(const Q of Y)U.addWithOperator(K,Q)}}return U.getStructure()})}C.buildSymmetryAssembly=S;function T(I,B){return c.Task.create("Find Symmetry Mates",w=>P(w,I,B))}C.builderSymmetryMates=T;function A(I,B,w){return c.Task.create("Build Symmetry",O=>b(O,I,B,w))}C.buildSymmetryRange=A;function x(I){return c.Task.create("Build NCS",B=>v(B,I))}C.buildNcs=x;function M(I,B){return I.invariantId===B.invariantId&&I.model.id===B.model.id&&e.SortedArray.areEqual(I.elements,B.elements)}C.areUnitsEquivalent=M;function D(){return(0,t.EquivalenceClasses)(f.Unit.hashUnit,M)}C.UnitEquivalenceBuilder=D;function V(I){const B=D();for(const O of I.units)B.add(O.id,O);const w=[];for(const O of B.groups)w.push(f.Unit.SymmetryGroup(O.map(F=>I.unitMap.get(F))));return w}C.computeTransformGroups=V;function R(I){if(!I.child)return V(I);const B=I.child.unitSymmetryGroups,w=new Map;for(let L=0;L<B.length;L++)for(const U of B[L].units)w.set(U.id,L);const O=(0,t.EquivalenceClasses)(L=>{var U;return(0,r.hash2)(f.Unit.hashUnit(L),(U=w.get(L.id))!==null&&U!==void 0?U:-1)},(L,U)=>M(L,U)&&w.get(L.id)===w.get(U.id));for(const L of I.units)O.add(L.id,L);const F=[];for(const L of O.groups)F.push(f.Unit.SymmetryGroup(L.map(U=>I.unitMap.get(U))));return F}C.computeChildAwareTransformGroups=R;function E(I,B){if(I.length!==B.length)return!1;for(let w=0,O=I.length;w<O;++w){const F=I[w].units,L=B[w].units;if(F.length!==L.length||I[w].hashCode!==B[w].hashCode)return!1;for(let U=0,q=F.length;U<q;U++)if(F[U].conformation!==L[U].conformation)return!1;if(!e.SortedArray.areEqual(I[w].elements,B[w].elements))return!1}return!0}C.areTransformGroupsEquivalent=E})(g||(xp.StructureSymmetry=g={}));function a(C){return s.Queries.generators.atoms({chainTest:s.Queries.pred.and(s.Queries.pred.eq(l=>_.StructureProperties.unit.operator_name(l.element),n.SymmetryOperator.DefaultName),s.Queries.pred.inSet(l=>_.StructureProperties.chain.label_asym_id(l.element),C))})}function d(C,l,S,T,A,x){const{spacegroup:M,ncsOperators:D}=C,V=[],{toFractional:R}=M.cell,E=i.Vec3.transformMat4((0,i.Vec3)(),x,R),I=n.Spacegroup.getSymmetryOperatorRef(M,l,S,T,A,E);if(D&&D.length)for(let B=0,w=D.length;B<w;++B){const O=D[B],F=i.Mat4.mul((0,i.Mat4)(),I.matrix,O.matrix),L=n.SymmetryOperator.create(`${I.name} ${O.name}`,F,{assembly:I.assembly,ncsId:O.ncsId,hkl:I.hkl,spgrOp:I.spgrOp});V.push(L)}else V.push(I);return V}function p(C,l,S,T){const{spacegroup:A,ncsOperators:x}=C,M=x&&x.length||0,D=[];!M&&l[0]<=0&&S[0]>=0&&l[1]<=0&&S[1]>=0&&l[2]<=0&&S[2]>=0&&(D[0]=n.Spacegroup.getSymmetryOperator(A,0,0,0,0));for(let V=0;V<A.operators.length;V++)for(let R=l[0];R<=S[0];R++)for(let E=l[1];E<=S[1];E++)for(let I=l[2];I<=S[2];I++)!M&&V===0&&R===0&&E===0&&I===0||D.push(...d(C,V,R,E,I,T));return D}function u(C,l){return C._operators_333&&i.Vec3.equals(l,C._operators_333.ref)||(C._operators_333={ref:i.Vec3.clone(l),operators:p(C,i.Vec3.create(-3,-3,-3),i.Vec3.create(3,3,3),l)}),C._operators_333.operators}function m(C,l){const S=h.Structure.Builder({label:C.label,dynamicBonds:C.dynamicBonds}),{units:T}=C;for(const A of l)for(const x of T)S.addWithOperator(x,A);return S.getStructure()}async function v(C,l){const S=l.models;if(S.length!==1)throw new Error("Can only build NCS from structures based on 1 model.");const T=y.ModelSymmetry.Provider.get(S[0]);if(!T)return l;const A=T.ncsOperators;return!A||!A.length?l:m(l,A)}async function b(C,l,S,T){const A=l.models;if(A.length!==1)throw new Error("Can only build symmetries from structures based on 1 model.");const x=y.ModelSymmetry.Provider.get(A[0]);if(!x)return l;const{spacegroup:M}=x;if(n.SpacegroupCell.isZero(M.cell))return l;const D=o.Model.getCenter(A[0]),V=p(x,S,T,D);return m(l,V)}async function P(C,l,S){const T=l.models;if(T.length!==1)throw new Error("Can only build symmetries from structures based on 1 model.");const A=y.ModelSymmetry.Provider.get(T[0]);if(!A)return l;const{spacegroup:x}=A;if(n.SpacegroupCell.isZero(x.cell))return l;C.shouldUpdate&&await C.update("Initialing...");const M=o.Model.getCenter(T[0]),D=u(A,M),V=l.lookup3d,R=new Set;function E(O,F){return`${O.invariantId}|${F.name}`}const I=h.Structure.Builder({label:l.label,dynamicBonds:l.dynamicBonds}),{units:B}=l,w=i.Vec3.zero();for(const O of D){for(const F of B){const L=F.lookup3d.boundary.sphere;i.Vec3.transformMat4(w,L.center,O.matrix);const U=V.findUnitIndices(w[0],w[1],w[2],L.radius+S);for(let q=0,N=U.count;q<N;q++){if(!B[U.indices[q]].lookup3d.check(w[0],w[1],w[2],L.radius+S))continue;const j=E(F,O);R.has(j)||(I.addWithOperator(F,O),R.add(j))}}C.shouldUpdate&&await C.update("Building symmetry...")}
15return I.getStructure()}return xp}var tO;function ree(){if(tO)return Tp;tO=1,Object.defineProperty(Tp,"__esModule",{value:!0}),Tp.StructureSubsetBuilder=void 0;const e=at(),t=_t(),r=OT(),n=Wa();class i{addToUnit(o,s){const h=this.unitMap.get(o);h?h[h.length]=s:(this.unitMap.set(o,[s]),this.ids[this.ids.length]=o),this.elementCount++}beginUnit(o){this.parentId=o,this.currentUnit=this.currentUnit.length>0?[]:this.currentUnit}addElement(o){this.currentUnit[this.currentUnit.length]=o,this.elementCount++}addElementRange(o,s,h){for(let f=s;f<h;f++)this.currentUnit[this.currentUnit.length]=o[f],this.elementCount++}commitUnit(){this.currentUnit.length!==0&&(this.ids[this.ids.length]=this.parentId,this.unitMap.set(this.parentId,this.currentUnit),this.parentId=-1)}setUnit(o,s){this.ids[this.ids.length]=o,this.unitMap.set(o,s),this.elementCount+=s.length}_getStructure(o){if(this.isEmpty)return n.Structure.Empty;const s=[];(0,t.sortArray)(this.ids);const h=r.StructureSymmetry.UnitEquivalenceBuilder();for(let f=0,y=this.ids.length;f<y;f++){const _=this.ids[f],g=this.parent.unitMap.get(_);let a=this.unitMap.get(_),d=!1;o&&(this.isSorted||(0,t.sortArray)(a),a=e.SortedArray.deduplicate(e.SortedArray.ofSortedArray(this.currentUnit)),d=!0);const p=a.length;if(a.length===g.elements.length){s[s.length]=g,h.add(g.id,g);continue}!this.isSorted&&!d&&p>1&&(0,t.sortArray)(a);let u=g.getChild(e.SortedArray.ofSortedArray(a));const m=h.add(u.id,u);u!==m&&(u=m.applyOperator(u.id,u.conformation.operator,!0)),s[s.length]=u}return n.Structure.create(s,{parent:this.parent})}getStructure(){return this._getStructure(!1)}getStructureDeduplicate(){return this._getStructure(!0)}setSingletonLocation(o){const s=this.ids[0];o.unit=this.parent.unitMap.get(s),o.element=this.unitMap.get(s)[0]}get isEmpty(){return this.elementCount===0}constructor(o,s){this.parent=o,this.isSorted=s,this.ids=[],this.unitMap=e.IntMap.Mutable(),this.parentId=-1,this.currentUnit=[],this.elementCount=0}}return Tp.StructureSubsetBuilder=i,Tp}var OC={},sd={},rO;function nee(){if(rO)return sd;rO=1,Object.defineProperty(sd,"__esModule",{value:!0}),sd.CombinationIterator=void 0,sd.combinations=i;function e(c,o){let s=1;for(;o--;)s*=c--;return s}function t(c,o){return o>c?0:e(c,o)/e(o,o)}function r(c){const o=c&-c,s=c+o,f=((s&-s)/o>>1)-1;return s|f}class n{move(){if(this.hasNext){let o=0,s=0,h=this.index;for(;h;h>>>=1,o++)h&1&&(this.value[s++]=this.array[o]);this.index=r(this.index),this.hasNext=this.index<this.maxIndex}return this.value}constructor(o,s){this.array=o,this.hasNext=!1,this.index=(1<<s)-1,this.size=t(o.length,s),this.maxIndex=1<<o.length,this.value=new Array(s),this.hasNext=s>0&&s<=o.length}}sd.CombinationIterator=n;function i(c,o){const s=[],h=new n(c,o);for(;h.hasNext;)s.push(h.move().slice());return s}return sd}var Up={},nO;function iee(){if(nO)return Up;nO=1,Object.defineProperty(Up,"__esModule",{value:!0}),Up.EmptyCarbohydrates=void 0;const e=[];return Up.EmptyCarbohydrates={links:e,terminalLinks:e,elements:e,partialElements:e,getElementIndices:()=>e,getLinkIndices:()=>e,getTerminalLinkIndices:()=>e},Up}var iO;function aee(){if(iO)return OC;iO=1,Object.defineProperty(OC,"__esModule",{value:!0}),OC.computeCarbohydrates=C;const e=at(),t=nee(),r=is(),n=Ge(),i=_l(),c=Vt(),o=dt(),s=Sl(),h=Zn(),f=iee(),y=eI(),_=_t(),g=(0,o.ElementSymbol)("C"),a=(0,o.ElementSymbol)("O"),d=[y.UnitRing.elementFingerprint([g,g,g,a]),y.UnitRing.elementFingerprint([g,g,g,g,a]),y.UnitRing.elementFingerprint([g,g,g,g,g,a]),y.UnitRing.elementFingerprint([g,g,g,g,g,g,a])];function p(S,T){let A=-1,x=-1,M=-1,D=-1;const{elements:V}=S,{type_symbol:R,label_atom_id:E}=S.model.atomicHierarchy.atoms,{b:I,offset:B}=S.bonds;for(let w=0,O=T.length;w<O;++w){const F=V[T[w]];if(R.value(F)!==g)continue;let L=0,U=0;for(let q=B[T[w]],N=B[T[w]+1];q<N;++q){const k=V[I[q]],j=R.value(k);j===a?++L:j===g&&++U}if(L===2){A=F;break}else L===1&&U===1?x=F:E.value(F).startsWith("C1")?M=F:D=F}return A!==-1?A:x!==-1?x:M!==-1?M:D!==-1?D:V[T[0]]}function u(S,T){const{elements:A}=S,{label_alt_id:x}=S.model.atomicHierarchy.atoms;return x.value(A[T])}function m(S,T,A,x){const M=T.conformation;return n.Vec3.normalize(S,n.Vec3.sub(S,x,M.position(A,S))),S}function v(S,T){const{elements:A}=S,{label_atom_id:x}=S.model.atomicHierarchy.atoms;return x.value(A[T])}function b(S,T){if(!T||!T.length)return;const{unit:A,all:x}=S,M=new Set,D=(0,t.combinations)((0,c.fillSerial)(new Array(T.length)),2);for(let V=0,R=D.length;V<R;++V){const E=D[V],I=x[T[E[0]]],B=x[T[E[1]]];e.SortedArray.areIntersecting(I,B)&&y.UnitRing.getAltId(A,I)===y.UnitRing.getAltId(A,B)&&(M.add(T[E[0]]),M.add(T[E[1]]))}if(M.size){const V=[];for(let R=0,E=T.length;R<E;++R)M.has(T[R])||V.push(T[R]);return V}else return T}function P(S,T){return T.properties.saccharideComponentMap.get(S)}function C(S){if(S.models.reduce((O,F)=>O+F.properties.saccharideComponentMap.size,0)===0)return f.EmptyCarbohydrates;const T=[],A=[],x=[],M=[],D=new Map;function V(O,F,L){return`${O}|${F}|${L}`}function R(O,F){D.has(O)?D.get(O).push(F):D.set(O,[F])}function E(O,F){n.Vec3.sub(x[O].geometry.direction,x[F].geometry.center,x[O].geometry.center),n.Vec3.normalize(x[O].geometry.direction,x[O].geometry.direction)}const I=(0,n.Vec3)();function B(O,F,L){const U=L.conformation,q=x[O].geometry;n.Vec3.sub(q.direction,U.position(L.elements[F],I),q.center),n.Vec3.normalize(q.direction,q.direction)}for(let O=0,F=S.units.length;O<F;++O){const L=S.units[O];if(!h.Unit.isAtomic(L))continue;const{model:U,rings:q}=L,{chainAtomSegments:N,residueAtomSegments:k,atoms:j}=U.atomicHierarchy,{label_comp_id:H}=j,G=e.Segmentation.transientSegments(N,L.elements),z=e.Segmentation.transientSegments(k,L.elements);let W;for(;G.hasNext;)for(z.setSegment(G.move());z.hasNext;){const{index:X}=z.move(),Y=P(H.value(k.offsets[X]),U);if(!Y)continue;W||(W=y.UnitRings.byFingerprintAndResidue(q,d));const K=b(q,W.get(X));if(!K||!K.length){M.push({unit:L,residueIndex:X,component:Y});continue}const Q=[];for(let ae=0,te=K.length;ae<te;++ae){const ne=q.all[K[ae]],$=p(L,ne),ie=i.PrincipalAxes.calculateMomentsAxes((0,s.getPositions)(L,ne)),Z=i.PrincipalAxes.calculateNormalizedAxes(ie),re=n.Vec3.copy((0,n.Vec3)(),Z.origin),oe=n.Vec3.copy((0,n.Vec3)(),Z.dirC),ce=m((0,n.Vec3)(),L,$,re);n.Vec3.orthogonalize(ce,oe,ce);const ue=y.UnitRing.getAltId(L,ne),pe=x.length;Q.push(pe),R(V(X,L.id,ue),pe),ue&&R(V(X,L.id,""),pe),x.push({geometry:{center:re,normal:oe,direction:ce},component:Y,ringIndex:K[ae],altId:ue,unit:L,residueIndex:X})}const J=(0,t.combinations)((0,c.fillSerial)(new Array(K.length)),2);for(let ae=0,te=J.length;ae<te;++ae){const ne=J[ae],$=q.all[K[ne[0]]],ie=q.all[K[ne[1]]];if(r.IntAdjacencyGraph.areVertexSetsConnected(L.bonds,$,ie,3)){const Z=Q[ne[0]],re=Q[ne[1]];x[Z].altId===x[re].altId&&(E(Z,re),E(re,Z),T.push({carbohydrateIndexA:Z,carbohydrateIndexB:re}),T.push({carbohydrateIndexA:re,carbohydrateIndexB:Z}))}}}}function w(O,F){return D.get(V(O.getResidueIndex(F),O.id,u(O,F)))||[]}for(let O=0,F=x.length;O<F;++O){const L=x[O],{unit:U}=L;for(let q=O+1;q<F;++q){const N=x[q];if(U!==N.unit||L.residueIndex===N.residueIndex)continue;
15const k=U.rings.all[L.ringIndex],j=U.rings.all[N.ringIndex];r.IntAdjacencyGraph.areVertexSetsConnected(U.bonds,k,j,3)&&(E(O,q),E(q,O),T.push({carbohydrateIndexA:O,carbohydrateIndexB:q}),T.push({carbohydrateIndexA:q,carbohydrateIndexB:O}))}}for(let O=0,F=S.units.length;O<F;++O){const L=S.units[O];h.Unit.isAtomic(L)&&S.interUnitBonds.getConnectedUnits(L.id).forEach(U=>{U.connectedIndices.forEach(q=>{U.getEdges(q).forEach(({props:N,indexB:k})=>{if(!o.BondType.isCovalent(N.flag))return;const j=S.unitMap.get(U.unitA),H=S.unitMap.get(U.unitB),G=w(j,q),z=w(H,k);if(G.length>0&&z.length>0){const W=G.length,X=z.length;for(let Y=0,K=Math.max(W,X);Y<K;++Y){const Q=G[Math.min(Y,W-1)],J=z[Math.min(Y,X-1)],ae=v(j,q);(ae.startsWith("O1")||ae.startsWith("C1"))&&E(Q,J),T.push({carbohydrateIndexA:Q,carbohydrateIndexB:J})}}else if(z.length===0)for(const W of G){const X=v(j,q);(X.startsWith("O1")||X.startsWith("C1"))&&B(W,k,H),A.push({carbohydrateIndex:W,elementIndex:k,elementUnit:H,fromCarbohydrate:!0})}else if(G.length===0)for(const W of z)A.push({carbohydrateIndex:W,elementIndex:q,elementUnit:j,fromCarbohydrate:!1})})})})}return{links:T,terminalLinks:A,elements:x,partialElements:M,...l(x,T,A)}}function l(S,T,A){function x(w,O){return(0,_.cantorPairing)(w.id,O)}function M(w,O,F){const L=[],U=w.get(x(O,F));if(U!==void 0)for(const q of U)(0,c.arraySetAdd)(L,q);return L}const D=new Map;for(let w=0,O=S.length;w<O;++w){const{unit:F,ringIndex:L}=S[w],U=F.rings.all[L];for(let q=0,N=U.length;q<N;++q){const k=x(F,F.elements[U[q]]),j=D.get(k);j===void 0?D.set(k,[w]):j.push(w)}}function V(w,O){return M(D,w,O)}const R=new Map;for(let w=0,O=T.length;w<O;++w){const F=T[w],{unit:L,ringIndex:U}=S[F.carbohydrateIndexA],q=L.rings.all[U];for(let N=0,k=q.length;N<k;++N){const j=x(L,L.elements[q[N]]),H=R.get(j);H===void 0?R.set(j,[w]):H.push(w)}}function E(w,O){return M(R,w,O)}const I=new Map;for(let w=0,O=A.length;w<O;++w){const{fromCarbohydrate:F,carbohydrateIndex:L,elementUnit:U,elementIndex:q}=A[w];if(F){const{unit:N,ringIndex:k}=S[L],j=N.rings.all[k];for(let H=0,G=j.length;H<G;++H){const z=x(N,N.elements[j[H]]),W=I.get(z);W===void 0?I.set(z,[w]):W.push(w)}}else{const N=x(U,U.elements[q]),k=I.get(N);k===void 0?I.set(N,[w]):k.push(w)}}function B(w,O){return M(I,w,O)}return{getElementIndices:V,getLinkIndices:E,getTerminalLinkIndices:B}}return OC}var kC={},jp={},aO;function oee(){return aO||(aO=1,Object.defineProperty(jp,"__esModule",{value:!0}),jp.EmptyCoordination=void 0,jp.EmptyCoordination={sites:{unitIds:[],indices:[],numbers:[],count:0},getSiteIndex:()=>-1,eachLigand:()=>{}}),jp}var oO;function see(){if(oO)return kC;oO=1,Object.defineProperty(kC,"__esModule",{value:!0}),kC.computeCoordination=d;const e=Zn(),t=xl(),r=oee(),n=_t(),i=dt(),c=BD(),o=4;function s(u,m,v){let b=0;const P=u.interUnitBonds.getEdgeIndices(v,m.id);for(let C=0,l=P.length;C<l;++C){const S=u.interUnitBonds.edges[P[C]];(i.BondType.isCovalent(S.props.flag)||i.BondType.is(S.props.flag,i.BondType.Flag.MetallicCoordination))&&(b+=1)}return b}function h(u,m){let v=0;const{offset:b,edgeProps:{flags:P}}=u.bonds;for(let C=b[m],l=b[m+1];C<l;++C)(i.BondType.isCovalent(P[C])||i.BondType.is(P[C],i.BondType.Flag.MetallicCoordination))&&(v+=1);return v}function f(u,m,v){return s(u,m,v)+h(m,v)}const y=c.AtomicNumbers.H;function _(u,m,v,b){const P=u.interUnitBonds.getEdgeIndices(v,m.id);for(let C=0,l=P.length;C<l;++C){const S=u.interUnitBonds.edges[P[C]],T=u.unitMap.get(S.unitB);(i.BondType.isCovalent(S.props.flag)||i.BondType.is(S.props.flag,i.BondType.Flag.MetallicCoordination))&&T.model.atomicHierarchy.derived.atom.atomicNumber[T.elements[S.indexB]]!==y&&b(T,S.indexB)}}function g(u,m,v){const{elements:b}=u,{atomicNumber:P}=u.model.atomicHierarchy.derived.atom,{offset:C,b:l,edgeProps:{flags:S}}=u.bonds;for(let T=C[m],A=C[m+1];T<A;++T)(i.BondType.isCovalent(S[T])||i.BondType.is(S[T],i.BondType.Flag.MetallicCoordination))&&P[b[l[T]]]!==y&&v(u,l[T])}function a(u,m,v,b){_(u,m,v,b),g(m,v,b)}function d(u){const m=[],v=[],b=[],P=new Map;for(let l=0,S=u.units.length;l<S;++l){const T=u.units[l];if(!e.Unit.isAtomic(T))continue;const{elements:A}=T;for(let x=0,M=A.length;x<M;++x){const D=A[x],V=x,R=f(u,T,V);R>=o&&(P.set(p(T.id,D),P.size),m.push(T.id),v.push(V),b.push(R))}}if(P.size===0)return r.EmptyCoordination;const C=t.StructureElement.Location.create(u);return{sites:{unitIds:m,indices:v,numbers:b,count:P.size},getSiteIndex:(l,S)=>{var T;return(T=P.get(p(l.id,S)))!==null&&T!==void 0?T:-1},eachLigand:(l,S)=>{const T=m[l],A=v[l],x=u.unitMap.get(T);a(u,x,A,(M,D)=>{C.unit=M,C.element=M.elements[D],S(C)})}}}function p(u,m){return(0,n.cantorPairing)(u,m)}return kC}var FC={},sO;function cee(){if(sO)return FC;sO=1,Object.defineProperty(FC,"__esModule",{value:!0}),FC.computeStructureBoundary=o;const e=rt(),t=Ki(),r=(0,e.Sphere3D)(),n=new t.BoundaryHelper("14"),i=new t.BoundaryHelper("98");function c(s){return s>500?n:i}function o(s){const{units:h}=s,f=c(h.length);f.reset();for(let y=0,_=h.length;y<_;y++){const g=h[y],a=g.boundary,d=g.conformation.operator;d.isIdentity?f.includeSphere(a.sphere):(e.Sphere3D.transform(r,a.sphere,d.matrix
15),f.includeSphere(r))}f.finishedIncludeStep();for(let y=0,_=h.length;y<_;y++){const g=h[y],a=g.boundary,d=g.conformation.operator;d.isIdentity?f.radiusSphere(a.sphere):(e.Sphere3D.transform(r,a.sphere,d.matrix),f.radiusSphere(r))}return{box:f.getBox(),sphere:f.getSphere()}}return FC}var Gp={},cO;function uee(){if(cO)return Gp;cO=1,Object.defineProperty(Gp,"__esModule",{value:!0}),Gp.getSerialMapping=r,Gp.getIntraUnitBondMapping=n;const e=nn(),t=Zn();function r(i){const{units:c,elementCount:o,unitIndexMap:s}=i,h=new Uint32Array(c.length),f=new Uint32Array(o),y=new Uint32Array(o);for(let _=0,g=0,a=c.length;_<a;++_){h[_]=g;const{elements:d}=c[_];for(let p=0,u=d.length;p<u;++p){const m=g+p;f[m]=_,y[m]=d[p]}g+=d.length}return{cumulativeUnitElementCount:h,unitIndices:f,elementIndices:y,getSerialIndex:(_,g)=>h[s.get(_.id)]+e.OrderedSet.indexOf(_.elements,g)}}function n(i){let c=0;const o=[];for(const g of i.unitSymmetryGroups){o.push(c);const a=g.units[0];t.Unit.isAtomic(a)&&(c+=a.bonds.edgeCount*2*g.units.length)}const s=new Uint32Array(c),h=new Uint32Array(c),f=new Uint32Array(c);let y=0,_=0;for(const g of i.unitSymmetryGroups){const a=g.units[0];if(t.Unit.isAtomic(a)){const d=a.bonds.edgeCount*2;for(let p=0,u=g.units.length;p<u;++p)for(let m=0,v=d;m<v;++m)s[y]=_,h[y]=m,f[y]=p,y+=1}_+=1}return{bondCount:c,unitIndex:s,unitEdgeIndex:h,unitGroupIndex:f,unitGroupOffset:o}}return Gp}var uO;function Wa(){if(uO)return ed;uO=1,Object.defineProperty(ed,"__esModule",{value:!0}),ed.Structure=void 0;const e=at(),t=ha(),r=eS(),n=Al(),i=_t(),c=xl(),o=Zn(),s=VT(),h=ree(),f=IT(),y=OT(),_=Tl(),g=aee(),a=see(),d=Ge(),p=Yn(),u=Pr(),m=za(),v=wf(),b=nt(),P=cee(),C=uee();class l{subsetBuilder(O){return new h.StructureSubsetBuilder(this,O)}get elementCount(){return this.state.elementCount}get bondCount(){return this.state.bondCount===-1&&(this.state.bondCount=this.interUnitBonds.edgeCount/2+f.Bond.getIntraUnitBondCount(this)),this.state.bondCount}get hasCustomProperties(){return!!this.state.customProps&&this.state.customProps.all.length>0}get customPropertyDescriptors(){return this.state.customProps||(this.state.customProps=new u.CustomProperties),this.state.customProps}get currentPropertyData(){return this.state.propertyData||(this.state.propertyData=Object.create(null)),this.state.propertyData}get inheritedPropertyData(){return this.parent?this.parent.currentPropertyData:this.currentPropertyData}get polymerResidueCount(){return this.state.polymerResidueCount===-1&&(this.state.polymerResidueCount=R(this)),this.state.polymerResidueCount}get polymerGapCount(){return this.state.polymerGapCount===-1&&(this.state.polymerGapCount=E(this)),this.state.polymerGapCount}get polymerUnitCount(){return this.state.polymerUnitCount===-1&&(this.state.polymerUnitCount=I(this)),this.state.polymerUnitCount}get uniqueElementCount(){return this.state.uniqueElementCount===-1&&(this.state.uniqueElementCount=V(this)),this.state.uniqueElementCount}get atomicResidueCount(){return this.state.atomicResidueCount===-1&&(this.state.atomicResidueCount=B(this)),this.state.atomicResidueCount}get isCoarseGrained(){return this.models.some(O=>n.Model.isCoarseGrained(O))}get isEmpty(){return this.units.length===0}get hashCode(){return this.state.hashCode!==-1?this.state.hashCode:this.computeHash()}get transformHash(){return this.state.transformHash!==-1?this.state.transformHash:(this.state.transformHash=(0,i.hashFnv32a)(this.units.map(O=>O.id)),this.state.transformHash)}computeHash(){let O=23;for(let F=0,L=this.units.length;F<L;F++){const U=this.units[F];O=31*O+U.id|0,O=31*O+e.SortedArray.hashCode(U.elements)|0}return O=31*O+this.elementCount|0,O=(0,i.hash1)(O),O===-1&&(O=0),this.state.hashCode=O,O}elementLocations(){return new l.ElementLocationIterator(this)}get root(){var O;return(O=this.state.parent)!==null&&O!==void 0?O:this}get parent(){return this.state.parent}
15get coordinateSystem(){return this.state.coordinateSystem}get label(){return this.state.label}get boundary(){return this.state.boundary?this.state.boundary:(this.state.boundary=(0,P.computeStructureBoundary)(this),this.state.boundary)}get lookup3d(){return this.state.lookup3d?this.state.lookup3d:(this.state.lookup3d=new s.StructureLookup3D(this),this.state.lookup3d)}get interUnitBonds(){return this.state.interUnitBonds?this.state.interUnitBonds:(this.parent&&this.state.dynamicBonds===this.parent.state.dynamicBonds&&this.parent.state.interUnitBonds&&this.parent.state.interUnitBonds.edgeCount===0?this.state.interUnitBonds=new f.InterUnitBonds(new Map):this.state.interUnitBonds=(0,f.computeInterUnitBonds)(this,{ignoreWater:!this.dynamicBonds,ignoreIon:!this.dynamicBonds,validUnit:this.state.interBondsValidUnit,validUnitPair:this.state.interBondsValidUnitPair}),this.state.interUnitBonds)}get dynamicBonds(){return this.state.dynamicBonds}get interBondsValidUnit(){return this.state.interBondsValidUnit}get interBondsValidUnitPair(){return this.state.interBondsValidUnitPair}get unitSymmetryGroups(){return this.state.unitSymmetryGroups?this.state.unitSymmetryGroups:(this.state.unitSymmetryGroups=y.StructureSymmetry.computeTransformGroups(this),this.state.unitSymmetryGroups)}get unitSymmetryGroupsIndexMap(){return this.state.unitSymmetryGroupsIndexMap?this.state.unitSymmetryGroupsIndexMap:(this.state.unitSymmetryGroupsIndexMap=o.Unit.SymmetryGroup.getUnitSymmetryGroupsIndexMap(this.unitSymmetryGroups),this.state.unitSymmetryGroupsIndexMap)}get carbohydrates(){return this.state.carbohydrates?this.state.carbohydrates:(this.state.carbohydrates=(0,g.computeCarbohydrates)(this),this.state.carbohydrates)}get coordination(){return this.state.coordination?this.state.coordination:(this.state.coordination=(0,a.computeCoordination)(this),this.state.coordination)}get models(){return this.state.models?this.state.models:(this.state.models=T(this),this.state.models)}get uniqueResidueNames(){return this.state.uniqueResidueNames||(this.state.uniqueResidueNames=A(this))}get uniqueElementSymbols(){return this.state.uniqueElementSymbols||(this.state.uniqueElementSymbols=x(this))}get entityIndices(){return this.state.entityIndices||(this.state.entityIndices=M(this))}get uniqueAtomicResidueIndices(){return this.state.uniqueAtomicResidueIndices||(this.state.uniqueAtomicResidueIndices=D(this))}get isAtomic(){for(const O of this.units)if(!o.Unit.isAtomic(O))return!1;return!0}get hasAtomic(){for(const O of this.units)if(o.Unit.isAtomic(O))return!0;return!1}get isCoarse(){for(const O of this.units)if(!o.Unit.isCoarse(O))return!1;return!0}get hasCoarse(){for(const O of this.units)if(o.Unit.isCoarse(O))return!0;return!1}get serialMapping(){return this.state.serialMapping||(this.state.serialMapping=(0,C.getSerialMapping)(this))}get intraUnitBondMapping(){return this.state.intraUnitBondMapping||(this.state.intraUnitBondMapping=(0,C.getIntraUnitBondMapping)(this))}get model(){if(this.state.model)return this.state.model;if(this.state.representativeModel)return this.state.representativeModel;if(this.state.masterModel)return this.state.masterModel;const O=this.models;if(O.length>1)throw new Error("The structure is based on multiple models and has neither a master- nor a representative-model.");return this.state.model=O[0],this.state.model}get masterModel(){return this.state.masterModel}get representativeModel(){return this.state.representativeModel}hasElement(O){return this.unitMap.has(O.unit.id)?e.SortedArray.has(this.unitMap.get(O.unit.id).elements,O.element):!1}getModelIndex(O){return this.models.indexOf(O)}remapModel(O){const{dynamicBonds:F,interUnitBonds:L,parent:U}=this.state,q=[];for(const N of this.unitSymmetryGroups){const k=N.units[0].remapModel(O,F);q.push(k);for(let j=1,H=N.units.length;j<H;++j){const G=N.units[j];q.push(G.remapModel(O,F,k.props))}}return l.create(q,{parent:U?.remapModel(O),label:this.label,interUnitBonds:F?void 0:L,dynamicBonds:F,interBondsValidUnit:this.state.interBondsValidUnit,interBondsValidUnitPair:this.state.interBondsValidUnitPair,coordinateSystem:this.state.coordinateSystem,masterModel:this.state.masterModel,representativeModel:this.state.representativeModel})}asParent(){if(this._proxy)return this._proxy;if(this.parent){const O=this.parent.coordinateSystem.isIdentity?this.parent:l.transform(this.parent,this.parent.coordinateSystem.inverse),F=this.coordinateSystem.isIdentity?O:l.transform(O,this.coordinateSystem.matrix);this._proxy=new l(F.units,F.unitMap,F.unitIndexMap,{...F.state,dynamicBonds:this.dynamicBonds},{child:this,target:this.parent})}else this._proxy=this;return this._proxy}get child(){return this._child}get target(){var O;return(O=this._target)!==null&&O!==void 0?O:this}constructor(O,F,L,U,q){this.units=O,this.unitMap=F,this.unitIndexMap=L,this.state=U,this._child=q?.child,this._target=q?.target,this._proxy=void 0}}ed.Structure=l;function S(w,O,F){return w[O].id-w[F].id}function T(w){const{units:O}=w,F=t.UniqueArray.create();for(const L of O)t.UniqueArray.add(F,L.model.id,L.model);return F.array}function A(w){const{microheterogeneityCompIds:O}=_.StructureProperties.residue,F=new Set,L=c.StructureElement.Location.create(w);for(const U of w.unitSymmetryGroups){const q=U.units[0];if(!o.Unit.isAtomic(q))continue;const N=e.Segmentation.transientSegments(q.model.atomicHierarchy.residueAtomSegments,q.elements);for(L.unit=q;N.hasNext;){const k=N.move();L.element=q.elements[k.start];const j=O(L);for(const H of j)F.add(H)}}return F}function x(w){const O=_.StructureProperties.atom.type_symbol,F=new Set,L=c.StructureElement.Location.create(w);for(const U of w.unitSymmetryGroups){const q=U.units[0];if(o.Unit.isAtomic(q)){L.unit=q;for(let N=0,k=q.elements.length;N<k;++N)L.element=q.elements[N],F.add(O(L))}}return F}function M(w){const{units:O}=w,F=c.StructureElement.Location.create(w),L=t.UniqueArray.create();for(const U of O){const q=U.kind===o.Unit.Kind.Atomic?_.StructureProperties.entity.key:_.StructureProperties.coarse.entityKey;F.unit=U;const N=U.elements,k=e.Segmentation.transientSegments(U.model.atomicHierarchy.chainAtomSegments,N);for(;k.hasNext;){const j=k.move();F.element=N[j.start];const H=q(F);t.UniqueArray.add(L,H,H)}}return(0,i.sortArray)(L.array),L.array}function D(w){const O=new Map,F=[],L=w.unitSymmetryGroups;for(const q of L){const N=q.units[0];if(!o.Unit.isAtomic(N))continue;let k;O.has(N.model.id)?k=O.get(N.model.id):(k=t.UniqueArray.create(),F.push(N.model.id),O.set(N.model.id,k));const j=e.Segmentation.transientSegments(N.model.atomicHierarchy.residueAtomSegments,N.elements);for(;j.hasNext;){const H=j.move();t.UniqueArray.add(k,H.index,H.index)}}const U=new Map;for(const q of F){const N=O.get(q).array;(0,i.sortArray)(N),U.set(q,N)}return U}function V(w){const{unitSymmetryGroups:O}=w;let F=0;for(let L=0,U=O.length;L<U;L++)F+=O[L].elements.length;return F}function R(w){const{units:O}=w;let F=0;for(let L=0,U=O.length;L<U;L++)F+=O[L].polymerElements.length;return F}function E(w){const{units:O}=w;let F=0;for(let L=0,U=O.length;L<U;L++)F+=O[L].gapElements.length/2;return F}function I(w){const{units:O}=w;let F=0;for(let L=0,U=O.length;L<U;L++)O[L].polymerElements.length>0&&(F+=1);return F}function B(w){const{units:O}=w;let F=0;for(let L=0,U=O.length;L<U;L++){const q=O[L];if(!o.Unit.isAtomic(q))continue;const{elements:N,residueIndex:k}=q;let j=-1,H=-1;for(let G=0,z=N.length;G<z;++G)j=k[N[G]],j!==H&&(F+=1,H=j)}return F}
15return(function(w){w.Empty=j([]);function O(_e){return{kind:"structure-loci",structure:_e}}w.Loci=O;function F(_e){const be=[];for(const xe of _e.units)be.push({unit:xe,indices:e.Interval.ofBounds(0,xe.elements.length)});return c.StructureElement.Loci(_e,be)}w.toStructureElementLoci=F;function L(_e,be){return m.StructureSelection.toLociWithSourceUnits(m.StructureSelection.Singletons(_e,be))}w.toSubStructureElementLoci=L;function U(_e){return!!_e&&_e.kind==="structure-loci"}w.isLoci=U;function q(_e,be){return _e.structure===be.structure}w.areLociEqual=q;function N(_e){return _e.structure.isEmpty}w.isLociEmpty=N;function k(_e,be){return be===_e.structure?_e:O(be)}w.remapLoci=k;function j(_e,be={}){const xe=e.IntMap.Mutable(),we=e.IntMap.Mutable();let Be=0,Me=!0,Re=_e.length>0?_e[0].id:0;for(let Ve=0,qe=_e.length;Ve<qe;Ve++){const ke=_e[Ve];xe.set(ke.id,ke),Be+=ke.elements.length,ke.id<Re&&(Me=!1),Re=ke.id}Me||(0,i.sort)(_e,0,_e.length,S,i.arraySwap);for(let Ve=0,qe=_e.length;Ve<qe;Ve++)we.set(_e[Ve].id,Ve);const Te={hashCode:-1,transformHash:-1,elementCount:Be,bondCount:-1,uniqueElementCount:-1,atomicResidueCount:-1,polymerResidueCount:-1,polymerGapCount:-1,polymerUnitCount:-1,dynamicBonds:!1,coordinateSystem:r.SymmetryOperator.Default,label:""};return be.parent&&(Te.parent=be.parent.parent||be.parent),be.interUnitBonds&&(Te.interUnitBonds=be.interUnitBonds),be.interBondsValidUnit?Te.interBondsValidUnit=be.interBondsValidUnit:be.parent&&(Te.interBondsValidUnit=be.parent.interBondsValidUnit),be.interBondsValidUnitPair?Te.interBondsValidUnitPair=be.interBondsValidUnitPair:be.parent&&(Te.interBondsValidUnitPair=be.parent.interBondsValidUnitPair),be.dynamicBonds?Te.dynamicBonds=be.dynamicBonds:be.parent&&(Te.dynamicBonds=be.parent.dynamicBonds),be.coordinateSystem?Te.coordinateSystem=be.coordinateSystem:be.parent&&(Te.coordinateSystem=be.parent.coordinateSystem),be.label?Te.label=be.label:be.parent&&(Te.label=be.parent.label),be.masterModel?Te.masterModel=be.masterModel:be.parent&&(Te.masterModel=be.parent.masterModel),be.representativeModel?Te.representativeModel=be.representativeModel:be.parent&&(Te.representativeModel=be.parent.representativeModel),new w(_e,xe,we,Te)}w.create=j;async function H(_e,be){if(_e.frameCount===0)return w.Empty;const xe=[];let we,Be=0;for(let Me=0,Re=_e.frameCount;Me<Re;++Me){const Te=await b.Task.resolveInContext(_e.getFrameAtIndex(Me),be);we||(we=Te);const Ve=G(Te);for(let qe=0,ke=Ve.units.length;qe<ke;++qe){const ze=Ve.units[qe],We=ze.invariantId+Be,Je=ze.chainGroupId+Be,De=o.Unit.create(xe.length,We,Je,ze.traits,ze.kind,ze.model,ze.conformation.operator,ze.elements);xe.push(De)}Be=xe.length}return j(xe,{representativeModel:we,label:we.label})}w.ofTrajectory=H;function G(_e,be={}){const xe=_e.atomicHierarchy.chainAtomSegments,{index:we}=_e.atomicHierarchy,{auth_asym_id:Be}=_e.atomicHierarchy.chains,{atomicChainOperatorMappinng:Me}=_e,Re=new K({label:_e.label,...be});for(let Ve=0;Ve<xe.count;Ve++){const qe=Me.get(Ve)||r.SymmetryOperator.Default,ke=xe.offsets[Ve];let ze=!1,We=!1;if(z(_e,Ve))for(We=!0;Ve+1<xe.count&&z(_e,Ve+1);){const Oe=Me.get(Ve),Fe=Me.get(Ve+1);if(Oe!==Fe)break;ze=!0,Ve++}else for(;Ve+1<xe.count&&xe.offsets[Ve+1]-xe.offsets[Ve]===1&&xe.offsets[Ve+2]-xe.offsets[Ve+1]===1;){const Oe=we.getEntityFromChain(Ve),Fe=we.getEntityFromChain(Ve+1);if(Oe!==Fe)break;const Le=Be.value(Ve),He=Be.value(Ve+1);if(Le!==He)break;const Pe=Me.get(Ve),Ie=Me.get(Ve+1);if(Pe!==Ie)break;ze=!0,Ve++}const Je=e.SortedArray.ofBounds(ke,xe.offsets[Ve+1]);let De=o.Unit.Trait.None;ze&&(De|=o.Unit.Trait.MultiChain),We&&(De|=o.Unit.Trait.Water),n.Model.isCoarseGrained(_e)&&(De|=o.Unit.Trait.CoarseGrained),Re.addUnit(o.Unit.Kind.Atomic,_e,qe,Je,De)}const Te=_e.coarseHierarchy;return Te.isDefined&&(Te.spheres.count>0&&W(Re,_e,_e.coarseHierarchy.spheres,o.Unit.Kind.Spheres),Te.gaussians.count>0&&W(Re,_e,_e.coarseHierarchy.gaussians,o.Unit.Kind.Gaussians)),Re.getStructure()}w.ofModel=G;function z(_e,be){const xe=_e.atomicHierarchy.index.getEntityFromChain(be);return _e.entities.data.type.value(xe)==="water"}function W(_e,be,xe,we){const{chainElementSegments:Be}=xe;for(let Me=0;Me<Be.count;Me++){const Re=e.SortedArray.ofBounds(Be.offsets[Me],Be.offsets[Me+1]);_e.addUnit(we,be,r.SymmetryOperator.Default,Re,o.Unit.Trait.None)}}function X(_e,be){if(d.Mat4.isIdentity(be))return _e;if(!d.Mat4.isRotationAndTranslation(be,r.SymmetryOperator.RotationTranslationEpsilon))throw new Error("Only rotation/translation combination can be applied.");const xe=[];for(const Me of _e.units){const Re=Me.conformation.operator,Te=r.SymmetryOperator.create(Re.name,be,Re);xe.push(Me.applyOperator(Me.id,Te))}const we=_e.coordinateSystem,Be=r.SymmetryOperator.compose(r.SymmetryOperator.create(we.name,be,we),we);return j(xe,{parent:_e,coordinateSystem:Be})}w.transform=X;function Y(_e,be){for(const Be of be)if(!d.Mat4.isRotationAndTranslation(Be,r.SymmetryOperator.RotationTranslationEpsilon))throw new Error("Only rotation/translation combination can be applied.");const xe=[];let we=0;for(const Be of _e.units){const Me=Be.conformation.operator;for(const Re of be){if(d.Mat4.isIdentity(Re)){xe.push(Be);continue}const Te=r.SymmetryOperator.create(Me.name,Re,Me);xe.push(Be.applyOperator(we++,Te))}}return j(xe,{parent:_e})}w.instances=Y;class K{beginChainGroup(){this.chainGroupId++,this.inChainGroup=!0}endChainGroup(){this.inChainGroup=!1}addUnit(be,xe,we,Be,Me,Re){Re===void 0&&(Re=this.invariantId());const Te=this.inChainGroup?this.chainGroupId:++this.chainGroupId,Ve=o.Unit.create(this.units.length,Re,Te,Me,be,xe,we,Be);return this.add(Ve)}copyUnit(be,xe){let we=xe?.invariantId;we===void 0&&(we=this.invariantId());const Be=this.inChainGroup?this.chainGroupId:++this.chainGroupId,Me=be.getCopy(this.units.length,we,Be,xe);return this.add(Me)}add(be){if(be.elements.length===1){be.conformation.position(be.elements[0],this.p);const xe=[be.invariantId,this.p[0],this.p[1],this.p[2]].join("|");if(this.singleElementUnits.has(xe))return this.singleElementUnits.get(xe);this.singleElementUnits.set(xe,be)}return this.units.push(be),be}addWithOperator(be,xe,we=!1){return this.add(be.applyOperator(this.units.length,xe,we))}getStructure(){return j(this.units,this.props)}get isEmpty(){return this.units.length===0}constructor(be={}){this.props=be,this.units=[],this.invariantId=(0,p.idFactory)(),this.chainGroupId=-1,this.inChainGroup=!1,this.p=(0,d.Vec3)(),this.singleElementUnits=new Map}}w.StructureBuilder=K;function Q(_e={}){return new K(_e)}w.Builder=Q;function J(_e){return _e.hashCode}w.hashCode=J;function ae(_e){return(0,i.hashString)(_e.units.map(be=>o.Unit.conformationId(be)).join("|"))}w.conformationHash=ae;function te(_e,be){if(_e===be)return!0;
15if(_e.elementCount!==be.elementCount)return!1;const xe=_e.units.length;if(xe!==be.units.length)return!1;for(let we=0;we<xe;we++)if(_e.units[we].id!==be.units[we].id)return!1;return!0}w.areUnitIdsEqual=te;function ne(_e,be){if(_e===be)return!0;if(!te(_e,be))return!1;for(let xe=0,we=_e.units.length;xe<we;xe++)if(!e.SortedArray.areEqual(_e.units[xe].elements,be.units[xe].elements))return!1;return!0}w.areUnitIdsAndIndicesEqual=ne;function $(_e,be){if(_e.hashCode!==be.hashCode)return!1;const xe=_e.models.length;if(xe!==be.models.length)return!1;for(let we=0;we<xe;we++)if(!n.Model.areHierarchiesEqual(_e.models[we],be.models[we]))return!1;return!0}w.areHierarchiesEqual=$;function ie(_e,be){return _e===be||_e.hashCode===be.hashCode&&y.StructureSymmetry.areTransformGroupsEquivalent(_e.unitSymmetryGroups,be.unitSymmetryGroups)}w.areEquivalent=ie;function Z(_e,be){return ie(_e.root,be.root)}w.areRootsEquivalent=Z;function re(_e,be){return _e.root===be.root}w.areRootsEqual=re;class oe{move(){return this.advance(),this.current.element=this.elements[this.idx],this.current}advance(){if(this.idx<this.maxIdx){this.idx++,this.idx===this.maxIdx&&(this.hasNext=this.unitIndex+1<this.structure.units.length);return}if(this.idx=0,this.unitIndex++,this.unitIndex>=this.structure.units.length){this.hasNext=!1;return}this.current.unit=this.structure.units[this.unitIndex],this.elements=this.current.unit.elements,this.maxIdx=this.elements.length-1,this.maxIdx===0&&(this.hasNext=this.unitIndex+1<this.structure.units.length)}constructor(be){this.structure=be,this.unitIndex=0,this.maxIdx=0,this.idx=-1,this.current=c.StructureElement.Location.create(be),this.hasNext=be.elementCount>0,this.hasNext&&(this.elements=be.units[0].elements,this.maxIdx=this.elements.length-1,this.current.unit=be.units[0])}}w.ElementLocationIterator=oe;const ce=(0,d.Vec3)();function ue(_e,be,xe){const{elements:we,conformation:Be}=_e,Me=ce;let Re=Number.MAX_VALUE;for(let Te=0,Ve=we.length;Te<Ve;Te++){const qe=we[Te],ke=d.Vec3.distance(be,Be.position(qe,Me))-xe-Be.r(qe);ke<Re&&(Re=ke)}return Re}function pe(_e,be,xe){const{units:we}=_e;let Be=Number.MAX_VALUE;for(let Me=0,Re=we.length;Me<Re;Me++){const Te=we[Me],Ve=ue(Te,be,xe);Ve<Be&&(Be=Ve)}return Be}w.minDistanceToPoint=pe;const he=(0,d.Vec3)();function fe(_e,be){if(_e.elementCount===0||be.elementCount===0)return 0;const{units:xe}=_e;let we=Number.MAX_VALUE;for(let Be=0,Me=xe.length;Be<Me;Be++){const Re=xe[Be],{elements:Te,conformation:Ve}=Re;for(let qe=0,ke=Te.length;qe<ke;qe++){const ze=Te[qe],We=pe(be,Ve.position(ze,he),Ve.r(ze));We<we&&(we=We)}}return we}w.distance=fe;function de(_e){return _e.elementCount===1?"1 element":`${_e.elementCount} elements`}w.elementDescription=de;function ge(_e,be,xe){return _e.masterModel?be.model===xe.model||be.model===_e.masterModel||xe.model===_e.masterModel:be.model===xe.model}w.validUnitPair=ge;function Ce(_e,be,xe){const{maxRadius:we,validUnit:Be,validUnitPair:Me}=xe;if(!_e.units.some(Ve=>Be(Ve)))return;const Re=_e.lookup3d,Te=(0,d.Vec3)();for(const Ve of _e.units){if(!Be(Ve))continue;const qe=Ve.boundary.sphere;d.Vec3.transformMat4(Te,qe.center,Ve.conformation.operator.matrix);const ke=Re.findUnitIndices(Te[0],Te[1],Te[2],qe.radius+we);for(let ze=0;ze<ke.count;ze++){const We=_e.units[ke.indices[ze]];Ve.id>=We.id||!Be(We)||!Me(Ve,We)||(We.elements.length>=Ve.elements.length?be(Ve,We):be(We,Ve))}}}w.eachUnitPair=Ce;function ve(_e,{chain:be,residue:xe,atom:we}){const Be=c.StructureElement.Location.create(_e);for(const Me of _e.units){if(Me.kind!==o.Unit.Kind.Atomic)continue;Be.unit=Me;const{elements:Re}=Me,Te=e.Segmentation.transientSegments(Me.model.atomicHierarchy.chainAtomSegments,Re),Ve=e.Segmentation.transientSegments(Me.model.atomicHierarchy.residueAtomSegments,Re);for(;Te.hasNext;){const qe=Te.move();if(be&&(Be.element=Re[qe.start],be(Be)),!(!xe&&!we))for(Ve.setSegment(qe);Ve.hasNext;){const ke=Ve.move();if(xe&&(Be.element=Re[ke.start],xe(Be)),!!we)for(let ze=ke.start,We=ke.end;ze<We;ze++)Be.element=Re[ze],we(Be)}}}}w.eachAtomicHierarchyElement=ve,w.DefaultSizeThresholds={smallResidueCount:10,mediumResidueCount:5e3,largeResidueCount:3e4,highSymmetryUnitCount:10,fiberResidueCount:15};function le(_e){return _e.unitSymmetryGroups.filter(be=>be.units[0].polymerElements.length>0)}function me(_e,be){const xe=le(_e);return xe.length===1&&xe[0].units.length>2&&xe[0].units[0].polymerElements.length<be.fiberResidueCount}function ee(_e,be){const xe=le(_e);return xe.length>=1&&xe[0].units.length>be.highSymmetryUnitCount}let se;(function(_e){_e[_e.Small=0]="Small",_e[_e.Medium=1]="Medium",_e[_e.Large=2]="Large",_e[_e.Huge=3]="Huge",_e[_e.Gigantic=4]="Gigantic"})(se=w.Size||(w.Size={}));function ye(_e,be={},xe=1){const we={...w.DefaultSizeThresholds,...be};return _e.polymerResidueCount>=we.largeResidueCount*xe?ee(_e,we)?se.Huge:se.Gigantic:me(_e,we)||_e.polymerResidueCount<we.smallResidueCount*xe?se.Small:_e.polymerResidueCount<we.mediumResidueCount*xe?se.Medium:se.Large}
15w.getSize=ye,w.Index=v.CustomStructureProperty.createSimple("index","root"),w.MaxIndex=v.CustomStructureProperty.createSimple("max_index","root");const Se="__PrincipalAxes__";function Ae(_e){if(_e.currentPropertyData[Se])return _e.currentPropertyData[Se];const be=c.StructureElement.Loci.getPrincipalAxes(w.toStructureElementLoci(_e));return _e.currentPropertyData[Se]=be,be}w.getPrincipalAxes=Ae})(l||(ed.Structure=l={})),ed}var hx={},lO;function sI(){return lO||(lO=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.QuerySymbolRuntime=e.QueryRuntimeArguments=e.CompiledQueryFn=e.QueryCompiledSymbol=e.QueryCompilerCtx=e.DefaultQueryRuntimeTable=e.QueryRuntimeTable=void 0,e.compile=g;const t=PT(),r=Ke();class n{constructor(){this.addedProps=new Set,this.map=new Map}removeSymbol(d){this.map.delete(d.symbol.id)}addSymbol(d){this.map.has(d.symbol.id)&&console.warn(`Symbol '${d.symbol.id}' already added. Call removeSymbol/removeCustomProps re-adding the symbol.`),this.map.set(d.symbol.id,d)}addCustomProp(d){if(!this.addedProps.has(d.name)&&(this.addedProps.add(d.name),!!d.symbols))for(const p of Object.keys(d.symbols))this.addSymbol(d.symbols[p])}
15removeCustomProp(d){if(this.addedProps.delete(d.name),!!d.symbols)for(const p of Object.keys(d.symbols))this.removeSymbol(d.symbols[p])}getRuntime(d){return this.map.get(d)}}e.QueryRuntimeTable=n,e.DefaultQueryRuntimeTable=new n;class i{constructor(d){this.table=d,this.constQueryContext=new r.QueryContext(r.Structure.Empty)}}e.QueryCompilerCtx=i;var c;(function(a){function d(u){return{kind:"const",value:u}}a.Const=d;function p(u){return{kind:"dynamic",runtime:u}}a.Dynamic=p})(c||(e.QueryCompiledSymbol=c={}));var o;(function(a){function d(u){return{isConst:!0,fn:function(v){return u}}}a.Const=d;function p(u){return{isConst:!1,fn:u}}a.Dynamic=p})(o||(e.CompiledQueryFn=o={}));var s;(function(a){function d(p,u,m,v){if(typeof p.length=="number")for(let b=0,P=p.length;b<P;b++)m(p[b](u),b,v);else{let b=0;for(const P of Object.keys(p))m(p[P](u),b++,v)}return v}a.forEachEval=d})(s||(e.QueryRuntimeArguments=s={}));var h;(function(a){function d(u,m){return new f(u,m,!0)}a.Const=d;function p(u,m){return new f(u,m,!1)}a.Dynamic=p})(h||(e.QuerySymbolRuntime=h={}));class f{compile(d,p){let u,m=!1;if(!p)u=void 0,m=!0;else if(t.Expression.isArgumentsArray(p)){u=[],m=!0;for(const v of p){const b=_(d,v);m=m&&b.isConst,u.push(b.fn)}}else{u=Object.create(null),m=!0;for(const v of Object.keys(p)){const b=_(d,p[v]);m=m&&b.isConst,u[v]=b.fn}}return this.isConst?this.isConst&&m?o.Const(this.fn(d.constQueryContext,u)):o.Dynamic(y(this.fn,u)):o.Dynamic(y(this.fn,u))}constructor(d,p,u){this.symbol=d,this.fn=p,this.isConst=u}}function y(a,d){return function(u){return a(u,d)}}function _(a,d){if(t.Expression.isLiteral(d))return o.Const(d);if(t.Expression.isSymbol(d)){const u=a.table.getRuntime(d.name);return u?u.compile(a):o.Const(d.name)}if(!t.Expression.isSymbol(d.head))throw new Error("Can only apply symbols.");const p=a.table.getRuntime(d.head.name);if(!p)throw new Error(`Symbol '${d.head.name}' is not implemented.`);return p.compile(a,d.args)}function g(a){const d=new i(e.DefaultQueryRuntimeTable);return _(d,a).fn}})(hx)),hx}var dO;function kT(){if(dO)return ip;dO=1,Object.defineProperty(ip,"__esModule",{value:!0}),ip.Loci=m;const e=ha(),t=at(),r=Ge(),n=dr(),i=Wa(),c=Zn(),o=_t(),s=GD(),h=_l(),f=Tl(),y=Ki(),_=OD(),g=rt(),a=sI(),d=RT(),p=rI(),u=_.IntTuple.diff;function m(v,b){return{kind:"element-loci",structure:v,elements:b}}return(function(v){function b(le){return!!le&&le.kind==="element-loci"}v.is=b;function P(le,me){if(le.structure!==me.structure||le.elements.length!==me.elements.length)return!1;for(let ee=0,se=le.elements.length;ee<se;++ee){const ye=le.elements[ee],Se=me.elements[ee];if(ye.unit.id!==Se.unit.id||!t.OrderedSet.areEqual(ye.indices,Se.indices))return!1}return!0}v.areEqual=P;function C(le){for(const me of le.elements)if(t.OrderedSet.size(me.indices)>0)return!1;return!0}v.isEmpty=C;function l(le){return S(le)===le.structure.elementCount}v.isWholeStructure=l;function S(le){let me=0;for(const{indices:ee}of le.elements)typeof ee=="number"?me+=u(ee):me+=ee.length;return me}v.size=S;function T(le){return v(le,le.units.map(me=>({unit:me,indices:t.OrderedSet.ofBounds(0,me.elements.length)})))}v.all=T;function A(le){return v(le,[])}v.none=A;function x(le,me,ee){let se;typeof me=="function"?se=me(n.MolScriptBuilder):se=me;const ye=(0,a.compile)(se)(ee??new d.QueryContext(le));return d.StructureSelection.toLociWithSourceUnits(ye)}v.fromExpression=x;function M(le,me,ee){const se=me(ee??new d.QueryContext(le));return d.StructureSelection.toLociWithSourceUnits(se)}v.fromQuery=M;function D(le,me,ee){return p.Schema.toLoci(le,me,ee)}v.fromSchema=D;function V(le,me){if(C(le))return;const ee=le.elements[0].unit,se=ee.elements[t.OrderedSet.getAt(le.elements[0].indices,0)];return me?(me.structure=le.structure,me.unit=le.elements[0].unit,me.element=se,me):s.Location.create(le.structure,ee,se)}v.getFirstLocation=V;function R(le){return C(le)?le:v(le.structure,[{unit:le.elements[0].unit,indices:t.OrderedSet.ofSingleton(t.OrderedSet.start(le.elements[0].indices))}])}v.firstElement=R;function E(le){return C(le)?le:j(R(le))}v.firstResidue=E;function I(le){return C(le)?le:X(R(le))}v.firstChain=I;function B(le){const me=[];for(const ee of le.elements){const{unit:se,indices:ye}=ee,Se=new Int32Array(t.OrderedSet.size(ye));t.OrderedSet.forEach(ye,(Ae,_e)=>Se[_e]=se.elements[Ae]),me.push(se.getChild(t.SortedArray.ofSortedArray(Se)))}return i.Structure.create(me,{parent:le.structure.parent})}v.toStructure=B;function w(le,me,ee){if(v.isEmpty(le))return;const se=ee||s.Location.create(le.structure);se.structure=le.structure;for(const ye of le.elements){const{unit:Se,indices:Ae}=ye;se.unit=Se;const{elements:_e}=ye.unit;for(let be=0,xe=t.OrderedSet.size(Ae);be<xe;be++)se.element=_e[t.OrderedSet.getAt(Ae,be)],me(se)}}v.forEachLocation=w;function O(le,me){if(me===le.structure)return le;const ee=[];
15return le.elements.forEach(se=>{if(!me.unitMap.has(se.unit.id))return;const ye=me.unitMap.get(se.unit.id),Se=t.OrderedSet.indexedIntersect(se.indices,se.unit.elements,ye.elements);t.OrderedSet.size(Se)>0&&ee.push({unit:ye,indices:Se})}),v(me,ee)}v.remap=O;function F(le,me){if(le.elements.length>me.elements.length)return F(me,le);if(v.isEmpty(le))return me;const ee=new Map;for(const ye of le.elements)ee.set(ye.unit.id,ye.indices);const se=[];for(const ye of me.elements)ee.has(ye.unit.id)?(se[se.length]={unit:ye.unit,indices:t.OrderedSet.union(ee.get(ye.unit.id),ye.indices)},ee.delete(ye.unit.id)):se[se.length]=ye;return ee.forEach((ye,Se)=>{se[se.length]={unit:le.structure.unitMap.get(Se),indices:ye}}),v(le.structure,se)}v.union=F;function L(le,me){const ee=new Map;for(const ye of me.elements)ee.set(ye.unit.id,ye.indices);const se=[];for(const ye of le.elements)if(ee.has(ye.unit.id)){const Se=t.OrderedSet.subtract(ye.indices,ee.get(ye.unit.id));if(t.OrderedSet.size(Se)===0)continue;se[se.length]={unit:ye.unit,indices:Se}}else se[se.length]=ye;return v(le.structure,se)}v.subtract=L;function U(le,me){const ee=new Map;for(const ye of le.elements)ee.set(ye.unit.id,ye.indices);const se=[];for(const ye of me.elements){if(!ee.has(ye.unit.id))continue;const Se=t.OrderedSet.intersect(ee.get(ye.unit.id),ye.indices);t.OrderedSet.size(Se)!==0&&(se[se.length]={unit:ye.unit,indices:Se})}return v(le.structure,se)}v.intersect=U;function q(le,me){if(le.elements.length>me.elements.length)return q(me,le);if(v.isEmpty(le))return v.isEmpty(me);const ee=new Map;for(const se of le.elements)ee.set(se.unit.id,se.indices);for(const se of me.elements)if(ee.has(se.unit.id)&&t.OrderedSet.areIntersecting(ee.get(se.unit.id),se.indices))return!0;return!1}v.areIntersecting=q;function N(le,me){if(v.isEmpty(le))return v.isEmpty(me);const ee=new Map;for(const ye of le.elements)ee.set(ye.unit.id,ye.indices);let se=!1;for(const ye of me.elements){if(!ee.has(ye.unit.id))return!1;if(t.OrderedSet.isSubset(ee.get(ye.unit.id),ye.indices))se=!0;else return!1}return se}v.isSubset=N;function k(le){return le.length>3&&t.SortedArray.isRange(le)?t.Interval.ofRange(le[0],le[le.length-1]):t.SortedArray.ofSortedArray(le)}function j(le,me){const ee=[],se=new Set;for(const ye of le.elements){if(G(ye)){ee[ee.length]=ye;continue}if(ye.unit.kind===c.Unit.Kind.Atomic){const Se=ye.unit.elements,Ae=ye.unit.model.atomicHierarchy,{label_alt_id:_e}=ye.unit.model.atomicHierarchy.atoms,{index:be,offsets:xe}=Ae.residueAtomSegments,we=[],Be=ye.indices,Me=t.OrderedSet.size(Be);let Re=0;for(;Re<Me;){se.clear();const Te=Se[t.OrderedSet.getAt(Be,Re)],Ve=be[Te];for(se.add(_e.value(Te)),Re++;Re<Me;){const ke=Se[t.OrderedSet.getAt(Be,Re)];if(be[ke]!==Ve)break;se.add(_e.value(ke)),Re++}const qe=se.has("");for(let ke=xe[Ve],ze=xe[Ve+1];ke<ze;ke++){const We=t.OrderedSet.indexOf(Se,ke);if(We>=0){const Je=_e.value(ke);(!me||qe||!Je||se.has(Je))&&(we[we.length]=We)}}}ee[ee.length]={unit:ye.unit,indices:k(we)}}else ee[ee.length]=ye}return v(le.structure,ee)}v.extendToWholeResidues=j;function H(le){switch(le.kind){case c.Unit.Kind.Atomic:return le.model.atomicHierarchy.chainAtomSegments;case c.Unit.Kind.Spheres:return le.model.coarseHierarchy.spheres.chainElementSegments;case c.Unit.Kind.Gaussians:return le.model.coarseHierarchy.gaussians.chainElementSegments}}function G(le){return le.unit.elements.length===t.OrderedSet.size(le.indices)}function z(le,me,ee){const{index:se}=H(le),ye=le.elements;let Se=0;for(let _e=0,be=ye.length;_e<be;_e++){const xe=ye[_e],we=se[xe];me.has(we)&&Se++}if(Se===le.elements.length){ee[ee.length]={unit:le,indices:t.Interval.ofBounds(0,Se)};return}const Ae=new Int32Array(Se);Se=0;for(let _e=0,be=ye.length;_e<be;_e++){const xe=ye[_e],we=se[xe];me.has(we)&&(Ae[Se++]=_e)}Ae.length>0&&(ee[ee.length]={unit:le,indices:k(Ae)})}function W(le,me,ee,se,ye){const{index:Se}=H(le.elements[0].unit),Ae=new Set;for(let _e=me;_e<ee;_e++){const be=le.elements[_e],xe=be.indices,we=be.unit.elements;for(let Be=0,Me=t.OrderedSet.size(xe);Be<Me;Be++)Ae.add(Se[we[t.OrderedSet.getAt(xe,Be)]])}if(se){const _e=le.elements[0].unit;for(const be of le.structure.units)c.Unit.areSameChainOperatorGroup(be,_e)&&z(be,Ae,ye)}else for(let _e=me;_e<ee;_e++)z(le.elements[_e].unit,Ae,ye)}function X(le){const me=[];for(let ee=0,se=le.elements.length;ee<se;ee++){const ye=le.elements[ee];if(c.Unit.Traits.is(ye.unit.traits,c.Unit.Trait.Partitioned)){const Se=ee;for(;ee<se&&c.Unit.areSameChainOperatorGroup(le.elements[ee].unit,ye.unit);)ee++;const Ae=ee;ee--,W(le,Se,Ae,!0,me)}else G(ye)?me[me.length]=ye:W(le,ee,ee+1,!1,me)}return v(le.structure,me)}v.extendToWholeChains=X;function Y(le){return`${le.unit.model.id}|${f.StructureProperties.entity.id(le)}`}function K(le){const me=[],ee=s.Location.create(le.structure),se=new Set,{units:ye}=le.structure;for(let Se=0,Ae=le.elements.length;Se<Ae;Se++){const _e=le.elements[Se];ee.unit=_e.unit,ee.element=_e.unit.elements[0],se.add(Y(ee))}for(let Se=0,Ae=ye.length;Se<Ae;++Se){const _e=ye[Se];if(ee.unit=_e,ee.element=_e.elements[0],se.has(Y(ee))){const be=t.OrderedSet.ofBounds(0,_e.elements.length);me[me.length]={unit:_e,indices:be}}}return v(le.structure,me)}v.extendToWholeEntities=K;function Q(le){const me=[],ee=new Set,{units:se}=le.structure;for(let ye=0,Se=le.elements.length;ye<Se;ye++){const Ae=le.elements[ye];ee.add(Ae.unit.model.id)}for(let ye=0,Se=se.length;ye<Se;++ye){const Ae=se[ye];if(ee.has(Ae.model.id)){const _e=t.OrderedSet.ofBounds(0,Ae.elements.length);me[me.length]={unit:Ae,indices:_e}}}return v(le.structure,me)}v.extendToWholeModels=Q;function J(le,me){const ee=[];for(let se=0,ye=t.OrderedSet.size(me);se<ye;++se)ee.push(le[t.OrderedSet.getAt(me,se)]);return t.SortedArray.ofSortedArray(ee)}function ae(le,me){return t.SortedArray.isRange(le)&&t.SortedArray.areEqual(le,me)?t.Interval.ofLength(le.length):k(t.S
15ortedArray.indicesOf(le,me))}function te(le){const me=[],ee=new Map;for(let se=0,ye=le.elements.length;se<ye;se++){const Se=le.elements[se],{model:Ae}=Se.unit,_e=J(Se.unit.elements,Se.indices);ee.has(Ae)?ee.set(Ae,t.SortedArray.union(_e,ee.get(Ae))):ee.set(Ae,_e)}for(let se=0,ye=le.structure.units.length;se<ye;++se){const Se=le.structure.units[se],Ae=ee.get(Se.model);if(!Ae)continue;const _e=ae(Se.elements,Ae);t.OrderedSet.size(_e)&&(me[me.length]={unit:Se,indices:_e})}return v(le.structure,me)}v.extendToAllInstances=te;function ne(le){const me=[],ee=new Set,{units:se}=le.structure;for(let ye=0,Se=le.elements.length;ye<Se;ye++){const Ae=le.elements[ye];ee.add(Ae.unit.conformation.operator.name)}for(let ye=0,Se=se.length;ye<Se;++ye){const Ae=se[ye];if(ee.has(Ae.conformation.operator.name)){const _e=t.OrderedSet.ofBounds(0,Ae.elements.length);me[me.length]={unit:Ae,indices:_e}}}return v(le.structure,me)}v.extendToWholeOperators=ne;function $(le,me){const ee=new Map,se=le.structure.lookup3d,ye=(0,r.Vec3)();w(le,Ae=>{Ae.unit.conformation.position(Ae.element,ye);const _e=se.find(ye[0],ye[1],ye[2],me);for(let be=0,xe=_e.count;be<xe;++be){const we=_e.units[be],Be=_e.indices[be];let Me=ee.get(we.id);Me||(Me=new Set,ee.set(we.id,Me)),Me.add(Be)}});const Se=[];for(const[Ae,_e]of ee.entries()){const be=le.structure.unitMap.get(Ae),xe=Array.from(_e);(0,o.sortArray)(xe),Se.push({unit:be,indices:k(xe)})}return{kind:"element-loci",structure:le.structure,elements:Se}}v.extendToRadius=$;const ie=new y.BoundaryHelper("98"),Z=(0,r.Vec3)(),re=(0,g.Sphere3D)();function oe(le){const{isIdentity:me,matrix:ee}=le.conformation.operator,{sphere:se}=le.boundary;return me?se:g.Sphere3D.transform(re,se,ee)}function ce(le,me){if(l(le))return g.Sphere3D.copy(me||(0,g.Sphere3D)(),le.structure.boundary.sphere);ie.reset();for(const ee of le.elements){if(G(ee)){ie.includeSphere(oe(ee.unit));continue}const{indices:se}=ee,{elements:ye,conformation:Se}=ee.unit;for(let Ae=0,_e=t.OrderedSet.size(se);Ae<_e;Ae++){const be=ye[t.OrderedSet.getAt(se,Ae)];Se.position(be,Z),ie.includePositionRadius(Z,Se.r(be))}}ie.finishedIncludeStep();for(const ee of le.elements){if(G(ee)){ie.radiusSphere(oe(ee.unit));continue}const{indices:se}=ee,{elements:ye,conformation:Se}=ee.unit;for(let Ae=0,_e=t.OrderedSet.size(se);Ae<_e;Ae++){const be=ye[t.OrderedSet.getAt(se,Ae)];Se.position(be,Z),ie.radiusPositionRadius(Z,Se.r(be))}}return ie.getSphere(me)}v.getBoundingSphere=ce;function ue(le,me){const ee=ce(le,me?.sphere),se=g.Box3D.fromSphere3D(me?.box||(0,g.Box3D)(),ee);return{sphere:ee,box:se}}v.getBoundary=ue;const pe=(0,r.Vec3)();function he(le,me,ee=0){let se=ee;for(const ye of le.elements){const{indices:Se}=ye,{elements:Ae,conformation:_e}=ye.unit,be=t.OrderedSet.size(Se);for(let xe=0;xe<be;xe++){const we=Ae[t.OrderedSet.getAt(Se,xe)];_e.position(we,pe),r.Vec3.toArray(pe,me,se+xe*3)}se+=be*3}return me}v.toPositionsArray=he;function fe(le){const me=S(le),ee=he(le,new Float32Array(3*me));return h.PrincipalAxes.ofPositions(ee)}v.getPrincipalAxes=fe;function de(le){let me=0;le.forEach(ye=>{me+=S(ye)});const ee=new Float32Array(3*me);let se=0;return le.forEach(ye=>{he(ye,ee,se),se+=S(ye)*3}),h.PrincipalAxes.ofPositions(ee)}v.getPrincipalAxesMany=de;function ge(le,me){return c.Unit.isAtomic(le)?le.model.atomicHierarchy.atomSourceIndex.value(me):me}function Ce(le){if(v.isEmpty(le))return n.MolScriptBuilder.struct.generator.empty();const me=le.structure.models,ee=new Map;for(const _e of le.elements){const{indices:be}=_e,{elements:xe}=_e.unit,we=_e.unit.conformation.operator.name;let Be;ee.has(we)?Be=ee.get(we).xs:(Be=e.UniqueArray.create(),ee.set(we,{modelLabel:_e.unit.model.label,modelIndex:_e.unit.model.modelNum,xs:Be}));for(let Me=0,Re=t.OrderedSet.size(be);Me<Re;Me++){const Te=ge(_e.unit,xe[t.OrderedSet.getAt(be,Me)]);e.UniqueArray.add(Be,Te,Te)}}const se=[],ye=ee.keys();for(;;){const _e=ye.next();if(_e.done)break;const be=ee.get(_e.value);se.push(ve(_e.value,be.xs.array,me.length>1,be.modelLabel,be.modelIndex))}const Se=new Map;for(let _e=0,be=se.length;_e<be;++_e){const xe=se[_e],Be=`${(0,o.hash2)((0,o.hashFnv32a)(xe.atom.ranges),(0,o.hashFnv32a)(xe.atom.set))}|${xe.entity?xe.entity.modelLabel+xe.entity.modelIndex:""}`;Se.has(Be)?Se.get(Be).chain.opName.push(...xe.chain.opName):Se.set(Be,xe)}const Ae=[];return Se.forEach(_e=>{const{ranges:be,set:xe}=_e.atom,{opName:we}=_e.chain,Be=n.MolScriptBuilder.struct.atomProperty.core.operatorName(),Me=n.MolScriptBuilder.struct.atomProperty.core.sourceIndex(),Re=[];xe.length>0&&(Re[Re.length]=n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.core.type.set(xe),Me]));for(let Te=0,Ve=be.length/2;Te<Ve;Te++)Re[Re.length]=n.MolScriptBuilder.core.rel.inRange([Me,be[2*Te],be[2*Te+1]]);if(_e.entity){const{modelLabel:Te,modelIndex:Ve}=_e.entity;Ae.push(n.MolScriptBuilder.struct.generator.atomGroups({"atom-test":Re.length>1?n.MolScriptBuilder.core.logic.or(Re):Re[0],"chain-test":we.length>1?n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.core.type.set(we),Be]):n.MolScriptBuilder.core.rel.eq([Be,we[0]]),"entity-test":n.MolScriptBuilder.core.logic.and([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.struct.atomProperty.core.modelLabel(),Te]),n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.struct.atomProperty.core.modelIndex(),Ve])])}))}else Ae.push(n.MolScriptBuilder.struct.generator.atomGroups({"atom-test":Re.length>1?n.MolScriptBuilder.core.logic.or(Re):Re[0],"chain-test":we.length>1?n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.core.type.set(we),Be]):n.MolScriptBuilder.core.rel.eq([Be,we[0]])}))}),n.MolScriptBuilder.struct.modifier.union([Ae.length===1?Ae[0]:n.MolScriptBuilder.struct.combinator.merge(Ae.map(_e=>n.MolScriptBuilder.struct.modifier.union([_e])))])}v.toExpression=Ce;function ve(le,me,ee,se,ye){(0,o.sortArray)(me);const Se=[],Ae=[];let _e=0;const be=me.length;for(;_e<be;){const xe=_e;for(_e++;_e<be&&me[_e-1]+1===me[_e];)_e++;const we=_e;if(we-xe>12)Se[Se.length]=me[xe],Se[Se.length]=me[we-1];else for(let Be=xe;Be<we;Be++)Ae[Ae.length]=me[Be]}return ee?{atom:{set:Ae,ranges:Se},chain:{opName:[le]},entity:{modelLabel:se,modelIndex:ye}}:{atom:{set:Ae,ranges:Se},chain:{opName:[le]}}}})(m||(ip.Loci=m={})),ip}var zp={},fO;function lee(){if(fO)return zp;fO=1,Object.defineProperty(zp,"__esModule",{value:!0}),zp.Stats=void 0;const e=at(),t=Zn(),r=kT(),n=GD();var i;return(function(c){function o(){return{elementCount:0,conformationCount:0,residueCount:0,chainCount:0,unitCount:0,structureCount:0,firstElementLoc:n.Location.create(void 0),firstConformationLoc:n.Location.create(void 0),firstResidueLoc:n.Location.create(void 0),firstChainLoc:n.Location.create(void 0),firstUnitLoc:n.Location.create(void 0),firstStructureLoc:n.Location.create(void 0)}}c.create=o;function s(a,d,p){const u=a.get(d)||0;a.set(d,u+p)}function h(a,d,p){const{indices:u,unit:m}=p,{elements:v}=m,b=e.OrderedSet.size(u),P=new Map,C=new Map;if(b>0&&n.Location.set(a.firstElementLoc,d,m,v[e.OrderedSet.start(u)]),b===v.length)a.unitCount+=1,a.unitCount===1&&n.Location.set(a.firstUnitLoc,d,m,v[e.OrderedSet.start(u)]);else if(b===1){if(t.Unit.Traits.is(m.traits,t.Unit.Trait.MultiChain))return;a.elementCount+=1,a.elementCount===1&&n.Location.set(a.firstElementLoc,d,m,v[e.OrderedSet.start(u)])}else if(t.Unit.isAtomic(m)){const{index:l,offsets:S}=m.model.atomicHierarchy.residueAtomSegments,{label_alt_id:T}=m.model.atomicHierarchy.atoms;let A=0;for(;A<b;){P.clear();let x=0;const M=v[e.OrderedSet.getAt(u,A)],D=l[M];for(s(P,T.value(M),1),++A,++x;A<b;){const V=v[e.OrderedSet.getAt(u,A)];if(l[V]!==D)break;s(P,T.value(V),1),++A,++x}if(S[D+1]-S[D]===x)a.residueCount+=1,a.residueCount===1&&n.Location.set(a.firstResidueLoc,d,m,S[D]);else{C.clear();for(let V=S[D],R=S[D+1];V<R;++V)s(C,T.value(V),1);C.get("")===P.get("")&&P.forEach((V,R)=>
15{if(C.get(R)===V){if(R!==""&&(a.conformationCount+=1,a.conformationCount===1)){for(let E=S[D],I=S[D+1];E<I;++E)if(R===T.value(E)){n.Location.set(a.firstConformationLoc,d,m,E);break}}x-=V}}),a.elementCount+=x}}}else a.elementCount+=b,a.elementCount===1&&n.Location.set(a.firstElementLoc,d,m,v[e.OrderedSet.start(u)])}function f(a,d,p){const{indices:u,unit:m}=p,v=e.OrderedSet.size(u);if(v===0)return;const{elements:b}=m;if(!t.Unit.Traits.is(m.traits,t.Unit.Trait.MultiChain)){v===b.length&&(a.chainCount+=1,a.chainCount===1&&n.Location.set(a.firstChainLoc,d,m,b[e.OrderedSet.start(u)]));return}const P=t.Unit.isAtomic(m)?m.model.atomicHierarchy.chainAtomSegments:t.Unit.isSpheres(m)?m.model.coarseHierarchy.spheres.chainElementSegments:t.Unit.isGaussians(m)?m.model.coarseHierarchy.gaussians.chainElementSegments:void 0;if(!P){console.warn("StructureElement loci stats: unknown unit type");return}const{index:C,offsets:l}=P;let S=0;for(;S<v;){let T=0;const A=b[e.OrderedSet.getAt(u,S)],x=C[A];for(++S,++T;S<v;){const M=b[e.OrderedSet.getAt(u,S)];if(C[M]!==x)break;++S,++T}l[x+1]-l[x]===T?(a.chainCount+=1,a.chainCount===1&&n.Location.set(a.firstChainLoc,d,m,l[x])):v===1&&(a.elementCount+=1,a.elementCount===1&&n.Location.set(a.firstElementLoc,d,m,A))}}function y(a,d,p,u,m){let v=p[u];const b=t.Unit.isAtomic(v.unit)?v.unit.model.atomicHierarchy.chainAtomSegments:t.Unit.isSpheres(v.unit)?v.unit.model.coarseHierarchy.spheres.chainElementSegments:t.Unit.isGaussians(v.unit)?v.unit.model.coarseHierarchy.gaussians.chainElementSegments:void 0;if(!b){console.warn("StructureElement loci stats: unknown unit type");return}const{index:P,offsets:C}=b,l=new Map;for(let T=u;T<m;T++){v=p[T];const{indices:A,unit:x}=v,M=e.OrderedSet.size(A);if(M===0)continue;const{elements:D}=x;if(!t.Unit.Traits.is(x.traits,t.Unit.Trait.MultiChain)){const R=D[e.OrderedSet.start(A)];s(l,P[R],D.length);continue}let V=0;for(;V<M;){let R=0;const E=D[e.OrderedSet.getAt(A,V)],I=P[E];for(++V,++R;V<M;){const B=D[e.OrderedSet.getAt(A,V)];if(P[B]!==I)break;++V,++R}s(l,I,R)}}let S=-1;if(l.forEach((T,A)=>{C[A+1]-C[A]===T&&(a.chainCount+=1,a.chainCount===1&&(S=A))}),!(S<0))for(let T=u;T<m;T++){v=p[T];const{indices:A,unit:x}=v,M=e.OrderedSet.size(A);if(M===0)continue;const{elements:D}=x,V=0;for(;V<M;){const R=D[e.OrderedSet.getAt(A,V)];if(P[R]===S){n.Location.set(a.firstChainLoc,d,x,R);return}}}}function _(a){const d=o();if(r.Loci.isEmpty(a))return d;let p=!1;if(r.Loci.isWholeStructure(a)){if(d.structureCount+=1,d.structureCount===1){const{unit:u,indices:m}=a.elements[0];n.Location.set(d.firstStructureLoc,a.structure,u,u.elements[e.OrderedSet.min(m)])}}else for(const u of a.elements)h(d,a.structure,u),t.Unit.Traits.is(u.unit.traits,t.Unit.Trait.Partitioned)?p=!0:f(d,a.structure,u);if(p)for(let u=0,m=a.elements.length;u<m;u++){const v=a.elements[u];if(!t.Unit.Traits.is(v.unit.traits,t.Unit.Trait.Partitioned))continue;const b=u;for(;u<m&&t.Unit.areSameChainOperatorGroup(a.elements[u].unit,v.unit);)u++;const P=u;u--,P-b===1?f(d,a.structure,v):y(d,a.structure,a.elements,b,P)}return d}c.ofLoci=_;function g(a,d,p){return d.elementCount===1&&p.elementCount===0?n.Location.copy(a.firstElementLoc,d.firstElementLoc):d.elementCount===0&&p.elementCount===1&&n.Location.copy(a.firstElementLoc,p.firstElementLoc),d.conformationCount===1&&p.conformationCount===0?n.Location.copy(a.firstConformationLoc,d.firstConformationLoc):d.conformationCount===0&&p.conformationCount===1&&n.Location.copy(a.firstConformationLoc,p.firstConformationLoc),d.residueCount===1&&p.residueCount===0?n.Location.copy(a.firstResidueLoc,d.firstResidueLoc):d.residueCount===0&&p.residueCount===1&&n.Location.copy(a.firstResidueLoc,p.firstResidueLoc),d.chainCount===1&&p.chainCount===0?n.Location.copy(a.firstChainLoc,d.firstChainLoc):d.chainCount===0&&p.chainCount===1&&n.Location.copy(a.firstChainLoc,p.firstChainLoc),d.unitCount===1&&p.unitCount===0?n.Location.copy(a.firstUnitLoc,d.firstUnitLoc):d.unitCount===0&&p.unitCount===1&&n.Location.copy(a.firstUnitLoc,p.firstUnitLoc),d.structureCount===1&&p.structureCount===0?n.Location.copy(a.firstStructureLoc,d.firstStructureLoc):d.structureCount===0&&p.structureCount===1&&n.Location.copy(a.firstStructureLoc,p.firstStructureLoc),a.elementCount=d.elementCount+p.elementCount,a.conformationCount=d.conformationCount+p.conformationCount,a.residueCount=d.residueCount+p.residueCount,a.chainCount=d.chainCount+p.chainCount,a.unitCount=d.unitCount+p.unitCount,a.structureCount=d.structureCount+p.structureCount,a}c.add=g})(i||(zp.Stats=i={})),zp}var ho={},mO;function dee(){if(mO)return ho;mO=1,Object.defineProperty(ho,"__esModule",{value:!0}),ho.property=r,ho.atomicProperty=i,ho.coarseProperty=c,ho.residueIndex=o,ho.chainIndex=s,ho.entityIndex=h;const e=Zn(),t=Tl();function r(f){return f}function n(f){throw new Error(`Property only available for ${f} models.`)}function i(f){return y=>e.Unit.isAtomic(y.unit)?f(y):n("atomic")}function c(f){return y=>e.Unit.isCoarse(y.unit)?f(y):n("coarse")}function o(f){return e.Unit.isAtomic(f.unit)?f.unit.residueIndex[f.element]:-1}function s(f){return e.Unit.isAtomic(f.unit)?f.unit.chainIndex[f.element]:-1}function h(f){return t.StructureProperties.entity.key(f)}return ho}var pO;function fee(){return pO||(pO=1,(function(e){Object.defineProperty(e,"__esMo
15dule",{value:!0});const t=At;t.__exportStar(GD(),e),t.__exportStar(kT(),e),t.__exportStar(nI(),e),t.__exportStar(rI(),e),t.__exportStar(lee(),e),t.__exportStar(dee(),e)})(J2)),J2}var hO;function xl(){if(hO)return rp;hO=1,Object.defineProperty(rp,"__esModule",{value:!0}),rp.StructureElement=void 0;const t=At.__importStar(fee());return rp.StructureElement=t,rp}var go={},yo={},vo={},gx={},LC={},Ds={},gO;function Or(){if(gO)return Ds;gO=1,Object.defineProperty(Ds,"__esModule",{value:!0}),Ds.TokenBuilder=void 0,Ds.Tokenizer=t,Ds.trimStr=r;const e=K$();function t(i){return{data:i,position:0,length:i.length,lineNumber:1,tokenStart:0,tokenEnd:0}}(function(i){function c(S){return S.data.substring(S.tokenStart,S.tokenEnd)}i.getTokenString=c;function o(S){S.position=0,S.lineNumber=1,S.tokenStart=0,S.tokenEnd=0}i.reset=o;function s(S){const{data:T}=S;for(;S.position<S.length;)switch(T.charCodeAt(S.position)){case 10:return S.tokenEnd=S.position,++S.position,++S.lineNumber,!0;case 13:return S.tokenEnd=S.position,++S.position,++S.lineNumber,T.charCodeAt(S.position)===10&&++S.position,!0;default:++S.position;break}return S.tokenEnd=S.position,S.tokenStart!==S.tokenEnd}i.eatLine=s;function h(S){S.tokenStart=S.position}i.markStart=h;function f(S){return S.tokenStart=S.position,s(S)}i.markLine=f;function y(S){return f(S),c(S)}i.readLine=y;function _(S){f(S);const T=S.position;return l(S,S.tokenStart,S.tokenEnd),S.position=T,c(S)}i.readLineTrim=_;function g(S,T,A){let x=0;for(let M=0;M<T;M++){if(!f(S))return x;n.addUnchecked(A,S.tokenStart,S.tokenEnd),x++}return x}function a(S,T){const A=n.create(S.data,T*2);return g(S,T,A),A}i.markLines=a;function d(S,T){const A=[];for(let x=0;x<T;x++)A.push(i.readLine(S));return A}i.readLines=d;async function p(S,T,A,x=1e5){const M=n.create(S.data,T*2);let D=0;return await(0,e.chunkedSubtask)(A,x,S,(V,R)=>{const E=Math.min(T-D,V);return g(R,E,M),D+=E,E},(V,R)=>V.update({message:"Parsing...",current:R.position,max:R.length})),M}i.readLinesAsync=p;function u(S){const T=i(S),A=n.create(T.data,Math.max(S.length/80,2));for(;f(T);)n.add(A,T.tokenStart,T.tokenEnd);return A}i.readAllLines=u;function m(S,T,A){let x=0;for(let M=0;M<T;M++){if(!f(S))return x;n.add(A,S.tokenStart,S.tokenEnd),x++}return x}async function v(S,T,A=1e5){const x=i(S),M=n.create(x.data,Math.max(S.length/80,2));return await(0,e.chunkedSubtask)(T,A,x,(D,V)=>(m(V,D,M),V.position<V.length?D:0),(D,V)=>D.update({message:"Parsing...",current:V.position,max:V.length})),M}i.readAllLinesAsync=v;function b(S){for(;S.position<S.length;)switch(S.data.charCodeAt(S.position)){case 9:case 10:case 13:case 32:S.tokenEnd=S.position;return;default:++S.position;break}S.tokenEnd=S.position}i.eatValue=b;function P(S){let T=-1;for(;S.position<S.length;){const A=S.data.charCodeAt(S.position);switch(A){case 9:case 32:T=A,++S.position;break;case 10:T!==13&&++S.lineNumber,T=A,++S.position;break;case 13:T=A,++S.position,++S.lineNumber;break;default:return T}}return T}i.skipWhitespace=P;function C(S){let T=-1;for(;S.position<S.length;){const A=S.data.charCodeAt(S.position);switch(A){case 9:case 32:T=A,++S.position;break;default:return T}}return T}i.skipStrictWhitespace=C;function l(S,T,A){const{data:x}=S;let M=T,D=A-1,V=x.charCodeAt(M);for(;(V===9||V===32)&&M<=D;)V=x.charCodeAt(++M);for(V=x.charCodeAt(D);(V===9||V===32)&&D>=M;)V=x.charCodeAt(--D);return S.tokenStart=M,S.tokenEnd=D+1,S.position=A,S}i.trim=l})(t||(Ds.Tokenizer=t={}));function r(i,c,o){let s=c,h=o-1,f=i.charCodeAt(s);for(;(f===9||f===32)&&s<=h;)f=i.charCodeAt(++s);for(f=i.charCodeAt(h);(f===9||f===32)&&h>=s;)f=i.charCodeAt(--h);return i.substring(s,h+1)}var n;return(function(i){function c(y){const _=new Uint32Array(1.61*y.indices.length|0);_.set(y.indices),y.indices=_,y.indicesLenMinus2=_.length-2|0}function o(y,_,g){const a=y;a.offset>a.indicesLenMinus2&&c(a),a.indices[a.offset++]=_,a.indices[a.offset++]=g,y.count++}i.add=o;function s(y,_){o(y,_.tokenStart,_.tokenEnd)}i.addToken=s;function h(y,_,g){y.indices[y.offset++]=_,y.indices[y.offset++]=g,y.count++}i.addUnchecked=h;function f(y,_){return _=Math.max(10,_),{data:y,indicesLenMinus2:_-2|0,count:0,offset:0,indices:new Uint32Array(_)}}i.create=f})(n||(Ds.TokenBuilder=n={})),Ds}var Hp={},yO;function Tr(){if(yO)return Hp;yO=1,Object.defineProperty(Hp,"__esModule",{value:!0}),Hp.ReaderResult=void 0;var e;return(function(t){function r(o,s=-1){return new i(o,s)}t.error=r;function n(o,s=[]){return new c(o,s)}t.success=n;class i{toString(){return this.line>=0?`[Line ${this.line}] ${this.message}`:this.message}constructor(s,h){this.message=s,this.line=h,this.isError=!0}}t.Error=i;class c{constructor(s,h){this.result=s,this.warnings=h,this.isError=!1}}t.Success=c})(e||(Hp.ReaderResult=e={})),Hp}var vO;function mee(){if(vO)return LC;vO=1,Object.defineProperty(LC,"__esModule",{value:!0}),LC.parseCifText=U;const t=At.__importStar(bT()),r=Or(),n=Tr(),i=nt();var c;(function(q){q[q.Data=0]="Data",q[q.Save=1]="Save",q[q.Loop=2]="Loop",q[q.Value=3]="Value",q[q.ColumnName=4]="ColumnName",q[q.Comment=5]="Comment",q[q.End=6]="End"})(c||(c={}));function o(q){for(;q.position<q.length;)switch(q.data.charCodeAt(q.position)){case 9:case 10:case 13:case 32:q.tokenEnd=q.position;return;default:++q.position;break}q.tokenEnd=q.position}function s(q,N){let k,j;for(++q.position;q.position<q.length;)if(j=q.data.charCodeAt(q.position),j===N)switch(k=q.data.charCodeAt(q.position+1),k){case 9:case 10:case 13:case 32:q.tokenStart++,q.tokenEnd=q.position,q.isEscaped=!0,++q.position;return;default:if(!Number.isFinite(k)){q.tokenStart++,q.tokenEnd=q.position,q.isEscaped=!0,++q.position;return}++q.position;break}else{if(j===10||j===13){q.tokenEnd=q.position;return}++q.position}q.tokenEnd=q.position}function h(q){for(q.position+=3;q.position<q.length;){if(q.data.charCodeAt(q.position)===39&&a(q)){q.tokenStart+=3,q.tokenEnd=q.position,q.isEscaped=!0,q.position+=3;return}++q.position}q.tokenEnd=q.position}function f(q){let N=59,k=q.position+1,j;for(;k<q.length;)if(j=q.data.charCodeAt(k),j===59&&(N===10||N===13)){for(q.position=k+1,q.tokenStart++,k--,j=q.data.charCodeAt(k);j===10||j===13;)k--,j=q.data.charCodeAt(k);q.tokenEnd=k+1,q.isEscaped=!0;return}else(j===13||j===10&&N!==13)&&q.lineNumber++,N=j,++k;return q.position=k,N}function y(q){for(;q.position<q.length;)if(q.data.charCodeAt(q.position)===93){++q.position,q.tokenEnd=q.position,q.isImportGet=!1;return}else++q.position}function _(q){for(;q.position<q.length;){const N=q.data.charCodeAt(q.position);if(N===10||N===13)return;++q.position}}function g(q){let N=10;for(;q.position<q.length;){const k=q.data.charCodeAt(q.position);switch(k){case 9:case 32:N=k,++q.position;break;case 10:N!==13&&++q.lineNumber,N=k,++q.position;break;case 13:N=k,++q.position,++q.lineNumber;break;default:return N}}return N}function a(q){return!(q.length-q.position<2||q.data.charCodeAt(q.position+1)!==39||q.data.charCodeAt(q.position+2)!==39)}function d(q){let N=q.data.charCodeAt(q.tokenStart);return!(N!==68&&N!==100||(N=q.data.charCodeAt(q.tokenStart+1),N!==65&&N!==97)||(N=q.data.charCodeAt(q.tokenStart+2),N!==84&&N!==116)||(N=q.data.charCodeAt(q.tokenStart+3),N!==65&&N!==97))}function p(q){let N=q.data.charCodeAt(q.tokenStart);return!(N!==83&&N!==115||(N=q.data.charCodeAt(q.tokenStart+1),N!==65&&N!==97)||(N=q.data.charCodeAt(q.tokenStart+2),N!==86&&N!==118)||(N=q.data.charCodeAt(q.tokenStart+3),N!==69&&N!==101))}function u(q){if(q.tokenEnd-q.tokenStart!==5)return!1;let N=q.data.charCodeAt(q.tokenStart);return!(N!==76&&N!==108||(N=q.data.charCodeAt(q.tokenStart+1),N!==79&&N!==111)||(N=q.data.charCodeAt(q.tokenStart+2),N!==79&&N!==111)||(N=q.data.charCodeAt(q.tokenStart+3),N!==80&&N!==112))}function m(q){return!(q.tokenEnd-q.tokenStart!==11||q.data.charCodeAt(q.tokenStart+1)!==105||q.data.charCodeAt(q.tokenStart+2)!==109||q.data.charCodeAt(q.tokenStart+3)!==112||q.data.charCodeAt(q.tokenStart+4)!==111||q.data.charCodeAt(q.tokenStart+5)!==114||q.data.charCodeAt(q.tokenStart+6)!==116||q.data.charCodeAt(q.tokenStart+7)!==46||q.data.charCodeAt(q.tokenStart+8)!==103||q.data.charCodeAt(q.tokenStart+9)!==101||q.data.charCodeAt(q.tokenStart+10)!==116)}function v(q,N,k){let j;const H=k-N,G=q.tokenStart-N,z=q.tokenEnd-q.tokenStart;if(z<H)return!1;for(j=N;j<k;++j)if(q.data.charCodeAt(j)!==q.data.charCodeAt(j+G))return!1;return H===z||q.data.charCodeAt(j+G)===46}function b(q){let N;for(N=q.tokenStart;N<q.tokenEnd;++N)if(q.data.charCodeAt(N)===46)return N;return N}function P(q,N){return q.data.substring(q.tokenStart,N)}function C(q){let N;for(N=q.tokenStart;N<q.tokenEnd;++N)if(q.data.charCodeAt(N)===46)return!1;return!0}function l(q){return q.data.substring(q.tokenStart,q.tokenEnd)}function S(q){const N=g(q);if(q.position>=q.length){q.tokenType=c.End;return}q.tokenStart=q.position,q.tokenEnd=q.position,q.isEscaped=!1;const k=q.data.charCodeAt(q.position);switch(k){case 35:_(q),q.tokenType=c.Comment;break;case 39:if(a(q)){h(q),q.tokenType=c.Value;break}case 34:s(q,k),q.tokenType=c.Value;break;case 59:N===10||N===13?f(q):o(q),q.tokenType=c.Value;break;default:q.isImportGet?y(q):o(q),q.isEscaped?q.tokenType=c.Value:q.data.charCodeAt(q.tokenStart)===95?(q.inSaveFrame&&m(q)&&(q.isImportGet=!0),q.tokenType=c.ColumnName):q.tokenEnd-q.tokenStart>=5&&q.data.charCodeAt(q.tokenStart+4)===95?d(q)?q.tokenType=c.Data:p(q)?q.tokenType=c.Save:u(q)?q.tokenType=c.Loop:q.tokenType=c.Value:q.tokenType=c.Value;break}}function T(q){for(S(q);q.tokenType===c.Comment;)S(q)}function A(q,N){return{data:q,length:q.length,position:0,tokenStart:0,tokenEnd:0,tokenType:c.End,lineNumber:1,isEscaped:!1,isImportGet:!1,inSaveFrame:!1,runtimeCtx:N}}function x(){return{categoryNames:[],categoryData:Object.create(null)}}function M(q,N){const k=Object.create(null);for(const j of q){const H=N[j];k[j]=t.CifCategory(H.name,H.rowCount,H.fieldNames,H.fields)}return k}function D(q,N,k){return t.CifBlock(q.categoryNames,M(q.categoryNames,q.categoryData),N,k)}function V(q,N){return t.CifBlock(q.categoryNames,M(q.categoryNames,q.categoryData),N)}function R(q,N,k,j,H){if(N in q.categoryData){const G=q.categoryData[N];G.fieldNames.push(...j),Object.assign(G.fields,H)}else q.categoryData[N]={name:N,rowCount:k,fieldNames:j,fields:H},q.categoryNames.push(N)}function E(q,N){const k=q.tokenStart,j=b(q),H=P(q,j),G=Object.create(null),z=[];let W=!0;for(;W;
15){if(q.tokenType!==c.ColumnName||!v(q,k,j)){W=!1;break}const X=l(q).substring(H.length+1);if(T(q),q.tokenType!==c.Value)return{hasError:!0,errorLine:q.lineNumber,errorMessage:"Expected value."};G[X]=t.CifField.ofTokens({data:q.data,indices:[q.tokenStart,q.tokenEnd],count:1}),z[z.length]=X,T(q)}return R(N,H.substr(1),1,z,G),{hasError:!1,errorLine:0,errorMessage:""}}function I(q,N){const{tokenizer:k,tokens:j,fieldCount:H}=N;let G=N.tokenCount,z=0;for(;k.tokenType===c.Value&&z<q;)r.TokenBuilder.add(j[G++%H],k.tokenStart,k.tokenEnd),T(k),z++;return N.tokenCount=G,z}function B(q,N){return q.update({message:"Parsing...",current:N.tokenizer.position,max:N.tokenizer.data.length})}async function w(q,N){const k=q.lineNumber;T(q);const j=P(q,b(q)),H=C(q),G=[];for(;q.tokenType===c.ColumnName;)G[G.length]=H?l(q):l(q).substring(j.length+1),T(q);const z=j==="_atom_site"?q.data.length/100|0:32,W=[],X=G.length;for(let Q=0;Q<X;Q++)W[Q]=r.TokenBuilder.create(q.data,z);const Y={fieldCount:X,tokenCount:0,tokenizer:q,tokens:W};if(await(0,i.chunkedSubtask)(q.runtimeCtx,1e6,Y,I,B),Y.tokenCount%X!==0)return{hasError:!0,errorLine:q.lineNumber,errorMessage:`The number of values for loop starting at line ${k} is not a multiple of the number of columns.`};const K=Y.tokenCount/X|0;if(H)for(let Q=0;Q<X;Q++){const J={"":t.CifField.ofTokens(W[Q])};R(N,G[Q].substr(1),K,[""],J)}else{const Q=Object.create(null);for(let J=0;J<X;J++)Q[G[J]]=t.CifField.ofTokens(W[J]);R(N,j.substr(1),K,G,Q)}return{hasError:!1,errorLine:0,errorMessage:""}}function O(q,N){return n.ReaderResult.error(N,q)}function F(q){return n.ReaderResult.success(q)}async function L(q,N){const k=[],j=A(q,N);let H="",G=x(),z=[],W=x();const X=t.CifSaveFrame(W.categoryNames,M(W.categoryNames,W.categoryData),"");let Y="";for(N.update({message:"Parsing...",current:0,max:q.length}),T(j);j.tokenType!==c.End;){const K=j.tokenType;if(K===c.Data){if(j.inSaveFrame)return O(j.lineNumber,"Unexpected data block inside a save frame.");G.categoryNames.length>0&&k.push(D(G,H,z)),H=q.substring(j.tokenStart+5,j.tokenEnd),G=x(),z=[],T(j)}else if(K===c.Save){if(j.tokenEnd-j.tokenStart===5)W.categoryNames.length>0&&(z[z.length]=V(W,Y)),j.inSaveFrame=!1;else{if(j.inSaveFrame)return O(j.lineNumber,"Save frames cannot be nested.");j.inSaveFrame=!0,Y=q.substring(j.tokenStart+5,j.tokenEnd),W=x()}T(j)}else if(K===c.Loop){const Q=await w(j,j.inSaveFrame?W:G);if(Q.hasError)return O(Q.errorLine,Q.errorMessage)}else if(K===c.ColumnName){const Q=E(j,j.inSaveFrame?W:G);if(Q.hasError)return O(Q.errorLine,Q.errorMessage)}else return console.log(j.tokenType,r.Tokenizer.getTokenString(j)),O(j.lineNumber,"Unexpected token. Expected data_, loop_, or data name.")}return j.inSaveFrame?O(j.lineNumber,`Unfinished save frame (${X.header}).`):((G.categoryNames.length>0||z.length>0)&&k.push(D(G,H,z)),F(t.CifFile(k)))}function U(q){return i.Task.create("Parse CIF",async N=>await L(q,N))}return LC}var NC={},qC={},bO;function pee(){if(bO)return qC;bO=1,Object.defineProperty(qC,"__esModule",{value:!0}),qC.Field=n;const e=lt(),t=MT(),r=La();function n(i){const c=i.mask?(0,t.decode)(i.mask):void 0,o=(0,t.decode)(i.data),s=e.ColumnHelpers.isTypedArray(o),h=s?c?a=>c[a]===e.Column.ValueKinds.Present?""+o[a]:"":a=>""+o[a]:c?a=>c[a]===e.Column.ValueKinds.Present?o[a]:"":a=>o[a],f=s?a=>o[a]:a=>{const d=o[a];return(0,r.parseInt)(d,0,d.length)},y=s?a=>o[a]:a=>{const d=o[a];return(0,r.parseFloat)(d,0,d.length)},_=c?a=>c[a]:a=>e.Column.ValueKinds.Present,g=o.length;return{__array:o,binaryEncoding:i.data.encoding,isDefined:!0,rowCount:g,str:h,int:f,float:y,valueKind:_,areValuesEqual:(a,d)=>o[a]===o[d],toStringArray:a=>e.ColumnHelpers.createAndFillArray(g,h,a),toIntArray:s?a=>e.ColumnHelpers.typedArrayWindow(o,a):a=>e.ColumnHelpers.createAndFillArray(g,f,a),toFloatArray:s?a=>e.ColumnHelpers.typedArrayWindow(o,a):a=>e.ColumnHelpers.createAndFillArray(g,y,a)}}return qC}var UC={},_O;function sX(){if(_O)return UC;_O=1,Object.defineProperty(UC,"__esModule",{value:!0}),UC.decodeMsgPack=t;const e=$s();function t(s){return o({buffer:s,offset:0,dataView:new DataView(s.buffer)})}function r(s,h){const f={};for(let y=0;y<h;y++){const _=o(s);f[_]=o(s)}return f}function n(s,h){const f=new Uint8Array(h),y=s.offset;for(let _=0;_<h;_++)f[_]=s.buffer[_+y];return s.offset+=h,f}function i(s,h){const f=(0,e.utf8Read)(s.buffer,s.offset,h);return s.offset+=h,f}function c(s,h){const f=new Array(h);for(let y=0;y<h;y++)f[y]=o(s);return f}function o(s){const h=s.buffer[s.offset];let f,y;if((h&128)===0)return s.offset++,h;if((h&240)===128)return y=h&15,s.offset++,r(s,y);if((h&240)===144)return y=h&15,s.offset++,c(s,y);if((h&224)===160)return y=h&31,s.offset++,i(s,y);if((h&224)===224)return f=s.dataView.getInt8(s.offset),s.offset++,f;switch(h){case 192:return s.offset++,null;case 194:return s.offset++,!1;case 195:return s.offset++,!0;case 196:return y=s.dataView.getUint8(s.offset+1),s.offset+=2,n(s,y);case 197:return y=s.dataView.getUint16(s.offset+1),s.offset+=3,n(s,y);case 198:return y=s.dataView.getUint32(s.offset+1),s.offset+=5,n(s,y);case 202:return f=s.dataView.getFloat32(s.offset+1),s.offset+=5,f;case 203:return f=s.dataView.getFloat64(s.offset+1),s.offset+=9,f;case 204:return f=s.buffer[s.offset+1],s.offset+=2,f;case 205:return f=s.dataView.getUint16(s.offset+1),s.offset+=3,f;case 206:return f=s.dataView.getUint32(s.offset+1),s.offset+=5,f;case 208:return f=s.dataView.getInt8(s.offset+1),s.offset+=2,f;case 209:return f=s.dataView.getInt16(s.offset+1),s.offset+=3,f;case 210:return f=s.dataView.getInt32(s.offset+1),s.offset+=5,f;case 217:return y=s.dataView.getUint8(s.offset+1),s.offset+=2,i(s,y);case 218:return y=s.dataView.getUint16(s.offset+1),s.offset+=3,i(s,y);case 219:return y=s.dataView.getUint32(s.offset+1),s.offset+=5,i(s,y);case 220:return y=s.dataView.getUint16(s.offset+1),s.offset+=3,c(s,y);case 221:return y=s.dataView.getUint32(s.offset+1),s.offset+=5,c(s,y);case 222:return y=s.dataView.getUint16(s.offset+1),s.offset+=3,r(s,y);case 223:return y=s.dataView.getUint32(s.offset+1),s.offset+=5,r(s,y)}throw new Error("Unknown type 0x"+h.toString(16))}return UC}var SO;function hee(){if(SO)return NC;SO=1,Object.defineProperty(NC,"__esModule",{value:!0}),NC.parseCifBinary=h;const t=At.__importStar(bT()),r=pee(),n=Tr(),i=sX(),c=nt();function o(f,y){for(let _=0;_<2;_++)if(f[_]>y[_])return!1;return!0}function s(f){const y=Object.create(null),_=Object.create(null);for(const g of f.columns)y[g.name]=g;return{rowCount:f.rowCount,name:f.name.substring(1),fieldNames:f.columns.map(g=>g.name),getField(g){const a=y[g];if(a)return _[g]||(_[g]=(0,r.Field)(a)),_[g]}}}function h(f){return c.Task.create("Parse BinaryCIF",async y=>{const _=[0,3];try{const g=(0,i.decodeMsgPack)(f);if(!o(_,g.version.match(/(\d)\.(\d)\.\d/).slice(1).map(d=>+d)))return n.ReaderResult.error(`Unsupported format version. Current ${g.version}, required ${_.join(".")}.`);const a=t.CifFile(g.dataBlocks.map(d=>{const p=Object.create(null);for(const u of d.categories)p[u.name.substring(1)]=s(u);return t.CifBlock(d.categories.map(u=>u.name.substring(1)),p,d.header)}));return n.ReaderResult.success(a)}catch(g){return n.ReaderResult.error(""+g)}})}return NC}var Wp={},CO;function gee(){if(CO)return Wp;CO=1,Object.defineProperty(Wp,"__esModule",{value:!0}),Wp.CCD_Schema=void 0;var t=lt().Column.Schema;const r=t.str,n=t.float,i=t.List,c=t.lstr,o=t.Aliased,s=t.int,h=t.coord;return Wp.CCD_Schema={chem_comp:{formula:r,formula_weight:n,id:r,mon_nstd_parent_comp_id:i(",",f=>f),name:r,one_letter_code:r,three_letter_code:r,type:o(c),pdbx_synonyms:i(";",f=>f),pdbx_type:r,pdbx_ambiguous_flag:r,pdbx_replaced_by:r,pdbx_replaces:r,pdbx_formal_charge:s,pdbx_model_coordinates_details:r,pdbx_model_coordinates_db_code:r,pdbx_ideal_coordinates_details:r,pdbx_ideal_coordinates_missing_flag:o(c),pdbx_model_coordinates_missing_flag:o(c),pdbx_initial_date:r,pdbx_modified_date:r,pdbx_release_status:o(r),pdbx_processing_site:o(r)},chem_comp_atom:{alt_atom_id:r,atom_id:r,charge:s,model_Cartn_x:
15h,model_Cartn_y:h,model_Cartn_z:h,comp_id:r,type_symbol:r,pdbx_align:s,pdbx_ordinal:s,pdbx_model_Cartn_x_ideal:h,pdbx_model_Cartn_y_ideal:h,pdbx_model_Cartn_z_ideal:h,pdbx_stereo_config:o(c),pdbx_aromatic_flag:o(c),pdbx_leaving_atom_flag:o(c)},chem_comp_bond:{atom_id_1:r,atom_id_2:r,comp_id:r,value_order:o(c),pdbx_ordinal:s,pdbx_stereo_config:o(c),pdbx_aromatic_flag:o(c)},pdbx_chem_comp_descriptor:{comp_id:r,descriptor:r,type:o(c),program:r,program_version:r},pdbx_chem_comp_identifier:{comp_id:r,identifier:r,type:o(r),program:r,program_version:r}},Wp}var $p={},PO;function yee(){if(PO)return $p;PO=1,Object.defineProperty($p,"__esModule",{value:!0}),$p.BIRD_Schema=void 0;var t=lt().Column.Schema;const r=t.str,n=t.float,i=t.lstr,c=t.Aliased,o=t.int;return $p.BIRD_Schema={pdbx_reference_molecule:{prd_id:r,formula_weight:n,formula:r,type:c(i),type_evidence_code:r,class:c(i),class_evidence_code:r,name:r,represent_as:c(i),chem_comp_id:r,compound_details:r,description:r,representative_PDB_id_code:r,release_status:c(i),replaces:r,replaced_by:r},pdbx_reference_entity_list:{prd_id:r,ref_entity_id:r,type:c(i),details:r,component_id:o},pdbx_reference_entity_nonpoly:{prd_id:r,ref_entity_id:r,name:r,chem_comp_id:r},pdbx_reference_entity_link:{link_id:o,prd_id:r,details:r,ref_entity_id_1:r,ref_entity_id_2:r,entity_seq_num_1:o,entity_seq_num_2:o,comp_id_1:r,comp_id_2:r,atom_id_1:r,atom_id_2:r,value_order:c(i),component_1:o,component_2:o,link_class:c(r)},pdbx_reference_entity_poly_link:{link_id:o,prd_id:r,ref_entity_id:r,component_id:o,entity_seq_num_1:o,entity_seq_num_2:o,comp_id_1:r,comp_id_2:r,atom_id_1:r,atom_id_2:r,value_order:c(i)},pdbx_reference_entity_poly:{prd_id:r,ref_entity_id:r,type:c(r),db_code:r,db_name:r},pdbx_reference_entity_poly_seq:{prd_id:r,ref_entity_id:r,mon_id:r,parent_mon_id:r,num:o,observed:c(i),hetero:c(i)},pdbx_reference_entity_sequence:{prd_id:r,ref_entity_id:r,type:c(r),NRP_flag:c(r),one_letter_codes:r},pdbx_reference_entity_src_nat:{prd_id:r,ref_entity_id:r,ordinal:o,organism_scientific:r,taxid:r,db_code:r,db_name:r},pdbx_prd_audit:{prd_id:r,date:r,processing_site:c(r),action_type:c(r)}},$p}var Xp={},TO;function vee(){if(TO)return Xp;TO=1,Object.defineProperty(Xp,"__esModule",{value:!0}),Xp.dic_Schema=void 0;var t=lt().Column.Schema;const r=t.str,n=t.float,i={id:r,description:r},c={title:r,datablock_id:r,version:r},o={version:r,update:r,revision:r},s={id:r,description:r},h={id:r,parent_id:r,description:r},f={code:r,primitive_code:r,construct:r,detail:r},y={code:r,detail:r},_={from_code:r,to_code:r,operator:r,factor:n};return Xp.dic_Schema={datablock:i,dictionary:c,dictionary_history:o,sub_category:s,category_group_list:h,item_type_list:f,item_units_list:y,item_units_conversion:_},Xp}var Dc={},xO;function cX(){if(xO)return Dc;xO=1,Object.defineProperty(Dc,"__esModule",{value:!0}),Dc.DensityServer_Data_Schema=Dc.DensityServer_Header_Schema=void 0;var t=lt().Column.Schema;const r=t.str,n=t.int,i=t.float,c=t.Aliased,o=t.Vector;return Dc.DensityServer_Header_Schema={density_server_result:{server_version:r,datetime_utc:r,guid:r,is_empty:c(r),has_error:c(r),error:r,query_source_id:r,query_type:c(r),query_box_type:c(r),query_box_a:o(3),query_box_b:o(3)}},Dc.DensityServer_Data_Schema={volume_data_3d_info:{name:r,axis_order:o(3,n),origin:o(3),dimensions:o(3),sample_rate:n,sample_count:o(3,n),spacegroup_number:n,spacegroup_cell_size:o(3),spacegroup_cell_angles:o(3),mean_source:i,mean_sampled:i,sigma_source:i,sigma_sampled:i,min_source:i,min_sampled:i,max_source:i,max_sampled:i},volume_data_3d:{values:i}},Dc}var Ic={},AO;function bee(){if(AO)return Ic;AO=1,Object.defineProperty(Ic,"__esModule",{value:!0}),Ic.CifCore_Aliases=Ic.CifCore_Schema=void 0;var t=lt().Column.Schema;const r=t.float,n=t.str,i=t.int,c=t.Matrix;return Ic.CifCore_Schema={cell:{angle_alpha:r,angle_beta:r,angle_gamma:r,formula_units_z:r,length_a:r,length_b:r,length_c:r,volume:r},chemical:{melting_point:r,name_common:n,name_systematic:n},chemical_formula:{iupac:n,moiety:n,sum:n,weight:r},space_group:{crystal_system:n,it_number:i,"name_h-m_alt":n,"name_h-m_full":n,name_hall:n},space_group_symop:{operation_xyz:n},geom_bond:{atom_site_label_1:n,atom_site_label_2:n,distance:r,publ_flag:n,site_symmetry_1:n,site_symmetry_2:n,valence:r},audit:{block_doi:n},database_code:{cod:n,csd:n,depnum_ccdc_archive:n,depnum_ccdc_fiz:n,icsd:n,mdf:n,nbs:n},atom_site:{adp_type:n,calc_flag:n,disorder_assembly:n,disorder_group:n,fract_x:r,fract_y:r,fract_z:r,label:n,occupancy:r,refinement_flags:n,site_symmetry_multiplicity:i,type_symbol:n,u_iso_or_equiv:r},atom_site_aniso:{label:n,u_11:r,u:c(3,3),u_12:r,u_13:r,u_22:r,u_23:r,u_33:r},atom_type:{description:n,symbol:n},atom_type_scat:{dispersion_imag:r,dispersion_real:r,source:n}},Ic.CifCore_Aliases={"cell.formula_units_z":["cell_formula_units_Z"],"chemical_formula.iupac":["chemical_formula_IUPAC"],"space_group.it_number":["space_group_IT_number","symmetry_Int_Tables_number"],"space_group.name_h-m_alt":["space_group_name_H-M_alt"],"space_group.name_h-m_full":["symmetry_space_group_name_H-M"],"space_group.name_hall":["space_group_name_Hall","symmetry_space_group_name_Hall"],"space_group_symop.operation_xyz":["symmetry_equiv_pos_as_xyz"],"geom_bond.atom_site_label_1":["geom_bond_atom_site_id_1"],"geom_bond.atom_site_label_2":["geom_bond_atom_site_id_2"],"geom_bond.distance":["geom_bond_dist"],"audit.block_doi":["audit_block_DOI"],"database_code.cod":["database_code_COD"],"database_code.csd":["database_code_CSD"],"database_code.depnum_ccdc_archive":["database_code_depnum_CCDC_archive"],"database_code.depnum_ccdc_fiz":["database_code_depnum_CCDC_fiz"],"database_code.icsd":["database_code_ICSD"],"database_code.mdf":["database_code_MDF"],"database_code.nbs":["database_code_NBS"],"atom_site.adp_type":["atom_site_ADP_type","atom_site_thermal_displace_type"],"atom_site.label":["atom_site_id"],"atom_site.site_symmetry_multiplicity":["atom_site_symmetry_multiplicity"],"atom_site.u_iso_or_equiv":["atom_site_U_iso_or_equiv"],"atom_site_aniso.label":["atom_site_anisotrop_id"],"atom_site_aniso.u_11":["atom_site_aniso_U_11","atom_site_anisotrop_U_11"],"atom_site_aniso.u_12":["atom_site_aniso_U_12","atom_site_anisotrop_U_12"],"atom_site_aniso.u_13":["atom_site_aniso_U_13","atom_site_anisotrop_U_13"],"atom_site_aniso.u_22":["atom_site_aniso_U_22","atom_site_anisotrop_U_22"],"atom_site_aniso.u_23":["atom_site_aniso_U_23","atom_site_anisotrop_U_23"],"atom_site_aniso.u_33":["atom_site_aniso_U_33","atom_site_anisotrop_U_33"]},Ic}var Kp={},MO;function _ee(){if(MO)return Kp;MO=1,Object.defineProperty(Kp,"__esModule",{value:!0}
15),Kp.Segmentation_Data_Schema=void 0;const e=lt(),t=cX();var r=e.Column.Schema;const n=r.int;return Kp.Segmentation_Data_Schema={volume_data_3d_info:t.DensityServer_Data_Schema.volume_data_3d_info,segmentation_data_table:{set_id:n,segment_id:n},segmentation_data_3d:{values:n}},Kp}var Yp={},DO;function See(){if(DO)return Yp;DO=1,Object.defineProperty(Yp,"__esModule",{value:!0}),Yp.SF_Schema=void 0;var t=lt().Column.Schema;const r=t.float,n=t.str,i=t.int,c=t.lstr,o=t.Aliased;return Yp.SF_Schema={cell:{angle_alpha:r,angle_beta:r,angle_gamma:r,entry_id:n,length_a:r,length_b:r,length_c:r,Z_PDB:i,pdbx_unique_axis:n},diffrn:{ambient_temp:r,crystal_id:n,crystal_treatment:n,details:n,id:n},diffrn_radiation_wavelength:{id:n,wavelength:r},diffrn_reflns:{diffrn_id:n,limit_h_max:i,limit_h_min:i,limit_k_max:i,limit_k_min:i,limit_l_max:i,limit_l_min:i,number:i,pdbx_d_res_low:r,pdbx_d_res_high:r,pdbx_number_obs:i},entry:{id:n},exptl_crystal:{id:n},refln:{crystal_id:n,F_meas_au:r,F_meas_sigma_au:r,fom:r,index_h:i,index_k:i,index_l:i,intensity_meas:r,intensity_sigma:r,status:o(c),scale_group_code:n,wavelength_id:n,pdbx_FWT:r,pdbx_PHWT:r,pdbx_DELFWT:r,pdbx_DELPHWT:r,pdbx_r_free_flag:i},reflns_scale:{group_code:n},symmetry:{entry_id:n,cell_setting:o(c),Int_Tables_number:i,space_group_name_Hall:n,"space_group_name_H-M":n}},Yp}var IO;function Ti(){return IO||(IO=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CIF=void 0;const t=At,r=mee(),n=hee(),i=_T(),c=bl(),o=gee(),s=yee(),h=vee(),f=cX(),y=bee(),_=_ee(),g=See(),a=nS();e.CIF={parse:d=>a.StringLike.is(d)?(0,r.parseCifText)(d):(0,n.parseCifBinary)(d),parseText:r.parseCifText,parseBinary:n.parseCifBinary,toDatabaseCollection:i.toDatabaseCollection,toDatabase:i.toDatabase,schema:{mmCIF:d=>(0,i.toDatabase)(c.mmCIF_Schema,d),CCD:d=>(0,i.toDatabase)(o.CCD_Schema,d),BIRD:d=>(0,i.toDatabase)(s.BIRD_Schema,d),dic:d=>(0,i.toDatabase)(h.dic_Schema,d),cifCore:d=>(0,i.toDatabase)(y.CifCore_Schema,d,y.CifCore_Aliases),densityServer:d=>(0,i.toDatabase)(f.DensityServer_Data_Schema,d),segmentation:d=>(0,i.toDatabase)(_.Segmentation_Data_Schema,d),SF:d=>(0,i.toDatabase)(g.SF_Schema,d)}},t.__exportStar(bT(),e)})(gx)),gx}var Qp={},wO;function FT(){if(wO)return Qp;wO=1,Object.defineProperty(Qp,"__esModule",{value:!0}),Qp.AtomSiteAnisotrop=void 0;const e=bl(),t=$i(),r=as(),n=Mi(),i={U:e.mmCIF_Schema.atom_site_anisotrop.U,U_esd:e.mmCIF_Schema.atom_site_anisotrop.U_esd};var c;return(function(o){o.Schema=i,o.Descriptor={name:"atom_site_anisotrop",cifExport:{prefix:"",categories:[{name:"atom_site_anisotrop",instance(f){return!o.Provider.get(f.firstModel)||!n.MmcifFormat.is(f.firstModel.sourceData)?t.CifWriter.Category.Empty:t.CifWriter.Category.ofTable(f.firstModel.sourceData.data.db.atom_site_anisotrop)}}]}},o.Provider=r.FormatPropertyProvider.create(o.Descriptor);function s(f,y){const _=new Int32Array(f.rowCount);_.fill(-1);for(let a=0,d=f.rowCount;a<d;a++)_[f.value(a)]=a;const g=new Int32Array(f.rowCount);g.fill(-1);for(let a=0,d=y.rowCount;a<d;++a){const p=_[y.value(a)];p!==-1&&(g[p]=a)}return g}o.getElementToAnsiotrop=s;function h(f,y){const _={};for(let a=0,d=f.rowCount;a<d;a++)_[f.value(a)]=a;const g=new Int32Array(f.rowCount);g.fill(-1);for(let a=0,d=y.rowCount;a<d;++a){const p=_[y.value(a)];p!==void 0&&(g[p]=a)}return g}o.getElementToAnsiotropFromLabel=h})(c||(Qp.AtomSiteAnisotrop=c={})),Qp}var Zp={},VO;function cI(){if(VO)return Zp;VO=1,Object.defineProperty(Zp,"__esModule",{value:!0}),Zp.GlobalModelTransformInfo=void 0;const e=as(),t=Pr(),r=lt(),n=$i(),i=Mi(),c=_T();var o;return(function(s){const h="molstar_global_model_transform_info";s.Schema={[h]:{matrix:r.Column.Schema.Matrix(4,4,r.Column.Schema.float)}},s.Descriptor=(0,t.CustomPropertyDescriptor)({name:h,cifExport:{categories:[{name:h,instance(d){const p=y(d.firstModel);if(!p)return n.CifWriter.Category.Empty;const u=r.Table.ofRows(s.Schema.molstar_global_model_transform_info,[{matrix:p}]);return n.CifWriter.Category.ofTable(u)}}],prefix:"molstar"}}),s.Provider=e.FormatPropertyProvider.create(s.Descriptor);function f(d,p){d.customProperties.has(s.Descriptor)||d.customProperties.add(s.Descriptor),s.Provider.set(d,p)}s.attach=f;function y(d){return s.Provider.get(d)}s.get=y;function _(d){if(!i.MmcifFormat.is(d.sourceData))return;const p=d.sourceData.data.frame.categories[h];if(!p)return;const u=(0,c.toTable)(s.Schema[h],p);if(u._rowCount!==0)return u.matrix.value(0)}s.fromMmCif=_;function g(d){if(!i.MmcifFormat.is(d.sourceData))return!1;const p=d.sourceData.data.frame.categories[h];return!!p&&p.rowCount>0}s.hasData=g;function a(d,p){d.writeCategory({name:h,instance(){const u=r.Table.ofRows(s.Schema.molstar_global_model_transform_info,[{matrix:p}]);return n.CifWriter.Category.ofTable(u)}})}s.writeMmCif=a})(o||(Zp.GlobalModelTransformInfo=o={})),Zp}var yx={},bo={},EO;function Cee(){if(EO)return bo;EO=1,Object.defineProperty(bo,"__esModule",{value:!0}
15),bo.mmCIF_chemComp_schema=bo.mmCIF_chemCompBond_schema=bo.mmCIF_residueId_schema=void 0;const e=bl(),t=lt();return bo.mmCIF_residueId_schema={label_comp_id:e.mmCIF_Schema.atom_site.label_comp_id,label_seq_id:e.mmCIF_Schema.atom_site.label_seq_id,pdbx_PDB_ins_code:e.mmCIF_Schema.atom_site.pdbx_PDB_ins_code,label_asym_id:e.mmCIF_Schema.atom_site.label_asym_id,label_entity_id:e.mmCIF_Schema.atom_site.label_entity_id,auth_comp_id:e.mmCIF_Schema.atom_site.auth_atom_id,auth_seq_id:e.mmCIF_Schema.atom_site.auth_seq_id,auth_asym_id:e.mmCIF_Schema.atom_site.auth_asym_id},bo.mmCIF_chemCompBond_schema={...e.mmCIF_Schema.chem_comp_bond,molstar_protonation_variant:t.Column.Schema.Str()},bo.mmCIF_chemComp_schema={...e.mmCIF_Schema.chem_comp,type:t.Column.Schema.Aliased(t.Column.Schema.str)},bo}var Jp={},BO;function uX(){if(BO)return Jp;BO=1,Object.defineProperty(Jp,"__esModule",{value:!0}),Jp.getModelGroupName=t,Jp.getNormalizedAtomSite=i;const e=lt();function t(c,o){const{ihm_model_group:s,ihm_model_group_link:h}=o,f=e.Table.pickRow(h,y=>h.model_id.value(y)===c);if(f){const y=e.Table.pickRow(s,_=>s.id.value(_)===f.group_id);if(y)return y.name}return""}function r(c){for(let o=0,s=c.rowCount;o<s;o++)if(c.valueKind(o)===e.Column.ValueKinds.Present)return!0;return!1}function n(c,o,s){(!c[o].isDefined||!r(c[o]))&&(c[o]=c[s]),(!c[s].isDefined||!r(c[s]))&&(c[s]=c[o])}function i(c){const o=e.Table.ofColumns(c._schema,c);return n(o,"label_atom_id","auth_atom_id"),n(o,"label_comp_id","auth_comp_id"),n(o,"label_seq_id","auth_seq_id"),n(o,"label_asym_id","auth_asym_id"),n(o,"label_entity_id","label_asym_id"),o}return Jp}var RO;function vn(){return RO||(RO=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BasicSchema=void 0,e.createBasic=c;const t=bl(),r=lt(),n=Cee(),i=uX();e.BasicSchema={entry:t.mmCIF_Schema.entry,struct:t.mmCIF_Schema.struct,struct_asym:t.mmCIF_Schema.struct_asym,ihm_model_list:t.mmCIF_Schema.ihm_model_list,ihm_model_group:t.mmCIF_Schema.ihm_model_group,ihm_model_group_link:t.mmCIF_Schema.ihm_model_group_link,entity:t.mmCIF_Schema.entity,entity_poly:t.mmCIF_Schema.entity_poly,entity_poly_seq:t.mmCIF_Schema.entity_poly_seq,pdbx_entity_branch:t.mmCIF_Schema.pdbx_entity_branch,chem_comp:n.mmCIF_chemComp_schema,pdbx_chem_comp_identifier:t.mmCIF_Schema.pdbx_chem_comp_identifier,atom_site:t.mmCIF_Schema.atom_site,ihm_sphere_obj_site:t.mmCIF_Schema.ihm_sphere_obj_site,ihm_gaussian_obj_site:t.mmCIF_Schema.ihm_gaussian_obj_site,pdbx_unobs_or_zero_occ_residues:t.mmCIF_Schema.pdbx_unobs_or_zero_occ_residues,pdbx_molecule:t.mmCIF_Schema.pdbx_molecule};function c(o,s=!1){const h=Object.create(null);for(const f of Object.keys(e.BasicSchema))f in o?h[f]=o[f]:h[f]=r.Table.ofUndefinedColumns(e.BasicSchema[f],0);return s&&(h.atom_site=(0,i.getNormalizedAtomSite)(h.atom_site)),h}})(yx)),yx}var eh={},OO;function xi(){if(OO)return eh;OO=1,Object.defineProperty(eh,"__esModule",{value:!0}),eh.EntityBuilder=void 0;const e=dt(),t=lt(),r=vn();class n{constructor(){this.count=0,this.ids=[],this.types=[],this.descriptions=[],this.compoundsMap=new Map,this.seqresMap=new Map,this.namesMap=new Map,this.heteroMap=new Map,this.chainMap=new Map,this.sequenceMap=new Map,this.polymerCount=0}set(c,o){this.count+=1,this.ids.push(`${this.count}`),this.types.push(c),this.descriptions.push([o])}addPolymer(c,o,s){return c.has(o)||(this.polymerCount+=1,this.set("polymer",s?.customName||`Polymer ${this.polymerCount}`),c.set(o,`${this.count}`)),c.get(o)}addNonPolymer(c,o,s,h){if(!c.has(o)){const f=s===e.MoleculeType.Saccharide?"branched":"non-polymer";this.set(f,h?.customName||this.namesMap.get(o)||o),c.set(o,`${this.count}`)}return c.get(o)}getEntityId(c,o,s,h){if(o===e.MoleculeType.Water)return this.waterId===void 0&&(this.set("water",h?.customName||"Water"),this.waterId=`${this.count}`),this.waterId;if((0,e.isPolymer)(o)){if(this.compoundsMap.has(s))return this.compoundsMap.get(s);if(this.seqresMap.has(s)){const{key:f,residues:y}=this.seqresMap.get(s);if(y.has(c))return this.addPolymer(this.sequenceMap,f,h)}return this.addPolymer(this.chainMap,s,h)}else{if(this.seqresMap.has(s)){const{key:f,residues:y}=this.seqresMap.get(s);if(y.has(c))return this.addNonPolymer(this.sequenceMap,f,o,h)}return this.addNonPolymer(this.heteroMap,c,o,h)}}
15getEntityTable(){return t.Table.ofPartialColumns(r.BasicSchema.entity,{id:t.Column.ofStringArray(this.ids),type:t.Column.ofStringAliasArray(this.types),pdbx_description:t.Column.ofStringListArray(this.descriptions)},this.count)}setCompounds(c){for(let o=0,s=c.length;o<s;++o){const{chains:h,description:f}=c[o];this.set("polymer",f);for(let y=0,_=h.length;y<_;++y)this.compoundsMap.set(h[y],`${this.count}`)}}setNames(c){c.forEach(o=>this.namesMap.set(o[0],o[1]))}setSeqres(c){for(const[o,s]of c)this.seqresMap.set(o,{key:s.join("-"),residues:new Set(s)})}getEntityIdForChain(c){if(this.compoundsMap.size===0&&this.chainMap.size===0&&this.sequenceMap.size===0)throw new Error("EntityBuilder.getEntityIdForChain called before any atoms were processed. Call getEntityId for all atoms first.");if(this.compoundsMap.has(c))return this.compoundsMap.get(c);if(this.seqresMap.has(c)){const{key:o}=this.seqresMap.get(c);if(this.sequenceMap.has(o))return this.sequenceMap.get(o)}if(this.chainMap.has(c))return this.chainMap.get(c)}}return eh.EntityBuilder=n,eh}var th={},kO;function Ai(){if(kO)return th;kO=1,Object.defineProperty(th,"__esModule",{value:!0}),th.ComponentBuilder=void 0;const e=lt(),t=dt(),r=Hi(),n=vn(),i=xf(),c=[new Set(["CA"]),new Set(["C"]),new Set(["N"])],o=[new Set(["P","O3'","O3*"]),new Set(["C4'","C4*"]),new Set(["O2'","O2*","F2'","F2*"])],s=[new Set(["P","O3'","O3*"]),new Set(["C3'","C3*"]),new Set(["O2'","O2*","F2'","F2*"])],h=new Set(["FMN","NCN","FNS","FMA","ATP","ADP","AMP","GTP","GDP","GMP","LIG"]),f=(function(){const g=new Map;return[{id:"HIS",name:"HISTIDINE",type:"l-peptide linking"},{id:"ARG",name:"ARGININE",type:"l-peptide linking"},{id:"LYS",name:"LYSINE",type:"l-peptide linking"},{id:"ILE",name:"ISOLEUCINE",type:"l-peptide linking"},{id:"PHE",name:"PHENYLALANINE",type:"l-peptide linking"},{id:"LEU",name:"LEUCINE",type:"l-peptide linking"},{id:"TRP",name:"TRYPTOPHAN",type:"l-peptide linking"},{id:"ALA",name:"ALANINE",type:"l-peptide linking"},{id:"MET",name:"METHIONINE",type:"l-peptide linking"},{id:"CYS",name:"CYSTEINE",type:"l-peptide linking"},{id:"ASN",name:"ASPARAGINE",type:"l-peptide linking"},{id:"VAL",name:"VALINE",type:"l-peptide linking"},{id:"GLY",name:"GLYCINE",type:"peptide linking"},{id:"SER",name:"SERINE",type:"l-peptide linking"},{id:"GLN",name:"GLUTAMINE",type:"l-peptide linking"},{id:"TYR",name:"TYROSINE",type:"l-peptide linking"},{id:"ASP",name:"ASPARTIC ACID",type:"l-peptide linking"},{id:"GLU",name:"GLUTAMIC ACID",type:"l-peptide linking"},{id:"THR",name:"THREONINE",type:"l-peptide linking"},{id:"PRO",name:"PROLINE",type:"l-peptide linking"},{id:"SEC",name:"SELENOCYSTEINE",type:"l-peptide linking"},{id:"PYL",name:"PYRROLYSINE",type:"l-peptide linking"},{id:"MSE",name:"SELENOMETHIONINE",type:"l-peptide linking"},{id:"SEP",name:"PHOSPHOSERINE",type:"l-peptide linking"},{id:"TPO",name:"PHOSPHOTHREONINE",type:"l-peptide linking"},{id:"PTR",name:"O-PHOSPHOTYROSINE",type:"l-peptide linking"},{id:"PCA",name:"PYROGLUTAMIC ACID",type:"l-peptide linking"},{id:"A",name:"ADENOSINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"C",name:"CYTIDINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"T",name:"THYMIDINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"G",name:"GUANOSINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"I",name:"INOSINIC ACID",type:"rna linking"},{id:"U",name:"URIDINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"DA",name:"2'-DEOXYADENOSINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DC",name:"2'-DEOXYCYTIDINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DT",name:"THYMIDINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DG",name:"2'-DEOXYGUANOSINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DI",name:"2'-DEOXYINOSINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DU",name:"2'-DEOXYURIDINE-5'-MONOPHOSPHATE",type:"dna linking"}].forEach(d=>g.set(d.id,d)),g})(),y=(function(){const g=new Map;return[{id:"ZN2",name:"ZINC ION",type:"ion"},{id:"SOD",name:"SODIUM ION",type:"ion"},{id:"CES",name:"CESIUM ION",type:"ion"},{id:"CLA",name:"CHLORIDE ION",type:"ion"},{id:"CAL",name:"CALCIUM ION",type:"ion"},{id:"POT",name:"POTASSIUM ION",type:"ion"}
15].forEach(d=>g.set(d.id,d)),g})();class _{set(a){this.comps.set(a.id,a),this.ids.push(a.id),this.names.push(a.name),this.types.push(a.type),this.mon_nstd_flags.push(t.PolymerNames.has(a.id)?"y":"n")}getAtomIds(a){const d=new Set,p=this.seqId.value(a);for(;a<this.seqId.rowCount&&this.seqId.value(a)===p;)d.add(this.atomId.value(a)),a+=1;return d}hasAtomIds(a,d){for(let p=0,u=d.length;p<u;++p)if(!r.SetUtils.areIntersecting(a,d[p]))return!1;return!0}getType(a){return this.hasAtomIds(a,c)?"peptide linking":this.hasAtomIds(a,o)?"rna linking":this.hasAtomIds(a,s)?"dna linking":"other"}has(a){return this.comps.has(a)}get(a){return this.comps.get(a)}add(a,d){if(!this.has(a))if(f.has(a))this.set(f.get(a));else if(t.WaterNames.has(a))this.set({id:a,name:"WATER",type:"non-polymer"});else if(h.has(a.toUpperCase()))this.set({id:a,name:this.namesMap.get(a)||a,type:"non-polymer"});else if(i.SaccharideCompIdMap.has(a.toUpperCase()))this.set({id:a,name:this.namesMap.get(a)||a,type:"saccharide"});else{const p=this.getAtomIds(d);if(p.size===1&&y.has(a))this.set(y.get(a));else{const u=this.getType(p);this.set({id:a,name:this.namesMap.get(a)||a,type:u})}}return this.get(a)}getChemCompTable(){return e.Table.ofPartialColumns(n.BasicSchema.chem_comp,{id:e.Column.ofStringArray(this.ids),name:e.Column.ofStringArray(this.names),type:e.Column.ofStringAliasArray(this.types),mon_nstd_flag:e.Column.ofStringAliasArray(this.mon_nstd_flags)},this.ids.length)}setNames(a){a.forEach(d=>this.namesMap.set(d[0],d[1]))}constructor(a,d){this.seqId=a,this.atomId=d,this.namesMap=new Map,this.comps=new Map,this.ids=[],this.names=[],this.types=[],this.mon_nstd_flags=[]}}return th.ComponentBuilder=_,th}var cd={},FO;function lX(){if(FO)return cd;FO=1,Object.defineProperty(cd,"__esModule",{value:!0}),cd.MolstarBondSiteSchema=void 0,cd.molstar_bond_site=c;const e=lt(),t=$i(),r=dt(),n=jr(),i=_t();function c(y){const _=f(y);if(_.length!==0)return[s,_,{ignoreFilter:!0}]}cd.MolstarBondSiteSchema={molstar_bond_site:{atom_id_1:e.Column.Schema.int,atom_id_2:e.Column.Schema.int,value_order:e.Column.Schema.Aliased(e.Column.Schema.lstr),type_id:e.Column.Schema.Aliased(e.Column.Schema.lstr)}};const o=t.CifWriter.fields().int("atom_id_1",(y,_)=>_[y].atom_id_1).int("atom_id_2",(y,_)=>_[y].atom_id_2).str("value_order",(y,_)=>{var g;return(g=_[y].value_order)!==null&&g!==void 0?g:""},{valueKind:(y,_)=>_[y].value_order===void 0?e.Column.ValueKinds.NotPresent:e.Column.ValueKinds.Present}).str("type_id",(y,_)=>{var g;return(g=_[y].type_id)!==null&&g!==void 0?g:""},{valueKind:(y,_)=>_[y].type_id===void 0?e.Column.ValueKinds.NotPresent:e.Column.ValueKinds.Present}).getFields(),s={name:"molstar_bond_site",instance(y){return{fields:o,source:[{data:y,rowCount:y.length}]}}};function h(y,_,g){g[0]=void 0,g[1]=void 0,y===1?g[0]="sing":y===2?g[0]="doub":y===3?g[0]="trip":y===4&&(g[0]="quad"),r.BondType.is(_,r.BondType.Flag.Aromatic)&&(g[0]="arom"),r.BondType.is(_,r.BondType.Flag.Disulfide)?g[1]="disulf":r.BondType.is(_,r.BondType.Flag.Covalent)?g[1]="covale":r.BondType.is(_,r.BondType.Flag.MetallicCoordination)?g[1]="metalc":r.BondType.is(_,r.BondType.Flag.HydrogenBond)&&(g[1]="hydrog")}function f(y){const _=[],g=new Set,a=n.StructureElement.Location.create(),{id:d}=n.StructureProperties.atom,p=[void 0,void 0],u=(m,v)=>{const b=(0,i.sortedCantorPairing)(m,v);g.has(b)||(g.add(b),m>v?_.push({atom_id_1:v,atom_id_2:m,value_order:p[0],type_id:p[1]}):_.push({atom_id_1:m,atom_id_2:v,value_order:p[0],type_id:p[1]}))};for(const m of y.structures){a.structure=m;for(const v of m.units){if(!n.Unit.isAtomic(v))continue;const{elements:b}=v,{a:P,b:C,edgeProps:l}=v.bonds;a.unit=v;for(let S=0;S<P.length;S++){a.element=b[P[S]];const T=d(a);a.element=b[C[S]];const A=d(a);h(l.order[S],l.flags[S],p),u(T,A)}}
15m.interUnitBonds.edges.forEach(v=>{let b=m.unitMap.get(v.unitA);a.unit=b,a.element=b.elements[v.indexA];const P=d(a);b=m.unitMap.get(v.unitB),a.unit=b,a.element=b.elements[v.indexB];const C=d(a);h(v.props.order,v.props.flag,p),u(P,C)})}return _.sort((m,v)=>m.atom_id_1!==v.atom_id_1?m.atom_id_1-v.atom_id_1:m.atom_id_2!==v.atom_id_2?m.atom_id_2-v.atom_id_2:0),_}return cd}var LO;function Mi(){if(LO)return vo;LO=1,Object.defineProperty(vo,"__esModule",{value:!0}),vo.CCDFormat=vo.MmcifFormat=void 0,vo.trajectoryFromMmCIF=D,vo.trajectoryFromCCD=R;const e=NT(),t=nt(),r=Ti(),n=ga(),i=Qn(),c=BT(),o=lt(),s=FT(),h=tX(),f=DT(),y=Ke(),_=cI(),g=vn(),a=xi(),d=dt(),p=Ai(),u=_t(),m=Ua(),v=_T(),b=lX();function P(B){if(M.is(B.sourceData))return i.ModelSymmetry.fromData(B.sourceData.data.db)}i.ModelSymmetry.Provider.formatRegistry.add("mmCIF",P);function C(B){if(!M.is(B.sourceData))return;const{struct_conf:w,struct_sheet_range:O}=B.sourceData.data.db;return c.ModelSecondaryStructure.fromStruct(w,O,B.atomicHierarchy)}c.ModelSecondaryStructure.Provider.formatRegistry.add("mmCIF",C);function l(B){if(!M.is(B.sourceData))return;const{atom_site_anisotrop:w}=B.sourceData.data.db,O=o.Table.ofColumns(s.AtomSiteAnisotrop.Schema,w),F=s.AtomSiteAnisotrop.getElementToAnsiotrop(B.atomicConformation.atomId,w.id);return{data:O,elementToAnsiotrop:F}}function S(B){return M.is(B.sourceData)?B.sourceData.data.db.atom_site_anisotrop.U.isDefined:!1}s.AtomSiteAnisotrop.Provider.formatRegistry.add("mmCIF",l,S);function T(B){if(!M.is(B.sourceData))return;const{chem_comp_bond:w}=B.sourceData.data.db;if(w._rowCount!==0)return{data:w,entries:h.ComponentBond.getEntriesFromChemCompBond(w)}}h.ComponentBond.Provider.formatRegistry.add("mmCIF",T);function A(B){if(!M.is(B.sourceData))return;const{struct_conn:w}=B.sourceData.data.db;if(w._rowCount===0)return;const O=f.StructConn.getEntriesFromStructConn(w,B),F=new Set;for(const L of O)L.partnerA.residueIndex!==L.partnerB.residueIndex&&F.add((0,u.sortedCantorPairing)(L.partnerA.residueIndex,L.partnerB.residueIndex));return{data:w,byAtomIndex:f.StructConn.getAtomIndexFromEntries(O),residueCantorPairs:F,entries:O}}f.StructConn.Provider.formatRegistry.add("mmCIF",A);function x(B){if(!M.is(B.sourceData))return;const{molstar_bond_site:w}=(0,v.toDatabase)(b.MolstarBondSiteSchema,B.sourceData.data.frame);if(w._rowCount===0)return;const O=new Map,{atomId:F}=B.atomicConformation;for(let W=0;W<F.rowCount;W++)O.set(F.value(W),W);const L=[],U=[],q=[],N=[],{atom_id_1:k,atom_id_2:j,value_order:H,type_id:G}=w;for(let W=0;W<w._rowCount;W++){L.push(O.get(k.value(W))),U.push(O.get(j.value(W)));let X=d.BondType.Flag.None,Y=1;switch(H.value(W)){case"sing":Y=1;break;case"doub":Y=2;break;case"trip":Y=3;break;case"quad":Y=4;break;case"arom":Y=1,X=d.BondType.Flag.Aromatic;break}switch(G.value(W)){case"covale":X|=d.BondType.Flag.Covalent;break;case"disulf":X|=d.BondType.Flag.Covalent|d.BondType.Flag.Disulfide;break;case"hydrog":X|=d.BondType.Flag.HydrogenBond;break;case"metalc":X|=d.BondType.Flag.MetallicCoordination;break}q.push(Y),N.push(X)}return m.IndexPairBonds.fromData({pairs:{indexA:o.Column.ofIntArray(L),indexB:o.Column.ofIntArray(U),order:o.Column.ofIntArray(q),flag:o.Column.ofArray({array:N,schema:o.Column.Schema.int})},count:B.atomicHierarchy.atoms._rowCount},{maxDistance:1/0})}m.IndexPairBonds.Provider.formatRegistry.add("mmCIF",x),_.GlobalModelTransformInfo.Provider.formatRegistry.add("mmCIF",_.GlobalModelTransformInfo.fromMmCif,_.GlobalModelTransformInfo.hasData);var M;(function(B){function w(F){return F?.kind==="mmCIF"}B.is=w;function O(F,L,U,q){return L||(L=r.CIF.schema.mmCIF(F)),{kind:"mmCIF",name:L._name,data:{db:L,file:q,frame:F,source:U}}}B.fromFrame=O})(M||(vo.MmcifFormat=M={}));function D(B,w){const O=M.fromFrame(B,void 0,void 0,w),F=(0,g.createBasic)(O.data.db,!0);return t.Task.create("Create mmCIF Model",L=>(0,n.createModels)(F,O,L))}var V;(function(B){const w="__CcdCoordinateType__";B.CoordinateType={get(L){return L._staticPropertyData[w]},set(L,U){return L._staticPropertyData[w]=U}};function O(L){return L?.kind==="CCD"}B.is=O;function F(L,U){return U||(U=r.CIF.schema.CCD(L)),{kind:"CCD",name:U._name,data:{db:U,frame:L}}}B.fromFrame=F})(V||(vo.CCDFormat=V={}));function R(B){const w=V.fromFrame(B);return t.Task.create("Create CCD Models",O=>E(w.data.db,V.fromFrame(B),O))}async function E(B,w,O){const F=await I(B,w,{coordinateType:"ideal",cartn_x:"pdbx_model_Cartn_x_i
15deal",cartn_y:"pdbx_model_Cartn_y_ideal",cartn_z:"pdbx_model_Cartn_z_ideal"},O),L=await I(B,w,{coordinateType:"model",cartn_x:"model_Cartn_x",cartn_y:"model_Cartn_y",cartn_z:"model_Cartn_z"},O),U=[];F&&U.push(F),L&&U.push(L);for(let q=0,N=U.length;q<N;++q)e.Model.TrajectoryInfo.set(U[q],{index:q,size:U.length});return new y.ArrayTrajectory(U)}async function I(B,w,O,F){const{chem_comp:L,chem_comp_atom:U,chem_comp_bond:q}=B,{coordinateType:N,cartn_x:k,cartn_y:j,cartn_z:H}=O,G=L.name.value(0),z=L.id.value(0),{atom_id:W,charge:X,comp_id:Y,pdbx_ordinal:K,type_symbol:Q}=U,J=U._rowCount,ae=[];for(let Se=0;Se<J;Se++)U[k].valueKind(Se)>0||(ae[ae.length]=Se);const te=ae.length,ne=o.Column.ofConst("A",te,o.Column.Schema.str),$=o.Column.ofConst(1,te,o.Column.Schema.int),ie=o.Column.ofConst("1",te,o.Column.Schema.str),Z=o.Column.ofConst(1,te,o.Column.Schema.float),re=o.Column.ofConst(1,te,o.Column.Schema.int),oe=o.Column.view(W,ae),ce=o.Column.view(Y,ae),ue=o.Column.view(U[k],ae),pe=o.Column.view(U[j],ae),he=o.Column.view(U[H],ae),fe=o.Column.view(K,ae),de=o.Column.view(Q,ae),ge=o.Column.view(X,ae),Ce=o.Table.ofPartialColumns(g.BasicSchema.atom_site,{auth_asym_id:ne,auth_atom_id:oe,auth_comp_id:ce,auth_seq_id:$,Cartn_x:ue,Cartn_y:pe,Cartn_z:he,id:fe,label_asym_id:ne,label_atom_id:oe,label_comp_id:ce,label_seq_id:$,label_entity_id:ie,occupancy:Z,type_symbol:de,pdbx_PDB_model_num:re,pdbx_formal_charge:ge},te),ve=new a.EntityBuilder;ve.setNames([[z,`${G} (${N})`]]),ve.getEntityId(z,d.MoleculeType.Unknown,"A");const le=new p.ComponentBuilder($,Q);le.setNames([[z,`${G} (${N})`]]),le.add(z,0);const me=(0,g.createBasic)({entity:ve.getEntityTable(),chem_comp:le.getChemCompTable(),atom_site:Ce}),ee=await(0,n.createModels)(me,w,F);if(!ee.representative)return;const se=ee.representative,ye=h.ComponentBond.getEntriesFromChemCompBond(q);return h.ComponentBond.Provider.set(se,{data:q,entries:ye}),V.CoordinateType.set(se,N),ee.representative}return vo}var rh={},nh={},NO;function uI(){if(NO)return nh;NO=1,Object.defineProperty(nh,"__esModule",{value:!0}),nh.CustomModelProperty=void 0;const e=Ne(),t=et(),r=Pr(),n=ui();var i;return(function(c){function o(h){const f=h.descriptor.name,y=h.type==="static"?"_staticPropertyData":"_dynamicPropertyData",_=a=>(f in a[y]||(a[y][f]={props:{...e.ParamDefinition.getDefaultValues(h.getParams(a))},data:t.ValueBox.create(void 0)}),a[y][f]),g=(a,d,p)=>{const u=_(a);a[y][f]={props:d,data:t.ValueBox.withValue(u.data,p)}};return{label:h.label,descriptor:h.descriptor,isHidden:h.isHidden,getParams:a=>{const d=e.ParamDefinition.clone(h.getParams(a));return e.ParamDefinition.setDefaultValues(d,_(a).props),d},defaultParams:h.defaultParams,isApplicable:h.isApplicable,attach:async(a,d,p={},u)=>{u&&d.customProperties.reference(h.descriptor,!0);const m=_(d),v=e.ParamDefinition.merge(h.defaultParams,m.props,p);if(m.data.value&&e.ParamDefinition.areEqual(h.defaultParams,m.props,v))return;const{value:b,assets:P}=await h.obtain(a,d,v);d.customProperties.add(h.descriptor),d.customProperties.assets(h.descriptor,P),g(d,v,b)},ref:(a,d)=>a.customProperties.reference(h.descriptor,d),get:a=>{var d;return(d=_(a))===null||d===void 0?void 0:d.data},set:(a,d={},p)=>{const u=_(a),m=e.ParamDefinition.merge(h.defaultParams,u.props,d);e.ParamDefinition.areEqual(h.defaultParams,u.props,m)||(g(a,m,p),a.customProperties.assets(h.descriptor))},props:a=>_(a).props}}c.createProvider=o;function s(h,f,y){const _={value:e.ParamDefinition.Value(y,{isHidden:!0})};return o({label:(0,n.stringToWords)(h),descriptor:(0,r.CustomPropertyDescriptor)({name:h}),isHidden:!0,type:f,defaultParams:_,getParams:()=>({value:e.ParamDefinition.Value(y,{isHidden:!0})}),isApplicable:()=>!0,obtain:async(g,a,d)=>({...e.ParamDefinition.getDefaultValues(_),...d})})}c.createSimple=s})(i||(nh.CustomModelProperty=i={})),nh}var qO;function lI(){if(qO)return rh;qO=1,Object.defineProperty(rh,"__esModule",{value:!0}),rh.SIFTSMapping=void 0;const e=lt(),t=Mi(),r=Pr(),n=uI();var i;return(function(c){c.Provider=n.CustomModelProperty.createProvider({label:"SIFTS Mapping",descriptor:(0,r.CustomPropertyDescriptor)({name:"sifts_sequence_mapping"}),type:"static",defaultParams:{},getParams:()=>({}),isApplicable:y=>o(y),obtain:async(y,_)=>({value:f(_)})});
15function o(y){if(!t.MmcifFormat.is(y.sourceData))return!1;const{pdbx_sifts_xref_db_name:_,pdbx_sifts_xref_db_acc:g,pdbx_sifts_xref_db_num:a,pdbx_sifts_xref_db_res:d}=y.sourceData.data.db.atom_site;return _.isDefined&&g.isDefined&&a.isDefined&&d.isDefined}c.isAvailable=o;function s(y){const _=y.unit.model,g=c.Provider.get(_).value;if(!g)return"";const a=_.atomicHierarchy.residueAtomSegments.index[y.element];return g.accession[a]}c.getKey=s;function h(y){const _=y.unit.model,g=c.Provider.get(_).value;if(!g)return;const a=_.atomicHierarchy.residueAtomSegments.index[y.element],d=g.dbName[a];if(d)return`${d} ${g.accession[a]} ${g.num[a]} ${g.residue[a]}`}c.getLabel=h;function f(y){if(!t.MmcifFormat.is(y.sourceData))return;const{pdbx_sifts_xref_db_name:_,pdbx_sifts_xref_db_acc:g,pdbx_sifts_xref_db_num:a,pdbx_sifts_xref_db_res:d}=y.sourceData.data.db.atom_site;if(!_.isDefined||!g.isDefined||!a.isDefined||!d.isDefined)return;const{atomSourceIndex:p}=y.atomicHierarchy,{count:u,offsets:m}=y.atomicHierarchy.residueAtomSegments,v=new Array(u),b=new Array(u),P=new Array(u),C=new Array(u);for(let l=0;l<u;l++){const S=p.value(m[l]);if(_.valueKind(S)!==e.Column.ValueKinds.Present){v[l]="",b[l]="",P[l]="",C[l]="";continue}v[l]=_.value(S),b[l]=g.value(S),P[l]=a.value(S),C[l]=d.value(S)}return{dbName:v,accession:b,num:P,residue:C}}})(i||(rh.SIFTSMapping=i={})),rh}var UO;function dX(){if(UO)return yo;UO=1,Object.defineProperty(yo,"__esModule",{value:!0}),yo._atom_site=void 0,yo.residueIdFields=u,yo.chainIdFields=m,yo.entityIdFields=v,yo.atomIdFields=b;const e=$i(),t=Mi(),r=lI(),n=jr();var i=e.CifWriter.Field,c=e.CifWriter.Encodings;function o(P){const C=n.StructureProperties.chain.label_asym_id(P),l=P.unit.conformation.operator.suffix;return l?C+l:C}function s(P){const C=n.StructureProperties.chain.auth_asym_id(P),l=P.unit.conformation.operator.suffix;return l?C+l:C}const h={shouldInclude(P){var C;return!!(!((C=P.atom_site)===null||C===void 0)&&C.pdbx_label_index.isDefined)},value(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_label_index.value(l)}},f={shouldInclude(P){return r.SIFTSMapping.isAvailable(P.structure.models[0])},pdbx_sifts_xref_db_name:{value(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_name.value(l)},valueKind(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_name.valueKind(l)}},pdbx_sifts_xref_db_acc:{value(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_acc.value(l)},valueKind(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_acc.valueKind(l)}},pdbx_sifts_xref_db_num:{value(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_num.value(l)},valueKind(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_num.valueKind(l)}},pdbx_sifts_xref_db_res:{value(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_res.value(l)},valueKind(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_res.valueKind(l)}}},y=P=>{const C=e.CifWriter.fields();return C.str("group_PDB",n.StructureProperties.residue.group_PDB),P?C.int("id",n.StructureProperties.atom.id):C.index("id"),C.str("type_symbol",n.StructureProperties.atom.type_symbol).str("label_atom_id",n.StructureProperties.atom.label_atom_id).str("label_comp_id",n.StructureProperties.atom.label_comp_id).int("label_seq_id",n.StructureProperties.residue.label_seq_id,{encoder:c.deltaRLE,valueKind:(l,S)=>{const T=l.unit.model;return T.atomicHierarchy.residues.label_seq_id.valueKind(T.atomicHierarchy.residueAtomSegments.index[l.element])}}).str("label_alt_id",n.StructureProperties.atom.label_alt_id).str("pdbx_PDB_ins_code",n.StructureProperties.residue.pdbx_PDB_ins_code).str("label_asym_id",o).str("label_entity_id",n.StructureProperties.chain.label_entity_id).float("Cartn_x",n.StructureProperties.atom.x,{digitCount:3,encoder:c.fixedPoint3}).float("Cartn_y",n.StructureProperties.atom.y,{digitCount:3,encoder:c.fixedPoint3}).float("Cartn_z",n.StructureProperties.atom.z,{digitCount:3,encoder:c.fixedPoint3}).float("occupancy",n.StructureProperties.atom.occupancy,{digitCount:2,encoder:c.fixedPoint2}).float("B_iso_or_equiv",n.StructureProperties.atom.B_iso_or_equiv,{digitCount:2,encoder:c.fixedPoint2}).int("pdbx_formal_charge",n.StructureProperties.atom.pdbx_formal_charge,{encoder:c.deltaRLE,valueKind:(l,S)=>l.unit.model.atomicHierarchy.atoms.pdbx_formal_charge.valueKind(l.element)}).str("auth_atom_id",n.StructureProperties.atom.auth_atom_id).str("auth_comp_id",n.StructureProperties.atom.auth_comp_id).int("auth_seq_id",n.StructureProperties.residue.auth_seq_id,{encoder:c.deltaRLE}).str("auth_asym_id",s).int("pdbx_PDB_model_num",n.StructureProperties.unit.model_num,{encoder:c.deltaRLE}).int("pdbx_label_index",h.value,{shouldInclude:h.shouldInclude}).str("pdbx_sifts_xref_db_name",f.pdbx_sifts_xref_db_name.value,{shouldInclude:f.shouldInclude,valueKind:f.pdbx_sifts_xref_db_name.valueKind}).str("pdbx_sifts_xref_db_acc",f.pdbx_sifts_xref_db_acc.value,{shouldInclude:f.shouldInclude,valueKind:f.pdbx_sifts_xref_db_acc.valueKind}).str("pdbx_sifts_xref_db_num",f.pdbx_sifts_xref_db_num.value,{shouldInclude:f.shouldInclude,valueKind:f.pdbx_sifts_xref_db_num.valueKind}).str("pdbx_sifts_xref_db_res",f.pdbx_sifts_xref_db_res.value,{shouldInclude:f.shouldInclude,valueKind:f.pdbx_sifts_xref_db_res.valueKind}),C.getFields()},_=P=>({name:"atom_site",instance({structures:C}){return{fields:y(P?.keepId),source:C.map(l=>({data:{structure:l,sourceIndex:l.model.atomicHierarchy.atomSourceIndex,atom_site:t.MmcifFormat.is(l.model.sourceData)?l.model.sourceData.data.db.atom_site:void 0},rowCount:l.elementCount,keys:()=>l.elementLocations()}))}}});yo._atom_site=_;function g(P,C){return P?`${P}_${C}`:C}function a(P){return P?`pdbx_${P}_PDB_ins_code`:"pdbx_PDB_ins_code"}function d(P,C){return(l,S)=>C(P(l,S))}function p(P,C,l){l&&l.includeModelNum&&P.int("pdbx_PDB_model_num",d(C,n.StructureProperties.unit.model_num))}function u(P,C){const l=C&&C.prefix,S=e.CifWriter.fields().str(g(l,"label_comp_id"),d(P,n.StructureProperties.atom.label_comp_id)).int(g(l,"label_seq_id"),d(P,n.StructureProperties.residue.label_seq_id),{encoder:c.deltaRLE,valueKind:(T,A)=>{const x=P(T,A),M=x.unit.model;return M.atomicHierarchy.residues.label_seq_id.valueKind(M.atomicHierarchy.residueAtomSegments.index[x.element])}}).str(a(l),d(P,n.StructureProperties.residue.pdbx_PDB_ins_code)).str(g(l,"label_asym_id"),d(P,n.StructureProperties.chain.label_asym_id)).str(g(l,"label_entity_id"),d(P,n.StructureProperties.chain.label_entity_id)).str(g(l,"auth_comp_id"),d(P,n.StructureProperties.atom.auth_comp_id)).int(g(l,"auth_seq_id"),d(P,n.StructureProperties.residue.auth_seq_id),{encoder:c.deltaRLE}).str(g(l,"auth_asym_id"),d(P,n.StructureProperties.chain.auth_asym_id));return p(S,P,C),S.getFields()}function m(P,C){const l=C&&C.prefix,S=i.build().str(g(l,"label_asym_id"),d(P,n.StructureProperties.chain.label_asym_id)).str(g(l,"label_entity_id"),d(P,n.StructureProperties.chain.label_entity_id)).str(g(l,"auth_asym_id"),d(P,n.StructureProperties.chain.auth_asym_id));return p(S,P,C),S.getFields()}function v(P,C){const l=C&&C.prefix,S=i.build().str(g(l,"label_entity_id"),d(P,n.StructureProperties.chain.label_entity_id));return p(S,P,C),S.getFields()}function b(P,C){const l=C&&C.prefix,S=e.CifWriter.fields().str(g(l,"label_atom_id"),d(P,n.StructureProperties.atom.label_atom_id)).str(g(l,"label_comp_id"),d(P,n.StructureProperties.atom.label_comp_id)).int(g(l,"label_seq_id"),d(P,n.StructureProperties.residue.label_seq_id),{encoder:c.deltaRLE,valueKind:(T,A)=>{const x=P(T,A),M=x.unit.model;return M.atomicHierarchy.residues.label_seq_id.valueKind(M.atomicHierarchy.residueAtomSegments.index[x.element])}}).str(g(l,"label_alt_id"),d(P,n.StructureProperties.atom.label_alt_id)).str(a(l),d(P,n.StructureProperties.residue.pdbx_PDB_ins_code)).str(g(l,"label_asym_id"),d(P,n.StructureProperties.chain.label_asym_id)).str(g(l,"label_entity_id"),d(P,n.StructureProperties.chain.label_entity_id)).str(g(l,"auth_atom_id"),d(P,n.StructureProperties.atom.auth_atom_id)).str(g(l,"auth_comp_id"),d(P,n.StructureProperties.atom.auth_comp_id)).int(g(l,"auth_seq_id"),d(P,n.StructureProperties.residue.auth_seq_id),{encoder:c.deltaRLE}).str(g(l,"auth_asym_id"),d(P,n.StructureProperties.chain.auth_asym_id));return p(S,P,C),S.getFields()}return yo}var wc={},jO;function Pee(){if(jO)return wc;
15jO=1,Object.defineProperty(wc,"__esModule",{value:!0}),wc._struct_sheet_range=wc._struct_conf=void 0;const e=at(),t=$i(),r=jr();var n=t.CifWriter.Field;const i=lt(),c=dX(),o=BT();wc._struct_conf={name:"struct_conf",instance(_){const g=y(_,"helix");return{fields:h(),source:[{data:g,rowCount:g.length}]}}},wc._struct_sheet_range={name:"struct_sheet_range",instance(_){const g=y(_,"sheet").sort(s);return{fields:f(),source:[{data:g,rowCount:g.length}]}}};function s(_,g){const a=_.element,d=g.element;return a.sheet_id<d.sheet_id?-1:a.sheet_id===d.sheet_id?_.start.element-g.start.element:1}const h=()=>[n.str("conf_type_id",(_,g)=>g[_].element.type_id),n.str("id",(_,g,a)=>`${g[_].element.type_id}${a+1}`),...(0,c.residueIdFields)((_,g)=>g[_].start,{prefix:"beg"}),...(0,c.residueIdFields)((_,g)=>g[_].end,{prefix:"end"}),n.str("pdbx_PDB_helix_class",(_,g)=>g[_].element.helix_class),n.str("details",(_,g)=>g[_].element.details||"",{valueKind:(_,g)=>g[_].element.details?i.Column.ValueKinds.Present:i.Column.ValueKinds.Unknown}),n.int("pdbx_PDB_helix_length",(_,g)=>g[_].length)],f=()=>[n.str("sheet_id",(_,g)=>g[_].element.sheet_id),n.index("id"),...(0,c.residueIdFields)((_,g)=>g[_].start,{prefix:"beg"}),...(0,c.residueIdFields)((_,g)=>g[_].end,{prefix:"end"}),n.str("symmetry",(_,g)=>"",{valueKind:(_,g)=>i.Column.ValueKinds.Unknown})];function y(_,g){const a=o.ModelSecondaryStructure.Provider.get(_.firstModel);if(!a)return[];const{key:d,elements:p}=a,u=[],m=_.structures[0];for(const{units:v}of m.unitSymmetryGroups){const b=v[0];if(!r.Unit.isAtomic(b))continue;const P=b.model.atomicHierarchy.residueAtomSegments,C=e.Segmentation.transientSegments(P,b.elements);let l,S=!0;for(;C.hasNext;){S&&(l=C.move());const T=l.index,A=d[T],x=p[A];if(x.kind!==g){S=!0;continue}let M=T;for(;C.hasNext;)if(M=l.index,l=C.move(),A!==d[l.index]){S=!1,u[u.length]={start:r.StructureElement.Location.create(m,b,P.offsets[T]),end:r.StructureElement.Location.create(m,b,P.offsets[M]),length:M-T+1,element:x};break}}}return u}return wc}var oa={},_o={},GO;function dI(){if(GO)return _o;GO=1,Object.defineProperty(_o,"__esModule",{value:!0}),_o.getModelMmCifCategory=o,_o.getUniqueResidueNamesFromStructures=s,_o.getUniqueEntityIdsFromStructures=h,_o.getUniqueEntityIndicesFromStructures=f,_o.copy_mmCif_category=y,_o.copy_source_mmCifCategory=_;const e=Hi(),t=ha(),r=_t(),n=$i(),i=Mi(),c=Ti();function o(a,d){if(i.MmcifFormat.is(a.sourceData))return a.sourceData.data.db[d]}function s(a){return e.SetUtils.unionMany(...a.map(d=>d.uniqueResidueNames))}function h(a){if(a.length===0)return new Set;const d=a[0].model.entities.data.id;return new Set(f(a).map(p=>d.value(p)))}function f(a){if(a.length===0)return[];if(a.length===1)return a[0].entityIndices;const d=t.UniqueArray.create();for(const p of a)for(const u of p.entityIndices)t.UniqueArray.add(d,u,u);return(0,r.sortArray)(d.array),d.array}function y(a,d){return{name:a,instance({structures:p}){if(d&&!d(p[0]))return n.CifWriter.Category.Empty;const u=p[0].model;if(!i.MmcifFormat.is(u.sourceData))return n.CifWriter.Category.Empty;const m=u.sourceData.data.db[a];return!m||!m._rowCount?n.CifWriter.Category.Empty:n.CifWriter.Category.ofTable(m)}}}function _(a,d,p){if(!i.MmcifFormat.is(d.firstModel.sourceData))return;const u=n.CifWriter.fields();if(a.isBinary)for(const v of p.fieldNames){const b=g(v,p.getField(v));u.add(b)}else for(const v of p.fieldNames){const b=p.getField(v);u.str(v,P=>b.str(P))}const m=u.getFields();return{name:p.name,instance(){return{fields:m,source:[{data:void 0,rowCount:p.rowCount}]}}}}function g(a,d){const p=(0,c.getCifFieldType)(d);return p["@type"]==="str"?{name:a,type:n.CifWriter.Field.Type.Str,value:d.str,valueKind:d.valueKind}:p["@type"]==="float"?n.CifWriter.Field.float(a,d.float,{valueKind:d.valueKind,typedArray:Float64Array}):n.CifWriter.Field.int(a,d.int,{valueKind:d.valueKind,typedArray:Int32Array})}return _o}var zO;function Tee(){if(zO)return oa;zO=1,Object.defineProperty(oa,"__esModule",{value:!0}),oa._pdbx_nonpoly_scheme=oa._pdbx_chem_comp_identifier=oa._chem_comp_bond=oa._chem_comp=void 0;const e=lt(),t=$i(),r=dI();var n=t.CifWriter.Category;return oa._chem_comp={name:"chem_comp",instance({firstModel:i,structures:c,cache:o}){const s=(0,r.getModelMmCifCategory)(c[0].model,"chem_comp");if(!s)return n.Empty;const{id:h}=s,f=o.uniqueResidueNames||(o.uniqueResidueNames=(0,r.getUniqueResidueNamesFromStructures)(c)),y=e.Column.indicesOf(h,_=>f.has(_));return n.ofTable(s,y)}},oa._chem_comp_bond={name:"chem_comp_bond",instance({firstModel:i,structures:c,cache:o}){const s=(0,r.getModelMmCifCategory)(c[0].model,"chem_comp_bond");if(!s)return n.Empty;const{comp_id:h}=s,f=o.uniqueResidueNames||(o.uniqueResidueNames=(0,r.getUniqueResidueNamesFromStructures)(c)),y=e.Column.indicesOf(h,_=>f.has(_));return n.ofTable(s,y)}},oa._pdbx_chem_comp_identifier={name:"pdbx_chem_comp_identifier",instance({firstModel:i,structures:c,cache:o}){const s=(0,r.getModelMmCifCategory)(i,"pdbx_chem_comp_identifier");if(!s)return n.Empty;const{comp_id:h}=s,f=o.uniqueResidueNames||(o.uniqueResidueNames=(0,r.getUniqueResidueNamesFromStructures)(c)),y=e.Column.indicesOf(h,_=>f.has(_));return n.ofTable(s,y)}},oa._pdbx_nonpoly_scheme={name:"pdbx_nonpoly_scheme",instance({firstModel:i,structures:c,cache:o}){const s=(0,r.getModelMmCifCategory)(i,"pdbx_nonpoly_scheme");return s?n.ofTable(s):n.Empty}},oa}var So={},HO;function xee(){if(HO)return So;HO=1,Object.defineProperty(So,"__esModule",{value:!0}),So._entity_poly_seq=So._entity_poly=So._struct_asym=void 0;const e=lt(),t=$i(),r=dI();var n=t.CifWriter.Category;So._struct_asym=i("struct_asym"),So._entity_poly=i("entity_poly"),So._entity_poly_seq=i("entity_poly_seq");function i(o){return{name:o,instance({structures:s,cache:h}){return c(s,o,h)}}}function c(o,s,h){const f=(0,r.getModelMmCifCategory)(o[0].model,s);if(!f)return n.Empty;const{entity_id:y}=f,_=h.uniqueEntityIds||(h.uniqueEntityIds=(0,r.getUniqueEntityIdsFromStructures)(o)),g=e.Column.indicesOf(y,a=>_.has(a));return n.ofTable(f,g)}return So}var WO;function Aee(){if(WO)return go;WO=1,Object.defineProperty(go,"__esModule",{value:!0}),go.mmCIF_Export_Filters=go.CifExportContext=void 0,go.encode_mmCIF_categories=v,go.to_mmCIF=C;const e=$i(),t=dX();var r=e.CifWriter.Category;const n=Pee(),i=Tee(),c=dI(),o=xee(),s=Pr(),h=fX(),f=Mi(),y=lX();var _;(function(l){function S(T){const A=Array.isArray(T)?T:[T];return{structures:A,firstModel:A[0].model,cache:Object.create(null)}}l.create=S})(_||(go.CifExportContext=_={}));const g={name:"entity",instance({structures:l}){const S=(0,c.getUniqueEntityIndicesFromStructures)(l);return r.ofTable(l[0].model.entities.data,S)}};function a(l){return l.units.every(S=>S.conformation.operator.isIdentity)}function d(l){return a(l)&&l.units.every(S=>!S.conformation.operator.assembly&&!S.conformation.operator.suffix)}const p=l=>[(0,c.copy_mmCif_category)("entry"),(0,c.copy_mmCif_category)("exptl"),g,(0,c.copy_mmCif_category)("cell",a),(0,c.copy_mmCif_category)("symmetry",a),(0,c.copy_mmCif_category)("pdbx_struct_assembly",d),(0,c.copy_mmCif_category)("pdbx_struct_assembly_gen",d),(0,c.copy_mmCif_category)("pdbx_struct_oper_list",d),n._struct_conf,n._struct_sheet_range,o._struct_asym,o._entity_poly,o._entity_poly_seq,(0,c.copy_mmCif_category)("pdbx_entity_branch"),(0,c.copy_mmCif_category)("pdbx_entity_branch_link"),(0,c.copy_mmCif_category)("pdbx_branch_scheme"),(0,c.copy_mmCif_category)("struct_conn"),i._chem_comp,i._chem_comp_bond,i._pdbx_chem_comp_identifier,(0,c.copy_mmCif_category)("atom_sites"),i._pdbx_nonpoly_scheme,(0,t._atom_site)({keepId:l?.keepAtomSiteId})];var u;(function(l){l.AtomSitePositionsFieldNames=new Set(["id","Cartn_x","Cartn_y","Cartn_z"])})(u||(u={})),go.mmCIF_Export_Filters={onlyPositions:{includeCategory(l){return l==="atom_site"},includeField(l,S){return u.AtomSitePositionsFieldNames.has(S)}}};function m(l,S,T){var A;if(!l.cifExport||l.cifExport.categories.length===0)return[];const x=l.cifExport.prefix,M=l.cifExport.categories;let D=S;
15if(l.cifExport.context){const R=s.CustomPropertyDescriptor.getUUID(l);S.cache[R+"__ctx"]?D=S.cache[R+"__ctx"]:(D=l.cifExport.context(S)||S,S.cache[R+"__ctx"]=D)}const V=[];for(const R of M)if(!(!((A=T?.skipCategoryNames)===null||A===void 0)&&A.has(R.name))&&!(T?.includedCategoryNames&&!T.includedCategoryNames.has(R.name))){if(R.name.indexOf(x)!==0)throw new Error(`Custom category '${R.name}' name must start with prefix '${x}.'`);V.push([R,D])}return V}function v(l,S,T){const x=(Array.isArray(S)?S[0]:S).models;if(x.length!==1)throw new Error("Can't export stucture composed from multiple models.");const M=T?.exportCtx||_.create(S);T?.copyAllCategories&&f.MmcifFormat.is(x[0].sourceData)?P(l,M,T):b(l,M,T)}function b(l,S,T){var A,x,M;const D=new Set;for(const R of p({keepAtomSiteId:((A=T?.extensions)===null||A===void 0?void 0:A.molstar_bond_site)||T?.doNotReindexAtomSiteId}))D.has(R.name)||(D.add(R.name),!(T?.skipCategoryNames&&T?.skipCategoryNames.has(R.name))&&(T?.includedCategoryNames&&!T.includedCategoryNames.has(R.name)||l.writeCategory(R,S)));if(!(!((x=T?.skipCategoryNames)===null||x===void 0)&&x.has("atom_site"))&&l.isCategoryIncluded("atom_site")){const R=(0,h.atom_site_operator_mapping)(S);R&&l.writeCategory(R[0],R[1],R[2])}if(!((M=T?.extensions)===null||M===void 0)&&M.molstar_bond_site){const R=(0,y.molstar_bond_site)(S);R&&l.writeCategory(R[0],R[1],R[2])}const V=T||{};for(const R of S.firstModel.customProperties.all)for(const[E,I]of m(R,S,V))D.has(E.name)||(D.add(E.name),l.writeCategory(E,I));if(T?.customProperties)for(const R of T?.customProperties)for(const[E,I]of m(R,S,V))D.has(E.name)||(D.add(E.name),l.writeCategory(E,I));for(const R of S.structures)if(R.hasCustomProperties)for(const E of R.customPropertyDescriptors.all)for(const[I,B]of m(E,S,V))D.has(I.name)||(D.add(I.name),l.writeCategory(I,B))}function P(l,S,T){var A,x;const M=new Map;for(const I of p({keepAtomSiteId:((A=T?.extensions)===null||A===void 0?void 0:A.molstar_bond_site)||T?.doNotReindexAtomSiteId}))M.set(I.name,[I,S]);const D=(0,h.atom_site_operator_mapping)(S);D&&M.set(D[0].name,D);const V=T||{};for(const I of S.firstModel.customProperties.all)for(const B of m(I,S,V))M.set(B[0].name,B);if(T?.customProperties)for(const I of T?.customProperties)for(const B of m(I,S,V))M.set(B[0].name,B);for(const I of S.structures)if(I.hasCustomProperties)for(const B of I.customPropertyDescriptors.all)for(const w of m(B,S))M.set(w[0].name,w);const R=new Set,E=S.firstModel.sourceData.data;for(const I of E.frame.categoryNames)if(R.add(I),M.has(I)){const B=M.get(I);l.writeCategory(B[0],B[1],B[2])}else if(E.db[I]){const B=(0,c.copy_mmCif_category)(I);l.writeCategory(B,S)}else{const B=(0,c.copy_source_mmCifCategory)(l,S,E.frame.categories[I]);B&&l.writeCategory(B)}if(M.forEach((I,B)=>{R.has(B)||l.writeCategory(I[0],I[1],I[2])}),!((x=T?.extensions)===null||x===void 0)&&x.molstar_bond_site){const I=(0,y.molstar_bond_site)(S);I&&l.writeCategory(I[0],I[1],I[2])}}function C(l,S,T=!1,A){var x;const M=(x=A?.encoder)!==null&&x!==void 0?x:e.CifWriter.createEncoder({binary:T});return M.startDataBlock(l),v(M,S,A),M.getData()}return go}var $O;function jr(){return $O||($O=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureProperties=e.StructureSymmetry=e.Unit=e.Structure=e.Bond=e.StructureElement=void 0;const t=At,r=xl();Object.defineProperty(e,"StructureElement",{enumerable:!0,get:function(){return r.StructureElement}});const n=Wa();Object.defineProperty(e,"Structure",{enumerable:!0,get:function(){return n.Structure}});const i=Zn();Object.defineProperty(e,"Unit",{enumerable:!0,get:function(){return i.Unit}});const c=OT();Object.defineProperty(e,"StructureSymmetry",{enumerable:!0,get:function(){return c.StructureSymmetry}});const o=IT();Object.defineProperty(e,"Bond",{enumerable:!0,get:function(){return o.Bond}});const s=Tl();Object.defineProperty(e,"StructureProperties",{enumerable:!0,get:function(){return s.StructureProperties}}
15),t.__exportStar(eI(),e),t.__exportStar(Aee(),e)})(Z2)),Z2}var XO;function fX(){if(XO)return Ss;XO=1,Object.defineProperty(Ss,"__esModule",{value:!0}),Ss.AtomSiteOperatorMappingSchema=Ss.AtomSiteOperatorMappingCategoryName=void 0,Ss.atom_site_operator_mapping=c;const e=jr(),t=Zn(),r=at(),n=$i(),i=lt();function c(_){const g=y(_);if(g.length!==0)return[f,g,{ignoreFilter:!0}]}Ss.AtomSiteOperatorMappingCategoryName="molstar_atom_site_operator_mapping",Ss.AtomSiteOperatorMappingSchema={molstar_atom_site_operator_mapping:{label_asym_id:i.Column.Schema.Str(),auth_asym_id:i.Column.Schema.Str(),operator_name:i.Column.Schema.Str(),suffix:i.Column.Schema.Str(),assembly_id:i.Column.Schema.Str(),assembly_operator_id:i.Column.Schema.Int(),symmetry_operator_index:i.Column.Schema.Int(),symmetry_hkl:i.Column.Schema.Vector(3),ncs_id:i.Column.Schema.Int()}};const o=(_,g)=>typeof g[_].operator.assembly>"u"?i.Column.ValueKinds.NotPresent:i.Column.ValueKinds.Present,s=(_,g)=>g[_].operator.spgrOp===-1?i.Column.ValueKinds.NotPresent:i.Column.ValueKinds.Present,h=n.CifWriter.fields().str("label_asym_id",(_,g)=>g[_].label_asym_id).str("auth_asym_id",(_,g)=>g[_].auth_asym_id).str("operator_name",(_,g)=>g[_].operator.name).str("suffix",(_,g)=>g[_].operator.suffix).str("assembly_id",(_,g)=>{var a;return((a=g[_].operator.assembly)===null||a===void 0?void 0:a.id)||""},{valueKind:o}).int("assembly_operator_id",(_,g)=>{var a;return((a=g[_].operator.assembly)===null||a===void 0?void 0:a.operId)||0},{valueKind:o}).int("symmetry_operator_index",(_,g)=>g[_].operator.spgrOp,{valueKind:s}).vec("symmetry_hkl",[(_,g)=>g[_].operator.hkl[0],(_,g)=>g[_].operator.hkl[1],(_,g)=>g[_].operator.hkl[2]],{valueKind:s}).int("ncs_id",(_,g)=>g[_].operator.ncsId,{valueKind:s}).getFields(),f={name:"molstar_atom_site_operator_mapping",instance(_){return{fields:h,source:[{data:_,rowCount:_.length}]}}};function y(_){const g=new Set,a=[];for(const d of _.structures){const p=e.StructureElement.Location.create(d);for(const u of d.units){const m=u.conformation.operator;if(!m.suffix||u.kind!==t.Unit.Kind.Atomic)continue;p.unit=u;const{elements:v}=u,b=r.Segmentation.transientSegments(u.model.atomicHierarchy.chainAtomSegments,v);for(;b.hasNext;){const P=b.move();p.element=v[P.start];const C=e.StructureProperties.chain.label_asym_id(p),l=`${C}${m.suffix}`;if(g.has(l))continue;g.add(l);const S=e.StructureProperties.chain.label_asym_id(p);a.push({label_asym_id:C,auth_asym_id:S,operator:m})}}}return a}return Ss}var jC={},KO;function Mee(){if(KO)return jC;KO=1,Object.defineProperty(jC,"__esModule",{value:!0}),jC.getAtomicDerivedData=i;const e=ma(),t=dt(),r=Sl(),n=Ct();function i(c,o,s,h){const{label_comp_id:f,type_symbol:y,_rowCount:_}=c.atoms,{_rowCount:g}=c.residues,{offsets:a}=o.residueAtomSegments,d=new Uint8Array(_);for(let l=0;l<_;++l)d[l]=(0,e.AtomNumber)(y.value(l));const p=new Int32Array(g),u=new Int32Array(g),m=new Int32Array(g),v=new Uint8Array(g),b=new Uint8Array(g),P=new Map,C=new Map;for(let l=0;l<g;++l){const S=f.value(a[l]),T=h;let A,x;if(P.has(S))A=P.get(S),x=C.get(S);else{let E;T.has(S)?E=T.get(S).type:(n.isProductionMode||console.info("chemComp not found",S),E=(0,t.getComponentType)(S)),A=(0,t.getMoleculeType)(E,S),x=(0,t.getPolymerType)(E,A),P.set(S,A),C.set(S,x)}v[l]=A,b[l]=x;const M=(0,r.getAtomIdForAtomRole)(x,"trace");let D=s.findAtomsOnResidue(l,M);if(D===-1){const E=(0,r.getAtomIdForAtomRole)(x,"coarseBackbone");D=s.findAtomsOnResidue(l,E),D===-1&&(0,t.isPolymer)(A)&&(D=s.findElementOnResidue(l,(0,t.ElementSymbol)("C")))}p[l]=D;const V=(0,r.getAtomIdForAtomRole)(x,"directionFrom");u[l]=s.findAtomsOnResidue(l,V);const R=(0,r.getAtomIdForAtomRole)(x,"directionTo");m[l]=s.findAtomsOnResidue(l,R)}return{atom:{atomicNumber:d},residue:{traceElementIndex:p,directionFromElementIndex:u,directionToElementIndex:m,moleculeType:v,polymerType:b}}}return jC}var GC={},YO;function Dee(){if(YO)return GC;YO=1,Object.defineProperty(GC,"__esModule",{value:!0}),GC.getAtomicIndex=a;const e=at(),t=H$(),r=_t();function n(d,p){return p?p.length===1?(0,r.cantorPairing)(p.charCodeAt(0),d):p.length===2?(0,r.cantorPairing)(p.charCo
15deAt(0),(0,r.cantorPairing)(p.charCodeAt(1),d)):`${d} ${p}`:d}function i(d,p,u,m){if(d.has(p)){const v=d.get(p);v.has(u)||v.set(u,m)}else{const v=new Map;d.set(p,v),v.set(u,m)}}function c(d){throw new Error(`Missing entity entry for entity id '${d}'.`)}function o(d,p,u){return{entities:d,segments:u,label_seq_id:e.SortedArray.ofSortedArray(p.residues.label_seq_id.toArray({array:Int32Array})),label_atom_id:p.atoms.label_atom_id,auth_atom_id:p.atoms.auth_atom_id,label_alt_id:p.atoms.label_alt_id,type_symbol:p.atoms.type_symbol,chain_index_entity_index:new Int32Array(p.chains._rowCount),entity_index_label_asym_id:new Map,chain_index_label_seq_id:new Map,auth_asym_id_auth_seq_id:new Map,chain_index_auth_seq_id:new Map,label_asym_id:new Map}}const s=t.AtomicIndex.EmptyResidueKey();class h{getEntityFromChain(p){return this.map.chain_index_entity_index[p]}findEntity(p){const u=this.map.label_asym_id.get(p);return u!==void 0?u:-1}findChainLabel(p){const u=this.entityIndex(p.label_entity_id);if(u<0||!this.map.entity_index_label_asym_id.has(u))return-1;const m=this.map.entity_index_label_asym_id.get(u);return m&&m.has(p.label_asym_id)?m.get(p.label_asym_id):-1}findChainAuth(p){if(!this.map.auth_asym_id_auth_seq_id.has(p.auth_asym_id))return-1;const u=this.map.auth_asym_id_auth_seq_id.get(p.auth_asym_id);return u.has(p.auth_seq_id)?u.get(p.auth_seq_id):-1}findResidue(p,u,m,v){let b;arguments.length===1?b=p:(s.label_entity_id=p,s.label_asym_id=u,s.auth_seq_id=m,s.pdbx_PDB_ins_code=v,b=s);const P=this.findChainLabel(b);if(P<0)return-1;const C=this.map.chain_index_auth_seq_id.get(P),l=n(b.auth_seq_id,b.pdbx_PDB_ins_code||"");return C.has(l)?C.get(l):-1}findResidueLabel(p){const u=this.findChainLabel(p);if(u<0)return-1;const m=this.map.chain_index_label_seq_id.get(u),v=n(p.label_seq_id,p.pdbx_PDB_ins_code||"");return m.has(v)?m.get(v):-1}findResidueAuth(p){const u=this.findChainAuth(p);if(u<0)return-1;const m=this.map.chain_index_auth_seq_id.get(u),v=n(p.auth_seq_id,p.pdbx_PDB_ins_code||"");return m.has(v)?m.get(v):-1}findResidueInsertion(p){const u=this.findChainLabel(p);if(u<0)return-1;const m=this.map.chain_index_label_seq_id.get(u),v=n(p.label_seq_id,p.pdbx_PDB_ins_code||"");if(m.has(v))return m.get(v);const b=e.SortedArray.findPredecessorIndex(this.map.label_seq_id,p.label_seq_id),P=t.AtomicHierarchy.chainStartResidueIndex(this.map.segments,u);if(b<P)return P;const C=t.AtomicHierarchy.chainEndResidueIndexExcl(this.map.segments,u)-1;return b>=C?C:b}findAtom(p){const u=this.findResidue(p);return u<0?-1:typeof p.label_alt_id>"u"?f(this.residueOffsets[u],this.residueOffsets[u+1],this.map.label_atom_id,p.label_atom_id):_(this.residueOffsets[u],this.residueOffsets[u+1],this.map.label_atom_id,this.map.label_alt_id,p.label_atom_id,p.label_alt_id)}findAtomAuth(p){const u=this.findResidueAuth(p);return u<0?-1:typeof p.label_alt_id>"u"?f(this.residueOffsets[u],this.residueOffsets[u+1],this.map.auth_atom_id,p.auth_atom_id):_(this.residueOffsets[u],this.residueOffsets[u+1],this.map.auth_atom_id,this.map.label_alt_id,p.auth_atom_id,p.label_alt_id)}findAtomOnResidue(p,u,m){return typeof m>"u"?f(this.residueOffsets[p],this.residueOffsets[p+1],this.map.label_atom_id,u):_(this.residueOffsets[p],this.residueOffsets[p+1],this.map.label_atom_id,this.map.label_alt_id,u,m)}findAtomsOnResidue(p,u){return y(this.residueOffsets[p],this.residueOffsets[p+1],this.map.label_atom_id,u)}findElementOnResidue(p,u){return g(this.residueOffsets[p],this.residueOffsets[p+1],this.map.type_symbol,u)}constructor(p){this.map=p,this.entityIndex=p.entities.getEntityIndex,this.residueOffsets=this.map.segments.residueAtomSegments.offsets}}function f(d,p,u,m){for(let v=d;v<p;v++)if(u.value(v)===m)return v;return-1}function y(d,p,u,m){for(let v=d;v<p;v++)if(m.has(u.value(v)))return v;return-1}function _(d,p,u,m,v,b){for(let P=d;P<p;P++)if(u.value(P)===v&&m.value(P)===b)return P;return-1}function g(d,p,u,m){for(let v=d;v<p;v++)if(u.value(v)===m)return v;return-1}function a(d,p,u){const m=o(p,d,u),{label_seq_id:v,auth_seq_id:b,pdbx_PDB_ins_code:P}=d.residues,{label_entity_id:C,label_asym_id:l,auth_asym_id:S}=d.chains,T=e.Interval.ofBounds(0,d.atoms._rowCount),A=e.Segmentation.transientSegments(u.chainAtomSegments,T);for(;A.hasNext;){const x=A.move(),M=x.index,D=p.getEntityIndex(C.value(M));D<0&&c(C.value(M)),m.chain_index_entity_index[M]=D;const V=S.value(M);let R=m.auth_asym_id_auth_seq_id.get(V);R||(R=new Map,m.auth_asym_id_auth_seq_id.set(V,R));const E=l.value(M);m.label_asym_id.has(E)||m.label_asym_id.set(E,D),i(m.entity_index_label_asym_id,D,E,M);const I=new Map,B=new Map;m.chain_index_label_seq_id.set(M,I),m.chain_index_auth_seq_id.set(M,B);const w=e.Segmentation.transientSegments(u.residueAtomSegments,T,x);for(;w.hasNext;){const F=w.move().index,L=b.value(F),U=P.value(F);I.set(n(v.value(F),U),F),B.set(n(L,U),F),R.set(L,M)}}return new h(m)}return GC}var QO;function Iee(){if(QO)return dC;QO=1,Object.defineProperty(dC,"__esModule",{value:!0}),dC.getAtomicHierarchyAndConformation=P;const e=lt(),t=at(),r=_T(),n=rt(),i=Ge(),c=fX(),o=ma(),s=Mee(),h=Dee(),f=dt(),y=Vt(),_=Q_(),g=Mi();function a(C){if(C._rowCount===0)return{residues:[],chains:[]};const l=0,S=C._rowCount,T=[l],A=[l],{label_entity_id:x,label_asym_id:M,label_seq_id:D,auth_seq_id:V,pdbx_PDB_ins_code:R}=C;for(let E=l+1;E<S;E++){const I=!x.areValuesEqual(E-1,E)||!M.areValuesEqual(E-1,E);(I||!D.areValuesEqual(E-1,E)||!V.areValuesEqual(E-1,E)||!R.areValuesEqual(E-1,E))&&(T[T.length]=E),I&&(A[A.length]=E)}return{residues:T,chains:A}}function d(C,l,S){const T=e.Table.ofColumns(o.AtomsSchema,{type_symbol:e.Column.ofArray({array:e.Column.mapToArray(C.type_symbol,f.ElementSymbol),schema:e.Column.Schema.Aliased(e.Column.Schema.str)}),label_atom_id:C.label_atom_id,auth_atom_id:C.auth_atom_id,label_alt_id:C.label_alt_id,label_comp_id:C.label_comp_id,auth_comp_id:C.auth_comp_id,pdbx_formal_charge:C.pdbx_formal_charge}),A=e.Table.view(C,o.ResiduesSchema,S.residues),x=e.Table.view(C,o.ChainsSchema,S.chains);if(!A.label_seq_id.isDefined){const D=new Int32Array(A.label_seq_id.rowCount),{residues:V,chains:R}=S;let E=0,I=0;for(let B=0,w=D.length;B<w;++B)V[B]>=R[E+1]&&(E+=1,I=0),D[B]=++I;A.label_seq_id=e.Column.ofIntArray(D)}e.Table.columnToArray(A,"label_seq_id",Int32Array),e.Table.columnToArray(A,"auth_seq_id",Int32Array);const M=p(l,S.residues.length,S.residues);return{atoms:T,residues:A,chains:x,atomSourceIndex:l,residueSourceIndex:M}}function p(C,l,S){const T=new Uint32Array(l);for(let x=0;x<l;x++){const M=S[x],D=x+1<l?S[x+1]:C.rowCount;let V=C.value(M);for(let R=M+1;R<D;R++){const E=C.value(R);E<V&&(V=E)}T[x]=V}const A=(0,y.range)(l).sort((x,M)=>T[x]-T[M]);for(let x=0;x<l;x++)T[A[x]]=x;return e.Column.ofIntArray(T)}function u(C){return{id:_.UUID.create22(),atomId:C.id,occupancy:C.occupancy.isDefined?C.occupancy:e.Column.ofConst(1,C._rowCount,e.Column.Schema.float),B_iso_or_equiv:C.B_
15iso_or_equiv,xyzDefined:C.Cartn_x.isDefined&&C.Cartn_y.isDefined&&C.Cartn_z.isDefined,x:C.Cartn_x.toArray({array:Float32Array}),y:C.Cartn_y.toArray({array:Float32Array}),z:C.Cartn_z.toArray({array:Float32Array})}}function m(C,l){return e.Table.areEqual(C.chains,l.chains)&&e.Table.areEqual(C.residues,l.residues)&&e.Table.areEqual(C.atoms,l.atoms)}function v(C,l){const S=new Map;if(!g.MmcifFormat.is(l))return S;const{molstar_atom_site_operator_mapping:T}=(0,r.toDatabase)(c.AtomSiteOperatorMappingSchema,l.data.frame);if(T._rowCount===0)return S;const A=new Map,x=new Map;for(let E=0;E<T._rowCount;E++){const I=T.assembly_operator_id.valueKind(E)===e.Column.ValueKinds.Present?{id:T.assembly_id.value(E),operList:[],operId:T.assembly_operator_id.value(E)}:void 0,B=n.SymmetryOperator.create(T.operator_name.value(E),i.Mat4.identity(),{assembly:I,spgrOp:T.symmetry_operator_index.valueKind(E)===e.Column.ValueKinds.Present?T.symmetry_operator_index.value(E):void 0,hkl:i.Vec3.ofArray(T.symmetry_hkl.value(E)),ncsId:T.ncs_id.value(E)}),w=T.suffix.value(E),O=T.label_asym_id.value(E);A.set(`${O}${w}`,{name:O,operator:B});const F=T.auth_asym_id.value(E);x.set(`${F}${w}`,F)}const{label_asym_id:M,auth_asym_id:D}=C.chains,V=new Array(M.rowCount),R=new Array(M.rowCount);for(let E=0;E<M.rowCount;E++){const I=M.value(E),B=D.value(E);if(!A.has(I)){V[E]=I,R[E]=B;continue}const{name:w,operator:O}=A.get(I);S.set(E,O),V[E]=w,R[E]=x.get(B)||B}return C.chains.label_asym_id=e.Column.ofArray({array:V,valueKind:C.chains.label_asym_id.valueKind,schema:C.chains.label_asym_id.schema}),C.chains.auth_asym_id=e.Column.ofArray({array:R,valueKind:C.chains.auth_asym_id.valueKind,schema:C.chains.auth_asym_id.schema}),S}function b(C,l,S,T,A,x){const M=a(C),D=d(C,l,M),V=v(D,A);if(x&&m(x.atomicHierarchy,D))return{sameAsPrevious:!0,hierarchy:x.atomicHierarchy,chainOperatorMapping:V};const R={residueAtomSegments:t.Segmentation.ofOffsets(M.residues,t.Interval.ofBounds(0,C._rowCount)),chainAtomSegments:t.Segmentation.ofOffsets(M.chains,t.Interval.ofBounds(0,C._rowCount))},E=(0,h.getAtomicIndex)(D,S,R),I=(0,s.getAtomicDerivedData)(D,R,E,T);return{sameAsPrevious:!1,hierarchy:{...D,...R,index:E,derived:I},chainOperatorMapping:V}}function P(C,l,S,T,A,x){const{sameAsPrevious:M,hierarchy:D,chainOperatorMapping:V}=b(C,l,S,T,A,x),R=u(C);return{sameAsPrevious:M,hierarchy:D,conformation:R,chainOperatorMapping:V}}return dC}var vx={},bx={},_x={},ZO;function wee(){return ZO||(ZO=1,Object.defineProperty(_x,"__esModule",{value:!0})),_x}var Vc={},ud={},JO;function mX(){if(JO)return ud;JO=1,Object.defineProperty(ud,"__esModule",{value:!0}),ud.EmptyCoarseIndex=void 0,ud.getCoarseIndex=e;function e(i){return new r(i)}class t{findElement(c,o){return o.kind=void 0,o.index=-1,!1}findSphereElement(c){return-1}findGaussianElement(c){return-1}}ud.EmptyCoarseIndex=new t;class r{get sphereMapping(){return this._sphereMapping||(this._sphereMapping=n(this.data.spheres)),this._sphereMapping}get gaussianMapping(){return this._gaussianMapping||(this._gaussianMapping=n(this.data.gaussians)),this._gaussianMapping}findSphereElement(c){var o;let h=this.sphereMapping[c.label_entity_id];return!h||(h=h[c.label_asym_id],!h)?-1:(o=h[c.label_seq_id])!==null&&o!==void 0?o:-1}findGaussianElement(c){var o;let h=this.gaussianMapping[c.label_entity_id];return!h||(h=h[c.label_asym_id],!h)?-1:(o=h[c.label_seq_id])!==null&&o!==void 0?o:-1}findElement(c,o){const s=this.findSphereElement(c);if(s>=0)return o.kind="spheres",o.index=s,!0;const h=this.findGaussianElement(c);return h>=0?(o.kind="gaussians",o.index=h,!0):!1}constructor(c){this.data=c,this._sphereMapping=void 0,this._gaussianMapping=void 0}}function n({count:i,entity_id:c,asym_id:o,seq_id_begin:s,seq_id_end:h}){const f={};for(let y=0;y<i;y++){const _=c.value(y),g=o.value(y);f[_]||(f[_]={}),f[_][g]||(f[_][g]={});const a=f[_][g],d=s.value(y),p=h.value(y);for(let u=d;u<=p;u++)a[u]=y}return f}return ud}var ek;function Vee(){if(ek)return Vc;ek=1,Object.defineProperty(Vc,"__esModule",{value:!0}),Vc.CoarseHierarchy=void 0,Vc.CoarseElementReference=c,Vc.CoarseElementKey=o;const e=lt(),t=at(),r=Ga(),n=mX(),i={chainKey:[],entityKey:[],findSequenceKey:()=>-1,findChainKey:()=>-1,getEntityFromChain:()=>
15-1,count:0,entity_id:e.Column.Undefined(0,e.Column.Schema.str),asym_id:e.Column.Undefined(0,e.Column.Schema.str),seq_id_begin:e.Column.Undefined(0,e.Column.Schema.int),seq_id_end:e.Column.Undefined(0,e.Column.Schema.int),chainElementSegments:t.Segmentation.create([]),polymerRanges:r.SortedRanges.ofSortedRanges([]),gapRanges:r.SortedRanges.ofSortedRanges([])};function c(){return{kind:void 0,index:-1}}function o(){return{label_entity_id:"",label_asym_id:"",label_seq_id:-1}}var s;return(function(h){h.Empty={isDefined:!1,spheres:i,gaussians:i,index:n.EmptyCoarseIndex}})(s||(Vc.CoarseHierarchy=s={})),Vc}var tk;function Eee(){return tk||(tk=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(wee(),e),t.__exportStar(Vee(),e)})(bx)),bx}var zC={},rk;function Bee(){if(rk)return zC;rk=1,Object.defineProperty(zC,"__esModule",{value:!0}),zC.getCoarseKeys=o;const e=Ga(),t=at();function r(s,h,f){if(s.has(h))return s.get(h);const y=f.index++;return s.set(h,y),y}function n(s,h){if(s.has(h))return s.get(h);const f=new Map;return s.set(h,f),f}function i(s,h,f){const y=s.getEntityIndex;return{findChainKey:(a,d)=>{const p=y(a);if(p<0)return-1;const u=h.get(p);return u.has(d)?u.get(d):-1},findSequenceKey:(a,d,p)=>{const u=y(a);if(u<0)return-1;const m=h.get(u);if(m===void 0)return-1;const v=m.get(d);if(v===void 0)return-1;const b=f.get(v),{elementIndices:P,seqRanges:C}=b,l=e.SortedRanges.firstIntersectionIndex(C,t.OrderedSet.ofSingleton(p));return l!==-1?P[l]:-1}}}function c(s){throw new Error(`Missing entity entry for entity id '${s}'.`)}function o(s,h){const{entity_id:f,asym_id:y,seq_id_begin:_,seq_id_end:g,count:a,chainElementSegments:d}=s,p=new Map,u=new Map,m={index:0},v=new Int32Array(a),b=new Int32Array(a),P=new Int32Array(d.count);for(let T=0;T<a;T++)b[T]=h.getEntityIndex(f.value(T)),b[T]<0&&c(f.value(T));for(let T=0;T<d.count;T++){const A=d.offsets[T],x=d.offsets[T+1],M=b[A];P[T]=M;const D=n(u,M),V=r(D,y.value(A),m);for(let B=A;B<x;B++)v[B]=V;const R=[],E=[];for(let B=A;B<x;B++){const w=_.value(B),O=g.value(B);R.push(B),E.push(w,O)}const I={elementIndices:R,seqRanges:e.SortedRanges.ofSortedRanges(E)};p.set(V,I)}const{findChainKey:C,findSequenceKey:l}=i(h,u,p);return{chainKey:v,entityKey:b,findSequenceKey:l,findChainKey:C,getEntityFromChain:T=>P[T]}}return zC}var HC={},nk;function Ree(){if(nk)return HC;nk=1,Object.defineProperty(HC,"__esModule",{value:!0}),HC.getCoarseRanges=r;const e=at(),t=Ga();function r(n,i){const c=[],o=[],s=e.Segmentation.transientSegments(n.chainElementSegments,e.Interval.ofBounds(0,n.count)),{seq_id_begin:h,seq_id_end:f}=n;for(;s.hasNext;){const{start:y,end:_}=s.move();let g=-1,a=-1;for(let d=y;d<_;++d){const p=f.value(d);d===y?(g=d,a=f.value(d)):h.value(d)-a>1&&(c.push(g,d-1),o.push(d-1,d),g=d),d===_-1&&c.push(g,d),a=p}}return{polymerRanges:t.SortedRanges.ofSortedRanges(c),gapRanges:t.SortedRanges.ofSortedRanges(o)}}return HC}var ik;function Oee(){return ik||(ik=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.EmptyCoarse=void 0,e.getCoarse=f;const t=Eee(),r=Bee(),n=et(),i=at(),c=Ge(),o=Ree(),s=vn(),h=mX();e.EmptyCoarse={hierarchy:t.CoarseHierarchy.Empty,conformation:void 0};function f(d,p){const{ihm_sphere_obj_site:u,ihm_gaussian_obj_site:m}=d;if(u._rowCount===0&&m._rowCount===0)return e.EmptyCoarse;const v=a(u),b=y(u),P=(0,r.getCoarseKeys)(v,d.entities),C=(0,o.getCoarseRanges)(v,p),l=a(m),S=_(m),T=(0,r.getCoarseKeys)(l,d.entities),A=(0,o.getCoarseRanges)(l,p);return{hierarchy:{isDefined:!0,spheres:{...v,...P,...C},gaussians:{...l,...T,...A},index:(0,h.getCoarseIndex)({spheres:v,gaussians:l})},conformation:{id:n.UUID.create22(),spheres:b,gaussians:S}}}function y(d){return{x:d.Cartn_x.toArray({array:Float32Array}),y:d.Cartn_y.toArray({array:Float32Array}),z:d.Cartn_z.toArray({array:Float32Array}),radius:d.object_radius.toArray({array:Float32Array}),rmsf:d.rmsf.toArray({array:Float32Array})}}function _(d){const p=s.BasicSchema.ihm_gaussian_obj_site.covariance_matrix.space,u=[],{covariance_matrix:m}=d;for(let v=0,b=m.rowCount;v<b;v++)u[v]=c.Tensor.toMat3((0,c.Mat3)(),p,m.value(v));return{x:d.mean_Cartn_x.toArray({array:Float32Array}),y:d.mean_Cartn_y.toArray({array:Float32Array}),z:d.mean_Cartn_z.toArray({array:Float32Array}),weight:d.weight.toArray({array:Float32Array}),covariance_matrix:u}}function g(d,p,u){const m=[0];for(let v=1,b=d.rowCount;v<b;v++)!d.areValuesEqual(v-1,v)&&(m[m.length]=v);return{chainElementSegments:i.Segmentation.ofOffsets(m,i.Interval.ofBounds(0,d.rowCount))}}function a(d){const{entity_id:p,seq_id_begin:u,seq_id_end:m,asym_id:v}=d;return{count:p.rowCount,entity_id:p,asym_id:v,seq_id_begin:u,seq_id_end:m,...g(v)}}})(vx)),vx}var WC={},ih={},Sx={},ah={},Ec={},ak;function kee(){if(ak)return Ec;ak=1,Object.defineProperty(Ec,"__esModule",{value:!0}),Ec.getProteinOneLetterCode=n,Ec.getRnaOneLetterCode=i,Ec.getDnaOneLetterCode=c,Ec.getNucleicOneLetterCode=o;const e={HIS:"H",ARG:"R",LYS:"K",ILE:"I",PHE:"F",LEU:"L",TRP:"W",ALA:"A",MET:"M",PRO:"P",CYS:"C",ASN:"N",VAL:"V",GLY:"G",SER:"S",GLN:"Q",TYR:"Y",ASP:"D",GLU:"E",THR:"T",SEC:"U",PYL:"O",HSD:"H",HSE:"H",HSP:"H",LSN:"K",ASPP:"D",GLUP:"E",HID:"H",HIE:"H",HIP:"H",LYN:"K",ASH:"D",GLH:"E"},t={DA:"A",DC:"C",DG:"G",DT:"T",DU:"U"},r={A:"A",C:"C",G:"G",T:"T",U:"U"};function n(s){return e[s]||"X"}function i(s){return r[s]||"X"}function c(s){return t[s]||"X"}function o(s){return r[s]||t[s]||"X"}return Ec}var ok;function Fee(){if(ok)return ah;ok=1,Object.defineProperty(ah,"__esModule",{value:!0}),ah.Sequence=void 0;const e=kee(),t=lt(),r=Gt();var n;return(function(i){let c;(function(a){a.Protein="protein",a.RNA="RNA",a.DNA="DNA",a.Generic="generic"})(c=i.Kind||(i.Kind={}));function o(a){const d=a.code.toArray();return(d instanceof Array?d:Array.from(d)).join("")}i.getSequenceString=o;function s(a){for(let d=0,p=Math.min(a.rowCount,10);d<p;d++){const u=a.value(d)||"";if((0,e.getProteinOneLetterCode)(u)!=="X")return c.Protein;if((0,e.getRnaOneLetterCode)(u)!=="X")return c.RNA;if((0,e.getDnaOneLetterCode)(u)!=="X")return c.DNA}return c.Generic}function h(a,d){let p;switch(a){case c.Protein:p=e.getProteinOneLetterCode;break;case c.DNA:p=e.getDnaOneLetterCode;break;case c.RNA:p=e.getRnaOneLetterCode;break;case c.Generic:p=()=>"X";break;default:(0,r.assertUnreachable)(a)}return p}function f(a,d){if(d.rowCount===0)throw new Error("cannot be empty");const p=s(a);return new y(p,a,d)}i.ofResidueNames=f;class y{index(d){return this.indexMap.get(d)}constructor(d,p,u){this.kind=d,this.microHet=new Map;const m=h(d),v=[],b=[],P=[],C=new Map;let l=0;const S=new Map;for(let A=0,x=u.rowCount;A<x;++A){const M=u.value(A);if(S.has(M))C.has(M)?C.get(M).push(p.value(A)):C.set(M,[b[S.get(M)],p.value(A)]);else{S.set(M,l);const D=p.value(A);b[l]=D,P[l]=M,v[l]=m(D),l+=1}}const T=[];for(let A=0,x=l;A<x;++A){const M=C.get(P[A]);if(M){const D=M.map(V=>{const R=m(V);return R==="X"?V:R});T[A]=`(${D.join("|")})`}else T[A]=v[A]==="X"?b[A]:v[A]}
15this.length=l,this.code=t.Column.ofStringArray(v),this.compId=t.Column.ofStringArray(b),this.seqId=t.Column.ofIntArray(P),this.label=t.Column.ofStringArray(T),this.microHet=C,this.indexMap=S}}function _(a,d){const p=c.Generic;return new g(p,a,d)}i.ofSequenceRanges=_;class g{index(d){return d-this.minSeqId}constructor(d,p,u){this.kind=d,this.seqIdStart=p,this.seqIdEnd=u,this.microHet=new Map;let m=0,v=Number.MAX_SAFE_INTEGER;for(let P=0,C=this.seqIdStart.rowCount;P<C;P++){const l=this.seqIdStart.value(P),S=this.seqIdEnd.value(P);l<v&&(v=l),m<S&&(m=S)}const b=m-v+1;this.code=t.Column.ofConst("X",b,t.Column.Schema.str),this.label=t.Column.ofConst("",b,t.Column.Schema.str),this.seqId=t.Column.ofLambda({value:P=>P+v+1,rowCount:b,schema:t.Column.Schema.int}),this.compId=t.Column.ofConst("",b,t.Column.Schema.str),this.length=b,this.minSeqId=v}}})(n||(ah.Sequence=n={})),ah}var sk;function pX(){return sk||(sk=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),At.__exportStar(Fee(),e)})(Sx)),Sx}var ck;function hX(){if(ck)return ih;ck=1,Object.defineProperty(ih,"__esModule",{value:!0}),ih.StructureSequence=void 0;const e=lt(),t=pX();var r;return(function(n){const i={byEntityKey:{},sequences:[]};function c(...y){const _=[],g={};for(let a=0,d=y.length;a<d;++a)_.push(...y[a].sequences),Object.assign(g,y[a].byEntityKey);return{sequences:_,byEntityKey:g}}function o(y,_,g){const a=s(y,_),d=g.isDefined?h(y,g):i;return c(a,d)}n.fromHierarchy=o;function s(y,_){const{label_comp_id:g}=_.atoms,{label_seq_id:a}=_.residues,{chainAtomSegments:d,residueAtomSegments:p}=_,{count:u,offsets:m}=d,v={},b=[];if(u===1&&m[0]===0&&m[1]===0)return{byEntityKey:v,sequences:b};for(let P=0,C=_.chains._rowCount;P<C;P++){const l=_.index.getEntityFromChain(P);if(v[l]!==void 0||y.data.type.value(l)!=="polymer")continue;const S=P;for(P++;P<C&&l===_.index.getEntityFromChain(P)&&y.data.type.value(l)!=="polymer";)P++;P--;const T=p.index[m[S]],A=p.index[m[P+1]-1]+1,x=e.Column.window(a,T,A),M=[];for(let V=T;V<A;++V)M.push(g.value(p.offsets[V]));const D=e.Column.ofStringArray(M);v[l]={entityId:y.data.id.value(l),sequence:t.Sequence.ofResidueNames(D,x)},b.push(v[l])}return{byEntityKey:v,sequences:b}}n.fromAtomicHierarchy=s;function h(y,_){const g=f(y,_.spheres),a=f(y,_.gaussians);return c(g,a)}n.fromCoarseHierarchy=h;function f(y,_){const{chainElementSegments:g,seq_id_begin:a,seq_id_end:d}=_,{count:p,offsets:u}=g,m={},v=[];if(p===1&&u[0]===0&&u[1]===0)return{byEntityKey:m,sequences:v};for(let b=0,P=p;b<P;b++){const C=_.getEntityFromChain(b);if(m[C]!==void 0)continue;const l=b;for(b++;b<P&&C===_.getEntityFromChain(b);)b++;b--;const S=u[l],T=u[b+1]-1,A=e.Column.window(a,S,T),x=e.Column.window(d,S,T);m[C]={entityId:y.data.id.value(C),sequence:t.Sequence.ofSequenceRanges(A,x)},v.push(m[C])}return{byEntityKey:m,sequences:v}}n.fromCoarseElements=f})(r||(ih.StructureSequence=r={})),ih}var uk;function Lee(){if(uk)return WC;uk=1,Object.defineProperty(WC,"__esModule",{value:!0}),WC.getSequence=n;const e=hX(),t=lt(),r=pX();function n(i,c,o,s){if(!i.entity_poly_seq||!i.entity_poly_seq._rowCount)return e.StructureSequence.fromHierarchy(c,o,s);const{entity_id:h,num:f,mon_id:y}=i.entity_poly_seq,_={},g=[],a=h.rowCount;let d=0;for(;d<a;){const p=d;for(;d<a-1&&h.areValuesEqual(d,d+1);)d++;d++;const u=h.value(p),m=t.Column.window(y,p,d),v=t.Column.window(f,p,d),b=c.getEntityIndex(u);_[b]={entityId:u,sequence:r.Sequence.ofResidueNames(m,v)},g.push(_[b])}return{byEntityKey:_,sequences:g}}return WC}var $C={},lk;function Nee(){if(lk)return $C;lk=1,Object.defineProperty($C,"__esModule",{value:!0}),$C.sortAtomSite=n;const e=_t(),t=lt(),r=Vt();async function n(i,c,o,s){const h=(0,e.createRangeArray)(o,s-1),{label_entity_id:f,label_asym_id:y,label_seq_id:_}=c,g=(0,e.makeBuckets)(h,f.value);i.shouldUpdate&&await i.update();for(let a=0,d=g.length-1;a<d;a++){const p=(0,e.makeBuckets)(h,y.value,{start:g[a],end:g[a+1]});for(let u=0,m=p.length-1;u<m;u++){const v=p[u];_.valueKind(v)===t.Column.ValueKinds.Present&&((0,e.makeBuckets)(h,_.value,{sort:!0,start:v,end:p[u+1]}),i.shouldUpdate&&await i.update())}i.shouldUpdate&&await i.update()}return(0,r.arrayIsIdentity)(h)&&h.length===c._rowCount?{atom_site:c,sourceIndex:t.Column.ofIntArray(h)}:{atom_site:t.Table.view(c,c._schema,h),sourceIndex:t.Column.ofIntArray(h)}}return $C}var XC={},dk;function qee(){if(dk)return XC;dk=1,Object.defineProperty(XC,"__esModule",{value:!0}),XC.getAtomicRanges=o;const e=at(),t=Ga(),r=dt(),n=Sl(),i=Ge();function c(s,h,f,y,_){const{polymerType:g,traceElementIndex:a,directionFromElementIndex:d,directionToElementIndex:p}=_.residue,u=g[s],m=g[h];if(u===r.PolymerType.NA||m===r.PolymerType.NA||a[s]===-1||a[h]===-1)return!1;let v=y.findAtomsOnResidue(s,(0,n.getAtomIdForAtomRole)(u,"backboneStart")),b=y.findAtomsOnResidue(h,(0,n.getAtomIdForAtomRole)(m,"backboneEnd"));(v===-1||b===-1)&&(v=y.findAtomsOnResidue(s,(0,n.getAtomIdForAtomRole)(u,"coarseBackbone")),b=y.findAtomsOnResidue(h,(0,n.getAtomIdForAtomRole)(m,"coarseBackbone")));const{x:P,y:C,z:l}=f,S=i.Vec3.create(P[v],C[v],l[v]),T=i.Vec3.create(P[b],C[b],l[b]),A=d[s]===-1||p[s]===-1||d[h]===-1||p[h]===-1;return i.Vec3.distance(S,T)<(A?10:3)}
15function o(s,h,f,y){const _=[],g=[],a=new Map,d=e.Segmentation.transientSegments(s.chainAtomSegments,e.Interval.ofBounds(0,s.atoms._rowCount)),p=e.Segmentation.transientSegments(s.residueAtomSegments,e.Interval.ofBounds(0,s.atoms._rowCount)),{index:u,derived:m}=s,{label_seq_id:v}=s.residues,{label_entity_id:b}=s.chains,{moleculeType:P,traceElementIndex:C}=m.residue;let l,S,T,A;for(;d.hasNext;){const x=d.move();p.setSegment(x),l=-1,S=-1,T=-1,A=-1;const M=h.getEntityIndex(b.value(x.index)),D=y.byEntityKey[M],V=D?D.sequence.seqId.value(D.sequence.seqId.rowCount-1):-1,R=s.residueAtomSegments.index[x.start],E=s.residueAtomSegments.index[x.end-1],I=v.value(R),B=v.value(E);for(I===1&&B===V&&f.xyzDefined&&c(R,E,f,u,m)&&(a.set(R,E),a.set(E,R));p.hasNext;){const w=p.move(),O=w.index,F=v.value(O);if((0,r.isPolymer)(P[O])&&C[O]!==-1)if(A!==-1)if(F!==l+1)_.push(A,T-1),g.push(S,w.end-1),A=w.start;else if(!p.hasNext)_.push(A,w.end-1);else{const L=s.residueAtomSegments.index[w.start],U=s.residueAtomSegments.index[T-1];f.xyzDefined&&!c(L,U,f,s.index,m)&&(_.push(A,T-1),g.push(S,w.end-1),A=w.start)}else A=w.start;else A!==-1&&(_.push(A,T-1),A=-1);S=w.start,T=w.end,l=F}}return{polymerRanges:t.SortedRanges.ofSortedRanges(_),gapRanges:t.SortedRanges.ofSortedRanges(g),cyclicPolymerMap:a}}return XC}var Bc={},fk;function Uee(){if(fk)return Bc;fk=1,Object.defineProperty(Bc,"__esModule",{value:!0}),Bc.getMissingResidues=i,Bc.getChemicalComponentMap=o,Bc.getSaccharideComponentMap=s,Bc.getStructAsymMap=f;const e=lt(),t=dt(),r=xf(),n=Af();function i(y){const _=new Map,g=(d,p,u)=>`${d}|${p}|${u}`,a=y.pdbx_unobs_or_zero_occ_residues;if(a._rowCount>0)for(let d=0,p=a._rowCount;d<p;++d){const u=g(a.PDB_model_num.value(d),a.label_asym_id.value(d),a.label_seq_id.value(d));_.set(u,{polymer_flag:a.polymer_flag.value(d),occupancy_flag:a.occupancy_flag.value(d)})}else y.entity_poly_seq._rowCount>0&&c(y,_,g);return{has:(d,p,u)=>_.has(g(d,p,u)),get:(d,p,u)=>_.get(g(d,p,u)),size:_.size}}function c(y,_,g){const a=new Map,{id:d,entity_id:p}=y.struct_asym;for(let T=0,A=d.rowCount;T<A;++T){const x=p.value(T),M=d.value(T);a.has(x)?a.get(x).push(M):a.set(x,[M])}const u=new Set,m=new Set,{label_asym_id:v,label_seq_id:b,pdbx_PDB_model_num:P}=y.atom_site;for(let T=0,A=v.rowCount;T<A;++T){if(b.valueKind(T)!==e.Column.ValueKinds.Present)continue;const x=P.value(T);m.add(x),u.add(g(x,v.value(T),b.value(T)))}m.size===0&&m.add(1);const C=Array.from(m),{entity_id:l,num:S}=y.entity_poly_seq;for(let T=0,A=l.rowCount;T<A;++T){const x=a.get(l.value(T));if(!x)continue;const M=S.value(T);for(const D of x)for(const V of C){const R=g(V,D,M);u.has(R)||_.set(R,{polymer_flag:"y",occupancy_flag:1})}}}function o(y){const _=new Map;if(y.chem_comp._rowCount>0){const{id:g,type:a}=y.chem_comp;for(let d=0,p=g.rowCount;d<p;++d){const u=g.value(d),m=e.Table.getRow(y.chem_comp,d);a.valueKind(d)!==e.Column.ValueKinds.Present&&(m.type=(0,t.getComponentType)(u)),_.set(u,m)}}else h(y).forEach(a=>{_.set(a,(0,t.getDefaultChemicalComponent)(a))});return _}function s(y){const _=new Map;if(y.pdbx_chem_comp_identifier._rowCount>0){const{comp_id:g,type:a,identifier:d}=y.pdbx_chem_comp_identifier;for(let p=0,u=g.rowCount;p<u;++p)if(a.value(p)==="SNFG CARBOHYDRATE SYMBOL"||a.value(p)==="SNFG CARB SYMBOL"){const m=d.value(p),v=r.SaccharidesSnfgMap.get(m);v?_.set(g.value(p),v):console.warn(`Unknown SNFG name '${m}'`)}}if(y.chem_comp._rowCount>0){const{id:g,type:a}=y.chem_comp;for(let d=0,p=g.rowCount;d<p;++d){const u=g.value(d);if(_.has(u))continue;const m=a.value(d);r.SaccharideCompIdMap.has(u)?_.set(u,r.SaccharideCompIdMap.get(u)):(0,t.getMoleculeType)(m,u)===t.MoleculeType.Saccharide&&_.set(u,r.UnknownSaccharideComponent)}}else{const g=h(y);r.SaccharideCompIdMap.forEach((a,d)=>{!_.has(d)&&g.has(d)&&_.set(d,a)})}return _}const h=(0,n.memoize1)(y=>{const _=new Set,{label_comp_id:g,auth_comp_id:a}=y.atom_site,d=g.isDefined?g:a;for(let p=0,u=d.rowCount;p<u;++p)_.add(d.value(p));return _});function f(y,_){const g=new Map,{auth_asym_id:a,label_asym_id:d,label_entity_id:p}=y.chains;for(let u=0,m=y.chains._rowCount;u<m;u++){const v=d.value(u);g.set(v,{id:v,auth_id:a.value(u),entity_id:p.value(u)})}if(_?.struct_asym._rowCount){const{id:u,entity_id:m}=_.struct_asym;for(let v=0,b=u.rowCount;v<b;++v){const P=u.value(v);g.has(P)||g.set(P,{id:P,auth_id:"",entity_id:m.value(v)})}}return g}return Bc}var oh={},sh={},mk;function jee(){if(mk)return sh;mk=1,Object.defineProperty(sh,"__esModule",{value:!0}),sh.EntitySubtype=void 0;const e=lt();return sh.EntitySubtype=e.Column.Schema.Aliased(e.Column.Schema.Str()),sh}var pk;function Gee(){if(pk)return oh;pk=1,Object.defineProperty(oh,"__esModule",{value:!0}),oh.getEntityData=i,oh.getEntitiesWithPRD=c;const e=lt(),t=jee(),r=dt(),n=vn();function i(o){let s;if(o.entity.id.isDefined)s=o.entity;else{const a=new Set,d=[],p=[],{label_entity_id:u,label_comp_id:m}=o.atom_site;for(let P=0,C=o.atom_site._rowCount;P<C;P++){const l=u.value(P);a.has(l)||(d.push(l),p.push((0,r.getEntityType)(m.value(P))),a.add(l))}const{entity_id:v}=o.ihm_sphere_obj_site;for(let P=0,C=o.ihm_sphere_obj_site._rowCount;P<C;P++){const l=v.value(P);a.has(l)||(d.push(l),p.push("polymer"),a.add(l))}const{entity_id:b}=o.ihm_gaussian_obj_site;for(let P=0,C=o.ihm_gaussian_obj_site._rowCount;P<C;P++){const l=b.value(P);a.has(l)||(d.push(l),p.push("polymer"),a.add(l))}
15s=e.Table.ofPartialColumns(n.BasicSchema.entity,{id:e.Column.ofArray({array:d,schema:n.BasicSchema.entity.id}),type:e.Column.ofArray({array:p,schema:n.BasicSchema.entity.type})},d.length)}const h=e.Column.createIndexer(s.id),f=new Array(s._rowCount);f.fill("other");const y=new Set;let _=!1;if(o.entity_poly&&o.entity_poly.type.isDefined){const{entity_id:a,type:d,_rowCount:p}=o.entity_poly;for(let u=0;u<p;++u){const m=a.value(u);f[h(m)]=d.value(u),y.add(m)}}else _=!0;if(o.pdbx_entity_branch&&o.pdbx_entity_branch.entity_id.isDefined){const{entity_id:a,type:d,_rowCount:p}=o.pdbx_entity_branch;for(let u=0;u<p;++u){const m=a.value(u);f[h(m)]=d.value(u),y.add(m)}}else _=!0;if(y.size<f.length&&(_=!0),_){const a=new Map;if(o.chem_comp){const{id:d,type:p}=o.chem_comp;for(let u=0,m=o.chem_comp._rowCount;u<m;u++)a.set(d.value(u),p.value(u))}if(o.atom_site){const{label_entity_id:d,label_comp_id:p}=o.atom_site;for(let u=0,m=o.atom_site._rowCount;u<m;u++){const v=d.value(u);if(!y.has(v)){const b=p.value(u),P=a.get(b)||"other";f[h(v)]=(0,r.getEntitySubtype)(b,P),y.add(v)}}}}const g=e.Column.ofArray({array:f,schema:t.EntitySubtype});return{data:s,subtype:g,getEntityIndex:h}}function c(o,s,h){var f;if(!o.pdbx_molecule||!o.pdbx_molecule.prd_id.isDefined)return s;const y=new Array(s.data._rowCount);y.fill("");const{asym_id:_,prd_id:g,_rowCount:a}=o.pdbx_molecule;for(let p=0;p<a;++p){const u=_.value(p),m=(f=h.get(u))===null||f===void 0?void 0:f.entity_id;m!==void 0&&(y[s.getEntityIndex(m)]=g.value(p))}const d=e.Column.ofArray({array:y,schema:e.Column.Schema.str});return{...s,prd_id:d}}return oh}var ch={},hk;function LT(){if(hk)return ch;hk=1,Object.defineProperty(ch,"__esModule",{value:!0}),ch.ArrayTrajectory=void 0;class e{getFrameAtIndex(r){return this.frames[r]}constructor(r){this.frames=r,this.frameCount=r.length,this.representative=r[0],this.duration=r.length}}return ch.ArrayTrajectory=e,ch}var gk;function ga(){if(gk)return lC;gk=1,Object.defineProperty(lC,"__esModule",{value:!0}),lC.createModels=a;const e=lt(),t=Q_(),r=NT(),n=Pr(),i=Iee(),c=Oee(),o=Lee(),s=Nee(),h=qee(),f=Uee(),y=Gee(),_=uX(),g=LT();async function a(C,l,S){const T=d(C),A=C.ihm_model_list._rowCount>0?await P(S,C,T,l):await v(S,C,T,l);for(let x=0;x<A.length;x++)r.Model.TrajectoryInfo.set(A[x],{index:x,size:A.length});return new g.ArrayTrajectory(A)}function d(C,l){return{missingResidues:(0,f.getMissingResidues)(C),chemicalComponentMap:(0,f.getChemicalComponentMap)(C),saccharideComponentMap:(0,f.getSaccharideComponentMap)(C)}}function p(C,l,S,T,A,x,M){const D=(0,i.getAtomicHierarchyAndConformation)(l,S,T,A.chemicalComponentMap,x,M),V=l.pdbx_PDB_model_num.value(0);if(M&&D.sameAsPrevious)return{...M,id:t.UUID.create22(),modelNum:V,atomicConformation:D.conformation,_dynamicPropertyData:Object.create(null)};const R=c.EmptyCoarse,E=(0,o.getSequence)(C,T,D.hierarchy,R.hierarchy),I=(0,h.getAtomicRanges)(D.hierarchy,T,D.conformation,E),B=(0,f.getStructAsymMap)(D.hierarchy),w=C.entry.id.valueKind(0)===e.Column.ValueKinds.Present?C.entry.id.value(0):x.name,O=[];return w&&O.push(w),C.struct.title.valueKind(0)===e.Column.ValueKinds.Present&&O.push(C.struct.title.value(0)),{id:t.UUID.create22(),entryId:w,label:O.join(" | "),entry:w,sourceData:x,modelNum:V,parent:void 0,entities:(0,y.getEntitiesWithPRD)(C,T,B),sequence:E,atomicHierarchy:D.hierarchy,atomicConformation:D.conformation,atomicRanges:I,atomicChainOperatorMappinng:D.chainOperatorMapping,coarseHierarchy:R.hierarchy,coarseConformation:R.conformation,properties:{...A,structAsymMap:B},customProperties:new n.CustomProperties,_staticPropertyData:Object.create(null),_dynamicPropertyData:Object.create(null)}}function u(C,l,S,T){const A=(0,i.getAtomicHierarchyAndConformation)(l.atom_site,l.atom_site_sourceIndex,l.entities,S.chemicalComponentMap,T),x=(0,c.getCoarse)(l,S.chemicalComponentMap),M=(0,o.getSequence)(C,l.entities,A.hierarchy,x.hierarchy),D=(0,h.getAtomicRanges)(A.hierarchy,l.entities,A.conformation,M),V=C.entry.id.valueKind(0)===e.Column.ValueKinds.Present?C.entry.id.value(0):T.name,R=[];V&&R.push(V),C.struct.title.valueKind(0)===e.Column.ValueKinds.Present&&R.push(C.struct.title.value(0)),l.model_name&&R.push(l.model_name),l.model_group_name&&R.push(l.model_group_name);const E=(0,f.getStructAsymMap)(A.hierarchy,C);return{id:t.UUID.create22(),entryId:V,label:R.join(" | "),entry:V,sourceData:T,modelNum:l.model_id,parent:void 0,entities:(0,y.getEntitiesWithPRD)(C,l.entities,E),sequence:M,atomicHierarchy:A.hierarchy,atomicConformation:A.conformation,atomicRanges:D,atomicCh
15ainOperatorMappinng:A.chainOperatorMapping,coarseHierarchy:x.hierarchy,coarseConformation:x.conformation,properties:{...S,structAsymMap:E},customProperties:new n.CustomProperties,_staticPropertyData:Object.create(null),_dynamicPropertyData:Object.create(null)}}function m(C,l){const S=C.rowCount;if(!C.isDefined)return S;let T=l+1;for(;T<S&&C.areValuesEqual(l,T);)T++;return T}async function v(C,l,S,T){const A=[];if(l.atom_site){const x=l.atom_site.id.rowCount,M=(0,y.getEntityData)(l);let D=0;for(;D<x;){const V=m(l.atom_site.pdbx_PDB_model_num,D),{atom_site:R,sourceIndex:E}=await(0,s.sortAtomSite)(C,l.atom_site,D,V),I=p(l,R,E,M,S,T,A.length>0?A[A.length-1]:void 0);A.push(I),D=V}}return A}function b(C,l){const S=new Map,T=C._rowCount;let A=0;for(;A<T;){const x=m(l,A),M=l.value(A);S.set(M,{table:e.Table.window(C,C._schema,A,x),start:A,end:x}),A=x}return S}async function P(C,l,S,T){const A=(0,y.getEntityData)(l),x=l.atom_site.ihm_model_id.isDefined?l.atom_site.ihm_model_id:l.atom_site.pdbx_PDB_model_num,M=b(l.atom_site,x),D=b(l.ihm_sphere_obj_site,l.ihm_sphere_obj_site.model_id),V=b(l.ihm_gaussian_obj_site,l.ihm_gaussian_obj_site.model_id),R=[];if(l.ihm_model_list){const{model_id:E,model_name:I}=l.ihm_model_list;for(let B=0;B<l.ihm_model_list._rowCount;B++){const w=E.value(B);let O,F;if(M.has(w)){const q=M.get(w),{atom_site:N,sourceIndex:k}=await(0,s.sortAtomSite)(C,l.atom_site,q.start,q.end);O=N,F=k}else O=e.Table.window(l.atom_site,l.atom_site._schema,0,0),F=e.Column.ofIntArray([]);const L={model_id:w,model_name:I.value(B),model_group_name:(0,_.getModelGroupName)(w,l),entities:A,atom_site:O,atom_site_sourceIndex:F,ihm_sphere_obj_site:D.has(w)?D.get(w).table:e.Table.window(l.ihm_sphere_obj_site,l.ihm_sphere_obj_site._schema,0,0),ihm_gaussian_obj_site:V.has(w)?V.get(w).table:e.Table.window(l.ihm_gaussian_obj_site,l.ihm_gaussian_obj_site._schema,0,0)},U=u(l,L,S,T);R.push(U)}}return R}return lC}var yk;function NT(){if(yk)return hm;yk=1,Object.defineProperty(hm,"__esModule",{value:!0}),hm.Model=void 0;const e=Q_(),t=ma(),r=WZ(),n=Ge(),i=vl(),c=nt(),o=Ua(),s=ga(),h=Mi(),f=Qn(),y=lt(),_=uI(),g=LT(),a=dt(),d=BT();var p;return(function(u){function m($,ie){const Z=[],{frames:re}=ie,oe=v($),ce=O($),ue=$.atomicHierarchy.atoms._rowCount;for(let pe=0,he=re.length;pe<he;++pe){const fe=re[pe];if(fe.elementCount!==ue)throw new Error(`Frame element count mismatch, got ${fe.elementCount} but expected ${ue}.`);const de={...$,id:e.UUID.create22(),modelNum:pe,atomicConformation:C($,fe),_dynamicPropertyData:Object.create(null)};if(fe.cell){const ge=f.ModelSymmetry.fromCell(fe.cell.size,fe.cell.anglesInRadians);f.ModelSymmetry.Provider.set(de,ge)}u.TrajectoryInfo.set(de,{index:pe,size:re.length}),u.CoarseGrained.set(de,ce),Z.push(de)}return{trajectory:Z,srcIndexArray:oe}}function v($){const ie=$.atomicHierarchy.atomSourceIndex;let Z;return"__srcIndexArray__"in $._staticPropertyData?Z=$._staticPropertyData.__srcIndexArray__:(Z=y.Column.isIdentity(ie)?void 0:ie.toArray({array:Int32Array}),$._staticPropertyData.__srcIndexArray__=Z),Z}function b($,ie){return new g.ArrayTrajectory(m($,ie).trajectory)}u.trajectoryFromModelAndCoordinates=b;function P($,ie){return c.Task.create("Create Trajectory",async Z=>{const re=await(0,s.createModels)($.basic,$.sourceData,Z);if(re.frameCount===0)throw new Error("found no model");const oe=re.representative,{trajectory:ce}=m(oe,ie),ue={pairs:$.bonds,count:oe.atomicHierarchy.atoms._rowCount},pe=o.IndexPairBonds.fromData(ue),he=O(oe);let fe=0;for(const de of ce)o.IndexPairBonds.Provider.set(de,pe),u.TrajectoryInfo.set(de,{index:fe++,size:ce.length}),u.CoarseGrained.set(de,he);return new g.ArrayTrajectory(ce)})}u.trajectoryFromTopologyAndCoordinates=P;function C($,ie){return i.Coordinates.getAtomicConformation(ie,{atomId:$.atomicConformation.atomId,occupancy:$.atomicConformation.occupancy,B_iso_or_equiv:$.atomicConformation.B_iso_or_equiv},v($))}u.getAtomicConformationFromFrame=C;const l="__Center__";function S($){if($._dynamicPropertyData[l])return $._dynamicPropertyData[l];const ie=(0,r.calcModelCenter)($.atomicConformation,$.coarseConformation);return $._dynamicPropertyData[l]=ie,ie}u.getCenter=S;const T="__AtomicRadii__";function A($){if($._staticPropertyData[T])return $._staticPropertyData[T];const ie=$.atomicHierarchy.atoms._rowCount,Z=$.atomicHierarchy.atoms.type_symbol.value,re=new Float32Array(ie);for(let oe=0;oe<ie;
15oe++)re[oe]=(0,t.VdwRadius)(Z(oe));return $._staticPropertyData[T]=re,re}u.getAtomicRadii=A;function x($){const ie=new Int32Array($.rowCount);let Z=!1;for(let re=0,oe=$.rowCount;re<oe;re++){const ce=$.value(re);ce!==re&&(Z=!1),ie[ce]=re}return{isIdentity:Z,invertedIndex:ie}}const M="__InvertedAtomSrcIndex__";function D($){if($._staticPropertyData[M])return $._staticPropertyData[M];const ie=x($.atomicHierarchy.atomSourceIndex);return $._staticPropertyData[M]=ie,ie}u.getInvertedAtomSourceIndex=D;const V="__TrajectoryInfo__";u.TrajectoryInfo={get($){return $._dynamicPropertyData[V]||{index:0,size:1}},set($,ie){return $._dynamicPropertyData[V]=ie}};const R="__AsymIdCount__";u.AsymIdCount={get($){if($._dynamicPropertyData[R])return $._dynamicPropertyData[R];const ie=(0,r.getAsymIdCount)($);return $._dynamicPropertyData[R]=ie,ie}},u.AsymIdOffset=_.CustomModelProperty.createSimple("asym_id_offset","static"),u.Index=_.CustomModelProperty.createSimple("index","static"),u.MaxIndex=_.CustomModelProperty.createSimple("max_index","static");function E($){return $.parent||$}u.getRoot=E;function I($,ie){return $.atomicHierarchy===ie.atomicHierarchy&&$.coarseHierarchy===ie.coarseHierarchy}u.areHierarchiesEqual=I;const B="__CoordinatesHistory__";u.CoordinatesHistory={get($){return $._staticPropertyData[B]},set($,ie){return $._staticPropertyData[B]=ie}};const w="__CoarseGrained__";u.CoarseGrained={get($){return $._staticPropertyData[w]},set($,ie){return $._staticPropertyData[w]=ie}};function O($){let ie=u.CoarseGrained.get($);if(ie===void 0){let Z=0,re=0;const{polymerType:oe,directionToElementIndex:ce}=$.atomicHierarchy.derived.residue;for(let ge=0;ge<oe.length;++ge)oe[ge]!==a.PolymerType.NA&&(Z+=1,ce[ge]!==-1&&(re+=1));let ue=!1,pe=!1,he=!1;const{label_atom_id:fe,_rowCount:de}=$.atomicHierarchy.atoms;for(let ge=0;ge<de;++ge){const Ce=fe.value(ge);if(!ue&&Ce==="BB"&&(ue=!0),!pe&&Ce==="SC1"&&(pe=!0),!he&&a.TraceAtoms.has(Ce)&&(he=!0),ue&&pe&&he)break}ie=!1,de>0&&Z>0&&(ue&&pe||de/Z<3||re===0&&he)&&(ie=!0),u.CoarseGrained.set($,ie)}return ie}u.isCoarseGrained=O;function F($){return $.properties.saccharideComponentMap.size>0}u.hasCarbohydrate=F;function L($){const{subtype:ie}=$.entities;for(let Z=0,re=ie.rowCount;Z<re;++Z)if(ie.value(Z).startsWith("polypeptide"))return!0;return!1}u.hasProtein=L;function U($){const{subtype:ie}=$.entities;for(let Z=0,re=ie.rowCount;Z<re;++Z){const oe=ie.value(Z);if(oe.endsWith("ribonucleotide hybrid")||oe.endsWith("ribonucleotide"))return!0}return!1}u.hasNucleic=U;function q($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data;for(let Z=0,re=ie.database_2.database_id.rowCount;Z<re;++Z)if(ie.database_2.database_id.value(Z)==="pdb")return!0;return!1}u.isFromPdbArchive=q;function N($){return h.MmcifFormat.is($.sourceData)?$.entryId.match(/^[1-9][a-z0-9]{3,3}$/i)!==null||$.entryId.match(/^pdb_[0-9]{4,4}[1-9][a-z0-9]{3,3}$/i)!==null:!1}u.hasPdbId=N;function k($){if(h.MmcifFormat.is($.sourceData)){const{db:ie}=$.sourceData.data;return ie.struct_conf.id.isDefined||ie.struct_sheet_range.id.isDefined}else return d.ModelSecondaryStructure.Provider.isApplicable($)}u.hasSecondaryStructure=k;const j=n.Vec3.create(1.5707963,1.5707963,1.5707963),H=n.Vec3.create(1,1,1);function G($){var ie;const Z=(ie=f.ModelSymmetry.Provider.get($))===null||ie===void 0?void 0:ie.spacegroup;
15return!!Z&&!(Z.num===1&&n.Vec3.equals(Z.cell.anglesInRadians,j)&&n.Vec3.equals(Z.cell.size,H))}u.hasCrystalSymmetry=G;function z($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data;for(let Z=0;Z<ie.exptl.method.rowCount;Z++)if(ie.exptl.method.value(Z).toUpperCase().indexOf("DIFFRACTION")>=0)return!0;return!1}u.isFromXray=z;function W($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data;for(let Z=0;Z<ie.exptl.method.rowCount;Z++)if(ie.exptl.method.value(Z).toUpperCase().indexOf("MICROSCOPY")>=0)return!0;return!1}u.isFromEm=W;function X($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data;for(let Z=0;Z<ie.exptl.method.rowCount;Z++)if(ie.exptl.method.value(Z).toUpperCase().indexOf("NMR")>=0)return!0;return!1}u.isFromNmr=X;function Y($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data;for(let Z=0;Z<ie.struct.pdbx_structure_determination_methodology.rowCount;Z++)if(ie.struct.pdbx_structure_determination_methodology.value(Z).toLowerCase()==="experimental")return!0;return!1}u.isExperimental=Y;function K($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data;for(let Z=0;Z<ie.struct.pdbx_structure_determination_methodology.rowCount;Z++)if(ie.struct.pdbx_structure_determination_methodology.value(Z).toLowerCase()==="integrative")return!0;return!1}u.isIntegrative=K;function Q($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data;for(let Z=0;Z<ie.struct.pdbx_structure_determination_methodology.rowCount;Z++)if(ie.struct.pdbx_structure_determination_methodology.value(Z).toLowerCase()==="computational")return!0;return!1}u.isComputational=Q;function J($){if(!h.MmcifFormat.is($.sourceData)||!z($))return!1;const{db:ie}=$.sourceData.data,{status_code_sf:Z}=ie.pdbx_database_status;return Z.isDefined&&Z.value(0)==="REL"}u.hasXrayMap=J;function ae($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data,{db_name:Z,content_type:re}=ie.pdbx_database_related;for(let oe=0,ce=ie.pdbx_database_related._rowCount;oe<ce;++oe)if(Z.value(oe).toUpperCase()==="EMDB"&&re.value(oe)==="associated EM volume")return!0;return!1}u.hasEmMap=ae;function te($){return h.MmcifFormat.is($.sourceData)?J($)||ae($):!1}u.hasDensityMap=te;function ne($){if(!h.MmcifFormat.is($.sourceData)||u.isIntegrative($))return!1;const{db:ie}=$.sourceData.data;return te($)||N($)&&(!ie.exptl.method.isDefined||z($)&&(!ie.pdbx_database_status.status_code_sf.isDefined||ie.pdbx_database_status.status_code_sf.valueKind(0)===y.Column.ValueKinds.Unknown)||W($)&&!ie.pdbx_database_related.db_name.isDefined)}u.probablyHasDensityMap=ne})(p||(hm.Model=p={})),hm}var uh={},vk;function zee(){if(vk)return uh;vk=1,Object.defineProperty(uh,"__esModule",{value:!0}),uh.IndexedCustomProperty=void 0;const e=jr(),t=at(),r=et();var n;(function(h){function f(b,P,C){if(!P)return{rowCount:0};if(C&&C[P.id])return C[P.id];const l=P.getElements(b),S={data:l,rowCount:l.elements.length};return C&&(C[P.id]=S),S}h.getCifDataSource=f;function y(b){return new o(b)}h.fromAtomMap=y;function _(b){return new o(i(b))}h.fromAtomArray=_;const g=b=>b.atomicHierarchy.residueAtomSegments;function a(b){return new c("residue",b,g,e.Unit.Kind.Atomic)}h.fromResidueMap=a;function d(b){return new c("residue",i(b),g,e.Unit.Kind.Atomic)}h.fromResidueArray=d;const p=b=>b.atomicHierarchy.chainAtomSegments;function u(b){return new c("chain",b,p,e.Unit.Kind.Atomic)}h.fromChainMap=u;function m(b){return new c("chain",i(b),p,e.Unit.Kind.Atomic)}h.fromChainArray=m;function v(b){return new s(b)}h.fromEntityMap=v})(n||(uh.IndexedCustomProperty=n={}));function i(h){const f=new Map;for(let y=0,_=h.length;y<_;y++)f.set(y,h[y]);return f}class c{has(f){return this.map.has(f)}get(f){return this.map.get(f)}getStructureElements(f){const y=f.models;if(y.length!==1)throw new Error("Only works on structures with a single model.");const _=new Set,g=f.unitSymmetryGroups,a=[],d=this.segmentGetter(y[0]);for(const p of g){const u=p.units[0];if(u.kind!==this.kind)continue;const m=t.Segmentation.transientSegments(d,u.elements);for(;m.hasNext;){const v=m.move();!this.has(v.index)||_.has(v.index)||(_.add(v.index),a[a.length]=e.StructureElement.Location.create(f,u,u.elements[v.start]))}}return a.sort((p,u)=>p.element-u.element),a}getElements(f){const y=this.segmentGetter(f.model).index,_=this.getStructureElements(f);return{elements:_,property:g=>this.get(y[_[g].element])}}constructor(f,y,_,g){this.level=f,this.map=y,this.segmentGetter=_,this.id=r.UUID.create22(),this.kind=g}}class o{has(f){return this.map.has(f)}get(f){return this.map.get(f)}getStructureElements(f){if(f.models.length!==1)throw new Error("Only works on structures with a single model.");const _=new Set,g=f.unitSymmetryGroups,a=[];for(const d of g){const p=d.units[0];if(p.kind!==this.kind)continue;const u=p.elements;for(let m=0,v=u.length;m<v;m++){const b=u[m];!this.has(b)||_.has(b)||(_.add(u[m]),a[a.length]=e.StructureElement.Location.create(f,p,b))}}return a.sort((d,p)=>d.element-p.element),a}getElements(f){const y=this.getStructureElements(f);return{elements:y,property:_=>this.get(y[_].element)}}constructor(f){this.map=f,this.id=r.UUID.create22(),this.level="atom",this.kind=e.Unit.Kind.Atomic}}class s{has(f){return this.map.has(f)}get(f){return this.map.get(f)}getStructureElements(f){const y=f.models;if(y.length!==1)throw new Error("Only works on structures with a single model.");const _=y[0].atomicHierarchy.index,g=new Set,a=f.unitSymmetryGroups,d=[],p=y[0].atomicHierarchy.chainAtomSegments;for(const u of a){const m=u.units[0];if(m.kind!==this.kind)continue;const v=t.Segmentation.transientSegments(p,m.elements);for(;v.hasNext;){const b=v.move(),P=_.getEntityFromChain(b.index);!this.has(P)||g.has(P)||(g.add(P),d[d.length]=e.StructureElement.Location.create(f,m,m.elements[b.start]))}}return d.sort((u,m)=>u.element-m.element),d}getElements(f){const y=this.getStructureElements(f),_=f.model.atomicHierarchy.chainAtomSegments.index,g=f.model.atomicHierarchy.index;return{elements:y,property:a=>this.get(g.getEntityFromChain(_[y[a].element]))}}constructor(f){this.map=f,this.id=r.UUID.create22(),this.level="entity",this.kind=e.Unit.Kind.Atomic}}return uh}var Cx={},bk;function Hee(){return bk||(bk=1,Object.defineProperty(Cx,"__esModule",{value:!0})),Cx}var _k;function Al(){return _k||(_k=1,(function(e){Object.defineProperty(e,"__esMo
15dule",{value:!0}),e.StructureSequence=e.Symmetry=e.Types=e.Model=void 0;const t=At,r=NT();Object.defineProperty(e,"Model",{enumerable:!0,get:function(){return r.Model}});const n=t.__importStar(dt());e.Types=n;const i=tI();Object.defineProperty(e,"Symmetry",{enumerable:!0,get:function(){return i.Symmetry}});const c=hX();Object.defineProperty(e,"StructureSequence",{enumerable:!0,get:function(){return c.StructureSequence}}),t.__exportStar(zee(),e),t.__exportStar(Hee(),e)})(B2)),B2}var Sk;function Ke(){return Sk||(Sk=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(vl(),e),t.__exportStar(GZ(),e),t.__exportStar(Al(),e),t.__exportStar(jr(),e),t.__exportStar(RT(),e),t.__exportStar(LT(),e)})(D2)),D2}var ld={};var lT="@@__IMMUTABLE_INDEXED__@@";function ai(e){return!!(e&&e[lT])}var dT="@@__IMMUTABLE_KEYED__@@";function gr(e){return!!(e&&e[dT])}function qT(e){return gr(e)||ai(e)}var gX="@@__IMMUTABLE_ITERABLE__@@";function oi(e){return!!(e&&e[gX])}var mn=function(t){return oi(t)?t:An(t)},Yi=(function(e){function t(r){return gr(r)?r:Ks(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t})(mn),Ml=(function(e){function t(r){return ai(r)?r:Zi(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t})(mn),Vf=(function(e){function t(r){return oi(r)&&!qT(r)?r:Of(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t})(mn);mn.Keyed=Yi;mn.Indexed=Ml;mn.Set=Vf;var Ef=0,Ci=1,Pi=2,SD=typeof Symbol=="function"&&Symbol.iterator,yX="@@iterator",UT=SD||yX,Xt=function(t){this.next=t};Xt.prototype.toString=function(){return"[Iterator]"};Xt.KEYS=Ef;Xt.VALUES=Ci;Xt.ENTRIES=Pi;Xt.prototype.inspect=Xt.prototype.toSource=function(){return this.toString()};Xt.prototype[UT]=function(){return this};function Sr(e,t,r,n){var i=e===Ef?t:e===Ci?r:[t,r];return n?n.value=i:n={value:i,done:!1},n}function xn(){return{value:void 0,done:!0}}function fI(e){return Array.isArray(e)?!0:!!jT(e)}function Ck(e){return!!(e&&typeof e.next=="function")}function CD(e){var t=jT(e);return t&&t.call(e)}function jT(e){var t=e&&(SD&&e[SD]||e[yX]);if(typeof t=="function")return t}function Wee(e){var t=jT(e);return t&&t===e.entries}function $ee(e){var t=jT(e);return t&&t===e.keys}var aS="delete",lr=5,Si=1<<lr,$n=Si-1,Ht={};function PD(){return{value:!1}}function Gi(e){e&&(e.value=!0)}function mI(){}function gf(e){return e.size===void 0&&(e.size=e.__iterate(vX)),e.size}function Gs(e,t){if(typeof t!="number"){var r=t>>>0;if(""+r!==t||r===4294967295)return NaN;t=r}return t<0?gf(e)+t:t}function vX(){return!0}function oS(e,t,r){return(e===0&&!_X(e)||r!==void 0&&e<=-r)&&(t===void 0||r!==void 0&&t>=r)}function Bf(e,t){return bX(e,t,0)}function sS(e,t){return bX(e,t,t)}function bX(e,t,r){return e===void 0?r:_X(e)?t===1/0?t:Math.max(0,t+e)|0:t===void 0||t===e?e:Math.min(t,e)|0}function _X(e){return e<0||e===0&&1/e===-1/0}var SX="@@__IMMUTABLE_RECORD__@@";function Xs(e){return!!(e&&e[SX])}function Qi(e){return oi(e)||Xs(e)}var zs="@@__IMMUTABLE_ORDERED__@@";function fa(e){return!!(e&&e[zs])}var CX="@@__IMMUTABLE_SEQ__@@";function GT(e){return!!(e&&e[CX])}var Rf=Object.prototype.hasOwnProperty;function pI(e){return Array.isArray(e)||typeof e=="string"?!0:e&&typeof e=="object"&&Number.isInteger(e.length)&&e.length>=0&&(e.length===0?Object.keys(e).length===1:e.hasOwnProperty(e.length-1))}var An=(function(e){function t(r){return r==null?gI():Qi(r)?r.toSeq():Kee(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toSeq=function(){return this},t.prototype.toString=function(){return this.__toString("Seq {","}")},t.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},t.prototype.__iterate=function(n,i){var c=this._cache;if(c){for(var o=c.length,s=0;s!==o;){var h=c[i?o-++s:s++];if(n(h[1],h[0],this)===!1)break}return s}return this.__iterateUncached(n,i)},t.prototype.__iterator=function(n,i){var c=this._cache;if(c){var o=c.length,s=0;return new Xt(function(){if(s===o)return xn();var h=c[i?o-++s:s++];return Sr(n,h[0],h[1])})}return this.__iteratorUncached(n,i)},t})(mn),Ks=(function(e){function t(r){return r==null?gI().toKeyedSeq():oi(r)?gr(r)?r.toSeq():r.fromEntrySeq():Xs(r)?r.toSeq():yI(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toKeyedSeq=function(){return this},t})(An),Zi=(function(e){function t(r){return r==null?gI():oi(r)?gr(r)?r.entrySeq():r.toIndexedSeq():Xs(r)?r.toSeq().entrySeq():PX(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return t(arguments)},t.prototype.toIndexedSeq=function(){return this},t.prototype.toString=function(){return this.__toString("Seq [","]")},t})(An),Of=(function(e){function t(r){return(oi(r)&&!qT(r)?r:Zi(r)).toSetSeq()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return t(arguments)},t.prototype.toSetSeq=function(){return this},t})(An);An.isSeq=GT;An.Keyed=Ks;An.Set=Of;An.Indexed=Zi;An.prototype[CX]=!0;var yf=(function(e){function t(r){this._array=r,this.size=r.length}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.get=function(n,i){return this.has(n)?this._array[Gs(this,n)]:i},t.prototype.__iterate=function(n,i){for(var c=this._array,o=c.length,s=0;s!==o;){var h=i?o-++s:s++;if(n(c[h],h,this)===!1)break}return s},t.prototype.__iterator=function(n,i){var c=this._array,o=c.length,s=0;return new Xt(function(){if(s===o)return xn();var h=i?o-++s:s++;return Sr(n,h,c[h])})},t})(Zi),hI=(function(e){function t(r){var n=Object.keys(r).concat(Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(r):[]);this._object=r,this._keys=n,this.size=n.length}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.get=function(n,i){return i!==void 0&&!this.has(n)?i:this._object[n]},t.prototype.has=function(n){return Rf.call(this._object,n)},t.prototype.__iterate=function(n,i){for(var c=this._object,o=this._keys,s=o.length,h=0;h!==s;){var f=o[i?s-++h:h++];if(n(c[f],f,this)===!1)break}return h},t.prototype.__iterator=function(n,i){var c=this._object,o=this._keys,s=o.length,h=0;return new Xt(function(){if(h===s)return xn();var f=o[i?s-++h:h++];return Sr(n,f,c[f])})},t})(Ks);hI.prototype[zs]=!0;var Xee=(function(e){function t(r){this._collection=r,this.size=r.length||r.size}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.__iterateUncached=function(n,i){if
vendor: 28,814 bytes, line 15
15(i)return this.cacheResult().__iterate(n,i);var c=this._collection,o=CD(c),s=0;if(Ck(o))for(var h;!(h=o.next()).done&&n(h.value,s++,this)!==!1;);return s},t.prototype.__iteratorUncached=function(n,i){if(i)return this.cacheResult().__iterator(n,i);var c=this._collection,o=CD(c);if(!Ck(o))return new Xt(xn);var s=0;return new Xt(function(){var h=o.next();return h.done?h:Sr(n,s++,h.value)})},t})(Zi),Pk;function gI(){return Pk||(Pk=new yf([]))}function yI(e){var t=vI(e);if(t)return t.fromEntrySeq();if(typeof e=="object")return new hI(e);throw new TypeError("Expected Array or collection object of [k, v] entries, or keyed object: "+e)}function PX(e){var t=vI(e);if(t)return t;throw new TypeError("Expected Array or collection object of values: "+e)}function Kee(e){var t=vI(e);if(t)return Wee(e)?t.fromEntrySeq():$ee(e)?t.toSetSeq():t;if(typeof e=="object")return new hI(e);throw new TypeError("Expected Array or collection object of values, or keyed object: "+e)}function vI(e){return pI(e)?new yf(e):fI(e)?new Xee(e):void 0}function cS(){return this.__ensureOwner()}function uS(){return this.__ownerID?this:this.__ensureOwner(new mI)}var lh=typeof Math.imul=="function"&&Math.imul(4294967295,2)===-2?Math.imul:function(t,r){t|=0,r|=0;var n=t&65535,i=r&65535;return n*i+((t>>>16)*i+n*(r>>>16)<<16>>>0)|0};function zT(e){return e>>>1&1073741824|e&3221225471}var Yee=Object.prototype.valueOf;function Wn(e){if(e==null)return Tk(e);if(typeof e.hashCode=="function")return zT(e.hashCode(e));var t=nte(e);if(t==null)return Tk(t);switch(typeof t){case"boolean":return t?1108378657:1108378656;case"number":return Qee(t);case"string":return t.length>ite?Zee(t):TD(t);case"object":case"function":return tte(t);case"symbol":return ete(t);default:if(typeof t.toString=="function")return TD(t.toString());throw new Error("Value type "+typeof t+" cannot be hashed.")}}function Tk(e){return e===null?1108378658:1108378659}function Qee(e){if(e!==e||e===1/0)return 0;var t=e|0;for(t!==e&&(t^=e*4294967295);e>4294967295;)e/=4294967295,t^=e;return zT(t)}function Zee(e){var t=xx[e];return t===void 0&&(t=TD(e),Tx===ate&&(Tx=0,xx={}),Tx++,xx[e]=t),t}function TD(e){for(var t=0,r=0;r<e.length;r++)t=31*t+e.charCodeAt(r)|0;return zT(t)}var Jee=(Math.random()*1048576|1)%1048576||40503;function bI(e){if(typeof e!="string")return Wn(e);for(var t=0,r=0;r<e.length;r++)t=Jee*t+e.charCodeAt(r)|0;return t}function ete(e){var t=Mk[e];return t!==void 0||(t=TX(),Mk[e]=t),t}function tte(e){var t;if(xD&&(t=AD.get(e),t!==void 0)||(t=e[yl],t!==void 0)||!Ak&&(t=e.propertyIsEnumerable&&e.propertyIsEnumerable[yl],t!==void 0||(t=rte(e),t!==void 0)))return t;if(t=TX(),xD)AD.set(e,t);else{if(xk!==void 0&&xk(e)===!1)throw new Error("Non-extensible objects are not allowed as keys.");if(Ak)Object.defineProperty(e,yl,{enumerable:!1,configurable:!1,writable:!1,value:t});else if(e.propertyIsEnumerable!==void 0&&e.propertyIsEnumerable===e.constructor.prototype.propertyIsEnumerable)e.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},e.propertyIsEnumerable[yl]=t;else if(e.nodeType!==void 0)e[yl]=t;else throw new Error("Unable to set a non-enumerable property on object.")}return t}var xk=Object.isExtensible,Ak=(function(){try{return Object.defineProperty({},"@",{}),!0}catch{return!1}})();function rte(e){if(e&&e.nodeType>0)switch(e.nodeType){case 1:return e.uniqueID;case 9:return e.documentElement&&e.documentElement.uniqueID}}function nte(e){return e.valueOf!==Yee&&typeof e.valueOf=="function"?e.valueOf(e):e}function TX(){var e=++Px;return Px&1073741824&&(Px=0),e}var xD=typeof WeakMap=="function",AD;xD&&(AD=new WeakMap);var Mk=Object.create(null),Px=0,yl="__immutablehash__";typeof Symbol=="function"&&(yl=Symbol(yl));var ite=16,ate=255,Tx=0,xx={},HT=(function(e){function t(r,n){this._iter=r,this._useKeys=n,this.size=r.size}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.get=function(n,i){return this._iter.get(n,i)},t.prototype.has=function(n){return this._iter.has(n)},t.prototype.valueSeq=function(){return this._iter.valueSeq()},t.prototype.reverse=function(){var n=this,i=_I(this,!0);return this._useKeys||(i.valueSeq=function(){return n._iter.toSeq().reverse()}),i},t.prototype.map=function(n,i){var c=this,o=IX(this,n,i);return this._useKeys||(o.valueSeq=function(){return c._iter.toSeq().map(n,i)}),o},t.prototype.__iterate=function(n,i){var c=this;return this._iter.__iterate(function(o,s){return n(o,s,c)},i)},t.prototype.__iterator=function(n,i){return this._iter.__iterator(n,i)},t})(Ks);HT.prototype[zs]=!0;var xX=(function(e){function t(r){this._iter=r,this.size=r.size}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.includes=function(n){return this._iter.includes(n)},t.prototype.__iterate=function(n,i){var c=this,o=0;return i&&gf(this),this._iter.__iterate(function(s){return n(s,i?c.size-++o:o++,c)},i)},t.prototype.__iterator=function(n,i){var c=this,o=this._iter.__iterator(Ci,i),s=0;return i&&gf(this),new Xt(function(){var h=o.next();return h.done?h:Sr(n,i?c.size-++s:s++,h.value,h)})},t})(Zi),AX=(function(e){function t(r){this._iter=r,this.size=r.size}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.has=function(n){return this._iter.includes(n)},t.prototype.__iterate=function(n,i){var c=this;return this._iter.__iterate(function(o){return n(o,o,c)},i)},t.prototype.__iterator=function(n,i){var c=this._iter.__iterator(Ci,i);return new Xt(function(){var o=c.next();return o.done?o:Sr(n,o.value,o.value,o)})},t})(Of),MX=(function(e){function t(r){this._iter=r,this.size=r.size}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.entrySeq=function(){return this._iter.toSeq()},t.prototype.__iterate=function(n,i){var c=this;return this._iter.__iterate(function(o){if(o){Ik(o);var s=oi(o);return n(s?o.get(1):o[1],s?o.get(0):o[0],c)}},i)},t.prototype.__iterator=function(n,i){var c=this._iter.__iterator(Ci,i);return new Xt(function(){for(;;){var o=c.next();if(o.done)return o;var s=o.value;if(s){Ik(s);var h=oi(s);return Sr(n,h?s.get(0):s[0],h?s.get(1):s[1],o)}}})},t})(Ks);xX.prototype.cacheResult=HT.prototype.cacheResult=AX.prototype.cacheResult=MX.prototype.cacheResult=PI;function DX(e){var t=$a(e);return t._iter=e,t.size=e.size,t.flip=function(){return e},t.reverse=function(){var r=e.reverse.apply(this);return r.flip=function(){return e.reverse()},r},t.has=function(r){return e.includes(r)},t.includes=function(r){return e.has(r)},t.cacheResult=PI,t.__iterateUncached=function(r,n){var i=this;return e.__iterate(function(c,o){return r(o,c,i)!==!1},n)},t.__iteratorUncached=function(r,n){if(r===Pi){var i=e.__iterator(r,n);return new Xt(function(){var c=i.next();if(!c.done){var o=c.value[0];c.value[0]=c.value[1],c.value[1]=o}return c})}return e.__iterator(r===Ci?Ef:Ci,n)},t}function IX(e,t,r){var n=$a(e);return n.size=e.size,n.has=function(i){return e.has(i)},n.get=function(i,c){var o=e.get(i,Ht);return o===Ht?c:t.call(r,o,i,e)},n.__iterateUncached=function(i,c){var o=this;return e.__iterate(function(s,h,f){return i(t.call(r,s,h,f),h,o)!==!1},c)},n.__iteratorUncached=function(i,c){var o=e.__iterator(Pi,c);return new Xt(function(){var s=o.next();if(s.done)return s;var h=s.value,f=h[0];return Sr(i,f,t.call(r,h[1],f,e),s)})},n}function _I(e,t){var r=$a(e);return r._iter=e,r.size=e.size,r.reverse=function(){return e},e.flip&&(r.flip=function(){var n=DX(e);return n.reverse=function(){return e.flip()},n}),r.get=function(n,i){return e.get(t?n:-1-n,i)},r.has=function(n){return e.has(t?n:-1-n)},r.includes=function(n){return e.includes(n)},r.cacheResult=PI,r.__iterate=function(n,i){var c=this,o=0;return i&&gf(e),e.__iterate(function(s,h){return n(s,t?h:i?c.size-++o:o++,c)},!i)},r.__iterator=function(n,i){var c=0;i&&gf(e);var o=e.__iterator(Pi,!i);return new Xt(function(){var s=o.next();if(s.done)return s;var h=s.value;return Sr(n,t?h[0]:i?r.size-++c:c++,h[1],s)})},r}function wX(e,t,r,n){var i=$a(e);return n&&(i.has=function(c){var o=e.get(c,Ht);return o!==Ht&&!!t.call(r,o,c,e)},i.get=function(c,o){var s=e.get(c,Ht);return s!==Ht&&t.call(r,s,c,e)?s:o}),i.__iterateUncached=function(c,o){var s=this,h=0;return e.__iterate(function(f,y,_){if(t.call(r,f,y,_))return h++,c(f,n?y:h-1,s)},o),h},i.__iteratorUncached=function(c,o){var s=e.__iterator(Pi,o),h=0;return new Xt(function(){for(;;){var f=s.next();if(f.done)return f;var y=f.value,_=y[0],g=y[1];if(t.call(r,g,_,e))return Sr(c,n?_:h++,g,f)}})},i}function ote(e,t,r){var n=Dl().asMutable();return e.__iterate(function(i,c){n.update(t.call(r,i,c,e),0,function(o){return o+1})}),n.asImmutable()}function ste(e,t,r){var n=gr(e),i=(fa(e)?Oa():Dl()).asMutable();e.__iterate(function(o,s){i.update(t.call(r,o,s,e),function(h){return h=h||[],h.push(n?[s,o]:o),h})});var c=CI(e);return i.map(function(o){return ur(e,c(o))}).asImmutable()}function cte(e,t,r){var n=gr(e),i=[[],[]];e.__iterate(function(o,s){i[t.call(r,o,s,e)?1:0].push(n?[s,o]:o)});var c=CI(e);return i.map(function(o){return ur(e,c(o))})}function SI(e,t,r,n){var i=e.size;if(oS(t,r,i))return e;if(typeof i>"u"&&(t<0||r<0))return SI(e.toSeq().cacheResult(),t,r,n);var c=Bf(t,i),o=sS(r,i),s=o-c,h;s===s&&(h=s<0?0:s);var f=$a(e);return f.size=h===0?h:e.size&&h||void 0,!n&&GT(e)&&h>=0&&(f.get=function(y,_){return y=Gs(this,y),y>=0&&y<h?e.get(y+c,_):_}),f.__iterateUncached=function(y,_){var g=this;if(h===0)return 0;if(_)return this.cacheResult().__iterate(y,_);var a=0,d=!0,p=0;return e.__iterate(function(u,m){if(!(d&&(d=a++<c)))return p++,y(u,n?m:p-1,g)!==!1&&p!==h}),p},f.__iteratorUncached=function(y,_){if(h!==0&&_)return this.cacheResult().__iterator(y,_);if(h===0)return new Xt(xn);var g=e.__iterator(y,_),a=0,d=0;return new Xt(function(){for(;a++<c;)g.next();if(++d>h)return xn();var p=g.next();return n||y===Ci||p.done?p:y===Ef?Sr(y,d-1,void 0,p):Sr(y,d-1,p.value[1],p)})},f}function ute(e,t,r){var n=$a(e);return n.__iterateUncached=function(i,c){var o=this;if(c)return this.cacheResult().__iterate(i,c);var s=0;return e.__iterate(function(h,f,y){return t.call(r,h,f,y)&&++s&&i(h,f,o)}),s},n.__iteratorUncached=function(i,c){var o=this;if(c)return this.cacheResult().__iterator(i,c);var s=e.__iterator(Pi,c),h=!0;return new Xt(function(){if(!h)return xn();var f=s.next();if(f.done)return f;var y=f.value,_=y[0],g=y[1];return t.call(r,g,_,o)?i===Pi?f:Sr(i,_,g,f):(h=!1,xn())})},n}function VX(e,t,r,n){var i=$a(e);return i.__iterateUncached=function(c,o){var s=this;if(o)return this.cacheResult().__iterate(c,o);var h=!0,f=0;return e.__iterate(function(y,_,g){if(!(h&&(h=t.call(r,y,_,g))))return f++,c(y,n?_:f-1,s)}),f},i.__iteratorUncached=function(c,o){var s=this;if(o)return this.cacheResult().__iterator(c,o);var h=e.__iterator(Pi,o),f=!0,y=0;return new Xt(function(){var _,g,a;do{if(_=h.next(),_.done)return n||c===Ci?_:c===Ef?Sr(c,y++,void 0,_):Sr(c,y++,_.value[1],_);var d=_.value;g=d[0],a=d[1],f&&(f=t.call(r,a,g,s))}while(f);return c===Pi?_:Sr(c,g,a,_)})},i}var lte=(function(e){function t(r){this._wrappedIterables=r.flatMap(function(n){return n._wrappedIterables?n._wrappedIterables:[n]}),this.size=this._wrappedIterables.reduce(function(n,i){if(n!==void 0){var c=i.size;if(c!==void 0)return n+c}},0),this[dT]=this._wrappedIterables[0][dT],this[lT]=this._wrappedIterables[0][lT],this[zs]=this._wrappedIterables[0][zs]}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.__iterateUncached=function(n,i){if(this._wrappedIterables.length!==0){if(i)return this.cacheResult().__iterate(n,i);for(var c=0,o=gr(this),s=o?Pi:Ci,h=this._wrappedIterables[c].__iterator(s,i),f=!0,y=0;f;){for(var _=h.next();_.done;){if(c++,c===this._wrappedIterables.length)return y;h=this._wrappedIterables[c].__iterator(s,i),_=h.next()}var g=o?n(_.value[1],_.value[0],this):n(_.value,y,this);f=g!==!1,y++}return y}},t.prototype.__iteratorUncached=function(n,i){var c=this;if(this._wrappedIterables.length===0)return new Xt(xn);if(i)return this.cacheResult().__iterator(n,i);var o=0,s=this._wrappedIterables[o].__iterator(n,i);return new Xt(function(){for(var h=s.next();h.done;){if(o++,o===c._wrappedIterables.length)return h;s=c._wrappedIterables[o].__iterator(n,i),h=s.next()}return h})},t})(An);function dte(e,t){var r=gr(e),n=[e].concat(t).map(function(c){return oi(c)?r&&(c=Yi(c)):c=r?yI(c):PX(Array.isArray(c)?c:[c]),c}).filter(function(c){return c.size!==0});if(n.length===0)return e;if(n.length===1){var i=n[0];if(i===e||r&&gr(i)||ai(e)&&ai(i))return i}return new lte(n)}function EX(e,t,r){var n=$a(e);return n.__iterateUncached=function(i,c){if(c)return this.cacheResult().__iterate(i,c);var o=0,s=!1;function h(f,y){f.__iterate(function(_,g){return(!t||y<t)&&oi(_)?h(_,y+1):(o++,i(_,r?g:o-1,n)===!1&&(s=!0)),!s},c)}return h(e,0),o},n.__iteratorUncached=function(i,c){if(c)return this.cacheResult().__iterator(i,c);var o=e.__iterator(i,c),s=[],h=0;return new Xt(function(){for(;o;){var f=o.next();if(f.done!==!1){o=s.pop();continue}var y=f.value;if(i===Pi&&(y=y[1]),(!t||s.length<t)&&oi(y))s.push(o),o=y.__iterator(i,c);else return r?f:Sr(i,h++,y,f)}return xn()})},n}function fte(e,t,r){var n=CI(e);return e.toSeq().map(function(i,c){return n(t.call(r,i,c,e))}).flatten(!0)}function mte(e,t){var r=$a(e);return r.size=e.size&&e.size*2-1,r.__iterateUncached=function(n,i){var c=this,o=0;return e.__iterate(function(s){return(!o||n(t,o++,c)!==!1)&&n(s,o++,c)!==!1},i),o},r.__iteratorUncached=function(n,i){var c=e.__iterator(Ci,i),o=0,s;return new Xt(function(){return(!s||o%2)&&(s=c.next(),s.done)?s:o%2?Sr(n,o++,t):Sr(n,o++,s.value,s)})},r}function vf(e,t,r){t||(t=BX);var n=gr(e),i=0,c=e.toSeq().map(function(o,s){return[s,o,i++,r?r(o,s,e):o]}).valueSeq().toArray();return c.sort(function(o,s){return t(o[3],s[3])||o[2]-s[2]}).forEach(n?function(o,s){c[s].length=2}:function(o,s){c[s]=o[1]}),n?Ks(c):ai(e)?Zi(c):Of(c)}function KC(e,t,r){if(t||(t=BX),r){var n=e.toSeq().map(function(i,c){return[i,r(i,c,e)]}).reduce(function(i,c){return Dk(t,i[1],c[1])?c:i});return n&&n[0]}return e.reduce(function(i,c){return Dk(t,i,c)?c:i})}function Dk(e,t,r){var n=e(r,t);return n===0&&r!==t&&(r==null||r!==r)||n>0}function YC(e,t,r,n){var i=$a(e),c=new yf(r).map(function(o){return o.size});return i.size=n?c.max():c.min(),i.__iterate=function(o,s){for(var h=this.__iterator(Ci,s),f,y=0;!(f=h.next()).done&&o(f.value,y++,this)!==!1;);return y},i.__iteratorUncached=function(o,s){var h=r.map(function(_){return _=mn(_),CD(s?_.reverse():_)}),f=0,y=!1;return new Xt(function(){var _;return y||(_=h.map(function(g){return g.next()}),y=n?_.every(function(g){return g.done}):_.some(function(g){return g.done})),y?xn():Sr(o,f++,t.apply(null,_.map(function(g){return g.value})))})},i}function ur(e,t){return e===t?e:GT(e)?t:e.constructor(t)}function Ik(e){if(e!==Object(e))throw new TypeError("Expected [K, V] tuple: "+e)}function CI(e){return gr(e)?Yi:ai(e)?Ml:Vf}function $a(e){return Object.create((gr(e)?Ks:ai(e)?Zi:Of).prototype)}function PI(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):An.prototype.cacheResult.call(this)}function BX(e,t){return e===void 0&&t===void 0?0:e===void 0?1:t===void 0?-1:e>t?1:e<t?-1:0}function MD(e){return!!(e&&typeof e.equals=="function"&&typeof e.hashCode=="function")}function fn(e,t){if(e===t||e!==e&&t!==t)return!0;if(!e||!t)return!1;if(typeof e.valueOf=="function"&&typeof t.valueOf=="function"){if(e=e.valueOf(),t=t.valueOf(),e===t||e!==e&&t!==t)return!0;if(!e||!t)return!1}return!!(MD(e)&&MD(t)&&e.equals(t))}function TI(e,t,r,n){return Il(e,[t],r,n)}function RX(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return kX(this,e)}function OX(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];if(typeof e!="function")throw new TypeError("Invalid merger function: "+e);return kX(this,t,e)}function kX(e,t,r){for(var n=[],i=0;i<t.length;i++){var c=Yi(t[i]);c.size!==0&&n.push(c)}return n.length===0?e:e.toSeq().size===0&&!e.__ownerID&&n.length===1?Xs(e)?e:e.constructor(n[0]):e.withMutations(function(o){for(var s=r?function(f,y){TI(o,y,Ht,function(_){return _===Ht?f:r(_,f,y)})}:function(f,y){o.set(y,f)},h=0;h<n.length;h++)n[h].forEach(s)})}var pte=Object.prototype.toString;function xI(e){if(!e||typeof e!="object"||pte.call(e)!=="[object Object]")return!1;var t=Object.getPrototypeOf(e);if(t===null)return!0;for(var r=t,n=Object.getPrototypeOf(t);n!==null;)r=n,n=Object.getPrototypeOf(r);return r===t}function Hs(e){return typeof e=="object"&&(Qi(e)||Array.isArray(e)||xI(e))}function lS(e){return typeof e=="string"&&(e==="__proto__"||e==="constructor")}function Ba(e,t){t=t||0;for(var r=Math.max(0,e.length-t),n=new Array(r),i=0;i<r;i++)n[i]=e[i+t];return n}function fT(e){if(Array.isArray(e))return Ba(e);var t={};for(var r in e)lS(r)||Rf.call(e,r)&&(t[r]=e[r]);return t}function hte(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return fS(e,t)}function gte(e,t){for(var r=[],n=arguments.length-2;n-- >0;)r[n]=arguments[n+2];return fS(t,r,e)}function yte(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return dS(e,t)}function vte(e,t){for(var r=[],n=arguments.length-2;n-- >0;)r[n]=arguments[n+2];return dS(t,r,e)}function dS(e,t,r){return fS(e,t,bte(r))}function fS(e,t,r){if(!Hs(e))throw new TypeError("Cannot merge into non-data-structure value: "+e);if(Qi(e))return typeof r=="function"&&e.mergeWith?e.mergeWith.apply(e,[r].concat(t)):e.merge?e.merge.apply(e,t):e.concat.apply(e,t);for(var n=Array.isArray(e),i=e,c=n?Ml:Yi,o=n?function(h){i===e&&(i=fT(i)),i.push(h)}:function(h,f){if(!lS(f)){var y=Rf.call(i,f),_=y&&r?r(i[f],h,f):h;(!y||_!==i[f])&&(i===e&&(i=fT(i)),i[f]=_)}},s=0;s<t.length;s++)c(t[s]).forEach(o);return i}function bte(e){function t(r,n,i){return Hs(r)&&Hs(n)&&_te(r,n)?fS(r,[n],t):e?e(r,n,i):n}return t}function _te(e,t){var r=An(e),n=An(t);return ai(r)===ai(n)&&gr(r)===gr(n)}function FX(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return dS(this,e)}function LX(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return dS(this,t,e)}function AI(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return Il(this,e,Ra(),function(n){return dS(n,t)})}function MI(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return Il(this,e,Ra(),function(n){return fS(n,t)})}function NX(e,t,r){return Il(e,t,Ht,function(){return r})}function DI(e,t){return NX(this,e,t)}function II(e,t,r){return arguments.length===1?e(this):TI(this,e,t,r)}function wI(e,t,r){return Il(this,e,t,r)}function VI(){return this.__altered}function mS(e){var t=this.asMutable();return e(t),t.wasAltered()?t.__ensureOwner(this.__ownerID):this}var qX="@@__IMMUTABLE_MAP__@@";function WT(e){return!!(e&&e[qX])}function U_(e,t){if(!e)throw new Error(t)}function _i(e){U_(e!==1/0,"Cannot perform this action with an infinite size.")}var Dl=(function(e){function t(r){return r==null?Ra():WT(r)&&!fa(r)?r:Ra().withMutations(function(n){var i=e(r);_i(i.size),i.forEach(function(c,o){return n.set(o,c)})})}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.__toString("Map {","}")},t.prototype.get=function(n,i){return this._root?this._root.get(0,void 0,n,i):i},t.prototype.set=function(n,i){return Ek(this,n,i)},t.prototype.remove=function(n){return Ek(this,n,Ht)},t.prototype.deleteAll=function(n){var i=mn(n);return i.size===0?this:this.withMutations(function(c){i.forEach(function(o){return c.remove(o)})})},t.prototype.clear=function(){return this.size===0?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Ra()},t.prototype.sort=function(n){return Oa(vf(this,n))},t.prototype.sortBy=function(n,i){return Oa(vf(this,i,n))},t.prototype.map=function(n,i){var c=this;return this.withMutations(function(o){o.forEach(function(s,h){o.set(h,n.call(i,s,h,c))})})},t.prototype.__iterator=function(n,i){return new Ste(this,n,i)},t.prototype.__iterate=function(n,i){var c=this,o=0;return this._root&&this._root.iterate(function(s){return o++,n(s[1],s[0],c)},i),o},t.prototype.__ensureOwner=function(n){return n===this.__ownerID?this:n?EI(this.size,this._root,n,this.__hash):this.size===0?Ra():(this.__ownerID=n,this.__altered=!1,this)},t})(Yi);Dl.isMap=WT;var Cr=Dl.prototype;Cr[qX]=!0;Cr[aS]=Cr.remove;Cr.removeAll=Cr.deleteAll;Cr.setIn=DI;Cr.removeIn=Cr.deleteIn=kI;Cr.update=II;Cr.updateIn=wI;Cr.merge=Cr.concat=RX;Cr.mergeWith=OX;Cr.mergeDeep=FX;Cr.mergeDeepWith=LX;Cr.mergeIn=MI;Cr.mergeDeepIn=AI;Cr.withMutations=mS;Cr.wasAltered=VI;Cr.asImmutable=cS;Cr["@@transducer/init"]=Cr.asMutable=uS;Cr["@@transducer/step"]=function(e,t){return e.set(t[0],t[1])};Cr["@@transducer/result"]=function(e){return e.asImmutable()};var z_=function(t,r){this.ownerID=t,this.entries=r};z_.prototype.get=function(t,r,n,i){for(var c=this.entries,o=0,s=c.length;o<s;o++)if(fn(n,c[o][0]))return c[o][1];return i};z_.prototype.update=function(t,r,n,i,c,o,s){for(var h=c===Ht,f=this.entries,y=0,_=f.length;y<_&&!fn(i,f[y][0]);y++);var g=y<_;if(g?f[y][1]===c:h)return this;if(Gi(s),(h||!g)&&Gi(o),!(h&&f.length===1)){if(!g&&!h&&f.length>=Mte)return Cte(t,f,i,c);var a=t&&t===this.ownerID,d=a?f:Ba(f);return g?h?y===_-1?d.pop():d[y]=d.pop():d[y]=[i,c]:d.push([i,c]),a?(this.entries=d,this):new z_(t,d)}};var bf=function(t,r,n){this.ownerID=t,this.bitmap=r,this.nodes=n};bf.prototype.get=function(t,r,n,i){r===void 0&&(r=Wn(n));var c=1<<((t===0?r:r>>>t)&$n),o=this.bitmap;return(o&c)===0?i:this.nodes[UX(o&c-1)].get(t+lr,r,n,i)};bf.prototype.update=function(t,r,n,i,c,o,s){n===void 0&&(n=Wn(i));var h=(r===0?n:n>>>r)&$n,f=1<<h,y=this.bitmap,_=(y&f)!==0;if(!_&&c===Ht)return this;var g=UX(y&f-1),a=this.nodes,d=_?a[g]:void 0,p=BI(d,t,r+lr,n,i,c,o,s);if(p===d)return this;if(!_&&p&&a.length>=Dte)return Tte(t,a,y,h,p);if(_&&!p&&a.length===2&&Bk(a[g^1]))return a[g^1];if(_&&p&&a.length===1&&Bk(p))return p;var u=t&&t===this.ownerID,m=_?p?y:y^f:y|f,v=_?p?jX(a,g,p,u):Ate(a,g,u):xte(a,g,p,u);return u?(this.bitmap=m,this.nodes=v,this):new bf(t,m,v)};var H_=function(t,r,n){this.ownerID=t,this.count=r,this.nodes=n};H_.prototype.get=function(t,r,n,i){r===void 0&&(r=Wn(n));var c=(t===0?r:r>>>t)&$n,o=this.nodes[c];return o?o.get(t+lr,r,n,i):i};H_.prototype.update=function(t,r,n,i,c,o,s){n===void 0&&(n=Wn(i));var h=(r===0?n:n>>>r)&$n,f=c===Ht,y=this.nodes,_=y[h];if(f&&!_)return this;var g=BI(_,t,r+lr,n,i,c,o,s);if(g===_)return this;var a=this.count;if(!_)a++;else if(!g&&(a--,a<Ite))return Pte(t,y,a,h);var d=t&&t===this.ownerID,p=jX(y,h,g,d);return d?(this.count=a,this.nodes=p,this):new H_(t,a,p)};var Ws=function(t,r,n){this.ownerID=t,this.keyHash=r,this.entries=n,this._index=void 0};Ws.prototype._positionOf=function(t,r){var n=this.entries,i=this._index;if(i===void 0&&r&&n.length>=wte&&(i=this._buildIndex()),i!==void 0){var c=i[bI(t)];if(c!==void 0)for(var o=0;o<c.length;o++){var s=c[o];if(fn(t,n[s][0]))return s}return-1}for(var h=0,f=n.length;h<f;h++)if(fn(t,n[h][0]))return h;return-1};Ws.prototype._buildIndex=function(){for(var t=Object.create(null),r=this.entries,n=0,i=r.length;n<i;n++){var c=bI(r[n][0]),o=t[c];o!==void 0?o.push(n):t[c]=[n]}return this._index=t,t};Ws.prototype.get=function(t,r,n,i){var c=this._positionOf(n,!0);return c===-1?i:this.entries[c][1]};Ws.prototype.update=function(t,r,n,i,c,o,s){n===void 0&&(n=Wn(i));var h=c===Ht;if(n!==this.keyHash)return h?this:(Gi(s),Gi(o),RI(this,t,r,n,[i,c]));var f=this.entries,y=f.length,_=t&&t===this.ownerID,g=this._positionOf(i,_),a=g===-1?y:g,d=g!==-1;if(d?f[a][1]===c:h)return this;if(Gi(s),(h||!d)&&Gi(o),h&&y===2)return new ts(t,this.keyHash,f[a^1]);var p=_?f:Ba(f);if(d)h?(a===y-1?p.pop():p[a]=p.pop(),_&&(this._index=void 0)):p[a]=[i,c];else if(p.push([i,c]),_&&this._index!==void 0){var u=bI(i),m=this._index[u];m!==void 0?m.push(y):this._index[u]=[y]}return _?(this.entries=p,this):new Ws(t,this.keyHash,p)};var ts=function(t,r,n){this.ownerID=t,this.keyHash=r,this.entry=n};ts.prototype.get=function(t,r,n,i){return fn(n,this.entry[0])?this.entry[1]:i};ts.prototype.update=function(t,r,n,i,c,o,s){var h=c===Ht,f=fn(i,this.entry[0]);if(f?c===this.entry[1]:h)return this;if(Gi(s),h){Gi(o);return}return f?t&&t===this.ownerID?(this.entry[1]=c,this):new ts(t,this.keyHash,[i,c]):(Gi(o),RI(this,t,r,Wn(i),[i,c]))};z_.prototype.iterate=Ws.prototype.iterate=function(e,t){for(var r=this.entries,n=0,i=r.length-1;n<=i;n++)if(e(r[t?i-n:n])===!1)return!1};bf.prototype.iterate=H_.prototype.iterate=function(e,t){for(var r=this.nodes,n=0,i=r.length-1;n<=i;n++){var c=r[t?i-n:n];if(c&&c.iterate(e,t)===!1)return!1}};ts.prototype.iterate=function(e,t){return e(this.entry)};var Ste=(function(e){function t(r,n,i){this._type=n,this._reverse=i,this._stack=r._root&&wk(r._root)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.next=function(){for(var n=this._type,i=this._stack;i;){var c=i.node,o=i.index++,s=void 0;if(c.entry){if(o===0)return Ax(n,c.entry)}else if(c.entries){if(s=c.entries.length-1,o<=s)return Ax(n,c.entries[this._reverse?s-o:o])}else if(s=c.nodes.length-1,o<=s){var h=c.nodes[this._reverse?s-o:o];if(h){if(h.entry)return Ax(n,h.entry);i=this._stack=wk(h,i)}continue}i=this._stack=this._stack.__prev}return xn()},t})(Xt);function Ax(e,t){return Sr(e,t[0],t[1])}function wk(e,t){return{node:e,index:0,__prev:t}}function EI(e,t,r,n){var i=Object.create(Cr);return i.size=e,i._root=t,i.__ownerID=r,i.__hash=n,i.__altered=!1,i}var Vk;function Ra(){return Vk||(Vk=EI(0))}function Ek(e,t,r){var n,i;if(e._root){var c=PD(),o=PD();if(n=BI(e._root,e.__ownerID,0,void 0,t,r,c,o),!o.value)return e;i=e.size+(c.value?r===Ht?-1:1:0)}else{if(r===Ht)return e;i=1,n=new z_(e.__ownerID,[[t,r]])}return e.__ownerID?(e.size=i,e._root=n,e.__hash=void 0,e.__altered=!0,e):n?EI(i,n):Ra()}function BI(e,t,r,n,i,c,o,s){return e?e.update(t,r,n,i,c,o,s):c===Ht?e:(Gi(s),Gi(o),new ts(t,n,[i,c]))}function Bk(e){return e.constructor===ts||e.constructor===Ws}function RI(e,t,r,n,i){if(e.keyHash===n)return new Ws(t,n,[e.entry,i]);var c=(r===0?e.keyHash:e.keyHash>>>r)&$n,o=(r===0?n:n>>>r)&$n,s,h=c===o?[RI(e,t,r+lr,n,i)]:(s=new ts(t,n,i),c<o?[e,s]:[s,e]);return new bf(t,1<<c|1<<o,h)}function Cte(e,t,r,n){e||(e=new mI);for(var i=new ts(e,Wn(r),[r,n]),c=0;c<t.length;c++){var o=t[c];i=i.update(e,0,void 0,o[0],o[1])}return i}function Pte(e,t,r,n){for(var i=0,c=0,o=new Array(r),s=0,h=1,f=t.length;s<f;s++,h<<=1){var y=t[s];y!==void 0&&s!==n&&(i|=h,o[c++]=y)}return new bf(e,i,o)}function Tte(e,t,r,n,i){for(var c=0,o=new Array(Si),s=0;r!==0;s++,r>>>=1)o[s]=r&1?t[c++]:void 0;return o[n]=i,new H_(e,c+1,o)}function UX(e){return e-=e>>1&1431655765,e=(e&858993459)+(e>>2&858993459),e=e+(e>>4)&252645135,e+=e>>8,e+=e>>16,e&127}function jX(e,t,r,n){var i=n?e:Ba(e);return i[t]=r,i}function xte(e,t,r,n){var i=e.length+1;if(n&&t+1===i)return e[t]=r,e;for(var c=new Array(i),o=0,s=0;s<i;s++)s===t?(c[s]=r,o=-1):c[s]=e[s+o];return c}function Ate(e,t,r){var n=e.length-1;if(r&&t===n)return e.pop(),e;for(var i=new Array(n),c=0,o=0;o<n;o++)o===t&&(c=1),i[o]=e[o+c];return i}var Mte=Si/4,Dte=Si/2,Ite=Si/4,wte=16;function GX(e){if(pI(e)&&typeof e!="string")return e;if(fa(e))return e.toArray();throw new TypeError("Invalid keyPath: expected Ordered Collection or Array: "+e)}function W_(e){try{return typeof e=="string"?JSON.stringify(e):String(e)}catch{return JSON.stringify(e)}}function zX(e,t){return Qi(e)?e.has(t):Hs(e)&&Rf.call(e,t)}function OI(e,t,r){return Qi(e)?e.get(t,r):zX(e,t)?typeof e.get=="function"?e.get(t):e[t]:r}function HX(e,t){if(!Hs(e))throw new TypeError("Cannot update non-data-structure value: "+e);if(Qi(e)){if(!e.remove)throw new TypeError("Cannot update immutable value without .remove() method: "+e);return e.remove(t)}if(!Rf.call(e,t))return e;var r=fT(e);return Array.isArray(r)?r.splice(t,1):delete r[t],r}function WX(e,t,r){if(lS(t))return e;if(!Hs(e))throw new TypeError("Cannot update non-data-structure value: "+e);if(Qi(e)){if(!e.set)throw new TypeError("Cannot update immutable value without .set() method: "+e);return e.set(t,r)}if(Rf.call(e,t)&&r===e[t])return e;var n=fT(e);return n[t]=r,n}function Il(e,t,r,n){n||(n=r,r=void 0);var i=$X(Qi(e),e,GX(t),0,r,n);return i===Ht?r:i}function $X(e,t,r,n,i,c){var o=t===Ht;if(n===r.length){var s=o?i:t,h=c(s);return h===s?t:h}if(!o&&!Hs(t))throw new TypeError("Cannot update within non-data-structure value in path ["+Array.from(r).slice(0,n).map(W_)+"]: "+t);var f=r[n],y=o?Ht:OI(t,f,Ht),_=$X(y===Ht?e:Qi(y),y,r,n+1,i,c);return _===y?t:_===Ht?HX(t,f):WX(o?e?Ra():{}:t,f,_)}function XX(e,t){return Il(e,t,function(){return Ht})}function kI(e){return XX(this,e)}var KX="@@__IMMUTABLE_
15LIST__@@";function FI(e){return!!(e&&e[KX])}var pS=(function(e){function t(r){var n=uT();if(r==null)return n;if(FI(r))return r;var i=e(r),c=i.size;return c===0?n:(_i(c),c>0&&c<Si?$_(0,c,lr,void 0,new js(i.toArray())):n.withMutations(function(o){o.setSize(c),i.forEach(function(s,h){return o.set(h,s)})}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.prototype.toString=function(){return this.__toString("List [","]")},t.prototype.get=function(n,i){if(n=Gs(this,n),n>=0&&n<this.size){n+=this._origin;var c=YX(this,n);return c&&c.array[n&$n]}return i},t.prototype.set=function(n,i){return Vte(this,n,i)},t.prototype.remove=function(n){return this.has(n)?n===0?this.shift():n===this.size-1?this.pop():this.splice(n,1):this},t.prototype.insert=function(n,i){return this.splice(n,0,i)},t.prototype.clear=function(){return this.size===0?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=lr,this._root=this._tail=this.__hash=void 0,this.__altered=!0,this):uT()},t.prototype.push=function(){var n=arguments,i=this.size;return this.withMutations(function(c){Us(c,0,i+n.length);for(var o=0;o<n.length;o++)c.set(i+o,n[o])})},t.prototype.pop=function(){return Us(this,0,-1)},t.prototype.unshift=function(){var n=arguments;return this.withMutations(function(i){Us(i,-n.length);for(var c=0;c<n.length;c++)i.set(c,n[c])})},t.prototype.shift=function(){return Us(this,1)},t.prototype.shuffle=function(n){return n===void 0&&(n=Math.random),this.withMutations(function(i){for(var c=i.size,o,s;c;)o=Math.floor(n()*c--),s=i.get(o),i.set(o,i.get(c)),i.set(c,s)})},t.prototype.concat=function(){for(var n=arguments,i=[],c=0;c<arguments.length;c++){var o=n[c],s=e(typeof o!="string"&&fI(o)?o:[o]);s.size!==0&&i.push(s)}return i.length===0?this:this.size===0&&!this.__ownerID&&i.length===1?this.constructor(i[0]):this.withMutations(function(h){i.forEach(function(f){return f.forEach(function(y){return h.push(y)})})})},t.prototype.setSize=function(n){return Us(this,0,n)},t.prototype.map=function(n,i){var c=this;return this.withMutations(function(o){for(var s=0;s<c.size;s++)o.set(s,n.call(i,o.get(s),s,c))})},t.prototype.slice=function(n,i){var c=this.size;return oS(n,i,c)?this:Us(this,Bf(n,c),sS(i,c))},t.prototype.__iterator=function(n,i){var c=i?this.size:0,o=Rk(this,i);return new Xt(function(){var s=o();return s===j_?xn():Sr(n,i?--c:c++,s)})},t.prototype.__iterate=function(n,i){for(var c=i?this.size:0,o=Rk(this,i),s;(s=o())!==j_&&n(s,i?--c:c++,this)!==!1;);return c},t.prototype.__ensureOwner=function(n){return n===this.__ownerID?this:n?$_(this._origin,this._capacity,this._level,this._root,this._tail,n,this.__hash):this.size===0?uT():(this.__ownerID=n,this.__altered=!1,this)},t})(Ml);pS.isList=FI;var $r=pS.prototype;$r[KX]=!0;$r[aS]=$r.remove;$r.merge=$r.concat;$r.setIn=DI;$r.deleteIn=$r.removeIn=kI;$r.update=II;$r.updateIn=wI;$r.mergeIn=MI;$r.mergeDeepIn=AI;$r.withMutations=mS;$r.wasAltered=VI;$r.asImmutable=cS;$r["@@transducer/init"]=$r.asMutable=uS;$r["@@transducer/step"]=function(e,t){return e.push(t)};$r["@@transducer/result"]=function(e){return e.asImmutable()};var js=function(t,r){this.array=t,this.ownerID=r};js.prototype.removeBefore=function(t,r,n){if((n&(1<<r+lr)-1)===0||this.array.length===0)return this;var i=n>>>r&$n;if(i>=this.array.length)return new js([],t);var c=i===0,o;if(r>0){var s=this.array[i];if(o=s&&s.removeBefore(t,r-lr,n),o===s&&c)return this}if(c&&!o)return this;var h=_f(this,t);if(!c)for(var f=0;f<i;f++)h.array[f]=void 0;return o&&(h.array[i]=o),h};js.prototype.removeAfter=function(t,r,n){if(n===(r?1<<r+lr:Si)||this.array.length===0)return this;var i=n-1>>>r&$n;if(i>=this.array.length)return this;var c;if(r>0){var o=this.array[i];if(c=o&&o.removeAfter(t,r-lr,n),c===o&&i===this.array.length-1)return this}var s=_f(this,t);return s.array.splice(i+1),c&&(s.array[i]=c),s};var j_={};function Rk(e,t){var r=e._origin,n=e._capacity,i=X_(n),c=e._tail;return o(e._root,e._level,0);function o(f,y,_){return y===0?s(f,_):h(f,y,_)}function s(f,y){var _=y===i?c&&c.array:f&&f.array,g=y>r?0:r-y,a=n-y;return a>Si&&(a=Si),function(){if(g===a)return j_;var d=t?--a:g++;return _&&_[d]}}function h(f,y,_){var g,a=f&&f.array,d=_>r?0:r-_>>y,p=(n-_>>y)+1;return p>Si&&(p=Si),function(){for(;;){if(g){var u=g();if(u!==j_)return u;g=null}if(d===p)return j_;var m=t?--p:d++;g=o(a&&a[m],y-lr,_+(m<<y))}}}}function $_(e,t,r,n,i,c,o){var s=Object.create($r);return s.size=t-e,s._origin=e,s._capacity=t,s._level=r,s._root=n,s._tail=i,s.__ownerID=c,s.__hash=o,s.__altered=!1,s}function uT(){return $_(0,0,lr)}function Vte(e,t,r){if(t=Gs(e,t),t!==t)return e;if(t>=e.size||t<0)return e.withMutations(function(o){t<0?Us(o,t).set(0,r):Us(o,0,t+1).set(t,r)});t+=e._origin;var n=e._tail,i=e._root,c=PD();return t>=X_(e._capacity)?n=DD(n,e.__ownerID,0,t,r,c):i=DD(i,e.__ownerID,e._level,t,r,c),c.value?e.__ownerID?(e._root=i,e._tail=n,e.__hash=void 0,e.__altered=!0,e):$_(e._origin,e._capacity,e._level,i,n):e}function DD(e,t,r,n,i,c){var o=n>>>r&$n,s=e&&o<e.array.length;if(!s&&i===void 0)return e;var h;if(r>0){var f=e&&e.array[o],y=DD(f,t,r-lr,n,i,c);return y===f?e:(h=_f(e,t),h.array[o]=y,h)}return s&&e.array[o]===i?e:(c&&Gi(c),h=_f(e,t),i===void 0&&o===h.array.length-1?h.array.pop():h.array[o]=i,h)}function _f(e,t){return t&&e&&t===e.ownerID?e:new js(e?e.array.slice():[],t)}function YX(e,t){if(t>=X_(e._capacity))return e._tail;if(t<1<<e._level+lr){for(var r=e._root,n=e._level;r&&n>0;)r=r.array[t>>>n&$n],n-=lr;return r}}function Ete(e,t,r){var n=e._origin+(t===void 0?0:t),i=r===void 0?e._capacity:r<0?e._capacity+r:e._origin+r;if(Number.isFinite(i)&&i>QC||Number.isFinite(n)&&n<-QC||Number.isFinite(i)&&Number.isFinite(n)&&i-n>QC)throw new RangeError("Invalid List size: a List cannot hold more than "+QC+" (2 ** 30) values.")}function Us(e,t,r){Ete(e,t,r),t!==void 0&&(t|=0),r!==void 0&&(r|=0);var n=e.__ownerID||new mI,i=e._origin,c=e._capacity,o=i+t,s=r===void 0?c:r<0?c+r:i+r;if(o===i&&s===c)return e;if(o>=s)return e.clear();for(var h=e._level,f=e._root,y=0;o+y<0;)f=new js(f&&f.array.length?[void 0,f]:[],n),h+=lr,y+=Ok(h);y&&(o+=y,i+=y,s+=y,c+=y);for(var _=X_(c),g=X_(s);g>=Ok(h+lr);)f=new js(f&&f.array.length?[f]:[],n),h+=lr;var a=e._tail,d=g<_?YX(e,s-1):g>_?new js([],n):a;if(a&&g>_&&o<c&&a.array.length){f=_f(f,n);for(var p=f,u=h;u>lr;u-=lr){var m=_>>>u&$n;p=p.array[m]=_f(p.array[m],n)}p.array[_>>>lr&$n]=a}if(s<c&&(d=d&&d.removeAfter(n,0,s)),o>=g)o-=g,s-=g,h=lr,f=void 0,d=d&&d.removeBefore(n,0,o);else if(o>i||g<_){for(y=0;f;){var v=o>>>h&$n;if(v!==g>>>h&$n)break;v&&(y+=(1<<h)*v),h-=lr,f=f.array[v]}f&&o>i&&(f=f.removeBefore(n,h,o-y)),f&&g<_&&(f=f.removeAfter(n,h,g-y)),y&&(o-=y,s-=y)}return e.__ownerID?(e.size=s-o,e._origin=o,e._capacity=s,e._level=h,e._root=f,e._tail=d,e.__hash=void 0,e.__altered=!0,e):$_(o,s,h,f,d)}function X_(e){return e<Si?0:e-1>>>lr<<lr}var QC=Math.pow(2,30);function Ok(e){return e<31?1<<e:Math.pow(2,e)}function LI(e){return WT(e)&&fa(e)}var Oa=(function(e){function t(r){return r==null?L_():LI(r)?r:L_().withMutations(function(n){var i=Yi(r);
vendor: 22,543 bytes, line 15
15_i(i.size),i.forEach(function(c,o){return n.set(o,c)})})}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.prototype.toString=function(){return this.__toString("OrderedMap {","}")},t.prototype.get=function(n,i){var c=this._map.get(n);return c!==void 0?this._list.get(c)[1]:i},t.prototype.clear=function(){return this.size===0?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this.__altered=!0,this):L_()},t.prototype.set=function(n,i){return Fk(this,n,i)},t.prototype.remove=function(n){return Fk(this,n,Ht)},t.prototype.__iterate=function(n,i){var c=this;return this._list.__iterate(function(o){return o&&n(o[1],o[0],c)},i)},t.prototype.__iterator=function(n,i){return this._list.fromEntrySeq().__iterator(n,i)},t.prototype.__ensureOwner=function(n){if(n===this.__ownerID)return this;var i=this._map.__ensureOwner(n),c=this._list.__ensureOwner(n);return n?NI(i,c,n,this.__hash):this.size===0?L_():(this.__ownerID=n,this.__altered=!1,this._map=i,this._list=c,this)},t})(Dl);Oa.isOrderedMap=LI;Oa.prototype[zs]=!0;Oa.prototype[aS]=Oa.prototype.remove;function NI(e,t,r,n){var i=Object.create(Oa.prototype);return i.size=e?e.size:0,i._map=e,i._list=t,i.__ownerID=r,i.__hash=n,i.__altered=!1,i}var kk;function L_(){return kk||(kk=NI(Ra(),uT()))}function Fk(e,t,r){var n=e._map,i=e._list,c=n.get(t),o=c!==void 0,s,h;if(r===Ht){if(!o)return e;i.size>=Si&&i.size>=n.size*2?(h=i.filter(function(f,y){return f!==void 0&&c!==y}),s=h.toKeyedSeq().map(function(f){return f[0]}).flip().toMap(),e.__ownerID&&(s.__ownerID=h.__ownerID=e.__ownerID)):(s=n.remove(t),h=c===i.size-1?i.pop():i.set(c,void 0))}else if(o){if(r===i.get(c)[1])return e;s=n,h=i.set(c,[t,r])}else s=n.set(t,i.size),h=i.set(i.size,[t,r]);return e.__ownerID?(e.size=s.size,e._map=s,e._list=h,e.__hash=void 0,e.__altered=!0,e):NI(s,h)}var QX="@@__IMMUTABLE_STACK__@@";function mT(e){return!!(e&&e[QX])}var $T=(function(e){function t(r){return r==null?ZC():mT(r)?r:ZC().pushAll(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.prototype.toString=function(){return this.__toString("Stack [","]")},t.prototype.get=function(n,i){var c=this._head;for(n=Gs(this,n);c&&n--;)c=c.next;return c?c.value:i},t.prototype.peek=function(){return this._head&&this._head.value},t.prototype.push=function(){var n=arguments;if(arguments.length===0)return this;for(var i=this.size+arguments.length,c=this._head,o=arguments.length-1;o>=0;o--)c={value:n[o],next:c};return this.__ownerID?(this.size=i,this._head=c,this.__hash=void 0,this.__altered=!0,this):N_(i,c)},t.prototype.pushAll=function(n){if(n=e(n),n.size===0)return this;if(this.size===0&&mT(n))return n;_i(n.size);var i=this.size,c=this._head;return n.__iterate(function(o){i++,c={value:o,next:c}},!0),this.__ownerID?(this.size=i,this._head=c,this.__hash=void 0,this.__altered=!0,this):N_(i,c)},t.prototype.pop=function(){return this.slice(1)},t.prototype.clear=function(){return this.size===0?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):ZC()},t.prototype.slice=function(n,i){if(oS(n,i,this.size))return this;var c=Bf(n,this.size),o=sS(i,this.size);if(o!==this.size)return e.prototype.slice.call(this,n,i);for(var s=this.size-c,h=this._head;c--;)h=h.next;return this.__ownerID?(this.size=s,this._head=h,this.__hash=void 0,this.__altered=!0,this):N_(s,h)},t.prototype.__ensureOwner=function(n){return n===this.__ownerID?this:n?N_(this.size,this._head,n,this.__hash):this.size===0?ZC():(this.__ownerID=n,this.__altered=!1,this)},t.prototype.__iterate=function(n,i){var c=this;if(i)return new yf(this.toArray()).__iterate(function(h,f){return n(h,f,c)},i);for(var o=0,s=this._head;s&&n(s.value,o++,this)!==!1;)s=s.next;return o},t.prototype.__iterator=function(n,i){if(i)return new yf(this.toArray()).__iterator(n,i);var c=0,o=this._head;return new Xt(function(){if(o){var s=o.value;return o=o.next,Sr(n,c++,s)}return xn()})},t})(Ml);$T.isStack=mT;var Xn=$T.prototype;Xn[QX]=!0;Xn.shift=Xn.pop;Xn.unshift=Xn.push;Xn.unshiftAll=Xn.pushAll;Xn.withMutations=mS;Xn.wasAltered=VI;Xn.asImmutable=cS;Xn["@@transducer/init"]=Xn.asMutable=uS;Xn["@@transducer/step"]=function(e,t){return e.unshift(t)};Xn["@@transducer/result"]=function(e){return e.asImmutable()};function N_(e,t,r,n){var i=Object.create(Xn);return i.size=e,i._head=t,i.__ownerID=r,i.__hash=n,i.__altered=!1,i}var Lk;function ZC(){return Lk||(Lk=N_(0))}function Nk(e,t,r,n,i,c){return _i(e.size),e.__iterate(function(o,s,h){i?(i=!1,r=o):r=t.call(n,r,o,s,h)},c),r}function Bte(e,t){return t}function Rte(e,t){return[t,e]}function Mx(e){return function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return!e.apply(this,t)}}function qk(e){return function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return-e.apply(this,t)}}function Uk(e,t){return e<t?1:e>t?-1:0}function qI(e,t){if(e===t)return!0;if(!oi(t)||e.size!==void 0&&t.size!==void 0&&e.size!==t.size||e.__hash!==void 0&&t.__hash!==void 0&&e.__hash!==t.__hash||gr(e)!==gr(t)||ai(e)!==ai(t)||fa(e)!==fa(t))return!1;if(e.size===0&&t.size===0)return!0;var r=!qT(e);if(fa(e)){var n=e.entries();return t.every(function(h,f){var y=n.next().value;return y&&fn(y[1],h)&&(r||fn(y[0],f))})&&n.next().done}var i=!1;if(e.size===void 0)if(t.size===void 0)typeof e.cacheResult=="function"&&e.cacheResult();else{i=!0;var c=e;e=t,t=c}var o=!0,s=t.__iterate(function(h,f){if(r?!e.has(h):i?!fn(h,e.get(f,Ht)):!fn(e.get(f,Ht),h))return o=!1,!1});return o&&e.size===s}var ZX=(function(e){function t(r,n,i){if(i===void 0&&(i=1),!(this instanceof t))return new t(r,n,i);if(U_(i!==0,"Cannot step a Range by 0"),U_(r!==void 0,"You must define a start value when using Range"),U_(n!==void 0,"You must define an end value when using Range"),i=Math.abs(i),n<r&&(i=-i),this._start=r,this._end=n,this._step=i,this.size=Math.max(0,Math.ceil((n-r)/i-1)+1),this.size===0){if(Dx)return Dx;Dx=this}}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.size===0?"Range []":"Range [ "+this._start+"..."+this._end+(this._step!==1?" by "+this._step:"")+" ]"},t.prototype.get=function(n,i){return this.has(n)?this._start+Gs(this,n)*this._step:i},t.prototype.includes=function(n){var i=(n-this._start)/this._step;return i>=0&&i<this.size&&i===Math.floor(i)},t.prototype.slice=function(n,i){return oS(n,i,this.size)?this:(n=Bf(n,this.size),i=sS(i,this.size),i<=n?new t(0,0):new t(this.get(n,this._end),this.get(i,this._end),this._step))},t.prototype.indexOf=function(n){var i=n-this._start;if(i%this._step===0){var c=i/this._step;if(c>=0&&c<this.size)return c}return-1},t.prototype.lastIndexOf=function(n){return this.indexOf(n)},t.prototype.__iterate=function(n,i){for(var c=this.size,o=this._step,s=i?this._start+(c-1)*o:this._start,h=0;h!==c&&n(s,i?c-++h:h++,this)!==!1;)s+=i?-o:o;return h},t.prototype.__iterator=function(n,i){var c=this.size,o=this._step,s=i?this._start+(c-1)*o:this._start,h=0;return new Xt(function(){if(h===c)return xn();var f=s;return s+=i?-o:o,Sr(n,i?c-++h:h++,f)})},t.prototype.equals=function(n){return n instanceof t?this._start===n._start&&this._end===n._end&&this._step===n._step:qI(this,n)},t})(Zi),Dx,JX="@@__IMMUTABLE_SET__@@";function XT(e){return!!(e&&e[JX])}var hS=(function(e){function t(r){return r==null?q_():XT(r)&&!fa(r)?r:q_().withMutations(function(n){var i=e(r);_i(i.size),i.forEach(function(c){return n.add(c)})})}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.fromKeys=function(n){return this(Yi(n).keySeq())},t.intersect=function(n){return n=mn(n).toArray(),n.length?yn.intersect.apply(t(n.pop()),n):q_()},t.union=function(n){return n=mn(n).toArray(),n.length?yn.union.apply(t(n.pop()),n):q_()},t.prototype.toString=function(){return this.__toString("Set {","}")},t.prototype.has=function(n){return this._map.has(n)},t.prototype.add=function(n){return JC(this,this._map.set(n,n))},t.prototype.remove=function(n){return JC(this,this._map.remove(n))},t.prototype.clear=function(){return JC(this,this._map.clear())},t.prototype.map=function(n,i){var c=this,o=!1,s=JC(this,this._map.mapEntries(function(h){var f=h[1],y=n.call(i,f,f,c);return y!==f&&(o=!0),[y,y]},i));return o?s:this},t.prototype.union=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return n=n.filter(function(c){return c.size!==0}),n.length===0?this:this.size===0&&!this.__ownerID&&n.length===1?this.constructor(n[0]):this.withMutations(function(c){for(var o=0;o<n.length;o++)typeof n[o]=="string"?c.add(n[o]):e(n[o]).forEach(function(s){return c.add(s)})})},t.prototype.intersect=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n.length===0)return this;n=n.map(function(o){return e(o)});var c=[];return this.forEach(function(o){n.every(function(s){return s.includes(o)})||c.push(o)}),this.withMutations(function(o){c.forEach(function(s){o.remove(s)})})},t.prototype.subtract=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n.length===0)return this;n=n.map(function(o){return e(o)});var c=[];return this.forEach(function(o){n.some(function(s){return s.includes(o)})&&c.push(o)}),this.withMutations(function(o){c.forEach(function(s){o.remove(s)})})},t.prototype.sort=function(n){return Cf(vf(this,n))},t.prototype.sortBy=function(n,i){return Cf(vf(this,i,n))},t.prototype.wasAltered=function(){return this._map.wasAltered()},t.prototype.__iterate=function(n,i){var c=this;return this._map.__iterate(function(o){return n(o,o,c)},i)},t.prototype.__iterator=function(n,i){return this._map.__iterator(n,i)},t.prototype.__ensureOwner=function(n){if(n===this.__ownerID)return this;var i=this._map.__ensureOwner(n);return n?this.__make(i,n):this.size===0?this.__empty():(this.__ownerID=n,this._map=i,this)},t})(Vf);hS.isSet=XT;var yn=hS.prototype;yn[JX]=!0;yn[aS]=yn.remove;yn.merge=yn.concat=yn.union;yn.withMutations=mS;yn.asImmutable=cS;yn["@@transducer/init"]=yn.asMutable=uS;yn["@@transducer/step"]=function(e,t){return e.add(t)};yn["@@transducer/result"]=function(e){return e.asImmutable()};yn.__empty=q_;yn.__make=eK;function JC(e,t){return e.__ownerID?(e.size=t.size,e._map=t,e):t===e._map?e:t.size===0?e.__empty():e.__make(t)}function eK(e,t){var r=Object.create(yn);return r.size=e?e.size:0,r._map=e,r.__ownerID=t,r}var jk;function q_(){return jk||(jk=eK(Ra()))}function UI(e,t,r){for(var n=GX(t),i=0;i!==n.length;)if(e=OI(e,n[i++],Ht),e===Ht)return r;return e}function tK(e,t){return UI(this,e,t)}function rK(e,t){return UI(e,t,Ht)!==Ht}function Ote(e){return rK(this,e)}function nK(){_i(this.size);var e={};return this.__iterate(function(t,r){lS(r)||(e[r]=t)}),e}function pT(e){if(!e||typeof e!="object")return e;if(!oi(e)){if(!Hs(e))return e;e=An(e)}if(gr(e)){var t={};return e.__iterate(function(n,i){lS(i)||(t[i]=pT(n))}),t}var r=[];return e.__iterate(function(n){r.push(pT(n))}),r}function kte(e){if(e.size===1/0)return 0;var t=fa(e),r=gr(e),n=t?1:0;return e.__iterate(r?t?function(i,c){n=31*n+Gk(Wn(i),Wn(c))|0}:function(i,c){n=n+Gk(Wn(i),Wn(c))|0}:t?function(i){n=31*n+Wn(i)|0}:function(i){n=n+Wn(i)|0}),Fte(e.size,n)}function Fte(e,t){return t=lh(t,3432918353),t=lh(t<<15|t>>>-15,461845907),t=lh(t<<13|t>>>-13,5),t=(t+3864292196|0)^e,t=lh(t^t>>>16,2246822507),t=lh(t^t>>>13,3266489909),t=zT(t^t>>>16),t}function Gk(e,t){return e^t+2654435769+(e<<6)+(e>>2)|0}function wl(e,t){var r=function(n){e.prototype[n]=t[n]};return Object.keys(t).forEach(r),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach(r),e}mn.Iterator=Xt;wl(mn,{toArray:function(){_i(this.size);var t=new Array(this.size||0),r=gr(this),n=0;return this.__iterate(function(i,c){t[n++]=r?[c,i]:i}),t},toIndexedSeq:function(){return new xX(this)},toJS:function(){return pT(this)},toKeyedSeq:function(){return new HT(this,!0)},toMap:function(){return Dl(this.toKeyedSeq())},toObject:nK,toOrderedMap:function(){return Oa(this.toKeyedSeq())},toOrderedSet:function(){return Cf(gr(this)?this.valueSeq():this)},toSet:function(){return hS(gr(this)?this.valueSeq():this)},toSetSeq:function(){return new AX(this)},toSeq:function(){return ai(this)?this.toIndexedSeq():gr(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return $T(gr(this)?this.valueSeq():this)},toList:function(){return pS(gr(this)?this.valueSeq():this)},toString:function(){return"[Collection]"},__toString:function(t,r){return this.size===0?t+r:t+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+r},concat:function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return ur(this,dte(this,t))},includes:function(t){return this.some(function(r){return fn(r,t)})},entries:function(){return this.__iterator(Pi)},every:function(t,r){_i(this.size);var n=!0;return this.__iterate(function(i,c,o){if(!t.call(r,i,c,o))return n=!1,!1}),n},filter:function(t,r){return ur(this,wX(this,t,r,!0))},partition:function(t,r){return cte(this,t,r)},find:function(t,r,n){var i=this.findEntry(t,r);return i?i[1]:n},forEach:function(t,r){return _i(this.size),this.__iterate(r?t.bind(r):t)},join:function(t){_i(this.size),t=t!==void 0?""+t:",";var r="",n=!0;return this.__iterate(function(i){n?n=!1:r+=t,r+=i!=null?i.toString():""}),r},keys:function(){return this.__iterator(Ef)},map:function(t,r){return ur(this,IX(this,t,r))},reduce:function(t,r,n){return Nk(this,t,r,n,arguments.length<2,!1)},reduceRight:function(t,r,n){return Nk(this,t,r,n,arguments.length<2,!0)},reverse:function(){return ur(this,_I(this,!0))},slice:function(t,r){return ur(this,SI(this,t,r,!0))},some:function(t,r){_i(this.size);var n=!1;return this.__iterate(function(i,c,o){if(t.call(r,i,c,o))return n=!0,!1}),n},sort:function(t){return ur(this,vf(this,t))},values:function(){return this.__iterator(Ci)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return this.size!==void 0?this.size===0:!this.some(function(){return!0})},count:function(t,r){return gf(t?this.toSeq().filter(t,r):this)},countBy:function(t,r){return ote(this,t,r)},equals:function(t){return qI(this,t)},entrySeq:function(){var t=this;if(t._cache)return new yf(t._cache);var r=t.toSeq().map(Rte).toIndexedSeq();return r.fromEntrySeq=function(){return t.toSeq()},r},filterNot:function(t,r){return this.filter(Mx(t),r)},findEntry:function(t,r,n){var i=n;return this.__iterate(function(c,o,s){if(t.call(r,c,o,s))return i=[o,c],!1}),i},findKey:function(t,r){var n=this.findEntry(t,r);return n&&n[0]},findLast:function(t,r,n){return this.toKeyedSeq().reverse().find(t,r,n)},findLastEntry:function(t,r,n){return this.toKeyedSeq().reverse().findEntry(t,r,n)},findLastKey:function(t,r){return this.toKeyedSeq().reverse().findKey(t,r)},first:function(t){return this.find(vX,null,t)},flatMap:function(t,r){return ur(this,fte(this,t,r))},flatten:function(t){return ur(this,EX(this,t,!0))},fromEntrySeq:function(){return new MX(this)},get:function(t,r){return this.find(function(n,i){return fn(i,t)},void 0,r)},getIn:tK,groupBy:function(t,r){return ste(this,t,r)},has:function(t){return this.get(t,Ht)!==Ht},hasIn:Ote,isSubset:function(t){return t=typeof t.includes=="function"?t:mn(t),this.every(function(r){return t.includes(r)})},isSuperset:function(t){return t=typeof t.isSubset=="function"?t:mn(t),t.isSubset(this)},keyOf:function(t){return this.findKey(function(r){return fn(r,t)})},keySeq:function(){return this.toSeq().map(Bte).toIndexedSeq()},last:function(t){return this.toSeq().reverse().first(t)},lastKeyOf:function(t){return this.toKeyedSeq().reverse().keyOf(t)},max:function(t){return KC(this,t)},maxBy:function(t,r){return KC(this,r,t)},min:function(t){return KC(this,t?qk(t):Uk)},minBy:function(t,r){return KC(this,r?qk(r):Uk,t)},rest:function(){return this.slice(1)},skip:function(t){return t===0?this:this.slice(Math.max(0,t))},skipLast:function(t){return t===0?this:this.slice(0,-Math.max(0,t))},skipWhile:function(t,r){return ur(this,VX(this,t,r,!0))},skipUntil:function(t,r){return this.skipWhile(Mx(t),r)},sortBy:function(t,r){return ur(this,vf(this,r,t))},take:function(t){return this.slice(0,Math.max(0,t))},takeLast:function(t){return this.slice(-Math.max(0,t))},takeWhile:function(t,r){return ur(this,ute(this,t,r))},takeUntil:function(t,r){return this.takeWhile(Mx(t),r)},update:function(t){return t(this)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=kte(this))}});var Mn=mn.prototype;Mn[gX]=!0;Mn[UT]=Mn.values;Mn.toJSON=Mn.toArray;Mn.__toStringMapper=W_;Mn.inspect=Mn.toSource=function(){return this.toString()};Mn.chain=Mn.flatMap;Mn.contains=Mn.includes;wl(Yi,{flip:function(){return ur(this,DX(this))},mapEntries:function(t,r){var n=this,i=0;return ur(this,this.toSeq().map(function(c,o){return t.call(r,[o,c],i++,n)}).fromEntrySeq())},mapKeys:function(t,r){var n=this;return ur(this,this.toSeq().flip().map(function(i,c){return t.call(r,i,c,n)}).flip())}});var gS=Yi.prototype;gS[dT]=!0;gS[UT]=Mn.entries;gS.toJSON=nK;gS.__toStringMapper=function(e,t){return W_(t)+": "+W_(e)};wl(Ml,{toKeyedSeq:function(){return new HT(this,!1)},filter:function(t,r){return ur(this,wX(this,t,r,!1))},findIndex:function(t,r){var n=this.findEntry(t,r);return n?n[0]:-1},indexOf:function(t){var r=this.keyOf(t);return r===void 0?-1:r},lastIndexOf:function(t){var r=this.lastKeyOf(t);return r===void 0?-1:r},reverse:function(){return ur(this,_I(this,!1))},slice:function(t,r){return ur(this,SI(this,t,r,!1))},splice:function(t,r){var n=arguments.length;if(r=Math.max(r||0,0),n===0||n===2&&!r)return this;t=Bf(t,t<0?this.count():this.size);var i=this.slice(0,t);return ur(this,n===1?i:i.concat(Ba(arguments,2),this.slice(t+r)))},findLastIndex:function(t,r){var n=this.findLastEntry(t,r);return n?n[0]:-1},first:function(t){return this.get(0,t)},flatten:function(t){return ur(this,EX(this,t,!1))},get:function(t,r){return t=Gs(this,t),t<0||this.size===1/0||this.size!==void 0&&t>this.size?r:this.find(function(n,i){return i===t},void 0,r)},has:function(t){return t=Gs(this,t),t>=0&&(this.size!==void 0?this.size===1/0||t<this.size:this.find(function(r,n){return n===t},void 0,Ht)!==Ht)},interpose:function(t){return ur(this,mte(this,t))},interleave:function(){var t=[this].concat(Ba(arguments)),r=YC(this.toSeq(),Zi.of,t),n=r.flatten(!0);return r.size&&(n.size=r.size*t.length),ur(this,n)},keySeq:function(){return ZX(0,this.size)},last:function(t){return this.get(-1,t)},skipWhile:function(t,r){return ur(this,VX(this,t,r,!1))},zip:function(){var t=[this].concat(Ba(arguments));return ur(this,YC(this,zk,t))},zipAll:function(){var t=[this].concat(Ba(arguments));return ur(this,YC(this,zk,t,!0))},zipWith:function(t){var r=Ba(arguments);return r[0]=this,ur(this,YC(this,t,r))}});var kf=Ml.prototype;kf[lT]=!0;kf[zs]=!0;wl(Vf,{get:function(t,r){return this.has(t)?t:r},includes:function(t){return this.has(t)},keySeq:function(){return this.valueSeq()}});var Sf=Vf.prototype;Sf.has=Mn.includes;Sf.contains=Sf.includes;Sf.keys=Sf.values;wl(Ks,gS);wl(Zi,kf);wl(Of,Sf);function zk(){return Ba(arguments)}function jI(e){return XT(e)&&fa(e)}var Cf=(function(e){function t(r){return r==null?ID():jI(r)?r:ID().withMutations(function(n){var i=Vf(r);_i(i.size),i.forEach(function(c){return n.add(c)})})}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.fromKeys=function(n){return this(Yi(n).keySeq())},t.prototype.toString=function(){return this.__toString("OrderedSet {","}")},t})(hS);Cf.isOrderedSet=jI;var Vl=Cf.prototype;Vl[zs]=!0;Vl.zip=kf.zip;Vl.zipWith=kf.zipWith;Vl.zipAll=kf.zipAll;Vl.__empty=ID;Vl.__make=iK;function iK(e,t){var r=Object.create(Vl);return r.size=e?e.size:0,r._map=e,r.__ownerID=t,r}var Hk;function ID(){return Hk||(Hk=iK(L_()))}var Lte={LeftThenRight:-1,RightThenLeft:1};function Nte(e){if(Xs(e))throw new Error("Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.");if(Qi(e))throw new Error("Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.");if(e===null||typeof e!="object")throw new Error("Can not call `Record` with a non-object as default values. Use a plain javascript object instead.")}var an=function(t,r){var n;Nte(t);var i=function(s){var h=this;if(s instanceof i)return s;if(!(this instanceof i))return new i(s);if(!n){n=!0;var f=Object.keys(t),y=c._indices={};c._name=r,c._keys=f,c._defaultValues=t;for(var _=0;_<f.length;_++){var g=f[_];y[g]=_,c[g]?typeof console=="object"&&console.warn&&console.warn("Cannot define "+zI(this)+' with property "'+g+'" since that property name is part of the Record API.'):qte(c,g)}}return this.__ownerID=void 0,this._values=pS().withMutations(function(a){a.setSize(h._keys.length),Yi(s).forEach(function(d,p){a.set(h._indices[p],d===h._defaultValues[p]?void 0:d)})}),this},c=i.prototype=Object.create(yr);return c.constructor=i,r&&(i.displayName=r),i};an.prototype.toString=function(){for(var t=zI(this)+" { ",r=this._keys,n,i=0,c=r.length;i!==c;i++)n=r[i],t+=(i?", ":"")+n+": "+W_(this.get(n));return t+" }"};an.prototype.equals=function(t){return this===t||Xs(t)&&Pf(this).equals(Pf(t))};an.prototype.hashCode=function(){return Pf(this).hashCode()};an.prototype.has=function(t){return this._indices.hasOwnProperty(t)};an.prototype.get=function(t,r){if(!this.has(t))return r;var n=this._indices[t],i=this._values.get(n);return i===void 0?this._defaultValues[t]:i};an.prototype.set=function(t,r){if(this.has(t)){var n=this._values.set(this._indices[t],r===this._defaultValues[t]?void 0:r);if(n!==this._values&&!this.__ownerID)return GI(this,n)}return this};an.prototype.remove=function(t){return this.set(t)};an.prototype.clear=function(){var t=this._values.clear().setSize(this._keys.length);return this.__ownerID?this:GI(this,t)};an.prototype.wasAltered=function(){return this._values.wasAltered()};an.prototype.toSeq=function(){return Pf(this)};an.prototype.toJS=function(){return pT(this)};an.prototype.entries=function(){return this.__iterator(Pi)};an.prototype.__iterator=function(t,r){return Pf(this).__iterator(t,r)};an.prototype.__iterate=function(t,r){return Pf(this).__iterate(t,r)};an.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var r=this._values.__ensureOwner(t);return t?GI(this,r,t):(this.__ownerID=t,this._values=r,this)};an.isRecord=Xs;an.getDescriptiveName=zI;var yr=an.prototype;yr[SX]=!0;
15yr[aS]=yr.remove;yr.deleteIn=yr.removeIn=kI;yr.getIn=tK;yr.hasIn=Mn.hasIn;yr.merge=RX;yr.mergeWith=OX;yr.mergeIn=MI;yr.mergeDeep=FX;yr.mergeDeepWith=LX;yr.mergeDeepIn=AI;yr.setIn=DI;yr.update=II;yr.updateIn=wI;yr.withMutations=mS;yr.asMutable=uS;yr.asImmutable=cS;yr[UT]=yr.entries;yr.toJSON=yr.toObject=Mn.toObject;yr.inspect=yr.toSource=function(){return this.toString()};function GI(e,t,r){var n=Object.create(Object.getPrototypeOf(e));return n._values=t,n.__ownerID=r,n}function zI(e){return e.constructor.displayName||e.constructor.name||"Record"}function Pf(e){return yI(e._keys.map(function(t){return[t,e.get(t)]}))}function qte(e,t){try{Object.defineProperty(e,t,{get:function(){return this.get(t)},set:function(r){U_(this.__ownerID,"Cannot set on an immutable record."),this.set(t,r)}})}catch{}}var Ute=(function(e){function t(r,n){if(!(this instanceof t))return new t(r,n);if(this._value=r,this.size=n===void 0?1/0:Math.max(0,n),this.size===0){if(Ix)return Ix;Ix=this}}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.size===0?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},t.prototype.get=function(n,i){return this.has(n)?this._value:i},t.prototype.includes=function(n){return fn(this._value,n)},t.prototype.slice=function(n,i){var c=this.size;return oS(n,i,c)?this:new t(this._value,sS(i,c)-Bf(n,c))},t.prototype.reverse=function(){return this},t.prototype.indexOf=function(n){return this.size!==0&&fn(this._value,n)?0:-1},t.prototype.lastIndexOf=function(n){return this.size!==0&&fn(this._value,n)?this.size-1:-1},t.prototype.__iterate=function(n,i){for(var c=this.size,o=0;o!==c&&n(this._value,i?c-++o:o++,this)!==!1;);return o},t.prototype.__iterator=function(n,i){var c=this,o=this.size,s=0;return new Xt(function(){return s===o?xn():Sr(n,i?o-++s:s++,c._value)})},t.prototype.equals=function(n){return n instanceof t?fn(this._value,n._value):qI(this,n)},t})(Zi),Ix;function jte(e,t){return aK([],t||Gte,e,"",t&&t.length>2?[]:void 0,{"":e})}function aK(e,t,r,n,i,c){if(typeof r!="string"&&!Qi(r)&&(pI(r)||fI(r)||xI(r))){if(~e.indexOf(r))throw new TypeError("Cannot convert circular structure to Immutable");e.push(r),i&&n!==""&&i.push(n);var o=t.call(c,n,An(r).map(function(s,h){return aK(e,t,s,h,i,r)}),i&&i.slice());return e.pop(),i&&i.pop(),o}return r}function Gte(e,t){return ai(t)?t.toList():gr(t)?t.toMap():t.toSet()}var zte="5.1.9",Hte=mn;const Wte=Object.freeze(Object.defineProperty({__proto__:null,Collection:mn,Iterable:Hte,List:pS,Map:Dl,OrderedMap:Oa,OrderedSet:Cf,PairSorting:Lte,Range:ZX,Record:an,Repeat:Ute,Seq:An,Set:hS,Stack:$T,fromJS:jte,get:OI,getIn:UI,has:zX,hasIn:rK,hash:Wn,is:fn,isAssociative:qT,isCollection:oi,isImmutable:Qi,isIndexed:ai,isKeyed:gr,isList:FI,isMap:WT,isOrdered:fa,isOrderedMap:LI,isOrderedSet:jI,isPlainObject:xI,isRecord:Xs,isSeq:GT,isSet:XT,isStack:mT,isValueObject:MD,merge:hte,mergeDeep:yte,mergeDeepWith:vte,mergeWith:gte,remove:HX,removeIn:XX,set:WX,setIn:NX,update:TI,updateIn:Il,version:zte},Symbol.toStringTag,{value:"Module"})),Ff=VD(Wte);var dd={},eP={},wx={exports:{}},Un={},Wk;function $te(){if(Wk)return Un;Wk=1;const e={Remove:"remove",Replace:"replace",Add:"add"},t=Symbol.for("__MUTATIVE_PROXY_DRAFT__"),r=Symbol("__MUTATIVE_RAW_RETURN_SYMBOL__"),n=Symbol.iterator,i={mutable:"mutable",immutable:"immutable"},c={};function o($,ie){return $ instanceof Map?$.has(ie):Object.prototype.hasOwnProperty.call($,ie)}function s($,ie){if(ie in $){let Z=Reflect.getPrototypeOf($);for(;Z;){const re=Reflect.getOwnPropertyDescriptor(Z,ie);if(re)return re;Z=Reflect.getPrototypeOf(Z)}}}function h($){return Object.getPrototypeOf($)===Set.prototype}function f($){return Object.getPrototypeOf($)===Map.prototype}function y($){var ie;return(ie=$.copy)!==null&&ie!==void 0?ie:$.original}function _($){return!!g($)}function g($){return typeof $!="object"?null:$?.[t]}function a($){var ie;const Z=g($);return Z?(ie=Z.copy)!==null&&ie!==void 0?ie:Z.original:$}function d($,ie){if(!$||typeof $!="object")return!1;let Z;return Object.getPrototypeOf($)===Object.prototype||Array.isArray($)||$ instanceof Map||$ instanceof Set||!!ie?.mark&&((Z=ie.mark($,i))===i.immutable||typeof Z=="function")}function p($,ie=[]){if(Object.hasOwnProperty.call($,"key")){const Z=$.parent.copy,re=g(m(Z,$.key));if(re!==null&&re?.original!==$.original)return null;const oe=$.parent.type===3,ce=oe?Array.from($.parent.setMap.keys()).indexOf($.key):$.key;if(!(oe&&Z.size>ce||o(Z,ce)))return null;ie.push(ce)}if($.parent)return p($.parent,ie);ie.reverse();try{(function(Z,re){for(let oe=0;oe<re.length-1;oe+=1){const ce=re[oe];if(typeof(Z=m(u(Z)===3?Array.from(Z):Z,ce))!="object")throw new Error(`Cannot resolve patch at '${re.join("/")}'.`)}})($.copy,ie)}catch{return null}return ie}function u($){return Array.isArray($)?1:$ instanceof Map?2:$ instanceof Set?3:0}function m($,ie){return u($)===2?$.get(ie):$[ie]}function v($,ie,Z){u($)===2?$.set(ie,Z):$[ie]=Z}function b($,ie){const Z=g($);return(Z?y(Z):$)[ie]}
15function P($,ie){return $===ie?$!==0||1/$==1/ie:$!=$&&ie!=ie}function C($){if($)for(;$.finalities.revoke.length>0;)$.finalities.revoke.pop()()}function l($,ie){return ie?$:[""].concat($).map((Z=>{const re=`${Z}`;return re.indexOf("/")===-1&&re.indexOf("~")===-1?re:re.replace(/~/g,"~0").replace(/\//g,"~1")})).join("/")}const S=Object.prototype.propertyIsEnumerable;function T($,ie){let Z;if(Array.isArray($))return Array.prototype.concat.call($);if($ instanceof Set)return h($)?Set.prototype.difference?Set.prototype.difference.call($,new Set):new Set($.values()):new(Object.getPrototypeOf($)).constructor($.values());if($ instanceof Map)return f($)?new Map($):new(Object.getPrototypeOf($)).constructor($);if(ie?.mark&&(Z=ie.mark($,i),Z!==void 0)&&Z!==i.mutable){if(Z===i.immutable)return(function(re){const oe=Object.create(Object.getPrototypeOf(re));return Reflect.ownKeys(re).forEach((ce=>{let ue=Reflect.getOwnPropertyDescriptor(re,ce);ue.enumerable&&ue.configurable&&ue.writable?oe[ce]=re[ce]:(ue.writable||(ue.writable=!0,ue.configurable=!0),(ue.get||ue.set)&&(ue={configurable:!0,writable:!0,enumerable:ue.enumerable,value:re[ce]}),Reflect.defineProperty(oe,ce,ue))})),oe})($);if(typeof Z=="function")return Z();throw new Error(`Unsupported mark result: ${Z}`)}if(typeof $=="object"&&Object.getPrototypeOf($)===Object.prototype){const re={};return Object.keys($).forEach((oe=>{re[oe]=$[oe]})),Object.getOwnPropertySymbols($).forEach((oe=>{S.call($,oe)&&(re[oe]=$[oe])})),re}throw new Error("Please check mark() to ensure that it is a stable marker draftable function.")}function A($){$.copy||($.copy=T($.original,$.options))}function x($){if(!d($))return a($);if(Array.isArray($))return $.map(x);if($ instanceof Map){const Z=Array.from($.entries()).map((([re,oe])=>[re,x(oe)]));return f($)?new Map(Z):new(Object.getPrototypeOf($)).constructor(Z)}if($ instanceof Set){const Z=Array.from($).map(x);return h($)?new Set(Z):new(Object.getPrototypeOf($)).constructor(Z)}const ie=Object.create(Object.getPrototypeOf($));for(const Z in $)ie[Z]=x($[Z]);return ie}function M($){return _($)?x($):$}function D($){var ie;$.assignedMap=(ie=$.assignedMap)!==null&&ie!==void 0?ie:new Map,$.operated||($.operated=!0,$.parent&&D($.parent))}function V(){throw new Error("Cannot modify frozen object")}function R($){return $&&typeof $=="object"&&!Object.isFrozen($)}function E($,ie,Z,re,oe){if(!(Object.isFrozen($)||_($)))switch(u($)){case 2:for(const[ce,ue]of $)R(ce)&&E(ce),R(ue)&&E(ue);$.set=$.clear=$.delete=V;break;case 3:for(const ce of $)R(ce)&&E(ce);$.add=$.clear=$.delete=V;break;case 1:Object.freeze($);for(const ce of $)R(ce)&&E(ce);break;default:Object.freeze($),Object.keys($).forEach((ce=>{const ue=$[ce];R(ue)&&E(ue)}))}}function I($,ie){const Z=u($);if(Z===0)Reflect.ownKeys($).forEach((re=>{ie(re,$[re],$)}));else if(Z===1){let re=0;for(const oe of $)ie(re,oe,$),re+=1}else $.forEach(((re,oe)=>ie(oe,re,$)))}function B($,ie,Z){if(_($)||!d($,Z)||ie.has($)||Object.isFrozen($))return;const re=$ instanceof Set,oe=re?new Map:void 0;if(ie.add($),I($,((ce,ue)=>{var pe;if(_(ue)){const he=g(ue);A(he);const fe=!((pe=he.assignedMap)===null||pe===void 0)&&pe.size||he.operated?he.copy:he.original;v(re?oe:$,ce,fe)}else B(ue,ie,Z)})),oe){const ce=$,ue=Array.from(ce);ce.clear(),ue.forEach((pe=>{ce.add(oe.has(pe)?oe.get(pe):pe)}))}}function w($,ie){const Z=$.type===3?$.setMap:$.copy;$.finalities.revoke.length>1&&$.assignedMap.get(ie)&&Z&&B(m(Z,ie),$.finalities.handledSet,$.options)}function O($){$.type===3&&$.copy&&($.copy.clear(),$.setMap.forEach((ie=>{$.copy.add(a(ie))})))}function F($,ie,Z,re){if($.operated&&$.assignedMap&&$.assignedMap.size>0&&!$.finalized){if(Z&&re){const oe=p($);oe&&ie($,oe,Z,re)}$.finalized=!0}}function L($,ie,Z,re){const oe=g(Z);oe&&(oe.callbacks||(oe.callbacks=[]),oe.callbacks.push(((ce,ue)=>{const pe=$.type===3?$.setMap:$.copy;if(P(m(pe,ie),Z)){let he=oe.original;oe.copy&&(he=oe.copy),O($),F($,re,ce,ue),v(pe,ie,he)}})),$.options.enableAutoFreeze&&oe.finalities!==$.finalities&&($.options.enableAutoFreeze=!1)),d(Z,$.options)&&$.finalities.draft.push((()=>{P(m($.type===3?$.setMap:$.copy,ie),Z)&&w($,ie)}))}function U($,ie,Z,re){const{pathAsArray:oe=!0}=$.options.enablePatches;switch($.type){case 0:case 2:return(function({original:ce,copy:ue,assignedMap:pe},he,fe,de,ge){pe.forEach(((Ce,ve)=>{const le=m(ce,ve),me=M(m(ue,ve)),ee=Ce?o(ce,ve)?e.Replace:e.Add:e.Remove;if(P(le,me)&&ee===e.Replace)return;const se=l(he.concat(ve),ge);fe.push(ee===e.Remove?{op:ee,path:se}:{op:ee,path:se,value:me}),de.push(ee===e.Add?{op:e.Remove,path:se}:ee===e.Remove?{op:e.Add,path:se,value:le}:{op:e.Replace,path:se,value:le})}))})($,ie,Z,re,oe);case 1:return(function(ce,ue,pe,he,fe){let{original:de,assignedMap:ge,options:Ce}=ce,ve=ce.copy;ve.length<de.length&&([de,ve]=[ve,de],[pe,he]=[he,pe]);for(let le=0;le<de.length;le+=1)if(ge.get(le.toString())&&ve[le]!==de[le]){const me=l(ue.concat([le]),fe);pe.push({op:e.Replace,path:me,value:M(ve[le])}),he.push({op:e.Replace,path:me,value:M(de[le])})}for(let le=de.length;le<ve.length;le+=1){const me=l(ue.concat([le]),fe);pe.push({op:e.Add,path:me,value:M(ve[le])})}if(de.length<ve.length){const{arrayLengthAssignment:le=!0}=Ce.enablePatches;if(le){const me=l(ue.concat(["length"]),fe);he.push({op:e.Replace,path:me,value:de.length})}else for(let me=ve.length;de.length<me;me-=1){const ee=l(ue.concat([me-1]),fe);he.push({op:e.Remove,path:ee})}}})($,ie,Z,re,oe);case 3:return(function({original:ce,copy:ue},pe,he,fe,de){let ge=0;ce.forEach((Ce=>{if(!ue.has(Ce)){const ve=l(pe.concat([ge]),de);he.push({op:e.Remove,path:ve,value:Ce}),fe.unshift({op:e.Add,path:ve,value:Ce})}ge+=1})),ge=0,ue.forEach((Ce=>{if(!ce.has(Ce)){const ve=l(pe.concat([ge]),de);he.push({op:e.Add,path:ve,value:Ce}),fe.unshift({op:e.Remove,path:ve,value:Ce})}ge+=1}))})($,ie,Z,re,oe)}}let q=!1;const N=($,ie,Z=!1)=>
15{if(typeof $=="object"&&$!==null&&(!d($,ie)||Z)&&!q)throw new Error("Strict mode: Mutable data cannot be accessed directly, please use 'unsafe(callback)' wrap.")},k={get size(){return y(g(this)).size},has($){return y(g(this)).has($)},set($,ie){const Z=g(this),re=y(Z);return re.has($)&&P(re.get($),ie)||(A(Z),D(Z),Z.assignedMap.set($,!0),Z.copy.set($,ie),L(Z,$,ie,U)),this},delete($){if(!this.has($))return!1;const ie=g(this);return A(ie),D(ie),ie.original.has($)?ie.assignedMap.set($,!1):ie.assignedMap.delete($),ie.copy.delete($),!0},clear(){const $=g(this);if(this.size){A($),D($),$.assignedMap=new Map;for(const[ie]of $.original)$.assignedMap.set(ie,!1);$.copy.clear()}},forEach($,ie){y(g(this)).forEach(((Z,re)=>{$.call(ie,this.get(re),re,this)}))},get($){var ie,Z;const re=g(this),oe=y(re).get($),ce=((Z=(ie=re.options).mark)===null||Z===void 0?void 0:Z.call(ie,oe,i))===i.mutable;if(re.options.strict&&N(oe,re.options,ce),ce||re.finalized||!d(oe,re.options)||oe!==re.original.get($))return oe;const ue=c.createDraft({original:oe,parentDraft:re,key:$,finalities:re.finalities,options:re.options});return A(re),re.copy.set($,ue),ue},keys(){return y(g(this)).keys()},values(){const $=this.keys();return{[n]:()=>this.values(),next:()=>{const ie=$.next();return ie.done?ie:{done:!1,value:this.get(ie.value)}}}},entries(){const $=this.keys();return{[n]:()=>this.entries(),next:()=>{const ie=$.next();if(ie.done)return ie;const Z=this.get(ie.value);return{done:!1,value:[ie.value,Z]}}}},[n](){return this.entries()}},j=Reflect.ownKeys(k),H=($,ie,{isValuesIterator:Z})=>()=>{var re,oe;const ce=ie.next();if(ce.done)return ce;const ue=ce.value;let pe=$.setMap.get(ue);const he=g(pe),fe=((oe=(re=$.options).mark)===null||oe===void 0?void 0:oe.call(re,pe,i))===i.mutable;if($.options.strict&&N(ue,$.options,fe),fe||he||!d(ue,$.options)||$.finalized||!$.original.has(ue))he&&(pe=he.proxy);else{const de=c.createDraft({original:ue,parentDraft:$,key:ue,finalities:$.finalities,options:$.options});$.setMap.set(ue,de),pe=de}return{done:!1,value:Z?pe:[pe,pe]}},G={get size(){return g(this).setMap.size},has($){const ie=g(this);if(ie.setMap.has($))return!0;A(ie);const Z=g($);return!(!Z||!ie.setMap.has(Z.original))},add($){const ie=g(this);return this.has($)||(A(ie),D(ie),ie.assignedMap.set($,!0),ie.setMap.set($,$),L(ie,$,$,U)),this},delete($){if(!this.has($))return!1;const ie=g(this);A(ie),D(ie);const Z=g($);return Z&&ie.setMap.has(Z.original)?(ie.assignedMap.set(Z.original,!1),ie.setMap.delete(Z.original)):(!Z&&ie.setMap.has($)?ie.assignedMap.set($,!1):ie.assignedMap.delete($),ie.setMap.delete($))},clear(){if(!this.size)return;const $=g(this);A($),D($);for(const ie of $.original)$.assignedMap.set(ie,!1);$.setMap.clear()},values(){const $=g(this);A($);const ie=$.setMap.keys();return{[Symbol.iterator]:()=>this.values(),next:H($,ie,{isValuesIterator:!0})}},entries(){const $=g(this);A($);const ie=$.setMap.keys();return{[Symbol.iterator]:()=>this.entries(),next:H($,ie,{isValuesIterator:!1})}},keys(){return this.values()},[n](){return this.values()},forEach($,ie){const Z=this.values();let re=Z.next();for(;!re.done;)$.call(ie,re.value,re.value,this),re=Z.next()}};Set.prototype.difference&&Object.assign(G,{intersection($){return Set.prototype.intersection.call(new Set(this.values()),$)},union($){return Set.prototype.union.call(new Set(this.values()),$)},difference($){return Set.prototype.difference.call(new Set(this.values()),$)},symmetricDifference($){return Set.prototype.symmetricDifference.call(new Set(this.values()),$)},isSubsetOf($){return Set.prototype.isSubsetOf.call(new Set(this.values()),$)},isSupersetOf($){return Set.prototype.isSupersetOf.call(new Set(this.values()),$)},isDisjointFrom($){return Set.prototype.isDisjointFrom.call(new Set(this.values()),$)}});const z=Reflect.ownKeys(G),W={get($,ie,Z){var re,oe;const ce=(re=$.copy)===null||re===void 0?void 0:re[ie];if(ce&&$.finalities.draftsCache.has(ce))return ce;if(ie===t)return $;let ue;if($.options.mark){const fe=ie==="size"&&($.original instanceof Map||$.original instanceof Set)?Reflect.get($.original,ie):Reflect.get($.original,ie,Z);if(ue=$.options.mark(fe,i),ue===i.mutable)return $.options.strict&&N(fe,$.options,!0),fe}const pe=y($);if(pe instanceof Map&&j.includes(ie))return ie==="size"?Object.getOwnPropertyDescriptor(k,"size").get.call($.proxy):k[ie].bind($.proxy);if(pe instanceof Set&&z.includes(ie))return ie==="size"?Object.getOwnPropertyDescriptor(G,"size").get.call($.proxy):G[ie].bind($.proxy);if(!o(pe,ie)){const fe=s(pe,ie);return fe?"value"in fe?fe.value:(oe=fe.get)===null||oe===void 0?void 0:oe.call($.proxy):void 0}const he=pe[ie];if($.options.strict&&N(he,$.options),$.finalized||!d(he,$.options))return he;if(he===b($.original,ie)){if(A($),$.copy[ie]=X({original:$.original[ie],parentDraft:$,key:$.type===1?Number(ie):ie,finalities:$.finalities,options:$.options}),typeof ue=="function"){const fe=g($.copy[ie]);return A(fe),D(fe),fe.copy}return $.copy[ie]}return _(he)&&$.finalities.draftsCache.add(he),he},set($,ie,Z){var re;if($.type===3||$.type===2)throw new Error("Map/Set draft does not support any property assignment.");let oe;if($.type===1&&ie!=="length"&&(!(Number.isInteger(oe=Number(ie))&&oe>=0)||ie!==0&&oe!==0&&String(oe)!==String(ie)))throw new Error("Only supports setting array indices and the 'length' property.");const ce=s(y($),ie);if(ce?.set)return ce.set.call($.proxy,Z),!0;const ue=b(y($),ie),pe=g(ue);return pe&&P(pe.original,Z)?($.copy[ie]=Z,$.assignedMap=(re=$.assignedMap)!==null&&re!==void 0?re:new Map,$.assignedMap.set(ie,!1),!0):(P(Z,ue)&&(Z!==void 0||o($.original,ie))||(A($),D($),o($.original,ie)&&P(Z,$.original[ie])?$.assignedMap.delete(ie):$.assignedMap.set(ie,!0),$.copy[ie]=Z,L($,ie,Z,U)),!0)},has:($,ie)=>ie in y($),ownKeys:$=>Reflect.ownKeys(y($)),getOwnPropertyDescriptor($,ie){const Z=y($),re=Reflect.getOwnPropertyDescriptor(Z,ie);return re&&{writable:!0,configurable:$.type!==1||ie!=="length",enumerable:re.enumerable,value:Z[ie]}},getPrototypeOf:$=>Reflect.getPrototypeOf($.original),setPrototypeOf(){throw new Error("Cannot call 'setPrototypeOf()' on drafts")},defineProperty(){throw new Error("Cannot call 'defineProperty()' on drafts")},deleteProperty($,ie){var Z;return $.type===1?W.set.call(this,$,ie,void 0,$.proxy):(b($.original,ie)!==void 0||ie in $.original?(A($),D($),$.assignedMap.set(ie,!1)):($.assignedMap=(Z=$.assignedMap)!==null&&Z!==void 0?Z:new Map,$.assignedMap.delete(ie)),$.copy&&delete $.copy[ie],!0)}};function X($){const{original:ie,parentDraft:Z,key:re,finalities:oe,options:ce}=$,ue=u(ie),pe={type:ue,finalized:!1,parent:Z,original:ie,copy:null,proxy:null,finalities:oe,options:ce,setMap:ue===3?new Map(ie.entries()):void 0};(re||"key"in $)&&(pe.key=re);const{proxy:he,revoke:fe}=Proxy.revocable(ue===1?Object.assign([],pe):pe,W);if(oe.revoke.push(fe),pe.proxy=he,Z){const de=Z;de.finalities.draft.push(((ge,Ce)=>{var ve;const le=g(he);let me=de.type===3?de.setMap:de.copy;const ee=m(me,re),se=g(ee);if(se){let ye=se.original;se.operated&&(ye=a(ee)),O(se),F(se,U,ge,Ce),v(me,re,ye)}
15(ve=le.callbacks)===null||ve===void 0||ve.forEach((ye=>{ye(ge,Ce)}))}))}else{const de=g(he);de.finalities.draft.push(((ge,Ce)=>{O(de),F(de,U,ge,Ce)}))}return he}function Y($,ie,Z,re,oe){var ce;const ue=g($),pe=(ce=ue?.original)!==null&&ce!==void 0?ce:$,he=!!ie.length;if(ue?.operated)for(;ue.finalities.draft.length>0;)ue.finalities.draft.pop()(Z,re);const fe=he?ie[0]:ue?ue.operated?ue.copy:ue.original:$;return ue&&C(ue),oe&&E(fe,0,ue==null||ue.options.updatedValues),[fe,Z&&he?[{op:e.Replace,path:[],value:ie[0]}]:Z,re&&he?[{op:e.Replace,path:[],value:pe}]:re]}function K($){const{rootDraft:ie,value:Z,useRawReturn:re=!1,isRoot:oe=!0}=$;I(Z,((ce,ue,pe)=>{const he=g(ue);if(he&&ie&&he.finalities===ie.finalities){$.isContainDraft=!0;const fe=he.original;if(pe instanceof Set){const de=Array.from(pe);pe.clear(),de.forEach((ge=>pe.add(ce===ge?fe:ge)))}else v(pe,ce,fe)}else typeof ue=="object"&&ue!==null&&($.value=ue,$.isRoot=!1,K($))}))}function Q($){var ie;const Z=g($);if(!d($,Z?.options))return $;const re=u($);if(Z&&!Z.operated)return Z.original;let oe;function ce(){oe=re===2?f($)?new Map($):new(Object.getPrototypeOf($)).constructor($):re===3?Array.from(Z.setMap.values()):T($,Z?.options)}if(Z){Z.finalized=!0;try{ce()}finally{Z.finalized=!1}}else oe=$;if(I(oe,((ue,pe)=>{if(Z&&P(m(Z.original,ue),pe))return;const he=Q(pe);he!==pe&&(oe===$&&ce(),v(oe,ue,he))})),re===3){const ue=(ie=Z?.original)!==null&&ie!==void 0?ie:oe;return h(ue)?new Set(oe):new(Object.getPrototypeOf(ue)).constructor(oe)}return oe}function J($){if(!_($))throw new Error(`current() is only used for Draft, parameter: ${$}`);return Q($)}c.createDraft=X;const ae=$=>function ie(Z,re,oe){var ce,ue,pe;if(typeof Z=="function"&&typeof re!="function")return function(Ae,..._e){return ie(Ae,(be=>Z.call(this,be,..._e)),re)};const he=Z,fe=re;let de=oe;typeof re!="function"&&(de=re),de=Object.assign(Object.assign({},$),de);const ge=_(he)?J(he):he,Ce=Array.isArray(de.mark)?(Ae,_e)=>{for(const be of de.mark){const xe=be(Ae,_e);if(xe)return xe}}:de.mark,ve=(ce=de.enablePatches)!==null&&ce!==void 0&&ce,le=(ue=de.strict)!==null&&ue!==void 0&&ue,me={enableAutoFreeze:(pe=de.enableAutoFreeze)!==null&&pe!==void 0&&pe,mark:Ce,strict:le,enablePatches:ve};if(!d(ge,me)&&typeof ge=="object"&&ge!==null)throw new Error("Invalid base state: create() only supports plain objects, arrays, Set, Map or using mark() to mark the state as immutable.");const[ee,se]=(function(Ae,_e){var be;const xe={draft:[],revoke:[],handledSet:new WeakSet,draftsCache:new WeakSet};let we,Be;_e.enablePatches&&(we=[],Be=[]);const Me=((be=_e.mark)===null||be===void 0?void 0:be.call(_e,Ae,i))!==i.mutable&&d(Ae,_e)?X({original:Ae,parentDraft:null,finalities:xe,options:_e}):Ae;return[Me,(Re=[])=>{const[Te,Ve,qe]=Y(Me,Re,we,Be,_e.enableAutoFreeze);return _e.enablePatches?[Te,Ve,qe]:Te}]})(ge,me);if(typeof re!="function"){if(!d(ge,me))throw new Error("Invalid base state: create() only supports plain objects, arrays, Set, Map or using mark() to mark the state as immutable.");return[ee,se]}let ye;try{ye=fe(ee)}catch(Ae){throw C(g(ee)),Ae}const Se=Ae=>{const _e=g(ee);if(!_(Ae)){if(Ae!==void 0&&!P(Ae,ee)&&_e?.operated)throw new Error("Either the value is returned as a new non-draft value, or only the draft is modified without returning any value.");const xe=Ae?.[r];if(xe){const we=xe[0];return me.strict&&typeof Ae=="object"&&Ae!==null&&K({rootDraft:_e,value:Ae,useRawReturn:!0}),se([we])}if(Ae!==void 0)return typeof Ae=="object"&&Ae!==null&&K({rootDraft:_e,value:Ae}),se([Ae])}if(Ae===ee||Ae===void 0)return se([]);const be=g(Ae);if(me===be.options){if(be.operated)throw new Error("Cannot return a modified child draft.");return se([J(Ae)])}return se([Ae])};return ye instanceof Promise?ye.then(Se,(Ae=>{throw C(g(ee)),Ae})):Se(ye)},te=ae(),ne=Object.prototype.constructor.toString();return Un.apply=function($,ie,Z){let re;for(re=ie.length-1;re>=0;re-=1){const{value:ce,op:ue,path:pe}=ie[re];if(!pe.length&&ue===e.Replace||pe===""&&ue===e.Add){$=ce;break}}re>-1&&(ie=ie.slice(re+1));const oe=ce=>{ie.forEach((ue=>{const{path:pe,op:he}=ue,fe=(function(le){return Array.isArray(le)?le:le.split("/").map((me=>me.replace(/~1/g,"/").replace(/~0/g,"~"))).slice(1)})(pe);let de=ce;for(let le=0;le<fe.length-1;le+=1){const me=u(de);let ee=fe[le];if(typeof ee!="string"&&typeof ee!="number"&&(ee=String(ee)),(me===0||me===1)&&(ee==="__proto__"||ee==="constructor")||typeof de=="function"&&ee==="prototype")throw new Error("Patching reserved attributes like __proto__ and constructor is not allowed.");if(de=m(me===3?Array.from(de):de,ee),typeof de!="object")throw new Error(`Cannot apply patch at '${fe.join("/")}'.`)}const ge=u(de),Ce=x(ue.value),ve=fe[fe.length-1];switch(he){case e.Replace:switch(ge){case 2:return de.set(ve,Ce);case 3:throw new Error("Cannot apply replace patch to set.");default:return de[ve]=Ce}case e.Add:switch(ge){case 1:return ve==="-"?de.push(Ce):de.splice(ve,0,Ce);case 2:return de.set(ve,Ce);case 3:return de.add(Ce);default:return de[ve]=Ce}case e.Remove:switch(ge){case 1:return de.splice(ve,1);case 2:return de.delete(ve);case 3:return de.delete(ue.value);default:return delete de[ve]}default:throw new Error(`Unsupported patch operation: ${he}.`)}}))};if(!Z?.mutable){if(_($)){if(Z!==void 0)throw new Error("Cannot apply patches with options to a draft.");return oe($),$}return te($,oe,Object.assign(Object.assign({},Z),{enablePatches:!1}))}oe($)},Un.castDraft=function($){return $},Un.castImmutable=function($){return $},Un.castMutable=function($){return $},Un.create=te,Un.current=J,Un.isDraft=_,Un.isDraftable=d,Un.makeCreator=ae,Un.markSimpleObject=$=>{if((ie=>{if(!ie||typeof ie!="object")return!1;const Z=Object.getPrototypeOf(ie);if(Z===null)return!0;const re=Object.hasOwnProperty.call(Z,"constructor")&&Z.constructor;return re===Object||typeof re=="function"&&Function.toString.call(re)===ne})($))return i.immutable},Un.original=function($){const ie=g($);if(!ie)throw new Error(`original() is only used for a draft, parameter: ${$}`);return ie.original},Un.rawReturn=function($){if(arguments.length===0)throw new Error("rawReturn() must be called with a value.");if(arguments.length>1)throw new Error("rawReturn() must be called with one argument.");return{[r]:[$]}},Un.unsafe=function($){let ie;q=!0;try{ie=$()}finally{q=!1}return ie},Un}var $k;function Xte(){return $k||($k=1,wx.exports=$te()),wx.exports}var Xk;function Lf(){if(Xk)return eP;
15Xk=1,Object.defineProperty(eP,"__esModule",{value:!0}),eP.produce=t;const e=Xte();function t(r,n){return typeof r=="object"&&!("prototype"in r)?(0,e.create)({...r},n):(0,e.create)(r,n)}return eP}var Rc={},dh={},fh={},mh={},Kk;function or(){if(Kk)return mh;Kk=1,Object.defineProperty(mh,"__esModule",{value:!0}),mh.isFunction=void 0;function e(t){return typeof t=="function"}return mh.isFunction=e,mh}var jn={},ph={},hh={},Yk;function El(){if(Yk)return hh;Yk=1,Object.defineProperty(hh,"__esModule",{value:!0}),hh.createErrorClass=void 0;function e(t){var r=function(i){Error.call(i),i.stack=new Error().stack},n=t(r);return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}return hh.createErrorClass=e,hh}var Qk;function oK(){if(Qk)return ph;Qk=1,Object.defineProperty(ph,"__esModule",{value:!0}),ph.UnsubscriptionError=void 0;var e=El();return ph.UnsubscriptionError=e.createErrorClass(function(t){return function(n){t(this),this.message=n?n.length+` errors occurred during unsubscription:
16`+n.map(function(i,c){return c+1+") "+i.toString()}).join(`
17  `):"",this.name="UnsubscriptionError",this.errors=n}}),ph}var gh={},Zk;function Ys(){if(Zk)return gh;Zk=1,Object.defineProperty(gh,"__esModule",{value:!0}),gh.arrRemove=void 0;function e(t,r){if(t){var n=t.indexOf(r);0<=n&&t.splice(n,1)}}return gh.arrRemove=e,gh}var Jk;function Ji(){if(Jk)return jn;Jk=1;var e=jn&&jn.__values||function(f){var y=typeof Symbol=="function"&&Symbol.iterator,_=y&&f[y],g=0;if(_)return _.call(f);if(f&&typeof f.length=="number")return{next:function(){return f&&g>=f.length&&(f=void 0),{value:f&&f[g++],done:!f}}};throw new TypeError(y?"Object is not iterable.":"Symbol.iterator is not defined.")},t=jn&&jn.__read||function(f,y){var _=typeof Symbol=="function"&&f[Symbol.iterator];if(!_)return f;var g=_.call(f),a,d=[],p;try{for(;(y===void 0||y-- >0)&&!(a=g.next()).done;)d.push(a.value)}catch(u){p={error:u}}finally{try{a&&!a.done&&(_=g.return)&&_.call(g)}finally{if(p)throw p.error}}return d},r=jn&&jn.__spreadArray||function(f,y){for(var _=0,g=y.length,a=f.length;_<g;_++,a++)f[a]=y[_];return f};Object.defineProperty(jn,"__esModule",{value:!0}),jn.isSubscription=jn.EMPTY_SUBSCRIPTION=jn.Subscription=void 0;var n=or(),i=oK(),c=Ys(),o=(function(){function f(y){this.initialTeardown=y,this.closed=!1,this._parentage=null,this._finalizers=null}return f.prototype.unsubscribe=function(){var y,_,g,a,d;if(!this.closed){this.closed=!0;var p=this._parentage;if(p)if(this._parentage=null,Array.isArray(p))try{for(var u=e(p),m=u.next();!m.done;m=u.next()){var v=m.value;v.remove(this)}}catch(T){y={error:T}}finally{try{m&&!m.done&&(_=u.return)&&_.call(u)}finally{if(y)throw y.error}}else p.remove(this);var b=this.initialTeardown;if(n.isFunction(b))try{b()}catch(T){d=T instanceof i.UnsubscriptionError?T.errors:[T]}var P=this._finalizers;if(P){this._finalizers=null;try{for(var C=e(P),l=C.next();!l.done;l=C.next()){var S=l.value;try{h(S)}catch(T){d=d??[],T instanceof i.UnsubscriptionError?d=r(r([],t(d)),t(T.errors)):d.push(T)}}}catch(T){g={error:T}}finally{try{l&&!l.done&&(a=C.return)&&a.call(C)}finally{if(g)throw g.error}}}if(d)throw new i.UnsubscriptionError(d)}},f.prototype.add=function(y){var _;if(y&&y!==this)if(this.closed)h(y);else{if(y instanceof f){if(y.closed||y._hasParent(this))return;y._addParent(this)}(this._finalizers=(_=this._finalizers)!==null&&_!==void 0?_:[]).push(y)}},f.prototype._hasParent=function(y){var _=this._parentage;return _===y||Array.isArray(_)&&_.includes(y)},f.prototype._addParent=function(y){var _=this._parentage;this._parentage=Array.isArray(_)?(_.push(y),_):_?[_,y]:y},f.prototype._removeParent=function(y){var _=this._parentage;_===y?this._parentage=null:Array.isArray(_)&&c.arrRemove(_,y)},f.prototype.remove=function(y){var _=this._finalizers;_&&c.arrRemove(_,y),y instanceof f&&y._removeParent(this)},f.EMPTY=(function(){var y=new f;return y.closed=!0,y})(),f})();jn.Subscription=o,jn.EMPTY_SUBSCRIPTION=o.EMPTY;function s(f){return f instanceof o||f&&"closed"in f&&n.isFunction(f.remove)&&n.isFunction(f.add)&&n.isFunction(f.unsubscribe)}jn.isSubscription=s;function h(f){n.isFunction(f)?f():f.unsubscribe()}return jn}var yh={},eF;function yS(){return eF||(eF=1,Object.defineProperty(yh,"__esModule",{value:!0}),yh.config=void 0,yh.config={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNext
17Context:!1}),yh}var vh={},Oc={},tF;function sK(){return tF||(tF=1,(function(e){var t=Oc&&Oc.__read||function(n,i){var c=typeof Symbol=="function"&&n[Symbol.iterator];if(!c)return n;var o=c.call(n),s,h=[],f;try{for(;(i===void 0||i-- >0)&&!(s=o.next()).done;)h.push(s.value)}catch(y){f={error:y}}finally{try{s&&!s.done&&(c=o.return)&&c.call(o)}finally{if(f)throw f.error}}return h},r=Oc&&Oc.__spreadArray||function(n,i){for(var c=0,o=i.length,s=n.length;c<o;c++,s++)n[s]=i[c];return n};Object.defineProperty(e,"__esModule",{value:!0}),e.timeoutProvider=void 0,e.timeoutProvider={setTimeout:function(n,i){for(var c=[],o=2;o<arguments.length;o++)c[o-2]=arguments[o];var s=e.timeoutProvider.delegate;return s?.setTimeout?s.setTimeout.apply(s,r([n,i],t(c))):setTimeout.apply(void 0,r([n,i],t(c)))},clearTimeout:function(n){var i=e.timeoutProvider.delegate;return(i?.clearTimeout||clearTimeout)(n)},delegate:void 0}})(Oc)),Oc}var rF;function cK(){if(rF)return vh;rF=1,Object.defineProperty(vh,"__esModule",{value:!0}),vh.reportUnhandledError=void 0;var e=yS(),t=sK();function r(n){t.timeoutProvider.setTimeout(function(){var i=e.config.onUnhandledError;if(i)i(n);else throw n})}return vh.reportUnhandledError=r,vh}var bh={},nF;function Vn(){if(nF)return bh;nF=1,Object.defineProperty(bh,"__esModule",{value:!0}),bh.noop=void 0;function e(){}return bh.noop=e,bh}var sa={},iF;function Kte(){if(iF)return sa;iF=1,Object.defineProperty(sa,"__esModule",{value:!0}),sa.createNotification=sa.nextNotification=sa.errorNotification=sa.COMPLETE_NOTIFICATION=void 0,sa.COMPLETE_NOTIFICATION=(function(){return r("C",void 0,void 0)})();function e(n){return r("E",void 0,n)}sa.errorNotification=e;function t(n){return r("N",n,void 0)}sa.nextNotification=t;function r(n,i,c){return{kind:n,value:i,error:c}}return sa.createNotification=r,sa}var kc={},aF;function HI(){if(aF)return kc;aF=1,Object.defineProperty(kc,"__esModule",{value:!0}),kc.captureError=kc.errorContext=void 0;var e=yS(),t=null;function r(i){if(e.config.useDeprecatedSynchronousErrorHandling){var c=!t;if(c&&(t={errorThrown:!1,error:null}),i(),c){var o=t,s=o.errorThrown,h=o.error;if(t=null,s)throw h}}else i()}kc.errorContext=r;function n(i){e.config.useDeprecatedSynchronousErrorHandling&&t&&(t.errorThrown=!0,t.error=i)}return kc.captureError=n,kc}var oF;function vS(){return oF||(oF=1,(function(e){var t=fh&&fh.__extends||(function(){var v=function(b,P){return v=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(C,l){C.__proto__=l}||function(C,l){for(var S in l)Object.prototype.hasOwnProperty.call(l,S)&&
17(C[S]=l[S])},v(b,P)};return function(b,P){if(typeof P!="function"&&P!==null)throw new TypeError("Class extends value "+String(P)+" is not a constructor or null");v(b,P);function C(){this.constructor=b}b.prototype=P===null?Object.create(P):(C.prototype=P.prototype,new C)}})();Object.defineProperty(e,"__esModule",{value:!0}),e.EMPTY_OBSERVER=e.SafeSubscriber=e.Subscriber=void 0;var r=or(),n=Ji(),i=yS(),c=cK(),o=Vn(),s=Kte(),h=sK(),f=HI(),y=(function(v){t(b,v);function b(P){var C=v.call(this)||this;return C.isStopped=!1,P?(C.destination=P,n.isSubscription(P)&&P.add(C)):C.destination=e.EMPTY_OBSERVER,C}return b.create=function(P,C,l){return new d(P,C,l)},b.prototype.next=function(P){this.isStopped?m(s.nextNotification(P),this):this._next(P)},b.prototype.error=function(P){this.isStopped?m(s.errorNotification(P),this):(this.isStopped=!0,this._error(P))},b.prototype.complete=function(){this.isStopped?m(s.COMPLETE_NOTIFICATION,this):(this.isStopped=!0,this._complete())},b.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,v.prototype.unsubscribe.call(this),this.destination=null)},b.prototype._next=function(P){this.destination.next(P)},b.prototype._error=function(P){try{this.destination.error(P)}finally{this.unsubscribe()}},b.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},b})(n.Subscription);e.Subscriber=y;var _=Function.prototype.bind;function g(v,b){return _.call(v,b)}var a=(function(){function v(b){this.partialObserver=b}return v.prototype.next=function(b){var P=this.partialObserver;if(P.next)try{P.next(b)}catch(C){p(C)}},v.prototype.error=function(b){var P=this.partialObserver;if(P.error)try{P.error(b)}catch(C){p(C)}else p(b)},v.prototype.complete=function(){var b=this.partialObserver;if(b.complete)try{b.complete()}catch(P){p(P)}},v})(),d=(function(v){t(b,v);function b(P,C,l){var S=v.call(this)||this,T;if(r.isFunction(P)||!P)T={next:P??void 0,error:C??void 0,complete:l??void 0};else{var A;S&&i.config.useDeprecatedNextContext?(A=Object.create(P),A.unsubscribe=function(){return S.unsubscribe()},T={next:P.next&&g(P.next,A),error:P.error&&g(P.error,A),complete:P.complete&&g(P.complete,A)}):T=P}return S.destination=new a(T),S}return b})(y);e.SafeSubscriber=d;function p(v){i.config.useDeprecatedSynchronousErrorHandling?f.captureError(v):c.reportUnhandledError(v)}function u(v){throw v}function m(v,b){var P=i.config.onStoppedNotification;P&&h.timeoutProvider.setTimeout(function(){return P(v,b)})}e.EMPTY_OBSERVER={closed:!0,next:o.noop,error:u,complete:o.noop}})(fh)),fh}var _h={},sF;function KT(){return sF||(sF=1,Object.defineProperty(_h,"__esModule",{value:!0}),_h.observable=void 0,_h.observable=(function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"})()),_h}var Fc={},Sh={},cF;function En(){if(cF)return Sh;cF=1,Object.defineProperty(Sh,"__esModule",{value:!0}),Sh.identity=void 0;function e(t){return t}return Sh.identity=e,Sh}var uF;function YT(){if(uF)return Fc;uF=1,Object.defineProperty(Fc,"__esModule",{value:!0}),Fc.pipeFromArray=Fc.pipe=void 0;var e=En();function t(){for(var n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];return r(n)}Fc.pipe=t;function r(n){return n.length===0?e.identity:n.length===1?n[0]:function(c){return n.reduce(function(o,s){return s(o)},c)}}return Fc.pipeFromArray=r,Fc}var lF;function fr(){if(lF)return dh;lF=1,Object.defineProperty(dh,"__esModule",{value:!0}),dh.Observable=void 0;var e=vS(),t=Ji(),r=KT(),n=YT(),i=yS(),c=or(),o=HI(),s=(function(){function _(g){g&&(this._subscribe=g)}return _.prototype.lift=function(g){var a=new _;return a.source=this,a.operator=g,a},_.prototype.subscribe=function(g,a,d){var p=this,u=y(g)?g:new e.SafeSubscriber(g,a,d);return o.errorContext(function(){var m=p,v=m.operator,b=m.source;u.add(v?v.call(u,b):b?p._subscribe(u):p._trySubscribe(u))}),u},_.prototype._trySubscribe=function(g){try{return this._subscribe(g)}catch(a){g.error(a)}},_.prototype.forEach=function(g,a){var d=this;return a=h(a),new a(function(p,u){var m=new e.SafeSubscriber({next:function(v){try{g(v)}catch(b){u(b),m.unsubscribe()}},error:u,complete:p});d.subscribe(m)})},_.prototype._subscribe=function(g){var a;return(a=this.source)===null||a===void 0?void 0:a.subscribe(g)},_.prototype[r.observable]=function(){return this},_.prototype.pipe=function(){for(var g=[],a=0;a<arguments.length;a++)g[a]=arguments[a];return n.pipeFromArray(g)(this)},_.prototype.toPromise=function(g){var a=this;return g=h(g),new g(function(d,p){var u;a.subscribe(function(m){return u=m},function(m){return p(m)},function(){return d(u)})})},_.create=function(g){return new _(g)},_})();dh.Observable=s;function h(_){var g;return(g=_??i.config.Promise)!==null&&g!==void 0?g:Promise}function f(_){return _&&c.isFunction(_.next)&&c.isFunction(_.error)&&c.isFunction(_.complete)}function y(_){return _&&_ instanceof e.Subscriber||f(_)&&t.isSubscription(_)}return dh}var Lc={},Ch={},Nc={},dF;function ft(){if(dF)return Nc;dF=1,Object.defineProperty(Nc,"__esModule",{value:!0}),Nc.operate=Nc.hasLift=void 0;var e=or();function t(n){return e.isFunction(n?.lift)}Nc.hasLift=t;function r(n){return function(i){if(t(i))return i.lift(function(c){try{return n(c,this)}catch(o){this.error(o)}});throw new TypeError("Unable to lift unknown Observable type")}}return Nc.operate=r,Nc}var Co={},fF;function bt(){if(fF)return Co;fF=1;
17var e=Co&&Co.__extends||(function(){var i=function(c,o){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,h){s.__proto__=h}||function(s,h){for(var f in h)Object.prototype.hasOwnProperty.call(h,f)&&(s[f]=h[f])},i(c,o)};return function(c,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");i(c,o);function s(){this.constructor=c}c.prototype=o===null?Object.create(o):(s.prototype=o.prototype,new s)}})();Object.defineProperty(Co,"__esModule",{value:!0}),Co.OperatorSubscriber=Co.createOperatorSubscriber=void 0;var t=vS();function r(i,c,o,s,h){return new n(i,c,o,s,h)}Co.createOperatorSubscriber=r;var n=(function(i){e(c,i);function c(o,s,h,f,y,_){var g=i.call(this,o)||this;return g.onFinalize=y,g.shouldUnsubscribe=_,g._next=s?function(a){try{s(a)}catch(d){o.error(d)}}:i.prototype._next,g._error=f?function(a){try{f(a)}catch(d){o.error(d)}finally{this.unsubscribe()}}:i.prototype._error,g._complete=h?function(){try{h()}catch(a){o.error(a)}finally{this.unsubscribe()}}:i.prototype._complete,g}return c.prototype.unsubscribe=function(){var o;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var s=this.closed;i.prototype.unsubscribe.call(this),!s&&((o=this.onFinalize)===null||o===void 0||o.call(this))}},c})(t.Subscriber);return Co.OperatorSubscriber=n,Co}var mF;function WI(){if(mF)return Ch;mF=1,Object.defineProperty(Ch,"__esModule",{value:!0}),Ch.refCount=void 0;var e=ft(),t=bt();function r(){return e.operate(function(n,i){var c=null;n._refCount++;var o=t.createOperatorSubscriber(i,void 0,void 0,void 0,function(){if(!n||n._refCount<=0||0<--n._refCount){c=null;return}var s=n._connection,h=c;c=null,s&&(!h||s===h)&&s.unsubscribe(),i.unsubscribe()});n.subscribe(o),o.closed||(c=n.connect())})}return Ch.refCount=r,Ch}var pF;function QT(){if(pF)return Lc;pF=1;var e=Lc&&Lc.__extends||(function(){var s=function(h,f){return s=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(y,_){y.__proto__=_}||function(y,_){for(var g in _)Object.prototype.hasOwnProperty.call(_,g)&&(y[g]=_[g])},s(h,f)};return function(h,f){if(typeof f!="function"&&f!==null)throw new TypeError("Class extends value "+String(f)+" is not a constructor or null");s(h,f);function y(){this.constructor=h}h.prototype=f===null?Object.create(f):(y.prototype=f.prototype,new y)}})();Object.defineProperty(Lc,"__esModule",{value:!0}),Lc.ConnectableObservable=void 0;var t=fr(),r=Ji(),n=WI(),i=bt(),c=ft(),o=(function(s){e(h,s);function h(f,y){var _=s.call(this)||this;return _.source=f,_.subjectFactory=y,_._subject=null,_._refCount=0,_._connection=null,c.hasLift(f)&&(_.lift=f.lift),_}return h.prototype._subscribe=function(f){return this.getSubject().subscribe(f)},h.prototype.getSubject=function(){var f=this._subject;return(!f||f.isStopped)&&(this._subject=this.subjectFactory()),this._subject},h.prototype._teardown=function(){this._refCount=0;var f=this._connection;this._subject=this._connection=null,f?.unsubscribe()},h.prototype.connect=function(){var f=this,y=this._connection;if(!y){y=this._connection=new r.Subscription;var _=this.getSubject();y.add(this.source.subscribe(i.createOperatorSubscriber(_,void 0,function(){f._teardown(),_.complete()},function(g){f._teardown(),_.error(g)},function(){return f._teardown()}))),y.closed&&(this._connection=null,y=r.Subscription.EMPTY)}return y},h.prototype.refCount=function(){return n.refCount()(this)},h})(t.Observable);return Lc.ConnectableObservable=o,Lc}var Ph={},Vx={},hF;function Yte(){return hF||(hF=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.performanceTimestampProvider=void 0,e.performanceTimestampProvider={now:function(){return(e.performanceTimestampProvider.delegate||performance).now()},delegate:void 0}})(Vx)),Vx}var qc={},gF;function uK(){return gF||(gF=1,(function(e){var t=qc&&qc.__read||function(i,c){var o=typeof Symbol=="function"&&i[Symbol.iterator];if(!o)return i;var s=o.call(i),h,f=[],y;try{for(;(c===void 0||c-- >0)&&!(h=s.next()).done;)f.push(h.value)}catch(_){y={error:_}}finally{try{h&&!h.done&&(o=s.return)&&o.call(s)}finally{if(y)throw y.error}}return f},r=qc&&qc.__spreadArray||function(i,c){for(var o=0,s=c.length,h=i.length;o<s;o++,h++)i[h]=c[o];return i};Object.defineProperty(e,"__esModule",{value:!0}),e.animationFrameProvider=void 0;var n=Ji();e.animationFrameProvider={schedule:function(i){var c=requestAnimationFrame,o=cancelAnimationFrame,s=e.animationFrameProvider.delegate;s&&(c=s.requestAnimationFrame,o=s.cancelAnimationFrame);var h=c(function(f){o=void 0,i(f)});return new n.Subscription(function(){return o?.(h)})},requestAnimationFrame:function(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];var o=e.animationFrameProvider.delegate;return(o?.requestAnimationFrame||requestAnimationFrame).apply(void 0,r([],t(i)))},cancelAnimationFrame:function(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];var o=e.animationFrameProvider.delegate;return(o?.cancelAnimationFrame||cancelAnimationFrame).apply(void 0,r([],t(i)))},delegate:void 0}})(qc)),qc}var yF;function Qte(){if(yF)return Ph;yF=1,Object.defineProperty(Ph,"__esModule",{value:!0}),Ph.animationFrames=void 0;var e=fr(),t=Yte(),r=uK();function n(o){return o?i(o):c}Ph.animationFrames=n;function i(o){return new e.Observable(function(s){var h=o||t.performanceTimestampProvider,f=h.now(),y=0,_=function(){s.closed||(y=r.animationFrameProvider.requestAnimationFrame(function(g){y=0;var a=h.now();s.next({timestamp:o?a:g,elapsed:a-f}),_()}))};return _(),function(){y&&r.animationFrameProvider.cancelAnimationFrame(y)}})}var c=i();return Ph}var ca={},Th={},vF;function lK(){if(vF)return Th;vF=1,Object.defineProperty(Th,"__esModule",{value:!0}),Th.ObjectUnsubscribedError=void 0;var e=El();return Th.ObjectUnsubscribedError=e.createErrorClass(function(t){return function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}}),Th}var bF;function Bn(){if(bF)return ca;bF=1;var e=ca&&ca.__extends||(function(){var f=function(y,_){return f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(g,a){g.__proto__=a}||function(g,a){for(var d in a)Object.prototype.hasOwnProperty.call(a,d)&&(g[d]=a[d])},f(y,_)};return function(y,_){if(typeof _!="function"&&_!==null)throw new TypeError("Class extends value "+String(_)+" is not a constructor or null");f(y,_);function g(){this.constructor=y}
17y.prototype=_===null?Object.create(_):(g.prototype=_.prototype,new g)}})(),t=ca&&ca.__values||function(f){var y=typeof Symbol=="function"&&Symbol.iterator,_=y&&f[y],g=0;if(_)return _.call(f);if(f&&typeof f.length=="number")return{next:function(){return f&&g>=f.length&&(f=void 0),{value:f&&f[g++],done:!f}}};throw new TypeError(y?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(ca,"__esModule",{value:!0}),ca.AnonymousSubject=ca.Subject=void 0;var r=fr(),n=Ji(),i=lK(),c=Ys(),o=HI(),s=(function(f){e(y,f);function y(){var _=f.call(this)||this;return _.closed=!1,_.currentObservers=null,_.observers=[],_.isStopped=!1,_.hasError=!1,_.thrownError=null,_}return y.prototype.lift=function(_){var g=new h(this,this);return g.operator=_,g},y.prototype._throwIfClosed=function(){if(this.closed)throw new i.ObjectUnsubscribedError},y.prototype.next=function(_){var g=this;o.errorContext(function(){var a,d;if(g._throwIfClosed(),!g.isStopped){g.currentObservers||(g.currentObservers=Array.from(g.observers));try{for(var p=t(g.currentObservers),u=p.next();!u.done;u=p.next()){var m=u.value;m.next(_)}}catch(v){a={error:v}}finally{try{u&&!u.done&&(d=p.return)&&d.call(p)}finally{if(a)throw a.error}}}})},y.prototype.error=function(_){var g=this;o.errorContext(function(){if(g._throwIfClosed(),!g.isStopped){g.hasError=g.isStopped=!0,g.thrownError=_;for(var a=g.observers;a.length;)a.shift().error(_)}})},y.prototype.complete=function(){var _=this;o.errorContext(function(){if(_._throwIfClosed(),!_.isStopped){_.isStopped=!0;for(var g=_.observers;g.length;)g.shift().complete()}})},y.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(y.prototype,"observed",{get:function(){var _;return((_=this.observers)===null||_===void 0?void 0:_.length)>0},enumerable:!1,configurable:!0}),y.prototype._trySubscribe=function(_){return this._throwIfClosed(),f.prototype._trySubscribe.call(this,_)},y.prototype._subscribe=function(_){return this._throwIfClosed(),this._checkFinalizedStatuses(_),this._innerSubscribe(_)},y.prototype._innerSubscribe=function(_){var g=this,a=this,d=a.hasError,p=a.isStopped,u=a.observers;return d||p?n.EMPTY_SUBSCRIPTION:(this.currentObservers=null,u.push(_),new n.Subscription(function(){g.currentObservers=null,c.arrRemove(u,_)}))},y.prototype._checkFinalizedStatuses=function(_){var g=this,a=g.hasError,d=g.thrownError,p=g.isStopped;a?_.error(d):p&&_.complete()},y.prototype.asObservable=function(){var _=new r.Observable;return _.source=this,_},y.create=function(_,g){return new h(_,g)},y})(r.Observable);ca.Subject=s;var h=(function(f){e(y,f);function y(_,g){var a=f.call(this)||this;return a.destination=_,a.source=g,a}return y.prototype.next=function(_){var g,a;(a=(g=this.destination)===null||g===void 0?void 0:g.next)===null||a===void 0||a.call(g,_)},y.prototype.error=function(_){var g,a;(a=(g=this.destination)===null||g===void 0?void 0:g.error)===null||a===void 0||a.call(g,_)},y.prototype.complete=function(){var _,g;(g=(_=this.destination)===null||_===void 0?void 0:_.complete)===null||g===void 0||g.call(_)},y.prototype._subscribe=function(_){var g,a;return(a=(g=this.source)===null||g===void 0?void 0:g.subscribe(_))!==null&&a!==void 0?a:n.EMPTY_SUBSCRIPTION},y})(s);return ca.AnonymousSubject=h,ca}var Uc={},_F;function dK(){if(_F)return Uc;_F=1;var e=Uc&&Uc.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(Uc,"__esModule",{value:!0}),Uc.BehaviorSubject=void 0;var t=Bn(),r=(function(n){e(i,n);function i(c){var o=n.call(this)||this;return o._value=c,o}return Object.defineProperty(i.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),i.prototype._subscribe=function(c){var o=n.prototype._subscribe.call(this,c);return!o.closed&&c.next(this._value),o},i.prototype.getValue=function(){var c=this,o=c.hasError,s=c.thrownError,h=c._value;if(o)throw s;return this._throwIfClosed(),h},i.prototype.next=function(c){n.prototype.next.call(this,this._value=c)},i})(t.Subject);return Uc.BehaviorSubject=r,Uc}var jc={},Ex={},SF;function $I(){return SF||(SF=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.dateTimestampProvider=void 0,e.dateTimestampProvider={now:function(){return(e.dateTimestampProvider.delegate||Date).now()},delegate:void 0}})(Ex)),Ex}var CF;function XI(){if(CF)return jc;CF=1;var e=jc&&jc.__extends||(function(){var i=function(c,o){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,h){s.__proto__=h}||function(s,h){for(var f in h)Object.prototype.hasOwnProperty.call(h,f)&&(s[f]=h[f])},i(c,o)};return function(c,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");i(c,o);function s(){this.constructor=c}c.prototype=o===null?Object.create(o):(s.prototype=o.prototype,new s)}})();Object.defineProperty(jc,"__esModule",{value:!0}),jc.ReplaySubject=void 0;var t=Bn(),r=$I(),n=(function(i){e(c,i);function c(o,s,h){o===void 0&&(o=1/0),s===void 0&&(s=1/0),h===void 0&&(h=r.dateTimestampProvider);var f=i.call(this)||this;return f._bufferSize=o,f._windowTime=s,f._timestampProvider=h,f._buffer=[],f._infiniteTimeWindow=!0,f._infiniteTimeWindow=s===1/0,f._bufferSize=Math.max(1,o),f._windowTime=Math.max(1,s),f}return c.prototype.next=function(o){var s=this,h=s.isStopped,f=s._buffer,y=s._infiniteTimeWindow,_=s._timestampProvider,g=s._windowTime;h||(f.push(o),!y&&f.push(_.now()+g)),this._trimBuffer(),i.prototype.next.call(this,o)},c.prototype._subscribe=function(o){this._throwIfClosed(),this._trimBuffer();for(var s=this._innerSubscribe(o),h=this,f=h._infiniteTimeWindow,y=h._buffer,_=y.slice(),g=0;g<_.length&&!o.closed;g+=f?1:2)o.next(_[g]);return this._checkFinalizedStatuses(o),s},c.prototype._trimBuffer=function(){var o=this,s=o._bufferSize,h=o._timestampProvider,f=o._buffer,y=o._infiniteTimeWindow,_=(y?1:2)*s;if(s<1/0&&_<f.length&&f.splice(0,f.length-_),!y){for(var g=h.now(),a=0,d=1;d<f.length&&f[d]<=g;d+=2)a=d;a&&f.splice(0,a+1)}},c})(t.Subject);return jc.ReplaySubject=n,jc}var Gc={},PF;function KI(){if(PF)return Gc;PF=1;var e=Gc&&Gc.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(Gc,"__esModule",{value:!0}),Gc.AsyncSubject=void 0;var t=Bn(),r=(function(n){e(i,n);function i(){var c=n!==null&&n.apply(this,arguments)||this;return c._value=null,c._hasValue=!1,c._isComplete=!1,c}return i.prototype._checkFinalizedStatuses=function(c){var o=this,s=o.hasError,h=o._hasValue,f=o._value,y=o.thrownError,_=o.isStopped,g=o._isComplete;s?c.error(y):(_||g)&&(h&&c.next(f),c.complete())},i.prototype.next=function(c){this.isStopped||(this._value=c,this._hasValue=!0)},i.prototype.complete=function(){var c=this,o=c._hasValue,s=c._value,h=c._isComplete;h||(this._isComplete=!0,o&&n.prototype.next.call(this,s),n.prototype.complete.call(this))},i})(t.Subject);return Gc.AsyncSubject=r,Gc}var Bx={},zc={},Hc={},Wc={},TF;function Zte(){if(TF)return Wc;TF=1;var e=Wc&&Wc.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(Wc,"__esModule",{value:!0}),Wc.Action=void 0;var t=Ji(),r=(function(n){e(i,n);function i(c,o){return n.call(this)||this}return i.prototype.schedule=function(c,o){return this},i})(t.Subscription);return Wc.Action=r,Wc}var $c={},xF;function Jte(){return xF||(xF=1,(function(e){var t=$c&&$c.__read||function(n,i){var c=typeof Symbol=="function"&&n[Symbol.iterator];if(!c)return n;var o=c.call(n),s,h=[],f;try{for(;(i===void 0||i-- >0)&&!(s=o.next()).done;)h.push(s.value)}catch(y){f={error:y}}finally{try{s&&!s.done&&(c=o.return)&&c.call(o)}finally{if(f)throw f.error}}return h},r=$c&&$c.__spreadArray||function(n,i){for(var c=0,o=i.length,s=n.length;c<o;c++,s++)n[s]=i[c];return n};Object.defineProperty(e,"__esModule",{value:!0}),e.intervalProvider=void 0,e.intervalProvider={setInterval:function(n,i){for(var c=[],o=2;o<arguments.length;o++)c[o-2]=arguments[o];var s=e.intervalProvider.delegate;return s?.setInterval?s.setInterval.apply(s,r([n,i],t(c))):setInterval.apply(void 0,r([n,i],t(c)))},clearInterval:function(n){var i=e.intervalProvider.delegate;return(i?.clearInterval||clearInterval)(n)},delegate:void 0}})($c)),$c}var AF;function bS(){if(AF)return Hc;AF=1;var e=Hc&&Hc.__extends||(function(){var c=function(o,s){return c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(h,f){h.__proto__=f}||function(h,f){for(var y in f)Object.prototype.hasOwnProperty.call(f,y)&&(h[y]=f[y])},c(o,s)};return function(o,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");c(o,s);function h(){this.constructor=o}o.prototype=s===null?Object.create(s):(h.prototype=s.prototype,new h)}})();Object.defineProperty(Hc,"__esModule",{value:!0}),Hc.AsyncAction=void 0;var t=Zte(),r=Jte(),n=Ys(),i=(function(c){e(o,c);function o(s,h){var f=c.call(this,s,h)||this;return f.scheduler=s,f.work=h,f.pending=!1,f}return o.prototype.schedule=function(s,h){var f;if(h===void 0&&(h=0),this.closed)return this;this.state=s;var y=this.id,_=this.scheduler;return y!=null&&(this.id=this.recycleAsyncId(_,y,h)),this.pending=!0,this.delay=h,this.id=(f=this.id)!==null&&f!==void 0?f:this.requestAsyncId(_,this.id,h),this},o.prototype.requestAsyncId=function(s,h,f){return f===void 0&&(f=0),r.intervalProvider.setInterval(s.flush.bind(s,this),f)},o.prototype.recycleAsyncId=function(s,h,f){if(f===void 0&&(f=0),f!=null&&this.delay===f&&this.pending===!1)return h;h!=null&&r.intervalProvider.clearInterval(h)},o.prototype.execute=function(s,h){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var f=this._execute(s,h);if(f)return f;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},o.prototype._execute=function(s,h){var f=!1,y;try{this.work(s)}catch(_){f=!0,y=_||new Error("Scheduled action threw falsy error")}if(f)return this.unsubscribe(),y},o.prototype.unsubscribe=function(){if(!this.closed){var s=this,h=s.id,f=s.scheduler,y=f.actions;this.work=this.state=this.scheduler=null,this.pending=!1,n.arrRemove(y,this),h!=null&&(this.id=this.recycleAsyncId(f,h,null)),this.delay=null,c.prototype.unsubscribe.call(this)}},o})(t.Action);return Hc.AsyncAction=i,Hc}var Xc={},Kc={},MF;function ere(){if(MF)return Kc;MF=1,Object.defineProperty(Kc,"__esModule",{value:!0}),Kc.TestTools=Kc.Immediate=void 0;var e=1,t,r={};function n(i){return i in r?(delete r[i],!0):!1}return Kc.Immediate={setImmediate:function(i){var c=e++;return r[c]=!0,t||(t=Promise.resolve()),t.then(function(){return n(c)&&i()}),c},clearImmediate:function(i){n(i)}},Kc.TestTools={pending:function(){return Object.keys(r).length}},Kc}var DF;function tre(){return DF||(DF=1,(function(e){var t=Xc&&Xc.__read||function(o,s){var h=typeof Symbol=="function"&&o[Symbol.iterator];if(!h)return o;var f=h.call(o),y,_=[],g;try{for(;(s===void 0||s-- >0)&&!(y=f.next()).done;)_.push(y.value)}catch(a){g={error:a}}finally{try{y&&!y.done&&(h=f.return)&&h.call(f)}finally{if(g)throw g.error}}return _},r=Xc&&Xc.__spreadArray||function(o,s){for(var h=0,f=s.length,y=o.length;h<f;h++,y++)o[y]=s[h];return o};
17Object.defineProperty(e,"__esModule",{value:!0}),e.immediateProvider=void 0;var n=ere(),i=n.Immediate.setImmediate,c=n.Immediate.clearImmediate;e.immediateProvider={setImmediate:function(){for(var o=[],s=0;s<arguments.length;s++)o[s]=arguments[s];var h=e.immediateProvider.delegate;return(h?.setImmediate||i).apply(void 0,r([],t(o)))},clearImmediate:function(o){var s=e.immediateProvider.delegate;return(s?.clearImmediate||c)(o)},delegate:void 0}})(Xc)),Xc}var IF;function rre(){if(IF)return zc;IF=1;var e=zc&&zc.__extends||(function(){var i=function(c,o){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,h){s.__proto__=h}||function(s,h){for(var f in h)Object.prototype.hasOwnProperty.call(h,f)&&(s[f]=h[f])},i(c,o)};return function(c,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");i(c,o);function s(){this.constructor=c}c.prototype=o===null?Object.create(o):(s.prototype=o.prototype,new s)}})();Object.defineProperty(zc,"__esModule",{value:!0}),zc.AsapAction=void 0;var t=bS(),r=tre(),n=(function(i){e(c,i);function c(o,s){var h=i.call(this,o,s)||this;return h.scheduler=o,h.work=s,h}return c.prototype.requestAsyncId=function(o,s,h){return h===void 0&&(h=0),h!==null&&h>0?i.prototype.requestAsyncId.call(this,o,s,h):(o.actions.push(this),o._scheduled||(o._scheduled=r.immediateProvider.setImmediate(o.flush.bind(o,void 0))))},c.prototype.recycleAsyncId=function(o,s,h){var f;if(h===void 0&&(h=0),h!=null?h>0:this.delay>0)return i.prototype.recycleAsyncId.call(this,o,s,h);var y=o.actions;s!=null&&((f=y[y.length-1])===null||f===void 0?void 0:f.id)!==s&&(r.immediateProvider.clearImmediate(s),o._scheduled===s&&(o._scheduled=void 0))},c})(t.AsyncAction);return zc.AsapAction=n,zc}var Yc={},Qc={},xh={},wF;function fK(){if(wF)return xh;wF=1,Object.defineProperty(xh,"__esModule",{value:!0}),xh.Scheduler=void 0;var e=$I(),t=(function(){function r(n,i){i===void 0&&(i=r.now),this.schedulerActionCtor=n,this.now=i}return r.prototype.schedule=function(n,i,c){return i===void 0&&(i=0),new this.schedulerActionCtor(this,n).schedule(c,i)},r.now=e.dateTimestampProvider.now,r})();return xh.Scheduler=t,xh}var VF;function _S(){if(VF)return Qc;VF=1;var e=Qc&&Qc.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(Qc,"__esModule",{value:!0}),Qc.AsyncScheduler=void 0;var t=fK(),r=(function(n){e(i,n);function i(c,o){o===void 0&&(o=t.Scheduler.now);var s=n.call(this,c,o)||this;return s.actions=[],s._active=!1,s}return i.prototype.flush=function(c){var o=this.actions;if(this._active){o.push(c);return}var s;this._active=!0;do if(s=c.execute(c.state,c.delay))break;while(c=o.shift());if(this._active=!1,s){for(;c=o.shift();)c.unsubscribe();throw s}},i})(t.Scheduler);return Qc.AsyncScheduler=r,Qc}var EF;function nre(){if(EF)return Yc;EF=1;var e=Yc&&Yc.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(Yc,"__esModule",{value:!0}),Yc.AsapScheduler=void 0;var t=_S(),r=(function(n){e(i,n);function i(){return n!==null&&n.apply(this,arguments)||this}return i.prototype.flush=function(c){this._active=!0;var o=this._scheduled;this._scheduled=void 0;var s=this.actions,h;c=c||s.shift();do if(h=c.execute(c.state,c.delay))break;while((c=s[0])&&c.id===o&&s.shift());if(this._active=!1,h){for(;(c=s[0])&&c.id===o&&s.shift();)c.unsubscribe();throw h}},i})(t.AsyncScheduler);return Yc.AsapScheduler=r,Yc}var BF;function ire(){return BF||(BF=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.asap=e.asapScheduler=void 0;var t=rre(),r=nre();e.asapScheduler=new r.AsapScheduler(t.AsapAction),e.asap=e.asapScheduler})(Bx)),Bx}var Rx={},RF;function Di(){return RF||(RF=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.async=e.asyncScheduler=void 0;var t=bS(),r=_S();e.asyncScheduler=new r.AsyncScheduler(t.AsyncAction),e.async=e.asyncScheduler})(Rx)),Rx}var Ox={},Zc={},OF;function are(){if(OF)return Zc;OF=1;var e=Zc&&Zc.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(Zc,"__esModule",{value:!0}),Zc.QueueAction=void 0;var t=bS(),r=(function(n){e(i,n);function i(c,o){var s=n.call(this,c,o)||this;return s.scheduler=c,s.work=o,s}return i.prototype.schedule=function(c,o){return o===void 0&&(o=0),o>0?n.prototype.schedule.call(this,c,o):(this.delay=o,this.state=c,this.scheduler.flush(this),this)},i.prototype.execute=function(c,o){return o>0||this.closed?n.prototype.execute.call(this,c,o):this._execute(c,o)},i.prototype.requestAsyncId=function(c,o,s){return s===void 0&&(s=0),s!=null&&s>0||s==null&&this.delay>0?n.prototype.requestAsyncId.call(this,c,o,s):(c.flush(this),0)},i})(t.AsyncAction);return Zc.QueueAction=r,Zc}var Jc={},kF;function ore(){if(kF)return Jc;kF=1;var e=Jc&&Jc.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(Jc,"__esModule",{value:!0}),Jc.QueueScheduler=void 0;var t=_S(),r=(function(n){e(i,n);function i(){return n!==null&&n.apply(this,arguments)||this}return i})(t.AsyncScheduler);return Jc.QueueScheduler=r,Jc}var FF;function sre(){return FF||(FF=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.queue=e.queueScheduler=void 0;var t=are(),r=ore();e.queueScheduler=new r.QueueScheduler(t.QueueAction),e.queue=e.queueScheduler})(Ox)),Ox}var kx={},eu={},LF;function cre(){if(LF)return eu;LF=1;var e=eu&&eu.__extends||(function(){var i=function(c,o){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,h){s.__proto__=h}||function(s,h){for(var f in h)Object.prototype.hasOwnProperty.call(h,f)&&(s[f]=h[f])},i(c,o)};return function(c,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");i(c,o);function s(){this.constructor=c}c.prototype=o===null?Object.create(o):(s.prototype=o.prototype,new s)}})();Object.defineProperty(eu,"__esModule",{value:!0}),eu.AnimationFrameAction=void 0;var t=bS(),r=uK(),n=(function(i){e(c,i);function c(o,s){var h=i.call(this,o,s)||this;return h.scheduler=o,h.work=s,h}return c.prototype.requestAsyncId=function(o,s,h){return h===void 0&&(h=0),h!==null&&h>0?i.prototype.requestAsyncId.call(this,o,s,h):(o.actions.push(this),o._scheduled||(o._scheduled=r.animationFrameProvider.requestAnimationFrame(function(){return o.flush(void 0)})))},c.prototype.recycleAsyncId=function(o,s,h){var f;if(h===void 0&&(h=0),h!=null?h>0:this.delay>0)return i.prototype.recycleAsyncId.call(this,o,s,h);var y=o.actions;s!=null&&s===o._scheduled&&((f=y[y.length-1])===null||f===void 0?void 0:f.id)!==s&&(r.animationFrameProvider.cancelAnimationFrame(s),o._scheduled=void 0)},c})(t.AsyncAction);return eu.AnimationFrameAction=n,eu}var tu={},NF;function ure(){if(NF)return tu;NF=1;var e=tu&&tu.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(tu,"__esModule",{value:!0}),tu.AnimationFrameScheduler=void 0;var t=_S(),r=(function(n){e(i,n);function i(){return n!==null&&n.apply(this,arguments)||this}return i.prototype.flush=function(c){this._active=!0;var o;c?o=c.id:(o=this._scheduled,this._scheduled=void 0);var s=this.actions,h;c=c||s.shift();do if(h=c.execute(c.state,c.delay))break;while((c=s[0])&&c.id===o&&s.shift());if(this._active=!1,h){for(;(c=s[0])&&c.id===o&&s.shift();)c.unsubscribe();throw h}},i})(t.AsyncScheduler);return tu.AnimationFrameScheduler=r,tu}var qF;function lre(){return qF||(qF=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.animationFrame=e.animationFrameScheduler=void 0;var t=cre(),r=ure();e.animationFrameScheduler=new r.AnimationFrameScheduler(t.AnimationFrameAction),e.animationFrame=e.animationFrameScheduler})(kx)),kx}var Po={},UF;function dre(){if(UF)return Po;UF=1;var e=Po&&Po.__extends||(function(){var o=function(s,h){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(f,y){f.__proto__=y}||function(f,y){for(var _ in y)Object.prototype.hasOwnProperty.call(y,_)&&(f[_]=y[_])},o(s,h)};return function(s,h){if(typeof h!="function"&&h!==null)throw new TypeError("Class extends value "+String(h)+" is not a constructor or null");o(s,h);function f(){this.constructor=s}s.prototype=h===null?Object.create(h):(f.prototype=h.prototype,new f)}})();Object.defineProperty(Po,"__esModule",{value:!0}
17),Po.VirtualAction=Po.VirtualTimeScheduler=void 0;var t=bS(),r=Ji(),n=_S(),i=(function(o){e(s,o);function s(h,f){h===void 0&&(h=c),f===void 0&&(f=1/0);var y=o.call(this,h,function(){return y.frame})||this;return y.maxFrames=f,y.frame=0,y.index=-1,y}return s.prototype.flush=function(){for(var h=this,f=h.actions,y=h.maxFrames,_,g;(g=f[0])&&g.delay<=y&&(f.shift(),this.frame=g.delay,!(_=g.execute(g.state,g.delay))););if(_){for(;g=f.shift();)g.unsubscribe();throw _}},s.frameTimeFactor=10,s})(n.AsyncScheduler);Po.VirtualTimeScheduler=i;var c=(function(o){e(s,o);function s(h,f,y){y===void 0&&(y=h.index+=1);var _=o.call(this,h,f)||this;return _.scheduler=h,_.work=f,_.index=y,_.active=!0,_.index=h.index=y,_}return s.prototype.schedule=function(h,f){if(f===void 0&&(f=0),Number.isFinite(f)){if(!this.id)return o.prototype.schedule.call(this,h,f);this.active=!1;var y=new s(this.scheduler,this.work);return this.add(y),y.schedule(h,f)}else return r.Subscription.EMPTY},s.prototype.requestAsyncId=function(h,f,y){y===void 0&&(y=0),this.delay=h.frame+y;var _=h.actions;return _.push(this),_.sort(s.sortActions),1},s.prototype.recycleAsyncId=function(h,f,y){},s.prototype._execute=function(h,f){if(this.active===!0)return o.prototype._execute.call(this,h,f)},s.sortActions=function(h,f){return h.delay===f.delay?h.index===f.index?0:h.index>f.index?1:-1:h.delay>f.delay?1:-1},s})(t.AsyncAction);return Po.VirtualAction=c,Po}var Fx={},Lx={},jF;function ka(){return jF||(jF=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.empty=e.EMPTY=void 0;var t=fr();e.EMPTY=new t.Observable(function(i){return i.complete()});function r(i){return i?n(i):e.EMPTY}e.empty=r;function n(i){return new t.Observable(function(c){return i.schedule(function(){return c.complete()})})}})(Lx)),Lx}var Ah={},To={},Mh={},GF;function ZT(){if(GF)return Mh;GF=1,Object.defineProperty(Mh,"__esModule",{value:!0}),Mh.isScheduler=void 0;var e=or();function t(r){return r&&e.isFunction(r.schedule)}return Mh.isScheduler=t,Mh}var zF;function Ii(){if(zF)return To;zF=1,Object.defineProperty(To,"__esModule",{value:!0}),To.popNumber=To.popScheduler=To.popResultSelector=void 0;var e=or(),t=ZT();function r(o){return o[o.length-1]}function n(o){return e.isFunction(r(o))?o.pop():void 0}To.popResultSelector=n;function i(o){return t.isScheduler(r(o))?o.pop():void 0}To.popScheduler=i;function c(o,s){return typeof r(o)=="number"?o.pop():s}return To.popNumber=c,To}var Dh={},Ih={},wh={},_r={},Vh={},HF;function YI(){return HF||(HF=1,Object.defineProperty(Vh,"__esModule",{value:!0}),Vh.isArrayLike=void 0,Vh.isArrayLike=(function(e){return e&&typeof e.length=="number"&&typeof e!="function"})),Vh}var Eh={},WF;function mK(){if(WF)return Eh;WF=1,Object.defineProperty(Eh,"__esModule",{value:!0}),Eh.isPromise=void 0;var e=or();function t(r){return e.isFunction(r?.then)}return Eh.isPromise=t,Eh}var Bh={},$F;function pK(){if($F)return Bh;$F=1,Object.defineProperty(Bh,"__esModule",{value:!0}),Bh.isInteropObservable=void 0;var e=KT(),t=or();function r(n){return t.isFunction(n[e.observable])}return Bh.isInteropObservable=r,Bh}var Rh={},XF;function hK(){if(XF)return Rh;XF=1,Object.defineProperty(Rh,"__esModule",{value:!0}),Rh.isAsyncIterable=void 0;var e=or();function t(r){return Symbol.asyncIterator&&e.isFunction(r?.[Symbol.asyncIterator])}return Rh.isAsyncIterable=t,Rh}var Oh={},KF;function gK(){if(KF)return Oh;KF=1,Object.defineProperty(Oh,"__esModule",{value:!0}),Oh.createInvalidObservableTypeError=void 0;function e(t){return new TypeError("You provided "+(t!==null&&typeof t=="object"?"an invalid object":"'"+t+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}return Oh.createInvalidObservableTypeError=e,Oh}var kh={},ru={},YF;function yK(){if(YF)return ru;YF=1,Object.defineProperty(ru,"__esModule",{value:!0}),ru.iterator=ru.getSymbolIterator=void 0;function e(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}return ru.getSymbolIterator=e,ru.iterator=e(),ru}var QF;function vK(){if(QF)return kh;QF=1,Object.defineProperty(kh,"__esModule",{value:!0}),kh.isIterable=void 0;var e=yK(),t=or();function r(n){return t.isFunction(n?.[e.iterator])}return kh.isIterable=r,kh}var hi={},ZF;function QI(){if(ZF)return hi;ZF=1;var e=hi&&hi.__generator||function(o,s){var h={label:0,sent:function(){if(_[0]&1)throw _[1];return _[1]},trys:[],ops:[]},f,y,_,g;return g={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(g[Symbol.iterator]=function(){return this}),g;function a(p){return function(u){return d([p,u])}}function d(p){if(f)throw new TypeError("Generator is already executing.");for(;h;)try{if(f=1,y&&(_=p[0]&2?y.return:p[0]?y.throw||((_=y.return)&&_.call(y),0):y.next)&&!(_=_.call(y,p[1])).done)return _;switch(y=0,_&&(p=[p[0]&2,_.value]),p[0]){case 0:case 1:_=p;break;case 4:return h.label++,{value:p[1],done:!1};case 5:h.label++,y=p[1],p=[0];continue;case 7:p=h.ops.pop(),h.trys.pop();continue;
vendor: 4,066 bytes, line 17
17default:if(_=h.trys,!(_=_.length>0&&_[_.length-1])&&(p[0]===6||p[0]===2)){h=0;continue}if(p[0]===3&&(!_||p[1]>_[0]&&p[1]<_[3])){h.label=p[1];break}if(p[0]===6&&h.label<_[1]){h.label=_[1],_=p;break}if(_&&h.label<_[2]){h.label=_[2],h.ops.push(p);break}_[2]&&h.ops.pop(),h.trys.pop();continue}p=s.call(o,h)}catch(u){p=[6,u],y=0}finally{f=_=0}if(p[0]&5)throw p[1];return{value:p[0]?p[1]:void 0,done:!0}}},t=hi&&hi.__await||function(o){return this instanceof t?(this.v=o,this):new t(o)},r=hi&&hi.__asyncGenerator||function(o,s,h){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var f=h.apply(o,s||[]),y,_=[];return y={},g("next"),g("throw"),g("return"),y[Symbol.asyncIterator]=function(){return this},y;function g(v){f[v]&&(y[v]=function(b){return new Promise(function(P,C){_.push([v,b,P,C])>1||a(v,b)})})}function a(v,b){try{d(f[v](b))}catch(P){m(_[0][3],P)}}function d(v){v.value instanceof t?Promise.resolve(v.value.v).then(p,u):m(_[0][2],v)}function p(v){a("next",v)}function u(v){a("throw",v)}function m(v,b){v(b),_.shift(),_.length&&a(_[0][0],_[0][1])}};Object.defineProperty(hi,"__esModule",{value:!0}),hi.isReadableStreamLike=hi.readableStreamLikeToAsyncGenerator=void 0;var n=or();function i(o){return r(this,arguments,function(){var h,f,y,_;return e(this,function(g){switch(g.label){case 0:h=o.getReader(),g.label=1;case 1:g.trys.push([1,,9,10]),g.label=2;case 2:return[4,t(h.read())];case 3:return f=g.sent(),y=f.value,_=f.done,_?[4,t(void 0)]:[3,5];case 4:return[2,g.sent()];case 5:return[4,t(y)];case 6:return[4,g.sent()];case 7:return g.sent(),[3,2];case 8:return[3,10];case 9:return h.releaseLock(),[7];case 10:return[2]}})})}hi.readableStreamLikeToAsyncGenerator=i;function c(o){return n.isFunction(o?.getReader)}return hi.isReadableStreamLike=c,hi}var JF;function Ft(){if(JF)return _r;JF=1;var e=_r&&_r.__awaiter||function(S,T,A,x){function M(D){return D instanceof A?D:new A(function(V){V(D)})}return new(A||(A=Promise))(function(D,V){function R(B){try{I(x.next(B))}catch(w){V(w)}}function E(B){try{I(x.throw(B))}catch(w){V(w)}}function I(B){B.done?D(B.value):M(B.value).then(R,E)}I((x=x.apply(S,T||[])).next())})},t=_r&&_r.__generator||function(S,T){var A={label:0,sent:function(){if(D[0]&1)throw D[1];return D[1]},trys:[],ops:[]},x,M,D,V;return V={next:R(0),throw:R(1),return:R(2)},typeof Symbol=="function"&&(V[Symbol.iterator]=function(){return this}),V;function R(I){return function(B){return E([I,B])}}function E(I){if(x)throw new TypeError("Generator is already executing.");for(;A;)try{if(x=1,M&&(D=I[0]&2?M.return:I[0]?M.throw||((D=M.return)&&D.call(M),0):M.next)&&!(D=D.call(M,I[1])).done)return D;switch(M=0,D&&(I=[I[0]&2,D.value]),I[0]){case 0:case 1:D=I;break;case 4:return A.label++,{value:I[1],done:!1};case 5:A.label++,M=I[1],I=[0];continue;case 7:I=A.ops.pop(),A.trys.pop();continue;default:if(D=A.trys,!(D=D.length>0&&D[D.length-1])&&(I[0]===6||I[0]===2)){A=0;continue}if(I[0]===3&&(!D||I[1]>D[0]&&I[1]<D[3])){A.label=I[1];break}if(I[0]===6&&A.label<D[1]){A.label=D[1],D=I;break}if(D&&A.label<D[2]){A.label=D[2],A.ops.push(I);break}D[2]&&A.ops.pop(),A.trys.pop();continue}I=T.call(S,A)}catch(B){I=[6,B],M=0}finally{x=D=0}if(I[0]&5)throw I[1];return{value:I[0]?I[1]:void 0,done:!0}}},r=_r&&_r.__asyncValues||function(S){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var T=S[Symbol.asyncIterator],A;return T?T.call(S):(S=typeof n=="function"?n(S):S[Symbol.iterator](),A={},x("next"),x("throw"),x("return"),A[Symbol.asyncIterator]=function(){return this},A);function x(D){A[D]=S[D]&&function(V){return new Promise(function(R,E){V=S[D](V),M(R,E,V.done,V.value)})}}function M(D,V,R,E){Promise.resolve(E).then(function(I){D({value:I,done:R})},V)}},n=_r&&_r.__values||function(S){var T=typeof Symbol=="function"&&Symbol.iterator,A=T&&S[T],x=0;if(A)return A.call(S);if(S&&typeof S.length=="number")return{next:function(){return S&&x>=S.length&&(S=void 0),{value:S&&S[x++],done:!S}}};throw new TypeError(T?"Object is not iterable.":"Symbol.iterator is not defined.")};
17Object.defineProperty(_r,"__esModule",{value:!0}),_r.fromReadableStreamLike=_r.fromAsyncIterable=_r.fromIterable=_r.fromPromise=_r.fromArrayLike=_r.fromInteropObservable=_r.innerFrom=void 0;var i=YI(),c=mK(),o=fr(),s=pK(),h=hK(),f=gK(),y=vK(),_=QI(),g=or(),a=cK(),d=KT();function p(S){if(S instanceof o.Observable)return S;if(S!=null){if(s.isInteropObservable(S))return u(S);if(i.isArrayLike(S))return m(S);if(c.isPromise(S))return v(S);if(h.isAsyncIterable(S))return P(S);if(y.isIterable(S))return b(S);if(_.isReadableStreamLike(S))return C(S)}throw f.createInvalidObservableTypeError(S)}_r.innerFrom=p;function u(S){return new o.Observable(function(T){var A=S[d.observable]();if(g.isFunction(A.subscribe))return A.subscribe(T);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}_r.fromInteropObservable=u;function m(S){return new o.Observable(function(T){for(var A=0;A<S.length&&!T.closed;A++)T.next(S[A]);T.complete()})}_r.fromArrayLike=m;function v(S){return new o.Observable(function(T){S.then(function(A){T.closed||(T.next(A),T.complete())},function(A){return T.error(A)}).then(null,a.reportUnhandledError)})}_r.fromPromise=v;function b(S){return new o.Observable(function(T){var A,x;try{for(var M=n(S),D=M.next();!D.done;D=M.next()){var V=D.value;if(T.next(V),T.closed)return}}catch(R){A={error:R}}finally{try{D&&!D.done&&(x=M.return)&&x.call(M)}finally{if(A)throw A.error}}T.complete()})}_r.fromIterable=b;function P(S){return new o.Observable(function(T){l(S,T).catch(function(A){return T.error(A)})})}_r.fromAsyncIterable=P;function C(S){return P(_.readableStreamLikeToAsyncGenerator(S))}_r.fromReadableStreamLike=C;function l(S,T){var A,x,M,D;return e(this,void 0,void 0,function(){var V,R;return t(this,function(E){switch(E.label){case 0:E.trys.push([0,5,6,11]),A=r(S),E.label=1;case 1:return[4,A.next()];case 2:if(x=E.sent(),!!x.done)return[3,4];if(V=x.value,T.next(V),T.closed)return[2];E.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return R=E.sent(),M={error:R},[3,11];case 6:return E.trys.push([6,,9,10]),x&&!x.done&&(D=A.return)?[4,D.call(A)]:[3,8];case 7:E.sent(),E.label=8;case 8:return[3,10];case 9:if(M)throw M.error;return[7];case 10:return[7];case 11:return T.complete(),[2]}})})}return _r}var Fh={},Lh={},eL;function Qs(){if(eL)return Lh;eL=1,Object.defineProperty(Lh,"__esModule",{value:!0}),Lh.executeSchedule=void 0;function e(t,r,n,i,c){i===void 0&&(i=0),c===void 0&&(c=!1);var o=r.schedule(function(){n(),c?t.add(this.schedule(null,i)):this.unsubscribe()},i);if(t.add(o),!c)return o}return Lh.executeSchedule=e,Lh}var tL;function SS(){if(tL)return Fh;tL=1,Object.defineProperty(Fh,"__esModule",{value:!0}),Fh.observeOn=void 0;var e=Qs(),t=ft(),r=bt();function n(i,c){return c===void 0&&(c=0),t.operate(function(o,s){o.subscribe(r.createOperatorSubscriber(s,function(h){return e.executeSchedule(s,i,function(){return s.next(h)},c)},function(){return e.executeSchedule(s,i,function(){return s.complete()},c)},function(h){return e.executeSchedule(s,i,function(){return s.error(h)},c)}))})}return Fh.observeOn=n,Fh}var Nh={},rL;function CS(){if(rL)return Nh;rL=1,Object.defineProperty(Nh,"__esModule",{value:!0}),Nh.subscribeOn=void 0;var e=ft();function t(r,n){return n===void 0&&(n=0),e.operate(function(i,c){c.add(r.schedule(function(){return i.subscribe(c)},n))})}return Nh.subscribeOn=t,Nh}var nL;function fre(){if(nL)return wh;nL=1,Object.defineProperty(wh,"__esModule",{value:!0}),wh.scheduleObservable=void 0;var e=Ft(),t=SS(),r=CS();function n(i,c){return e.innerFrom(i).pipe(r.subscribeOn(c),t.observeOn(c))}return wh.scheduleObservable=n,wh}var qh={},iL;function mre(){if(iL)return qh;iL=1,Object.defineProperty(qh,"__esModule",{value:!0}),qh.schedulePromise=void 0;var e=Ft(),t=SS(),r=CS();function n(i,c){return e.innerFrom(i).pipe(r.subscribeOn(c),t.observeOn(c))}return qh.schedulePromise=n,qh}var Uh={},aL;function pre(){if(aL)return Uh;aL=1,Object.defineProperty(Uh,"__esModule",{value:!0}),Uh.scheduleArray=void 0;var e=fr();function t(r,n){return new e.Observable(function(i){var c=0;
17return n.schedule(function(){c===r.length?i.complete():(i.next(r[c++]),i.closed||this.schedule())})})}return Uh.scheduleArray=t,Uh}var jh={},oL;function bK(){if(oL)return jh;oL=1,Object.defineProperty(jh,"__esModule",{value:!0}),jh.scheduleIterable=void 0;var e=fr(),t=yK(),r=or(),n=Qs();function i(c,o){return new e.Observable(function(s){var h;return n.executeSchedule(s,o,function(){h=c[t.iterator](),n.executeSchedule(s,o,function(){var f,y,_;try{f=h.next(),y=f.value,_=f.done}catch(g){s.error(g);return}_?s.complete():s.next(y)},0,!0)}),function(){return r.isFunction(h?.return)&&h.return()}})}return jh.scheduleIterable=i,jh}var Gh={},sL;function _K(){if(sL)return Gh;sL=1,Object.defineProperty(Gh,"__esModule",{value:!0}),Gh.scheduleAsyncIterable=void 0;var e=fr(),t=Qs();function r(n,i){if(!n)throw new Error("Iterable cannot be null");return new e.Observable(function(c){t.executeSchedule(c,i,function(){var o=n[Symbol.asyncIterator]();t.executeSchedule(c,i,function(){o.next().then(function(s){s.done?c.complete():c.next(s.value)})},0,!0)})})}return Gh.scheduleAsyncIterable=r,Gh}var zh={},cL;function hre(){if(cL)return zh;cL=1,Object.defineProperty(zh,"__esModule",{value:!0}),zh.scheduleReadableStreamLike=void 0;var e=_K(),t=QI();function r(n,i){return e.scheduleAsyncIterable(t.readableStreamLikeToAsyncGenerator(n),i)}return zh.scheduleReadableStreamLike=r,zh}var uL;function SK(){if(uL)return Ih;uL=1,Object.defineProperty(Ih,"__esModule",{value:!0}),Ih.scheduled=void 0;var e=fre(),t=mre(),r=pre(),n=bK(),i=_K(),c=pK(),o=mK(),s=YI(),h=vK(),f=hK(),y=gK(),_=QI(),g=hre();function a(d,p){if(d!=null){if(c.isInteropObservable(d))return e.scheduleObservable(d,p);if(s.isArrayLike(d))return r.scheduleArray(d,p);if(o.isPromise(d))return t.schedulePromise(d,p);if(f.isAsyncIterable(d))return i.scheduleAsyncIterable(d,p);if(h.isIterable(d))return n.scheduleIterable(d,p);if(_.isReadableStreamLike(d))return g.scheduleReadableStreamLike(d,p)}throw y.createInvalidObservableTypeError(d)}return Ih.scheduled=a,Ih}var lL;function Zs(){if(lL)return Dh;lL=1,Object.defineProperty(Dh,"__esModule",{value:!0}),Dh.from=void 0;var e=SK(),t=Ft();function r(n,i){return i?e.scheduled(n,i):t.innerFrom(n)}return Dh.from=r,Dh}var dL;function ZI(){if(dL)return Ah;dL=1,Object.defineProperty(Ah,"__esModule",{value:!0}),Ah.of=void 0;var e=Ii(),t=Zs();function r(){for(var n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];var c=e.popScheduler(n);return t.from(n,c)}return Ah.of=r,Ah}var Hh={},fL;function CK(){if(fL)return Hh;fL=1,Object.defineProperty(Hh,"__esModule",{value:!0}),Hh.throwError=void 0;var e=fr(),t=or();function r(n,i){var c=t.isFunction(n)?n:function(){return n},o=function(s){return s.error(c())};return new e.Observable(i?function(s){return i.schedule(o,0,s)}:o)}return Hh.throwError=r,Hh}var mL;function JI(){return mL||(mL=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.observeNotification=e.Notification=e.NotificationKind=void 0;var t=ka(),r=ZI(),n=CK(),i=or();(function(s){s.NEXT="N",s.ERROR="E",s.COMPLETE="C"})(e.NotificationKind||(e.NotificationKind={}));var c=(function(){function s(h,f,y){this.kind=h,this.value=f,this.error=y,this.hasValue=h==="N"}return s.prototype.observe=function(h){return o(this,h)},s.prototype.do=function(h,f,y){var _=this,g=_.kind,a=_.value,d=_.error;return g==="N"?h?.(a):g==="E"?f?.(d):y?.()},s.prototype.accept=function(h,f,y){var _;return i.isFunction((_=h)===null||_===void 0?void 0:_.next)?this.observe(h):this.do(h,f,y)},s.prototype.toObservable=function(){var h=this,f=h.kind,y=h.value,_=h.error,g=f==="N"?r.of(y):f==="E"?n.throwError(function(){return _}):f==="C"?t.EMPTY:0;if(!g)throw new TypeError("Unexpected notification kind "+f);return g},s.createNext=function(h){return new s("N",h)},s.createError=function(h){return new s("E",void 0,h)},s.createComplete=function(){return s.completeNotification},s.completeNotification=new s("C"),s})();e.Notification=c;function o(s,h){var f,y,_,g=s,a=g.kind,d=g.value,p=g.error;if(typeof a!="string")throw new TypeError('Invalid notification, missing "kind"');a==="N"?(f=h.next)===null||f===void 0||f.call(h,d):a==="E"?(y=h.error)===null||y===void 0||y.call(h,p):(_=h.complete)===null||_===void 0||_.call(h)}e.observeNotification=o})(Fx)),Fx}var Wh={},pL;function gre(){if(pL)return Wh;pL=1,Object.defineProperty(Wh,"__esModule",{value:!0}),Wh.isObservable=void 0;var e=fr(),t=or();function r(n){return!!n&&(n instanceof e.Observable||t.isFunction(n.lift)&&t.isFunction(n.subscribe))}return Wh.isObservable=r,Wh}var $h={},Xh={},hL;function Bl(){if(hL)return Xh;hL=1,Object.defineProperty(Xh,"__esModule",{value:!0}),Xh.EmptyError=void 0;var e=El();return Xh.EmptyError=e.createErrorClass(function(t){return function(){t(this),this.name="EmptyError",this.message="no elements in sequence"}}),Xh}var gL;function yre(){if(gL)return $h;gL=1,Object.defineProperty($h,"__esModule",{value:!0}),$h.lastValueFrom=void 0;var e=Bl();function t(r,n){var i=typeof n=="object";return new Promise(function(c,o){var s=!1,h;r.subscribe({next:function(f){h=f,s=!0},error:o,complete:function(){s?c(h):i?c(n.defaultValue):o(new e.EmptyError)}})})}return $h.lastValueFrom=t,$h}var Kh={},yL;function vre(){if(yL)return Kh;yL=1,Object.defineProperty(Kh,"__esModule",{value:!0}),Kh.firstValueFrom=void 0;var e=Bl(),t=vS();function r(n,i){var c=typeof i=="object";return new Promise(function(o,s){var h=new t.SafeSubscriber({next:function(f){o(f),h.unsubscribe()},error:s,complete:function(){c?o(i.defaultValue):s(new e.EmptyError)}});n.subscribe(h)})}return Kh.firstValueFrom=r,Kh}var Yh={},vL;function PK(){if(vL)return Yh;vL=1,Object.defineProperty(Yh,"__esModule",{value:!0}),Yh.ArgumentOutOfRangeError=void 0;var e=El();return Yh.ArgumentOutOfRangeError=e.createErrorClass(function(t){return function(){t(this),this.name="ArgumentOutOfRangeError",this.message="argument out of range"}}),Yh}var Qh={},bL;function TK(){if(bL)return Qh;bL=1,Object.defineProperty(Qh,"__esModule",{value:!0}),Qh.NotFoundError=void 0;var e=El();return Qh.NotFoundError=e.createErrorClass(function(t){return function(n){t(this),this.name="NotFoundError",this.message=n}}),Qh}var Zh={},_L;function xK(){if(_L)return Zh;_L=1,Object.defineProperty(Zh,"__esModule",{value:!0}),Zh.SequenceError=void 0;var e=El();return Zh.SequenceError=e.createErrorClass(function(t){return function(n){t(this),this.name="SequenceError",this.message=n}}),Zh}var Nx={},Jh={},SL;function ew(){if(SL)return Jh;SL=1,Object.defineProperty(Jh,"__esModule",{value:!0}),Jh.isValidDate=void 0;function e(t){return t instanceof Date&&!isNaN(t)}return Jh.isValidDate=e,Jh}var CL;function hT(){return CL||(CL=1,(function(e){Object.defineProperty(e,"__esMo
17dule",{value:!0}),e.timeout=e.TimeoutError=void 0;var t=Di(),r=ew(),n=ft(),i=Ft(),c=El(),o=bt(),s=Qs();e.TimeoutError=c.createErrorClass(function(y){return function(g){g===void 0&&(g=null),y(this),this.message="Timeout has occurred",this.name="TimeoutError",this.info=g}});function h(y,_){var g=r.isValidDate(y)?{first:y}:typeof y=="number"?{each:y}:y,a=g.first,d=g.each,p=g.with,u=p===void 0?f:p,m=g.scheduler,v=m===void 0?_??t.asyncScheduler:m,b=g.meta,P=b===void 0?null:b;if(a==null&&d==null)throw new TypeError("No timeout provided.");return n.operate(function(C,l){var S,T,A=null,x=0,M=function(D){T=s.executeSchedule(l,v,function(){try{S.unsubscribe(),i.innerFrom(u({meta:P,lastValue:A,seen:x})).subscribe(l)}catch(V){l.error(V)}},D)};S=C.subscribe(o.createOperatorSubscriber(l,function(D){T?.unsubscribe(),x++,l.next(A=D),d>0&&M(d)},void 0,void 0,function(){T?.closed||T?.unsubscribe(),A=null})),!x&&M(a!=null?typeof a=="number"?a:+a-v.now():d)})}e.timeout=h;function f(y){throw new e.TimeoutError(y)}})(Nx)),Nx}var eg={},xo={},Ao={},tg={},PL;function Js(){if(PL)return tg;PL=1,Object.defineProperty(tg,"__esModule",{value:!0}),tg.map=void 0;var e=ft(),t=bt();function r(n,i){return e.operate(function(c,o){var s=0;c.subscribe(t.createOperatorSubscriber(o,function(h){o.next(n.call(i,h,s++))}))})}return tg.map=r,tg}var TL;function Rl(){if(TL)return Ao;TL=1;var e=Ao&&Ao.__read||function(o,s){var h=typeof Symbol=="function"&&o[Symbol.iterator];if(!h)return o;var f=h.call(o),y,_=[],g;try{for(;(s===void 0||s-- >0)&&!(y=f.next()).done;)_.push(y.value)}catch(a){g={error:a}}finally{try{y&&!y.done&&(h=f.return)&&h.call(f)}finally{if(g)throw g.error}}return _},t=Ao&&Ao.__spreadArray||function(o,s){for(var h=0,f=s.length,y=o.length;h<f;h++,y++)o[y]=s[h];return o};Object.defineProperty(Ao,"__esModule",{value:!0}),Ao.mapOneOrManyArgs=void 0;var r=Js(),n=Array.isArray;function i(o,s){return n(s)?o.apply(void 0,t([],e(s))):o(s)}function c(o){return r.map(function(s){return i(o,s)})}return Ao.mapOneOrManyArgs=c,Ao}var xL;function AK(){if(xL)return xo;xL=1;var e=xo&&xo.__read||function(f,y){var _=typeof Symbol=="function"&&f[Symbol.iterator];if(!_)return f;var g=_.call(f),a,d=[],p;try{for(;(y===void 0||y-- >0)&&!(a=g.next()).done;)d.push(a.value)}catch(u){p={error:u}}finally{try{a&&!a.done&&(_=g.return)&&_.call(g)}finally{if(p)throw p.error}}return d},t=xo&&xo.__spreadArray||function(f,y){for(var _=0,g=y.length,a=f.length;_<g;_++,a++)f[a]=y[_];return f};Object.defineProperty(xo,"__esModule",{value:!0}),xo.bindCallbackInternals=void 0;var r=ZT(),n=fr(),i=CS(),c=Rl(),o=SS(),s=KI();function h(f,y,_,g){if(_)if(r.isScheduler(_))g=_;else return function(){for(var a=[],d=0;d<arguments.length;d++)a[d]=arguments[d];return h(f,y,g).apply(this,a).pipe(c.mapOneOrManyArgs(_))};return g?function(){for(var a=[],d=0;d<arguments.length;d++)a[d]=arguments[d];return h(f,y).apply(this,a).pipe(i.subscribeOn(g),o.observeOn(g))}:function(){for(var a=this,d=[],p=0;p<arguments.length;p++)d[p]=arguments[p];var u=new s.AsyncSubject,m=!0;return new n.Observable(function(v){var b=u.subscribe(v);if(m){m=!1;var P=!1,C=!1;y.apply(a,t(t([],e(d)),[function(){for(var l=[],S=0;S<arguments.length;S++)l[S]=arguments[S];if(f){var T=l.shift();if(T!=null){u.error(T);return}}u.next(1<l.length?l:l[0]),C=!0,P&&u.complete()}])),C&&u.complete(),P=!0}return b})}}return xo.bindCallbackInternals=h,xo}var AL;function bre(){if(AL)return eg;AL=1,Object.defineProperty(eg,"__esModule",{value:!0}),eg.bindCallback=void 0;var e=AK();function t(r,n,i){return e.bindCallbackInternals(!1,r,n,i)}return eg.bindCallback=t,eg}var rg={},ML;function _re(){if(ML)return rg;ML=1,Object.defineProperty(rg,"__esModule",{value:!0}),rg.bindNodeCallback=void 0;var e=AK();function t(r,n,i){return e.bindCallbackInternals(!0,r,n,i)}return rg.bindNodeCallback=t,rg}var nu={},ng={},DL;function MK(){if(DL)return ng;DL=1,Object.defineProperty(ng,"__esModule",{value:!0}),ng.argsArgArrayOrObject=void 0;var e=Array.isArray,t=Object.getPrototypeOf,r=Object.prototype,n=Object.keys;function i(o){if(o.length===1){var s=o[0];if(e(s))return{args:s,keys:null};if(c(s)){var h=n(s);return{args:h.map(function(f){return s[f]}),keys:h}}}return{args:o,keys:null}}ng.argsArgArrayOrObject=i;function c(o){return o&&typeof o=="object"&&t(o)===r}return ng}var ig={},IL;function DK(){if(IL)return ig;
17IL=1,Object.defineProperty(ig,"__esModule",{value:!0}),ig.createObject=void 0;function e(t,r){return t.reduce(function(n,i,c){return n[i]=r[c],n},{})}return ig.createObject=e,ig}var wL;function tw(){if(wL)return nu;wL=1,Object.defineProperty(nu,"__esModule",{value:!0}),nu.combineLatestInit=nu.combineLatest=void 0;var e=fr(),t=MK(),r=Zs(),n=En(),i=Rl(),c=Ii(),o=DK(),s=bt(),h=Qs();function f(){for(var g=[],a=0;a<arguments.length;a++)g[a]=arguments[a];var d=c.popScheduler(g),p=c.popResultSelector(g),u=t.argsArgArrayOrObject(g),m=u.args,v=u.keys;if(m.length===0)return r.from([],d);var b=new e.Observable(y(m,d,v?function(P){return o.createObject(v,P)}:n.identity));return p?b.pipe(i.mapOneOrManyArgs(p)):b}nu.combineLatest=f;function y(g,a,d){return d===void 0&&(d=n.identity),function(p){_(a,function(){for(var u=g.length,m=new Array(u),v=u,b=u,P=function(l){_(a,function(){var S=r.from(g[l],a),T=!1;S.subscribe(s.createOperatorSubscriber(p,function(A){m[l]=A,T||(T=!0,b--),b||p.next(d(m.slice()))},function(){--v||p.complete()}))},p)},C=0;C<u;C++)P(C)},p)}}nu.combineLatestInit=y;function _(g,a,d){g?h.executeSchedule(d,g,a):a()}return nu}var ag={},og={},sg={},cg={},ug={},VL;function rw(){if(VL)return ug;VL=1,Object.defineProperty(ug,"__esModule",{value:!0}),ug.mergeInternals=void 0;var e=Ft(),t=Qs(),r=bt();function n(i,c,o,s,h,f,y,_){var g=[],a=0,d=0,p=!1,u=function(){p&&!g.length&&!a&&c.complete()},m=function(b){return a<s?v(b):g.push(b)},v=function(b){f&&c.next(b),a++;var P=!1;e.innerFrom(o(b,d++)).subscribe(r.createOperatorSubscriber(c,function(C){h?.(C),f?m(C):c.next(C)},function(){P=!0},void 0,function(){if(P)try{a--;for(var C=function(){var l=g.shift();y?t.executeSchedule(c,y,function(){return v(l)}):v(l)};g.length&&a<s;)C();u()}catch(l){c.error(l)}}))};return i.subscribe(r.createOperatorSubscriber(c,m,function(){p=!0,u()})),function(){_?.()}}return ug.mergeInternals=n,ug}var EL;function ss(){if(EL)return cg;EL=1,Object.defineProperty(cg,"__esModule",{value:!0}),cg.mergeMap=void 0;var e=Js(),t=Ft(),r=ft(),n=rw(),i=or();function c(o,s,h){return h===void 0&&(h=1/0),i.isFunction(s)?c(function(f,y){return e.map(function(_,g){return s(f,_,y,g)})(t.innerFrom(o(f,y)))},h):(typeof s=="number"&&(h=s),r.operate(function(f,y){return n.mergeInternals(f,y,o,h)}))}return cg.mergeMap=c,cg}var BL;function PS(){if(BL)return sg;BL=1,Object.defineProperty(sg,"__esModule",{value:!0}),sg.mergeAll=void 0;var e=ss(),t=En();function r(n){return n===void 0&&(n=1/0),e.mergeMap(t.identity,n)}return sg.mergeAll=r,sg}var RL;function JT(){if(RL)return og;RL=1,Object.defineProperty(og,"__esModule",{value:!0}),og.concatAll=void 0;var e=PS();function t(){return e.mergeAll(1)}return og.concatAll=t,og}var OL;function e2(){if(OL)return ag;OL=1,Object.defineProperty(ag,"__esModule",{value:!0}),ag.concat=void 0;var e=JT(),t=Ii(),r=Zs();function n(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];return e.concatAll()(r.from(i,t.popScheduler(i)))}return ag.concat=n,ag}var lg={},dg={},kL;function t2(){if(kL)return dg;kL=1,Object.defineProperty(dg,"__esModule",{value:!0}),dg.defer=void 0;var e=fr(),t=Ft();function r(n){return new e.Observable(function(i){t.innerFrom(n()).subscribe(i)})}return dg.defer=r,dg}var FL;function Sre(){if(FL)return lg;FL=1,Object.defineProperty(lg,"__esModule",{value:!0}),lg.connectable=void 0;var e=Bn(),t=fr(),r=t2(),n={connector:function(){return new e.Subject},resetOnDisconnect:!0};function i(c,o){o===void 0&&(o=n);var s=null,h=o.connector,f=o.resetOnDisconnect,y=f===void 0?!0:f,_=h(),g=new t.Observable(function(a){return _.subscribe(a)});return g.connect=function(){return(!s||s.closed)&&(s=r.defer(function(){return c}).subscribe(_),y&&s.add(function(){return _=h()})),s},g}return lg.connectable=i,lg}var fg={},LL;function Cre(){if(LL)return fg;LL=1,Object.defineProperty(fg,"__esModule",{value:!0}),fg.forkJoin=void 0;var e=fr(),t=MK(),r=Ft(),n=Ii(),i=bt(),c=Rl(),o=DK();function s(){for(var h=[],f=0;f<arguments.length;f++)h[f]=arguments[f];var y=n.popResultSelector(h),_=t.argsArgArrayOrObject(h),g=_.args,a=_.keys,d=new e.Observable(function(p){var u=g.length;if(!u){p.complete();return}for(var m=new Array(u),v=u,b=u,P=function(l){var S=!1;r.innerFrom(g[l]).subscribe(i.createOperatorSubscriber(p,function(T){S||(S=!0,b--),m[l]=T},function(){return v--},void 0,function(){(!v||!S)&&(b||p.next(a?o.createObject(a,m):m),p.complete())}))},C=0;C<u;
17C++)P(C)});return y?d.pipe(c.mapOneOrManyArgs(y)):d}return fg.forkJoin=s,fg}var iu={},NL;function Pre(){if(NL)return iu;NL=1;var e=iu&&iu.__read||function(p,u){var m=typeof Symbol=="function"&&p[Symbol.iterator];if(!m)return p;var v=m.call(p),b,P=[],C;try{for(;(u===void 0||u-- >0)&&!(b=v.next()).done;)P.push(b.value)}catch(l){C={error:l}}finally{try{b&&!b.done&&(m=v.return)&&m.call(v)}finally{if(C)throw C.error}}return P};Object.defineProperty(iu,"__esModule",{value:!0}),iu.fromEvent=void 0;var t=Ft(),r=fr(),n=ss(),i=YI(),c=or(),o=Rl(),s=["addListener","removeListener"],h=["addEventListener","removeEventListener"],f=["on","off"];function y(p,u,m,v){if(c.isFunction(m)&&(v=m,m=void 0),v)return y(p,u,m).pipe(o.mapOneOrManyArgs(v));var b=e(d(p)?h.map(function(l){return function(S){return p[l](u,S,m)}}):g(p)?s.map(_(p,u)):a(p)?f.map(_(p,u)):[],2),P=b[0],C=b[1];if(!P&&i.isArrayLike(p))return n.mergeMap(function(l){return y(l,u,m)})(t.innerFrom(p));if(!P)throw new TypeError("Invalid event target");return new r.Observable(function(l){var S=function(){for(var T=[],A=0;A<arguments.length;A++)T[A]=arguments[A];return l.next(1<T.length?T:T[0])};return P(S),function(){return C(S)}})}iu.fromEvent=y;function _(p,u){return function(m){return function(v){return p[m](u,v)}}}function g(p){return c.isFunction(p.addListener)&&c.isFunction(p.removeListener)}function a(p){return c.isFunction(p.on)&&c.isFunction(p.off)}function d(p){return c.isFunction(p.addEventListener)&&c.isFunction(p.removeEventListener)}return iu}var mg={},qL;function Tre(){if(qL)return mg;qL=1,Object.defineProperty(mg,"__esModule",{value:!0}),mg.fromEventPattern=void 0;var e=fr(),t=or(),r=Rl();function n(i,c,o){return o?n(i,c).pipe(r.mapOneOrManyArgs(o)):new e.Observable(function(s){var h=function(){for(var y=[],_=0;_<arguments.length;_++)y[_]=arguments[_];return s.next(y.length===1?y[0]:y)},f=i(h);return t.isFunction(c)?function(){return c(h,f)}:void 0})}return mg.fromEventPattern=n,mg}var au={},UL;function xre(){if(UL)return au;UL=1;var e=au&&au.__generator||function(o,s){var h={label:0,sent:function(){if(_[0]&1)throw _[1];return _[1]},trys:[],ops:[]},f,y,_,g;return g={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(g[Symbol.iterator]=function(){return this}),g;function a(p){return function(u){return d([p,u])}}function d(p){if(f)throw new TypeError("Generator is already executing.");for(;h;)try{if(f=1,y&&(_=p[0]&2?y.return:p[0]?y.throw||((_=y.return)&&_.call(y),0):y.next)&&!(_=_.call(y,p[1])).done)return _;switch(y=0,_&&(p=[p[0]&2,_.value]),p[0]){case 0:case 1:_=p;break;case 4:return h.label++,{value:p[1],done:!1};case 5:h.label++,y=p[1],p=[0];continue;case 7:p=h.ops.pop(),h.trys.pop();continue;default:if(_=h.trys,!(_=_.length>0&&_[_.length-1])&&(p[0]===6||p[0]===2)){h=0;continue}if(p[0]===3&&(!_||p[1]>_[0]&&p[1]<_[3])){h.label=p[1];break}if(p[0]===6&&h.label<_[1]){h.label=_[1],_=p;break}if(_&&h.label<_[2]){h.label=_[2],h.ops.push(p);break}_[2]&&h.ops.pop(),h.trys.pop();continue}p=s.call(o,h)}catch(u){p=[6,u],y=0}finally{f=_=0}if(p[0]&5)throw p[1];return{value:p[0]?p[1]:void 0,done:!0}}};Object.defineProperty(au,"__esModule",{value:!0}),au.generate=void 0;var t=En(),r=ZT(),n=t2(),i=bK();function c(o,s,h,f,y){var _,g,a,d;arguments.length===1?(_=o,d=_.initialState,s=_.condition,h=_.iterate,g=_.resultSelector,a=g===void 0?t.identity:g,y=_.scheduler):(d=o,!f||r.isScheduler(f)?(a=t.identity,y=f):a=f);function p(){var u;return e(this,function(m){switch(m.label){case 0:u=d,m.label=1;case 1:return!s||s(u)?[4,a(u)]:[3,4];case 2:m.sent(),m.label=3;case 3:return u=h(u),[3,1];case 4:return[2]}})}return n.defer(y?function(){return i.scheduleIterable(p(),y)}:p)}return au.generate=c,au}var pg={},jL;function Are(){if(jL)return pg;
17jL=1,Object.defineProperty(pg,"__esModule",{value:!0}),pg.iif=void 0;var e=t2();function t(r,n,i){return e.defer(function(){return r()?n:i})}return pg.iif=t,pg}var hg={},gg={},GL;function Ol(){if(GL)return gg;GL=1,Object.defineProperty(gg,"__esModule",{value:!0}),gg.timer=void 0;var e=fr(),t=Di(),r=ZT(),n=ew();function i(c,o,s){c===void 0&&(c=0),s===void 0&&(s=t.async);var h=-1;return o!=null&&(r.isScheduler(o)?s=o:h=o),new e.Observable(function(f){var y=n.isValidDate(c)?+c-s.now():c;y<0&&(y=0);var _=0;return s.schedule(function(){f.closed||(f.next(_++),0<=h?this.schedule(void 0,h):f.complete())},y)})}return gg.timer=i,gg}var zL;function IK(){if(zL)return hg;zL=1,Object.defineProperty(hg,"__esModule",{value:!0}),hg.interval=void 0;var e=Di(),t=Ol();function r(n,i){return n===void 0&&(n=0),i===void 0&&(i=e.asyncScheduler),n<0&&(n=0),t.timer(n,n,i)}return hg.interval=r,hg}var yg={},HL;function Mre(){if(HL)return yg;HL=1,Object.defineProperty(yg,"__esModule",{value:!0}),yg.merge=void 0;var e=PS(),t=Ft(),r=ka(),n=Ii(),i=Zs();function c(){for(var o=[],s=0;s<arguments.length;s++)o[s]=arguments[s];var h=n.popScheduler(o),f=n.popNumber(o,1/0),y=o;return y.length?y.length===1?t.innerFrom(y[0]):e.mergeAll(f)(i.from(y,h)):r.EMPTY}return yg.merge=c,yg}var qx={},WL;function $L(){return WL||(WL=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.never=e.NEVER=void 0;var t=fr(),r=Vn();e.NEVER=new t.Observable(r.noop);function n(){return e.NEVER}e.never=n})(qx)),qx}var vg={},bg={},XL;function Nf(){if(XL)return bg;XL=1,Object.defineProperty(bg,"__esModule",{value:!0}),bg.argsOrArgArray=void 0;var e=Array.isArray;function t(r){return r.length===1&&e(r[0])?r[0]:r}return bg.argsOrArgArray=t,bg}var KL;function wK(){if(KL)return vg;KL=1,Object.defineProperty(vg,"__esModule",{value:!0}),vg.onErrorResumeNext=void 0;
17var e=fr(),t=Nf(),r=bt(),n=Vn(),i=Ft();function c(){for(var o=[],s=0;s<arguments.length;s++)o[s]=arguments[s];var h=t.argsOrArgArray(o);return new e.Observable(function(f){var y=0,_=function(){if(y<h.length){var g=void 0;try{g=i.innerFrom(h[y++])}catch{_();return}var a=new r.OperatorSubscriber(f,void 0,n.noop,n.noop);g.subscribe(a),a.add(_)}else f.complete()};_()})}return vg.onErrorResumeNext=c,vg}var _g={},YL;function Dre(){if(YL)return _g;YL=1,Object.defineProperty(_g,"__esModule",{value:!0}),_g.pairs=void 0;var e=Zs();function t(r,n){return e.from(Object.entries(r),n)}return _g.pairs=t,_g}var Sg={},Cg={},QL;function VK(){if(QL)return Cg;QL=1,Object.defineProperty(Cg,"__esModule",{value:!0}),Cg.not=void 0;function e(t,r){return function(n,i){return!t.call(r,n,i)}}return Cg.not=e,Cg}var Pg={},ZL;function ec(){if(ZL)return Pg;ZL=1,Object.defineProperty(Pg,"__esModule",{value:!0}),Pg.filter=void 0;var e=ft(),t=bt();function r(n,i){return e.operate(function(c,o){var s=0;c.subscribe(t.createOperatorSubscriber(o,function(h){return n.call(i,h,s++)&&o.next(h)}))})}return Pg.filter=r,Pg}var JL;function Ire(){if(JL)return Sg;JL=1,Object.defineProperty(Sg,"__esModule",{value:!0}),Sg.partition=void 0;var e=VK(),t=ec(),r=Ft();function n(i,c,o){return[t.filter(c,o)(r.innerFrom(i)),t.filter(e.not(c,o))(r.innerFrom(i))]}return Sg.partition=n,Sg}var ou={},e4;function EK(){if(e4)return ou;e4=1,Object.defineProperty(ou,"__esModule",{value:!0}),ou.raceInit=ou.race=void 0;var e=fr(),t=Ft(),r=Nf(),n=bt();function i(){for(var o=[],s=0;s<arguments.length;s++)o[s]=arguments[s];return o=r.argsOrArgArray(o),o.length===1?t.innerFrom(o[0]):new e.Observable(c(o))}ou.race=i;function c(o){return function(s){for(var h=[],f=function(_){h.push(t.innerFrom(o[_]).subscribe(n.createOperatorSubscriber(s,function(g){if(h){for(var a=0;a<h.length;a++)a!==_&&h[a].unsubscribe();h=null}s.next(g)})))},y=0;h&&!s.closed&&y<o.length;y++)f(y)}}return ou.raceInit=c,ou}var Tg={},t4;function wre(){if(t4)return Tg;t4=1,Object.defineProperty(Tg,"__esModule",{value:!0}),Tg.range=void 0;var e=fr(),t=ka();function r(n,i,c){if(i==null&&(i=n,n=0),i<=0)return t.EMPTY;var o=i+n;return new e.Observable(c?function(s){var h=n;return c.schedule(function(){h<o?(s.next(h++),this.schedule()):s.complete()})}:function(s){for(var h=n;h<o&&!s.closed;)s.next(h++);s.complete()})}return Tg.range=r,Tg}var xg={},r4;function Vre(){if(r4)return xg;r4=1,Object.defineProperty(xg,"__esModule",{value:!0}),xg.using=void 0;var e=fr(),t=Ft(),r=ka();function n(i,c){return new e.Observable(function(o){var s=i(),h=c(s),f=h?t.innerFrom(h):r.EMPTY;return f.subscribe(o),function(){s&&s.unsubscribe()}})}return xg.using=n,xg}var Mo={},n4;function nw(){if(n4)return Mo;n4=1;var e=Mo&&Mo.__read||function(f,y){var _=typeof Symbol=="function"&&f[Symbol.iterator];if(!_)return f;var g=_.call(f),a,d=[],p;try{for(;(y===void 0||y-- >0)&&!(a=g.next()).done;)d.push(a.value)}catch(u){p={error:u}}finally{try{a&&!a.done&&(_=g.return)&&_.call(g)}finally{if(p)throw p.error}}return d},t=Mo&&Mo.__spreadArray||function(f,y){for(var _=0,g=y.length,a=f.length;_<g;_++,a++)f[a]=y[_];return f};Object.defineProperty(Mo,"__esModule",{value:!0}),Mo.zip=void 0;var r=fr(),n=Ft(),i=Nf(),c=ka(),o=bt(),s=Ii();function h(){for(var f=[],y=0;y<arguments.length;y++)f[y]=arguments[y];var _=s.popResultSelector(f),g=i.argsOrArgArray(f);return g.length?new r.Observable(function(a){var d=g.map(function(){return[]}),p=g.map(function(){return!1});a.add(function(){d=p=null});for(var u=function(v){n.innerFrom(g[v]).subscribe(o.createOperatorSubscriber(a,function(b){if(d[v].push(b),d.every(function(C){return C.length})){var P=d.map(function(C){return C.shift()});a.next(_?_.apply(void 0,t([],e(P))):P),d.some(function(C,l){return!C.length&&p[l]})&&a.complete()}},function(){p[v]=!0,!d[v].length&&a.complete()}))},m=0;!a.closed&&m<g.length;m++)u(m);return function(){d=p=null}}):c.EMPTY}return Mo.zip=h,Mo}var Ux={},i4;function Ere(){return i4||(i4=1,Object.defineProperty(Ux,"__esModule",{value:!0})),Ux}var Ag={},a4;function iw(){if(a4)return Ag;
17a4=1,Object.defineProperty(Ag,"__esModule",{value:!0}),Ag.audit=void 0;var e=ft(),t=Ft(),r=bt();function n(i){return e.operate(function(c,o){var s=!1,h=null,f=null,y=!1,_=function(){if(f?.unsubscribe(),f=null,s){s=!1;var a=h;h=null,o.next(a)}y&&o.complete()},g=function(){f=null,y&&o.complete()};c.subscribe(r.createOperatorSubscriber(o,function(a){s=!0,h=a,f||t.innerFrom(i(a)).subscribe(f=r.createOperatorSubscriber(o,_,g))},function(){y=!0,(!s||!f||f.closed)&&o.complete()}))})}return Ag.audit=n,Ag}var Mg={},o4;function BK(){if(o4)return Mg;o4=1,Object.defineProperty(Mg,"__esModule",{value:!0}),Mg.auditTime=void 0;var e=Di(),t=iw(),r=Ol();function n(i,c){return c===void 0&&(c=e.asyncScheduler),t.audit(function(){return r.timer(i,c)})}return Mg.auditTime=n,Mg}var Dg={},s4;function RK(){if(s4)return Dg;s4=1,Object.defineProperty(Dg,"__esModule",{value:!0}),Dg.buffer=void 0;var e=ft(),t=Vn(),r=bt(),n=Ft();function i(c){return e.operate(function(o,s){var h=[];return o.subscribe(r.createOperatorSubscriber(s,function(f){return h.push(f)},function(){s.next(h),s.complete()})),n.innerFrom(c).subscribe(r.createOperatorSubscriber(s,function(){var f=h;h=[],s.next(f)},t.noop)),function(){h=null}})}return Dg.buffer=i,Dg}var su={},c4;function OK(){if(c4)return su;c4=1;var e=su&&su.__values||function(c){var o=typeof Symbol=="function"&&Symbol.iterator,s=o&&c[o],h=0;if(s)return s.call(c);if(c&&typeof c.length=="number")return{next:function(){return c&&h>=c.length&&(c=void 0),{value:c&&c[h++],done:!c}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(su,"__esModule",{value:!0}),su.bufferCount=void 0;var t=ft(),r=bt(),n=Ys();function i(c,o){return o===void 0&&(o=null),o=o??c,t.operate(function(s,h){var f=[],y=0;s.subscribe(r.createOperatorSubscriber(h,function(_){var g,a,d,p,u=null;y++%o===0&&f.push([]);try{for(var m=e(f),v=m.next();!v.done;v=m.next()){var b=v.value;b.push(_),c<=b.length&&(u=u??[],u.push(b))}}catch(l){g={error:l}}finally{try{v&&!v.done&&(a=m.return)&&a.call(m)}finally{if(g)throw g.error}}if(u)try{for(var P=e(u),C=P.next();!C.done;C=P.next()){var b=C.value;n.arrRemove(f,b),h.next(b)}}catch(l){d={error:l}}finally{try{C&&!C.done&&(p=P.return)&&p.call(P)}finally{if(d)throw d.error}}},function(){var _,g;try{for(var a=e(f),d=a.next();!d.done;d=a.next()){var p=d.value;h.next(p)}}catch(u){_={error:u}}finally{try{d&&!d.done&&(g=a.return)&&g.call(a)}finally{if(_)throw _.error}}h.complete()},void 0,function(){f=null}))})}return su.bufferCount=i,su}var cu={},u4;function kK(){if(u4)return cu;u4=1;var e=cu&&cu.__values||function(f){var y=typeof Symbol=="function"&&Symbol.iterator,_=y&&f[y],g=0;if(_)return _.call(f);if(f&&typeof f.length=="number")return{next:function(){return f&&g>=f.length&&(f=void 0),{value:f&&f[g++],done:!f}}};throw new TypeError(y?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(cu,"__esModule",{value:!0}),cu.bufferTime=void 0;var t=Ji(),r=ft(),n=bt(),i=Ys(),c=Di(),o=Ii(),s=Qs();function h(f){for(var y,_,g=[],a=1;a<arguments.length;a++)g[a-1]=arguments[a];var d=(y=o.popScheduler(g))!==null&&y!==void 0?y:c.asyncScheduler,p=(_=g[0])!==null&&_!==void 0?_:null,u=g[1]||1/0;return r.operate(function(m,v){var b=[],P=!1,C=function(T){var A=T.buffer,x=T.subs;x.unsubscribe(),i.arrRemove(b,T),v.next(A),P&&l()},l=function(){if(b){var T=new t.Subscription;v.add(T);var A=[],x={buffer:A,subs:T};b.push(x),s.executeSchedule(T,d,function(){return C(x)},f)}};p!==null&&p>=0?s.executeSchedule(v,d,l,p,!0):P=!0,l();var S=n.createOperatorSubscriber(v,function(T){var A,x,M=b.slice();try{for(var D=e(M),V=D.next();!V.done;V=D.next()){var R=V.value,E=R.buffer;E.push(T),u<=E.length&&C(R)}}catch(I){A={error:I}}finally{try{V&&!V.done&&(x=D.return)&&x.call(D)}finally{if(A)throw A.error}}},function(){for(;b?.length;)v.next(b.shift().buffer);S?.unsubscribe(),v.complete(),v.unsubscribe()},void 0,function(){return b=null});m.subscribe(S)})}return cu.bufferTime=h,cu}var uu={},l4;function FK(){if(l4)return uu;l4=1;var e=uu&&uu.__values||function(h){var f=typeof Symbol=="function"&&Symbol.iterator,y=f&&h[f],_=0;
17if(y)return y.call(h);if(h&&typeof h.length=="number")return{next:function(){return h&&_>=h.length&&(h=void 0),{value:h&&h[_++],done:!h}}};throw new TypeError(f?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(uu,"__esModule",{value:!0}),uu.bufferToggle=void 0;var t=Ji(),r=ft(),n=Ft(),i=bt(),c=Vn(),o=Ys();function s(h,f){return r.operate(function(y,_){var g=[];n.innerFrom(h).subscribe(i.createOperatorSubscriber(_,function(a){var d=[];g.push(d);var p=new t.Subscription,u=function(){o.arrRemove(g,d),_.next(d),p.unsubscribe()};p.add(n.innerFrom(f(a)).subscribe(i.createOperatorSubscriber(_,u,c.noop)))},c.noop)),y.subscribe(i.createOperatorSubscriber(_,function(a){var d,p;try{for(var u=e(g),m=u.next();!m.done;m=u.next()){var v=m.value;v.push(a)}}catch(b){d={error:b}}finally{try{m&&!m.done&&(p=u.return)&&p.call(u)}finally{if(d)throw d.error}}},function(){for(;g.length>0;)_.next(g.shift());_.complete()}))})}return uu.bufferToggle=s,uu}var Ig={},d4;function LK(){if(d4)return Ig;d4=1,Object.defineProperty(Ig,"__esModule",{value:!0}),Ig.bufferWhen=void 0;var e=ft(),t=Vn(),r=bt(),n=Ft();function i(c){return e.operate(function(o,s){var h=null,f=null,y=function(){f?.unsubscribe();var _=h;h=[],_&&s.next(_),n.innerFrom(c()).subscribe(f=r.createOperatorSubscriber(s,y,t.noop))};y(),o.subscribe(r.createOperatorSubscriber(s,function(_){return h?.push(_)},function(){h&&s.next(h),s.complete()},void 0,function(){return h=f=null}))})}return Ig.bufferWhen=i,Ig}var wg={},f4;function NK(){if(f4)return wg;f4=1,Object.defineProperty(wg,"__esModule",{value:!0}),wg.catchError=void 0;var e=Ft(),t=bt(),r=ft();function n(i){return r.operate(function(c,o){var s=null,h=!1,f;s=c.subscribe(t.createOperatorSubscriber(o,void 0,void 0,function(y){f=e.innerFrom(i(y,n(i)(c))),s?(s.unsubscribe(),s=null,f.subscribe(o)):h=!0})),h&&(s.unsubscribe(),s=null,f.subscribe(o))})}return wg.catchError=n,wg}var Vg={},Eg={},Bg={},Rg={},Og={},kg={},m4;function qK(){if(m4)return kg;m4=1,Object.defineProperty(kg,"__esModule",{value:!0}),kg.scanInternals=void 0;var e=bt();function t(r,n,i,c,o){return function(s,h){var f=i,y=n,_=0;s.subscribe(e.createOperatorSubscriber(h,function(g){var a=_++;y=f?r(y,g,a):(f=!0,g),c&&h.next(y)},o&&(function(){f&&h.next(y),h.complete()})))}}return kg.scanInternals=t,kg}var p4;function qf(){if(p4)return Og;p4=1,Object.defineProperty(Og,"__esModule",{value:!0}),Og.reduce=void 0;var e=qK(),t=ft();function r(n,i){return t.operate(e.scanInternals(n,i,arguments.length>=2,!1,!0))}return Og.reduce=r,Og}var h4;function aw(){if(h4)return Rg;h4=1,Object.defineProperty(Rg,"__esModule",{value:!0}),Rg.toArray=void 0;var e=qf(),t=ft(),r=function(i,c){return i.push(c),i};function n(){return t.operate(function(i,c){e.reduce(r,[])(i).subscribe(c)})}return Rg.toArray=n,Rg}var g4;function UK(){if(g4)return Bg;g4=1,Object.defineProperty(Bg,"__esModule",{value:!0}),Bg.joinAllInternals=void 0;var e=En(),t=Rl(),r=YT(),n=ss(),i=aw();function c(o,s){return r.pipe(i.toArray(),n.mergeMap(function(h){return o(h)}),s?t.mapOneOrManyArgs(s):e.identity)}return Bg.joinAllInternals=c,Bg}var y4;function ow(){if(y4)return Eg;y4=1,Object.defineProperty(Eg,"__esModule",{value:!0}),Eg.combineLatestAll=void 0;var e=tw(),t=UK();function r(n){return t.joinAllInternals(e.combineLatest,n)}return Eg.combineLatestAll=r,Eg}var v4;function jK(){if(v4)return Vg;v4=1,Object.defineProperty(Vg,"__esModule",{value:!0}),Vg.combineAll=void 0;var e=ow();return Vg.combineAll=e.combineLatestAll,Vg}var Do={},Io={},b4;function GK(){if(b4)return Io;b4=1;var e=Io&&Io.__read||function(f,y){var _=typeof Symbol=="function"&&f[Symbol.iterator];if(!_)return f;var g=_.call(f),a,d=[],p;try{for(;(y===void 0||y-- >0)&&!(a=g.next()).done;)d.push(a.value)}catch(u){p={error:u}}finally{try{a&&!a.done&&(_=g.return)&&_.call(g)}finally{if(p)throw p.error}}return d},t=Io&&Io.__spreadArray||function(f,y){for(var _=0,g=y.length,a=f.length;_<g;_++,a++)f[a]=y[_];return f};Object.defineProperty(Io,"__esModule",{value:!0}),Io.combineLatest=void 0;var r=tw(),n=ft(),i=Nf(),c=Rl(),o=YT(),s=Ii();function h(){for(var f=[],y=0;y<arguments.length;y++)f[y]=arguments[y];var _=s.popResultSelector(f);return _?o.pipe(h.apply(void 0,t([],e(f))),c.mapOneOrManyArgs(_)):n.operate(function(g,a){r.combineLatestInit(t([g],e(i.argsOrArgArray(f))))(a)})}return Io.combineLatest=h,Io}var _4;function zK(){if(_4)return Do;_4=1;var e=Do&&Do.__read||function(i,c){var o=typeof Symbol=="function"&&i[Symbol.iterator];if(!o)return i;var s=o.call(i),h,f=[],y;try{for(;(c===void 0||c-- >0)&&!(h=s.next()).done;)f.push(h.value)}catch(_){y={error:_}}
17finally{try{h&&!h.done&&(o=s.return)&&o.call(s)}finally{if(y)throw y.error}}return f},t=Do&&Do.__spreadArray||function(i,c){for(var o=0,s=c.length,h=i.length;o<s;o++,h++)i[h]=c[o];return i};Object.defineProperty(Do,"__esModule",{value:!0}),Do.combineLatestWith=void 0;var r=GK();function n(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];return r.combineLatest.apply(void 0,t([],e(i)))}return Do.combineLatestWith=n,Do}var Fg={},S4;function sw(){if(S4)return Fg;S4=1,Object.defineProperty(Fg,"__esModule",{value:!0}),Fg.concatMap=void 0;var e=ss(),t=or();function r(n,i){return t.isFunction(i)?e.mergeMap(n,i,1):e.mergeMap(n,1)}return Fg.concatMap=r,Fg}var Lg={},C4;function HK(){if(C4)return Lg;C4=1,Object.defineProperty(Lg,"__esModule",{value:!0}),Lg.concatMapTo=void 0;var e=sw(),t=or();function r(n,i){return t.isFunction(i)?e.concatMap(function(){return n},i):e.concatMap(function(){return n})}return Lg.concatMapTo=r,Lg}var wo={},Vo={},P4;function WK(){if(P4)return Vo;P4=1;var e=Vo&&Vo.__read||function(s,h){var f=typeof Symbol=="function"&&s[Symbol.iterator];if(!f)return s;var y=f.call(s),_,g=[],a;try{for(;(h===void 0||h-- >0)&&!(_=y.next()).done;)g.push(_.value)}catch(d){a={error:d}}finally{try{_&&!_.done&&(f=y.return)&&f.call(y)}finally{if(a)throw a.error}}return g},t=Vo&&Vo.__spreadArray||function(s,h){for(var f=0,y=h.length,_=s.length;f<y;f++,_++)s[_]=h[f];return s};Object.defineProperty(Vo,"__esModule",{value:!0}),Vo.concat=void 0;var r=ft(),n=JT(),i=Ii(),c=Zs();function o(){for(var s=[],h=0;h<arguments.length;h++)s[h]=arguments[h];var f=i.popScheduler(s);return r.operate(function(y,_){n.concatAll()(c.from(t([y],e(s)),f)).subscribe(_)})}return Vo.concat=o,Vo}var T4;function $K(){if(T4)return wo;T4=1;var e=wo&&wo.__read||function(i,c){var o=typeof Symbol=="function"&&i[Symbol.iterator];if(!o)return i;var s=o.call(i),h,f=[],y;try{for(;(c===void 0||c-- >0)&&!(h=s.next()).done;)f.push(h.value)}catch(_){y={error:_}}finally{try{h&&!h.done&&(o=s.return)&&o.call(s)}finally{if(y)throw y.error}}return f},t=wo&&wo.__spreadArray||function(i,c){for(var o=0,s=c.length,h=i.length;o<s;o++,h++)i[h]=c[o];return i};Object.defineProperty(wo,"__esModule",{value:!0}),wo.concatWith=void 0;var r=WK();function n(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];return r.concat.apply(void 0,t([],e(i)))}return wo.concatWith=n,wo}var Ng={},qg={},x4;function Bre(){if(x4)return qg;x4=1,Object.defineProperty(qg,"__esModule",{value:!0}),qg.fromSubscribable=void 0;var e=fr();function t(r){return new e.Observable(function(n){return r.subscribe(n)})}return qg.fromSubscribable=t,qg}var A4;function r2(){if(A4)return Ng;A4=1,Object.defineProperty(Ng,"__esModule",{value:!0}),Ng.connect=void 0;var e=Bn(),t=Ft(),r=ft(),n=Bre(),i={connector:function(){return new e.Subject}};function c(o,s){s===void 0&&(s=i);var h=s.connector;return r.operate(function(f,y){var _=h();t.innerFrom(o(n.fromSubscribable(_))).subscribe(y),y.add(f.subscribe(_))})}return Ng.connect=c,Ng}var Ug={},M4;function XK(){if(M4)return Ug;M4=1,Object.defineProperty(Ug,"__esModule",{value:!0}),Ug.count=void 0;var e=qf();function t(r){return e.reduce(function(n,i,c){return!r||r(i,c)?n+1:n},0)}return Ug.count=t,Ug}var jg={},D4;function KK(){if(D4)return jg;D4=1,Object.defineProperty(jg,"__esModule",{value:!0}),jg.debounce=void 0;var e=ft(),t=Vn(),r=bt(),n=Ft();function i(c){return e.operate(function(o,s){var h=!1,f=null,y=null,_=function(){if(y?.unsubscribe(),y=null,h){h=!1;var g=f;f=null,s.next(g)}};o.subscribe(r.createOperatorSubscriber(s,function(g){y?.unsubscribe(),h=!0,f=g,y=r.createOperatorSubscriber(s,_,t.noop),n.innerFrom(c(g)).subscribe(y)},function(){_(),s.complete()},void 0,function(){f=y=null}))})}return jg.debounce=i,jg}var Gg={},I4;function YK(){if(I4)return Gg;I4=1,Object.defineProperty(Gg,"__esModule",{value:!0}),Gg.debounceTime=void 0;var e=Di(),t=ft(),r=bt();function n(i,c){return c===void 0&&(c=e.asyncScheduler),t.operate(function(o,s){var h=null,f=null,y=null,_=function(){if(h){h.unsubscribe(),h=null;var a=f;f=null,s.next(a)}};function g(){var a=y+i,d=c.now();if(d<a){h=this.schedule(void 0,a-d),s.add(h);return}_()}
17o.subscribe(r.createOperatorSubscriber(s,function(a){f=a,y=c.now(),h||(h=c.schedule(g,i),s.add(h))},function(){_(),s.complete()},void 0,function(){f=h=null}))})}return Gg.debounceTime=n,Gg}var zg={},w4;function TS(){if(w4)return zg;w4=1,Object.defineProperty(zg,"__esModule",{value:!0}),zg.defaultIfEmpty=void 0;var e=ft(),t=bt();function r(n){return e.operate(function(i,c){var o=!1;i.subscribe(t.createOperatorSubscriber(c,function(s){o=!0,c.next(s)},function(){o||c.next(n),c.complete()}))})}return zg.defaultIfEmpty=r,zg}var Hg={},Wg={},$g={},V4;function xS(){if(V4)return $g;V4=1,Object.defineProperty($g,"__esModule",{value:!0}),$g.take=void 0;var e=ka(),t=ft(),r=bt();function n(i){return i<=0?function(){return e.EMPTY}:t.operate(function(c,o){var s=0;c.subscribe(r.createOperatorSubscriber(o,function(h){++s<=i&&(o.next(h),i<=s&&o.complete())}))})}return $g.take=n,$g}var Xg={},E4;function cw(){if(E4)return Xg;E4=1,Object.defineProperty(Xg,"__esModule",{value:!0}),Xg.ignoreElements=void 0;var e=ft(),t=bt(),r=Vn();function n(){return e.operate(function(i,c){i.subscribe(t.createOperatorSubscriber(c,r.noop))})}return Xg.ignoreElements=n,Xg}var Kg={},B4;function uw(){if(B4)return Kg;B4=1,Object.defineProperty(Kg,"__esModule",{value:!0}),Kg.mapTo=void 0;var e=Js();function t(r){return e.map(function(){return r})}return Kg.mapTo=t,Kg}var R4;function lw(){if(R4)return Wg;R4=1,Object.defineProperty(Wg,"__esModule",{value:!0}),Wg.delayWhen=void 0;var e=e2(),t=xS(),r=cw(),n=uw(),i=ss(),c=Ft();function o(s,h){return h?function(f){return e.concat(h.pipe(t.take(1),r.ignoreElements()),f.pipe(o(s)))}:i.mergeMap(function(f,y){return c.innerFrom(s(f,y)).pipe(t.take(1),n.mapTo(f))})}return Wg.delayWhen=o,Wg}var O4;function QK(){if(O4)return Hg;
17O4=1,Object.defineProperty(Hg,"__esModule",{value:!0}),Hg.delay=void 0;var e=Di(),t=lw(),r=Ol();function n(i,c){c===void 0&&(c=e.asyncScheduler);var o=r.timer(i,c);return t.delayWhen(function(){return o})}return Hg.delay=n,Hg}var Yg={},k4;function ZK(){if(k4)return Yg;k4=1,Object.defineProperty(Yg,"__esModule",{value:!0}),Yg.dematerialize=void 0;var e=JI(),t=ft(),r=bt();function n(){return t.operate(function(i,c){i.subscribe(r.createOperatorSubscriber(c,function(o){return e.observeNotification(o,c)}))})}return Yg.dematerialize=n,Yg}var Qg={},F4;function JK(){if(F4)return Qg;F4=1,Object.defineProperty(Qg,"__esModule",{value:!0}),Qg.distinct=void 0;var e=ft(),t=bt(),r=Vn(),n=Ft();function i(c,o){return e.operate(function(s,h){var f=new Set;s.subscribe(t.createOperatorSubscriber(h,function(y){var _=c?c(y):y;f.has(_)||(f.add(_),h.next(y))})),o&&n.innerFrom(o).subscribe(t.createOperatorSubscriber(h,function(){return f.clear()},r.noop))})}return Qg.distinct=i,Qg}var Zg={},L4;function dw(){if(L4)return Zg;L4=1,Object.defineProperty(Zg,"__esMo
17dule",{value:!0}),Zg.distinctUntilChanged=void 0;var e=En(),t=ft(),r=bt();function n(c,o){return o===void 0&&(o=e.identity),c=c??i,t.operate(function(s,h){var f,y=!0;s.subscribe(r.createOperatorSubscriber(h,function(_){var g=o(_);(y||!c(f,g))&&(y=!1,f=g,h.next(_))}))})}Zg.distinctUntilChanged=n;function i(c,o){return c===o}return Zg}var Jg={},N4;function eY(){if(N4)return Jg;N4=1,Object.defineProperty(Jg,"__esModule",{value:!0}),Jg.distinctUntilKeyChanged=void 0;var e=dw();function t(r,n){return e.distinctUntilChanged(function(i,c){return n?n(i[r],c[r]):i[r]===c[r]})}return Jg.distinctUntilKeyChanged=t,Jg}var e0={},t0={},q4;function AS(){if(q4)return t0;q4=1,Object.defineProperty(t0,"__esModule",{value:!0}),t0.throwIfEmpty=void 0;var e=Bl(),t=ft(),r=bt();function n(c){return c===void 0&&(c=i),t.operate(function(o,s){var h=!1;o.subscribe(r.createOperatorSubscriber(s,function(f){h=!0,s.next(f)},function(){return h?s.complete():s.error(c())}))})}t0.throwIfEmpty=n;function i(){return new e.EmptyError}return t0}var U4;function tY(){if(U4)return e0;U4=1,Object.defineProperty(e0,"__esModule",{value:!0}),e0.elementAt=void 0;var e=PK(),t=ec(),r=AS(),n=TS(),i=xS();function c(o,s){if(o<0)throw new e.ArgumentOutOfRangeError;var h=arguments.length>=2;return function(f){return f.pipe(t.filter(function(y,_){return _===o}),i.take(1),h?n.defaultIfEmpty(s):r.throwIfEmpty(function(){return new e.ArgumentOutOfRangeError}))}}return e0.elementAt=c,e0}var Eo={},j4;function rY(){if(j4)return Eo;j4=1;var e=Eo&&Eo.__read||function(c,o){var s=typeof Symbol=="function"&&c[Symbol.iterator];if(!s)return c;var h=s.call(c),f,y=[],_;try{for(;(o===void 0||o-- >0)&&!(f=h.next()).done;)y.push(f.value)}catch(g){_={error:g}}finally{try{f&&!f.done&&(s=h.return)&&s.call(h)}finally{if(_)throw _.error}}return y},t=Eo&&Eo.__spreadArray||function(c,o){for(var s=0,h=o.length,f=c.length;s<h;s++,f++)c[f]=o[s];return c};Object.defineProperty(Eo,"__esModule",{value:!0}),Eo.endWith=void 0;var r=e2(),n=ZI();function i(){for(var c=[],o=0;o<arguments.length;o++)c[o]=arguments[o];return function(s){return r.concat(s,n.of.apply(void 0,t([],e(c))))}}return Eo.endWith=i,Eo}var r0={},G4;function nY(){if(G4)return r0;G4=1,Object.defineProperty(r0,"__esModule",{value:!0}),r0.every=void 0;var e=ft(),t=bt();function r(n,i){return e.operate(function(c,o){var s=0;c.subscribe(t.createOperatorSubscriber(o,function(h){n.call(i,h,s++,c)||(o.next(!1),o.complete())},function(){o.next(!0),o.complete()}))})}return r0.every=r,r0}var n0={},i0={},a0={},z4;function fw(){if(z4)return a0;z4=1,Object.defineProperty(a0,"__esModule",{value:!0}),a0.exhaustMap=void 0;var e=Js(),t=Ft(),r=ft(),n=bt();function i(c,o){return o?function(s){return s.pipe(i(function(h,f){return t.innerFrom(c(h,f)).pipe(e.map(function(y,_){return o(h,y,f,_)}))}))}:r.operate(function(s,h){var f=0,y=null,_=!1;s.subscribe(n.createOperatorSubscriber(h,function(g){y||(y=n.createOperatorSubscriber(h,void 0,function(){y=null,_&&h.complete()}),t.innerFrom(c(g,f++)).subscribe(y))},function(){_=!0,!y&&h.complete()}))})}return a0.exhaustMap=i,a0}var H4;function mw(){if(H4)return i0;H4=1,Object.defineProperty(i0,"__esModule",{value:!0}),i0.exhaustAll=void 0;var e=fw(),t=En();function r(){return e.exhaustMap(t.identity)}return i0.exhaustAll=r,i0}var W4;function iY(){if(W4)return n0;W4=1,Object.defineProperty(n0,"__esModule",{value:!0}),n0.exhaust=void 0;var e=mw();return n0.exhaust=e.exhaustAll,n0}var o0={},$4;function aY(){if($4)return o0;$4=1,Object.defineProperty(o0,"__esModule",{value:!0}),o0.expand=void 0;var e=ft(),t=rw();function r(n,i,c){return i===void 0&&(i=1/0),i=(i||0)<1?1/0:i,e.operate(function(o,s){return t.mergeInternals(o,s,n,i,void 0,!0,c)})}return o0.expand=r,o0}var s0={},X4;function oY(){if(X4)return s0;X4=1,Object.defineProperty(s0,"__esModule",{value:!0}),s0.finalize=void 0;var e=ft();function t(r){return e.operate(function(n,i){try{n.subscribe(i)}finally{i.add(r)}})}return s0.finalize=t,s0}var lu={},K4;function pw(){if(K4)return lu;K4=1,Object.defineProperty(lu,"__esModule",{value:!0}),lu.createFind=lu.find=void 0;var e=ft(),t=bt();
17function r(i,c){return e.operate(n(i,c,"value"))}lu.find=r;function n(i,c,o){var s=o==="index";return function(h,f){var y=0;h.subscribe(t.createOperatorSubscriber(f,function(_){var g=y++;i.call(c,_,g,h)&&(f.next(s?g:_),f.complete())},function(){f.next(s?-1:void 0),f.complete()}))}}return lu.createFind=n,lu}var c0={},Y4;function sY(){if(Y4)return c0;Y4=1,Object.defineProperty(c0,"__esModule",{value:!0}),c0.findIndex=void 0;var e=ft(),t=pw();function r(n,i){return e.operate(t.createFind(n,i,"index"))}return c0.findIndex=r,c0}var u0={},Q4;function cY(){if(Q4)return u0;Q4=1,Object.defineProperty(u0,"__esModule",{value:!0}),u0.first=void 0;var e=Bl(),t=ec(),r=xS(),n=TS(),i=AS(),c=En();function o(s,h){var f=arguments.length>=2;return function(y){return y.pipe(s?t.filter(function(_,g){return s(_,g,y)}):c.identity,r.take(1),f?n.defaultIfEmpty(h):i.throwIfEmpty(function(){return new e.EmptyError}))}}return u0.first=o,u0}var l0={},Z4;function uY(){if(Z4)return l0;Z4=1,Object.defineProperty(l0,"__esModule",{value:!0}),l0.groupBy=void 0;var e=fr(),t=Ft(),r=Bn(),n=ft(),i=bt();function c(o,s,h,f){return n.operate(function(y,_){var g;!s||typeof s=="function"?g=s:(h=s.duration,g=s.element,f=s.connector);var a=new Map,d=function(P){a.forEach(P),P(_)},p=function(P){return d(function(C){return C.error(P)})},u=0,m=!1,v=new i.OperatorSubscriber(_,function(P){try{var C=o(P),l=a.get(C);if(!l){a.set(C,l=f?f():new r.Subject);var S=b(C,l);if(_.next(S),h){var T=i.createOperatorSubscriber(l,function(){l.complete(),T?.unsubscribe()},void 0,void 0,function(){return a.delete(C)});v.add(t.innerFrom(h(S)).subscribe(T))}}l.next(g?g(P):P)}catch(A){p(A)}},function(){return d(function(P){return P.complete()})},p,function(){return a.clear()},function(){return m=!0,u===0});y.subscribe(v);function b(P,C){var l=new e.Observable(function(S){u++;var T=C.subscribe(S);return function(){T.unsubscribe(),--u===0&&m&&v.unsubscribe()}});return l.key=P,l}})}return l0.groupBy=c,l0}var d0={},J4;function lY(){if(J4)return d0;J4=1,Object.defineProperty(d0,"__esModule",{value:!0}),d0.isEmpty=void 0;var e=ft(),t=bt();function r(){return e.operate(function(n,i){n.subscribe(t.createOperatorSubscriber(i,function(){i.next(!1),i.complete()},function(){i.next(!0),i.complete()}))})}return d0.isEmpty=r,d0}var f0={},du={},eN;function hw(){if(eN)return du;eN=1;var e=du&&du.__values||function(c){var o=typeof Symbol=="function"&&Symbol.iterator,s=o&&c[o],h=0;if(s)return s.call(c);if(c&&typeof c.length=="number")return{next:function(){return c&&h>=c.length&&(c=void 0),{value:c&&c[h++],done:!c}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(du,"__esModule",{value:!0}),du.takeLast=void 0;var t=ka(),r=ft(),n=bt();function i(c){return c<=0?function(){return t.EMPTY}:r.operate(function(o,s){var h=[];o.subscribe(n.createOperatorSubscriber(s,function(f){h.push(f),c<h.length&&h.shift()},function(){var f,y;try{for(var _=e(h),g=_.next();!g.done;g=_.next()){var a=g.value;s.next(a)}}catch(d){f={error:d}}finally{try{g&&!g.done&&(y=_.return)&&y.call(_)}finally{if(f)throw f.error}}s.complete()},void 0,function(){h=null}))})}return du.takeLast=i,du}var tN;function dY(){if(tN)return f0;tN=1,Object.defineProperty(f0,"__esModule",{value:!0}),f0.last=void 0;var e=Bl(),t=ec(),r=hw(),n=AS(),i=TS(),c=En();function o(s,h){var f=arguments.length>=2;return function(y){return y.pipe(s?t.filter(function(_,g){return s(_,g,y)}):c.identity,r.takeLast(1),f?i.defaultIfEmpty(h):n.throwIfEmpty(function(){return new e.EmptyError}))}}return f0.last=o,f0}var m0={},rN;function fY(){if(rN)return m0;rN=1,Object.defineProperty(m0,"__esModule",{value:!0}),m0.materialize=void 0;var e=JI(),t=ft(),r=bt();function n(){return t.operate(function(i,c){i.subscribe(r.createOperatorSubscriber(c,function(o){c.next(e.Notification.createNext(o))},function(){c.next(e.Notification.createComplete()),c.complete()},function(o){c.next(e.Notification.createError(o)),c.complete()}))})}return m0.materialize=n,m0}var p0={},nN;function mY(){if(nN)return p0;nN=1,Object.defineProperty(p0,"__esModule",{value:!0}),p0.max=void 0;var e=qf(),t=or();function r(n){return e.reduce(t.isFunction(n)?function(i,c){return n(i,c)>0?i:c}:function(i,c){return i>c?i:c})}return p0.max=r,p0}var h0={},iN;
17function pY(){if(iN)return h0;iN=1,Object.defineProperty(h0,"__esModule",{value:!0}),h0.flatMap=void 0;var e=ss();return h0.flatMap=e.mergeMap,h0}var g0={},aN;function hY(){if(aN)return g0;aN=1,Object.defineProperty(g0,"__esModule",{value:!0}),g0.mergeMapTo=void 0;var e=ss(),t=or();function r(n,i,c){return c===void 0&&(c=1/0),t.isFunction(i)?e.mergeMap(function(){return n},i,c):(typeof i=="number"&&(c=i),e.mergeMap(function(){return n},c))}return g0.mergeMapTo=r,g0}var y0={},oN;function gY(){if(oN)return y0;oN=1,Object.defineProperty(y0,"__esModule",{value:!0}),y0.mergeScan=void 0;var e=ft(),t=rw();function r(n,i,c){return c===void 0&&(c=1/0),e.operate(function(o,s){var h=i;return t.mergeInternals(o,s,function(f,y){return n(h,f,y)},c,function(f){h=f},!1,void 0,function(){return h=null})})}return y0.mergeScan=r,y0}var Bo={},Ro={},sN;function yY(){if(sN)return Ro;sN=1;var e=Ro&&Ro.__read||function(s,h){var f=typeof Symbol=="function"&&s[Symbol.iterator];if(!f)return s;var y=f.call(s),_,g=[],a;try{for(;(h===void 0||h-- >0)&&!(_=y.next()).done;)g.push(_.value)}catch(d){a={error:d}}finally{try{_&&!_.done&&(f=y.return)&&f.call(y)}finally{if(a)throw a.error}}return g},t=Ro&&Ro.__spreadArray||function(s,h){for(var f=0,y=h.length,_=s.length;f<y;f++,_++)s[_]=h[f];return s};Object.defineProperty(Ro,"__esModule",{value:!0}),Ro.merge=void 0;var r=ft(),n=PS(),i=Ii(),c=Zs();function o(){for(var s=[],h=0;h<arguments.length;h++)s[h]=arguments[h];var f=i.popScheduler(s),y=i.popNumber(s,1/0);return r.operate(function(_,g){n.mergeAll(y)(c.from(t([_],e(s)),f)).subscribe(g)})}return Ro.merge=o,Ro}var cN;function vY(){if(cN)return Bo;cN=1;var e=Bo&&Bo.__read||function(i,c){var o=typeof Symbol=="function"&&i[Symbol.iterator];if(!o)return i;var s=o.call(i),h,f=[],y;try{for(;(c===void 0||c-- >0)&&!(h=s.next()).done;)f.push(h.value)}catch(_){y={error:_}}finally{try{h&&!h.done&&(o=s.return)&&o.call(s)}finally{if(y)throw y.error}}return f},t=Bo&&Bo.__spreadArray||function(i,c){for(var o=0,s=c.length,h=i.length;o<s;o++,h++)i[h]=c[o];return i};Object.defineProperty(Bo,"__esModule",{value:!0}),Bo.mergeWith=void 0;var r=yY();function n(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];return r.merge.apply(void 0,t([],e(i)))}return Bo.mergeWith=n,Bo}var v0={},uN;function bY(){if(uN)return v0;uN=1,Object.defineProperty(v0,"__esModule",{value:!0}),v0.min=void 0;var e=qf(),t=or();function r(n){return e.reduce(t.isFunction(n)?function(i,c){return n(i,c)<0?i:c}:function(i,c){return i<c?i:c})}return v0.min=r,v0}var b0={},lN;function n2(){if(lN)return b0;lN=1,Object.defineProperty(b0,"__esModule",{value:!0}),b0.multicast=void 0;var e=QT(),t=or(),r=r2();function n(i,c){var o=t.isFunction(i)?i:function(){return i};return t.isFunction(c)?r.connect(c,{connector:o}):function(s){return new e.ConnectableObservable(s,o)}}return b0.multicast=n,b0}var ua={},dN;function _Y(){if(dN)return ua;dN=1;var e=ua&&ua.__read||function(c,o){var s=typeof Symbol=="function"&&c[Symbol.iterator];if(!s)return c;var h=s.call(c),f,y=[],_;try{for(;(o===void 0||o-- >0)&&!(f=h.next()).done;)y.push(f.value)}catch(g){_={error:g}}finally{try{f&&!f.done&&(s=h.return)&&s.call(h)}finally{if(_)throw _.error}}return y},t=ua&&ua.__spreadArray||function(c,o){for(var s=0,h=o.length,f=c.length;s<h;s++,f++)c[f]=o[s];return c};Object.defineProperty(ua,"__esModule",{value:!0}),ua.onErrorResumeNext=ua.onErrorResumeNextWith=void 0;var r=Nf(),n=wK();function i(){for(var c=[],o=0;o<arguments.length;o++)c[o]=arguments[o];var s=r.argsOrArgArray(c);return function(h){return n.onErrorResumeNext.apply(void 0,t([h],e(s)))}}return ua.onErrorResumeNextWith=i,ua.onErrorResumeNext=i,ua}var _0={},fN;function SY(){if(fN)return _0;fN=1,Object.defineProperty(_0,"__esModule",{value:!0}),_0.pairwise=void 0;var e=ft(),t=bt();function r(){return e.operate(function(n,i){var c,o=!1;n.subscribe(t.createOperatorSubscriber(i,function(s){var h=c;c=s,o&&i.next([h,s]),o=!0}))})}return _0.pairwise=r,_0}var S0={},mN;function CY(){if(mN)return S0;mN=1,Object.defineProperty(S0,"__esModule",{value:!0}),S0.pluck=void 0;var e=Js();function t(){for(var r=[],n=0;n<arguments.length;n++)r[n]=arguments[n];var i=r.length;if(i===0)throw new Error("list of properties cannot be empty.");return e.map(function(c){for(var o=c,s=0;s<i;s++){var h=o?.[r[s]];if(typeof h<"u")o=h;else return}return o}
17)}return S0.pluck=t,S0}var C0={},pN;function PY(){if(pN)return C0;pN=1,Object.defineProperty(C0,"__esModule",{value:!0}),C0.publish=void 0;var e=Bn(),t=n2(),r=r2();function n(i){return i?function(c){return r.connect(i)(c)}:function(c){return t.multicast(new e.Subject)(c)}}return C0.publish=n,C0}var P0={},hN;function TY(){if(hN)return P0;hN=1,Object.defineProperty(P0,"__esModule",{value:!0}),P0.publishBehavior=void 0;var e=dK(),t=QT();function r(n){return function(i){var c=new e.BehaviorSubject(n);return new t.ConnectableObservable(i,function(){return c})}}return P0.publishBehavior=r,P0}var T0={},gN;function xY(){if(gN)return T0;gN=1,Object.defineProperty(T0,"__esModule",{value:!0}),T0.publishLast=void 0;var e=KI(),t=QT();function r(){return function(n){var i=new e.AsyncSubject;return new t.ConnectableObservable(n,function(){return i})}}return T0.publishLast=r,T0}var x0={},yN;function AY(){if(yN)return x0;yN=1,Object.defineProperty(x0,"__esModule",{value:!0}),x0.publishReplay=void 0;var e=XI(),t=n2(),r=or();function n(i,c,o,s){o&&!r.isFunction(o)&&(s=o);var h=r.isFunction(o)?o:void 0;return function(f){return t.multicast(new e.ReplaySubject(i,c,s),h)(f)}}return x0.publishReplay=n,x0}var Oo={},vN;function gw(){if(vN)return Oo;vN=1;var e=Oo&&Oo.__read||function(o,s){var h=typeof Symbol=="function"&&o[Symbol.iterator];if(!h)return o;var f=h.call(o),y,_=[],g;try{for(;(s===void 0||s-- >0)&&!(y=f.next()).done;)_.push(y.value)}catch(a){g={error:a}}finally{try{y&&!y.done&&(h=f.return)&&h.call(f)}finally{if(g)throw g.error}}return _},t=Oo&&Oo.__spreadArray||function(o,s){for(var h=0,f=s.length,y=o.length;h<f;h++,y++)o[y]=s[h];return o};Object.defineProperty(Oo,"__esModule",{value:!0}),Oo.raceWith=void 0;var r=EK(),n=ft(),i=En();function c(){for(var o=[],s=0;s<arguments.length;s++)o[s]=arguments[s];return o.length?n.operate(function(h,f){r.raceInit(t([h],e(o)))(f)}):i.identity}return Oo.raceWith=c,Oo}var A0={},bN;function MY(){if(bN)return A0;bN=1,Object.defineProperty(A0,"__esModule",{value:!0}),A0.repeat=void 0;var e=ka(),t=ft(),r=bt(),n=Ft(),i=Ol();function c(o){var s,h=1/0,f;return o!=null&&(typeof o=="object"?(s=o.count,h=s===void 0?1/0:s,f=o.delay):h=o),h<=0?function(){return e.EMPTY}:t.operate(function(y,_){var g=0,a,d=function(){if(a?.unsubscribe(),a=null,f!=null){var u=typeof f=="number"?i.timer(f):n.innerFrom(f(g)),m=r.createOperatorSubscriber(_,function(){m.unsubscribe(),p()});u.subscribe(m)}else p()},p=function(){var u=!1;a=y.subscribe(r.createOperatorSubscriber(_,void 0,function(){++g<h?a?d():u=!0:_.complete()})),u&&d()};p()})}return A0.repeat=c,A0}var M0={},_N;function DY(){if(_N)return M0;_N=1,Object.defineProperty(M0,"__esModule",{value:!0}),M0.repeatWhen=void 0;var e=Ft(),t=Bn(),r=ft(),n=bt();function i(c){return r.operate(function(o,s){var h,f=!1,y,_=!1,g=!1,a=function(){return g&&_&&(s.complete(),!0)},d=function(){return y||(y=new t.Subject,e.innerFrom(c(y)).subscribe(n.createOperatorSubscriber(s,function(){h?p():f=!0},function(){_=!0,a()}))),y},p=function(){g=!1,h=o.subscribe(n.createOperatorSubscriber(s,void 0,function(){g=!0,!a()&&d().next()})),f&&(h.unsubscribe(),h=null,f=!1,p())};p()})}return M0.repeatWhen=i,M0}var D0={},SN;function IY(){if(SN)return D0;SN=1,Object.defineProperty(D0,"__esModule",{value:!0}),D0.retry=void 0;var e=ft(),t=bt(),r=En(),n=Ol(),i=Ft();function c(o){o===void 0&&(o=1/0);var s;o&&typeof o=="object"?s=o:s={count:o};var h=s.count,f=h===void 0?1/0:h,y=s.delay,_=s.resetOnSuccess,g=_===void 0?!1:_;return f<=0?r.identity:e.operate(function(a,d){var p=0,u,m=function(){var v=!1;u=a.subscribe(t.createOperatorSubscriber(d,function(b){g&&(p=0),d.next(b)},void 0,function(b){if(p++<f){var P=function(){u?(u.unsubscribe(),u=null,m()):v=!0};if(y!=null){var C=typeof y=="number"?n.timer(y):i.innerFrom(y(b,p)),l=t.createOperatorSubscriber(d,function(){l.unsubscribe(),P()},function(){d.complete()});C.subscribe(l)}else P()}else d.error(b)})),v&&(u.unsubscribe(),u=null,m())};m()})}return D0.retry=c,D0}var I0={},CN;function wY(){if(CN)return I0;CN=1,Object.defineProperty(I0,"__esModule",{value:!0}),I0.retryWhen=void 0;var e=Ft(),t=Bn(),r=ft(),n=bt();function i(c){return r.operate(function(o,s){var h,f=!1,y,_=function(){h=o.subscribe(n.createOperatorSubscriber(s,void 0,void 0,function(g){y||(y=new t.Subject,e.innerFrom(c(y)).subscribe(n.createOperatorSubscriber(s,function(){return h?_():f=!0}))),y&&y.next(g)})),f&&(h.unsubscribe(),h=null,f=!1,_())};_()})}return I0.retryWhen=i,I0}var w0={},PN;function yw(){if(PN)return w0;PN=1,Object.defineProperty(w0,"__esModule",{value:!0}),w0.sample=void 0;
17var e=Ft(),t=ft(),r=Vn(),n=bt();function i(c){return t.operate(function(o,s){var h=!1,f=null;o.subscribe(n.createOperatorSubscriber(s,function(y){h=!0,f=y})),e.innerFrom(c).subscribe(n.createOperatorSubscriber(s,function(){if(h){h=!1;var y=f;f=null,s.next(y)}},r.noop))})}return w0.sample=i,w0}var V0={},TN;function VY(){if(TN)return V0;TN=1,Object.defineProperty(V0,"__esModule",{value:!0}),V0.sampleTime=void 0;var e=Di(),t=yw(),r=IK();function n(i,c){return c===void 0&&(c=e.asyncScheduler),t.sample(r.interval(i,c))}return V0.sampleTime=n,V0}var E0={},xN;function EY(){if(xN)return E0;xN=1,Object.defineProperty(E0,"__esModule",{value:!0}),E0.scan=void 0;var e=ft(),t=qK();function r(n,i){return e.operate(t.scanInternals(n,i,arguments.length>=2,!0))}return E0.scan=r,E0}var B0={},AN;function BY(){if(AN)return B0;AN=1,Object.defineProperty(B0,"__esModule",{value:!0}),B0.sequenceEqual=void 0;var e=ft(),t=bt(),r=Ft();function n(c,o){return o===void 0&&(o=function(s,h){return s===h}),e.operate(function(s,h){var f=i(),y=i(),_=function(a){h.next(a),h.complete()},g=function(a,d){var p=t.createOperatorSubscriber(h,function(u){var m=d.buffer,v=d.complete;m.length===0?v?_(!1):a.buffer.push(u):!o(u,m.shift())&&_(!1)},function(){a.complete=!0;var u=d.complete,m=d.buffer;u&&_(m.length===0),p?.unsubscribe()});return p};s.subscribe(g(f,y)),r.innerFrom(c).subscribe(g(y,f))})}B0.sequenceEqual=n;function i(){return{buffer:[],complete:!1}}return B0}var ko={},MN;function vw(){if(MN)return ko;MN=1;var e=ko&&ko.__read||function(h,f){var y=typeof Symbol=="function"&&h[Symbol.iterator];if(!y)return h;var _=y.call(h),g,a=[],d;try{for(;(f===void 0||f-- >0)&&!(g=_.next()).done;)a.push(g.value)}catch(p){d={error:p}}finally{try{g&&!g.done&&(y=_.return)&&y.call(_)}finally{if(d)throw d.error}}return a},t=ko&&ko.__spreadArray||function(h,f){for(var y=0,_=f.length,g=h.length;y<_;y++,g++)h[g]=f[y];return h};Object.defineProperty(ko,"__esModule",{value:!0}),ko.share=void 0;var r=Ft(),n=Bn(),i=vS(),c=ft();function o(h){h===void 0&&(h={});var f=h.connector,y=f===void 0?function(){return new n.Subject}:f,_=h.resetOnError,g=_===void 0?!0:_,a=h.resetOnComplete,d=a===void 0?!0:a,p=h.resetOnRefCountZero,u=p===void 0?!0:p;return function(m){var v,b,P,C=0,l=!1,S=!1,T=function(){b?.unsubscribe(),b=void 0},A=function(){T(),v=P=void 0,l=S=!1},x=function(){var M=v;A(),M?.unsubscribe()};return c.operate(function(M,D){C++,!S&&!l&&T();var V=P=P??y();D.add(function(){C--,C===0&&!S&&!l&&(b=s(x,u))}),V.subscribe(D),!v&&C>0&&(v=new i.SafeSubscriber({next:function(R){return V.next(R)},error:function(R){S=!0,T(),b=s(A,g,R),V.error(R)},complete:function(){l=!0,T(),b=s(A,d),V.complete()}}),r.innerFrom(M).subscribe(v))})(m)}}ko.share=o;function s(h,f){for(var y=[],_=2;_<arguments.length;_++)y[_-2]=arguments[_];if(f===!0){h();return}if(f!==!1){var g=new i.SafeSubscriber({next:function(){g.unsubscribe(),h()}});return r.innerFrom(f.apply(void 0,t([],e(y)))).subscribe(g)}}return ko}var R0={},DN;function RY(){if(DN)return R0;DN=1,Object.defineProperty(R0,"__esModule",{value:!0}),R0.shareReplay=void 0;var e=XI(),t=vw();function r(n,i,c){var o,s,h,f,y=!1;return n&&typeof n=="object"?(o=n.bufferSize,f=o===void 0?1/0:o,s=n.windowTime,i=s===void 0?1/0:s,h=n.refCount,y=h===void 0?!1:h,c=n.scheduler):f=n??1/0,t.share({connector:function(){return new e.ReplaySubject(f,i,c)},resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:y})}return R0.shareReplay=r,R0}var O0={},IN;function OY(){if(IN)return O0;IN=1,Object.defineProperty(O0,"__esModule",{value:!0}),O0.single=void 0;var e=Bl(),t=xK(),r=TK(),n=ft(),i=bt();function c(o){return n.operate(function(s,h){var f=!1,y,_=!1,g=0;s.subscribe(i.createOperatorSubscriber(h,function(a){_=!0,(!o||o(a,g++,s))&&(f&&h.error(new t.SequenceError("Too many matching values")),f=!0,y=a)},function(){f?(h.next(y),h.complete()):h.error(_?new r.NotFoundError("No matching values"):new e.EmptyError)}))})}return O0.single=c,O0}var k0={},wN;function kY(){if(wN)return k0;wN=1,Object.defineProperty(k0,"__esModule",{value:!0}),k0.skip=void 0;var e=ec();function t(r){return e.filter(function(n,i){return r<=i})}return k0.skip=t,k0}var F0={},VN;
17function FY(){if(VN)return F0;VN=1,Object.defineProperty(F0,"__esModule",{value:!0}),F0.skipLast=void 0;var e=En(),t=ft(),r=bt();function n(i){return i<=0?e.identity:t.operate(function(c,o){var s=new Array(i),h=0;return c.subscribe(r.createOperatorSubscriber(o,function(f){var y=h++;if(y<i)s[y]=f;else{var _=y%i,g=s[_];s[_]=f,o.next(g)}})),function(){s=null}})}return F0.skipLast=n,F0}var L0={},EN;function LY(){if(EN)return L0;EN=1,Object.defineProperty(L0,"__esModule",{value:!0}),L0.skipUntil=void 0;var e=ft(),t=bt(),r=Ft(),n=Vn();function i(c){return e.operate(function(o,s){var h=!1,f=t.createOperatorSubscriber(s,function(){f?.unsubscribe(),h=!0},n.noop);r.innerFrom(c).subscribe(f),o.subscribe(t.createOperatorSubscriber(s,function(y){return h&&s.next(y)}))})}return L0.skipUntil=i,L0}var N0={},BN;function NY(){if(BN)return N0;BN=1,Object.defineProperty(N0,"__esModule",{value:!0}),N0.skipWhile=void 0;var e=ft(),t=bt();function r(n){return e.operate(function(i,c){var o=!1,s=0;i.subscribe(t.createOperatorSubscriber(c,function(h){return(o||(o=!n(h,s++)))&&c.next(h)}))})}return N0.skipWhile=r,N0}var q0={},RN;function qY(){if(RN)return q0;RN=1,Object.defineProperty(q0,"__esModule",{value:!0}),q0.startWith=void 0;var e=e2(),t=Ii(),r=ft();function n(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];var o=t.popScheduler(i);return r.operate(function(s,h){(o?e.concat(i,s,o):e.concat(i,s)).subscribe(h)})}return q0.startWith=n,q0}var U0={},j0={},ON;function MS(){if(ON)return j0;ON=1,Object.defineProperty(j0,"__esModule",{value:!0}),j0.switchMap=void 0;var e=Ft(),t=ft(),r=bt();function n(i,c){return t.operate(function(o,s){var h=null,f=0,y=!1,_=function(){return y&&!h&&s.complete()};o.subscribe(r.createOperatorSubscriber(s,function(g){h?.unsubscribe();var a=0,d=f++;e.innerFrom(i(g,d)).subscribe(h=r.createOperatorSubscriber(s,function(p){return s.next(c?c(g,p,d,a++):p)},function(){h=null,_()}))},function(){y=!0,_()}))})}return j0.switchMap=n,j0}var kN;function UY(){if(kN)return U0;kN=1,Object.defineProperty(U0,"__esModule",{value:!0}),U0.switchAll=void 0;var e=MS(),t=En();function r(){return e.switchMap(t.identity)}return U0.switchAll=r,U0}var G0={},FN;function jY(){if(FN)return G0;FN=1,Object.defineProperty(G0,"__esModule",{value:!0}),G0.switchMapTo=void 0;var e=MS(),t=or();function r(n,i){return t.isFunction(i)?e.switchMap(function(){return n},i):e.switchMap(function(){return n})}return G0.switchMapTo=r,G0}var z0={},LN;function GY(){if(LN)return z0;LN=1,Object.defineProperty(z0,"__esModule",{value:!0}),z0.switchScan=void 0;var e=MS(),t=ft();function r(n,i){return t.operate(function(c,o){var s=i;return e.switchMap(function(h,f){return n(s,h,f)},function(h,f){return s=f,f})(c).subscribe(o),function(){s=null}})}return z0.switchScan=r,z0}var H0={},NN;function zY(){if(NN)return H0;NN=1,Object.defineProperty(H0,"__esModule",{value:!0}),H0.takeUntil=void 0;var e=ft(),t=bt(),r=Ft(),n=Vn();function i(c){return e.operate(function(o,s){r.innerFrom(c).subscribe(t.createOperatorSubscriber(s,function(){return s.complete()},n.noop)),!s.closed&&o.subscribe(s)})}return H0.takeUntil=i,H0}var W0={},qN;function HY(){if(qN)return W0;qN=1,Object.defineProperty(W0,"__esModule",{value:!0}),W0.takeWhile=void 0;var e=ft(),t=bt();function r(n,i){return i===void 0&&(i=!1),e.operate(function(c,o){var s=0;c.subscribe(t.createOperatorSubscriber(o,function(h){var f=n(h,s++);(f||i)&&o.next(h),!f&&o.complete()}))})}return W0.takeWhile=r,W0}var $0={},UN;function WY(){if(UN)return $0;UN=1,Object.defineProperty($0,"__esModule",{value:!0}),$0.tap=void 0;var e=or(),t=ft(),r=bt(),n=En();function i(c,o,s){var h=e.isFunction(c)||o||s?{next:c,error:o,complete:s}:c;return h?t.operate(function(f,y){var _;(_=h.subscribe)===null||_===void 0||_.call(h);var g=!0;f.subscribe(r.createOperatorSubscriber(y,function(a){var d;(d=h.next)===null||d===void 0||d.call(h,a),y.next(a)},function(){var a;g=!1,(a=h.complete)===null||a===void 0||a.call(h),y.complete()},function(a){var d;g=!1,(d=h.error)===null||d===void 0||d.call(h,a),y.error(a)},function(){var a,d;g&&((a=h.unsubscribe)===null||a===void 0||a.call(h)),(d=h.finalize)===null||d===void 0||d.call(h)}))}):n.identity}return $0.tap=i,$0}var X0={},jN;function bw(){if(jN)return X0;jN=1,Object.defineProperty(X0,"__esModule",{value:!0}),X0.throttle=void 0;
17var e=ft(),t=bt(),r=Ft();function n(i,c){return e.operate(function(o,s){var h=c??{},f=h.leading,y=f===void 0?!0:f,_=h.trailing,g=_===void 0?!1:_,a=!1,d=null,p=null,u=!1,m=function(){p?.unsubscribe(),p=null,g&&(P(),u&&s.complete())},v=function(){p=null,u&&s.complete()},b=function(C){return p=r.innerFrom(i(C)).subscribe(t.createOperatorSubscriber(s,m,v))},P=function(){if(a){a=!1;var C=d;d=null,s.next(C),!u&&b(C)}};o.subscribe(t.createOperatorSubscriber(s,function(C){a=!0,d=C,!(p&&!p.closed)&&(y?P():b(C))},function(){u=!0,!(g&&a&&p&&!p.closed)&&s.complete()}))})}return X0.throttle=n,X0}var K0={},GN;function $Y(){if(GN)return K0;GN=1,Object.defineProperty(K0,"__esModule",{value:!0}),K0.throttleTime=void 0;var e=Di(),t=bw(),r=Ol();function n(i,c,o){c===void 0&&(c=e.asyncScheduler);var s=r.timer(i,c);return t.throttle(function(){return s},o)}return K0.throttleTime=n,K0}var fu={},zN;function XY(){if(zN)return fu;zN=1,Object.defineProperty(fu,"__esModule",{value:!0}),fu.TimeInterval=fu.timeInterval=void 0;var e=Di(),t=ft(),r=bt();function n(c){return c===void 0&&(c=e.asyncScheduler),t.operate(function(o,s){var h=c.now();o.subscribe(r.createOperatorSubscriber(s,function(f){var y=c.now(),_=y-h;h=y,s.next(new i(f,_))}))})}
17fu.timeInterval=n;var i=(function(){function c(o,s){this.value=o,this.interval=s}return c})();return fu.TimeInterval=i,fu}var Y0={},HN;function KY(){if(HN)return Y0;HN=1,Object.defineProperty(Y0,"__esModule",{value:!0}),Y0.timeoutWith=void 0;var e=Di(),t=ew(),r=hT();function n(i,c,o){var s,h,f;if(o=o??e.async,t.isValidDate(i)?s=i:typeof i=="number"&&(h=i),c)f=function(){return c};else throw new TypeError("No observable provided to switch to");if(s==null&&h==null)throw new TypeError("No timeout provided.");return r.timeout({first:s,each:h,scheduler:o,with:f})}return Y0.timeoutWith=n,Y0}var Q0={},WN;function YY(){if(WN)return Q0;WN=1,Object.defineProperty(Q0,"__esModule",{value:!0}),Q0.timestamp=void 0;var e=$I(),t=Js();function r(n){return n===void 0&&(n=e.dateTimestampProvider),t.map(function(i){return{value:i,timestamp:n.now()}})}return Q0.timestamp=r,Q0}var Z0={},$N;function QY(){if($N)return Z0;$N=1,Object.defineProperty(Z0,"__esModule",{value:!0}),Z0.window=void 0;var e=Bn(),t=ft(),r=bt(),n=Vn(),i=Ft();function c(o){return t.operate(function(s,h){var f=new e.Subject;h.next(f.asObservable());var y=function(_){f.error(_),h.error(_)};return s.subscribe(r.createOperatorSubscriber(h,function(_){return f?.next(_)},function(){f.complete(),h.complete()},y)),i.innerFrom(o).subscribe(r.createOperatorSubscriber(h,function(){f.complete(),h.next(f=new e.Subject)},n.noop,y)),function(){f?.unsubscribe(),f=null}})}return Z0.window=c,Z0}var mu={},XN;function ZY(){if(XN)return mu;XN=1;var e=mu&&mu.__values||function(c){var o=typeof Symbol=="function"&&Symbol.iterator,s=o&&c[o],h=0;if(s)return s.call(c);if(c&&typeof c.length=="number")return{next:function(){return c&&h>=c.length&&(c=void 0),{value:c&&c[h++],done:!c}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(mu,"__esModule",{value:!0}),mu.windowCount=void 0;var t=Bn(),r=ft(),n=bt();function i(c,o){o===void 0&&(o=0);var s=o>0?o:c;return r.operate(function(h,f){var y=[new t.Subject],_=0;f.next(y[0].asObservable()),h.subscribe(n.createOperatorSubscriber(f,function(g){var a,d;try{for(var p=e(y),u=p.next();!u.done;u=p.next()){var m=u.value;m.next(g)}}catch(P){a={error:P}}finally{try{u&&!u.done&&(d=p.return)&&d.call(p)}finally{if(a)throw a.error}}var v=_-c+1;if(v>=0&&v%s===0&&y.shift().complete(),++_%s===0){var b=new t.Subject;y.push(b),f.next(b.asObservable())}},function(){for(;y.length>0;)y.shift().complete();f.complete()},function(g){for(;y.length>0;)y.shift().error(g);f.error(g)},function(){y=null}))})}return mu.windowCount=i,mu}var J0={},KN;function JY(){if(KN)return J0;KN=1,Object.defineProperty(J0,"__esModule",{value:!0}),J0.windowTime=void 0;var e=Bn(),t=Di(),r=Ji(),n=ft(),i=bt(),c=Ys(),o=Ii(),s=Qs();function h(f){for(var y,_,g=[],a=1;a<arguments.length;a++)g[a-1]=arguments[a];var d=(y=o.popScheduler(g))!==null&&y!==void 0?y:t.asyncScheduler,p=(_=g[0])!==null&&_!==void 0?_:null,u=g[1]||1/0;return n.operate(function(m,v){var b=[],P=!1,C=function(A){var x=A.window,M=A.subs;x.complete(),M.unsubscribe(),c.arrRemove(b,A),P&&l()},l=function(){if(b){var A=new r.Subscription;v.add(A);var x=new e.Subject,M={window:x,subs:A,seen:0};b.push(M),v.next(x.asObservable()),s.executeSchedule(A,d,function(){return C(M)},f)}};p!==null&&p>=0?s.executeSchedule(v,d,l,p,!0):P=!0,l();var S=function(A){return b.slice().forEach(A)},T=function(A){S(function(x){var M=x.window;return A(M)}),A(v),v.unsubscribe()};return m.subscribe(i.createOperatorSubscriber(v,function(A){S(function(x){x.window.next(A),u<=++x.seen&&C(x)})},function(){return T(function(A){return A.complete()})},function(A){return T(function(x){return x.error(A)})})),function(){b=null}})}return J0.windowTime=h,J0}var pu={},YN;function eQ(){if(YN)return pu;YN=1;var e=pu&&pu.__values||function(f){var y=typeof Symbol=="function"&&Symbol.iterator,_=y&&f[y],g=0;if(_)return _.call(f);if(f&&typeof f.length=="number")return{next:function(){return f&&g>=f.length&&(f=void 0),{value:f&&f[g++],done:!f}}};throw new TypeError(y?"Object is not iterable.":"Symbol.iterator is not defined.")};
17Object.defineProperty(pu,"__esModule",{value:!0}),pu.windowToggle=void 0;var t=Bn(),r=Ji(),n=ft(),i=Ft(),c=bt(),o=Vn(),s=Ys();function h(f,y){return n.operate(function(_,g){var a=[],d=function(p){for(;0<a.length;)a.shift().error(p);g.error(p)};i.innerFrom(f).subscribe(c.createOperatorSubscriber(g,function(p){var u=new t.Subject;a.push(u);var m=new r.Subscription,v=function(){s.arrRemove(a,u),u.complete(),m.unsubscribe()},b;try{b=i.innerFrom(y(p))}catch(P){d(P);return}g.next(u.asObservable()),m.add(b.subscribe(c.createOperatorSubscriber(g,v,o.noop,d)))},o.noop)),_.subscribe(c.createOperatorSubscriber(g,function(p){var u,m,v=a.slice();try{for(var b=e(v),P=b.next();!P.done;P=b.next()){var C=P.value;C.next(p)}}catch(l){u={error:l}}finally{try{P&&!P.done&&(m=b.return)&&m.call(b)}finally{if(u)throw u.error}}},function(){for(;0<a.length;)a.shift().complete();g.complete()},d,function(){for(;0<a.length;)a.shift().unsubscribe()}))})}return pu.windowToggle=h,pu}var ey={},QN;function tQ(){if(QN)return ey;QN=1,Object.defineProperty(ey,"__esModule",{value:!0}),ey.windowWhen=void 0;var e=Bn(),t=ft(),r=bt(),n=Ft();function i(c){return t.operate(function(o,s){var h,f,y=function(g){h.error(g),s.error(g)},_=function(){f?.unsubscribe(),h?.complete(),h=new e.Subject,s.next(h.asObservable());var g;try{g=n.innerFrom(c())}catch(a){y(a);return}g.subscribe(f=r.createOperatorSubscriber(s,_,_,y))};_(),o.subscribe(r.createOperatorSubscriber(s,function(g){return h.next(g)},function(){h.complete(),s.complete()},y,function(){f?.unsubscribe(),h=null}))})}return ey.windowWhen=i,ey}var Fo={},ZN;function rQ(){if(ZN)return Fo;ZN=1;var e=Fo&&Fo.__read||function(f,y){var _=typeof Symbol=="function"&&f[Symbol.iterator];if(!_)return f;var g=_.call(f),a,d=[],p;try{for(;(y===void 0||y-- >0)&&!(a=g.next()).done;)d.push(a.value)}catch(u){p={error:u}}finally{try{a&&!a.done&&(_=g.return)&&_.call(g)}finally{if(p)throw p.error}}return d},t=Fo&&Fo.__spreadArray||function(f,y){for(var _=0,g=y.length,a=f.length;_<g;_++,a++)f[a]=y[_];return f};Object.defineProperty(Fo,"__esModule",{value:!0}),Fo.withLatestFrom=void 0;var r=ft(),n=bt(),i=Ft(),c=En(),o=Vn(),s=Ii();function h(){for(var f=[],y=0;y<arguments.length;y++)f[y]=arguments[y];var _=s.popResultSelector(f);return r.operate(function(g,a){for(var d=f.length,p=new Array(d),u=f.map(function(){return!1}),m=!1,v=function(P){i.innerFrom(f[P]).subscribe(n.createOperatorSubscriber(a,function(C){p[P]=C,!m&&!u[P]&&(u[P]=!0,(m=u.every(c.identity))&&(u=null))},o.noop))},b=0;b<d;b++)v(b);g.subscribe(n.createOperatorSubscriber(a,function(P){if(m){var C=t([P],e(p));a.next(_?_.apply(void 0,t([],e(C))):C)}}))})}return Fo.withLatestFrom=h,Fo}var ty={},JN;function nQ(){if(JN)return ty;JN=1,Object.defineProperty(ty,"__esModule",{value:!0}),ty.zipAll=void 0;var e=nw(),t=UK();function r(n){return t.joinAllInternals(e.zip,n)}return ty.zipAll=r,ty}var Lo={},No={},eq;function iQ(){if(eq)return No;eq=1;var e=No&&No.__read||function(c,o){var s=typeof Symbol=="function"&&c[Symbol.iterator];if(!s)return c;var h=s.call(c),f,y=[],_;try{for(;(o===void 0||o-- >0)&&!(f=h.next()).done;)y.push(f.value)}catch(g){_={error:g}}finally{try{f&&!f.done&&(s=h.return)&&s.call(h)}finally{if(_)throw _.error}}return y},t=No&&No.__spreadArray||function(c,o){for(var s=0,h=o.length,f=c.length;s<h;s++,f++)c[f]=o[s];return c};Object.defineProperty(No,"__esModule",{value:!0}),No.zip=void 0;var r=nw(),n=ft();function i(){for(var c=[],o=0;o<arguments.length;o++)c[o]=arguments[o];return n.operate(function(s,h){r.zip.apply(void 0,t([s],e(c))).subscribe(h)})}return No.zip=i,No}var tq;function aQ(){if(tq)return Lo;tq=1;var e=Lo&&Lo.__read||function(i,c){var o=typeof Symbol=="function"&&i[Symbol.iterator];if(!o)return i;var s=o.call(i),h,f=[],y;try{for(;(c===void 0||c-- >0)&&!(h=s.next()).done;)f.push(h.value)}catch(_){y={error:_}}finally{try{h&&!h.done&&(o=s.return)&&o.call(s)}finally{if(y)throw y.error}}return f},t=Lo&&Lo.__spreadArray||function(i,c){for(var o=0,s=c.length,h=i.length;o<s;o++,h++)i[h]=c[o];return i};Object.defineProperty(Lo,"__esModule",{value:!0}),Lo.zipWith=void 0;var r=iQ();function n(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];return r.zip.apply(void 0,t([],e(i)))}return Lo.zipWith=n,Lo}var rq;function Rn(){return rq||(rq=1,(function(e){var t=Rc&&Rc.__createBinding||(Object.create?(function(Hl,Wl,oo,hc){hc===void 0&&(hc=oo),Object.defineProperty(Hl,hc,{enumerable:!0,get:function(){return Wl[oo]}})}):(function(Hl,Wl,oo,hc){hc===void 0&&(hc=oo),Hl[hc]=Wl[oo]})),r=Rc&&Rc.__exportStar||function(Hl,Wl){for(var oo in Hl)oo!=="default"&&!Object.prototype.hasOwnProperty.call(Wl,oo)&&t(Wl,Hl,oo)};
vendor: 6,902 bytes, line 17
17Object.defineProperty(e,"__esModule",{value:!0}),e.interval=e.iif=e.generate=e.fromEventPattern=e.fromEvent=e.from=e.forkJoin=e.empty=e.defer=e.connectable=e.concat=e.combineLatest=e.bindNodeCallback=e.bindCallback=e.UnsubscriptionError=e.TimeoutError=e.SequenceError=e.ObjectUnsubscribedError=e.NotFoundError=e.EmptyError=e.ArgumentOutOfRangeError=e.firstValueFrom=e.lastValueFrom=e.isObservable=e.identity=e.noop=e.pipe=e.NotificationKind=e.Notification=e.Subscriber=e.Subscription=e.Scheduler=e.VirtualAction=e.VirtualTimeScheduler=e.animationFrameScheduler=e.animationFrame=e.queueScheduler=e.queue=e.asyncScheduler=e.async=e.asapScheduler=e.asap=e.AsyncSubject=e.ReplaySubject=e.BehaviorSubject=e.Subject=e.animationFrames=e.observable=e.ConnectableObservable=e.Observable=void 0,e.filter=e.expand=e.exhaustMap=e.exhaustAll=e.exhaust=e.every=e.endWith=e.elementAt=e.distinctUntilKeyChanged=e.distinctUntilChanged=e.distinct=e.dematerialize=e.delayWhen=e.delay=e.defaultIfEmpty=e.debounceTime=e.debounce=e.count=e.connect=e.concatWith=e.concatMapTo=e.concatMap=e.concatAll=e.combineLatestWith=e.combineLatestAll=e.combineAll=e.catchError=e.bufferWhen=e.bufferToggle=e.bufferTime=e.bufferCount=e.buffer=e.auditTime=e.audit=e.config=e.NEVER=e.EMPTY=e.scheduled=e.zip=e.using=e.timer=e.throwError=e.range=e.race=e.partition=e.pairs=e.onErrorResumeNext=e.of=e.never=e.merge=void 0,e.switchMap=e.switchAll=e.subscribeOn=e.startWith=e.skipWhile=e.skipUntil=e.skipLast=e.skip=e.single=e.shareReplay=e.share=e.sequenceEqual=e.scan=e.sampleTime=e.sample=e.refCount=e.retryWhen=e.retry=e.repeatWhen=e.repeat=e.reduce=e.raceWith=e.publishReplay=e.publishLast=e.publishBehavior=e.publish=e.pluck=e.pairwise=e.onErrorResumeNextWith=e.observeOn=e.multicast=e.min=e.mergeWith=e.mergeScan=e.mergeMapTo=e.mergeMap=e.flatMap=e.mergeAll=e.max=e.materialize=e.mapTo=e.map=e.last=e.isEmpty=e.ignoreElements=e.groupBy=e.first=e.findIndex=e.find=e.finalize=void 0,e.zipWith=e.zipAll=e.withLatestFrom=e.windowWhen=e.windowToggle=e.windowTime=e.windowCount=e.window=e.toArray=e.timestamp=e.timeoutWith=e.timeout=e.timeInterval=e.throwIfEmpty=e.throttleTime=e.throttle=e.tap=e.takeWhile=e.takeUntil=e.takeLast=e.take=e.switchScan=e.switchMapTo=void 0;var n=fr();Object.defineProperty(e,"Observable",{enumerable:!0,get:function(){return n.Observable}});var i=QT();Object.defineProperty(e,"ConnectableObservable",{enumerable:!0,get:function(){return i.ConnectableObservable}});var c=KT();Object.defineProperty(e,"observable",{enumerable:!0,get:function(){return c.observable}});var o=Qte();Object.defineProperty(e,"animationFrames",{enumerable:!0,get:function(){return o.animationFrames}});var s=Bn();Object.defineProperty(e,"Subject",{enumerable:!0,get:function(){return s.Subject}});var h=dK();Object.defineProperty(e,"BehaviorSubject",{enumerable:!0,get:function(){return h.BehaviorSubject}});var f=XI();Object.defineProperty(e,"ReplaySubject",{enumerable:!0,get:function(){return f.ReplaySubject}});var y=KI();Object.defineProperty(e,"AsyncSubject",{enumerable:!0,get:function(){return y.AsyncSubject}});var _=ire();Object.defineProperty(e,"asap",{enumerable:!0,get:function(){return _.asap}}),Object.defineProperty(e,"asapScheduler",{enumerable:!0,get:function(){return _.asapScheduler}});var g=Di();Object.defineProperty(e,"async",{enumerable:!0,get:function(){return g.async}}),Object.defineProperty(e,"asyncScheduler",{enumerable:!0,get:function(){return g.asyncScheduler}});var a=sre();Object.defineProperty(e,"queue",{enumerable:!0,get:function(){return a.queue}}),Object.defineProperty(e,"queueScheduler",{enumerable:!0,get:function(){return a.queueScheduler}});var d=lre();Object.defineProperty(e,"animationFrame",{enumerable:!0,get:function(){return d.animationFrame}}),Object.defineProperty(e,"animationFrameScheduler",{enumerable:!0,get:function(){return d.animationFrameScheduler}});var p=dre();Object.defineProperty(e,"VirtualTimeScheduler",{enumerable:!0,get:function(){return p.VirtualTimeScheduler}}),Object.defineProperty(e,"VirtualAction",{enumerable:!0,get:function(){return p.VirtualAction}});var u=fK();Object.defineProperty(e,"Scheduler",{enumerable:!0,get:function(){return u.Scheduler}});var m=Ji();Object.defineProperty(e,"Subscription",{enumerable:!0,get:function(){return m.Subscription}});var v=vS();Object.defineProperty(e,"Subscriber",{enumerable:!0,get:function(){return v.Subscriber}});var b=JI();Object.defineProperty(e,"Notification",{enumerable:!0,get:function(){return b.Notification}}),Object.defineProperty(e,"NotificationKind",{enumerable:!0,get:function(){return b.NotificationKind}});var P=YT();Object.defineProperty(e,"pipe",{enumerable:!0,get:function(){return P.pipe}});var C=Vn();Object.defineProperty(e,"noop",{enumerable:!0,get:function(){return C.noop}});var l=En();Object.defineProperty(e,"identity",{enumerable:!0,get:function(){return l.identity}});var S=gre();Object.defineProperty(e,"isObservable",{enumerable:!0,get:function(){return S.isObservable}});var T=yre();Object.defineProperty(e,"lastValueFrom",{enumerable:!0,get:function(){return T.lastValueFrom}});var A=vre();Object.defineProperty(e,"firstValueFrom",{enumerable:!0,get:function(){return A.firstValueFrom}});var x=PK();Object.defineProperty(e,"ArgumentOutOfRangeError",{enumerable:!0,get:function(){return x.ArgumentOutOfRangeError}});var M=Bl();Object.defineProperty(e,"EmptyError",{enumerable:!0,get:function(){return M.EmptyError}});var D=TK();Object.defineProperty(e,"NotFoundError",{enumerable:!0,get:function(){return D.NotFoundError}});var V=lK();Object.defineProperty(e,"ObjectUnsubscribedError",{enumerable:!0,get:function(){return V.ObjectUnsubscribedError}});var R=xK();Object.defineProperty(e,"SequenceError",{enumerable:!0,get:function(){return R.SequenceError}});var E=hT();Object.defineProperty(e,"TimeoutError",{enumerable:!0,get:function(){return E.TimeoutError}});var I=oK();Object.defineProperty(e,"UnsubscriptionError",{enumerable:!0,get:function(){return I.UnsubscriptionError}});var B=bre();Object.defineProperty(e,"bindCallback",{enumerable:!0,get:function(){return B.bindCallback}});var w=_re();Object.defineProperty(e,"bindNodeCallback",{enumerable:!0,get:function(){return w.bindNodeCallback}});var O=tw();Object.defineProperty(e,"combineLatest",{enumerable:!0,get:function(){return O.combineLatest}});var F=e2();Object.defineProperty(e,"concat",{enumerable:!0,get:function(){return F.concat}});var L=Sre();Object.defineProperty(e,"connectable",{enumerable:!0,get:function(){return L.connectable}});var U=t2();Object.defineProperty(e,"defer",{enumerable:!0,get:function(){return U.defer}});var q=ka();Object.defineProperty(e,"empty",{enumerable:!0,get:function(){return q.empty}});var N=Cre();Object.defineProperty(e,"forkJoin",{enumerable:!0,get:function(){return N.forkJoin}});var k=Zs();Object.defineProperty(e,"from",{enumerable:!0,get:function(){return k.from}});var j=Pre();
17Object.defineProperty(e,"fromEvent",{enumerable:!0,get:function(){return j.fromEvent}});var H=Tre();Object.defineProperty(e,"fromEventPattern",{enumerable:!0,get:function(){return H.fromEventPattern}});var G=xre();Object.defineProperty(e,"generate",{enumerable:!0,get:function(){return G.generate}});var z=Are();Object.defineProperty(e,"iif",{enumerable:!0,get:function(){return z.iif}});var W=IK();Object.defineProperty(e,"interval",{enumerable:!0,get:function(){return W.interval}});var X=Mre();Object.defineProperty(e,"merge",{enumerable:!0,get:function(){return X.merge}});var Y=$L();Object.defineProperty(e,"never",{enumerable:!0,get:function(){return Y.never}});var K=ZI();Object.defineProperty(e,"of",{enumerable:!0,get:function(){return K.of}});var Q=wK();Object.defineProperty(e,"onErrorResumeNext",{enumerable:!0,get:function(){return Q.onErrorResumeNext}});var J=Dre();Object.defineProperty(e,"pairs",{enumerable:!0,get:function(){return J.pairs}});var ae=Ire();Object.defineProperty(e,"partition",{enumerable:!0,get:function(){return ae.partition}});var te=EK();Object.defineProperty(e,"race",{enumerable:!0,get:function(){return te.race}});var ne=wre();Object.defineProperty(e,"range",{enumerable:!0,get:function(){return ne.range}});var $=CK();Object.defineProperty(e,"throwError",{enumerable:!0,get:function(){return $.throwError}});var ie=Ol();Object.defineProperty(e,"timer",{enumerable:!0,get:function(){return ie.timer}});var Z=Vre();Object.defineProperty(e,"using",{enumerable:!0,get:function(){return Z.using}});var re=nw();Object.defineProperty(e,"zip",{enumerable:!0,get:function(){return re.zip}});var oe=SK();Object.defineProperty(e,"scheduled",{enumerable:!0,get:function(){return oe.scheduled}});var ce=ka();Object.defineProperty(e,"EMPTY",{enumerable:!0,get:function(){return ce.EMPTY}});var ue=$L();Object.defineProperty(e,"NEVER",{enumerable:!0,get:function(){return ue.NEVER}}),r(Ere(),e);var pe=yS();Object.defineProperty(e,"config",{enumerable:!0,get:function(){return pe.config}});var he=iw();Object.defineProperty(e,"audit",{enumerable:!0,get:function(){return he.audit}});var fe=BK();Object.defineProperty(e,"auditTime",{enumerable:!0,get:function(){return fe.auditTime}});var de=RK();Object.defineProperty(e,"buffer",{enumerable:!0,get:function(){return de.buffer}});var ge=OK();Object.defineProperty(e,"bufferCount",{enumerable:!0,get:function(){return ge.bufferCount}});var Ce=kK();Object.defineProperty(e,"bufferTime",{enumerable:!0,get:function(){return Ce.bufferTime}});var ve=FK();Object.defineProperty(e,"bufferToggle",{enumerable:!0,get:function(){return ve.bufferToggle}});var le=LK();Object.defineProperty(e,"bufferWhen",{enumerable:!0,get:function(){return le.bufferWhen}});var me=NK();Object.defineProperty(e,"catchError",{enumerable:!0,get:function(){return me.catchError}});var ee=jK();Object.defineProperty(e,"combineAll",{enumerable:!0,get:function(){return ee.combineAll}});var se=ow();Object.defineProperty(e,"combineLatestAll",{enumerable:!0,get:function(){return se.combineLatestAll}});var ye=zK();Object.defineProperty(e,"combineLatestWith",{enumerable:!0,get:function(){return ye.combineLatestWith}});var Se=JT();Object.defineProperty(e,"concatAll",{enumerable:!0,get:function(){return Se.concatAll}});var Ae=sw();Object.defineProperty(e,"concatMap",{enumerable:!0,get:function(){return Ae.concatMap}});var _e=HK();Object.defineProperty(e,"concatMapTo",{enumerable:!0,get:function(){return _e.concatMapTo}});var be=$K();Object.defineProperty(e,"concatWith",{enumerable:!0,get:function(){return be.concatWith}});var xe=r2();Object.defineProperty(e,"connect",{enumerable:!0,get:function(){return xe.connect}});var we=XK();Object.defineProperty(e,"count",{enumerable:!0,get:function(){return we.count}});var Be=KK();Object.defineProperty(e,"debounce",{enumerable:!0,get:function(){return Be.debounce}});var Me=YK();Object.defineProperty(e,"debounceTime",{enumerable:!0,get:function(){return Me.debounceTime}});var Re=TS();Object.defineProperty(e,"defaultIfEmpty",{enumerable:!0,get:function(){return Re.defaultIfEmpty}});var Te=QK();Object.defineProperty(e,"delay",{enumerable:!0,get:function(){return Te.delay}});var Ve=lw();Object.defineProperty(e,"delayWhen",{enumerable:!0,get:function(){return Ve.delayWhen}});var qe=ZK();Object.defineProperty(e,"dematerialize",{enumerable:!0,get:function(){return qe.dematerialize}});var ke=JK();Object.defineProperty(e,"distinct",{enumerable:!0,get:function(){return ke.distinct}});var ze=dw();Object.defineProperty(e,"distinctUntilChanged",{enumerable:!0,get:function(){return ze.distinctUntilChanged}});var We=eY();Object.defineProperty(e,"distinctUntilKeyChanged",{enumerable:!0,get:function(){return We.distinctUntilKeyChanged}});var Je=tY();Object.defineProperty(e,"elementAt",{enumerable:!0,get:function(){return Je.elementAt}});var De=rY();Object.defineProperty(e,"endWith",{enumerable:!0,get:function(){return De.endWith}});var Oe=nY();Object.defineProperty(e,"every",{enumerable:!0,get:function(){return Oe.every}});var Fe=iY();Object.defineProperty(e,"exhaust",{enumerable:!0,get:function(){return Fe.exhaust}});var Le=mw();Object.defineProperty(e,"exhaustAll",{enumerable:!0,get:function(){return Le.exhaustAll}});var He=fw();Object.defineProperty(e,"exhaustMap",{enumerable:!0,get:function(){return He.exhaustMap}});var Pe=aY();Object.defineProperty(e,"expand",{enumerable:!0,get:function(){return Pe.expand}});var Ie=ec();Object.defineProperty(e,"filter",{enumerable:!0,get:function(){return Ie.filter}});var Ee=oY();Object.defineProperty(e,"finalize",{enumerable:!0,get:function(){return Ee.finalize}});var Ue=pw();Object.defineProperty(e,"find",{enumerable:!0,get:function(){return Ue.find}});var $e=sY();Object.defineProperty(e,"findIndex",{enumerable:!0,get:function(){return $e.findIndex}});var Ye=cY();Object.defineProperty(e,"first",{enumerable:!0,get:function(){return Ye.first}});var Qe=uY();Object.defineProperty(e,"groupBy",{enumerable:!0,get:function(){return Qe.groupBy}
17});var it=cw();Object.defineProperty(e,"ignoreElements",{enumerable:!0,get:function(){return it.ignoreElements}});var ht=lY();Object.defineProperty(e,"isEmpty",{enumerable:!0,get:function(){return ht.isEmpty}});var mt=dY();Object.defineProperty(e,"last",{enumerable:!0,get:function(){return mt.last}});var St=Js();Object.defineProperty(e,"map",{enumerable:!0,get:function(){return St.map}});var Bt=uw();Object.defineProperty(e,"mapTo",{enumerable:!0,get:function(){return Bt.mapTo}});var Ot=fY();Object.defineProperty(e,"materialize",{enumerable:!0,get:function(){return Ot.materialize}});var br=mY();Object.defineProperty(e,"max",{enumerable:!0,get:function(){return br.max}});var Ir=PS();Object.defineProperty(e,"mergeAll",{enumerable:!0,get:function(){return Ir.mergeAll}});var Cn=pY();Object.defineProperty(e,"flatMap",{enumerable:!0,get:function(){return Cn.flatMap}});var Fn=ss();Object.defineProperty(e,"mergeMap",{enumerable:!0,get:function(){return Fn.mergeMap}});var ei=hY();Object.defineProperty(e,"mergeMapTo",{enumerable:!0,get:function(){return ei.mergeMapTo}});var Ze=gY();Object.defineProperty(e,"mergeScan",{enumerable:!0,get:function(){return Ze.mergeScan}});var ot=vY();Object.defineProperty(e,"mergeWith",{enumerable:!0,get:function(){return ot.mergeWith}});var pt=bY();Object.defineProperty(e,"min",{enumerable:!0,get:function(){return pt.min}});var xt=n2();Object.defineProperty(e,"multicast",{enumerable:!0,get:function(){return xt.multicast}});var pr=SS();Object.defineProperty(e,"observeOn",{enumerable:!0,get:function(){return pr.observeOn}});var Rr=_Y();Object.defineProperty(e,"onErrorResumeNextWith",{enumerable:!0,get:function(){return Rr.onErrorResumeNextWith}});var Qt=SY();Object.defineProperty(e,"pairwise",{enumerable:!0,get:function(){return Qt.pairwise}});var tr=CY();Object.defineProperty(e,"pluck",{enumerable:!0,get:function(){return tr.pluck}});var Fr=PY();Object.defineProperty(e,"publish",{enumerable:!0,get:function(){return Fr.publish}});var un=TY();Object.defineProperty(e,"publishBehavior",{enumerable:!0,get:function(){return un.publishBehavior}});var Pn=xY();Object.defineProperty(e,"publishLast",{enumerable:!0,get:function(){return Pn.publishLast}});var Ln=AY();Object.defineProperty(e,"publishReplay",{enumerable:!0,get:function(){return Ln.publishReplay}});var ti=gw();Object.defineProperty(e,"raceWith",{enumerable:!0,get:function(){return ti.raceWith}});var je=qf();Object.defineProperty(e,"reduce",{enumerable:!0,get:function(){return je.reduce}});var tt=MY();Object.defineProperty(e,"repeat",{enumerable:!0,get:function(){return tt.repeat}});var ut=DY();Object.defineProperty(e,"repeatWhen",{enumerable:!0,get:function(){return ut.repeatWhen}});var Pt=IY();Object.defineProperty(e,"retry",{enumerable:!0,get:function(){return Pt.retry}});var Wt=wY();Object.defineProperty(e,"retryWhen",{enumerable:!0,get:function(){return Wt.retryWhen}});var kt=WI();Object.defineProperty(e,"refCount",{enumerable:!0,get:function(){return kt.refCount}});var ar=yw();Object.defineProperty(e,"sample",{enumerable:!0,get:function(){return ar.sample}});var Qr=VY();Object.defineProperty(e,"sampleTime",{enumerable:!0,get:function(){return Qr.sampleTime}});var Lr=EY();Object.defineProperty(e,"scan",{enumerable:!0,get:function(){return Lr.scan}});var Ei=BY();Object.defineProperty(e,"sequenceEqual",{enumerable:!0,get:function(){return Ei.sequenceEqual}});var Bi=vw();Object.defineProperty(e,"share",{enumerable:!0,get:function(){return Bi.share}});var Ri=RY();Object.defineProperty(e,"shareReplay",{enumerable:!0,get:function(){return Ri.shareReplay}});var ys=OY();Object.defineProperty(e,"single",{enumerable:!0,get:function(){return ys.single}});var zr=kY();Object.defineProperty(e,"skip",{enumerable:!0,get:function(){return zr.skip}});var Zr=FY();Object.defineProperty(e,"skipLast",{enumerable:!0,get:function(){return Zr.skipLast}});var ri=LY();Object.defineProperty(e,"skipUntil",{enumerable:!0,get:function(){return ri.skipUntil}});var fi=NY();Object.defineProperty(e,"skipWhile",{enumerable:!0,get:function(){return fi.skipWhile}});var xr=qY();Object.defineProperty(e,"startWith",{enumerable:!0,get:function(){return xr.startWith}});var hn=CS();Object.defineProperty(e,"subscribeOn",{enumerable:!0,get:function(){return hn.subscribeOn}});var fc=UY();Object.defineProperty(e,"switchAll",{enumerable:!0,get:function(){return fc.switchAll}});var mc=MS();Object.defineProperty(e,"switchMap",{enumerable:!0,get:function(){return mc.switchMap}});var pc=jY();Object.defineProperty(e,"switchMapTo",{enumerable:!0,get:function(){return pc.switchMapTo}});var iC=GY();Object.defineProperty(e,"switchScan",{enumerable:!0,get:function(){return iC.switchScan}});var Xe=xS();Object.defineProperty(e,"take",{enumerable:!0,get:function(){return Xe.take}});var st=hw();Object.defineProperty(e,"takeLast",{enumerable:!0,get:function(){return st.takeLast}});var Dt=zY();Object.defineProperty(e,"takeUntil",{enumerable:!0,get:function(){return Dt.takeUntil}});var Mt=HY();Object.defineProperty(e,"takeWhile",{enumerable:!0,get:function(){return Mt.takeWhile}});var Nt=WY();Object.defineProperty(e,"tap",{enumerable:!0,get:function(){return Nt.tap}});var Hr=bw();Object.defineProperty(e,"throttle",{enumerable:!0,get:function(){return Hr.throttle}});var ln=$Y();Object.defineProperty(e,"throttleTime",{enumerable:!0,get:function(){return ln.throttleTime}});var Nr=AS();Object.defineProperty(e,"throwIfEmpty",{enumerable:!0,get:function(){return Nr.throwIfEmpty}});var ao=XY();Object.defineProperty(e,"timeInterval",{enumerable:!0,get:function(){return ao.timeInterval}});var ct=hT();Object.defineProperty(e,"timeout",{enumerable:!0,get:function(){return ct.timeout}});var Tn=KY();Object.defineProperty(e,"timeoutWith",{enumerable:!0,get:function(){return Tn.timeoutWith}});var zl=YY();Object.defineProperty(e,"timestamp",{enumerable:!0,get:function(){return zl.timestamp}});var ni=aw();Object.defineProperty(e,"toArray",{enumerable:!0,get:function(){return ni.toArray}});var T2=QY();Object.defineProperty(e,"window",{enumerable:!0,get:function(){return T2.window}
17});var VZ=ZY();Object.defineProperty(e,"windowCount",{enumerable:!0,get:function(){return VZ.windowCount}});var EZ=JY();Object.defineProperty(e,"windowTime",{enumerable:!0,get:function(){return EZ.windowTime}});var BZ=eQ();Object.defineProperty(e,"windowToggle",{enumerable:!0,get:function(){return BZ.windowToggle}});var RZ=tQ();Object.defineProperty(e,"windowWhen",{enumerable:!0,get:function(){return RZ.windowWhen}});var OZ=rQ();Object.defineProperty(e,"withLatestFrom",{enumerable:!0,get:function(){return OZ.withLatestFrom}});var kZ=nQ();Object.defineProperty(e,"zipAll",{enumerable:!0,get:function(){return kZ.zipAll}});var FZ=aQ();Object.defineProperty(e,"zipWith",{enumerable:!0,get:function(){return FZ.zipWith}})})(Rc)),Rc}var jx={},Gx={},hu={},nq;function Kn(){if(nq)return hu;nq=1,Object.defineProperty(hu,"__esModule",{value:!0}),hu.Viewport=r,hu.cameraProject=i,hu.cameraUnproject=c;const e=wt(),t=Fa();function r(){return r.zero()}(function(o){function s(){return{x:0,y:0,width:0,height:0}}o.zero=s;function h(d,p,u,m){return{x:d,y:p,width:u,height:m}}o.create=h;function f(d){return{...d}}o.clone=f;function y(d,p){return Object.assign(d,p)}o.copy=y;function _(d,p,u,m,v){return d.x=p,d.y=u,d.width=m,d.height=v,d}o.set=_;function g(d,p){return d[0]=p.x,d[1]=p.y,d[2]=p.width,d[3]=p.height,d}o.toVec4=g;function a(d,p){return d.x===p.x&&d.y===p.y&&d.width===p.width&&d.height===p.height}o.equals=a})(r||(hu.Viewport=r={}));const n=(0,t.Vec4)();function i(o,s,h,f){const{x:y,y:_,width:g,height:a}=h;t.Vec4.set(n,s[0],s[1],s[2],1),t.Vec4.transformMat4(n,n,f);const d=n[3];return d!==0&&(n[0]/=d,n[1]/=d,n[2]/=d),o[0]=(n[0]+1)*g*.5+y,o[1]=(n[1]+1)*a*.5+_,o[2]=(n[2]+1)*.5,o[3]=d===0?0:1/d,o}function c(o,s,h,f){const{x:y,y:_,width:g,height:a}=h,d=s[0]-y,p=s[1]-_,u=s[2];return o[0]=2*d/g-1,o[1]=2*p/a-1,o[2]=2*u-1,e.Vec3.transformMat4(o,o,f)}return hu}var iq;function cs(){return iq||(iq=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InputObserver=e.EmptyKeyInput=e.ButtonsType=e.ModifiersKeys=e.DefaultInputObserverProps=void 0,e.getButtons=h,e.getButton=f,e.getModifiers=y,e.normalizeWheel=m;const t=Rn(),r=Kn(),n=ns(),i=wt(),c=rn(),o=Y_(),s=et();function h(v){if(typeof v=="object"){if("buttons"in v)return v.buttons;if("which"in v){const b=v.which;if(b===2)return 4;if(b===3)return 2;if(b>0)return 1<<b-1}}return 0}function f(v){if(typeof v=="object"&&"button"in v){const b=v.button;if(b===1)return 4;if(b===2)return 2;if(b>=0)return 1<<b}return 0}function y(v){return{alt:"altKey"in v?v.altKey:!1,shift:"shiftKey"in v?v.shiftKey:!1,control:"ctrlKey"in v?v.ctrlKey:!1,meta:"metaKey"in v?v.metaKey:!1}}e.DefaultInputObserverProps={noScroll:!0,noMiddleClickScroll:!0,noContextMenu:!0,noPinchZoom:!0,noTextSelect:!0,preventGestures:!1,mask:(v,b)=>!0,pixelScale:1};var _;(function(v){v.None=l();function b(S,T){return S.shift===T.shift&&S.alt===T.alt&&S.control===T.control&&S.meta===T.meta}v.areEqual=b;function P(S){return b(S,v.None)}v.areNone=P;function C(S){if(!S)return 0;let T=0;return S.shift&&T++,S.alt&&T++,S.control&&T++,S.meta&&T++,T}v.size=C;function l(S={}){return{shift:!!S.shift,alt:!!S.alt,control:!!S.control,meta:!!S.meta}}v.create=l})(_||(e.ModifiersKeys=_={}));var g;(function(v){v.has=o.BitFlags.has,v.create=o.BitFlags.create,(function(b){b[b.None=0]="None",b[b.Primary=1]="Primary",b[b.Secondary=2]="Secondary",b[b.Auxilary=4]="Auxilary",b[b.Forth=8]="Forth",b[b.Five=16]="Five",b[b.Trigger=32]="Trigger",b[b.Squeeze=48]="Squeeze"})(v.Flag||(v.Flag={}))})(g||(e.ButtonsType=g={})),e.EmptyKeyInput={key:"",code:"",modifiers:_.None,x:-1,y:-1,pageX:-1,pageY:-1,preventDefault:s.noop};var a;(function(v){v[v.Stopped=0]="Stopped",v[v.Started=1]="Started",v[v.Moving=2]="Moving"})(a||(a={}));function d(){return{drag:new t.Subject,interactionEnd:new t.Subject,click:new t.Subject,move:new t.Subject,wheel:new t.Subject,pinch:new t.Subject,gesture:new t.Subject,resize:new t.Subject,leave:new t.Subject,enter:new t.Subject,modifiers:new t.Subject,key:new t.Subject,keyUp:new t.Subject,keyDown:new t.Subject,lock:new t.Subject,trackedPointers:new t.Subject}}const p=["Backspace","Delete"];var u;(function(v){function b(C={}){const{noScroll:l,noContextMenu:S}={...e.DefaultInputObserverProps,...C};return{noScroll:l,noContextMenu:S,pointerLock:!1,width:0,height:0,pixelRatio:1,...d(),setPixelScale:s.noop,updateTrackedPointers:s.noop,updateScreenTouches:s.noop,requestPointerLock:s.noop,exitPointerLock:s.noop,dispose:s.noop}}v.create=b;function P(C,l={}){let{noScroll:S,noMiddleClickScroll:T,noContextMenu:A,noPinchZo
17om:x,noTextSelect:M,mask:D,pixelScale:V,preventGestures:R}={...e.DefaultInputObserverProps,...l},E=C.clientWidth*j(),I=C.clientHeight*j(),B=!1,w=(0,r.Viewport)();const O=(0,n.Vec2)(),F=(0,n.Vec2)(),L=(0,n.Vec2)(),U=(0,n.Vec2)(),q=(0,n.Vec2)(),N={shift:!1,alt:!1,control:!1,meta:!1},k={x:-1,y:-1,pageX:-1,pageY:-1};function j(){return window.devicePixelRatio*V}function H(){return{...N}}function G(je){return je.target===document.body||je.target===C}let z=a.Stopped,W=!1,X=g.create(g.Flag.None),Y=g.Flag.None,K=!1,Q=!1,J;typeof window.ResizeObserver<"u"&&(J=new window.ResizeObserver(pr));const ae=d(),{drag:te,interactionEnd:ne,wheel:$,pinch:ie,gesture:Z,click:re,move:oe,leave:ce,enter:ue,resize:pe,modifiers:he,key:fe,keyUp:de,keyDown:ge,lock:Ce,trackedPointers:ve}=ae;le();function le(){C.addEventListener("contextmenu",ye,!1),C.addEventListener("wheel",Ir,!1),C.addEventListener("mousedown",it,!1),window.addEventListener("mousemove",ht,!1),window.addEventListener("mouseup",mt,!1),C.addEventListener("touchstart",$e,!1),C.addEventListener("touchmove",Qe,!1),C.addEventListener("touchend",Ye,!1),C.addEventListener("gesturechange",pt,!1),C.addEventListener("gesturestart",Ze,!1),C.addEventListener("gestureend",xt,!1),window.addEventListener("blur",Ae),window.addEventListener("keyup",be,!1),window.addEventListener("keydown",_e,!1),window.addEventListener("keypress",xe,!1),document.addEventListener("pointerlockchange",ee,!1),document.addEventListener("pointerlockerror",se,!1),J!=null?J.observe(C.parentElement):window.addEventListener("resize",pr,!1)}function me(){W||(W=!0,C.removeEventListener("contextmenu",ye,!1),C.removeEventListener("wheel",Ir,!1),C.removeEventListener("mousedown",it,!1),window.removeEventListener("mousemove",ht,!1),window.removeEventListener("mouseup",mt,!1),C.removeEventListener("touchstart",$e,!1),C.removeEventListener("touchmove",Qe,!1),C.removeEventListener("touchend",Ye,!1),C.removeEventListener("gesturechange",pt,!1),C.removeEventListener("gesturestart",Ze,!1),C.removeEventListener("gestureend",xt,!1),window.removeEventListener("blur",Ae),window.removeEventListener("keyup",be,!1),window.removeEventListener("keydown",_e,!1),window.removeEventListener("keypress",xe,!1),document.removeEventListener("pointerlockchange",ee,!1),document.removeEventListener("pointerlockerror",se,!1),Pn.remove(),J!=null?(J.unobserve(C.parentElement),J.disconnect()):window.removeEventListener("resize",pr,!1))}function ee(){C.ownerDocument.pointerLockElement===C?B=!0:B=!1,ti(B),Ce.next(B)}function se(){console.error("Unable to use Pointer Lock API"),B=!1,ti(B),Ce.next(B)}function ye(je){D(je.clientX,je.clientY)&&A&&je.preventDefault()}function Se(je){N.alt=je.altKey,N.shift=je.shiftKey,N.control=je.ctrlKey,N.meta=je.metaKey}function Ae(){(X||N.shift||N.alt||N.meta||N.control)&&(X=0,N.shift=N.alt=N.control=N.meta=!1)}function _e(je){let tt=!1;!N.alt&&je.altKey&&(tt=!0,N.alt=!0),!N.shift&&je.shiftKey&&(tt=!0,N.shift=!0),!N.control&&je.ctrlKey&&(tt=!0,N.control=!0),!N.meta&&je.metaKey&&(tt=!0,N.meta=!0),tt&&K&&he.next(H()),G(je)&&K&&ge.next({key:je.key,code:je.code,modifiers:H(),...k,preventDefault:()=>je.preventDefault()})}function be(je){let tt=!1;N.alt&&!je.altKey&&(tt=!0,N.alt=!1),N.shift&&!je.shiftKey&&(tt=!0,N.shift=!1),N.control&&!je.ctrlKey&&(tt=!0,N.control=!1),N.meta&&!je.metaKey&&(tt=!0,N.meta=!1),tt&&K&&he.next(H()),p.includes(je.key)&&xe(je),G(je)&&K&&de.next({key:je.key,code:je.code,modifiers:H(),...k,preventDefault:()=>je.preventDefault()})}function xe(je){!G(je)||!K||fe.next({key:je.key,code:je.code,modifiers:H(),...k,preventDefault:()=>je.preventDefault()})}const we={primary:{prev:void 0,down:(0,n.Vec2)(),end:(0,n.Vec2)(),axes:[]},secondary:{prev:void 0,down:(0,n.Vec2)(),end:(0,n.Vec2)(),axes:[]},distance:-1};function Be(je,tt,ut){const Pt=g.has(tt,je);return(ut?g.has(ut,je):!1)&&!Pt}function Me(je,tt){const{x:ut,y:Pt,dx:Wt,dy:kt,ray:ar,buttons:Qr,axes:Lr}=je,[Ei,Bi]=[ut,Pt],Ri=_.create(),ys=!0,zr=tt?we.secondary:we.primary,{prev:Zr}=zr;Qr===g.Flag.Secondary?oe.next({x:ut,y:Pt,pageX:Ei,pageY:Bi,buttons:g.Flag.None,button:g.Flag.None,modifiers:Ri,inside:!0,onElement:!0,ray:ar}):Zr?.buttons===g.Flag.Secondary&&ce.next(void 0);const ri=g.has(Qr,g.Flag.Primary),fi=Zr?g.has(Zr.buttons,g.Flag.Primary):!1;
17if(fi&&!ri&&(n.Vec2.set(zr.end,ut,Pt),n.Vec2.distance(zr.end,zr.down)<20&&re.next({x:ut,y:Pt,pageX:Ei,pageY:Bi,buttons:g.Flag.Trigger,button:g.Flag.Trigger,modifiers:Ri,ray:ar}),ne.next(void 0)),ri){const hn=!fi;te.next({x:ut,y:Pt,dx:Wt,dy:kt,pageX:Ei,pageY:Bi,buttons:g.Flag.Trigger,button:g.Flag.Trigger,modifiers:Ri,isStart:hn,useDelta:ys}),hn&&n.Vec2.set(zr.down,ut,Pt)}const xr={x:0,y:0,pageX:0,pageY:0,modifiers:Ri,preventDefault:()=>{}};if(Be(g.Flag.Forth,Qr,Zr?.buttons)){const hn=tt?"GamepadX":"GamepadA";de.next({...xr,code:hn,key:hn})}if(Be(g.Flag.Five,Qr,Zr?.buttons)){const hn=tt?"GamepadY":"GamepadB";de.next({...xr,code:hn,key:hn})}Lr&&(Lr[2]<0?(ge.next({...xr,code:"GamepadLeft",key:"GamepadLeft"}),de.next({...xr,code:"GamepadRight",key:"GamepadRight"})):Lr[2]>0?(ge.next({...xr,code:"GamepadRight",key:"GamepadRight"}),de.next({...xr,code:"GamepadLeft",key:"GamepadLeft"})):Lr[2]!==zr.axes[2]&&(de.next({...xr,code:"GamepadLeft",key:"GamepadLeft"}),de.next({...xr,code:"GamepadRight",key:"GamepadRight"})),Lr[3]<0?(ge.next({...xr,code:"GamepadUp",key:"GamepadUp"}),de.next({...xr,code:"GamepadDown",key:"GamepadDown"})):Lr[3]>0?(ge.next({...xr,code:"GamepadDown",key:"GamepadDown"}),de.next({...xr,code:"GamepadUp",key:"GamepadUp"})):Lr[3]!==zr.axes[3]&&(de.next({...xr,code:"GamepadUp",key:"GamepadUp"}),de.next({...xr,code:"GamepadDown",key:"GamepadDown"}))),zr.axes=Lr||[],zr.prev=je}function Re(je,tt,ut){const Pt=i.Vec3.distance(je.ray.origin,tt.ray.origin);if(we.distance>0){const Wt=Pt/we.distance;Z.next({scale:Wt,rotation:0,deltaScale:0,deltaRotation:0,buttons:ut,button:ut,modifiers:H()})}we.distance=Pt}function Te(je){let tt,ut;for(const Pt of je)Pt.handedness==="right"?tt=Pt:Pt.handedness==="left"&&(ut=Pt);!tt&&ut&&(tt=ut,ut=void 0),tt?.buttons===g.Flag.Primary&&ut?.buttons===g.Flag.Primary?Re(tt,ut,g.Flag.Trigger):tt?.buttons===g.Flag.Secondary&&ut?.buttons===g.Flag.Secondary?Re(tt,ut,g.Flag.Squeeze):(we.distance===-1&&(tt&&Me(tt,!1),ut&&Me(ut,!0)),!tt?.buttons&&!ut?.buttons&&(we.distance=-1))}let Ve,qe,ke=-1;function ze(je){if(je.length===2){const zr=n.Vec2.fromObj(je[0]),Zr=n.Vec2.fromObj(je[1]),ri=n.Vec2.distance(zr,Zr),fi=g.Flag.Trigger;if(ke>0){const xr=ri/ke;Z.next({scale:xr,rotation:0,deltaScale:0,deltaRotation:0,buttons:fi,button:fi,modifiers:H()})}ke=ri,Ve=void 0;return}ke=-1;const tt=je[0];if(!tt){if(qe&&Ve){const zr=n.Vec2.fromObj(qe),Zr=n.Vec2.fromObj(Ve);if(n.Vec2.distance(zr,Zr)<10){const[ri,fi]=zr,[xr,hn]=[ri,fi],fc=_.create(),mc=g.Flag.Trigger,{ray:pc}=qe;re.next({x:ri,y:fi,pageX:xr,pageY:hn,buttons:mc,button:mc,modifiers:fc,ray:pc})}ne.next(void 0)}Ve=void 0,qe=void 0;return}const ut=n.Vec2.fromObj(tt),[Pt,Wt]=ut,[kt,ar]=[Pt,Wt],Qr=_.create(),Lr=g.Flag.Trigger,Ei=!0,Bi=Ve===void 0,Ri=Ve?Pt-Ve.x:0,ys=Ve?Wt-Ve.y:0;Ve=tt,Bi&&(qe=tt),te.next({x:Pt,y:Wt,dx:Ri,dy:ys,pageX:kt,pageY:ar,buttons:Lr,button:Lr,modifiers:Qr,isStart:Bi,useDelta:Ei})}function We(je){const tt=je.touches[0],ut=je.touches[1];return{clientX:(tt.clientX+ut.clientX)/2,clientY:(tt.clientY+ut.clientY)/2,pageX:(tt.pageX+ut.pageX)/2,pageY:(tt.pageY+ut.pageY)/2,target:je.target}}function Je(je){const tt=je.touches[0].pageX-je.touches[1].pageX,ut=je.touches[0].pageY-je.touches[1].pageY;return Math.sqrt(tt*tt+ut*ut)}let De=-1,Oe;const Fe=(0,n.Vec2)(),Le=(0,n.Vec2)();function He(je){De<0||(n.Vec2.set(Le,je.touches[0].pageX,je.touches[0].pageY),De+=n.Vec2.distance(Fe,Le),n.Vec2.copy(Fe,Le))}const Pe=(0,n.Vec2)();let Ie=!1,Ee=0,Ue=1;function $e(je){if(je.preventDefault(),Oe=void 0,De=-1,je.touches.length===1)X=Y=g.Flag.Primary,De=0,n.Vec2.set(Fe,je.touches[0].pageX,je.touches[0].pageY),Oe=je.touches[0],Bt(je.touches[0]),n.Vec2.copy(Pe,F),Ie=!0;else if(je.touches.length===2){X=g.Flag.Secondary|g.Flag.Auxilary,Y=g.Flag.Secondary,Se(je),Ue=1,Ee=Je(je);const{pageX:tt,pageY:ut}=Fr(We(je));Ie||(tr(Pe,We(je)),Ie=!0),ie.next({isStart:!0,distance:Ee,delta:0,fraction:Ue,fractionDelta:0,startX:Pe[0],startY:Pe[1],centerPageX:tt,centerPageY:ut,buttons:X,button:Y,modifiers:H()})}else je.touches.length===3&&(X=Y=g.Flag.Forth,Bt(We(je)))}function Ye(je){if(St(),Oe&&De<=4){const tt=Oe;if(!D(tt.clientX,tt.clientY))return;tr(Le,tt);const{pageX:ut,pageY:Pt}=Fr(tt),[Wt,kt]=Le;re.next({x:Wt,y:kt,pageX:ut,pageY:Pt,buttons:X,button:Y,modifiers:H()})}Oe=void 0,Ie=!1}function Qe(je){if(Y=g.Flag.None,x&&(je.preventDefault(),je.stopPropagation(),je.originalEvent&&(je.originalEvent.preventDefault(),je.originalEvent.stopPropagation())),Oe=void 0,je.touches.length===1)X=g.Flag.Primary,Oe=je.touches[0],He(je),br(je.touches[0]);else if(je.touches.length===2){X=g.Flag.Secondary|g.Flag.Auxilary,Y=g.Flag.Secondary,Se(je);const{pageX:tt,pageY:ut}=Fr(We(je)),Pt=Je(je),Wt=Ee-Pt,kt=Ee/Pt,ar=kt-Ue;Ue=kt,ie.next({isStart:!1,distance:Pt,delta:Wt,fraction:kt,fractionDelta:ar,startX:Pe[0],startY:Pe[1],centerPageX:tt,centerPageY:ut,buttons:X,button:Y,modifiers:H()})}else je.touches.length===3&&(X=g.Flag.Forth,br(We(je)))}
17function it(je){Se(je),X=h(je),Y=f(je),T&&X===g.Flag.Auxilary&&je.preventDefault,Bt(je)}function ht(je){Se(je),X=h(je),Y=g.Flag.None,br(je)}function mt(je){Se(je),X=h(je),Y=f(je),Ot(je),St()}function St(){ne.next(void 0)}function Bt(je){D(je.clientX,je.clientY)&&(tr(F,je),n.Vec2.copy(O,F),Rr(F)&&(z=a.Started))}function Ot(je){if(z=a.Stopped,!!D(je.clientX,je.clientY)){if(tr(L,je),!Q&&n.Vec2.distance(L,O)<4){const{pageX:tt,pageY:ut}=Fr(je),[Pt,Wt]=L;re.next({x:Pt,y:Wt,pageX:tt,pageY:ut,buttons:X,button:Y,modifiers:H()})}Q=!1}}function br(je){var tt;tr(L,je);const{pageX:ut,pageY:Pt}=Fr(je),[Wt,kt]=L,{movementX:ar,movementY:Qr}=je,Lr=Rr(L)&&D(je.clientX,je.clientY);if(K&&!Lr?ce.next(void 0):!K&&Lr&&ue.next(void 0),K=Lr,k.x=Wt,k.y=kt,k.pageX=ut,k.pageY=Pt,oe.next({x:Wt,y:kt,pageX:ut,pageY:Pt,movementX:ar,movementY:Qr,buttons:X,button:Y,modifiers:H(),inside:Lr,onElement:je.target===C}),z===a.Stopped||(M&&((tt=je.preventDefault)===null||tt===void 0||tt.call(je)),n.Vec2.div(U,n.Vec2.sub(U,L,F),Qt(q)),n.Vec2.magnitude(U)<c.EPSILON))return;const Ei=z===a.Started;if(Ei&&!D(je.clientX,je.clientY))return;n.Vec2.distance(L,O)>=4&&(Q=!0);const[Bi,Ri]=U;te.next({x:Wt,y:kt,dx:Bi,dy:Ri,pageX:ut,pageY:Pt,buttons:X,button:Y,modifiers:H(),isStart:Ei}),n.Vec2.copy(F,L),z=a.Moving}function Ir(je){if(!D(je.clientX,je.clientY))return;tr(L,je);const{pageX:tt,pageY:ut}=Fr(je),[Pt,Wt]=L;S&&je.preventDefault();const kt=m(je);X=Y=g.Flag.Auxilary,(kt.dx||kt.dy||kt.dz)&&$.next({x:Pt,y:Wt,pageX:tt,pageY:ut,...kt,buttons:X,button:Y,modifiers:H()})}function Cn(je){var tt,ut;R&&(je.preventDefault(),(tt=je.stopImmediatePropagation)===null||tt===void 0||tt.call(je),(ut=je.stopPropagation)===null||ut===void 0||ut.call(je))}let Fn=0,ei=0;function Ze(je){Cn(je),Fn=je.scale,ei=je.rotation,Z.next({scale:je.scale,rotation:je.rotation,deltaRotation:0,deltaScale:0,isStart:!0,buttons:X,button:Y,modifiers:H()})}function ot(je,tt){Z.next({scale:je.scale,rotation:je.rotation,deltaRotation:ei-je.rotation,deltaScale:Fn-je.scale,isEnd:tt,buttons:X,button:Y,modifiers:H()}),ei=je.rotation,Fn=je.scale}function pt(je){Cn(je),ot(je)}function xt(je){Cn(je),ot(je,!0)}function pr(){E=C.clientWidth*j(),I=C.clientHeight*j(),pe.next({})}function Rr(je){if(C instanceof Window||C instanceof Document||C===document.body)return!0;{const tt=C.getBoundingClientRect();return je[0]>=0&&je[1]>=0&&je[0]<tt.width&&je[1]<tt.height}}function Qt(je){return je[0]=C.clientWidth,je[1]=C.clientHeight,je}function tr(je,tt){if(E=C.clientWidth*j(),I=C.clientHeight*j(),B){const ut=j();je[0]=(w.x+w.width/2)/ut,je[1]=(I-(w.y+w.height/2))/ut}else{const ut=C.getBoundingClientRect();je[0]=(tt.clientX||0)-ut.left,je[1]=(tt.clientY||0)-ut.top}return je}function Fr(je){return B?{pageX:Math.round(window.innerWidth/2)+w.x,pageY:Math.round(window.innerHeight/2)+w.y}:{pageX:je.pageX,pageY:je.pageY}}const un=30,Pn=Ln();function Ln(){var je;const tt=document.createElement("div"),ut="30%",Pt="10%",Wt=`#000 ${ut}, #0000 0 calc(100% - ${ut}), #000 0`,kt=`linear-gradient(0deg, ${Wt}) 50%/${Pt} 100% no-repeat`,ar=`linear-gradient(90deg, ${Wt}) 50%/100% ${Pt} no-repeat`;return Object.assign(tt.style,{width:`${un}px`,aspectRatio:1,background:`${kt}, ${ar}, radial-gradient(circle at 50%, #000 5%, #0000 5%)`,display:"none",zIndex:1e3,position:"absolute",mixBlendMode:"difference",filter:"invert(1)"}),(je=C.parentElement)===null||je===void 0||je.appendChild(tt),tt}function ti(je){if(Pn.style.display=je?"block":"none",je){const tt=j(),ut=(w.x+w.width/2)/tt,Pt=(w.y+w.height/2)/tt;Pn.style.width=`${un}px`,Pn.style.left=`calc(${ut}px - ${un/2}px)`,Pn.style.bottom=`calc(${Pt}px - ${un/2}px)`}}return{get noScroll(){return S},set noScroll(je){S=je},get noContextMenu(){return A},set noContextMenu(je){A=je},get width(){return E},get height(){return I},get pixelRatio(){return j()},get pointerLock(){return B},...ae,setPixelScale:je=>{V=je,E=C.clientWidth*j(),I=C.clientHeight*j()},updateTrackedPointers:je=>{Te(je),ve.next(je)},updateScreenTouches:je=>{ze(je)},requestPointerLock:je=>{w=je,B||C.requestPointerLock()},exitPointerLock:()=>{B&&C.ownerDocument.exitPointerLock()},dispose:me}}v.fromElement=P})(u||(e.InputObserver=u={}));function m(v){let l=0,S=0,T=0,A=0,x=0;return"detail"in v&&(S=v.detail),"wheelDelta"in v&&(S=-v.wheelDelta/120),"wheelDeltaY"in v&&(S=-v.wheelDeltaY/120
17),"wheelDeltaX"in v&&(l=-v.wheelDeltaX/120),"axis"in v&&v.axis===v.HORIZONTAL_AXIS&&(l=S,S=0),T=l*10,A=S*10,"deltaY"in v&&(A=v.deltaY),"deltaX"in v&&(T=v.deltaX),"deltaZ"in v&&(x=v.deltaZ),(T||A||x)&&v.deltaMode&&(v.deltaMode===1?(T*=40,A*=40,x*=40):(T*=800,A*=800,x*=800)),T&&!l&&(l=T<0?-1:1),A&&!S&&(S=A<0?-1:1),{spinX:l,spinY:S,dx:T,dy:A,dz:x}}})(Gx)),Gx}var zx={},ry={},ny={},aq;function DS(){if(aq)return ny;aq=1,Object.defineProperty(ny,"__esModule",{value:!0}),ny.Plane3D=t;const e=wt();function t(){return t.create(e.Vec3.create(1,0,0),0)}return(function(r){function n(v,b){return{normal:v,constant:b}}r.create=n;function i(v,b){return e.Vec3.copy(v.normal,b.normal),v.constant=b.constant,v}r.copy=i;function c(v){return i(r(),v)}r.clone=c;function o(v,b){const P=1/e.Vec3.magnitude(b.normal);return e.Vec3.scale(v.normal,b.normal,P),v.constant=b.constant*P,v}r.normalize=o;function s(v,b){return e.Vec3.negate(v.normal,b.normal),v.constant=-b.constant,v}r.negate=s;function h(v,b,P){return e.Vec3.toArray(v.normal,b,P),b[P+3]=v.constant,b}r.toArray=h;function f(v,b,P){return e.Vec3.fromArray(v.normal,b,P),v.constant=b[P+3],v}r.fromArray=f;function y(v,b,P){return e.Vec3.copy(v.normal,b),v.constant=-e.Vec3.dot(v.normal,P),v}r.fromNormalAndCoplanarPoint=y;function _(v,b,P,C){const l=e.Vec3.triangleNormal((0,e.Vec3)(),b,P,C);return y(v,l,b),v}r.fromCoplanarPoints=_;const g=(0,e.Vec3)();function a(v,b,P,C,l){e.Vec3.set(g,b,P,C);const S=1/e.Vec3.magnitude(g);return e.Vec3.scale(v.normal,g,S),v.constant=l*S,v}r.setUnnormalized=a;function d(v,b){return e.Vec3.dot(v.normal,b)+v.constant}r.distanceToPoint=d;function p(v,b){return d(v,b.center)-b.radius}r.distanceToSphere3D=p;function u(v,b,P){return e.Vec3.scaleAndAdd(v,P,b.normal,-d(b,P))}r.projectPoint=u;function m(v,b,P){const C=e.Vec3.dot(b.normal,P.direction);if(C===0)return!1;const l=-(e.Vec3.dot(b.normal,P.origin)+b.constant)/C;return l<0?!1:(e.Vec3.scaleAndAdd(v,P.origin,P.direction,l),!0)}r.intersectRay3D=m})(t||(ny.Plane3D=t={})),ny}var oq;function oQ(){if(oq)return ry;oq=1,Object.defineProperty(ry,"__esModule",{value:!0}),ry.Frustum3D=r;const e=wt(),t=DS();function r(){return r.create((0,t.Plane3D)(),(0,t.Plane3D)(),(0,t.Plane3D)(),(0,t.Plane3D)(),(0,t.Plane3D)(),(0,t.Plane3D)())}return(function(n){(function(g){g[g.Right=0]="Right",g[g.Left=1]="Left",g[g.Bottom=2]="Bottom",g[g.Top=3]="Top",g[g.Far=4]="Far",g[g.Near=5]="Near"})(n.PlaneIndex||(n.PlaneIndex={}));function i(g,a,d,p,u,m){return[g,a,d,p,u,m]}n.create=i;function c(g,a){for(let d=0;d<6;++d)t.Plane3D.copy(g[d],a[d]);return g}n.copy=c;function o(g){return c(n(),g)}n.clone=o;function s(g,a){const d=a[0],p=a[1],u=a[2],m=a[3],v=a[4],b=a[5],P=a[6],C=a[7],l=a[8],S=a[9],T=a[10],A=a[11],x=a[12],M=a[13],D=a[14],V=a[15];return t.Plane3D.setUnnormalized(g[0],m-d,C-v,A-l,V-x),t.Plane3D.setUnnormalized(g[1],m+d,C+v,A+l,V+x),t.Plane3D.setUnnormalized(g[2],m+p,C+b,A+S,V+M),t.Plane3D.setUnnormalized(g[3],m-p,C-b,A-S,V-M),t.Plane3D.setUnnormalized(g[4],m-u,C-P,A-T,V-D),t.Plane3D.setUnnormalized(g[5],m+u,C+P,A+T,V+D),g}n.fromProjectionMatrix=s;function h(g,a){const d=a.center,p=-a.radius;for(let u=0;u<6;++u)if(t.Plane3D.distanceToPoint(g[u],d)<p)return!1;return!0}n.intersectsSphere3D=h;const f=(0,e.Vec3)();function y(g,a){for(let d=0;d<6;++d){const p=g[d];if(f[0]=p.normal[0]>0?a.max[0]:a.min[0],f[1]=p.normal[1]>0?a.max[1]:a.min[1],f[2]=p.normal[2]>0?a.max[2]:a.min[2],t.Plane3D.distanceToPoint(p,f)<0)return!1}return!0}n.intersectsBox3D=y;function _(g,a){for(let d=0;d<6;++d)if(t.Plane3D.distanceToPoint(g[d],a)<0)return!1;return!0}n.containsPoint=_})(r||(ry.Frustum3D=r={})),ry}var sq;function i2(){return sq||(sq=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Renderer=e.RendererParams=e.MarkingType=e.PickType=void 0,e.getTransformedLightDirection=v;const t=Kn(),r=Ge(),n=vt(),i=et(),c=Ne(),o=er(),s=Vt(),h=ir(),f=Ct(),y=oQ(),_=DS(),g=rt();var a;(function(P){P[P.None=0]="None",P[P.Object=1]="Object",P[P.Instance=2]="Instance",P[P.Group=3]="Group"})(a||(e.PickType=a={}));var d;(function(P){P[P.None=0]="None",P[P.Depth=1]="Depth",P[P.Mask=2]="Mask"}
17)(d||(e.MarkingType=d={})),e.RendererParams={backgroundColor:c.ParamDefinition.Color((0,n.Color)(0),{description:"Background color of the 3D canvas"}),pickingAlphaThreshold:c.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},{description:"The minimum opacity value needed for an object to be pickable."}),colorMarker:c.ParamDefinition.Boolean(!0,{description:"Enable color marker"}),highlightColor:c.ParamDefinition.Color(n.Color.fromNormalizedRgb(1,.4,.6)),selectColor:c.ParamDefinition.Color(n.Color.fromNormalizedRgb(.2,1,.1)),dimColor:c.ParamDefinition.Color(n.Color.fromNormalizedRgb(1,1,1)),highlightStrength:c.ParamDefinition.Numeric(.3,{min:0,max:1,step:.1}),selectStrength:c.ParamDefinition.Numeric(.3,{min:0,max:1,step:.1}),dimStrength:c.ParamDefinition.Numeric(0,{min:0,max:1,step:.1}),markerPriority:c.ParamDefinition.Select(1,[[1,"Highlight"],[2,"Select"]]),xrayEdgeFalloff:c.ParamDefinition.Numeric(1,{min:0,max:3,step:.1}),celSteps:c.ParamDefinition.Numeric(5,{min:2,max:16,step:1}),exposure:c.ParamDefinition.Numeric(1,{min:0,max:3,step:.01}),light:c.ParamDefinition.ObjectList({inclination:c.ParamDefinition.Numeric(150,{min:0,max:180,step:1}),azimuth:c.ParamDefinition.Numeric(320,{min:0,max:360,step:1}),color:c.ParamDefinition.Color(n.Color.fromNormalizedRgb(1,1,1)),intensity:c.ParamDefinition.Numeric(.6,{min:0,max:5,step:.01})},P=>n.Color.toHexString(P.color),{defaultValue:[{inclination:150,azimuth:320,color:n.Color.fromNormalizedRgb(1,1,1),intensity:.6}]}),ambientColor:c.ParamDefinition.Color(n.Color.fromNormalizedRgb(1,1,1)),ambientIntensity:c.ParamDefinition.Numeric(.4,{min:0,max:2,step:.01}),enableAnimation:c.ParamDefinition.Boolean(!0,{description:"Enable time-based animations."})};const p=(0,r.Vec3)(),u=(0,r.Vec3)();function m(P,C){const l=P.length,{direction:S,color:T}=C||{direction:new Array(l*3).fill(0),color:new Array(l*3).fill(0)};for(let A=0;A<l;++A){const x=P[A];r.Vec3.directionFromSpherical(p,(0,o.degToRad)(x.inclination),(0,o.degToRad)(x.azimuth),1),r.Vec3.toArray(p,S,A*3),r.Vec3.scale(u,n.Color.toVec3Normalized(u,x.color),x.intensity),r.Vec3.toArray(u,T,A*3)}return{count:l,direction:S,color:T}}function v(P,C){const l=new Array(P.count*3);for(let S=0,T=P.count;S<T;++S)r.Vec3.fromArray(p,P.direction,S*3),r.Vec3.transformDirection(p,p,C),r.Vec3.toArray(p,l,S*3);return l}var b;(function(P){let C;(function(T){T[T.None=0]="None",T[T.BlendedFront=1]="BlendedFront",T[T.BlendedBack=2]="BlendedBack"})(C||(C={}));let l;(function(T){T[T.All=0]="All",T[T.Opaque=1]="Opaque",T[T.Transparent=2]="Transparent"})(l||(l={}));function S(T,A={}){const{gl:x,state:M,stats:D}=T,V=c.ParamDefinition.merge(e.RendererParams,c.ParamDefinition.getDefaultValues(e.RendererParams),A),R=m(V.light),E=(0,t.Viewport)(),I=r.Vec2.create(x.drawingBufferWidth,x.drawingBufferHeight),B=n.Color.toVec3Normalized((0,r.Vec3)(),V.backgroundColor);let w=!1,O=null;const F=T.resources.texture("image-uint8","rgba","ubyte","nearest");F.define(1,1),F.load({array:new Uint8Array([255,255,255,255]),width:1,height:1});const L=[["tDepth",F]],U=(0,r.Mat4)(),q=(0,r.Mat4)(),N=(0,r.Mat4)(),k=(0,r.Mat4)(),j=(0,r.Mat4)(),H=(0,r.Mat4)(),G=(0,r.Mat4)(),z=(0,r.Mat4)(),W=(0,r.Mat4)(),X=(0,r.Mat4)(),Y=(0,r.Mat4)(),K=(0,r.Vec3)(),Q=(0,r.Vec3)(),J=(0,r.Vec3)(),ae=(0,_.Plane3D)(),te=(0,r.Vec2)(),ne=(0,y.Frustum3D)();let $=1;const ie=(0,g.Sphere3D)(),Z=(0,r.Vec3)();r.Vec3.scale(Z,n.Color.toArrayNormalized(V.ambientColor,Z,0),V.ambientIntensity);const re={uDrawId:i.ValueCell.create(0),uModel:i.ValueCell.create(r.Mat4.identity()),uView:i.ValueCell.create(q),uInvView:i.ValueCell.create(N),uModelView:i.ValueCell.create(k),uInvModelView:i.ValueCell.create(j),uInvProjection:i.ValueCell.create(H),uProjection:i.ValueCell.create((0,r.Mat4)()),uModelViewProjection:i.ValueCell.create(G),uInvModelViewProjection:i.ValueCell.create(z),uHasHeadRotation:i.ValueCell.create(!1),uInvHeadRotation:i.ValueCell.create(W),uHasEyeCamera:i.ValueCell.create(!1),uModelViewEye:i.ValueCell.create(X),uInvModelViewEye:i.ValueCell.create(Y),uIsAsymmetricProjection:i.ValueCell.create(!1),uIsOrtho:i.ValueCell.create(1),uViewOffset:i.ValueCell.create(te),uModelScale:i.ValueCell.create(1),uPixelRatio:i.ValueCell.create(T.pixelRatio),uViewport:i.ValueCell.create(t.Viewport.toVec4((0,r.Vec4)(),E)),uDrawingBufferSize:i.ValueCell.create(I),uCameraPosition:i.ValueCell.create(Q),uCameraDir:i.ValueCell.create(K),uCameraPlane:i.ValueCell.create(_.Plane3D.toArray(ae,(0,r.Vec4)(),0)),uNear:i.ValueCell.create(1),uFar:i.ValueCell.create(1e4),uFog:i.ValueCell.create(!0),uFogNear:i.ValueCell.create(1),uFogFar:i.ValueCell.create(1e4),uFogColor:i.ValueCell.create(B),uRenderMask:i.ValueCell.create(0),uMarkingDepthTest:i.ValueCell.create(!1),uPickType:i.ValueCell.create(a.None),uMarkingType:i.
17ValueCell.create(d.None),uTransparentBackground:i.ValueCell.create(!1),uLightDirection:i.ValueCell.create(R.direction),uLightColor:i.ValueCell.create(R.color),uAmbientColor:i.ValueCell.create(Z),uPickingAlphaThreshold:i.ValueCell.create(V.pickingAlphaThreshold),uHighlightColor:i.ValueCell.create(n.Color.toVec3Normalized((0,r.Vec3)(),V.highlightColor)),uSelectColor:i.ValueCell.create(n.Color.toVec3Normalized((0,r.Vec3)(),V.selectColor)),uDimColor:i.ValueCell.create(n.Color.toVec3Normalized((0,r.Vec3)(),V.dimColor)),uHighlightStrength:i.ValueCell.create(V.highlightStrength),uSelectStrength:i.ValueCell.create(V.selectStrength),uDimStrength:i.ValueCell.create(V.dimStrength),uMarkerPriority:i.ValueCell.create(V.markerPriority),uMarkerAverage:i.ValueCell.create(0),uXrayEdgeFalloff:i.ValueCell.create(V.xrayEdgeFalloff),uCelSteps:i.ValueCell.create(V.celSteps),uExposure:i.ValueCell.create(V.exposure),uTime:i.ValueCell.create(0),uEnableAnimation:i.ValueCell.create(V.enableAnimation)},oe=Object.entries(re);let ce=!0;const ue=(Te,Ve,qe)=>{var ke,ze,We;if(Te.state.disposed||!Te.state.visible||!Te.state.pickable&&Ve==="pick"||!Te.values.drawCount.ref.value||(g.Sphere3D.scaleNX(ie,Te.values.boundingSphere.ref.value,$),!y.Frustum3D.intersectsSphere3D(ne,ie)))return;const[Je,De]=Te.values.uLod.ref.value;if(Je!==0||De!==0){const{center:Le,radius:He}=ie,Pe=_.Plane3D.distanceToPoint(ae,Le);if(Pe+He<Je*$||Pe-He>De*$)return}if($===1){if(O!==null&&O(ie))return;const Le=Te.values.instanceGrid.ref.value.cellSize>0,He=Te.values.uInstanceCount.ref.value>1;Le&&(He||Te.values.lodLevels)?Te.cull(ae,ne,O,T.stats):Te.uncull()}else if(Te.values.lodLevels){const{center:Le,radius:He}=ie,Pe=_.Plane3D.distanceToPoint(ae,Le);Te.cullSimple(Pe,He,$)}else Te.uncull();const Fe=Te.getProgram(Ve);if(M.currentProgramId!==Fe.id&&(ce=!0,Fe.use()),ce&&(Fe.setUniforms(oe),Fe.bindTextures(L,0),ce=!1),Te.values.dGeometryType.ref.value==="directVolume"){if(Ve!=="color")return;M.disable(x.CULL_FACE),M.frontFace(x.CCW)}else qe===C.BlendedFront?(M.enable(x.CULL_FACE),!((ke=Te.values.dFlipSided)===null||ke===void 0)&&ke.ref.value?(M.frontFace(x.CW),M.cullFace(x.FRONT)):(M.frontFace(x.CCW),M.cullFace(x.BACK))):qe===C.BlendedBack?(M.enable(x.CULL_FACE),!((ze=Te.values.dFlipSided)===null||ze===void 0)&&ze.ref.value?(M.frontFace(x.CW),M.cullFace(x.BACK)):(M.frontFace(x.CCW),M.cullFace(x.FRONT))):(Te.values.uDoubleSided?Te.values.uDoubleSided.ref.value||Te.values.hasReflection.ref.value?M.disable(x.CULL_FACE):M.enable(x.CULL_FACE):M.disable(x.CULL_FACE),!((We=Te.values.dFlipSided)===null||We===void 0)&&We.ref.value?(M.frontFace(x.CW),M.cullFace(x.FRONT)):(M.frontFace(x.CCW),M.cullFace(x.BACK)));Te.render(Ve,L.length)},pe=(Te,Ve)=>{i.ValueCell.update(re.uView,Te.view),i.ValueCell.update(re.uInvView,r.Mat4.invert(N,Te.view)),i.ValueCell.update(re.uProjection,Te.projection),i.ValueCell.update(re.uInvProjection,r.Mat4.invert(H,Te.projection)),i.ValueCell.updateIfChanged(re.uIsOrtho,Te.state.mode==="orthographic"?1:0),i.ValueCell.update(re.uViewOffset,Te.viewOffset.enabled?r.Vec2.set(te,Te.viewOffset.offsetX*16,Te.viewOffset.offsetY*16):r.Vec2.set(te,0,0)),i.ValueCell.updateIfChanged(re.uModelScale,Te.scale),i.ValueCell.update(re.uCameraPosition,r.Mat4.getTranslation(Q,N)),r.Vec3.scale(J,Te.state.target,Te.scale),r.Vec3.normalize(K,r.Vec3.sub(K,J,Q)),i.ValueCell.update(re.uCameraDir,K),i.ValueCell.updateIfChanged(re.uFar,Te.far),i.ValueCell.updateIfChanged(re.uNear,Te.near),i.ValueCell.updateIfChanged(re.uFog,Te.state.fog>0),i.ValueCell.updateIfChanged(re.uFogFar,Te.fogFar),i.ValueCell.updateIfChanged(re.uFogNear,Te.fogNear),i.ValueCell.updateIfChanged(re.uTrans
17parentBackground,w),y.Frustum3D.fromProjectionMatrix(ne,Te.projectionView),_.Plane3D.copy(ae,ne[y.Frustum3D.PlaneIndex.Near]),ae.constant-=_.Plane3D.distanceToPoint(ae,Q),i.ValueCell.update(re.uCameraPlane,_.Plane3D.toArray(ae,re.uCameraPlane.ref.value,0)),i.ValueCell.updateIfChanged(re.uMarkerAverage,Ve.markerAverage),!r.Mat4.isZero(Te.headRotation)?(i.ValueCell.updateIfChanged(re.uHasHeadRotation,!0),i.ValueCell.update(re.uInvHeadRotation,r.Mat4.invert(W,Te.headRotation)),i.ValueCell.update(re.uLightDirection,v(R,W))):(i.ValueCell.updateIfChanged(re.uHasHeadRotation,!1),i.ValueCell.updateIfChanged(re.uInvHeadRotation,r.Mat4.id),i.ValueCell.update(re.uLightDirection,R.direction)),i.ValueCell.update(re.uIsAsymmetricProjection,Te.isAsymmetricProjection)},he=(Te,Ve,qe,ke,ze)=>{(0,s.arrayMapUpsert)(L,"tDepth",qe||F),$=Ve.scale,i.ValueCell.update(re.uModel,r.Mat4.scaleUniformly(U,Te.view,$)),i.ValueCell.update(re.uModelView,r.Mat4.mul(k,Ve.view,U)),i.ValueCell.update(re.uInvModelView,r.Mat4.invert(j,k)),i.ValueCell.update(re.uModelViewProjection,r.Mat4.mul(G,k,Ve.projection)),i.ValueCell.update(re.uInvModelViewProjection,r.Mat4.invert(z,G)),i.ValueCell.updateIfChanged(re.uRenderMask,ke),i.ValueCell.updateIfChanged(re.uMarkingDepthTest,ze),!r.Mat4.isZero(Ve.viewEye)?(i.ValueCell.updateIfChanged(re.uHasEyeCamera,!0),i.ValueCell.update(re.uModelViewEye,r.Mat4.mul(X,Ve.viewEye,U)),i.ValueCell.update(re.uInvModelViewEye,r.Mat4.invert(Y,X))):(i.ValueCell.updateIfChanged(re.uHasEyeCamera,!1),i.ValueCell.updateIfChanged(re.uModelViewEye,r.Mat4.id),i.ValueCell.updateIfChanged(re.uInvModelViewEye,r.Mat4.id)),M.enable(x.SCISSOR_TEST),M.colorMask(!0,!0,!0,!0);const{x:Je,y:De,width:Oe,height:Fe}=E;M.viewport(Je,De,Oe,Fe),M.scissor(Je,De,Oe,Fe),ce=!0,M.currentRenderItemId=-1},fe=function(Te){var Ve,qe,ke,ze;const We=(0,h.clamp)(Te.values.alpha.ref.value*Te.state.alphaFactor,0,1),Je=((Ve=Te.values.dXrayShaded)===null||Ve===void 0?void 0:Ve.ref.value)==="on"||((qe=Te.values.dXrayShaded)===null||qe===void 0?void 0:qe.ref.value)==="inverted";return We===1&&Te.values.transparencyAverage.ref.value!==1&&Te.values.dGeometryType.ref.value!=="directVolume"&&((ke=Te.values.dPointStyle)===null||ke===void 0?void 0:ke.ref.value)!=="fuzzy"&&!Je||((ze=Te.values.dTransparentBackfaces)===null||ze===void 0?void 0:ze.ref.value)==="opaque"},de=function(Te){var Ve,qe,ke;const ze=(0,h.clamp)(Te.values.alpha.ref.value*Te.state.alphaFactor,0,1),We=((Ve=Te.values.dXrayShaded)===null||Ve===void 0?void 0:Ve.ref.value)==="on"||((qe=Te.values.dXrayShaded)===null||qe===void 0?void 0:qe.ref.value)==="inverted";return ze!==0&&(ze<1||Te.values.transparencyAverage.ref.value>0||Te.values.dGeometryType.ref.value==="directVolume"||((ke=Te.values.dPointStyle)===null||ke===void 0?void 0:ke.ref.value)==="fuzzy"||Te.values.dGeometryType.ref.value==="text"||Te.values.dGeometryType.ref.value==="image"||We)},ge=function(Te){return Te.values.emissiveAverage.ref.value+Te.values.uEmissive.ref.value>0}
17,Ce=(Te,Ve,qe,ke)=>{f.isTimingMode&&T.timer.mark("Renderer.renderPick"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,null,l.All,!1),i.ValueCell.updateIfChanged(re.uPickType,ke);const{renderables:ze}=Te;for(let We=0,Je=ze.length;We<Je;++We)ze[We].state.colorOnly||ue(ze[We],qe,C.None);f.isTimingMode&&T.timer.markEnd("Renderer.renderPick")},ve=(Te,Ve)=>{f.isTimingMode&&T.timer.mark("Renderer.renderDepth"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,null,l.All,!1);const{renderables:qe}=Te;for(let ke=0,ze=qe.length;ke<ze;++ke)ue(qe[ke],"depth",C.None);f.isTimingMode&&T.timer.markEnd("Renderer.renderDepth")},le=(Te,Ve)=>{f.isTimingMode&&T.timer.mark("Renderer.renderDepthOpaque"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,null,l.Opaque,!1);const{renderables:qe}=Te;for(let ke=0,ze=qe.length;ke<ze;++ke){const We=qe[ke];fe(We)&&ue(We,"depth",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderDepthOpaque")},me=(Te,Ve)=>{f.isTimingMode&&T.timer.mark("Renderer.renderDepthOpaqueBack"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),M.depthFunc(x.GREATER),he(Te,Ve,null,l.Opaque,!1);const{renderables:qe}=Te;for(let ke=0,ze=qe.length;ke<ze;++ke){const We=qe[ke];fe(We)&&ue(We,"depth",C.BlendedBack)}M.depthFunc(x.LESS),f.isTimingMode&&T.timer.markEnd("Renderer.renderDepthOpaqueBack")},ee=(Te,Ve,qe)=>{f.isTimingMode&&T.timer.mark("Renderer.renderDepthTransparent"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,qe,l.Transparent,!1);const{renderables:ke}=Te;for(let ze=0,We=ke.length;ze<We;++ze){const Je=ke[ze];de(Je)&&ue(Je,"depth",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderDepthTransparent")},se=(Te,Ve)=>{f.isTimingMode&&T.timer.mark("Renderer.renderMarkingDepth"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,null,l.All,!1),i.ValueCell.updateIfChanged(re.uMarkingType,d.Depth);const{renderables:qe}=Te;for(let ke=0,ze=qe.length;ke<ze;++ke){const We=qe[ke];(0,h.clamp)(We.values.alpha.ref.value*We.state.alphaFactor,0,1)!==0&&We.values.transparencyAverage.ref.value!==1&&We.values.markerAverage.ref.value!==1&&ue(qe[ke],"marking",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderMarkingDepth")},ye=(Te,Ve,qe)=>{f.isTimingMode&&T.timer.mark("Renderer.renderMarkingMask"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,qe,l.All,!!qe),i.ValueCell.updateIfChanged(re.uMarkingType,d.Mask);const{renderables:ke}=Te;for(let ze=0,We=ke.length;ze<We;++ze)ke[ze].values.markerAverage.ref.value>0&&ue(ke[ze],"marking",C.None);f.isTimingMode&&T.timer.markEnd("Renderer.renderMarkingMask")},Se=(Te,Ve,qe,ke)=>{f.isTimingMode&&T.timer.mark("Renderer.renderEmissiveOpaque"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),ke?(M.depthMask(!1),M.depthFunc(x.LEQUAL)):M.depthMask(!0),he(Te,Ve,qe,l.Opaque,!1);const{renderables:ze}=Te;for(let We=0,Je=ze.length;We<Je;++We){const De=ze[We];fe(De)&&(!ke||ge(De))&&ue(De,"emissive",C.None)}ke&&(M.depthFunc(x.LESS),M.depthMask(!0)),f.isTimingMode&&T.timer.markEnd("Renderer.renderEmissiveOpaque")},Ae=(Te,Ve,qe)=>{f.isTimingMode&&T.timer.mark("Renderer.renderEmissiveTransparent");const ke=T.extensions.blendMinMax;M.enable(x.BLEND),M.blendFunc(x.ONE,x.ONE),ke&&M.blendEquation(ke.MAX),M.enable(x.DEPTH_TEST),M.depthMask(!1),he(Te,Ve,qe,l.Transparent,!1);const{renderables:ze}=Te;for(let We=0,Je=ze.length;We<Je;++We){const De=ze[We];de(De)&&De.values.dGeometryType.ref.value!=="directVolume"&&ge(De)&&ue(De,"emissive",C.None)}ke&&M.blendEquation(x.FUNC_ADD),f.isTimingMode&&T.timer.markEnd("Renderer.renderEmissiveTransparent")},_e=(Te,Ve)=>{f.isTimingMode&&T.timer.mark("Renderer.renderTracing"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,null,l.Opaque,!1);const{renderables:qe}=Te;for(let ke=0,ze=qe.length;ke<ze;++ke){const We=qe[ke];fe(We)&&ue(We,"tracing",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderTracing")},be=(Te,Ve)=>{Te.hasOpaque&&xe(Te,Ve),Te.opacityAverage<1&&we(Te,Ve)},xe=(Te,Ve)=>{f.isTimingMode&&T.timer.mark("Renderer.renderOpaque"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,null,l.Opaque,!1);const{renderables:qe}=Te;for(let ke=0,ze=qe.length;ke<ze;++ke){const We=qe[ke];fe(We)&&ue(We,"color",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderOpaque")},we=(Te,Ve)=>{var qe,ke;f.isTimingMode&&T.timer.mark("Renderer.renderBlendedTransparent"),w?M.blendFunc(x.ONE,x.ONE_MINUS_SRC_ALPHA):M.blendFuncSeparate(x.SRC_ALPHA,x.ONE_MINUS_SRC_ALPHA,x.ONE,x.ONE_MINUS_SRC_ALPHA),M.enable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!1),he(Te,Ve,null,l.Transparent,!1);const{renderables:ze}=Te;for(let We=0,Je=ze.length;We<Je;++We){const De=ze[We];de(De)&&(!((qe=De.values.uDoubleSided)===null||qe===void 0)&&qe.ref.value?(((ke=De.values.dTransparentBackfaces)===null||ke===void 0?void 0:ke.ref.value)!=="opaque"&&ue(De,"color",C.BlendedBack),ue(De,"color",C.BlendedFront)):ue(De,"color",C.None))}f.isTimingMode&&T.timer.markEnd("Renderer.renderBlendedTransparent")};return{clear:(Te,Ve,qe)=>{M.enable(x.SCISSOR_TEST),M.enable(x.DEPTH_TEST),M.colorMask(!0,!0,
17!0,!0),M.depthMask(!0),qe||w&&!Ve?M.clearColor(0,0,0,0):Te?M.clearColor(B[0],B[1],B[2],1):M.clearColor(1,1,1,1),x.clear(x.COLOR_BUFFER_BIT|x.DEPTH_BUFFER_BIT)},clearDepth:(Te=!1)=>{M.enable(x.SCISSOR_TEST),M.enable(x.DEPTH_TEST),M.depthMask(!0),Te?(M.colorMask(!0,!0,!0,!0),M.clearColor(1,1,1,1),x.clear(x.COLOR_BUFFER_BIT|x.DEPTH_BUFFER_BIT)):x.clear(x.DEPTH_BUFFER_BIT)},update:pe,renderPick:Ce,renderDepth:ve,renderDepthOpaque:le,renderDepthOpaqueBack:me,renderDepthTransparent:ee,renderMarkingDepth:se,renderMarkingMask:ye,renderEmissiveOpaque:Se,renderEmissiveTransparent:Ae,renderTracing:_e,renderBlended:be,renderOpaque:xe,renderBlendedTransparent:we,renderVolume:(Te,Ve,qe)=>{f.isTimingMode&&T.timer.mark("Renderer.renderVolume"),M.blendFunc(x.ONE,x.ONE_MINUS_SRC_ALPHA),M.enable(x.BLEND),M.disable(x.DEPTH_TEST),M.depthMask(!1),he(Te,Ve,qe,l.Transparent,!1);const{renderables:ke}=Te;for(let ze=0,We=ke.length;ze<We;++ze){const Je=ke[ze];Je.values.dGeometryType.ref.value==="directVolume"&&ue(Je,"color",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderVolume")},renderWboitTransparent:(Te,Ve,qe)=>{f.isTimingMode&&T.timer.mark("Renderer.renderWboitTransparent"),he(Te,Ve,qe,l.Transparent,!1);const{renderables:ke}=Te;for(let ze=0,We=ke.length;ze<We;++ze){const Je=ke[ze];de(Je)&&ue(Je,"color",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderWboitTransparent")},renderDpoitTransparent:(Te,Ve,qe,ke)=>{f.isTimingMode&&T.timer.mark("Renderer.renderDpoitTransparent"),M.enable(x.BLEND),(0,s.arrayMapUpsert)(L,"tDpoitDepth",ke.depth),(0,s.arrayMapUpsert)(L,"tDpoitFrontColor",ke.frontColor),(0,s.arrayMapUpsert)(L,"tDpoitBackColor",ke.backColor),he(Te,Ve,qe,l.Transparent,!1);const{renderables:ze}=Te;for(let We=0,Je=ze.length;We<Je;++We){const De=ze[We];de(De)&&ue(De,"color",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderDpoitTransparent")},setTime:Te=>{i.ValueCell.updateIfChanged(re.uTime,Te)},setProps:Te=>{Te.backgroundColor!==void 0&&Te.backgroundColor!==V.backgroundColor&&(V.backgroundColor=Te.backgroundColor,n.Color.toVec3Normalized(B,V.backgroundColor),i.ValueCell.update(re.uFogColor,r.Vec3.copy(re.uFogColor.ref.value,B))),Te.pickingAlphaThreshold!==void 0&&Te.pickingAlphaThreshold!==V.pickingAlphaThreshold&&(V.pickingAlphaThreshold=Te.pickingAlphaThreshold,i.ValueCell.update(re.uPickingAlphaThreshold,V.pickingAlphaThreshold)),Te.colorMarker!==void 0&&Te.colorMarker!==V.colorMarker&&(V.colorMarker=Te.colorMarker),Te.highlightColor!==void 0&&Te.highlightColor!==V.highlightColor&&(V.highlightColor=Te.highlightColor,i.ValueCell.update(re.uHighlightColor,n.Color.toVec3Normalized(re.uHighlightColor.ref.value,V.highlightColor))),Te.selectColor!==void 0&&Te.selectColor!==V.selectColor&&(V.selectColor=Te.selectColor,i.ValueCell.update(re.uSelectColor,n.Color.toVec3Normalized(re.uSelectColor.ref.value,V.selectColor))),Te.dimColor!==void 0&&Te.dimColor!==V.dimColor&&(V.dimColor=Te.dimColor,i.ValueCell.update(re.uDimColor,n.Color.toVec3Normalized(re.uDimColor.ref.value,V.dimColor))),Te.highlightStrength!==void 0&&Te.highlightStrength!==V.highlightStrength&&(V.highlightStrength=Te.highlightStrength,i.ValueCell.update(re.uHighlightStrength,V.highlightStrength)),Te.selectStrength!==void 0&&Te.selectStrength!==V.selectStrength&&(V.selectStrength=Te.selectStrength,i.ValueCell.update(re.uSelectStrength,V.selectStrength)),Te.dimStrength!==void 0&&Te.dimStrength!==V.dimStrength&&(V.dimStrength=Te.dimStrength,i.ValueCell.update(re.uDimStrength,V.dimStrength)),Te.markerPriority!==void 0&&Te.markerPriority!==V.markerPriority&&(V.markerPriority=Te.markerPriority,i.ValueCell.update(re.uMarkerPriority,V.markerPriority)),Te.xrayEdgeFalloff!==void 0&&Te.xrayEdgeFalloff!==V.xrayEdgeFalloff&&(V.xrayEdgeFalloff=Te.xrayEdgeFalloff,i.ValueCell.update(re.uXrayEdgeFalloff,V.xrayEdgeFalloff)),Te.celSteps!==void 0&&Te.celSteps!==V.celSteps&&(V.celSteps=Te.celSteps,i.ValueCell.update(re.uCelSteps,V.celSteps)),Te.exposure!==void 0&&Te.exposure!==V.exposure&&(V.exposure=Te.exposure,i.ValueCell.update(re.uExposure,V.exposure)),Te.light!==void 0&&!(0,i.deepEqual)(Te.light,V.light)&&(V.light=Te.light,Object.assign(R,m(Te.light,R)),i.ValueCell.update(re.uLightDirection,R.direction),i.ValueCell.update(re.uLightColor,R.color)),Te.ambientColor!==void 0&&Te.ambientColor!==V.ambientColor&&(V.ambientColor=Te.ambientColor,r.Vec3.scale(Z,n.Color.toArrayNormalized(V.ambientColor,Z,
170),V.ambientIntensity),i.ValueCell.update(re.uAmbientColor,Z)),Te.ambientIntensity!==void 0&&Te.ambientIntensity!==V.ambientIntensity&&(V.ambientIntensity=Te.ambientIntensity,r.Vec3.scale(Z,n.Color.toArrayNormalized(V.ambientColor,Z,0),V.ambientIntensity),i.ValueCell.update(re.uAmbientColor,Z)),Te.enableAnimation!==void 0&&Te.enableAnimation!==V.enableAnimation&&(V.enableAnimation=Te.enableAnimation,i.ValueCell.update(re.uEnableAnimation,V.enableAnimation))},setViewport:(Te,Ve,qe,ke)=>{M.viewport(Te,Ve,qe,ke),M.scissor(Te,Ve,qe,ke),(Te!==E.x||Ve!==E.y||qe!==E.width||ke!==E.height)&&(t.Viewport.set(E,Te,Ve,qe,ke),i.ValueCell.update(re.uViewport,r.Vec4.set(re.uViewport.ref.value,Te,Ve,qe,ke)))},setTransparentBackground:Te=>{w=Te},setDrawingBufferSize:(Te,Ve)=>{(Te!==I[0]||Ve!==I[1])&&i.ValueCell.update(re.uDrawingBufferSize,r.Vec2.set(I,Te,Ve))},setPixelRatio:Te=>{i.ValueCell.update(re.uPixelRatio,Te)},setOcclusionTest:Te=>{O=Te},props:V,get stats(){return{programCount:T.stats.resourceCounts.program,shaderCount:T.stats.resourceCounts.shader,attributeCount:T.stats.resourceCounts.attribute,elementsCount:T.stats.resourceCounts.elements,framebufferCount:T.stats.resourceCounts.framebuffer,renderbufferCount:T.stats.resourceCounts.renderbuffer,textureCount:T.stats.resourceCounts.texture,vertexArrayCount:T.stats.resourceCounts.vertexArray,drawCount:D.drawCount,instanceCount:D.instanceCount,instancedDrawCount:D.instancedDrawCount}},get light(){return R},get ambientColor(){return re.uAmbientColor.ref.value},dispose:()=>{}}}P.create=S})(b||(e.Renderer=b={}))})(zx)),zx}var Hx={},iy={},cq;function IS(){if(cq)return iy;cq=1,Object.defineProperty(iy,"__esModule",{value:!0}),iy.Binding=r;const e=cs(),t=ui();function r(s,h="",f=""){return r.create(s,h,f)}(function(s){function h(m,v="",b=""){return{triggers:m,action:v,description:b}}s.create=h;function f(m){return!!m&&Array.isArray(m.triggers)&&typeof m.action=="string"}s.isBinding=f,s.Empty={triggers:[],action:"",description:""};function y(m){return m.triggers.length===0||m.triggers.every(v=>v.buttons===void 0&&v.modifiers===void 0&&!v.code)}s.isEmpty=y;function _(m,v,b){return m.triggers.some(P=>p.match(P,v,b))}s.match=_;function g(m,v,b,P){return m.triggers.some(C=>p.matchKey(C,v,b,P))}s.matchKey=g;function a(m){return m.triggers.map(p.format).join(" or ")}s.formatTriggers=a;function d(m,v=""){const b=m.description||(0,t.stringToWords)(v);return(0,t.interpolate)(b,{triggers:"<i>"+a(m)+"</i>"})}s.format=d;function p(m,v){return p.create(m,v)}s.Trigger=p;function u(m,v){return p.create(void 0,v,m)}s.TriggerKey=u,(function(m){function v(l,S,T){return{buttons:l,modifiers:S,code:T}}m.create=v,m.Empty={};function b(l,S,T){const{buttons:A,modifiers:x}=l;return A!==void 0&&(A===S||e.ButtonsType.has(A,S))&&(!x||e.ModifiersKeys.areEqual(x,T))}m.match=b;function P(l,S,T,A){const{modifiers:x,code:M}=l;return M!==void 0&&(M===S||M.length===1&&S.length===4&&S.startsWith("Key")&&!!A&&A.length===1&&A.toUpperCase()===M.toUpperCase())&&(!x||e.ModifiersKeys.areEqual(x,T))}m.matchKey=P;function C(l){const S=[],T=i(l.buttons,l.code);T&&S.push(T);const A=o(l.code);A&&S.push(A);const x=c(l.modifiers);return x&&S.push(x),S.join(" + ")}m.format=C})(p=s.Trigger||(s.Trigger={}))})(r||(iy.Binding=r={}));const n=e.ButtonsType;function i(s,h){const f=[];return s===void 0&&!h?f.push("any mouse button"):s===0?f.push("mouse hover"):s!==void 0&&(n.has(s,n.Flag.Primary)&&f.push("left mouse button"),n.has(s,n.Flag.Secondary)&&f.push("right mouse button"),n.has(s,n.Flag.Auxilary)&&f.push("wheel/middle mouse button"),n.has(s,n.Flag.Forth)&&f.push("three fingers")),f.join(" + ")}function c(s,h){const f=[];return s&&(s.alt&&f.push("alt key"),s.control&&f.push("control key"),s.meta&&f.push("meta/command key"),s.shift&&f.push("shift key")),f.join(" + ")}function o(s){return s?.startsWith("Key")&&(s=s.substring(3)),s&&(0,t.camelCaseToWords)(s).toLowerCase()}return iy}var uq;function Rre(){return uq||(uq=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.TrackballControls=e.DefaultTrackballControlsAttribs=e.TrackballControlsParams=e.DefaultTrackballBindings=void 0;
17const t=Ge(),r=Kn(),n=cs(),i=Ne(),c=er(),o=IS(),s=n.ButtonsType,h=n.ModifiersKeys,f=o.Binding.Trigger,y=o.Binding.TriggerKey;e.DefaultTrackballBindings={dragRotate:(0,o.Binding)([f(s.Flag.Primary,h.create()),f(s.Flag.Trigger)],"Rotate","Drag using ${triggers}"),dragRotateZ:(0,o.Binding)([f(s.Flag.Primary,h.create({shift:!0,control:!0}))],"Rotate around z-axis (roll)","Drag using ${triggers}"),dragPan:(0,o.Binding)([f(s.Flag.Secondary,h.create()),f(s.Flag.Primary,h.create({control:!0}))],"Pan","Drag using ${triggers}"),dragZoom:o.Binding.Empty,dragFocus:(0,o.Binding)([f(s.Flag.Forth,h.create())],"Focus","Drag using ${triggers}"),dragFocusZoom:(0,o.Binding)([f(s.Flag.Auxilary,h.create())],"Focus and zoom","Drag using ${triggers}"),scrollZoom:(0,o.Binding)([f(s.Flag.Auxilary,h.create())],"Zoom","Scroll using ${triggers}"),scrollFocus:(0,o.Binding)([f(s.Flag.Auxilary,h.create({shift:!0}))],"Clip","Scroll using ${triggers}"),scrollFocusZoom:o.Binding.Empty,keyMoveForward:(0,o.Binding)([y("KeyW"),y("GamepadUp")],"Move forward","Press ${triggers}"),keyMoveBack:(0,o.Binding)([y("KeyS"),y("GamepadDown")],"Move back","Press ${triggers}"),keyMoveLeft:(0,o.Binding)([y("KeyA")],"Move left","Press ${triggers}"),keyMoveRight:(0,o.Binding)([y("KeyD")],"Move right","Press ${triggers}"),keyMoveUp:(0,o.Binding)([y("KeyR")],"Move up","Press ${triggers}"),keyMoveDown:(0,o.Binding)([y("KeyF")],"Move down","Press ${triggers}"),keyRollLeft:(0,o.Binding)([y("KeyQ")],"Roll left","Press ${triggers}"),keyRollRight:(0,o.Binding)([y("KeyE")],"Roll right","Press ${triggers}"),keyPitchUp:(0,o.Binding)([y("ArrowUp",h.create({shift:!0}))],"Pitch up","Press ${triggers}"),keyPitchDown:(0,o.Binding)([y("ArrowDown",h.create({shift:!0}))],"Pitch down","Press ${triggers}"),keyYawLeft:(0,o.Binding)([y("ArrowLeft",h.create({shift:!0}))],"Yaw left","Press ${triggers}"),keyYawRight:(0,o.Binding)([y("ArrowRight",h.create({shift:!0}))],"Yaw right","Press ${triggers}"),boostMove:(0,o.Binding)([y("ShiftLeft")],"Boost move","Press ${triggers}"),enablePointerLock:(0,o.Binding)([y("Space",h.create({control:!0}))],"Enable pointer lock","Press ${triggers}")},e.TrackballControlsParams={rotateSpeed:i.ParamDefinition.Numeric(5,{min:1,max:10,step:1}),zoomSpeed:i.ParamDefinition.Numeric(7,{min:1,max:15,step:1}),panSpeed:i.ParamDefinition.Numeric(1,{min:.1,max:5,step:.1}),moveSpeed:i.ParamDefinition.Numeric(.75,{min:.1,max:3,step:.1}),boostMoveFactor:i.ParamDefinition.Numeric(5,{min:.1,max:10,step:.1}),flyMode:i.ParamDefinition.Boolean(!1),animate:i.ParamDefinition.MappedStatic("off",{off:i.ParamDefinition.EmptyGroup(),spin:i.ParamDefinition.Group({speed:i.ParamDefinition.Numeric(.1,{min:-2,max:2,step:.01},{description:"Number of rotations per second"}),axis:i.ParamDefinition.Vec3(t.Vec3.create(0,-1,0),{},{description:"Axis of rotation in camera space"})},{description:"Spin the 3D scene around an axis in camera space"}),rock:i.ParamDefinition.Group({speed:i.ParamDefinition.Numeric(.3,{min:-5,max:5,step:.1},{description:"Number of oscilations per second"}),angle:i.ParamDefinition.Numeric(10,{min:0,max:90,step:1},{description:"How many degrees to rotate in each direction."}),axis:i.ParamDefinition.Vec3(t.Vec3.create(0,-1,0),{},{description:"Axis of rotation in camera space"})},{description:"Rock the 3D scene around an axis in camera space"})}),staticMoving:i.ParamDefinition.Boolean(!0,{isHidden:!0}),dynamicDampingFactor:i.ParamDefinition.Numeric(.2,{},{isHidden:!0}),minDistance:i.ParamDefinition.Numeric(.01,{},{isHidden:!0}),maxDistance:i.ParamDefinition.Numeric(1e150,{},{isHidden:!0}),gestureScaleFactor:i.ParamDefinition.Numeric(1,{},{isHidden:!0}),maxWheelDelta:i.ParamDefinition.Numeric(.02,{},{isHidden:!0}),autoAdjustMinMaxDistance:i.ParamDefinition.MappedStatic("on",{off:i.ParamDefinition.EmptyGroup(),on:i.ParamDefinition.Group({minDistanceFactor:i.ParamDefinition.Numeric(0),minDistancePadding:i.ParamDefinition.Numeric(5),maxDistanceFactor:i.ParamDefinition.Numeric(10),maxDistanceMin:i.ParamDefinition.Numeric(20)})},{isHidden:!0})},e.DefaultTrackballControlsAttribs={bindings:e.DefaultTrackballBindings};var _;(function(g){function a(d,p,u,m={},v={}){const b={...i.ParamDefinition.getDefaultValues(e.TrackballControlsParams),...m},P={...e.DefaultTrackballControlsAttribs,...v},C=P.bindings,l=r.Viewport.clone(p.viewport);let S=!1;const T=d.drag.subscribe(De),A=d.interactionEnd.subscribe(Oe),x=d.wheel.subscribe(Fe),M=d.pinch.subscribe(Le),D=d.keyDown.subscribe(Pe),V=d.keyUp.subscribe(Ie),R=d.move.
17subscribe(He),E=d.lock.subscribe($e),I=d.leave.subscribe(Qe);let B=!1;const w=(0,t.Vec3)(),O=(0,t.Vec3)(),F=(0,t.Vec2)(),L=(0,t.Vec2)(),U=(0,t.Vec3)();let q=0;const N=(0,t.Vec2)(),k=(0,t.Vec2)();let j=0,H=0,G=0;const z=(0,t.Vec2)(),W=(0,t.Vec2)(),X=(0,t.Vec2)(),Y=(0,t.Vec2)(),K=(0,t.Vec2)(),Q=(0,t.Vec2)(),J=t.Vec3.clone(p.target),ae=t.Vec3.clone(p.position),te=t.Vec3.clone(p.up),ne=(0,t.Vec2)();function $(Ze,ot){return t.Vec2.set(ne,(Ze-l.x)/l.width,(ot-l.y)/l.height)}const ie=(0,t.Vec2)();function Z(Ze,ot){return t.Vec2.set(ie,(Ze-l.width*.5-l.x)/(l.width*.5),(l.height+2*(l.y-ot))/l.width)}function re(){const Ze=d.width/d.height||1;return b.rotateSpeed*d.pixelRatio*Ze}const oe=(0,t.Vec3)(),ce=(0,t.Quat)(),ue=(0,t.Vec3)(),pe=(0,t.Vec3)(),he=(0,t.Vec3)(),fe=(0,t.Vec3)();function de(){const Ze=L[0]-F[0],ot=L[1]-F[1];t.Vec3.set(fe,Ze,ot,0);const pt=t.Vec3.magnitude(fe)*re();pt?(t.Vec3.sub(O,p.position,p.target),t.Vec3.normalize(ue,O),t.Vec3.normalize(pe,p.up),t.Vec3.normalize(he,t.Vec3.cross(he,pe,ue)),t.Vec3.setMagnitude(pe,pe,ot),t.Vec3.setMagnitude(he,he,Ze),t.Vec3.add(fe,pe,he),t.Vec3.normalize(oe,t.Vec3.cross(oe,fe,O)),t.Quat.setAxisAngle(ce,oe,pt),t.Vec3.transformQuat(O,O,ce),t.Vec3.transformQuat(p.up,p.up,ce),t.Vec3.copy(U,oe),q=pt):!b.staticMoving&&q&&(q*=Math.sqrt(1-b.dynamicDampingFactor),t.Vec3.sub(O,p.position,p.target),t.Quat.setAxisAngle(ce,U,q),t.Vec3.transformQuat(O,O,ce),t.Vec3.transformQuat(p.up,p.up,ce)),t.Vec2.copy(F,L)}const ge=(0,t.Quat)(),Ce=(0,t.Vec3)();function ve(){const Ze=(Me.rollRight-Me.rollLeft)/45,ot=(k[0]-N[0])*-Math.sign(k[1]),pt=(k[1]-N[1])*-Math.sign(k[0]),xt=-b.rotateSpeed*(-ot+pt)+Ze;xt?(t.Vec3.normalize(Ce,O),t.Quat.setAxisAngle(ge,Ce,xt),t.Vec3.transformQuat(p.up,p.up,ge),j=xt):!b.staticMoving&&j&&(j*=Math.sqrt(1-b.dynamicDampingFactor),t.Vec3.normalize(Ce,O),t.Quat.setAxisAngle(ge,Ce,j),t.Vec3.transformQuat(p.up,p.up,ge)),t.Vec2.copy(N,k)}const le=(0,t.Quat)(),me=(0,t.Vec3)();function ee(){const Ze=(Me.pitchUp-Me.pitchDown)/(b.flyMode?360:90),ot=-b.rotateSpeed*Ze;ot?(t.Vec3.cross(me,O,p.up),t.Vec3.normalize(me,me),t.Quat.setAxisAngle(le,me,ot),t.Vec3.transformQuat(O,O,le),t.Vec3.transformQuat(p.up,p.up,le),H=ot):!b.staticMoving&&H&&(H*=Math.sqrt(1-b.dynamicDampingFactor),t.Vec3.cross(me,O,p.up),t.Vec3.normalize(me,me),t.Quat.setAxisAngle(le,me,H),t.Vec3.transformQuat(O,O,le),t.Vec3.transformQuat(p.up,p.up,le))}const se=(0,t.Quat)(),ye=(0,t.Vec3)();function Se(){const Ze=(Me.yawRight-Me.yawLeft)/(b.flyMode?360:90),ot=-b.rotateSpeed*Ze;ot?(t.Vec3.normalize(ye,p.up),t.Quat.setAxisAngle(se,ye,ot),t.Vec3.transformQuat(O,O,se),t.Vec3.transformQuat(p.up,p.up,se),G=ot):!b.staticMoving&&G&&(G*=Math.sqrt(1-b.dynamicDampingFactor),t.Vec3.normalize(ye,p.up),t.Quat.setAxisAngle(se,ye,G),t.Vec3.transformQuat(O,O,se),t.Vec3.transformQuat(p.up,p.up,se))}function Ae(){const Ze=1+(W[1]-z[1])*b.zoomSpeed;Ze!==1&&Ze>0&&t.Vec3.scale(O,O,Ze),b.staticMoving?t.Vec2.copy(z,W):z[1]+=(W[1]-z[1])*b.dynamicDampingFactor}function _e(){const Ze=(Y[1]-X[1])*b.zoomSpeed;if(Ze!==0){const ot=Math.max(1,p.state.radius+p.state.radius*Ze);p.setState({radius:ot})}b.staticMoving?t.Vec2.copy(X,Y):X[1]+=(Y[1]-X[1])*b.dynamicDampingFactor}const be=(0,t.Vec2)(),xe=(0,t.Vec3)(),we=(0,t.Vec3)();function Be(){if(t.Vec2.sub(be,t.Vec2.copy(be,Q),K),t.Vec2.squaredMagnitude(be)){const Ze=d.pixelRatio*b.panSpeed;be[0]*=1/p.zoom*p.viewport.width*Ze,be[1]*=1/p.zoom*p.viewport.height*Ze,t.Vec3.cross(we,t.Vec3.copy(we,O),p.up),t.Vec3.setMagnitude(we,we,be[0]),t.Vec3.setMagnitude(xe,p.up,be[1]),t.Vec3.add(we,we,xe),t.Vec3.add(p.position,p.position,we),t.Vec3.add(p.target,p.target,we),b.staticMoving?t.Vec2.copy(K,Q):(t.Vec2.sub(be,Q,K),t.Vec2.scale(be,be,b.dynamicDampingFactor),t.Vec2.add(K,K,be))}}const Me={moveUp:0,moveDown:0,moveLeft:0,moveRight:0,moveForward:0,moveBack:0,pitchUp:0,pitchDown:0,yawLeft:0,yawRight:0,rollLeft:0,rollRight:0,boostMove:0},Re=(0,t.Vec3)(),Te=(0,t.Vec3)();function Ve(Ze){t.Vec3.sub(Te,p.position,p.target);const ot=Math.max(p.state.minNear,b.minDistance);t.Vec3.setMagnitude(Te,Te,ot);const pt=b.flyMode||d.pointerLock,xt=Ze*(60/1e3)*b.moveSpeed*(Me.boostMove===1?b.boostMoveFactor:1);if(Me.moveForward===1&&(t.Vec3.distance(p.position,u.boundingSphereVisible.center)<u.boundingSphereVisible.radius&&pt?(t.Vec3.normalize(Re,Te),t.Vec3.scaleAndSub(p.position,p.position,Re,xt)):(t.Vec3.sub(Re,p.position,p.target),t.Vec3.scale(Re,Re,1-xt/100),t.Vec3.add(p.position,p.target,Re)),pt&&t.Vec3.sub(p.target,p.position,Te)),Me.moveBack===1&&(t.Vec3.distance(p.position,u.boundingSphereVisible.center)<u.boundingSphereVisible.radius&&pt?(t.Vec3.normalize(Re,Te),t.Vec3.scaleAndAdd(p.position,p.position,Re,xt)):(t.Vec3.sub(Re,p.position,p.target),t.Vec3.scale(Re,Re,1+xt/100),t.Vec3.add(p.position,p.target,Re)),pt&&t.Vec3.sub(p.target,p.position,Te)),Me.moveLeft===1&&(t.Vec3.cross(Re,Te,p.up),t.Vec3.normalize(Re,Re),pt?(t.Vec3.scaleAndAdd(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,Te)):(t.Vec3.scaleAndSub(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,O))),Me.moveRight===1&&(t.Vec3.cross(Re,Te,p.up),t.Vec3.normalize(Re,Re),pt?(t.Vec3.scaleAndSub(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,Te)):(t.Vec3.scaleAndAdd(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,O))),Me.moveUp===1&&(t.Vec3.normalize(Re,p.up),pt?(t.Vec3.scaleAndAdd(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,Te)):(t.Vec3.scaleAndSub(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,O))),Me.moveDown===1&&(t.Vec3.normalize(Re,p.up),pt?(t.Vec3.scaleAndSub(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,Te)):(t.Vec3.scaleAndAdd(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,O))),pt){const pr=t.Vec3.distance(p.position,u.boundingSphereVisible.center);p.setState({minFar:pr+u.boundingSphereVisible.radius})}}function qe(){const Ze=Math.min(Math.max(p.state.radiusMax*1e3,.01),b.maxDistance);t.Vec3.squaredMagnitude(O)>Ze*Ze&&(t.Vec3.setMagnitude(O,O,Ze),t.Vec3.add(p.position,p.target,O),t.Vec2.copy(z,W),t.Vec2.copy(X,Y)),t.Vec3.squaredMagnitude(O)<b.minDistance*b.minDistance&&(t.Vec3.setMagnitude(O,O,b.minDistance),t.Vec3.add(p.position,p.target,O),t.Vec2.copy(z,W),t.Vec2.copy(X,Y))}function ke(Ze,ot){return Ze*=d.pixelRatio,ot*=d.pixelRatio,Ze>l.x+l.width||d.height-ot>l.y+l.height||Ze<l.x||d.height-ot<l.y}let ze=-1;function We(Ze){if(ze===Ze)return;const ot=Ze-ze;ze>0&&(b.animate.name==="spin"?br(ot):b.animate.name==="rock"&&Cn(ot)),t.Vec3.sub(O,p.position,p.target),de(),ve(),ee(),Se(),Ae(),_e(),Be(),t.Vec3.add(p.position,p.target,O),qe(),ze>0&&Ve(Math.min(ot,15*1e3/60)),t.Vec3.sub(O,p.position,p.target),qe(),t.Vec3.squaredDistance(w,p.position)>t.EPSILON&&t.Vec3.copy(w,p.position),ze=Ze}function Je(){t.Vec3.copy(p.target,J),t.Vec3.copy(p.position,ae),t.Vec3.copy(p.up,te),t.Vec3.sub(O,p.position,p.target),t.Vec3.copy(w,p.position)}function De({x:Ze,y:ot,dx:pt,dy:xt,pageX:pr,pageY:Rr,buttons:Qt,modifiers:tr,isStart:Fr,useDelta:un}){const Pn=!un&&ke(Ze,ot);if(Fr&&Pn||!Fr&&!B)return;B=!0,Fn();const Ln=o.Binding.match(C.dragRotate,Qt,tr),ti=o.Binding.match(C.dragRotateZ,Qt,tr),je=o.Binding.match(C.dragPan,Qt,tr),tt=o.Binding.match(C.dragZoom,Qt,tr),ut=o.Binding.match(C.dragFocus,Qt,tr),Pt=o.Binding.match(C.dragFocusZoom,Qt,tr);
17un&&Ln&&t.Vec2.copy(F,Z(pr-pt,Rr-xt)),Z(pr,Rr),$(pr,Rr);const Wt=d.pixelRatio,kt=(Ze*Wt-l.width/2-l.x)/l.width,ar=-(d.height-ot*Wt-l.height/2-l.y)/l.height;if(Fr&&(Ln&&(t.Vec2.copy(L,ie),t.Vec2.copy(F,L)),ti&&(t.Vec2.set(k,kt,ar),t.Vec2.copy(N,k)),(tt||Pt)&&(t.Vec2.copy(z,ne),t.Vec2.copy(W,z)),ut&&(t.Vec2.copy(X,ne),t.Vec2.copy(Y,X)),je&&(t.Vec2.copy(K,ne),t.Vec2.copy(Q,K))),Ln&&t.Vec2.copy(L,ie),ti&&t.Vec2.set(k,kt,ar),(tt||Pt)&&t.Vec2.copy(W,ne),ut&&t.Vec2.copy(Y,ne),Pt){const Qr=t.Vec3.distance(p.state.position,p.state.target);p.setState({radius:Qr/5})}je&&t.Vec2.copy(Q,ne)}function Oe(){B=!1}function Fe({x:Ze,y:ot,spinX:pt,spinY:xt,dz:pr,buttons:Rr,modifiers:Qt}){if(ke(Ze,ot))return;let tr=(0,c.absMax)(pt*.075,xt*.075,pr*1e-4);tr<-b.maxWheelDelta?tr=-b.maxWheelDelta:tr>b.maxWheelDelta&&(tr=b.maxWheelDelta),o.Binding.match(C.scrollZoom,Rr,Qt)&&(W[1]+=tr),o.Binding.match(C.scrollFocus,Rr,Qt)&&(Y[1]+=tr)}function Le({isStart:Ze,startX:ot,startY:pt,centerPageX:xt,centerPageY:pr,fractionDelta:Rr,buttons:Qt,modifiers:tr}){if(ke(ot,pt))return;const Fr=o.Binding.match(C.dragPan,Qt,tr),un=o.Binding.match(C.scrollZoom,Qt,tr);B=Fr||un,Fr&&($(xt,pr),Ze?(t.Vec2.copy(K,ne),t.Vec2.copy(Q,K)):t.Vec2.copy(Q,ne)),un&&(W[1]+=b.gestureScaleFactor*Rr)}function He({movementX:Ze,movementY:ot}){if(!d.pointerLock||Ze===void 0||ot===void 0)return;const pt=l.width*.5-l.x,xt=l.height*.5-l.y;t.Vec2.copy(F,Z(pt,xt)),t.Vec2.copy(L,Z(Ze+pt,ot+xt))}function Pe({modifiers:Ze,code:ot,key:pt,x:xt,y:pr}){ke(xt,pr)||(o.Binding.matchKey(C.keyMoveForward,ot,Ze,pt)?Me.moveForward=1:o.Binding.matchKey(C.keyMoveBack,ot,Ze,pt)?Me.moveBack=1:o.Binding.matchKey(C.keyMoveLeft,ot,Ze,pt)?Me.moveLeft=1:o.Binding.matchKey(C.keyMoveRight,ot,Ze,pt)?Me.moveRight=1:o.Binding.matchKey(C.keyMoveUp,ot,Ze,pt)?Me.moveUp=1:o.Binding.matchKey(C.keyMoveDown,ot,Ze,pt)?Me.moveDown=1:o.Binding.matchKey(C.keyRollLeft,ot,Ze,pt)?Me.rollLeft=1:o.Binding.matchKey(C.keyRollRight,ot,Ze,pt)?Me.rollRight=1:o.Binding.matchKey(C.keyPitchUp,ot,Ze,pt)?Me.pitchUp=1:o.Binding.matchKey(C.keyPitchDown,ot,Ze,pt)?Me.pitchDown=1:o.Binding.matchKey(C.keyYawLeft,ot,Ze,pt)?Me.yawLeft=1:o.Binding.matchKey(C.keyYawRight,ot,Ze,pt)&&(Me.yawRight=1),o.Binding.matchKey(C.boostMove,ot,Ze,pt)&&(Me.boostMove=1),o.Binding.matchKey(C.enablePointerLock,ot,Ze,pt)&&d.requestPointerLock(l))}function Ie({modifiers:Ze,code:ot,key:pt,x:xt,y:pr}){var Rr,Qt,tr,Fr,un,Pn,Ln,ti,je,tt,ut,Pt;if(ke(xt,pr))return;let Wt=!1;ot.startsWith("Alt")?(Wt=!0,Ze.alt=!0):ot.startsWith("Shift")?(Wt=!0,Ze.shift=!0):ot.startsWith("Control")?(Wt=!0,Ze.control=!0):ot.startsWith("Meta")&&(Wt=!0,Ze.meta=!0);const kt=[];Wt?(Me.moveForward&&kt.push(((Rr=C.keyMoveForward.triggers[0])===null||Rr===void 0?void 0:Rr.code)||""),Me.moveBack&&kt.push(((Qt=C.keyMoveBack.triggers[0])===null||Qt===void 0?void 0:Qt.code)||""),Me.moveLeft&&kt.push(((tr=C.keyMoveLeft.triggers[0])===null||tr===void 0?void 0:tr.code)||""),Me.moveRight&&kt.push(((Fr=C.keyMoveRight.triggers[0])===null||Fr===void 0?void 0:Fr.code)||""),Me.moveUp&&kt.push(((un=C.keyMoveUp.triggers[0])===null||un===void 0?void 0:un.code)||""),Me.moveDown&&kt.push(((Pn=C.keyMoveDown.triggers[0])===null||Pn===void 0?void 0:Pn.code)||""),Me.rollLeft&&kt.push(((Ln=C.keyRollLeft.triggers[0])===null||Ln===void 0?void 0:Ln.code)||""),Me.rollRight&&kt.push(((ti=C.keyRollRight.triggers[0])===null||ti===void 0?void 0:ti.code)||""),Me.pitchUp&&kt.push(((je=C.keyPitchUp.triggers[0])===null||je===void 0?void 0:je.code)||""),Me.pitchDown&&kt.push(((tt=C.keyPitchDown.triggers[0])===null||tt===void 0?void 0:tt.code)||""),Me.yawLeft&&kt.push(((ut=C.keyYawLeft.triggers[0])===null||ut===void 0?void 0:ut.code)||""),Me.yawRight&&kt.push(((Pt=C.keyYawRight.triggers[0])===null||Pt===void 0?void 0:Pt.code)||"")):kt.push(ot);for(const ar of kt)o.Binding.matchKey(C.keyMoveForward,ar,Ze,pt)?Me.moveForward=0:o.Binding.matchKey(C.keyMoveBack,ar,Ze,pt)?Me.moveBack=0:o.Binding.matchKey(C.keyMoveLeft,ar,Ze,pt)?Me.moveLeft=0:o.Binding.matchKey(C.keyMoveRight,ar,Ze,pt)?Me.moveRight=0:o.Binding.matchKey(C.keyMoveUp,ar,Ze,pt)?Me.moveUp=0:o.Binding.matchKey(C.keyMoveDown,ar,Ze,pt)?Me.moveDown=0:o.Binding.matchKey(C.keyRollLeft,ar,Ze,pt)?Me.rollLeft=0:o.Binding.matchKey(C.keyRollRight,ar,Ze,pt)?Me.rollRight=0:o.Binding.matchKey(C.keyPitchUp,ar,Ze,pt)?Me.pitchUp=0:o.Binding.matchKey(C.keyPitchDown,ar,Ze,pt)?Me.pitchDown=0:o.Binding.matchKey(C.keyYawLeft,ar,Ze,pt)?Me.yawLeft=0:o.Binding.matchKey(C.keyYawRight,ar,Ze,pt)&&(Me.yawRight=0);o.Binding.matchKey(C.boostMove,ot,Ze,pt)&&(Me.boostMove=0)}function Ee(){t.Vec3.sub(Te,p.position,p.target);const Ze=Math.max(p.state.minNear,b.minDistance);t.Vec3.setMagnitude(Te,Te,Ze),t.Vec3.sub(p.target,p.position,Te);const ot=t.Vec3.distance(p.position,u.boundingSphereVisible.center);p.setState({minFar:ot+u.boundingSphereVisible.radius})}function Ue(){const{center:Ze,radius:ot}=u.boundingSphereVisible;if(t.Vec3.distance(p.position,Ze)>ot){const xt=p.getFocus(Ze,ot);p.setState({...xt,minFar:0})}else p.setState({minFar:0,radius:u.boundingSphereVisible.radius})}function $e(Ze){Ze?Ee():Ue()}function Ye(){Me.moveForward=0,Me.moveBack=0,Me.moveLeft=0,Me.moveRight=0,Me.moveUp=0,Me.moveDown=0,Me.rollLeft=0,Me.rollRight=0,Me.pitchUp=0,Me.pitchDown=0,Me.yawLeft=0,Me.yawRight=0,Me.boostMove=0}function Qe(){Ye()}function it(){S||(S=!0,T.unsubscribe(),x.unsubscribe(),M.unsubscribe(),A.unsubscribe(),D.unsubscribe(),V.unsubscribe(),R.unsubscribe(),E.unsubscribe(),I.unsubscribe())}const ht=(0,t.Quat)(),mt=(0,t.Vec3)(),St=(0,t.Vec3)(),Bt=(0,t.Vec3)(),Ot=(0,t.Vec3)();function br(Ze){if(b.animate.name!=="spin"||b.animate.params.speed===0||B)return;const ot=2*Math.PI*b.animate.params.speed/1e3,pt=Ze*ot;t.Vec3.sub(O,p.position,p.target),t.Vec3.normalize(Ot,O),t.Vec3.normalize(St,p.up),t.Vec3.cross(Bt,St,Ot),t.Vec3.normalize(Bt,Bt);const xt=b.animate.params.axis;t.Vec3.set(mt,xt[0]*Bt[0]+xt[1]*St[0]+xt[2]*Ot[0],xt[0]*Bt[1]+xt[1]*St[1]+xt[2]*Ot[1],xt[0]*Bt[2]+xt[1]*St[2]+xt[2]*Ot[2]),t.Vec3.normalize(mt,mt),t.Quat.setAxisAngle(ht,mt,pt),t.Vec3.transformQuat(O,O,ht),t.Vec3.transformQuat(p.up,p.up,ht),t.Vec3.add(p.position,p.target,O)}let Ir=0;function Cn(Ze){if(b.animate.name!=="rock"||b.animate.params.speed===0||B)return;const ot=Ze/1e3*b.animate.params.speed,pt=(0,c.degToRad)(b.animate.params.angle),xt=Math.sin(Ir*Math.PI*2)*pt,Rr=Math.sin((Ir+ot)*Math.PI*2)*pt-xt;t.Vec3.sub(O,p.position,p.target),t.Vec3.normalize(Ot,O),t.Vec3.normalize(St,p.up),t.Vec3.cross(Bt,St,Ot),t.Vec3.normalize(Bt,Bt);const Qt=b.animate.params.axis;t.Vec3.set(mt,Qt[0]*Bt[0]+Qt[1]*St[0]+Qt[2]*Ot[0],Qt[0]*Bt[1]+Qt[1]*St[1]+Qt[2]*Ot[1],Qt[0]*Bt[2]+Qt[1]*St[2]+Qt[2]*Ot[2]),t.Vec3.normalize(mt,mt),t.Quat.setAxisAngle(ht,mt,Rr),t.Vec3.transformQuat(O,O,ht),t.Vec3.transformQuat(p.up,p.up,ht),t.Vec3.add(p.position,p.target,O),Ir+=ot,Ir>=1&&(Ir=0)}function Fn(){Ir=0}function ei(Ze){ze=-1,We(Ze)}return{viewport:l,get isAnimating(){return b.animate.name!=="off"},get isMoving(){return Me.moveForward===1||Me.moveBack===1||Me.moveLeft===1||Me.moveRight===1||Me.moveUp===1||Me.moveDown===1||Me.rollLeft===1||Me.rollRight===1||Me.pitchUp===1||Me.pitchDown===1||Me.yawLeft===1||Me.yawRight===1},get props(){return b},setProps:Ze=>{var ot;((ot=Ze.animate)===null||ot===void 0?void 0:ot.name)==="rock"&&b.animate.name!=="rock"&&Fn(),Ze.flyMode!==void 0&&Ze.flyMode!==b.flyMode&&(Ze.flyMode?Ee():Ue()),Object.assign(b,Ze)},get attribs(){return P},setAttribs:Ze=>{Object.assign(P,Ze),Object.assign(C,P.bindings)},start:ei,update:We,reset:Je,dispose:it}}g.create=a})(_||(e.TrackballControls=_={}))})(Hx)),Hx}var qo={},qt={},ay={},qr={},oy={},lq;function Ore(){return lq||(lq=1,Object.defineProperty(oy,"__esModule",{value:!0}),oy.apply_fog=void 0,oy.apply_fog=`
18float preFogAlpha = gl_FragColor.a;
19if (uFog) {
20    float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);
21    float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));
22    float fogAlpha = (1.0 - fogFactor) * gl_FragColor.a;
23    if (!uTransparentBackground) {
24        if (gl_FragColor.a < 1.0) {
25            // transparent objects are blended with background color
26            gl_FragColor.a = fogAlpha;
27        } else {
28            // mix opaque objects with background color
29            gl_FragColor.rgb = mix(gl_FragColor.rgb, uFogColor, fogFactor);
30        }
31    } else {
32        #if defined(dRenderVariant_colorDpoit) && !defined(dGeometryType_directVolume)
33            if (gl_FragColor.a < 1.0) {
34                // transparent objects are blended with background color
35                gl_FragColor.a = fogAlpha;
36            } else {
37                // opaque objects need to be pre-multiplied alpha
38                gl_FragColor.rgb *= fogAlpha;
39                gl_FragColor.a = fogAlpha;
40            }
41        #else
42            // pre-multiplied alpha expected for transparent background
43            gl_FragColor.rgb *= fogAlpha;
44            gl_FragColor.a = fogAlpha;
45        #endif
46    }
47} else if (uTransparentBackground) {
48    #if !defined(dRenderVariant_colorDpoit) && !defined(dGeometryType_directVolume)
49        // pre-multiplied alpha expected for transparent background
50        gl_FragColor.rgb *= gl_FragColor.a;
51    #endif
52}
53`),oy}var sy={},dq;function kre(){return dq||(dq=1,Object.defineProperty(sy,"__esModule",{value:!0}),sy.apply_interior_color=void 0,sy.apply_interior_color=`
54if (interior) {
55    material.rgb = mix(material.rgb, uInteriorColor.rgb, uInteriorColor.a);
56
57    float isf = clamp(uInteriorSubstance.a, 0.0, 0.99); // clamp to avoid artifacts
58    metalness = mix(metalness, uInteriorSubstance.r, isf);
59    roughness = mix(roughness, uInteriorSubstance.g, isf);
60    bumpiness = mix(bumpiness, uInteriorSubstance.b, isf);
61
62    #ifdef dTransparentBackfaces_opaque
63        material.a = 1.0;
64    #endif
65}
66`),sy}var cy={},fq;function Fre(){return fq||(fq=1,Object.defineProperty(cy,"__esModule",{value:!0}),cy.apply_light_color=void 0,cy.apply_light_color=`
67#if defined(dIgnoreLight)
68    #ifdef bumpEnabled
69        if (uBumpFrequency > 0.0 && uBumpAmplitude > 0.0 && bumpiness > 0.0) {
70            material.rgb += fbm(vModelPosition * uBumpFrequency) * uBumpAmplitude * bumpiness;
71            material.rgb -= 0.5 * uBumpAmplitude * bumpiness;
72        }
73    #endif
74
75    #if defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
76        material.rgb += material.rgb * emissive;
77    #endif
78
79    gl_FragColor = material;
80#else
81    #ifdef bumpEnabled
82        if (uBumpFrequency > 0.0 && uBumpAmplitude > 0.0 && bumpiness > 0.0) {
83            normal = perturbNormal(-vViewPosition, normal, fbm(vModelPosition * uBumpFrequency), (uBumpAmplitude * bumpiness) / uBumpFrequency);
84        }
85    #endif
86
87    vec4 color = material;
88
89    #if defined(dCelShaded)
90        // clamp to avoid artifacts
91        metalness = clamp(metalness, 0.0, 0.99);
92        roughness = clamp(roughness, 0.05, 1.0);
93    #endif
94
95    GeometricContext geometry;
96    geometry.position = -vViewPosition;
97    geometry.normal = normal;
98    geometry.viewDir = normalize(vViewPosition);
99
100    PhysicalMaterial physicalMaterial;
101    physicalMaterial.diffuseColor = color.rgb * (1.0 - metalness);
102    #ifdef enabledFragDepth
103        physicalMaterial.roughness = min(max(roughness, 0.0525), 1.0);
104    #else
105        vec3 dxy = max(abs(dFdx(normal)), abs(dFdy(normal)));
106        float geometryRoughness = max(max(dxy.x, dxy.y), dxy.z);
107        physicalMaterial.roughness = min(max(roughness, 0.0525) + geometryRoughness, 1.0);
108    #endif
109    physicalMaterial.specularColor = mix(vec3(0.04), color.rgb, metalness);
110    physicalMaterial.specularF90 = 1.0;
111
112    IncidentLight directLight;
113
114    vec3 outgoingLight = vec3(0.0);
115
116    #if defined(dCelShaded)
117        float celDiffuse;
118        float celSpecular;
119        float celIntensity;
120
121        #pragma unroll_loop_start
122        for (int i = 0; i < dLightCount; ++i) {
123            directLight.direction = uLightDirection[i];
124            directLight.color = uLightColor[i] * PI; // * PI for punctual light
125
126            celDiffuse = RECIPROCAL_PI * max(dot(geometry.normal, directLight.direction), 0.0) * (1.0 - metalness);
127            celSpecular = luminance(saturate(dot(geometry.normal, directLight.direction)) * BRDF_GGX(directLight.direction, geometry.viewDir, geometry.normal, physicalMaterial.specularColor, physicalMaterial.specularF90, roughness));
128
129            celIntensity = celDiffuse + celSpecular;
130            celIntensity = ceil(celIntensity * uCelSteps) / uCelSteps;
131
132            outgoingLight += color.rgb * directLight.color * celIntensity;
133        }
134        #pragma unroll_loop_end
135
136        outgoingLight += physicalMaterial.diffuseColor * uAmbientColor;
137    #else
138        ReflectedLight reflectedLight = ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0));
139
140        #pragma unroll_loop_start
141        for (int i = 0; i < dLightCount; ++i) {
142            directLight.direction = uLightDirection[i];
143            directLight.color = uLightColor[i] * PI; // * PI for punctual light
144            RE_Direct_Physical(directLight, geometry, physicalMaterial, reflectedLight);
145        }
146        #pragma unroll_loop_end
147
148        vec3 irradiance = uAmbientColor * PI; // * PI for punctual light
149        RE_IndirectDiffuse_Physical(irradiance, geometry, physicalMaterial, reflectedLight);
150
151        // indirect specular only metals
152        vec3 radiance = uAmbientColor * metalness;
153        vec3 iblIrradiance = uAmbientColor * metalness;
154        vec3 clearcoatRadiance = vec3(0.0);
155        RE_IndirectSpecular_Physical(radiance, iblIrradiance, clearcoatRadiance, geometry, physicalMaterial, reflectedLight);
156
157        outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;
158    #endif
159    outgoingLight = clamp(outgoingLight, 0.01, 0.99); // prevents black artifacts on specular highlight with transparent background
160
161    #if defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
162        outgoingLight += color.rgb * emissive;
163    #endif
164
165    gl_FragColor = vec4(outgoingLight, color.a);
166#endif
167
168gl_FragColor.rgb *= uExposure;
169`),cy}var uy={},mq;function Lre(){return mq||(mq=1,Object.defineProperty(uy,"__esModule",{value:!0}),uy.apply_marker_color=void 0,uy.apply_marker_color=`
170
171#if defined(dColorMarker)
172    if (marker > 0.0) {
173        if ((uMarkerPriority == 1 && marker != 2.0) || (uMarkerPriority != 1 && marker == 1.0)) {
174            gl_FragColor.rgb = mix(gl_FragColor.rgb, uHighlightColor, uHighlightStrength);
175            gl_FragColor.a = max(gl_FragColor.a, uHighlightStrength * 0.002); // for direct-volume rendering
176        } else {
177            gl_FragColor.rgb = mix(gl_FragColor.rgb, uSelectColor, uSelectStrength);
178            gl_FragColor.a = max(gl_FragColor.a, uSelectStrength * 0.002); // for direct-volume rendering
179        }
180    } else if (uMarkerAverage > 0.0) {
181        gl_FragColor.rgb = mix(gl_FragColor.rgb, uDimColor, uDimStrength);
182        gl_FragColor.a = max(gl_FragColor.a, uDimStrength * 0.002); // for direct-volume rendering
183    }
184#endif
185`),uy}var ly={},pq;function Nre(){return pq||(pq=1,Object.defineProperty(ly,"__esModule",{value:!0}),ly.assign_clipping_varying=void 0,ly.assign_clipping_varying=`
186#if dClipObjectCount != 0 && defined(dClipping)
187    #if defined(dClippingType_instance)
188        vClipping = readFromTexture(tClipping, aInstance, uClippingTexDim).a;
189    #elif defined(dMarkerType_groupInstance)
190        vClipping = readFromTexture(tClipping, aInstance * float(uGroupCount) + group, uClippingTexDim).a;
191    #endif
192#endif
193`),ly}var dy={},hq;function qre(){return hq||(hq=1,Object.defineProperty(dy,"__esModule",{value:!0}),dy.assign_color_varying=void 0,dy.assign_color_varying=`
194#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) || defined(dRenderVariant_emissive)
195    #if defined(dColorType_attribute)
196        vColor.rgb = aColor;
197    #elif defined(dColorType_instance)
198        vColor.rgb = readFromTexture(tColor, aInstance, uColorTexDim).rgb;
199    #elif defined(dColorType_group)
200        #if defined(dDualColor)
201            vec4 color2;
202            if (aColorMode == 2.0) {
203                vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;
204            } else {
205                vColor.rgb = readFromTexture(tColor, group * 2.0, uColorTexDim).rgb;
206                color2.rgb = readFromTexture(tColor, group * 2.0 + 1.0, uColorTexDim).rgb;
207            }
208        #else
209            vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;
210        #endif
211    #elif defined(dColorType_groupInstance)
212        #if defined(dDualColor)
213            vec4 color2;
214            if (aColorMode == 2.0) {
215                vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;
216            } else {
217                vColor.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0, uColorTexDim).rgb;
218                color2.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0 + 1.0, uColorTexDim).rgb;
219            }
220        #else
221            vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;
222        #endif
223    #elif defined(dColorType_vertex)
224        vColor.rgb = readFromTexture(tColor, vertexId, uColorTexDim).rgb;
225    #elif defined(dColorType_vertexInstance)
226        vColor.rgb = readFromTexture(tColor, int(aInstance) * uVertexCount + vertexId, uColorTexDim).rgb;
227    #elif defined(dColorType_volume)
228        vec3 cgridPos = (uColorGridTransform.w * (position - uColorGridTransform.xyz)) / uColorGridDim;
229        vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;
230    #elif defined(dColorType_volumeInstance)
231        vec3 cgridPos = (uColorGridTransform.w * (vModelPosition / uModelScale - uColorGridTransform.xyz)) / uColorGridDim;
232        vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;
233    #endif
234
235    #ifdef dUsePalette
236        vPaletteV = ((vColor.r * 256.0 * 256.0 * 255.0 + vColor.g * 256.0 * 255.0 + vColor.b * 255.0) - 1.0) / PALETTE_SCALE;
237    #endif
238
239    #ifdef dOverpaint
240        #if defined(dOverpaintType_instance)
241            vOverpaint = readFromTexture(tOverpaint, aInstance, uOverpaintTexDim);
242        #elif defined(dOverpaintType_groupInstance)
243            vOverpaint = readFromTexture(tOverpaint, aInstance * float(uGroupCount) + group, uOverpaintTexDim);
244        #elif defined(dOverpaintType_vertexInstance)
245            vOverpaint = readFromTexture(tOverpaint, int(aInstance) * uVertexCount + vertexId, uOverpaintTexDim);
246        #elif defined(dOverpaintType_volumeInstance)
247            vec3 ogridPos = (uOverpaintGridTransform.w * (vModelPosition / uModelScale - uOverpaintGridTransform.xyz)) / uOverpaintGridDim;
248            vOverpaint = texture3dFrom2dLinear(tOverpaintGrid, ogridPos, uOverpaintGridDim, uOverpaintTexDim);
249        #endif
250
251        // pre-mix to avoid darkening due to empty overpaint
252        #ifdef dColorType_uniform
253            vOverpaint.rgb = mix(uColor.rgb, vOverpaint.rgb, vOverpaint.a);
254        #else
255            vOverpaint.rgb = mix(vColor.rgb, vOverpaint.rgb, vOverpaint.a);
256        #endif
257        vOverpaint *= uOverpaintStrength;
258    #endif
259
260    #ifdef dEmissive
261        #if defined(dEmissiveType_instance)
262            vEmissive = readFromTexture(tEmissive, aInstance, uEmissiveTexDim).a;
263        #elif defined(dEmissiveType_groupInstance)
264            vEmissive = readFromTexture(tEmissive, aInstance * float(uGroupCount) + group, uEmissiveTexDim).a;
265        #elif defined(dEmissiveType_vertexInstance)
266            vEmissive = readFromTexture(tEmissive, int(aInstance) * uVertexCount + vertexId, uEmissiveTexDim).a;
267        #elif defined(dEmissiveType_volumeInstance)
268            vec3 egridPos = (uEmissiveGridTransform.w * (vModelPosition / uModelScale - uEmissiveGridTransform.xyz)) / uEmissiveGridDim;
269            vEmissive = texture3dFrom2dLinear(tEmissiveGrid, egridPos, uEmissiveGridDim, uEmissiveTexDim).a;
270        #endif
271        vEmissive *= uEmissiveStrength;
272    #endif
273
274    #ifdef dSubstance
275        #if defined(dSubstanceType_instance)
276            vSubstance = readFromTexture(tSubstance, aInstance, uSubstanceTexDim);
277        #elif defined(dSubstanceType_groupInstance)
278            vSubstance = readFromTexture(tSubstance, aInstance * float(uGroupCount) + group, uSubstanceTexDim);
279        #elif defined(dSubstanceType_vertexInstance)
280            vSubstance = readFromTexture(tSubstance, int(aInstance) * uVertexCount + vertexId, uSubstanceTexDim);
281        #elif defined(dSubstanceType_volumeInstance)
282            vec3 sgridPos = (uSubstanceGridTransform.w * (vModelPosition / uModelScale - uSubstanceGridTransform.xyz)) / uSubstanceGridDim;
283            vSubstance = texture3dFrom2dLinear(tSubstanceGrid, sgridPos, uSubstanceGridDim, uSubstanceTexDim);
284        #endif
285
286        // pre-mix to avoid artifacts due to empty substance
287        vSubstance.rgb = mix(vec3(uMetalness, uRoughness, uBumpiness), vSubstance.rgb, vSubstance.a);
288        vSubstance *= uSubstanceStrength;
289    #endif
290#elif defined(dRenderVariant_emissive)
291    #ifdef dEmissive
292        #if defined(dEmissiveType_instance)
293            vEmissive = readFromTexture(tEmissive, aInstance, uEmissiveTexDim).a;
294        #elif defined(dEmissiveType_groupInstance)
295            vEmissive = readFromTexture(tEmissive, aInstance * float(uGroupCount) + group, uEmissiveTexDim).a;
296        #elif defined(dEmissiveType_vertexInstance)
297            vEmissive = readFromTexture(tEmissive, int(aInstance) * uVertexCount + vertexId, uEmissiveTexDim).a;
298        #elif defined(dEmissiveType_volumeInstance)
299            vec3 egridPos = (uEmissiveGridTransform.w * (vModelPosition / uModelScale - uEmissiveGridTransform.xyz)) / uEmissiveGridDim;
300            vEmissive = texture3dFrom2dLinear(tEmissiveGrid, egridPos, uEmissiveGridDim, uEmissiveTexDim).a;
301        #endif
302        vEmissive *= uEmissiveStrength;
303    #endif
304#elif defined(dRenderVariant_pick)
305    #ifdef requiredDrawBuffers
306        vObject = vec4(packIntToRGB(float(uObjectId)), 1.0);
307        vInstance = vec4(packIntToRGB(aInstance), 1.0);
308        vGroup = vec4(packIntToRGB(group), 1.0);
309    #else
310        if (uPickType == 1) {
311            vColor = vec4(packIntToRGB(float(uObjectId)), 1.0);
312        } else if (uPickType == 2) {
313            vColor = vec4(packIntToRGB(aInstance), 1.0);
314        } else {
315            vColor = vec4(packIntToRGB(group), 1.0);
316        }
317    #endif
318#endif
319
320#ifdef dTransparency
321    #if defined(dTransparencyType_instance)
322        vTransparency = readFromTexture(tTransparency, aInstance, uTransparencyTexDim).a;
323    #elif defined(dTransparencyType_groupInstance)
324        vTransparency = readFromTexture(tTransparency, aInstance * float(uGroupCount) + group, uTransparencyTexDim).a;
325    #elif defined(dTransparencyType_vertexInstance)
326        vTransparency = readFromTexture(tTransparency, int(aInstance) * uVertexCount + vertexId, uTransparencyTexDim).a;
327    #elif defined(dTransparencyType_volumeInstance)
328        vec3 tgridPos = (uTransparencyGridTransform.w * (vModelPosition / uModelScale - uTransparencyGridTransform.xyz)) / uTransparencyGridDim;
329        vTransparency = texture3dFrom2dLinear(tTransparencyGrid, tgridPos, uTransparencyGridDim, uTransparencyTexDim).a;
330    #endif
331    vTransparency *= uTransparencyStrength;
332#endif
333`),dy}var fy={},gq;function Ure(){return gq||(gq=1,Object.defineProperty(fy,"__esModule",{value:!0}),fy.assign_group=void 0,fy.assign_group=`
334#ifdef dGeometryType_textureMesh
335    float group = unpackRGBToInt(readFromTexture(tGroup, vertexId, uGeoTexDim).rgb);
336#else
337    float group = aGroup;
338#endif
339`),fy}var my={},yq;function jre(){return yq||(yq=1,Object.defineProperty(my,"__esModule",{value:!0}),my.assign_marker_varying=void 0,my.assign_marker_varying=`
340#if defined(dNeedsMarker)
341    #if defined(dMarkerType_instance)
342        vMarker = readFromTexture(tMarker, aInstance, uMarkerTexDim).a;
343    #elif defined(dMarkerType_groupInstance)
344        vMarker = readFromTexture(tMarker, aInstance * float(uGroupCount) + group, uMarkerTexDim).a;
345    #endif
346#endif
347`),my}var py={},vq;function Gre(){return vq||(vq=1,Object.defineProperty(py,"__esModule",{value:!0}),py.assign_material_color=void 0,py.assign_material_color=`
348#if defined(dNeedsMarker)
349    float marker = uMarker;
350    if (uMarker == -1.0) {
351        marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win
352    }
353#endif
354
355// optional per-fragment opacity multiplier; defaults to 1.0
356#ifndef dHasMaterialOpacity
357    float materialOpacity = 1.0;
358#endif
359
360#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
361    #if defined(dUsePalette)
362        vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha);
363    #elif defined(dColorType_uniform)
364        vec4 material = vec4(uColor, uAlpha);
365    #elif defined(dColorType_varying)
366        vec4 material = vec4(vColor.rgb, uAlpha);
367    #endif
368
369    // mix material with overpaint
370    #if defined(dOverpaint)
371        material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a);
372    #endif
373
374    float emissive = uEmissive;
375    #ifdef dEmissive
376        emissive += vEmissive;
377    #endif
378
379    float metalness = uMetalness;
380    float roughness = uRoughness;
381    float bumpiness = uBumpiness;
382    #ifdef dSubstance
383        float sf = clamp(vSubstance.a, 0.0, 0.99); // clamp to avoid artifacts
384        metalness = mix(metalness, vSubstance.r, sf);
385        roughness = mix(roughness, vSubstance.g, sf);
386        bumpiness = mix(bumpiness, vSubstance.b, sf);
387    #endif
388
389    #if defined(dXrayShaded)
390        material.a = calcXrayShadedAlpha(material.a, normal);
391    #endif
392#elif defined(dRenderVariant_depth)
393    if (fragmentDepth > getDepth(gl_FragCoord.xy / uDrawingBufferSize)) {
394        discard;
395    }
396    vec4 material;
397    if (uRenderMask == MaskOpaque) {
398        #if defined(dXrayShaded)
399            discard;
400        #endif
401        #if defined(dTransparency)
402            float dta = 1.0 - vTransparency;
403            #if __VERSION__ == 100 || defined(dVaryingGroup)
404                if (vTransparency < 0.1) dta = 1.0; // hard cutoff to avoid artifacts
405            #endif
406
407            if (uAlpha * materialOpacity * dta < 1.0) {
408                discard;
409            }
410        #else
411            if (uAlpha * materialOpacity < 1.0) {
412                discard;
413            }
414        #endif
415        material = packDepthToRGBA(fragmentDepth);
416    } else if (uRenderMask == MaskTransparent) {
417        float alpha = uAlpha * materialOpacity;
418        #if defined(dTransparency)
419            float dta = 1.0 - vTransparency;
420            alpha *= dta;
421        #endif
422
423        #ifdef dXrayShaded
424            alpha = calcXrayShadedAlpha(alpha, normal);
425        #else
426            if (alpha == 1.0) {
427                discard;
428            }
429        #endif
430        material = packDepthWithAlphaToRGBA(fragmentDepth, alpha);
431    }
432#elif defined(dRenderVariant_marking)
433    vec4 material;
434    if(uMarkingType == 1) {
435        if (marker > 0.0)
436            discard;
437        #ifdef enabledFragDepth
438            material = packDepthToRGBA(gl_FragDepthEXT);
439        #else
440            material = packDepthToRGBA(gl_FragCoord.z);
441        #endif
442    } else {
443        if (marker == 0.0)
444            discard;
445        float depthTest = 1.0;
446        if (uMarkingDepthTest) {
447            depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0;
448        }
449        bool isHighlight = intMod(marker, 2.0) > 0.1;
450        float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);
451        float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));
452        if (fogFactor == 1.0)
453            discard;
454        material = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor);
455    }
456#elif defined(dRenderVariant_emissive)
457    float emissive = uEmissive;
458    #ifdef dEmissive
459        emissive += vEmissive;
460    #endif
461    float emissiveAlpha = uAlpha;
462    #if defined(dXrayShaded)
463        emissiveAlpha = calcXrayShadedAlpha(emissiveAlpha, normal);
464    #endif
465    // fade emissive bloom with fog so the glow dims into the background like the geometry
466    if (uFog) {
467        float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);
468        emissiveAlpha *= 1.0 - smoothstep(uFogNear, uFogFar, abs(viewZ));
469    }
470    // dim emitters behind a transparent blocker by its coverage (tDepth packs front depth+alpha)
471    vec2 emissiveBlocker = unpackRGBAToDepthWithAlpha(texture2D(tDepth, gl_FragCoord.xy / uDrawingBufferSize));
472    if (fragmentDepth > emissiveBlocker.x + 0.0001) {
473        emissiveAlpha *= 1.0 - emissiveBlocker.y;
474    }
475    // glow with the object's own color so emissive isn't double-counted via the lit buffer
476    #if defined(dUsePalette)
477        vec3 emissiveColor = texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb;
478    #elif defined(dColorType_uniform)
479        vec3 emissiveColor = uColor;
480    #elif defined(dColorType_varying)
481        vec3 emissiveColor = vColor.rgb;
482    #else
483        vec3 emissiveColor = vec3(1.0);
484    #endif
485    #ifdef dOverpaint
486        emissiveColor = mix(emissiveColor, vOverpaint.rgb, vOverpaint.a);
487    #endif
488    float e = emissive * emissiveAlpha;
489    vec4 material = vec4(emissiveColor * e, e);
490#endif
491
492// apply per-group transparency
493#if defined(dTransparency) && (defined(dRenderVariant_pick) || defined(dRenderVariant_color) || defined(dRenderVariant_emissive) || defined(dRenderVariant_tracing))
494    float ta = 1.0 - vTransparency;
495    if (vTransparency < 0.09) ta = 1.0; // hard cutoff looks better
496
497    #if defined(dRenderVariant_pick)
498        if (ta * uAlpha < uPickingAlphaThreshold)
499            discard; // ignore so the element below can be picked
500    #elif defined(dRenderVariant_emissive)
501        material *= ta;
502    #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
503        material.a *= ta;
504    #endif
505#endif
506`),py}var hy={},bq;function zre(){return bq||(bq=1,Object.defineProperty(hy,"__esModule",{value:!0}),hy.assign_position=void 0,hy.assign_position=`
507#ifdef dGeometryType_image
508    mat4 transform = aTransform;
509#else
510    mat4 transform = applyTumble(aTransform, aInstance, float(uObjectId));
511#endif
512mat4 model = uModel * transform;
513mat4 modelView = uView * model;
514#ifdef dGeometryType_textureMesh
515    vec3 position = readFromTexture(tPosition, vertexId, uGeoTexDim).xyz;
516#else
517    vec3 position = aPosition;
518#endif
519#ifndef dGeometryType_image
520    position = applyWiggle(position, group, aInstance);
521#endif
522vec4 position4 = vec4(position, 1.0);
523// for accessing tColorGrid in vert shader and for clipping in frag shader
524vModelPosition = (model * position4).xyz;
525vec4 mvPosition = modelView * position4;
526vViewPosition = mvPosition.xyz;
527gl_Position = uProjection * mvPosition;
528`),hy}var gy={},_q;function Hre(){return _q||(_q=1,Object.defineProperty(gy,"__esModule",{value:!0}),gy.assign_size=void 0,gy.assign_size=`
529#if defined(dSizeType_uniform)
530    float size = uSize;
531#elif defined(dSizeType_attribute)
532    float size = aSize;
533#elif defined(dSizeType_instance)
534    float size = unpackRGBToInt(readFromTexture(tSize, aInstance, uSizeTexDim).rgb);
535#elif defined(dSizeType_group)
536    float size = unpackRGBToInt(readFromTexture(tSize, group, uSizeTexDim).rgb);
537#elif defined(dSizeType_groupInstance)
538    float size = unpackRGBToInt(readFromTexture(tSize, aInstance * float(uGroupCount) + group, uSizeTexDim).rgb);
539#elif defined(dSizeType_vertex)
540    float size = unpackRGBToInt(readFromTexture(tSize, vertexId, uSizeTexDim).rgb);
541#elif defined(dSizeType_vertexInstance)
542    float size = unpackRGBToInt(readFromTexture(tSize, int(aInstance) * uVertexCount + vertexId, uSizeTexDim).rgb);
543#endif
544
545#if defined(dSizeType_instance) || defined(dSizeType_group) || defined(dSizeType_groupInstance) || defined(dSizeType_vertex) || defined(dSizeType_vertexInstance)
546    size /= 100.0; // NOTE factor also set in TypeScript
547#endif
548
549size *= uSizeFactor;
550`),gy}var yy={},Sq;function Wre(){return Sq||(Sq=1,Object.defineProperty(yy,"__esModule",{value:!0}),yy.check_picking_alpha=void 0,yy.check_picking_alpha=`
551float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);
552float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));
553float fogAlpha = (1.0 - fogFactor) * uAlpha;
554float alpha = uAlpha;
555#ifdef dXrayShaded
556    // add bias to make picking xray shaded elements easier
557    alpha = calcXrayShadedAlpha(alpha, normal) + (0.3 * uPickingAlphaThreshold);
558#endif
559// if not opaque enough ignore so the element below can be picked
560if (alpha < uPickingAlphaThreshold || fogAlpha < 0.1) {
561    #ifdef dTransparentBackfaces_opaque
562        if (!interior) discard;
563    #else
564        discard;
565    #endif
566}
567`),yy}var vy={},Cq;function $re(){return Cq||(Cq=1,Object.defineProperty(vy,"__esModule",{value:!0}),vy.check_transparency=void 0,vy.check_transparency=`
568#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
569    #if defined(dTransparentBackfaces_off)
570        if (interior && material.a < 1.0) discard;
571    #elif defined(dTransparentBackfaces_opaque)
572        if (interior) material.a = 1.0;
573    #endif
574
575    #if !defined(dXrayShaded)
576        if ((uRenderMask == MaskOpaque && material.a < 1.0) ||
577            (uRenderMask == MaskTransparent && material.a == 1.0)
578        ) {
579            discard;
580        }
581    #endif
582#endif
583
584#if defined(dRenderVariant_depth)
585    #if defined(dTransparentBackfaces_off)
586        if (interior) discard;
587    #endif
588#endif
589`),vy}var by={},Pq;function Xre(){return Pq||(Pq=1,Object.defineProperty(by,"__esModule",{value:!0}),by.clip_instance=void 0,by.clip_instance=`
590#if defined(dClipVariant_instance) && dClipObjectCount != 0
591    vec3 mCenter = (uModel * aTransform * vec4(uInvariantBoundingSphere.xyz, 1.0)).xyz;
592    if (clipTest(mCenter / uModelScale)) {
593        // move out of [ -w, +w ] to 'discard' in vert shader
594        gl_Position.z = 2.0 * gl_Position.w;
595    }
596#endif
597`),by}var _y={},Tq;function Kre(){return Tq||(Tq=1,Object.defineProperty(_y,"__esModule",{value:!0}),_y.clip_pixel=void 0,_y.clip_pixel=`
598#if defined(dClipVariant_pixel) && dClipObjectCount != 0
599    if (clipTest(vModelPosition / uModelScale))
600        discard;
601#endif
602`),_y}var Sy={},xq;function Yre(){return xq||(xq=1,Object.defineProperty(Sy,"__esModule",{value:!0}),Sy.color_frag_params=void 0,Sy.color_frag_params=`
603uniform float uMetalness;
604uniform float uRoughness;
605uniform float uBumpiness;
606#ifdef bumpEnabled
607    uniform float uBumpFrequency;
608    uniform float uBumpAmplitude;
609#endif
610uniform float uEmissive;
611
612// Density value to estimate object thickness
613uniform float uDensity;
614
615#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) || defined(dRenderVariant_emissive)
616    #if defined(dColorType_uniform)
617        uniform vec3 uColor;
618    #elif defined(dColorType_varying)
619        varying vec4 vColor;
620    #endif
621
622    #ifdef dUsePalette
623        uniform sampler2D tPalette;
624        varying float vPaletteV;
625    #endif
626
627    #ifdef dOverpaint
628        varying vec4 vOverpaint;
629    #endif
630
631    #ifdef dEmissive
632        varying float vEmissive;
633    #endif
634
635    #ifdef dSubstance
636        varying vec4 vSubstance;
637    #endif
638#elif defined(dRenderVariant_emissive)
639    #ifdef dEmissive
640        varying float vEmissive;
641    #endif
642#elif defined(dRenderVariant_pick)
643    #if __VERSION__ == 100 || !defined(dVaryingGroup)
644        #ifdef requiredDrawBuffers
645            varying vec4 vObject;
646            varying vec4 vInstance;
647            varying vec4 vGroup;
648        #else
649            varying vec4 vColor;
650        #endif
651    #else
652        #ifdef requiredDrawBuffers
653            flat in vec4 vObject;
654            flat in vec4 vInstance;
655            flat in vec4 vGroup;
656        #else
657            flat in vec4 vColor;
658        #endif
659    #endif
660#endif
661
662#ifdef dTransparency
663    varying float vTransparency;
664#endif
665`),Sy}var Cy={},Aq;function Qre(){return Aq||(Aq=1,Object.defineProperty(Cy,"__esModule",{value:!0}),Cy.color_vert_params=void 0,Cy.color_vert_params=`
666uniform float uMetalness;
667uniform float uRoughness;
668uniform float uBumpiness;
669
670#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) || defined(dRenderVariant_emissive)
671    #if defined(dColorType_uniform)
672        uniform vec3 uColor;
673    #elif defined(dColorType_attribute)
674        varying vec4 vColor;
675        attribute vec3 aColor;
676    #elif defined(dColorType_texture)
677        varying vec4 vColor;
678        uniform vec2 uColorTexDim;
679        uniform sampler2D tColor;
680    #elif defined(dColorType_grid)
681        varying vec4 vColor;
682        uniform vec2 uColorTexDim;
683        uniform vec3 uColorGridDim;
684        uniform vec4 uColorGridTransform;
685        uniform sampler2D tColorGrid;
686    #elif defined(dColorType_direct)
687        varying vec4 vColor;
688    #endif
689
690    #ifdef dUsePalette
691        varying float vPaletteV;
692    #endif
693
694    #ifdef dOverpaint
695        #if defined(dOverpaintType_instance) || defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)
696            varying vec4 vOverpaint;
697            uniform vec2 uOverpaintTexDim;
698            uniform sampler2D tOverpaint;
699        #elif defined(dOverpaintType_volumeInstance)
700            varying vec4 vOverpaint;
701            uniform vec2 uOverpaintTexDim;
702            uniform vec3 uOverpaintGridDim;
703            uniform vec4 uOverpaintGridTransform;
704            uniform sampler2D tOverpaintGrid;
705        #endif
706        uniform float uOverpaintStrength;
707    #endif
708
709    #ifdef dEmissive
710        #if defined(dEmissiveType_instance) || defined(dEmissiveType_groupInstance) || defined(dEmissiveType_vertexInstance)
711            varying float vEmissive;
712            uniform vec2 uEmissiveTexDim;
713            uniform sampler2D tEmissive;
714        #elif defined(dEmissiveType_volumeInstance)
715            varying float vEmissive;
716            uniform vec2 uEmissiveTexDim;
717            uniform vec3 uEmissiveGridDim;
718            uniform vec4 uEmissiveGridTransform;
719            uniform sampler2D tEmissiveGrid;
720        #endif
721        uniform float uEmissiveStrength;
722    #endif
723
724    #ifdef dSubstance
725        #if defined(dSubstanceType_instance) || defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)
726            varying vec4 vSubstance;
727            uniform vec2 uSubstanceTexDim;
728            uniform sampler2D tSubstance;
729        #elif defined(dSubstanceType_volumeInstance)
730            varying vec4 vSubstance;
731            uniform vec2 uSubstanceTexDim;
732            uniform vec3 uSubstanceGridDim;
733            uniform vec4 uSubstanceGridTransform;
734            uniform sampler2D tSubstanceGrid;
735        #endif
736        uniform float uSubstanceStrength;
737    #endif
738#elif defined(dRenderVariant_emissive)
739    #ifdef dEmissive
740        #if defined(dEmissiveType_instance) || defined(dEmissiveType_groupInstance) || defined(dEmissiveType_vertexInstance)
741            varying float vEmissive;
742            uniform vec2 uEmissiveTexDim;
743            uniform sampler2D tEmissive;
744        #elif defined(dEmissiveType_volumeInstance)
745            varying float vEmissive;
746            uniform vec2 uEmissiveTexDim;
747            uniform vec3 uEmissiveGridDim;
748            uniform vec4 uEmissiveGridTransform;
749            uniform sampler2D tEmissiveGrid;
750        #endif
751        uniform float uEmissiveStrength;
752    #endif
753#elif defined(dRenderVariant_pick)
754    #if __VERSION__ == 100 || !defined(dVaryingGroup)
755        #ifdef requiredDrawBuffers
756            varying vec4 vObject;
757            varying vec4 vInstance;
758            varying vec4 vGroup;
759        #else
760            varying vec4 vColor;
761        #endif
762    #else
763        #ifdef requiredDrawBuffers
764            flat out vec4 vObject;
765            flat out vec4 vInstance;
766            flat out vec4 vGroup;
767        #else
768            flat out vec4 vColor;
769        #endif
770    #endif
771#endif
772
773#ifdef dTransparency
774    #if defined(dTransparencyType_instance) || defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)
775        varying float vTransparency;
776        uniform vec2 uTransparencyTexDim;
777        uniform sampler2D tTransparency;
778    #elif defined(dTransparencyType_volumeInstance)
779        varying float vTransparency;
780        uniform vec2 uTransparencyTexDim;
781        uniform vec3 uTransparencyGridDim;
782        uniform vec4 uTransparencyGridTransform;
783        uniform sampler2D tTransparencyGrid;
784    #endif
785    uniform float uTransparencyStrength;
786#endif
787`),Cy}var Py={},Mq;function Zre(){return Mq||(Mq=1,Object.defineProperty(Py,"__esModule",{value:!0}),Py.common_animation=void 0,Py.common_animation=`
788uniform float uWiggleSpeed;
789uniform float uWiggleAmplitude;
790uniform float uWiggleFrequency;
791uniform int uWiggleMode;
792uniform float uTumbleSpeed;
793uniform float uTumbleAmplitude;
794uniform float uTumbleFrequency;
795
796#ifdef dWiggle
797    uniform vec2 uWiggleTexDim;
798    uniform sampler2D tWiggle;
799    uniform float uWiggleStrength;
800#endif
801
802vec3 applyWiggle(vec3 pos, float groupId, float instanceId) {
803    if (!uEnableAnimation) return pos;
804    float amplitude = uWiggleAmplitude;
805    #ifdef dWiggle
806        #if defined(dWiggleType_instance)
807            amplitude += readFromTexture(tWiggle, instanceId, uWiggleTexDim).a * uWiggleStrength;
808        #elif defined(dWiggleType_groupInstance)
809            amplitude += readFromTexture(tWiggle, instanceId * float(uGroupCount) + groupId, uWiggleTexDim).a * uWiggleStrength;
810        #endif
811    #endif
812    if (amplitude > 0.0 && uWiggleSpeed > 0.0 && uWiggleFrequency > 0.0) {
813        float t = uTime * uWiggleSpeed;
814        vec3 s;
815        if (uWiggleMode == 0) {
816            // Position mode: spatial position correlates nearby atoms
817            s = pos;
818        } else {
819            // Group mode: per-group independent noise
820            // Hash groupId into a well-distributed 3D seed to avoid repetition
821            s = vec3(
822                fract(sin(groupId * 127.1) * 43758.5453) * 1000.0,
823                fract(sin(groupId * 269.5) * 21639.7182) * 1000.0,
824                fract(sin(groupId * 419.2) * 32517.3926) * 1000.0
825            );
826        }
827        s *= uWiggleFrequency;
828        pos.x += (fbm(vec3(s.x, s.y + t, s.z)) / 0.4375 - 1.0) * amplitude;
829        pos.y += (fbm(vec3(s.x + 37.0, s.y, s.z + t)) / 0.4375 - 1.0) * amplitude;
830        pos.z += (fbm(vec3(s.x + t, s.y + 73.0, s.z)) / 0.4375 - 1.0) * amplitude;
831    }
832    return pos;
833}
834
835mat4 applyTumble(mat4 transform, float instanceIndex, float objectId) {
836    if (!uEnableAnimation) return transform;
837    if (uTumbleAmplitude > 0.0 && uTumbleSpeed > 0.0 && uTumbleFrequency > 0.0) {
838        // Scale amplitude inversely with bounding-sphere radius (Stokes-Einstein: D ~ 1/r)
839        float amplitude = uTumbleAmplitude / max(uInvariantBoundingSphere.w, 1.0);
840        float t = uTime * uTumbleSpeed;
841        float seed = (instanceIndex * 127.1 + objectId * 311.7) * uTumbleFrequency;
842
843        // Per-instance rotation angles from layered noise (Brownian-like)
844        float angleX = (fbm(vec3(seed, t, 0.0)) / 0.4375 - 1.0) * amplitude;
845        float angleY = (fbm(vec3(seed, 0.0, t)) / 0.4375 - 1.0) * amplitude;
846        float angleZ = (fbm(vec3(0.0, seed, t)) / 0.4375 - 1.0) * amplitude;
847
848        float cx = cos(angleX); float sx = sin(angleX);
849        float cy = cos(angleY); float sy = sin(angleY);
850        float cz = cos(angleZ); float sz = sin(angleZ);
851
852        // Combined rotation matrix (Rz * Ry * Rx)
853        mat3 rot = mat3(
854            cy * cz, cx * sz + sx * sy * cz, sx * sz - cx * sy * cz,
855            -cy * sz, cx * cz - sx * sy * sz, sx * cz + cx * sy * sz,
856            sy, -sx * cy, cx * cy
857        );
858
859        // Per-instance translation offset from layered noise (Brownian-like)
860        vec3 offset = vec3(
861            (fbm(vec3(seed + 31.7, t, 0.0)) / 0.4375 - 1.0),
862            (fbm(vec3(seed + 31.7, 0.0, t)) / 0.4375 - 1.0),
863            (fbm(vec3(0.0, seed + 31.7, t)) / 0.4375 - 1.0)
864        ) * amplitude;
865
866        // Bounding-sphere center transformed by the linear part only (no translation)
867        vec3 localCenter = mat3(transform) * uInvariantBoundingSphere.xyz;
868
869        // Rotate basis vectors
870        mat4 result = transform;
871        result[0].xyz = rot * transform[0].xyz;
872        result[1].xyz = rot * transform[1].xyz;
873        result[2].xyz = rot * transform[2].xyz;
874
875        // Adjust translation so rotation pivots around the transformed center
876        result[3].xyz = transform[3].xyz + localCenter - rot * localCenter + offset;
877
878        return result;
879    }
880    return transform;
881}
882`),Py}var Ty={},Dq;function Jre(){return Dq||(Dq=1,Object.defineProperty(Ty,"__esModule",{value:!0}
882),Ty.common_clip=void 0,Ty.common_clip=`
883vec3 quaternionTransform(const in vec4 q, const in vec3 v) {
884    vec3 t = 2.0 * cross(q.xyz, v);
885    return v + q.w * t + cross(q.xyz, t);
886}
887
888vec4 computePlane(const in vec3 normal, const in vec3 inPoint) {
889    return vec4(normalize(normal), -dot(normal, inPoint));
890}
891
892float planeSD(const in vec4 plane, const in vec3 center) {
893    return -dot(plane.xyz, center - plane.xyz * -plane.w);
894}
895
896float sphereSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) {
897    return (
898        length(quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position) / size) - 1.0
899    ) * min(min(size.x, size.y), size.z);
900}
901
902float cubeSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) {
903    vec3 d = abs(quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position)) - size;
904    return min(max(d.x, max(d.y, d.z)), 0.0) + length(max(d, 0.0));
905}
906
907float cylinderSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) {
908    vec3 t = quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position);
909
910    vec2 d = abs(vec2(length(t.xz), t.y)) - size.xy;
911    return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));
912}
913
914float infiniteConeSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) {
915    vec3 t = quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position);
916
917    float q = length(t.xy);
918    return dot(size.xy, vec2(q, t.z));
919}
920
921float getSignedDistance(const in vec3 center, const in int type, const in vec3 position, const in vec4 rotation, const in vec3 scale, const in mat4 transform) {
922    vec3 c = (transform * vec4(center, 1.0)).xyz;
923    if (type == 1) {
924        vec3 normal = quaternionTransform(rotation, vec3(0.0, 1.0, 0.0));
925        vec4 plane = computePlane(normal, position);
926        return planeSD(plane, c);
927    } else if (type == 2) {
928        return sphereSD(position, rotation, scale * 0.5, c);
929    } else if (type == 3) {
930        return cubeSD(position, rotation, scale * 0.5, c);
931    } else if (type == 4) {
932        return cylinderSD(position, rotation, scale * 0.5, c);
933    } else if (type == 5) {
934        return infiniteConeSD(position, rotation, scale * 0.5, c);
935    } else {
936        return 0.1;
937    }
938}
939
940#if __VERSION__ == 100
941    // 8-bit
942    int bitwiseAnd(in int a, in int b) {
943        int d = 128;
944        int result = 0;
945        for (int i = 0; i < 8; ++i) {
946            if (d <= 0) break;
947            if (a >= d && b >= d) result += d;
948            if (a >= d) a -= d;
949            if (b >= d) b -= d;
950            d /= 2;
951        }
952        return result;
953    }
954
955    bool hasBit(const in int mask, const in int bit) {
956        return bitwiseAnd(mask, bit) == 0;
957    }
958#else
959    bool hasBit(const in int mask, const in int bit) {
960        return (mask & bit) == 0;
961    }
962#endif
963
964#if dClipObjectCount != 0
965    bool clipTest(const in vec3 center) {
966        // flag is a bit-flag for clip-objects to ignore (note, object ids start at 1 not 0)
967        #if defined(dClipping)
968            int flag = int(floor(vClipping * 255.0 + 0.5));
969        #else
970            int flag = 0;
971        #endif
972
973        #pragma unroll_loop_start
974        for (int i = 0; i < dClipObjectCount; ++i) {
975            if (flag == 0 || hasBit(flag, UNROLLED_LOOP_INDEX + 1)) {
976                bool test = getSignedDistance(center, uClipObjectType[i], uClipObjectPosition[i], uClipObjectRotation[i], uClipObjectScale[i], uClipObjectTransform[i]) <= 0.0;
977                if ((!uClipObjectInvert[i] && test) || (uClipObjectInvert[i] && !test)) {
978                    return true;
979                }
980            }
981        }
982        #pragma unroll_loop_end
983        return false;
984    }
985#endif
986`),Ty}var xy={},Iq;function ene(){return Iq||(Iq=1,Object.defineProperty(xy,"__esModule",{value:!0}),xy.common_frag_params=void 0,xy.common_frag_params=`
987uniform int uObjectId;
988uniform int uInstanceCount;
989uniform int uGroupCount;
990
991uniform int uPickType;
992uniform int uMarkingType;
993
994uniform vec4 uCameraPlane;
995uniform vec4 uLod;
996
997#if dClipObjectCount != 0
998    uniform int uClipObjectType[dClipObjectCount];
999    uniform bool uClipObjectInvert[dClipObjectCount];
1000    uniform vec3 uClipObjectPosition[dClipObjectCount];
1001    uniform vec4 uClipObjectRotation[dClipObjectCount];
1002    uniform vec3 uClipObjectScale[dClipObjectCount];
1003    uniform mat4 uClipObjectTransform[dClipObjectCount];
1004
1005    #if defined(dClipping)
1006        #if __VERSION__ == 100 || defined(dClippingType_instance) || !defined(dVaryingGroup)
1007            varying float vClipping;
1008        #else
1009            flat in float vClipping;
1010        #endif
1011    #endif
1012#endif
1013
1014#if defined(dColorMarker)
1015    uniform vec3 uHighlightColor;
1016    uniform vec3 uSelectColor;
1017    uniform vec3 uDimColor;
1018    uniform float uHighlightStrength;
1019    uniform float uSelectStrength;
1020    uniform float uDimStrength;
1021    uniform int uMarkerPriority;
1022    uniform float uMarkerAverage;
1023#endif
1024
1025#if defined(dNeedsMarker)
1026    uniform float uMarker;
1027    #if __VERSION__ == 100 || defined(dMarkerType_instance) || !defined(dVaryingGroup)
1028        varying float vMarker;
1029    #else
1030        flat in float vMarker;
1031    #endif
1032#endif
1033
1034#if defined(dRenderVariant_colorDpoit)
1035    #define MAX_DPOIT_DEPTH 99999.0 // NOTE constant also set in TypeScript
1036    uniform sampler2D tDpoitDepth;
1037    uniform sampler2D tDpoitFrontColor;
1038#endif
1039
1040varying vec3 vModelPosition;
1041varying vec3 vViewPosition;
1042
1043uniform vec2 uViewOffset;
1044uniform float uModelScale;
1045
1046uniform float uNear;
1047uniform float uFar;
1048uniform float uIsOrtho;
1049
1050uniform bool uFog;
1051uniform float uFogNear;
1052uniform float uFogFar;
1053uniform vec3 uFogColor;
1054
1055uniform float uAlpha;
1056uniform float uPickingAlphaThreshold;
1057uniform bool uTransparentBackground;
1058
1059uniform bool uDoubleSided;
1060bool interior;
1061
1062uniform float uXrayEdgeFalloff;
1063uniform float uCelSteps;
1064uniform float uExposure;
1065
1066uniform mat4 uProjection;
1067
1068uniform int uRenderMask;
1069uniform bool uMarkingDepthTest;
1070
1071uniform sampler2D tDepth;
1072uniform vec2 uDrawingBufferSize;
1073
1074float getDepthPacked(const in vec2 coords) {
1075    return unpackRGBAToDepth(texture2D(tDepth, coords));
1076}
1077
1078float getDepth(const in vec2 coords) {
1079    #ifdef depthTextureSupport
1080        return texture2D(tDepth, coords).r;
1081    #else
1082        return unpackRGBAToDepth(texture2D(tDepth, coords));
1083    #endif
1084}
1085
1086float calcDepth(const in vec3 pos) {
1087    vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;
1088    return 0.5 + 0.5 * clipZW.x / clipZW.y;
1089}
1090
1091// "Bump Mapping Unparametrized Surfaces on the GPU" Morten S. Mikkelsen
1092// https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf
1093vec3 perturbNormal(in vec3 position, in vec3 normal, in float height, in float scale) {
1094    vec3 sigmaS = dFdx(position);
1095    vec3 sigmaT = dFdy(position);
1096
1097    vec3 r1 = cross(sigmaT, normal);
1098    vec3 r2 = cross(normal, sigmaS);
1099    float det = dot(sigmaS, r1);
1100    if (det == 0.0) return normal;
1101
1102    float bs = dFdx(height);
1103    float bt = dFdy(height);
1104
1105    vec3 surfGrad = sign(det) * (bs * r1 + bt * r2);
1106    return normalize(abs(det) * normal - scale * surfGrad);
1107}
1108
1109#ifdef dXrayShaded
1110    float calcXrayShadedAlpha(in float alpha, const in vec3 normal) {
1111        #if defined(dXrayShaded_on)
1112            alpha *= 1.0 - pow(abs(dot(normal, vec3(0.0, 0.0, 1.0))), uXrayEdgeFalloff);
1113        #elif defined(dXrayShaded_inverted)
1114            alpha *= pow(abs(dot(normal, vec3(0.0, 0.0, 1.0))), uXrayEdgeFalloff);
1115        #endif
1116        return clamp(alpha, 0.001, 0.999);
1117    }
1118#endif
1119`),xy}var Ay={},wq;function tne(){return wq||(wq=1,Object.defineProperty(Ay,"__esModule",{value:!0}),Ay.common_vert_params=void 0,Ay.common_vert_params=`
1120uniform mat4 uProjection, uModel, uView;
1121uniform vec3 uCameraPosition;
1122uniform vec4 uCameraPlane;
1123
1124uniform int uObjectId;
1125uniform int uVertexCount;
1126uniform int uInstanceCount;
1127uniform int uGroupCount;
1128uniform vec4 uInvariantBoundingSphere;
1129uniform vec4 uLod;
1130
1131uniform bool uDoubleSided;
1132uniform int uPickType;
1133uniform float uTime;
1134uniform bool uEnableAnimation;
1135
1136#if dClipObjectCount != 0
1137    uniform int uClipObjectType[dClipObjectCount];
1138    uniform bool uClipObjectInvert[dClipObjectCount];
1139    uniform vec3 uClipObjectPosition[dClipObjectCount];
1140    uniform vec4 uClipObjectRotation[dClipObjectCount];
1141    uniform vec3 uClipObjectScale[dClipObjectCount];
1142    uniform mat4 uClipObjectTransform[dClipObjectCount];
1143
1144    #if defined(dClipping)
1145        uniform vec2 uClippingTexDim;
1146        uniform sampler2D tClipping;
1147        #if __VERSION__ == 100 || defined(dClippingType_instance) || !defined(dVaryingGroup)
1148            varying float vClipping;
1149        #else
1150            flat out float vClipping;
1151        #endif
1152    #endif
1153#endif
1154
1155#if defined(dNeedsMarker)
1156    uniform float uMarker;
1157    uniform vec2 uMarkerTexDim;
1158    uniform sampler2D tMarker;
1159    #if __VERSION__ == 100 || defined(dMarkerType_instance) || !defined(dVaryingGroup)
1160        varying float vMarker;
1161    #else
1162        flat out float vMarker;
1163    #endif
1164#endif
1165
1166varying vec3 vModelPosition;
1167varying vec3 vViewPosition;
1168
1169uniform float uModelScale;
1170
1171#if defined(noNonInstancedActiveAttribs)
1172    // int() is needed for some Safari versions
1173    // see https://bugs.webkit.org/show_bug.cgi?id=244152
1174    #define VertexID int(gl_VertexID)
1175#else
1176    attribute float aVertex;
1177    #define VertexID int(aVertex)
1178#endif
1179
1180#if defined(enabledMultiDraw)
1181    #define DrawID gl_DrawID
1182#else
1183    #define DrawID uDrawId
1184#endif
1185`),Ay}var My={},Vq;function rne(){return Vq||(Vq=1,Object.defineProperty(My,"__esModule",{value:!0}),My.common=void 0,My.common=`
1186// TODO find a better place for these convenience defines
1187
1188#if defined(dRenderVariant_colorBlended) || defined(dRenderVariant_colorWboit) || defined(dRenderVariant_colorDpoit)
1189    #define dRenderVariant_color
1190#endif
1191
1192#if defined(dColorType_instance) || defined(dColorType_group) || defined(dColorType_groupInstance) || defined(dColorType_vertex) || defined(dColorType_vertexInstance)
1193    #define dColorType_texture
1194#endif
1195
1196#if defined(dColorType_volume) || defined(dColorType_volumeInstance)
1197    #define dColorType_grid
1198#endif
1199
1200#if defined(dColorType_attribute) || defined(dColorType_texture) || defined(dColorType_grid)
1201    #define dColorType_varying
1202#endif
1203
1204#if ((defined(dRenderVariant_color) || defined(dRenderVariant_tracing)) && defined(dColorMarker)) || defined(dRenderVariant_marking)
1205    #define dNeedsMarker
1206#endif
1207
1208#if defined(dXrayShaded_on) || defined(dXrayShaded_inverted)
1209    #define dXrayShaded
1210#endif
1211
1212#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) || ((defined(dRenderVariant_depth) || defined(dRenderVariant_pick)) && defined(dXrayShaded))
1213    #define dNeedsNormal
1214#endif
1215
1216#define MaskAll 0
1217#define MaskOpaque 1
1218#define MaskTransparent 2
1219
1220//
1221
1222#define PI 3.14159265
1223#define RECIPROCAL_PI 0.31830988618
1224#define EPSILON 1e-6
1225#define ONE_MINUS_EPSILON 1.0 - EPSILON
1226#define TWO_PI 6.2831853
1227#define HALF_PI 1.570796325
1228
1229#define PALETTE_SCALE 16777214.0 // (1 << 24) - 2
1230
1231#define saturate(a) clamp(a, 0.0, 1.0)
1232
1233#if __VERSION__ == 100
1234    #define round(x) floor((x) + 0.5)
1235#endif
1236
1237float intDiv(const in float a, const in float b) { return float(int(a) / int(b)); }
1238vec2 ivec2Div(const in vec2 a, const in vec2 b) { return vec2(ivec2(a) / ivec2(b)); }
1239float intMod(const in float a, const in float b) { return a - b * float(int(a) / int(b)); }
1240int imod(const in int a, const in int b) { return a - b * (a / b); }
1241
1242float pow2(const in float x) { return x * x; }
1243
1244vec3 packIntToRGB(in float value) {
1245    value = clamp(round(value), 0.0, 16777216.0 - 1.0) + 1.0;
1246    vec3 c = vec3(0.0);
1247    c.b = mod(value, 256.0);
1248    value = floor(value / 256.0);
1249    c.g = mod(value, 256.0);
1250    value = floor(value / 256.0);
1251    c.r = mod(value, 256.0);
1252    return c / 255.0;
1253}
1254float unpackRGBToInt(const in vec3 rgb) {
1255    return (floor(rgb.r * 255.0 + 0.5) * 256.0 * 256.0 + floor(rgb.g * 255.0 + 0.5) * 256.0 + floor(rgb.b * 255.0 + 0.5)) - 1.0;
1256}
1257
1258vec2 packUnitIntervalToRG(const in float v) {
1259    vec2 enc;
1260    enc.xy = vec2(fract(v * 256.0), v);
1261    enc.y -= enc.x * (1.0 / 256.0);
1262    enc.xy *=  256.0 / 255.0;
1263
1264    return enc;
1265}
1266
1267float unpackRGToUnitInterval(const in vec2 enc) {
1268    return dot(enc, vec2(255.0 / (256.0 * 256.0), 255.0 / 256.0));
1269}
1270
1271float pack2x4(vec2 v) {
1272    vec2 clamped_v = clamp(v, 0.0, 1.0);
1273    vec2 scaled_v = floor(clamped_v * 15.0 + 0.5); // round to 0–15
1274    float c = scaled_v.x + scaled_v.y * 16.0;
1275    return c / 255.0;
1276}
1277
1278vec2 unpack2x4(float f) {
1279    float c = floor(f * 255.0 + 0.5);
1280    float lo = mod(c, 16.0);
1281    float hi = floor(c / 16.0);
1282    return vec2(lo, hi) / 15.0;
1283}
1284
1285vec3 screenSpaceToViewSpace(const in vec3 ssPos, const in mat4 invProjection) {
1286    vec4 p = vec4(ssPos * 2.0 - 1.0, 1.0);
1287    p = invProjection * p;
1288    return p.xyz / p.w;
1289}
1290
1291const float PackUpscale = 256.0 / 255.0; // fraction -> 0..1 (including 1)
1292const float UnpackDownscale = 255.0 / 256.0; // 0..1 -> fraction (excluding 1)
1293const vec3 PackFactors = vec3(256.0 * 256.0 * 256.0, 256.0 * 256.0,  256.0);
1294const vec4 UnpackFactors = UnpackDownscale / vec4(PackFactors, 1.0);
1295const float ShiftRight8 = 1.0 / 256.0;
1296
1297vec4 packDepthToRGBA(const in float v) {
1298    vec4 r = vec4(fract(v * PackFactors), v);
1299    r.yzw -= r.xyz * ShiftRight8; // tidy overflow
1300    return r * PackUpscale;
1301}
1302float unpackRGBAToDepth(const in vec4 v) {
1303    return dot(v, UnpackFactors);
1304}
1305
1306vec4 packDepthWithAlphaToRGBA(const in float depth, const in float alpha){
1307    vec3 r = vec3(fract(depth * PackFactors.yz), depth);
1308    r.yz -= r.xy * ShiftRight8; // tidy overflow
1309    return vec4(r * PackUpscale, alpha);
1310}
1311vec2 unpackRGBAToDepthWithAlpha(const in vec4 v) {
1312    return vec2(dot(v.xyz, UnpackFactors.yzw), v.w);
1313}
1314
1315vec4 sRGBToLinear(const in vec4 c) {
1316    return vec4(mix(pow(c.rgb * 0.9478672986 + vec3(0.0521327014), vec3(2.4)), c.rgb * 0.0773993808, vec3(lessThanEqual(c.rgb, vec3(0.04045)))), c.a);
1317}
1318vec4 linearTosRGB(const in vec4 c) {
1319    return vec4(mix(pow(c.rgb, vec3(0.41666)) * 1.055 - vec3(0.055), c.rgb * 12.92, vec3(lessThanEqual(c.rgb, vec3(0.0031308)))), c.a);
1320}
1321
1322float luminance(vec3 c) {
1323    // https://www.w3.org/TR/WCAG21/#dfn-relative-luminance
1324    const vec3 W = vec3(0.2125, 0.7154, 0.0721);
1325    return dot(c, W);
1326}
1327
1328float linearizeDepth(const in float depth, const in float near, const in float far) {
1329    return (2.0 * near) / (far + near - depth * (far - near));
1330}
1331
1332float perspectiveDepthToViewZ(const in float invClipZ, const in float near, const in float far) {
1333    return (near * far) / ((far - near) * invClipZ - far);
1334}
1335
1336float orthographicDepthToViewZ(const in float linearClipZ, const in float near, const in float far) {
1337    return linearClipZ * (near - far) - near;
1338}
1339
1340float depthToViewZ(const in float isOrtho, const in float linearClipZ, const in float near, const in float far) {
1341    return isOrtho == 1.0 ? orthographicDepthToViewZ(linearClipZ, near, far) : perspectiveDepthToViewZ(linearClipZ, near, far);
1342}
1343
1344// see https://github.com/graphitemaster/normals_revisited and https://www.shadertoy.com/view/3s33zj
1345mat3 adjoint(const in mat4 m) {
1346    return mat3(
1347        cross(m[1].xyz, m[2].xyz),
1348        cross(m[2].xyz, m[0].xyz),
1349        cross(m[0].xyz, m[1].xyz)
1350    );
1351}
1352
1353#if __VERSION__ == 100
1354    // transpose
1355
1356    float transpose(const in float m) {
1357        return m;
1358    }
1359
1360    mat2 transpose2(const in mat2 m) {
1361        return mat2(
1362            m[0][0], m[1][0],
1363            m[0][1], m[1][1]
1364        );
1365    }
1366
1367    mat3 transpose3(const in mat3 m) {
1368        return mat3(
1369            m[0][0], m[1][0], m[2][0],
1370            m[0][1], m[1][1], m[2][1],
1371            m[0][2], m[1][2], m[2][2]
1372        );
1373    }
1374
1375    mat4 transpose4(const in mat4 m) {
1376        return mat4(
1377            m[0][0], m[1][0], m[2][0], m[3][0],
1378            m[0][1], m[1][1], m[2][1], m[3][1],
1379            m[0][2], m[1][2], m[2][2], m[3][2],
1380            m[0][3], m[1][3], m[2][3], m[3][3]
1381        );
1382    }
1383
1384    // inverse
1385
1386    float inverse(const in float m) {
1387        return 1.0 / m;
1388    }
1389
1390    mat2 inverse2(const in mat2 m) {
1391        return mat2(m[1][1],-m[0][1],
1392                -m[1][0], m[0][0]) / (m[0][0]*m[1][1] - m[0][1]*m[1][0]);
1393    }
1394
1395    mat3 inverse3(const in mat3 m) {
1396        float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2];
1397        float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2];
1398        float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2];
1399
1400        float b01 = a22 * a11 - a12 * a21;
1401        float b11 = -a22 * a10 + a12 * a20;
1402        float b21 = a21 * a10 - a11 * a20;
1403
1404        float det = a00 * b01 + a01 * b11 + a02 * b21;
1405
1406        return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11),
1407                    b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10),
1408                    b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det;
1409    }
1410
1411    mat4 inverse4(const in mat4 m) {
1412        float
1413            a00 = m[0][0], a01 = m[0][1], a02 = m[0][2], a03 = m[0][3],
1414            a10 = m[1][0], a11 = m[1][1], a12 = m[1][2], a13 = m[1][3],
1415            a20 = m[2][0], a21 = m[2][1], a22 = m[2][2], a23 = m[2][3],
1416            a30 = m[3][0], a31 = m[3][1], a32 = m[3][2], a33 = m[3][3],
1417
1418            b00 = a00 * a11 - a01 * a10,
1419            b01 = a00 * a12 - a02 * a10,
1420            b02 = a00 * a13 - a03 * a10,
1421            b03 = a01 * a12 - a02 * a11,
1422            b04 = a01 * a13 - a03 * a11,
1423            b05 = a02 * a13 - a03 * a12,
1424            b06 = a20 * a31 - a21 * a30,
1425            b07 = a20 * a32 - a22 * a30,
1426            b08 = a20 * a33 - a23 * a30,
1427            b09 = a21 * a32 - a22 * a31,
1428            b10 = a21 * a33 - a23 * a31,
1429            b11 = a22 * a33 - a23 * a32,
1430
1431            det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
1432
1433        return mat4(
1434            a11 * b11 - a12 * b10 + a13 * b09,
1435            a02 * b10 - a01 * b11 - a03 * b09,
1436            a31 * b05 - a32 * b04 + a33 * b03,
1437            a22 * b04 - a21 * b05 - a23 * b03,
1438            a12 * b08 - a10 * b11 - a13 * b07,
1439            a00 * b11 - a02 * b08 + a03 * b07,
1440            a32 * b02 - a30 * b05 - a33 * b01,
1441            a20 * b05 - a22 * b02 + a23 * b01,
1442            a10 * b10 - a11 * b08 + a13 * b06,
1443            a01 * b08 - a00 * b10 - a03 * b06,
1444            a30 * b04 - a31 * b02 + a33 * b00,
1445            a21 * b02 - a20 * b04 - a23 * b00,
1446            a11 * b07 - a10 * b09 - a12 * b06,
1447            a00 * b09 - a01 * b07 + a02 * b06,
1448            a31 * b01 - a30 * b03 - a32 * b00,
1449            a20 * b03 - a21 * b01 + a22 * b00) / det;
1450    }
1451
1452    #define isNaN(x) ((x) != (x))
1453    #define isInf(x) ((x) == (x) + 1.0)
1454#else
1455    #define transpose2(m) transpose(m)
1456    #define transpose3(m) transpose(m)
1457    #define transpose4(m) transpose(m)
1458
1459    #define inverse2(m) inverse(m)
1460    #define inverse3(m) inverse(m)
1461    #define inverse4(m) inverse(m)
1462
1463    #define isNaN isnan
1464    #define isInf isinf
1465#endif
1466
1467float hash(in float h) {
1468    return fract(sin(h) * 43758.5453123);
1469}
1470
1471float noise(in vec3 x) {
1472    vec3 p = floor(x);
1473    vec3 f = fract(x);
1474    f = f * f * (3.0 - 2.0 * f);
1475
1476    float n = p.x + p.y * 157.0 + 113.0 * p.z;
1477    return mix(
1478        mix(mix(hash(n + 0.0), hash(n + 1.0), f.x),
1479            mix(hash(n + 157.0), hash(n + 158.0), f.x), f.y),
1480        mix(mix(hash(n + 113.0), hash(n + 114.0), f.x),
1481            mix(hash(n + 270.0), hash(n + 271.0), f.x), f.y), f.z);
1482}
1483
1484float fbm(in vec3 p) {
1485    float f = 0.0;
1486    f += 0.5 * noise(p);
1487    p *= 2.01;
1488    f += 0.25 * noise(p);
1489    p *= 2.02;
1490    f += 0.125 * noise(p);
1491
1492    return f;
1493}
1494`),My}var Dy={},Eq;function nne(){return Eq||(Eq=1,Object.defineProperty(Dy,"__esModule",{value:!0}),Dy.fade_lod=void 0,Dy.fade_lod=`
1495if (uLod.w == 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) {
1496    float d = (dot(uCameraPlane.xyz, vModelPosition) + uCameraPlane.w) / uModelScale;
1497    float ta = min(
1498        smoothstep(uLod.x, uLod.x + uLod.z, d),
1499        1.0 - smoothstep(uLod.y - uLod.z, uLod.y, d)
1500    );
1501
1502    #if defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
1503        float at = 0.0;
1504
1505        // shift by view-offset during multi-sample rendering to allow for blending
1506        vec2 coord = gl_FragCoord.xy + uViewOffset * 0.25;
1507
1508        const mat4 thresholdMatrix = mat4(
1509            1.0 / 17.0,  9.0 / 17.0,  3.0 / 17.0, 11.0 / 17.0,
1510            13.0 / 17.0,  5.0 / 17.0, 15.0 / 17.0,  7.0 / 17.0,
1511            4.0 / 17.0, 12.0 / 17.0,  2.0 / 17.0, 10.0 / 17.0,
1512            16.0 / 17.0,  8.0 / 17.0, 14.0 / 17.0,  6.0 / 17.0
1513        );
1514        int ci = int(intMod(coord.x, 4.0));
1515        int ri = int(intMod(coord.y, 4.0));
1516        #if __VERSION__ == 100
1517            vec4 i = vec4(float(ci * 4 + ri));
1518            vec4 v = thresholdMatrix[0] * vec4(equal(i, vec4(0.0, 1.0, 2.0, 3.0))) +
1519                thresholdMatrix[1] * vec4(equal(i, vec4(4.0, 5.0, 6.0, 7.0))) +
1520                thresholdMatrix[2] * vec4(equal(i, vec4(8.0, 9.0, 10.0, 11.0))) +
1521                thresholdMatrix[3] * vec4(equal(i, vec4(12.0, 13.0, 14.0, 15.0)));
1522            at = v.x + v.y + v.z + v.w;
1523        #else
1524            at = thresholdMatrix[ci][ri];
1525        #endif
1526
1527        if (ta < 0.99 && (ta < 0.01 || ta < at)) {
1528            discard;
1529        }
1530    #else
1531        if (ta < uPickingAlphaThreshold) {
1532            discard;
1533        }
1534    #endif
1535}
1536`),Dy}var Iy={},Bq;function ine(){return Bq||(Bq=1,Object.defineProperty(Iy,"__esModule",{value:!0}),Iy.float_to_rgba=void 0,Iy.float_to_rgba=`
1537    // floatToRgba adapted from https://github.com/equinor/glsl-float-to-rgba
1538    // MIT License, Copyright (c) 2020 Equinor
1539
1540    float shiftRight (float v, float amt) {
1541    v = floor(v) + 0.5;
1542    return floor(v / exp2(amt));
1543    }
1544    float shiftLeft (float v, float amt) {
1545        return floor(v * exp2(amt) + 0.5);
1546    }
1547    float maskLast (float v, float bits) {
1548        return mod(v, shiftLeft(1.0, bits));
1549    }
1550    float extractBits (float num, float from, float to) {
1551        from = floor(from + 0.5); to = floor(to + 0.5);
1552        return maskLast(shiftRight(num, from), to - from);
1553    }
1554
1555    vec4 floatToRgba(float texelFloat, bool littleEndian) {
1556        if (texelFloat == 0.0) return vec4(0.0, 0.0, 0.0, 0.0);
1557        float sign = texelFloat > 0.0 ? 0.0 : 1.0;
1558        texelFloat = abs(texelFloat);
1559        float exponent = floor(log2(texelFloat));
1560        float biased_exponent = exponent + 127.0;
1561        float fraction = ((texelFloat / exp2(exponent)) - 1.0) * 8388608.0;
1562        float t = biased_exponent / 2.0;
1563        float last_bit_of_biased_exponent = fract(t) * 2.0;
1564        float remaining_bits_of_biased_exponent = floor(t);
1565        float byte4 = extractBits(fraction, 0.0, 8.0) / 255.0;
1566        float byte3 = extractBits(fraction, 8.0, 16.0) / 255.0;
1567        float byte2 = (last_bit_of_biased_exponent * 128.0 + extractBits(fraction, 16.0, 23.0)) / 255.0;
1568        float byte1 = (sign * 128.0 + remaining_bits_of_biased_exponent) / 255.0;
1569        return (
1570            littleEndian
1571                ? vec4(byte4, byte3, byte2, byte1)
1572                : vec4(byte1, byte2, byte3, byte4)
1573        );
1574    }
1575`),Iy}var wy={},Rq;function ane(){return Rq||(Rq=1,Object.defineProperty(wy,"__esModule",{value:!0}),wy.light_frag_params=void 0,wy.light_frag_params=`
1576#if dLightCount != 0
1577    uniform vec3 uLightDirection[dLightCount];
1578    uniform vec3 uLightColor[dLightCount];
1579#endif
1580uniform vec3 uAmbientColor;
1581
1582struct PhysicalMaterial {
1583    vec3 diffuseColor;
1584    float roughness;
1585    vec3 specularColor;
1586    float specularF90;
1587};
1588
1589struct IncidentLight {
1590    vec3 color;
1591    vec3 direction;
1592};
1593
1594struct ReflectedLight {
1595    vec3 directDiffuse;
1596    vec3 directSpecular;
1597    vec3 indirectDiffuse;
1598    vec3 indirectSpecular;
1599};
1600
1601struct GeometricContext {
1602    vec3 position;
1603    vec3 normal;
1604    vec3 viewDir;
1605};
1606
1607vec3 BRDF_Lambert(const in vec3 diffuseColor) {
1608    return RECIPROCAL_PI * diffuseColor;
1609}
1610
1611vec3 F_Schlick(const in vec3 f0, const in float f90, const in float dotVH) {
1612    // Original approximation by Christophe Schlick '94
1613    // float fresnel = pow( 1.0 - dotVH, 5.0 );
1614    // Optimized variant (presented by Epic at SIGGRAPH '13)
1615    // https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf
1616    float fresnel = exp2((-5.55473 * dotVH - 6.98316) * dotVH);
1617    return f0 * (1.0 - fresnel) + (f90 * fresnel);
1618}
1619
1620// Moving Frostbite to Physically Based Rendering 3.0 - page 12, listing 2
1621// https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf
1622float V_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {
1623    float a2 = pow2(alpha);
1624    float gv = dotNL * sqrt(a2 + (1.0 - a2) * pow2(dotNV));
1625    float gl = dotNV * sqrt(a2 + (1.0 - a2) * pow2(dotNL));
1626    return 0.5 / max(gv + gl, EPSILON);
1627}
1628
1629// Microfacet Models for Refraction through Rough Surfaces - equation (33)
1630// http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html
1631// alpha is "roughness squared" in Disney’s reparameterization
1632float D_GGX(const in float alpha, const in float dotNH) {
1633    float a2 = pow2(alpha);
1634    float denom = pow2(dotNH) * (a2 - 1.0) + 1.0; // avoid alpha = 0 with dotNH = 1
1635    return RECIPROCAL_PI * a2 / pow2(denom);
1636}
1637
1638// GGX Distribution, Schlick Fresnel, GGX_SmithCorrelated Visibility
1639vec3 BRDF_GGX(const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness) {
1640    float alpha = pow2(roughness); // UE4's roughness
1641    vec3 halfDir = normalize( lightDir + viewDir);
1642    float dotNL = saturate(dot(normal, lightDir));
1643    float dotNV = saturate(dot(normal, viewDir));
1644    float dotNH = saturate(dot(normal, halfDir));
1645    float dotVH = saturate(dot(viewDir, halfDir));
1646    vec3 F = F_Schlick(f0, f90, dotVH);
1647    float V = V_GGX_SmithCorrelated(alpha, dotNL, dotNV);
1648    float D = D_GGX(alpha, dotNH);
1649    return F * (V * D);
1650}
1651
1652// Analytical approximation of the DFG LUT, one half of the
1653// split-sum approximation used in indirect specular lighting.
1654// via 'environmentBRDF' from "Physically Based Shading on Mobile"
1655// https://www.unrealengine.com/blog/physically-based-shading-on-mobile
1656vec2 DFGApprox(const in vec3 normal, const in vec3 viewDir, const in float roughness) {
1657    float dotNV = saturate(dot(normal, viewDir));
1658    const vec4 c0 = vec4(-1, -0.0275, -0.572, 0.022);
1659    const vec4 c1 = vec4(1, 0.0425, 1.04, -0.04);
1660    vec4 r = roughness * c0 + c1;
1661    float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;
1662    vec2 fab = vec2(-1.04, 1.04) * a004 + r.zw;
1663    return fab;
1664}
1665
1666// Fdez-Agüera's "Multiple-Scattering Microfacet Model for Real-Time Image Based Lighting"
1667// Approximates multiscattering in order to preserve energy.
1668// http://www.jcgt.org/published/0008/01/03/
1669void computeMultiscattering(const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter) {
1670    vec2 fab = DFGApprox(normal, viewDir, roughness);
1671    vec3 FssEss = specularColor * fab.x + specularF90 * fab.y;
1672    float Ess = fab.x + fab.y;
1673    float Ems = 1.0 - Ess;
1674    vec3 Favg = specularColor + (1.0 - specularColor) * 0.047619; // 1/21
1675    vec3 Fms = FssEss * Favg / (1.0 - Ems * Favg);
1676    singleScatter += FssEss;
1677    multiScatter += Fms * Ems;
1678}
1679
1680void RE_Direct_Physical(const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
1681    float dotNL = saturate(dot(geometry.normal, directLight.direction));
1682    vec3 irradiance = dotNL * directLight.color;
1683    reflectedLight.directSpecular += irradiance * BRDF_GGX(directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness);
1684    reflectedLight.directDiffuse += irradiance * BRDF_Lambert(material.diffuseColor);
1685}
1686
1687void RE_IndirectDiffuse_Physical(const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
1688    reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert(material.diffuseColor);
1689}
1690
1691void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
1692    // Both indirect specular and indirect diffuse light accumulate here
1693    vec3 singleScattering = vec3(0.0);
1694    vec3 multiScattering = vec3(0.0);
1695    vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;
1696    computeMultiscattering(geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering);
1697    vec3 diffuse = material.diffuseColor * (1.0 - ( singleScattering + multiScattering));
1698    reflectedLight.indirectSpecular += radiance * singleScattering;
1699    reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;
1700    reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;
1701}
1702`),wy}var Vy={},Oq;function one(){return Oq||(Oq=1,Object.defineProperty(Vy,"__esModule",{value:!0}),Vy.normal_frag_params=void 0,Vy.normal_frag_params=`
1703varying vec3 vNormal;
1704`),Vy}var Ey={},kq;function sne(){return kq||(kq=1,Object.defineProperty(Ey,"__esModule",{value:!0}),Ey.read_from_texture=void 0,Ey.read_from_texture=`
1705vec4 readFromTexture(const in sampler2D tex, const in float i, const in vec2 dim) {
1706    float x = intMod(i, dim.x);
1707    float y = floor(intDiv(i, dim.x));
1708    vec2 uv = (vec2(x, y) + 0.5) / dim;
1709    return texture2D(tex, uv);
1710}
1711
1712vec4 readFromTexture(const in sampler2D tex, const in int i, const in vec2 dim) {
1713    int x = imod(i, int(dim.x));
1714    int y = i / int(dim.x);
1715    vec2 uv = (vec2(x, y) + 0.5) / dim;
1716    return texture2D(tex, uv);
1717}
1718`),Ey}var By={},Fq;function cne(){return Fq||(Fq=1,Object.defineProperty(By,"__esModule",{value:!0}),By.rgba_to_float=void 0,By.rgba_to_float=`
1719    // rgbaToFloat adapted from https://github.com/ihmeuw/glsl-rgba-to-float
1720    // BSD 3-Clause License
1721    //
1722    // Copyright (c) 2019, Institute for Health Metrics and Evaluation All rights reserved.
1723    // Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1724    //  - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
1725    //  - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
1726    //  - Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
1727    //
1728    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
1729    // INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1730    // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
1731    // OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
1732    // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
1733    // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
1734    // OF THE POSSIBILITY OF SUCH DAMAGE.
1735
1736    ivec4 floatsToBytes(vec4 inputFloats, bool littleEndian) {
1737        ivec4 bytes = ivec4(inputFloats * 255.0);
1738        return (
1739            littleEndian
1740                ? bytes.abgr
1741                : bytes
1742        );
1743    }
1744
1745    // Break the four bytes down into an array of 32 bits.
1746    void bytesToBits(const in ivec4 bytes, out bool bits[32]) {
1747        for (int channelIndex = 0; channelIndex < 4; ++channelIndex) {
1748            float acc = float(bytes[channelIndex]);
1749            for (int indexInByte = 7; indexInByte >= 0; --indexInByte) {
1750                float powerOfTwo = exp2(float(indexInByte));
1751                bool bit = acc >= powerOfTwo;
1752                bits[channelIndex * 8 + (7 - indexInByte)] = bit;
1753                acc = mod(acc, powerOfTwo);
1754            }
1755        }
1756    }
1757
1758    // Compute the exponent of the 32-bit float.
1759    float getExponent(bool bits[32]) {
1760        const int startIndex = 1;
1761        const int bitStringLength = 8;
1762        const int endBeforeIndex = startIndex + bitStringLength;
1763        float acc = 0.0;
1764        int pow2 = bitStringLength - 1;
1765        for (int bitIndex = startIndex; bitIndex < endBeforeIndex; ++bitIndex) {
1766            acc += float(bits[bitIndex]) * exp2(float(pow2--));
1767        }
1768        return acc;
1769    }
1770
1771    // Compute the mantissa of the 32-bit float.
1772    float getMantissa(bool bits[32], bool subnormal) {
1773        const int startIndex = 9;
1774        const int bitStringLength = 23;
1775        const int endBeforeIndex = startIndex + bitStringLength;
1776        // Leading/implicit/hidden bit convention:
1777        // If the number is not subnormal (with exponent 0), we add a leading 1 digit.
1778        float acc = float(!subnormal) * exp2(float(bitStringLength));
1779        int pow2 = bitStringLength - 1;
1780        for (int bitIndex = startIndex; bitIndex < endBeforeIndex; ++bitIndex) {
1781            acc += float(bits[bitIndex]) * exp2(float(pow2--));
1782        }
1783        return acc;
1784    }
1785
1786    // Parse the float from its 32 bits.
1787    float bitsToFloat(bool bits[32]) {
1788        float signBit = float(bits[0]) * -2.0 + 1.0;
1789        float exponent = getExponent(bits);
1790        bool subnormal = abs(exponent - 0.0) < 0.01;
1791        float mantissa = getMantissa(bits, subnormal);
1792        float exponentBias = 127.0;
1793        return signBit * mantissa * exp2(exponent - exponentBias - 23.0);
1794    }
1795
1796    float rgbaToFloat(vec4 texelRGBA, bool littleEndian) {
1797        ivec4 rgbaBytes = floatsToBytes(texelRGBA, littleEndian);
1798        bool bits[32];
1799        bytesToBits(rgbaBytes, bits);
1800        return bitsToFloat(bits);
1801    }
1802`),By}var Ry={},Lq;function une(){return Lq||(Lq=1,Object.defineProperty(Ry,"__esModule",{value:!0}),Ry.size_vert_params=void 0,Ry.size_vert_params=`
1803#if defined(dSizeType_uniform)
1804    uniform float uSize;
1805#elif defined(dSizeType_attribute)
1806    attribute float aSize;
1807#elif defined(dSizeType_instance) || defined(dSizeType_group) || defined(dSizeType_groupInstance) || defined(dSizeType_vertex) || defined(dSizeType_vertexInstance)
1808    uniform vec2 uSizeTexDim;
1809    uniform sampler2D tSize;
1810#endif
1811
1812uniform float uSizeFactor;
1813`),Ry}var Oy={},Nq;function lne(){return Nq||(Nq=1,Object.defineProperty(Oy,"__esModule",{value:!0}),Oy.texture3d_from_1d_trilinear=void 0,Oy.texture3d_from_1d_trilinear=`
1814vec4 texture3dFrom1dTrilinear(const in sampler2D tex, const in vec3 pos, const in vec3 gridDim, const in vec2 texDim, const in float offset) {
1815    float gdYZ = gridDim.z * gridDim.y;
1816    float gdZ = gridDim.z;
1817    vec3 p0 = floor(pos * gridDim);
1818    vec3 p1 = ceil(pos * gridDim);
1819    vec3 pd = (pos * gridDim - p0) / (p1 - p0);
1820    vec4 s000 = readFromTexture(tex, offset + p0.z + p0.y * gdZ + p0.x * gdYZ, texDim);
1821    vec4 s100 = readFromTexture(tex, offset + p0.z + p0.y * gdZ + p1.x * gdYZ, texDim);
1822    vec4 s001 = readFromTexture(tex, offset + p1.z + p0.y * gdZ + p0.x * gdYZ, texDim);
1823    vec4 s101 = readFromTexture(tex, offset + p1.z + p0.y * gdZ + p1.x * gdYZ, texDim);
1824    vec4 s010 = readFromTexture(tex, offset + p0.z + p1.y * gdZ + p0.x * gdYZ, texDim);
1825    vec4 s110 = readFromTexture(tex, offset + p0.z + p1.y * gdZ + p1.x * gdYZ, texDim);
1826    vec4 s011 = readFromTexture(tex, offset + p1.z + p1.y * gdZ + p0.x * gdYZ, texDim);
1827    vec4 s111 = readFromTexture(tex, offset + p1.z + p1.y * gdZ + p1.x * gdYZ, texDim);
1828    vec4 s00 = mix(s000, s100, pd.x);
1829    vec4 s01 = mix(s001, s101, pd.x);
1830    vec4 s10 = mix(s010, s110, pd.x);
1831    vec4 s11 = mix(s011, s111, pd.x);
1832    vec4 s0 = mix(s00, s10, pd.y);
1833    vec4 s1 = mix(s01, s11, pd.y);
1834    return mix(s0, s1, pd.z);
1835}
1836`),Oy}var ky={},qq;function dne(){return qq||(qq=1,Object.defineProperty(ky,"__esModule",{value:!0}),ky.texture3d_from_2d_linear=void 0,ky.texture3d_from_2d_linear=`
1837vec4 texture3dFrom2dLinear(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) {
1838    float zSlice0 = floor(pos.z * gridDim.z);
1839    float column0 = intMod(zSlice0 * gridDim.x, texDim.x) / gridDim.x;
1840    float row0 = floor(intDiv(zSlice0 * gridDim.x, texDim.x));
1841    vec2 coord0 = (vec2(column0 * gridDim.x, row0 * gridDim.y) + (pos.xy * gridDim.xy)) / texDim;
1842    vec4 color0 = texture2D(tex, coord0);
1843
1844    float zSlice1 = zSlice0 + 1.0;
1845    float column1 = intMod(zSlice1 * gridDim.x, texDim.x) / gridDim.x;
1846    float row1 = floor(intDiv(zSlice1 * gridDim.x, texDim.x));
1847    vec2 coord1 = (vec2(column1 * gridDim.x, row1 * gridDim.y) + (pos.xy * gridDim.xy)) / texDim;
1848    vec4 color1 = texture2D(tex, coord1);
1849
1850    float delta0 = abs((pos.z * gridDim.z) - zSlice0);
1851    return mix(color0, color1, delta0);
1852}
1853`),ky}var Fy={},Uq;function fne(){return Uq||(Uq=1,Object.defineProperty(Fy,"__esModule",{value:!0}),Fy.texture3d_from_2d_nearest=void 0,Fy.texture3d_from_2d_nearest=`
1854vec4 texture3dFrom2dNearest(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) {
1855    float zSlice = floor(pos.z * gridDim.z + 0.5); // round to nearest z-slice
1856    float column = intMod(zSlice * gridDim.x, texDim.x) / gridDim.x;
1857    float row = floor(intDiv(zSlice * gridDim.x, texDim.x));
1858    vec2 coord = (vec2(column * gridDim.x, row * gridDim.y) + (pos.xy * gridDim.xy)) / texDim;
1859    return texture2D(tex, coord);
1860}
1861`),Fy}var Ly={},jq;function mne(){return jq||(jq=1,Object.defineProperty(Ly,"__esModule",{value:!0}),Ly.wboit_write=void 0,Ly.wboit_write=`
1862#if defined(dRenderVariant_colorWboit)
1863    if (uRenderMask == MaskOpaque) {
1864        if (preFogAlpha < 1.0) {
1865            discard;
1866        }
1867    } else if (uRenderMask == MaskTransparent) {
1868        if (preFogAlpha != 1.0 && fragmentDepth < getDepth(gl_FragCoord.xy / uDrawingBufferSize)) {
1869            #ifdef dTransparentBackfaces_off
1870                if (interior) discard;
1871            #endif
1872            float alpha = gl_FragColor.a;
1873            float wboitWeight = alpha * clamp(pow(1.0 - fragmentDepth, 2.0), 0.01, 1.0);
1874            gl_FragColor = vec4(gl_FragColor.rgb * alpha * wboitWeight, alpha);
1875            // extra alpha is to handle pre-multiplied alpha
1876            #ifndef dGeometryType_directVolume
1877                gl_FragData[1] = vec4((uTransparentBackground ? alpha : 1.0) * alpha * wboitWeight);
1878            #else
1879                gl_FragData[1] = vec4(alpha * alpha * wboitWeight);
1880            #endif
1881        } else {
1882            discard;
1883        }
1884    }
1885#endif
1886`),Ly}var Ny={},Gq;function pne(){return Gq||(Gq=1,Object.defineProperty(Ny,"__esModule",{value:!0}),Ny.dpoit_write=void 0,Ny.dpoit_write=`
1887#if defined(dRenderVariant_colorDpoit)
1888    if (uRenderMask == MaskOpaque) {
1889        if (preFogAlpha < 1.0) {
1890            discard;
1891        }
1892    } else if (uRenderMask == MaskTransparent) {
1893        vec2 coords = gl_FragCoord.xy / uDrawingBufferSize;
1894        if (preFogAlpha != 1.0 && fragmentDepth < getDepth(coords)) {
1895            #ifdef dTransparentBackfaces_off
1896                if (interior) discard;
1897            #endif
1898
1899            // adapted from https://github.com/tsherif/webgl2examples
1900            // The MIT License, Copyright 2017 Tarek Sherif, Shuai Shao
1901
1902            vec2 lastDepth = texture2D(tDpoitDepth, coords).rg;
1903            vec4 lastFrontColor = texture2D(tDpoitFrontColor, coords);
1904
1905            vec4 fragColor = gl_FragColor;
1906
1907            // depth value always increases
1908            // so we can use MAX blend equation
1909            gl_FragData[2].rg = vec2(-MAX_DPOIT_DEPTH);
1910
1911            // front color always increases
1912            // so we can use MAX blend equation
1913            gl_FragColor = lastFrontColor;
1914
1915            // back color is separately blend afterwards each pass
1916            gl_FragData[1] = vec4(0.0);
1917
1918            float nearestDepth = -lastDepth.x;
1919            float furthestDepth = lastDepth.y;
1920            float alphaMultiplier = 1.0 - lastFrontColor.a;
1921
1922            if (fragmentDepth < nearestDepth || fragmentDepth > furthestDepth) {
1923                // Skip this depth since it's been peeled.
1924                return;
1925            }
1926
1927            if (fragmentDepth > nearestDepth && fragmentDepth < furthestDepth) {
1928                // This needs to be peeled.
1929                // The ones remaining after MAX blended for
1930                // all need-to-peel will be peeled next pass.
1931                gl_FragData[2].rg = vec2(-fragmentDepth, fragmentDepth);
1932                return;
1933            }
1934
1935            // write to back and front color buffer
1936            if (fragmentDepth == nearestDepth) {
1937                gl_FragColor.rgb += fragColor.rgb * fragColor.a * alphaMultiplier;
1938                gl_FragColor.a = 1.0 - alphaMultiplier * (1.0 - fragColor.a);
1939            } else {
1940                gl_FragData[1] += fragColor;
1941            }
1942
1943        } else {
1944            discard;
1945        }
1946    }
1947#endif
1948`),Ny}var qy={},zq;function hne(){return zq||(zq=1,Object.defineProperty(qy,"__esModule",{value:!0}),qy.points_vert=void 0,qy.points_vert=`
1949precision highp float;
1950precision highp int;
1951
1952#include common
1953#include read_from_texture
1954#include common_vert_params
1955#include color_vert_params
1956#include size_vert_params
1957#include common_clip
1958#include common_animation
1959
1960uniform float uPixelRatio;
1961uniform vec4 uViewport;
1962
1963attribute vec3 aPosition;
1964attribute mat4 aTransform;
1965attribute float aInstance;
1966attribute float aGroup;
1967
1968void main(){
1969    int vertexId = VertexID;
1970
1971    #include assign_group
1972    #include assign_color_varying
1973    #include assign_marker_varying
1974    #include assign_clipping_varying
1975    #include assign_position
1976    #include assign_size
1977
1978    #ifdef dPointSizeAttenuation
1979        gl_PointSize = size * uPixelRatio * ((uViewport.w / 2.0) / -mvPosition.z) * 5.0;
1980    #else
1981        gl_PointSize = size * uPixelRatio;
1982    #endif
1983    gl_PointSize = max(1.0, gl_PointSize);
1984
1985    gl_Position = uProjection * mvPosition;
1986
1987    #include clip_instance
1988}
1989`),qy}var Uy={},Hq;function gne(){return Hq||(Hq=1,Object.defineProperty(Uy,"__esModule",{value:!0}),Uy.points_frag=void 0,Uy.points_frag=`
1990precision highp float;
1991precision highp int;
1992
1993#include common
1994#include common_frag_params
1995#include color_frag_params
1996#include common_clip
1997
1998const vec2 center = vec2(0.5);
1999const float radius = 0.5;
2000
2001void main(){
2002    #include fade_lod
2003    #include clip_pixel
2004
2005    float fragmentDepth = gl_FragCoord.z;
2006    #include assign_material_color
2007
2008    #if defined(dPointStyle_circle)
2009        float dist = distance(gl_PointCoord, center);
2010        if (dist > radius) discard;
2011    #elif defined(dPointStyle_fuzzy)
2012        float dist = distance(gl_PointCoord, center);
2013        float fuzzyAlpha = 1.0 - smoothstep(0.0, radius, dist);
2014        if (fuzzyAlpha < 0.0001) discard;
2015    #endif
2016
2017    #if defined(dPointStyle_fuzzy) && (defined(dRenderVariant_color) || defined(dRenderVariant_tracing))
2018        material.a *= fuzzyAlpha;
2019    #endif
2020
2021    #include check_transparency
2022
2023    #if defined(dRenderVariant_pick)
2024        #include check_picking_alpha
2025        #ifdef requiredDrawBuffers
2026            gl_FragColor = vObject;
2027            gl_FragData[1] = vInstance;
2028            gl_FragData[2] = vGroup;
2029            gl_FragData[3] = packDepthToRGBA(fragmentDepth);
2030        #else
2031            gl_FragColor = vColor;
2032        #endif
2033    #elif defined(dRenderVariant_depth)
2034        gl_FragColor = material;
2035    #elif defined(dRenderVariant_marking)
2036        gl_FragColor = material;
2037    #elif defined(dRenderVariant_emissive)
2038        gl_FragColor = material;
2039    #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
2040        gl_FragColor = material;
2041        #include apply_marker_color
2042
2043        #if defined(dRenderVariant_color)
2044            #include apply_fog
2045            #include wboit_write
2046            #include dpoit_write
2047        #elif defined(dRenderVariant_tracing)
2048            gl_FragData[1] = vec4(normalize(vViewPosition), emissive);
2049            gl_FragData[2] = vec4(material.rgb, uDensity);
2050        #endif
2051    #endif
2052}
2053`),Uy}var jy={},Wq;function yne(){return Wq||(Wq=1,Object.defineProperty(jy,"__esModule",{value:!0}),jy.spheres_vert=void 0,jy.spheres_vert
vendor: 6,088 bytes, lines 2053-2243
2053=`
2054precision highp float;
2055precision highp int;
2056
2057#include common
2058#include read_from_texture
2059#include common_vert_params
2060#include color_vert_params
2061#include size_vert_params
2062#include common_clip
2063#include common_animation
2064
2065uniform mat4 uModelView;
2066uniform mat4 uInvProjection;
2067uniform float uIsOrtho;
2068uniform bool uIsAsymmetricProjection;
2069
2070uniform vec2 uTexDim;
2071uniform sampler2D tPositionGroup;
2072
2073attribute mat4 aTransform;
2074attribute float aInstance;
2075
2076varying float vRadius;
2077varying vec3 vPoint;
2078varying vec3 vPointViewPosition;
2079
2080/**
2081 * Bounding rectangle of a clipped, perspective-projected 3D Sphere.
2082 * Michael Mara, Morgan McGuire. 2013
2083 *
2084 * Specialization by Arseny Kapoulkine, MIT License Copyright (c) 2018
2085 * https://github.com/zeux/niagara
2086 *
2087 * Only works for for symmetric projections.
2088 */
2089void sphereProjection(const in vec3 p, const in float r, const in vec2 mapping) {
2090    vec3 pr = p * r;
2091    float pzr2 = p.z * p.z - r * r;
2092
2093    float vx = sqrt(p.x * p.x + pzr2);
2094    float minx = ((vx * p.x - pr.z) / (vx * p.z + pr.x)) * uProjection[0][0];
2095    float maxx = ((vx * p.x + pr.z) / (vx * p.z - pr.x)) * uProjection[0][0];
2096
2097    float vy = sqrt(p.y * p.y + pzr2);
2098    float miny = ((vy * p.y - pr.z) / (vy * p.z + pr.y)) * uProjection[1][1];
2099    float maxy = ((vy * p.y + pr.z) / (vy * p.z - pr.y)) * uProjection[1][1];
2100
2101    gl_Position.xy = vec2(maxx + minx, maxy + miny) * -0.5;
2102    gl_Position.xy -= mapping * vec2(maxx - minx, maxy - miny) * 0.5;
2103    gl_Position.xy *= gl_Position.w;
2104}
2105
2106const mat4 D = mat4(
2107    1.0, 0.0, 0.0, 0.0,
2108    0.0, 1.0, 0.0, 0.0,
2109    0.0, 0.0, 1.0, 0.0,
2110    0.0, 0.0, 0.0, -1.0
2111);
2112
2113/**
2114 * Compute point size and center using the technique described in:
2115 * "GPU-Based Ray-Casting of Quadratic Surfaces" http://dl.acm.org/citation.cfm?id=2386396
2116 * by Christian Sigg, Tim Weyrich, Mario Botsch, Markus Gross.
2117 */
2118void quadraticProjection(const in vec3 position, const in float radius, const in vec2 mapping, const in mat4 transform) {
2119    vec2 xbc, ybc;
2120
2121    mat4 T = mat4(
2122        radius, 0.0, 0.0, 0.0,
2123        0.0, radius, 0.0, 0.0,
2124        0.0, 0.0, radius, 0.0,
2125        position.x, position.y, position.z, 1.0
2126    );
2127
2128    mat4 R = transpose4(uProjection * uModelView * transform * T);
2129    float A = dot(R[3], D * R[3]);
2130    float B = -2.0 * dot(R[0], D * R[3]);
2131    float C = dot(R[0], D * R[0]);
2132    xbc[0] = (-B - sqrt(B * B - 4.0 * A * C)) / (2.0 * A);
2133    xbc[1] = (-B + sqrt(B * B - 4.0 * A * C)) / (2.0 * A);
2134    float sx = abs(xbc[0] - xbc[1]) * 0.5;
2135
2136    A = dot(R[3], D * R[3]);
2137    B = -2.0 * dot(R[1], D * R[3]);
2138    C = dot(R[1], D * R[1]);
2139    ybc[0] = (-B - sqrt(B * B - 4.0 * A * C)) / (2.0 * A);
2140    ybc[1] = (-B + sqrt(B * B - 4.0 * A * C)) / (2.0 * A);
2141    float sy = abs(ybc[0] - ybc[1]) * 0.5;
2142
2143    gl_Position.xy = vec2(0.5 * (xbc.x + xbc.y), 0.5 * (ybc.x + ybc.y));
2144    gl_Position.xy -= mapping * vec2(sx, sy);
2145    gl_Position.xy *= gl_Position.w;
2146}
2147
2148void main(void){
2149    vec2 mapping = vec2(1.0, 1.0); // vertices 2 and 5
2150    #if __VERSION__ == 100
2151        int m = imod(VertexID, 6);
2152    #else
2153        int m = VertexID % 6;
2154    #endif
2155    if (m == 0) {
2156        mapping = vec2(-1.0, 1.0);
2157    } else if (m == 1 || m == 3) {
2158        mapping = vec2(-1.0, -1.0);
2159    } else if (m == 4) {
2160        mapping = vec2(1.0, -1.0);
2161    }
2162
2163    int vertexId = VertexID / 6;
2164
2165    vec4 positionGroup = readFromTexture(tPositionGroup, vertexId, uTexDim);
2166    vec3 position = positionGroup.rgb;
2167    float group = positionGroup.a;
2168
2169    position = applyWiggle(position, group, aInstance);
2170    mat4 transform = applyTumble(aTransform, aInstance, float(uObjectId));
2171
2172    #include assign_color_varying
2173    #include assign_marker_varying
2174    #include assign_clipping_varying
2175    #include assign_size
2176
2177    vRadius = size * uModelScale;
2178
2179    vec4 position4 = vec4(position, 1.0);
2180    vModelPosition = (uModel * transform * position4).xyz; // for clipping in frag shader
2181
2182    float d;
2183    if (uLod.w != 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) {
2184        if (uModelScale != 1.0) {
2185            vRadius *= uLod.w;
2186        } else {
2187            d = (dot(uCameraPlane.xyz, vModelPosition) + uCameraPlane.w) / uModelScale;
2188            float f = min(
2189                smoothstep(uLod.x, uLod.x + uLod.z, d),
2190                1.0 - smoothstep(uLod.y - uLod.z, uLod.y, d)
2191            ) * uLod.w;
2192            vRadius *= f;
2193        }
2194    }
2195
2196    vec4 mvPosition = uModelView * transform * position4;
2197
2198    #ifdef dApproximate
2199        vec4 mvCorner = vec4(mvPosition.xyz, 1.0);
2200        mvCorner.xy += mapping * vRadius;
2201        gl_Position = uProjection * mvCorner;
2202    #else
2203        if (uIsOrtho == 1.0) {
2204            vec4 mvCorner = vec4(mvPosition.xyz, 1.0);
2205            mvCorner.xy += mapping * vRadius;
2206            gl_Position = uProjection * mvCorner;
2207        } else if (uIsAsymmetricProjection) {
2208            gl_Position = uProjection * vec4(mvPosition.xyz, 1.0);
2209            quadraticProjection(position, vRadius / uModelScale, mapping, transform);
2210        } else {
2211            gl_Position = uProjection * vec4(mvPosition.xyz, 1.0);
2212            sphereProjection(mvPosition.xyz, vRadius, mapping);
2213        }
2214    #endif
2215
2216    vec4 vPoint4 = uInvProjection * gl_Position;
2217    vPoint = vPoint4.xyz / vPoint4.w;
2218    vPointViewPosition = -mvPosition.xyz / mvPosition.w;
2219
2220    if (gl_Position.z < -gl_Position.w) {
2221        mvPosition.z -= 2.0 * vRadius; // avoid clipping
2222        gl_Position.z = (uProjection * vec4(mvPosition.xyz, 1.0)).z;
2223    }
2224
2225    if (uModelScale == 1.0) {
2226        if (uLod.w != 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) {
2227            if (d < uLod.x || d > uLod.y) {
2228                // move out of [ -w, +w ] to 'discard' in vert shader
2229                gl_Position.z = 2.0 * gl_Position.w;
2230            }
2231        }
2232    }
2233
2234    #if defined(dClipPrimitive) && !defined(dClipVariant_instance) && dClipObjectCount != 0
2235        if (clipTest(vModelPosition / uModelScale)) {
2236            // move out of [ -w, +w ] to 'discard' in vert shader
2237            gl_Position.z = 2.0 * gl_Position.w;
2238        }
2239    #else
2240        #include clip_instance
2241    #endif
2242}
2243`
2243),jy}var Gy={},$q;function vne(){return $q||($q=1,Object.defineProperty(Gy,"__esModule",{value:!0}),Gy.spheres_frag=void 0,Gy.spheres_frag=`
2244precision highp float;
2245precision highp int;
2246
2247#define bumpEnabled
2248
2249#include common
2250#include common_frag_params
2251#include color_frag_params
2252#include light_frag_params
2253#include common_clip
2254
2255uniform mat4 uInvView;
2256uniform float uAlphaThickness;
2257
2258uniform vec4 uInteriorColor;
2259uniform vec4 uInteriorSubstance;
2260
2261varying float vRadius;
2262varying vec3 vPoint;
2263varying vec3 vPointViewPosition;
2264
2265#ifdef dSolidInterior
2266    const bool solidInterior = true;
2267#else
2268    const bool solidInterior = false;
2269#endif
2270
2271bool SphereImpostor(out vec3 modelPos, out vec3 cameraPos, out vec3 cameraNormal, out bool interior, out float fragmentDepth){
2272    vec3 cameraSpherePos = -vPointViewPosition;
2273
2274    vec3 rayOrigin = mix(vec3(0.0, 0.0, 0.0), vPoint, uIsOrtho);
2275    vec3 rayDirection = mix(normalize(vPoint), vec3(0.0, 0.0, 1.0), uIsOrtho);
2276    vec3 cameraSphereDir = mix(cameraSpherePos, rayOrigin - cameraSpherePos, uIsOrtho);
2277
2278    float B = dot(rayDirection, cameraSphereDir);
2279    float det = B * B + vRadius * vRadius - dot(cameraSphereDir, cameraSphereDir);
2280
2281    if (det < 0.0) return false;
2282
2283    float sqrtDet = sqrt(det);
2284    float posT = mix(B + sqrtDet, B - sqrtDet, uIsOrtho);
2285    float negT = mix(B - sqrtDet, B + sqrtDet, uIsOrtho);
2286
2287    cameraPos = rayDirection * negT + rayOrigin;
2288    modelPos = (uInvView * vec4(cameraPos, 1.0)).xyz;
2289    fragmentDepth = calcDepth(cameraPos);
2290
2291    bool objectClipped = false;
2292
2293    #if !defined(dClipPrimitive) && defined(dClipVariant_pixel) && dClipObjectCount != 0
2294        if (clipTest(modelPos)) {
2295            objectClipped = true;
2296            fragmentDepth = -1.0;
2297        }
2298    #endif
2299
2300    if (fragmentDepth > 0.0) {
2301        cameraNormal = normalize(cameraPos - cameraSpherePos);
2302        interior = false;
2303        return true;
2304    } else if (uDoubleSided || solidInterior) {
2305        cameraPos = rayDirection * posT + rayOrigin;
2306        modelPos = (uInvView * vec4(cameraPos, 1.0)).xyz;
2307        fragmentDepth = calcDepth(cameraPos);
2308        cameraNormal = -normalize(cameraPos - cameraSpherePos);
2309        interior = true;
2310        if (fragmentDepth > 0.0) {
2311            #ifdef dSolidInterior
2312                if (!objectClipped) {
2313                    fragmentDepth = 0.0 + (0.0000001 / vRadius);
2314                    cameraNormal = -mix(normalize(vPoint), vec3(0.0, 0.0, -1.0), uIsOrtho);
2315
2316                    // intersection of ray with near plane
2317                    float nearT = - (uNear + dot(rayOrigin, vec3(0.0, 0.0, 1.0))) / dot(rayDirection, vec3(0.0, 0.0, 1.0));
2318                    cameraPos = rayDirection * nearT + rayOrigin;
2319                    modelPos = (uInvView * vec4(cameraPos, 1.0)).xyz;
2320                }
2321            #endif
2322            return true;
2323        }
2324    }
2325
2326    return false;
2327}
2328
2329void main(void){
2330    vec3 cameraNormal;
2331    float fragmentDepth;
2332
2333    #ifdef dApproximate
2334        vec3 pointDir = -vPointViewPosition - vPoint;
2335        if (dot(pointDir, pointDir) > vRadius * vRadius) discard;
2336        vec3 vViewPosition = -vPointViewPosition;
2337        fragmentDepth = gl_FragCoord.z;
2338        #if !defined(dIgnoreLight) || defined(dXrayShaded) || defined(dRenderVariant_tracing)
2339            pointDir.z -= cos(length(pointDir)) * vRadius * 0.5;
2340            cameraNormal = -normalize(pointDir);
2341        #endif
2342        interior = false;
2343    #else
2344        vec3 modelPos;
2345        vec3 cameraPos;
2346        bool hit = SphereImpostor(modelPos, cameraPos, cameraNormal, interior, fragmentDepth);
2347        if (!hit) discard;
2348
2349        if (fragmentDepth < 0.0) discard;
2350        if (fragmentDepth > 1.0) discard;
2351
2352        gl_FragDepthEXT = fragmentDepth;
2353
2354        vec3 vModelPosition = modelPos;
2355        vec3 vViewPosition = cameraPos;
2356    #endif
2357
2358    #include fade_lod
2359    #if !defined(dClipPrimitive) && defined(dClipVariant_pixel) && dClipObjectCount != 0
2360        #include clip_pixel
2361    #endif
2362
2363    #ifdef dNeedsNormal
2364        vec3 normal = -cameraNormal;
2365    #endif
2366
2367    #include assign_material_color
2368
2369    #if defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
2370        if (uRenderMask == MaskTransparent && uAlphaThickness > 0.0) {
2371            material.a *= min(1.0, vRadius / (uAlphaThickness * uModelScale));
2372        }
2373    #endif
2374
2375    #include check_transparency
2376
2377    #if defined(dRenderVariant_pick)
2378        #include check_picking_alpha
2379        #ifdef requiredDrawBuffers
2380            gl_FragColor = vObject;
2381            gl_FragData[1] = vInstance;
2382            gl_FragData[2] = vGroup;
2383            gl_FragData[3] = packDepthToRGBA(fragmentDepth);
2384        #else
2385            gl_FragColor = vColor;
2386        #endif
2387    #elif defined(dRenderVariant_depth)
2388        gl_FragColor = material;
2389    #elif defined(dRenderVariant_marking)
2390        gl_FragColor = material;
2391    #elif defined(dRenderVariant_emissive)
2392        gl_FragColor = material;
2393    #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
2394        #include apply_interior_color
2395        #include apply_light_color
2396        #include apply_marker_color
2397
2398        #if defined(dRenderVariant_color)
2399            #include apply_fog
2400            #include wboit_write
2401            #include dpoit_write
2402        #elif defined(dRenderVariant_tracing)
2403            gl_FragData[1] = vec4(normal, emissive);
2404            gl_FragData[2] = vec4(material.rgb, uDensity);
2405        #endif
2406    #endif
2407}
2408`),Gy}var zy={},Xq;function bne(){return Xq||(Xq=1,Object.defineProperty(zy,"__esModule",{value:!0}),zy.cylinders_vert=void 0,zy.cylinders_vert=`
2409precision highp float;
2410precision highp int;
2411
2412#include common
2413#include read_from_texture
2414#include common_vert_params
2415#include color_vert_params
2416#include size_vert_params
2417#include common_clip
2418#include common_animation
2419
2420uniform mat4 uModelView;
2421
2422attribute mat4 aTransform;
2423attribute float aInstance;
2424attribute float aGroup;
2425
2426attribute vec3 aMapping;
2427attribute vec3 aStart;
2428attribute vec3 aEnd;
2429attribute float aScale;
2430attribute float aCap;
2431attribute float aColorMode;
2432
2433varying mat4 vTransform;
2434varying vec3 vStart;
2435varying vec3 vEnd;
2436varying float vSize;
2437varying float vCap;
2438
2439uniform float uIsOrtho;
2440uniform vec3 uCameraDir;
2441
2442void main() {
2443    int vertexId = VertexID;
2444
2445    #include assign_group
2446    #include assign_color_varying
2447    #include assign_marker_varying
2448    #include assign_clipping_varying
2449    #include assign_size
2450
2451    mat4 transform = applyTumble(aTransform, aInstance, float(uObjectId));
2452    vec3 wigStart = applyWiggle(aStart, aGroup, aInstance);
2453    vec3 wigEnd = applyWiggle(aEnd, aGroup, aInstance);
2454    mat4 modelTransform = uModel * transform;
2455
2456    vTransform = modelTransform;
2457    vStart = (modelTransform * vec4(wigStart, 1.0)).xyz;
2458    vEnd = (modelTransform * vec4(wigEnd, 1.0)).xyz;
2459    vSize = size * aScale * uModelScale;
2460    vCap = aCap;
2461
2462    vModelPosition = (vStart + vEnd) * 0.5;
2463    vec3 camDir = -mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho);
2464    vec3 dir = vEnd - vStart;
2465    float f = aMapping.x > 0.0 ? 1.0 : 0.0;
2466    // ensure cylinder 'dir' is pointing towards the camera
2467    if(dot(camDir, dir) < 0.0) {
2468        dir = -dir;
2469        f = 1.0 - f;
2470    }
2471
2472    vec3 left = cross(camDir, dir);
2473    vec3 up = cross(left, dir);
2474    left = vSize * normalize(left);
2475    up = vSize * normalize(up);
2476
2477    // move vertex in object-space from center to corner
2478    vModelPosition += aMapping.x * dir + aMapping.y * left + aMapping.z * up;
2479
2480    vec4 mvPosition = uView * vec4(vModelPosition, 1.0);
2481    vViewPosition = mvPosition.xyz;
2482    gl_Position = uProjection * mvPosition;
2483
2484    if (gl_Position.z < -gl_Position.w) {
2485        mvPosition.z -= 2.0 * (length(vEnd - vStart) + vSize); // avoid clipping
2486        gl_Position.z = (uProjection * mvPosition).z;
2487    }
2488
2489    #if defined(dDualColor) && defined(dRenderVariant_color) && (defined(dColorType_group) || defined(dColorType_groupInstance))
2490        // dual-color mixing
2491        // - for aColorMode between 0 and 1 use aColorMode to interpolate
2492        // - for aColorMode == 2 do nothing, i.e., use vColor
2493        // - for aColorMode == 3 use position on cylinder axis to interpolate
2494        if (aColorMode <= 1.0){
2495            vColor.rgb = mix(vColor.rgb, color2.rgb, aColorMode);
2496        } else if (aColorMode == 3.0) {
2497            vColor.rgb = mix(vColor.rgb, color2.rgb, mix(-0.25, 1.25, f / 1.5));
2498        }
2499    #endif
2500
2501    #include clip_instance
2502}
2503`),zy}var Hy={},Kq;function _ne(){return Kq||(Kq=1,Object.defineProperty(Hy,"__esModule",{value:!0}),Hy.cylinders_frag=void 0,Hy.cylinders_frag
vendor: 10,974 bytes, lines 2503-2810
2503=`
2504precision highp float;
2505precision highp int;
2506
2507#define bumpEnabled
2508
2509uniform mat4 uView;
2510
2511varying mat4 vTransform;
2512varying vec3 vStart;
2513varying vec3 vEnd;
2514varying float vSize;
2515varying float vCap;
2516
2517uniform vec3 uCameraDir;
2518uniform vec3 uCameraPosition;
2519uniform mat4 uInvView;
2520
2521uniform vec4 uInteriorColor;
2522uniform vec4 uInteriorSubstance;
2523
2524#include common
2525#include common_frag_params
2526#include color_frag_params
2527#include light_frag_params
2528#include common_clip
2529
2530#ifdef dSolidInterior
2531    const bool solidInterior = true;
2532#else
2533    const bool solidInterior = false;
2534#endif
2535
2536// adapted from https://www.shadertoy.com/view/4lcSRn
2537// The MIT License, Copyright 2016 Inigo Quilez
2538bool CylinderImpostor(
2539    in vec3 rayOrigin, in vec3 rayDir,
2540    in vec3 start, in vec3 end, in float radius,
2541    out vec3 cameraNormal, out bool interior,
2542    out vec3 modelPosition, out vec3 viewPosition, out float fragmentDepth
2543){
2544    vec3 ba = end - start;
2545    vec3 oc = rayOrigin - start;
2546
2547    float baba = dot(ba, ba);
2548    float bard = dot(ba, rayDir);
2549    float baoc = dot(ba, oc);
2550
2551    float k2 = baba - bard * bard;
2552    float k1 = baba * dot(oc, rayDir) - baoc * bard;
2553    float k0 = baba * dot(oc, oc) - baoc * baoc - radius * radius * baba;
2554
2555    float h = k1 * k1 - k2 * k0;
2556    if (h < 0.0) return false;
2557
2558    bool topCap = (vCap > 0.9 && vCap < 1.1) || vCap >= 2.9;
2559    bool bottomCap = (vCap > 1.9 && vCap < 2.1) || vCap >= 2.9;
2560
2561    #ifdef dSolidInterior
2562        bool topInterior = !topCap;
2563        bool bottomInterior = !bottomCap;
2564        topCap = true;
2565        bottomCap = true;
2566    #else
2567        bool topInterior = false;
2568        bool bottomInterior = false;
2569    #endif
2570
2571    bool clipped = false;
2572    bool objectClipped = false;
2573
2574    // body outside
2575    h = sqrt(h);
2576    float t = (-k1 - h) / k2;
2577    float y = baoc + t * bard;
2578    if (y > 0.0 && y < baba) {
2579        interior = false;
2580        cameraNormal = (oc + t * rayDir - ba * y / baba) / radius;
2581        modelPosition = rayOrigin + t * rayDir;
2582        viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;
2583        fragmentDepth = calcDepth(viewPosition);
2584        #if defined(dClipVariant_pixel) && dClipObjectCount != 0
2585            if (clipTest(modelPosition)) {
2586                objectClipped = true;
2587                fragmentDepth = -1.0;
2588                #ifdef dSolidInterior
2589                    topCap = !topInterior;
2590                    bottomCap = !bottomInterior;
2591                #endif
2592            }
2593        #endif
2594        if (fragmentDepth > 0.0) return true;
2595        clipped = true;
2596    }
2597
2598    if (!clipped) {
2599        if (topCap && y < 0.0) {
2600            // top cap
2601            t = -baoc / bard;
2602            if (abs(k1 + k2 * t) < h) {
2603                interior = topInterior;
2604                cameraNormal = -ba / baba;
2605                modelPosition = rayOrigin + t * rayDir;
2606                viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;
2607                fragmentDepth = calcDepth(viewPosition);
2608                #if defined(dClipVariant_pixel) && dClipObjectCount != 0
2609                    if (clipTest(modelPosition)) {
2610                        objectClipped = true;
2611                        fragmentDepth = -1.0;
2612                        #ifdef dSolidInterior
2613                            topCap = !topInterior;
2614                            bottomCap = !bottomInterior;
2615                        #endif
2616                    }
2617                #endif
2618                if (fragmentDepth > 0.0) {
2619                    #ifdef dSolidInterior
2620                        if (interior) cameraNormal = -rayDir;
2621                    #endif
2622                    #if defined(dClipVariant_pixel) && dClipObjectCount != 0
2623                        return true;
2624                    #else
2625                        return !interior;
2626                    #endif
2627                }
2628            }
2629        } else if (bottomCap && y >= 0.0) {
2630            // bottom cap
2631            t = (baba - baoc) / bard;
2632            if (abs(k1 + k2 * t) < h) {
2633                interior = bottomInterior;
2634                cameraNormal = ba / baba;
2635                modelPosition = rayOrigin + t * rayDir;
2636                viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;
2637                fragmentDepth = calcDepth(viewPosition);
2638                #if defined(dClipVariant_pixel) && dClipObjectCount != 0
2639                    if (clipTest(modelPosition)) {
2640                        objectClipped = true;
2641                        fragmentDepth = -1.0;
2642                        #ifdef dSolidInterior
2643                            topCap = !topInterior;
2644                            bottomCap = !bottomInterior;
2645                        #endif
2646                    }
2647                #endif
2648                if (fragmentDepth > 0.0) {
2649                    #ifdef dSolidInterior
2650                        if (interior) cameraNormal = -rayDir;
2651                    #endif
2652                    #if defined(dClipVariant_pixel) && dClipObjectCount != 0
2653                        return true;
2654                    #else
2655                        return !interior;
2656                    #endif
2657                }
2658            }
2659        }
2660    }
2661
2662    if (uDoubleSided || solidInterior) {
2663        // body inside
2664        h = -h;
2665        t = (-k1 - h) / k2;
2666        y = baoc + t * bard;
2667        if (y > 0.0 && y < baba) {
2668            interior = true;
2669            cameraNormal = -(oc + t * rayDir - ba * y / baba) / radius;
2670            modelPosition = rayOrigin + t * rayDir;
2671            viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;
2672            fragmentDepth = calcDepth(viewPosition);
2673            if (fragmentDepth > 0.0) {
2674                #ifdef dSolidInterior
2675                    if (!objectClipped) {
2676                        fragmentDepth = 0.0 + (0.0000002 / vSize);
2677                        cameraNormal = -rayDir;
2678
2679                        // intersection of ray in model space with near plane in camera space
2680                        vec3 cameraRayOrigin = (uView * vec4(rayOrigin, 1.0)).xyz;
2681                        vec3 cameraRayDir = (uView * vec4(rayDir, 0.0)).xyz;
2682                        float nearT = - (uNear + cameraRayOrigin.z) / cameraRayDir.z;
2683                        viewPosition = cameraRayOrigin + nearT * cameraRayDir;
2684                        modelPosition = (uInvView * vec4(viewPosition, 1.0)).xyz;
2685                    }
2686                #endif
2687                return true;
2688            }
2689        }
2690
2691        if (topCap && y < 0.0) {
2692            // top cap
2693            t = -baoc / bard;
2694            if (abs(k1 + k2 * t) < -h) {
2695                interior = true;
2696                cameraNormal = ba / baba;
2697                modelPosition = rayOrigin + t * rayDir;
2698                viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;
2699                fragmentDepth = calcDepth(viewPosition);
2700                if (fragmentDepth > 0.0) {
2701                    #ifdef dSolidInterior
2702                        if (!objectClipped) {
2703                            fragmentDepth = 0.0 + (0.0000002 / vSize);
2704                            cameraNormal = -rayDir;
2705
2706                            // intersection of ray in model space with near plane in camera space
2707                            vec3 cameraRayOrigin = (uView * vec4(rayOrigin, 1.0)).xyz;
2708                            vec3 cameraRayDir = (uView * vec4(rayDir, 0.0)).xyz;
2709                            float nearT = - (uNear + cameraRayOrigin.z) / cameraRayDir.z;
2710                            viewPosition = cameraRayOrigin + nearT * cameraRayDir;
2711                            modelPosition = (uInvView * vec4(viewPosition, 1.0)).xyz;
2712                        }
2713                    #endif
2714                    return true;
2715                }
2716            }
2717        } else if (bottomCap && y >= 0.0) {
2718            // bottom cap
2719            t = (baba - baoc) / bard;
2720            if (abs(k1 + k2 * t) < -h) {
2721                interior = true;
2722                cameraNormal = -ba / baba;
2723                modelPosition = rayOrigin + t * rayDir;
2724                viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;
2725                fragmentDepth = calcDepth(viewPosition);
2726                if (fragmentDepth > 0.0) {
2727                    #ifdef dSolidInterior
2728                        if (!objectClipped) {
2729                            fragmentDepth = 0.0 + (0.0000002 / vSize);
2730                            cameraNormal = -rayDir;
2731
2732                            // intersection of ray in model space with near plane in camera space
2733                            vec3 cameraRayOrigin = (uView * vec4(rayOrigin, 1.0)).xyz;
2734                            vec3 cameraRayDir = (uView * vec4(rayDir, 0.0)).xyz;
2735                            float nearT = - (uNear + cameraRayOrigin.z) / cameraRayDir.z;
2736                            viewPosition = cameraRayOrigin + nearT * cameraRayDir;
2737                            modelPosition = (uInvView * vec4(viewPosition, 1.0)).xyz;
2738                        }
2739                    #endif
2740                    return true;
2741                }
2742            }
2743        }
2744    }
2745
2746    return false;
2747}
2748
2749void main() {
2750    vec3 rayOrigin = vModelPosition;
2751    vec3 rayDir = mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho);
2752
2753    vec3 cameraNormal;
2754    vec3 modelPosition;
2755    vec3 viewPosition;
2756    float fragmentDepth;
2757    bool hit = CylinderImpostor(rayOrigin, rayDir, vStart, vEnd, vSize, cameraNormal, interior, modelPosition, viewPosition, fragmentDepth);
2758    if (!hit) discard;
2759
2760    if (fragmentDepth < 0.0) discard;
2761    if (fragmentDepth > 1.0) discard;
2762
2763    gl_FragDepthEXT = fragmentDepth;
2764
2765    vec3 vViewPosition = viewPosition;
2766    vec3 vModelPosition = modelPosition;
2767
2768    #include fade_lod
2769    #include clip_pixel
2770
2771    #ifdef dNeedsNormal
2772        mat3 normalMatrix = adjoint(uView);
2773        vec3 normal = normalize(normalMatrix * -normalize(cameraNormal));
2774    #endif
2775
2776    #include assign_material_color
2777    #include check_transparency
2778
2779    #if defined(dRenderVariant_pick)
2780        #include check_picking_alpha
2781        #ifdef requiredDrawBuffers
2782            gl_FragColor = vObject;
2783            gl_FragData[1] = vInstance;
2784            gl_FragData[2] = vGroup;
2785            gl_FragData[3] = packDepthToRGBA(fragmentDepth);
2786        #else
2787            gl_FragColor = vColor;
2788        #endif
2789    #elif defined(dRenderVariant_depth)
2790        gl_FragColor = material;
2791    #elif defined(dRenderVariant_marking)
2792        gl_FragColor = material;
2793    #elif defined(dRenderVariant_emissive)
2794        gl_FragColor = material;
2795    #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
2796        #include apply_interior_color
2797        #include apply_light_color
2798        #include apply_marker_color
2799
2800        #if defined(dRenderVariant_color)
2801            #include apply_fog
2802            #include wboit_write
2803            #include dpoit_write
2804        #elif defined(dRenderVariant_tracing)
2805            gl_FragData[1] = vec4(normal, emissive);
2806            gl_FragData[2] = vec4(material.rgb, uDensity);
2807        #endif
2808    #endif
2809}
2810`
2810),Hy}var Wy={},Yq;function Sne(){return Yq||(Yq=1,Object.defineProperty(Wy,"__esModule",{value:!0}),Wy.text_vert=void 0,Wy.text_vert=`
2811precision highp float;
2812precision highp int;
2813
2814#include common
2815#include read_from_texture
2816#include common_vert_params
2817#include color_vert_params
2818#include size_vert_params
2819#include common_clip
2820
2821uniform mat4 uModelView;
2822
2823attribute vec3 aPosition;
2824attribute vec2 aMapping;
2825attribute float aDepth;
2826attribute vec2 aTexCoord;
2827attribute mat4 aTransform;
2828attribute float aInstance;
2829attribute float aGroup;
2830
2831uniform float uOffsetX;
2832uniform float uOffsetY;
2833uniform float uOffsetZ;
2834
2835uniform float uIsOrtho;
2836uniform float uPixelRatio;
2837uniform vec4 uViewport;
2838uniform mat4 uInvHeadRotation;
2839uniform bool uHasHeadRotation;
2840uniform mat4 uModelViewEye;
2841uniform mat4 uInvModelViewEye;
2842uniform bool uHasEyeCamera;
2843
2844varying vec2 vTexCoord;
2845
2846void main(void){
2847    int vertexId = VertexID;
2848
2849    #include assign_group
2850    #include assign_color_varying
2851    #include assign_marker_varying
2852    #include assign_clipping_varying
2853    #include assign_size
2854
2855    vTexCoord = aTexCoord;
2856
2857    float scale = uModelScale;
2858
2859    float offsetX = uOffsetX * scale;
2860    float offsetY = uOffsetY * scale;
2861    float offsetZ = (uOffsetZ + aDepth * 0.95) * scale;
2862
2863    vec4 position4 = vec4(aPosition, 1.0);
2864    vec4 mvPosition = uHasEyeCamera
2865         ? uModelViewEye * aTransform * position4
2866         : uModelView * aTransform * position4;
2867
2868    vModelPosition = (uModel * aTransform * position4).xyz; // for clipping in frag shader
2869
2870    // TODO
2871    // #ifdef FIXED_SIZE
2872    //     if (ortho) {
2873    //         scale /= pixelRatio * ((uViewport.w / 2.0) / -uCameraPosition.z) * 0.1;
2874    //     } else {
2875    //         scale /= pixelRatio * ((uViewport.w / 2.0) / -mvPosition.z) * 0.1;
2876    //     }
2877    // #endif
2878
2879    vec4 mvCenter = vec4(mvPosition.xyz, 1.0);
2880
2881    if (vTexCoord.x == 10.0) { // indicates background plane
2882        // move a bit to the back, taking distance to camera into account to avoid z-fighting
2883        offsetZ -= 0.001 * distance(uCameraPosition, (uProjection * mvCenter).xyz);
2884    }
2885
2886    // apply Z offset in view space
2887    if (!uHasEyeCamera) {
2888        if (uIsOrtho == 1.0) {
2889            mvCenter.z += offsetZ;
2890        } else {
2891            mvCenter.xyz += normalize(-mvCenter.xyz) * offsetZ;
2892        }
2893    }
2894
2895    if (uHasEyeCamera) {
2896        mvCenter = uModelView * uInvModelViewEye * mvCenter;
2897    }
2898
2899    // project center to clip space
2900    vec4 clip = uProjection * mvCenter;
2901
2902    // compute corner offset in screen-space units
2903    vec2 cornerOffset = aMapping * size * scale;
2904    cornerOffset.x += offsetX;
2905    cornerOffset.y += offsetY;
2906
2907    if (uHasHeadRotation) {
2908        vec3 rotatedOffset = (uInvHeadRotation * vec4(cornerOffset, 0.0, 0.0)).xyz;
2909        clip += uProjection * vec4(rotatedOffset, 0.0);
2910    } else {
2911        // apply offset in clip space to avoid perspective distortion on the quad
2912        clip.xy += vec2(uProjection[0][0], uProjection[1][1]) * cornerOffset;
2913    }
2914
2915    gl_Position = clip;
2916
2917    vViewPosition = -mvCenter.xyz;
2918
2919    #include clip_instance
2920}
2921`),Wy}var $y={},Qq;function Cne(){return Qq||(Qq=1,Object.defineProperty($y,"__esModule",{value:!0}),$y.text_frag=void 0,$y.text_frag=`
2922precision highp float;
2923precision highp int;
2924
2925#include common
2926#include common_frag_params
2927#include color_frag_params
2928#include common_clip
2929
2930uniform sampler2D tFont;
2931
2932uniform vec3 uBorderColor;
2933uniform float uBorderWidth;
2934uniform vec3 uBackgroundColor;
2935uniform float uBackgroundOpacity;
2936
2937varying vec2 vTexCoord;
2938
2939void main(){
2940    #include fade_lod
2941    #include clip_pixel
2942
2943    float fragmentDepth = gl_FragCoord.z;
2944
2945    // determine if this is a background or glyph fragment
2946    bool isBackground = vTexCoord.x > 1.0;
2947
2948    // discard background for pick/marking/emissive, but keep it in depth
2949    #if !defined(dRenderVariant_color) && !defined(dRenderVariant_tracing) && !defined(dRenderVariant_depth)
2950        if (isBackground) discard;
2951    #endif
2952
2953    // SDF test for glyph fragments — discard pixels outside glyph+border
2954    float rawSdf = 0.0;
2955    if (!isBackground) {
2956        rawSdf = texture2D(tFont, vTexCoord).a;
2957        float sdf = rawSdf + min(uBorderWidth, 0.49); // clamp to avoid exceeding max SDF range
2958        if (sdf < 0.5) discard;
2959    }
2960
2961    #ifdef enabledFragDepth
2962        gl_FragDepthEXT = fragmentDepth;
2963    #endif
2964
2965    // background writes its own opacity into depth alpha; glyphs stay opaque
2966    #define dHasMaterialOpacity
2967    float materialOpacity = isBackground ? uBackgroun
2967dOpacity : 1.0;
2968    #include assign_material_color
2969
2970    if (isBackground) {
2971        #if defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
2972            material = vec4(uBackgroundColor, uBackgroundOpacity * material.a);
2973        #endif
2974    } else {
2975        #if defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
2976            if (uBorderWidth > 0.0 && rawSdf < 0.5) {
2977                material.xyz = uBorderColor;
2978            } else {
2979                // push text fragments forward in depth so they render in front of border
2980                #ifdef enabledFragDepth
2981                    gl_FragDepthEXT = fragmentDepth - 0.0001;
2982                #endif
2983            }
2984        #endif
2985    }
2986
2987    #include check_transparency
2988
2989    #if defined(dRenderVariant_pick)
2990        #include check_picking_alpha
2991        #ifdef requiredDrawBuffers
2992            gl_FragColor = vObject;
2993            gl_FragData[1] = vInstance;
2994            gl_FragData[2] = vGroup;
2995            gl_FragData[3] = packDepthToRGBA(fragmentDepth);
2996        #else
2997            gl_FragColor = vColor;
2998        #endif
2999    #elif defined(dRenderVariant_depth)
3000        gl_FragColor = material;
3001    #elif defined(dRenderVariant_marking)
3002        gl_FragColor = material;
3003    #elif defined(dRenderVariant_emissive)
3004        gl_FragColor = material;
3005    #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
3006        gl_FragColor = material;
3007        #include apply_marker_color
3008
3009        #if defined(dRenderVariant_color)
3010            #include apply_fog
3011            #include wboit_write
3012            #include dpoit_write
3013        #elif defined(dRenderVariant_tracing)
3014            gl_FragData[1] = vec4(-normalize(vViewPosition), emissive);
3015            gl_FragData[2] = vec4(material.rgb, uDensity);
3016        #endif
3017    #endif
3018}
3019`),$y}var Xy={},Zq;function Pne(){return Zq||(Zq=1,Object.defineProperty(Xy,"__esModule",{value:!0}),Xy.lines_vert=void 0,Xy.lines_vert=`
3020precision highp float;
3021precision highp int;
3022
3023#include common
3024#include read_from_texture
3025#include common_vert_params
3026#include color_vert_params
3027#include size_vert_params
3028#include common_clip
3029#include common_animation
3030
3031uniform float uPixelRatio;
3032uniform vec4 uViewport;
3033
3034attribute mat4 aTransform;
3035attribute float aInstance;
3036attribute float aGroup;
3037
3038attribute vec2 aMapping;
3039attribute vec3 aStart;
3040attribute vec3 aEnd;
3041
3042void trimSegment(const in vec4 start, inout vec4 end) {
3043    // trim end segment so it terminates between the camera plane and the near plane
3044    // conservative estimate of the near plane
3045    float a = uProjection[2][2];  // 3rd entry in 3rd column
3046    float b = uProjection[3][2];  // 3rd entry in 4th column
3047    float nearEstimate = -0.5 * b / a;
3048    float alpha = (nearEstimate - start.z) / (end.z - start.z);
3049    end.xyz = mix(start.xyz, end.xyz, alpha);
3050}
3051
3052void main(){
3053    float aspect = uViewport.z / uViewport.w;
3054    int vertexId = VertexID;
3055
3056    #include assign_group
3057    #include assign_color_varying
3058    #include assign_marker_varying
3059    #include assign_clipping_varying
3060    #include assign_size
3061
3062    mat4 transform = applyTumble(aTransform, aInstance, float(uObjectId));
3063    vec3 wigStart = applyWiggle(aStart, group, aInstance);
3064    vec3 wigEnd = applyWiggle(aEnd, group, aInstance);
3065    mat4 modelView = uView * uModel * transform;
3066
3067    // camera space
3068    vec4 start = modelView * vec4(wigStart, 1.0);
3069    vec4 end = modelView * vec4(wigEnd, 1.0);
3070
3071    // assign position
3072    vec4 position4 = vec4((aMapping.y < 0.5) ? wigStart : wigEnd, 1.0);
3073    vViewPosition = (aMapping.y < 0.5) ? start.xyz : end.xyz;
3074
3075    vModelPosition = (uModel * transform * position4).xyz; // for clipping in frag shader
3076
3077    // special case for perspective projection, and segments that terminate either in, or behind, the camera plane
3078    // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space
3079    // but we need to perform ndc-space calculations in the shader, so we must address this issue directly
3080    // perhaps there is a more elegant solution -- WestLangley
3081    bool perspective = (uProjection[2][3] == -1.0); // 4th entry in the 3rd column
3082    if (perspective) {
3083        if (start.z < 0.0 && end.z >= 0.0) {
3084            trimSegment(start, end);
3085        } else if (end.z < 0.0 && start.z >= 0.0) {
3086            trimSegment(end, start);
3087        }
3088    }
3089
3090    // clip space
3091    vec4 clipStart = uProjection * start;
3092    vec4 clipEnd = uProjection * end;
3093
3094    // ndc space
3095    vec2 ndcStart = clipStart.xy / clipStart.w;
3096    vec2 ndcEnd = clipEnd.xy / clipEnd.w;
3097
3098    // direction
3099    vec2 dir = ndcEnd - ndcStart;
3100
3101    // account for clip-space aspect ratio
3102    dir.x *= aspect;
3103    dir = normalize(dir);
3104
3105    // perpendicular to dir
3106    vec2 offset = vec2(dir.y, - dir.x);
3107
3108    // undo aspect ratio adjustment
3109    dir.x /= aspect;
3110    offset.x /= aspect;
3111
3112    // sign flip
3113    if (aMapping.x < 0.0) offset *= -1.0;
3114
3115    // calculate linewidth
3116    float linewidth;
3117    #ifdef dLineSizeAttenuation
3118        linewidth = size * uPixelRatio * ((uViewport.w / 2.0) / -start.z) * 5.0;
3119    #else
3120        linewidth = size * uPixelRatio;
3121    #endif
3122    linewidth = max(1.0, linewidth);
3123
3124    // adjust for linewidth
3125    offset *= linewidth;
3126
3127    // adjust for clip-space to screen-space conversion
3128    offset /= uViewport.w;
3129
3130    // select end
3131    vec4 clip = (aMapping.y < 0.5) ? clipStart : clipEnd;
3132
3133    // back to clip space
3134    offset *= clip.w;
3135    clip.xy += offset;
3136    gl_Position = clip;
3137
3138    #include clip_instance
3139}
3140`),Xy}var Ky={},Jq;function Tne(){return Jq||(Jq=1,Object.defineProperty(Ky,"__esModule",{value:!0}),Ky.lines_frag=void 0,Ky.lines_frag=`
3141precision highp float;
3142precision highp int;
3143
3144#include common
3145#include common_frag_params
3146#include color_frag_params
3147#include common_clip
3148
3149void main(){
3150    #include fade_lod
3151    #include clip_pixel
3152
3153    float fragmentDepth = gl_FragCoord.z;
3154    #include assign_material_color
3155    #include check_transparency
3156
3157    #if defined(dRenderVariant_pick)
3158        #include check_picking_alpha
3159        #ifdef requiredDrawBuffers
3160            gl_FragColor = vObject;
3161            gl_FragData[1] = vInstance;
3162            gl_FragData[2] = vGroup;
3163            gl_FragData[3] = packDepthToRGBA(fragmentDepth);
3164        #else
3165            gl_FragColor = vColor;
3166        #endif
3167    #elif defined(dRenderVariant_depth)
3168        gl_FragColor = material;
3169    #elif defined(dRenderVariant_marking)
3170        gl_FragColor = material;
3171    #elif defined(dRenderVariant_emissive)
3172        gl_FragColor = material;
3173    #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
3174        gl_FragColor = material;
3175        #include apply_marker_color
3176
3177        #if defined(dRenderVariant_color)
3178            #include apply_fog
3179            #include wboit_write
3180            #include dpoit_write
3181        #elif defined(dRenderVariant_tracing)
3182            gl_FragData[1] = vec4(normalize(vViewPosition), emissive);
3183            gl_FragData[2] = vec4(material.rgb, uDensity);
3184        #endif
3185    #endif
3186}
3187`),Ky}var Yy={},eU;function xne(){return eU||(eU=1,Object.defineProperty(Yy,"__esModule",{value:!0}),Yy.mesh_vert=void 0,Yy.mesh_vert=`
3188precision highp float;
3189precision highp int;
3190precision highp sampler2D;
3191
3192#include common
3193#include read_from_texture
3194#include common_vert_params
3195#include color_vert_params
3196#include common_clip
3197#include common_animation
3198#include texture3d_from_2d_linear
3199
3200#ifdef dGeometryType_textureMesh
3201    uniform vec2 uGeoTexDim;
3202    uniform sampler2D tPosition;
3203    uniform sampler2D tGroup;
3204    uniform sampler2D tNormal;
3205#else
3206    attribute vec3 aPosition;
3207    attribute float aGroup;
3208    attribute vec3 aNormal;
3209#endif
3210attribute mat4 aTransform;
3211attribute float aInstance;
3212
3213varying vec3 vNormal;
3214
3215void main(){
3216    int vertexId = VertexID;
3217
3218    #include assign_group
3219    #include assign_marker_varying
3220    #include assign_clipping_varying
3221    #include assign_position
3222    #include assign_color_varying
3223    #include clip_instance
3224
3225    #ifdef dGeometryType_textureMesh
3226        vec3 normal = readFromTexture(tNormal, vertexId, uGeoTexDim).xyz;
3227    #else
3228        vec3 normal = aNormal;
3229    #endif
3230    mat3 normalMatrix = adjoint(modelView);
3231    vec3 transformedNormal = normalize(normalMatrix * normalize(normal));
3232    #if defined(dFlipSided)
3233        if (!uDoubleSided) { // TODO checking uDoubleSided should not be required, ASR
3234            transformedNormal = -transformedNormal;
3235        }
3236    #endif
3237    vNormal = transformedNormal;
3238}
3239`),Yy}var Qy={},tU;function Ane(){return tU||(tU=1,Object.defineProperty(Qy,"__esModule",{value:!0}),Qy.mesh_frag=void 0,Qy.mesh_frag=`
3240precision highp float;
3241precision highp int;
3242
3243#define bumpEnabled
3244
3245#include common
3246#include common_frag_params
3247#include color_frag_params
3248#include light_frag_params
3249#include normal_frag_params
3250#include common_clip
3251
3252uniform vec4 uInteriorColor;
3253uniform vec4 uInteriorSubstance;
3254
3255void main() {
3256    #include fade_lod
3257    #include clip_pixel
3258
3259    interior = !gl_FrontFacing;
3260
3261    float fragmentDepth = gl_FragCoord.z;
3262
3263    #ifdef dNeedsNormal
3264        #if defined(dFlatShaded)
3265            vec3 fdx = dFdx(vViewPosition);
3266            vec3 fdy = dFdy(vViewPosition);
3267            vec3 normal = -normalize(cross(fdx,fdy));
3268        #else
3269            vec3 normal = -normalize(vNormal);
3270            if (uDoubleSided) normal *= float(gl_FrontFacing) * 2.0 - 1.0;
3271        #endif
3272
3273        #if defined(dFlipSided)
3274            normal *= -1.0;
3275        #endif
3276    #endif
3277
3278    #include assign_material_color
3279    #include check_transparency
3280
3281    #if defined(dRenderVariant_pick)
3282        #include check_picking_alpha
3283        #ifdef requiredDrawBuffers
3284            gl_FragColor = vObject;
3285            gl_FragData[1] = vInstance;
3286            gl_FragData[2] = vGroup;
3287            gl_FragData[3] = packDepthToRGBA(fragmentDepth);
3288        #else
3289            gl_FragColor = vColor;
3290        #endif
3291    #elif defined(dRenderVariant_depth)
3292        gl_FragColor = material;
3293    #elif defined(dRenderVariant_marking)
3294        gl_FragColor = material;
3295    #elif defined(dRenderVariant_emissive)
3296        gl_FragColor = material;
3297    #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
3298        #include apply_interior_color
3299        #include apply_light_color
3300        #include apply_marker_color
3301
3302        #if defined(dRenderVariant_color)
3303            #include apply_fog
3304            #include wboit_write
3305            #include dpoit_write
3306        #elif defined(dRenderVariant_tracing)
3307            gl_FragData[1] = vec4(normal, emissive);
3308            gl_FragData[2] = vec4(material.rgb, uDensity);
3309        #endif
3310    #endif
3311}
3312`),Qy}var Zy={},rU;function Mne(){return rU||(rU=1,Object.defineProperty(Zy,"__esModule",{value:!0}),Zy.directVolume_vert=void 0,Zy.directVolume_vert=`
3313precision highp float;
3314
3315attribute vec3 aPosition;
3316attribute mat4 aTransform;
3317attribute float aInstance;
3318
3319uniform mat4 uModel;
3320uniform mat4 uModelView;
3321uniform mat4 uProjection;
3322uniform vec4 uInvariantBoundingSphere;
3323uniform float uModelScale;
3324
3325varying vec3 vModelPosition;
3326varying float vInstance;
3327varying vec4 vBoundingSphere;
3328varying mat4 vTransform;
3329
3330uniform vec3 uBboxSize;
3331uniform vec3 uBboxMin;
3332uniform vec3 uBboxMax;
3333uniform vec3 uGridDim;
3334uniform mat4 uTransform;
3335
3336uniform mat4 uUnitToCartn;
3337
3338void main() {
3339    vec4 unitCoord = vec4(aPosition + vec3(0.5), 1.0);
3340    vec4 mvPosition = uModelView * aTransform * uUnitToCartn * unitCoord;
3341
3342    vModelPosition = (uModel * aTransform * uUnitToCartn * unitCoord).xyz;
3343    vInstance = aInstance;
3344    vBoundingSphere = vec4(
3345        (uModel * aTransform * vec4(uInvariantBoundingSphere.xyz, 1.0)).xyz,
3346        uModelScale * uInvariantBoundingSphere.w
3347    );
3348    vTransform = aTransform;
3349
3350    gl_Position = uProjection * mvPosition;
3351
3352    // move z position to near clip plane (but not too close to get precision issues)
3353    gl_Position.z = gl_Position.w - 0.01;
3354}
3355`),Zy}var Jy={},nU;function Dne(){return nU||(nU=1,Object.defineProperty(Jy,"__esModule",{value:!0}),Jy.directVolume_frag=void 0,Jy.directVolume_frag
vendor: 12,272 bytes, lines 3355-3725
3355=`
3356precision highp float;
3357precision highp int;
3358
3359#include common
3360#include light_frag_params
3361
3362#if dClipObjectCount != 0
3363    uniform int uClipObjectType[dClipObjectCount];
3364    uniform bool uClipObjectInvert[dClipObjectCount];
3365    uniform vec3 uClipObjectPosition[dClipObjectCount];
3366    uniform vec4 uClipObjectRotation[dClipObjectCount];
3367    uniform vec3 uClipObjectScale[dClipObjectCount];
3368    uniform mat4 uClipObjectTransform[dClipObjectCount];
3369#endif
3370#include common_clip
3371
3372#include read_from_texture
3373#include texture3d_from_1d_trilinear
3374#include texture3d_from_2d_nearest
3375#include texture3d_from_2d_linear
3376
3377uniform mat4 uProjection, uTransform, uModelView, uModel, uView;
3378uniform vec3 uCameraDir;
3379uniform float uModelScale;
3380
3381uniform sampler2D tDepth;
3382uniform vec2 uDrawingBufferSize;
3383
3384varying vec3 vModelPosition;
3385varying float vInstance;
3386varying vec4 vBoundingSphere;
3387varying mat4 vTransform;
3388
3389uniform mat4 uInvView;
3390uniform vec3 uGridDim;
3391uniform vec3 uBboxSize;
3392uniform sampler2D tTransferTex;
3393uniform float uTransferScale;
3394uniform float uStepScale;
3395uniform float uJumpLength;
3396
3397uniform int uObjectId;
3398uniform int uVertexCount;
3399uniform int uInstanceCount;
3400uniform int uGroupCount;
3401
3402#if defined(dColorMarker)
3403    uniform vec3 uHighlightColor;
3404    uniform vec3 uSelectColor;
3405    uniform vec3 uDimColor;
3406    uniform float uHighlightStrength;
3407    uniform float uSelectStrength;
3408    uniform float uDimStrength;
3409    uniform int uMarkerPriority;
3410    uniform float uMarkerAverage;
3411
3412    uniform float uMarker;
3413    uniform vec2 uMarkerTexDim;
3414    uniform sampler2D tMarker;
3415#endif
3416
3417uniform float uMetalness;
3418uniform float uRoughness;
3419uniform float uEmissive;
3420
3421// Density value to estimate object thickness
3422uniform float uDensity;
3423
3424uniform bool uFog;
3425uniform float uFogNear;
3426uniform float uFogFar;
3427uniform vec3 uFogColor;
3428
3429uniform float uAlpha;
3430uniform bool uTransparentBackground;
3431uniform float uXrayEdgeFalloff;
3432uniform float uCelSteps;
3433uniform float uExposure;
3434
3435uniform int uRenderMask;
3436
3437uniform float uNear;
3438uniform float uFar;
3439uniform float uIsOrtho;
3440
3441uniform vec3 uCellDim;
3442uniform vec3 uCameraPosition;
3443uniform mat4 uCartnToUnit;
3444
3445#if __VERSION__ != 100
3446    // for webgl1 this is given as a 'define'
3447    uniform int uMaxSteps;
3448#endif
3449
3450#if defined(dGridTexType_2d)
3451    precision highp sampler2D;
3452    uniform sampler2D tGridTex;
3453    uniform vec3 uGridTexDim;
3454#elif defined(dGridTexType_3d)
3455    precision highp sampler3D;
3456    uniform sampler3D tGridTex;
3457#endif
3458
3459#if defined(dColorType_uniform)
3460    uniform vec3 uColor;
3461#elif defined(dColorType_texture)
3462    uniform vec2 uColorTexDim;
3463    uniform sampler2D tColor;
3464#endif
3465
3466#ifdef dOverpaint
3467    #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)
3468        uniform vec2 uOverpaintTexDim;
3469        uniform sampler2D tOverpaint;
3470    #endif
3471#endif
3472
3473#ifdef dUsePalette
3474    uniform vec2 uPaletteDomain;
3475    uniform sampler2D tPalette;
3476#endif
3477
3478#if defined(dGridTexType_2d)
3479    vec4 textureVal(vec3 pos) {
3480        return texture3dFrom2dLinear(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);
3481    }
3482    vec4 textureGroup(vec3 pos) {
3483        return texture3dFrom2dNearest(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);
3484    }
3485#elif defined(dGridTexType_3d)
3486    vec4 textureVal(vec3 pos) {
3487        return texture(tGridTex, pos + (vec3(0.5) / uGridDim));
3488    }
3489    vec4 textureGroup(vec3 pos) {
3490        return texelFetch(tGridTex, ivec3(pos * uGridDim), 0);
3491    }
3492#endif
3493
3494float calcDepth(const in vec3 pos) {
3495    vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;
3496    return 0.5 + 0.5 * clipZW.x / clipZW.y;
3497}
3498
3499float transferFunction(float value) {
3500    return texture2D(tTransferTex, vec2(value, 0.0)).a;
3501}
3502
3503float getDepth(const in vec2 coords) {
3504    #ifdef depthTextureSupport
3505        return texture2D(tDepth, coords).r;
3506    #else
3507        return unpackRGBAToDepth(texture2D(tDepth, coords));
3508    #endif
3509}
3510
3511const float gradOffset = 0.5;
3512
3513vec3 v3m4(vec3 p, mat4 m) {
3514    return (m * vec4(p, 1.0)).xyz;
3515}
3516
3517float preFogAlphaBlended = 0.0;
3518
3519vec4 raymarch(vec3 startLoc, vec3 step, vec3 rayDir) {
3520    mat3 normalMatrix = adjoint(uModelView * vTransform);
3521    mat4 cartnToUnit = uCartnToUnit * inverse4(vTransform);
3522    #if defined(dClipVariant_pixel) && dClipObjectCount != 0
3523        mat4 modelTransform = uModel * vTransform * uTransform;
3524    #endif
3525    mat4 modelViewTransform = uModelView * vTransform * uTransform;
3526
3527    vec3 scaleVol = vec3(1.0) / uGridDim;
3528    vec3 pos = startLoc;
3529    vec4 cell;
3530    float prevValue = -1.0;
3531    float value = 0.0;
3532    vec4 src = vec4(0.0);
3533    vec4 dst = vec4(0.0);
3534    float fragmentDepth;
3535
3536    vec3 posMin = vec3(0.0);
3537    vec3 posMax = vec3(1.0) - vec3(1.0) / uGridDim;
3538
3539    vec3 unitPos;
3540
3541    vec3 nextPos;
3542    float nextValue;
3543
3544    vec4 material;
3545    vec4 overpaint;
3546    float metalness = uMetalness;
3547    float roughness = uRoughness;
3548    float emissive = uEmissive;
3549
3550    vec3 gradient = vec3(1.0);
3551    vec3 dx = vec3(gradOffset * scaleVol.x, 0.0, 0.0);
3552    vec3 dy = vec3(0.0, gradOffset * scaleVol.y, 0.0);
3553    vec3 dz = vec3(0.0, 0.0, gradOffset * scaleVol.z);
3554
3555    float maxDist = min(vBoundingSphere.w * 2.0, uFar - uNear);
3556    float maxDistSq = maxDist * maxDist;
3557
3558    for (int i = 0; i < uMaxSteps; ++i) {
3559        // break when beyond bounding-sphere or far-plane
3560        vec3 distVec = startLoc - pos;
3561        if (dot(distVec, distVec) > maxDistSq) break;
3562
3563        unitPos = v3m4(pos / uModelScale, cartnToUnit);
3564
3565        // continue when outside of grid
3566        if (unitPos.x > posMax.x || unitPos.y > posMax.y || unitPos.z > posMax.z ||
3567            unitPos.x < posMin.x || unitPos.y < posMin.y || unitPos.z < posMin.z
3568        ) {
3569            prevValue = value;
3570            pos += step;
3571            continue;
3572        }
3573
3574        cell = textureVal(unitPos);
3575        value = cell.a; // current voxel value
3576
3577        if (uJumpLength > 0.0 && value < 0.01) {
3578            nextPos = pos + rayDir * uJumpLength;
3579            nextValue = textureVal(v3m4(nextPos / uModelScale, cartnToUnit)).a;
3580            if (nextValue < 0.01) {
3581                prevValue = nextValue;
3582                pos = nextPos;
3583                continue;
3584            }
3585        }
3586
3587        vec4 mvPosition = modelViewTransform * vec4(unitPos * uGridDim, 1.0);
3588        if (calcDepth(mvPosition.xyz) > getDepth(gl_FragCoord.xy / uDrawingBufferSize))
3589            break;
3590
3591        #if defined(dClipVariant_pixel) && dClipObjectCount != 0
3592            vec3 modelPosition = v3m4(unitPos * uGridDim, modelTransform);
3593            if (clipTest(modelPosition)) {
3594                prevValue = value;
3595                pos += step;
3596                continue;
3597            }
3598        #endif
3599
3600        vec3 vViewPosition = mvPosition.xyz;
3601        material.a = transferFunction(value);
3602
3603        #ifdef dPackedGroup
3604            float group = unpackRGBToInt(textureGroup(floor(unitPos * uGridDim + 0.5) / uGridDim).rgb);
3605        #else
3606            vec3 g = floor(unitPos * uGridDim + 0.5);
3607            // note that we swap x and z because the texture is flipped around y
3608            #if defined(dAxisOrder_012)
3609                float group = g.z + g.y * uGridDim.z + g.x * uGridDim.z * uGridDim.y; // 210
3610            #elif defined(dAxisOrder_021)
3611                float group = g.y + g.z * uGridDim.y + g.x * uGridDim.y * uGridDim.z; // 120
3612            #elif defined(dAxisOrder_102)
3613                float group = g.z + g.x * uGridDim.z + g.y * uGridDim.z * uGridDim.x; // 201
3614            #elif defined(dAxisOrder_120)
3615                float group = g.x + g.z * uGridDim.x + g.y * uGridDim.x * uGridDim.z; // 021
3616            #elif defined(dAxisOrder_201)
3617                float group = g.y + g.x * uGridDim.y + g.z * uGridDim.y * uGridDim.x; // 102
3618            #elif defined(dAxisOrder_210)
3619                float group = g.x + g.y * uGridDim.x + g.z * uGridDim.x * uGridDim.y; // 012
3620            #endif
3621        #endif
3622
3623        #if defined(dColorType_direct) && defined(dUsePalette)
3624            float paletteValue = (value - uPaletteDomain[0]) / (uPaletteDomain[1] - uPaletteDomain[0]);
3625            material.rgb = texture2D(tPalette, vec2(clamp(paletteValue, 0.0, 1.0), 0.0)).rgb;
3626        #elif defined(dColorType_uniform)
3627            material.rgb = uColor;
3628        #elif defined(dColorType_instance)
3629            material.rgb = readFromTexture(tColor, vInstance, uColorTexDim).rgb;
3630        #elif defined(dColorType_group)
3631            material.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;
3632        #elif defined(dColorType_groupInstance)
3633            material.rgb = readFromTexture(tColor, vInstance * float(uGroupCount) + group, uColorTexDim).rgb;
3634        #elif defined(dColorType_vertex)
3635            material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, 0.0).rgb;
3636        #elif defined(dColorType_vertexInstance)
3637            material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, vInstance * float(uVertexCount)).rgb;
3638        #endif
3639
3640        #ifdef dOverpaint
3641            #if defined(dOverpaintType_groupInstance)
3642                overpaint = readFromTexture(tOverpaint, vInstance * float(uGroupCount) + group, uOverpaintTexDim);
3643            #elif defined(dOverpaintType_vertexInstance)
3644                overpaint = texture3dFrom1dTrilinear(tOverpaint, unitPos, uGridDim, uOverpaintTexDim, vInstance * float(uVertexCount));
3645            #endif
3646
3647            material.rgb = mix(material.rgb, overpaint.rgb, overpaint.a);
3648        #endif
3649
3650        #if defined(dIgnoreLight)
3651            gl_FragColor.rgb = material.rgb;
3652        #else
3653            if (material.a >= 0.01) {
3654                #ifdef dPackedGroup
3655                    // compute gradient by central differences
3656                    gradient.x = textureVal(unitPos - dx).a - textureVal(unitPos + dx).a;
3657                    gradient.y = textureVal(unitPos - dy).a - textureVal(unitPos + dy).a;
3658                    gradient.z = textureVal(unitPos - dz).a - textureVal(unitPos + dz).a;
3659                #else
3660                    gradient = cell.xyz * 2.0 - 1.0;
3661                #endif
3662                vec3 normal = -normalize(normalMatrix * normalize(gradient));
3663                #include apply_light_color
3664            } else {
3665                gl_FragColor.rgb = material.rgb;
3666            }
3667        #endif
3668
3669        gl_FragColor.a = material.a * uAlpha * uTransferScale;
3670
3671        #if defined(dColorMarker)
3672            float marker = uMarker;
3673            if (uMarker == -1.0) {
3674                marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a;
3675                marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win
3676            }
3677        #endif
3678        #include apply_marker_color
3679
3680        preFogAlphaBlended = (1.0 - preFogAlphaBlended) * gl_FragColor.a + preFogAlphaBlended;
3681        fragmentDepth = calcDepth(mvPosition.xyz);
3682        #include apply_fog
3683
3684        src = gl_FragColor;
3685
3686        if (!uTransparentBackground || !uFog) {
3687            // done in 'apply_fog' otherwise
3688            src.rgb *= src.a;
3689        }
3690        dst = (1.0 - dst.a) * src + dst; // standard blending
3691
3692        // break if the color is opaque enough
3693        if (dst.a > 0.95)
3694            break;
3695
3696        pos += step;
3697    }
3698
3699    return dst;
3700}
3701
3702// TODO: support float texture for higher precision values???
3703// TODO: support clipping exclusion texture support
3704
3705void main() {
3706    #if defined(dRenderVariant_tracing) || defined(dRenderVariant_emissive)
3707        discard;
3708    #else
3709        if (gl_FrontFacing)
3710            discard;
3711
3712        vec3 rayDir = mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho);
3713        vec3 step = rayDir * uStepScale * uModelScale;
3714
3715        float boundingSphereNear = distance(vBoundingSphere.xyz, uCameraPosition) - vBoundingSphere.w;
3716        float d = max(uNear, boundingSphereNear) - mix(0.0, distance(vModelPosition, uCameraPosition), uIsOrtho);
3717        vec3 start = mix(uCameraPosition, vModelPosition, uIsOrtho) + (d * rayDir);
3718        gl_FragColor = raymarch(start, step, rayDir);
3719
3720        float fragmentDepth = calcDepth((uView * vec4(start, 1.0)).xyz);
3721        float preFogAlpha = clamp(preFogAlphaBlended, 0.0, 1.0);
3722        #include wboit_write
3723    #endif
3724}
3725`
3725),Jy}var e1={},iU;function Ine(){return iU||(iU=1,Object.defineProperty(e1,"__esModule",{value:!0}),e1.image_vert=void 0,e1.image_vert=`
3726precision highp float;
3727precision highp int;
3728
3729#include common
3730#include common_vert_params
3731
3732attribute vec3 aPosition;
3733attribute vec2 aUv;
3734attribute mat4 aTransform;
3735attribute float aInstance;
3736
3737varying vec2 vUv;
3738varying float vInstance;
3739varying vec3 vPosition;
3740
3741void main() {
3742    int vertexId = VertexID;
3743
3744    #include assign_position
3745
3746    vUv = aUv;
3747    vInstance = aInstance;
3748    vPosition = aPosition;
3749}
3750`),e1}var t1={},aU;function wne(){return aU||(aU=1,Object.defineProperty(t1,"__esModule",{value:!0}),t1.image_frag=void 0,t1.image_frag=`
3751precision highp float;
3752precision highp int;
3753
3754#include common
3755#include read_from_texture
3756#include common_frag_params
3757#include common_clip
3758
3759uniform float uEmissive;
3760
3761// Density value to estimate object thickness
3762uniform float uDensity;
3763
3764#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
3765    #ifdef dOverpaint
3766        #if defined(dOverpaintType_instance) || defined(dOverpaintType_groupInstance)
3767            varying vec4 vOverpaint;
3768            uniform vec2 uOverpaintTexDim;
3769            uniform sampler2D tOverpaint;
3770        #endif
3771        uniform float uOverpaintStrength;
3772    #endif
3773#endif
3774
3775#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) || defined(dRenderVariant_emissive)
3776    #ifdef dEmissive
3777        #if defined(dEmissiveType_instance) || defined(dEmissiveType_groupInstance)
3778            varying float vEmissive;
3779            uniform vec2 uEmissiveTexDim;
3780            uniform sampler2D tEmissive;
3781        #endif
3782        uniform float uEmissiveStrength;
3783    #endif
3784#endif
3785
3786#ifdef dTransparency
3787    #if defined(dTransparencyType_instance) || defined(dTransparencyType_groupInstance)
3788        varying float vTransparency;
3789        uniform vec2 uTransparencyTexDim;
3790        uniform sampler2D tTransparency;
3791    #endif
3792    uniform float uTransparencyStrength;
3793#endif
3794
3795uniform vec2 uImageTexDim;
3796uniform sampler2D tImageTex;
3797uniform sampler2D tGroupTex;
3798uniform sampler2D tValueTex;
3799
3800uniform vec2 uMarkerTexDim;
3801uniform sampler2D tMarker;
3802
3803varying vec2 vUv;
3804varying float vInstance;
3805varying vec3 vPosition;
3806
3807#ifdef dUsePalette
3808    uniform sampler2D tPalette;
3809    uniform vec3 uPaletteDefault;
3810#endif
3811
3812uniform int uTrimType;
3813uniform vec3 uTrimCenter;
3814uniform vec4 uTrimRotation;
3815uniform vec3 uTrimScale;
3816uniform mat4 uTrimTransform;
3817
3818uniform float uIsoLevel;
3819
3820#if defined(dInterpolation_catmulrom) || defined(dInterpolation_mitchell) || defined(dInterpolation_bspline)
3821    #define dInterpolation_cubic
3822#endif
3823
3824#if defined(dInterpolation_cubic)
3825    #if defined(dInterpolation_catmulrom) || defined(dInterpolation_mitchell)
3826        #if defined(dInterpolation_catmulrom)
3827            const float B = 0.0;
3828            const float C = 0.5;
3829        #elif defined(dInterpolation_mitchell)
3830            const float B = 0.333;
3831            const float C = 0.333;
3832        #endif
3833
3834        float cubicFilter(float x){
3835            float f = x;
3836            if (f < 0.0) {
3837                f = -f;
3838            }
3839            if (f < 1.0) {
3840                return ((12.0 - 9.0 * B - 6.0 * C) * (f * f * f) +
3841                    (-18.0 + 12.0 * B + 6.0 * C) * (f * f) +
3842                    (6.0 - 2.0 * B)) / 6.0;
3843            }else if (f >= 1.0 && f < 2.0){
3844                return ((-B - 6.0 * C) * ( f * f * f)
3845                    + (6.0 * B + 30.0 * C) * (f * f) +
3846                    (-(12.0 * B) - 48.0 * C) * f +
3847                    8.0 * B + 24.0 * C) / 6.0;
3848            }else{
3849                return 0.0;
3850            }
3851        }
3852    #elif defined(dInterpolation_bspline)
3853        float cubicFilter(float x) {
3854            float f = x;
3855            if (f < 0.0) {
3856                f = -f;
3857            }
3858            if (f >= 0.0 && f <= 1.0){
3859                return (2.0 / 3.0) + (0.5) * (f * f * f) - (f * f);
3860            } else if (f > 1.0 && f <= 2.0) {
3861                return 1.0 / 6.0 * pow((2.0 - f), 3.0);
3862            }
3863            return 1.0;
3864        }
3865    #endif
3866
3867    vec4 biCubic(sampler2D tex, vec2 texCoord) {
3868        vec2 texelSize = 1.0 / uImageTexDim;
3869        texCoord -= texelSize / 2.0;
3870        vec4 nSum = vec4(0.0);
3871        float nDenom = 0.0;
3872        vec2 cell = fract(texCoord * uImageTexDim);
3873        for (float m = -1.0; m <= 2.0; ++m) {
3874            for (float n = -1.0; n <= 2.0; ++n) {
3875                vec4 vecData = texture2D(tex, texCoord + texelSize * vec2(m, n));
3876                float c = abs(cubicFilter(m - cell.x) * cubicFilter(-n + cell.y));
3877                nSum += vecData * c;
3878                nDenom += c;
3879            }
3880        }
3881        return nSum / nDenom;
3882    }
3883#endif
3884
3885void main() {
3886    if (uTrimType != 0 && getSignedDistance(vPosition, uTrimType, uTrimCenter, uTrimRotation, uTrimScale, uTrimTransform) > 0.0) discard;
3887
3888    #include fade_lod
3889    #include clip_pixel
3890
3891    #if defined(dInterpolation_cubic)
3892        #ifdef dUsePalette
3893            vec4 material = texture2D(tImageTex, vUv);
3894            if (material.rgb != vec3(1.0)) {
3895                material = biCubic(tImageTex, vUv);
3896            }
3897        #else
3898            vec4 material = biCubic(tImageTex, vUv);
3899        #endif
3900    #else
3901        vec4 material = texture2D(tImageTex, vUv);
3902    #endif
3903
3904    if (uIsoLevel >= 0.0) {
3905        if (texture2D(tValueTex, vUv).r < uIsoLevel) discard;
3906
3907        material.a = uAlpha;
3908    } else {
3909        if (material.a == 0.0) discard;
3910
3911        material.a *= uAlpha;
3912    }
3913
3914    float fragmentDepth = gl_FragCoord.z;
3915
3916    vec3 packedGroup = texture2D(tGroupTex, vUv).rgb;
3917    float group = packedGroup == vec3(0.0) ? -1.0 : unpackRGBToInt(packedGroup);
3918
3919    // apply per-group transparency
3920    #if defined(dTransparency) && (defined(dRenderVariant_pick) || defined(dRenderVariant_color) || defined(dRenderVariant_emissive) || defined(dRenderVariant_tracing))
3921        float transparency = 0.0;
3922        #if defined(dTransparencyType_instance)
3923            transparency = readFromTexture(tTransparency, vInstance, uTransparencyTexDim).a;
3924        #elif defined(dTransparencyType_groupInstance)
3925            transparency = readFromTexture(tTransparency, vInstance * float(uGroupCount) + group, uTransparencyTexDim).a;
3926        #endif
3927        transparency *= uTransparencyStrength;
3928
3929        float ta = 1.0 - transparency;
3930        if (transparency < 0.09) ta = 1.0; // hard cutoff looks better
3931
3932        #if defined(dRenderVariant_pick)
3933            if (ta * uAlpha < uPickingAlphaThreshold)
3934                discard; // ignore so the element below can be picked
3935        #elif defined(dRenderVariant_emissive)
3936            if (ta < 1.0)
3937                discard; // emissive not supported with transparency
3938        #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
3939            material.a *= ta;
3940        #endif
3941    #endif
3942
3943    if ((uRenderMask == MaskOpaque && material.a < 1.0) ||
3944        (uRenderMask == MaskTransparent && material.a == 1.0)
3945    ) {
3946        discard;
3947    }
3948
3949    #if defined(dNeedsMarker)
3950        float marker = uMarker;
3951        if (group == -1.0) {
3952            marker = 0.0;
3953        } else if (uMarker == -1.0) {
3954            marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a;
3955            marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win
3956        }
3957    #endif
3958
3959    #if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) || defined(dRenderVariant_emissive)
3960        float emissive = uEmissive;
3961        if (group == -1.0) {
3962            emissive = 0.0;
3963        } else {
3964            #ifdef dEmissive
3965                #if defined(dEmissiveType_instance)
3966                    emissive += readFromTexture(tEmissive, vInstance, uEmissiveTexDim).a * uEmissiveStrength;
3967                #elif defined(dEmissiveType_groupInstance)
3968                    emissive += readFromTexture(tEmissive, vInstance * float(uGroupCount) + group, uEmissiveTexDim).a * uEmissiveStrength;
3969                #endif
3970            #endif
3971        }
3972    #endif
3973
3974    #if defined(dRenderVariant_pick)
3975        if (group == -1.0) discard;
3976
3977        #include check_picking_alpha
3978        #ifdef requiredDrawBuffers
3979            gl_FragColor = vec4(packIntToRGB(float(uObjectId)), 1.0);
3980            gl_FragData[1] = vec4(packIntToRGB(vInstance), 1.0);
3981            gl_FragData[2] = vec4(packIntToRGB(group), 1.0);
3982            gl_FragData[3] = packDepthToRGBA(fragmentDepth);
3983        #else
3984            gl_FragColor = vColor;
3985            if (uPickType == 1) {
3986                gl_FragColor = vec4(packIntToRGB(float(uObjectId)), 1.0);
3987            } else if (uPickType == 2) {
3988                gl_FragColor = vec4(packIntToRGB(vInstance), 1.0);
3989            } else {
3990                gl_FragColor = vec4(packIntToRGB(group), 1.0);
3991            }
3992        #endif
3993    #elif defined(dRenderVariant_depth)
3994        if (uRenderMask == MaskOpaque) {
3995            gl_FragColor = packDepthToRGBA(fragmentDepth);
3996        } else if (uRenderMask == MaskTransparent) {
3997            gl_FragColor = packDepthWithAlphaToRGBA(fragmentDepth, material.a);
3998        }
3999    #elif defined(dRenderVariant_marking)
4000        if (uMarkingType == 1) {
4001            if (marker > 0.0)
4002                discard;
4003            gl_FragColor = packDepthToRGBA(fragmentDepth);
4004        } else {
4005            if (marker == 0.0)
4006                discard;
4007            float depthTest = 1.0;
4008            if (uMarkingDepthTest) {
4009                depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0;
4010            }
4011            bool isHighlight = intMod(marker, 2.0) > 0.1;
4012            float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);
4013            float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));
4014            if (fogFactor == 1.0)
4015                discard;
4016            gl_FragColor = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor);
4017        }
4018    #elif defined(dRenderVariant_emissive)
4019        gl_FragColor = vec4(emissive);
4020    #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing)
4021        #ifdef dUsePalette
4022            if (material.rgb == vec3(1.0)) {
4023                material.rgb = uPaletteDefault;
4024            } else {
4025                float v = ((material.r * 256.0 * 256.0 * 255.0 + material.g * 256.0 * 255.0 + material.b * 255.0) - 1.0) / PALETTE_SCALE;
4026                material.rgb = texture2D(tPalette, vec2(v, 0.0)).rgb;
4027            }
4028        #endif
4029
4030        // mix material with overpaint
4031        #if defined(dOverpaint)
4032            vec4 overpaint = vec4(0.0);
4033            if (group != -1.0) {
4034                #if defined(dOverpaintType_instance)
4035                    overpaint = readFromTexture(tOverpaint, vInstance, uOverpaintTexDim);
4036                #elif defined(dOverpaintType_groupInstance)
4037                    overpaint = readFromTexture(tOverpaint, vInstance * float(uGroupCount) + group, uOverpaintTexDim);
4038                #endif
4039                overpaint *= uOverpaintStrength;
4040            }
4041            material.rgb = mix(material.rgb, overpaint.rgb, overpaint.a);
4042        #endif
4043
4044        gl_FragColor = material;
4045        #include apply_marker_color
4046
4047        #if defined(dRenderVariant_color)
4048            #include apply_fog
4049            #include wboit_write
4050            #include dpoit_write
4051        #elif defined(dRenderVariant_tracing)
4052            gl_FragData[1] = vec4(normalize(vViewPosition), emissive);
4053            gl_FragData[2] = vec4(material.rgb, uDensity);
4054        #endif
4055    #endif
4056}
4057`),t1}var oU;function Kt(){if(oU)return qr;
4057oU=1,Object.defineProperty(qr,"__esModule",{value:!0}),qr.ImageShaderCode=qr.DirectVolumeShaderCode=qr.MeshShaderCode=qr.LinesShaderCode=qr.TextShaderCode=qr.CylindersShaderCode=qr.SpheresShaderCode=qr.PointsShaderCode=void 0,qr.ShaderCode=K,qr.addShaderDefines=_e;const e=Yn(),t=on(),r=Gt(),n=(0,e.idFactory)(),i=Ore(),c=kre(),o=Fre(),s=Lre(),h=Nre(),f=qre(),y=Ure(),_=jre(),g=Gre(),a=zre(),d=Hre(),p=Wre(),u=$re(),m=Xre(),v=Kre(),b=Yre(),P=Qre(),C=Zre(),l=Jre(),S=ene(),T=tne(),A=rne(),x=nne(),M=ine(),D=ane(),V=one(),R=sne(),E=cne(),I=une(),B=lne(),w=dne(),O=fne(),F=mne(),L=pne(),U={apply_fog:i.apply_fog,apply_interior_color:c.apply_interior_color,apply_light_color:o.apply_light_color,apply_marker_color:s.apply_marker_color,assign_clipping_varying:h.assign_clipping_varying,assign_color_varying:f.assign_color_varying,assign_group:y.assign_group,assign_marker_varying:_.assign_marker_varying,assign_material_color:g.assign_material_color,assign_position:a.assign_position,assign_size:d.assign_size,check_picking_alpha:p.check_picking_alpha,check_transparency:u.check_transparency,clip_instance:m.clip_instance,clip_pixel:v.clip_pixel,color_frag_params:b.color_frag_params,color_vert_params:P.color_vert_params,common_animation:C.common_animation,common_clip:l.common_clip,common_frag_params:S.common_frag_params,common_vert_params:T.common_vert_params,common:A.common,fade_lod:x.fade_lod,float_to_rgba:M.float_to_rgba,light_frag_params:D.light_frag_params,normal_frag_params:V.normal_frag_params,read_from_texture:R.read_from_texture,rgba_to_float:E.rgba_to_float,size_vert_params:I.size_vert_params,texture3d_from_1d_trilinear:B.texture3d_from_1d_trilinear,texture3d_from_2d_linear:w.texture3d_from_2d_linear,texture3d_from_2d_nearest:O.texture3d_from_2d_nearest,wboit_write:F.wboit_write,dpoit_write:L.dpoit_write},q=/^(?!\/\/)\s*#include\s+(\S+)/gm,N=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*\+\+i\s*\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g,k=/[ \t]*\/\/.*\n/g,j=/[ \t]*\/\*[\s\S]*?\*\//g,H=/\n{2,}/g;function G(be){return be.replace(q,(xe,we)=>{const Be=U[we];if(!Be)throw new Error(`empty chunk, '${we}'`);return Be}).trim().replace(k,`
4058`).replace(j,`
4059`).replace(H,`
4060`)}function z(be){return be.replace(N,W)}function W(be,xe,we,Be){let Me="";for(let Re=parseInt(xe);Re<parseInt(we);++Re)Me+=Be.replace(/\[\s*i\s*\]/g,`[${Re}]`).replace(/UNROLLED_LOOP_INDEX/g,`${Re}`);return Me}function X(be,xe){return xe.dLightCount&&(be=be.replace(/dLightCount/g,`${xe.dLightCount.ref.value}`)),xe.dClipObjectCount&&(be=be.replace(/dClipObjectCount/g,`${xe.dClipObjectCount.ref.value}`)),be}function Y(be,xe){return z(X(be,xe))}function K(be,xe,we,Be={},Me={},Re){return{id:n(),name:be,vert:G(xe),frag:G(we),extensions:Be,outTypes:Me,ignoreDefine:Re}}function Q(be,xe,we){var Be;if(xe.startsWith("color")||xe==="tracing"){if(be==="dLightCount")return!!(!((Be=we.dIgnoreLight)===null||Be===void 0)&&Be.ref.value)}else{const Me=["dSubstanceType","dSubstance","dColorMarker","dCelShaded","dLightCount"];return xe!=="depth"&&!xe.startsWith("pick")&&Me.push("dXrayShaded"),xe!=="emissive"&&Me.push("dColorType","dUsePalette","dOverpaintType","dOverpaint","dEmissiveType","dEmissive"),Me.includes(be)}return!1}function J(be,xe,we){return be==="dLightCount"?!0:Q(be,xe,we)}const ae=hne(),te=gne();qr.PointsShaderCode=K("points",ae.points_vert,te.points_frag,{drawBuffers:"optional"},{},J);const ne=yne(),$=vne();qr.SpheresShaderCode=K("spheres",ne.spheres_vert,$.spheres_frag,{fragDepth:"required",drawBuffers:"optional"},{},Q);const ie=bne(),Z=_ne();qr.CylindersShaderCode=K("cylinders",ie.cylinders_vert,Z.cylinders_frag,{fragDepth:"required",drawBuffers:"optional"},{},Q);const re=Sne(),oe=Cne();qr.TextShaderCode=K("text",re.text_vert,oe.text_frag,{fragDepth:"optional",drawBuffers:"optional"},{},J);const ce=Pne(),ue=Tne();qr.LinesShaderCode=K("lines",ce.lines_vert,ue.lines_frag,{drawBuffers:"optional"},{},J);const pe=xne(),he=Ane();qr.MeshShaderCode=K("mesh",pe.mesh_vert,he.mesh_frag,{drawBuffers:"optional"},{},Q);const fe=Mne(),de=Dne();qr.DirectVolumeShaderCode=K("direct-volume",fe.directVolume_vert,de.directVolume_frag,{fragDepth:"optional",drawBuffers:"optional"},{},Q);const ge=Ine(),Ce=wne();qr.ImageShaderCode=K("image",ge.image_vert,Ce.image_frag,{drawBuffers:"optional"},{},J);function ve(be,xe){var we;if(be===void 0)return"";const Be=((we=be.dRenderVariant)===null||we===void 0?void 0:we.ref.value)||"",Me=[];for(const Re in be){if(xe?.(Re,Be,be))continue;const Ve=be[Re].ref.value;Ve!==void 0&&(typeof Ve=="string"?Me.push(`#define ${Re}_${Ve}`):typeof Ve=="number"?Me.push(`#define ${Re} ${Ve}`):typeof Ve=="boolean"?Ve&&Me.push(`#define ${Re}`):(0,r.assertUnreachable)(Ve))}return Me.join(`
4061`)+`
4062`}function le(be,xe){const we=[];if(xe.drawBuffers){if(be.drawBuffers)we.push("#define requiredDrawBuffers");else if(xe.drawBuffers==="required")throw new Error("required 'GL_EXT_draw_buffers' extension not available")}if(xe.multiDraw){if(be.multiDraw)we.push("#extension GL_ANGLE_multi_draw : require"),we.push("#define enabledMultiDraw");else if(xe.multiDraw==="required")throw new Error("required 'GL_ANGLE_multi_draw' extension not available")}return we.join(`
4063`)+`
4064`}function me(be,xe){const we=["#extension GL_OES_standard_derivatives : enable"];
4064if(xe.fragDepth){if(be.fragDepth)we.push("#extension GL_EXT_frag_depth : enable"),we.push("#define enabledFragDepth");else if(xe.fragDepth==="required")throw new Error("required 'GL_EXT_frag_depth' extension not available")}if(xe.drawBuffers){if(be.drawBuffers)we.push("#extension GL_EXT_draw_buffers : require"),we.push("#define requiredDrawBuffers"),we.push("#define gl_FragColor gl_FragData[0]");else if(xe.drawBuffers==="required")throw new Error("required 'GL_EXT_draw_buffers' extension not available")}if(xe.shaderTextureLod){if(be.shaderTextureLod)we.push("#extension GL_EXT_shader_texture_lod : enable"),we.push("#define enabledShaderTextureLod");else if(xe.shaderTextureLod==="required")throw new Error("required 'GL_EXT_shader_texture_lod' extension not available")}return be.depthTexture&&we.push("#define depthTextureSupport"),we.join(`
4065`)+`
4066`}const ee=`
4067#define attribute in
4068#define varying out
4069#define texture2D texture
4070`,se=`
4071#define varying in
4072#define texture2D texture
4073#define textureCube texture
4074#define texture2DLodEXT textureLod
4075#define textureCubeLodEXT textureLod
4076
4077#define gl_FragColor out_FragData0
4078#define gl_FragDepthEXT gl_FragDepth
4079`;function ye(be,xe){const we=["#version 300 es"];if(xe.drawBuffers&&be.drawBuffers&&we.push("#define requiredDrawBuffers"),xe.multiDraw){if(be.multiDraw)we.push("#extension GL_ANGLE_multi_draw : require"),we.push("#define enabledMultiDraw");else if(xe.multiDraw==="required")throw new Error("required 'GL_ANGLE_multi_draw' extension not available")}if(xe.clipCullDistance){if(be.clipCullDistance)we.push("#extension GL_ANGLE_clip_cull_distance : enable"),we.push("#define enabledClipCullDistance");else if(xe.clipCullDistance==="required")throw new Error("required 'GL_ANGLE_clip_cull_distance' extension not available")}if(xe.conservativeDepth){if(be.conservativeDepth)we.push("#extension GL_EXT_conservative_depth : enable"),we.push("#define enabledConservativeDepth");else if(xe.conservativeDepth==="required")throw new Error("required 'GL_EXT_conservative_depth' extension not available")}if(xe.multiview2){if(be.multiview2)we.push("#extension GL_OVR_multiview2 : require"),we.push("#define enabledMultiview2");else if(xe.multiview2==="required")throw new Error("required 'GL_OVR_multiview2' extension not available")}return be.noNonInstancedActiveAttribs&&we.push("#define noNonInstancedActiveAttribs"),we.push(ee),we.join(`
4080`)+`
4081`}function Se(be,xe,we,Be){const Me=["#version 300 es",`layout(location = 0) out highp ${Be[0]||"vec4"} out_FragData0;`];if(we.fragDepth&&be.fragDepth&&Me.push("#define enabledFragDepth"),we.drawBuffers&&be.drawBuffers){Me.push("#define requiredDrawBuffers");for(let Re=1,Te=xe.maxDrawBuffers;Re<Te;++Re)Me.push(`layout(location = ${Re}) out highp ${Be[Re]||"vec4"} out_FragData${Re};`)}return we.shaderTextureLod&&be.shaderTextureLod&&Me.push("#define enabledShaderTextureLod"),be.depthTexture&&Me.push("#define depthTextureSupport"),Me.push(se),Me.join(`
4082`)+`
4083`}function Ae(be){return be.replace(/gl_FragData\[([0-9]+)\]/g,"out_FragData$1")}function _e(be,xe,we,Be,Me){const Re=ve(Be,Me.ignoreDefine),Te=ve(Be,Me.ignoreDefine),Ve=(0,t.isWebGL2)(be)?ye(xe,Me.extensions):le(xe,Me.extensions),qe=(0,t.isWebGL2)(be)?Se(xe,we,Me.extensions,Me.outTypes):me(xe,Me.extensions),ke=(0,t.isWebGL2)(be)?Ae(Me.frag):Me.frag;return{id:n(),name:Me.name,vert:`${Ve}${Re}${Y(Me.vert,Be)}`,frag:`${qe}${Te}${Y(ke,Be)}`,extensions:Me.extensions,outTypes:Me.outTypes}}return qr}var Uo={},sU;function sQ(){if(sU)return Uo;sU=1,Object.defineProperty(Uo,"__esModule",{value:!0}),Uo.getUniformType=r,Uo.isArrayUniform=n,Uo.getUniformSetters=m,Uo.getUniformGlslType=v,Uo.isUniformValueScalar=b,Uo.cloneUniformValues=P;const e=et(),t=vr();function r(C,l){switch(l){case"b":case"b[]":return C.BOOL;case"f":case"f[]":return C.FLOAT;case"i":case"i[]":return C.INT;case"v2":case"v2[]":return C.FLOAT_VEC2;case"v3":case"v3[]":return C.FLOAT_VEC3;case"v4":case"v4[]":return C.FLOAT_VEC4;case"q":case"q[]":return C.FLOAT_VEC4;case"iv2":case"iv2[]":return C.INT_VEC2;
4083case"iv3":case"iv3[]":return C.INT_VEC3;case"iv4":case"iv4[]":return C.INT_VEC4;case"m3":case"m3[]":return C.FLOAT_MAT3;case"m4":case"m4[]":return C.FLOAT_MAT4;default:console.error(`unknown uniform kind '${l}'`)}}function n(C){return C.endsWith("[]")}function i(C,l,S){C.uniform1f(l,S)}function c(C,l,S){C.uniform1fv(l,S)}function o(C,l,S){C.uniform1i(l,S)}function s(C,l,S){C.uniform1iv(l,S)}function h(C,l,S){C.uniform2fv(l,S)}function f(C,l,S){C.uniform3fv(l,S)}function y(C,l,S){C.uniform4fv(l,S)}function _(C,l,S){C.uniform2iv(l,S)}function g(C,l,S){C.uniform3iv(l,S)}function a(C,l,S){C.uniform4iv(l,S)}function d(C,l,S){C.uniformMatrix3fv(l,!1,S)}function p(C,l,S){C.uniformMatrix4fv(l,!1,S)}function u(C){switch(C){case"f":return i;case"f[]":return c;case"i":case"t":case"b":return o;case"i[]":case"t[]":case"b[]":return s;case"v2":case"v2[]":return h;case"v3":case"v3[]":return f;case"v4":case"v4[]":return y;case"q":case"q[]":return y;case"iv2":case"iv2[]":return _;case"iv3":case"iv3[]":return g;case"iv4":case"iv4[]":return a;case"m3":case"m3[]":return d;case"m4":case"m4[]":return p}}function m(C){const l={};return Object.keys(C).forEach(S=>{const T=C[S];T.type==="uniform"?l[S]=u(T.kind):T.type==="texture"&&(l[S]=u("t"))}),l}function v(C){switch(C){case"f":return"float";case"i":return"int";case"t":return"sampler2D";case"b":return"bool";case"v2":return"vec2";case"v3":return"vec3";case"v4":return"vec4";case"q":return"vec4";case"m3":return"mat3";case"m4":return"mat4"}throw new Error(`${C} has no primitive GLSL type.`)}function b(C){switch(C){case"f":case"i":case"b":return!0;default:return!1}}function P(C){const l={};return Object.keys(C).forEach(S=>{l[S]=e.ValueCell.create((0,t.deepClone)(C[S].ref.value))}),l}return Uo}var Li={},gn={},cU;function bn(){if(cU)return gn;cU=1,Object.defineProperty(gn,"__esModule",{value:!0}),gn.getTarget=s,gn.getFormat=h,gn.getInternalFormat=f,gn.getBytesPerElement=_,gn.getType=d,gn.getFilter=p,gn.getAttachment=u,gn.createTexture=C,gn.createTextures=l,gn.loadImageTexture=S,gn.getCubeTarget=T,gn.createCubeTexture=A,gn.isNullTexture=M,gn.createNullTexture=D;const e=et(),t=Yn(),r=on(),n=Gt(),i=vr(),c=er(),o=(0,t.idFactory)();function s(V,R){switch(R){case"image-uint8":return V.TEXTURE_2D;case"image-float32":return V.TEXTURE_2D;case"image-float16":return V.TEXTURE_2D;case"image-depth":return V.TEXTURE_2D}if((0,r.isWebGL2)(V))switch(R){case"image-int32":return V.TEXTURE_2D;case"volume-uint8":return V.TEXTURE_3D;case"volume-float32":return V.TEXTURE_3D;case"volume-float16":return V.TEXTURE_3D}throw new Error(`unknown texture kind '${R}'`)}function h(V,R,E){switch(R){case"alpha":return(0,r.isWebGL2)(V)&&(E==="float"||E==="fp16")?V.RED:(0,r.isWebGL2)(V)&&E==="int"?V.RED_INTEGER:V.ALPHA;case"rgb":return(0,r.isWebGL2)(V)&&E==="int"?V.RGB_INTEGER:V.RGB;case"rg":if((0,r.isWebGL2)(V)&&(E==="float"||E==="fp16"))return V.RG;if((0,r.isWebGL2)(V)&&E==="int")return V.RG_INTEGER;throw new Error('texture format "rg" requires webgl2 and type "float" or int"');case"rgba":return(0,r.isWebGL2)(V)&&E==="int"?V.RGBA_INTEGER:V.RGBA;case"depth":return V.DEPTH_COMPONENT}}function f(V,R,E){if((0,r.isWebGL2)(V))switch(R){case"alpha":switch(E){case"ubyte":return V.ALPHA;case"float":return V.R32F;case"fp16":return V.R16F;case"int":return V.R32I}case"rg":switch(E){case"ubyte":return V.RG;case"float":return V.RG32F;case"fp16":return V.RG16F;case"int":return V.RG32I}case"rgb":switch(E){case"ubyte":return V.RGB;case"float":return V.RGB32F;case"fp16":return V.RGB16F;case"int":return V.RGB32I}case"rgba":switch(E){case"ubyte":return V.RGBA;case"float":return V.RGBA32F;case"fp16":return V.RGBA16F;case"int":return V.RGBA32I}case"depth":switch(E){case"ushort":return V.DEPTH_COMPONENT16;case"float":return V.DEPTH_COMPONENT32F}}return h(V,R,E)}function y(V,R,E,I,B){return _(V,R)*E*I*(B||1)}function _(V,R){return g(V)*a(R)}function g(V){switch(V){case"alpha":return 1;case"rg":return 2;case"rgb":return 3;case"rgba":return 4;case"depth":return 4}}function a(V){switch(V){case"ubyte":return 1;case"ushort":return 2;case"float":return 4;case"fp16":return 2;case"int":return 4}}function d(V,R,E){switch(E){case"ubyte":return V.UNSIGNED_BYTE;case"ushort":return V.UNSIGNED_SHORT;case"float":return V.FLOAT;case"fp16":if(R.textureHalfFloat)return R.textureHalfFloat.HALF_FLOAT;throw new Error('extension "texture_half_float" unavailable');case"int":if((0,r.isWebGL2)(V))return V.INT;throw new Error('texture type "int" requires webgl2')}}function p(V,R){switch(R){case"nearest":return V.NEAREST;case"linear":return V.LINEAR}}function u(V,R,E){switch(E){case"depth":return V.DEPTH_ATTACHMENT;case"stencil":return V.STENCIL_ATTACHMENT;case"color0":case 0:return V.COLOR_ATTACHMENT0}if(R.drawBuffers)switch(E){case"color1":case 1:return R.drawBuffers.COLOR_ATTACHMENT1;case"color2":case 2:return R.drawBuffers.COLOR_ATTACHMENT2;case"color3":case 3:return R.drawBuffers.COLOR_ATTACHMENT3;case"color4":case 4:return R.drawBuffers.COLOR_ATTACHMENT4;case"color5":case 5:return R.drawBuffers.COLOR_ATTACHMENT5;case"color6":case 6:return R.drawBuffers.COLOR_ATTACHMENT6;case"color7":case 7:return R.drawBuffers.COLOR_ATTACHMENT7}throw new Error("unknown texture attachment")}function m(V){return typeof HTMLImageElement<"u"&&V instanceof HTMLImageElement}function v(V,R,E){return R===E.TEXTURE_2D}function b(V,R,E){return R===E.TEXTURE_3D}function P(V){const R=V.createTexture();if(R===null)throw new Error("Could not create WebGL texture");return R}function C(V,R,E,I,B,w){const O=o();let F=P(V);if(E.endsWith("float32")&&B!=="float"||E.endsWith("float16")&&B!=="fp16"||E.endsWith("uint8")&&B!=="ubyte"||E.endsWith("int32")&&B!=="int"||E.endsWith("depth")&&B!=="ushort"&&B!=="float")throw new Error(`texture kind '${E}' and type '${B}' are incompatible`);
4083if(!R.depthTexture&&I==="depth")throw new Error("extension 'WEBGL_depth_texture' needed for 'depth' texture format");const L=s(V,E),U=p(V,w),q=h(V,I,B),N=f(V,I,B),k=d(V,R,B);function j(){V.bindTexture(L,F),V.texParameteri(L,V.TEXTURE_MAG_FILTER,U),V.texParameteri(L,V.TEXTURE_MIN_FILTER,U),V.texParameteri(L,V.TEXTURE_WRAP_S,V.CLAMP_TO_EDGE),V.texParameteri(L,V.TEXTURE_WRAP_T,V.CLAMP_TO_EDGE),V.bindTexture(L,null)}j();let H=0,G=0,z=0,W,X=!1,Y=!1;function K(te,ne,$){if(te===0||ne===0||(0,r.isWebGL2)(V)&&L===V.TEXTURE_3D&&$===0)throw new Error("empty textures are not allowed");if(!(H===te&&G===ne&&z===($||0)))if(H=te,G=ne,z=$||0,V.bindTexture(L,F),L===V.TEXTURE_2D)V.texImage2D(L,0,N,H,G,0,q,k,null);else if((0,r.isWebGL2)(V)&&L===V.TEXTURE_3D&&z!==void 0)V.texImage3D(L,0,N,H,G,z,0,q,k,null);else throw new Error("unknown texture target")}K(1,1,(0,r.isWebGL2)(V)&&L===V.TEXTURE_3D?1:0);function Q(te,ne=!1){if(te.width===0||te.height===0||!m(te)&&(0,r.isWebGL2)(V)&&b(te,L,V)&&te.depth===0)throw new Error("empty textures are not allowed");if(V.bindTexture(L,F),V.pixelStorei(V.UNPACK_ALIGNMENT,1),V.pixelStorei(V.UNPACK_COLORSPACE_CONVERSION_WEBGL,V.NONE),V.pixelStorei(V.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),m(te))H=te.width,G=te.height,V.pixelStorei(V.UNPACK_FLIP_Y_WEBGL,!1),V.bindTexture(V.TEXTURE_2D,F),V.texImage2D(V.TEXTURE_2D,0,N,q,k,te);else if(v(te,L,V)){const $=te.filter?p(V,te.filter):U;V.texParameteri(L,V.TEXTURE_MAG_FILTER,$),V.texParameteri(L,V.TEXTURE_MIN_FILTER,$),V.pixelStorei(V.UNPACK_FLIP_Y_WEBGL,!!te.flipY),ne?V.texSubImage2D(L,0,0,0,te.width,te.height,q,k,te.array):(H=te.width,G=te.height,V.texImage2D(L,0,N,H,G,0,q,k,te.array))}else if((0,r.isWebGL2)(V)&&b(te,L,V))V.pixelStorei(V.UNPACK_FLIP_Y_WEBGL,!1),ne?V.texSubImage3D(L,0,0,0,0,te.width,te.height,te.depth,q,k,te.array):(H=te.width,G=te.height,z=te.depth,V.texImage3D(L,0,N,H,G,z,0,q,k,te.array));else throw new Error("unknown texture target");V.bindTexture(L,null),W=te}function J(){if(L!==V.TEXTURE_2D)throw new Error("mipmap only supported for 2d textures");if((0,r.isWebGL2)(V)||(0,c.isPowerOfTwo)(H)&&(0,c.isPowerOfTwo)(G))V.bindTexture(L,F),V.texParameteri(L,V.TEXTURE_MIN_FILTER,V.LINEAR_MIPMAP_LINEAR),V.generateMipmap(L),V.bindTexture(L,null),X=!0;else throw new Error("mipmap unsupported for non-power-of-two textures and webgl1")}function ae(te,ne,$){if(te.bind(),L===V.TEXTURE_2D)V.framebufferTexture2D(V.FRAMEBUFFER,u(V,R,ne),V.TEXTURE_2D,F,0);else if((0,r.isWebGL2)(V)&&L===V.TEXTURE_3D){if($===void 0)throw new Error("need `layer` to attach 3D texture");V.framebufferTextureLayer(V.FRAMEBUFFER,u(V,R,ne),F,0,$)}else throw new Error("unknown/unsupported texture target")}return{id:O,target:L,format:q,internalFormat:N,type:k,filter:U,getWidth:()=>H,getHeight:()=>G,getDepth:()=>z,getByteCount:()=>y(I,B,H,G,z),define:K,load:Q,mipmap:J,bind:te=>{V.activeTexture(V.TEXTURE0+te),V.bindTexture(L,F)},unbind:te=>{V.activeTexture(V.TEXTURE0+te),V.bindTexture(L,null)},attachFramebuffer:ae,detachFramebuffer:(te,ne)=>{if(te.bind(),L===V.TEXTURE_2D)V.framebufferTexture2D(V.FRAMEBUFFER,u(V,R,ne),V.TEXTURE_2D,null,0);else if((0,r.isWebGL2)(V)&&L===V.TEXTURE_3D)V.framebufferTextureLayer(V.FRAMEBUFFER,u(V,R,ne),null,0,0);else throw new Error("unknown texture target")},reset:()=>{F=P(V),j();const[te,ne,$]=[H,G,z];H=0,G=0,z=0,K(te,ne,$),W&&Q(W),X&&J()},destroy:()=>{Y||(V.deleteTexture(F),Y=!0)}}}function l(V,R,E){const{resources:I}=V,B=[];return Object.keys(R).forEach(w=>{const O=R[w];if(O.type==="texture"){const F=E[w];if(F)if(O.kind==="texture")B[B.length]=[w,F.ref.value];else{const L=I.texture(O.kind,O.format,O.dataType,O.filter);L.load(F.ref.value),B[B.length]=[w,L]}}}),B}function S(V,R,E){const I=new Image;I.onload=function(){E.load(I),e.ValueCell.update(R,E)},I.src=V}function T(V,R){switch(R){case"nx":return V.TEXTURE_CUBE_MAP_NEGATIVE_X;case"ny":return V.TEXTURE_CUBE_MAP_NEGATIVE_Y;case"nz":return V.TEXTURE_CUBE_MAP_NEGATIVE_Z;case"px":return V.TEXTURE_CUBE_MAP_POSITIVE_X;case"py":return V.TEXTURE_CUBE_MAP_POSITIVE_Y;case"pz":return V.TEXTURE_CUBE_MAP_POSITIVE_Z}}function A(V,R,E,I){const B=V.TEXTURE_CUBE_MAP,w=V.LINEAR,O=V.RGBA,F=V.RGBA,L=V.UNSIGNED_BYTE;let U=0,q=V.createTexture();V.bindTexture(B,q);function N(G,z,W,X){U===0&&(U=W.width),V.bindTexture(B,q),V.texImage2D(G,z,O,U,U,0,F,L,null),V.pixelStorei(V.UNPACK_ALIGNMENT,4),
4083V.pixelStorei(V.UNPACK_COLORSPACE_CONVERSION_WEBGL,V.NONE),V.pixelStorei(V.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),V.pixelStorei(V.UNPACK_FLIP_Y_WEBGL,!1),V.bindTexture(B,q),V.texImage2D(G,z,O,F,L,W),j+=1,j===6&&(H||(E?(V.texParameteri(B,V.TEXTURE_MIN_FILTER,V.LINEAR_MIPMAP_LINEAR),V.generateMipmap(B)):V.texParameteri(B,V.TEXTURE_MIN_FILTER,w),V.texParameteri(B,V.TEXTURE_MAG_FILTER,w)),X||I?.(H))}const k=[];let j=0;(0,i.objectForEach)(R,(G,z)=>{if(!G)return;const W=0,X=T(V,z),Y=new Image;G instanceof File?Y.src=URL.createObjectURL(G):(0,n.isPromiseLike)(G)?G.then(K=>{Y.src=URL.createObjectURL(K)}):Y.src=G,k.push({cubeTarget:X,level:W,image:Y}),Y.addEventListener("load",()=>{N(X,W,Y,!1)}),Y.addEventListener("error",()=>{I?.(!0)})});let H=!1;return{id:o(),target:B,format:F,internalFormat:O,type:L,filter:w,getWidth:()=>U,getHeight:()=>U,getDepth:()=>0,getByteCount:()=>y("rgba","ubyte",U,U,0)*6*(E?2:1),define:()=>{},load:()=>{},mipmap:()=>{},bind:G=>{V.activeTexture(V.TEXTURE0+G),V.bindTexture(B,q)},unbind:G=>{V.activeTexture(V.TEXTURE0+G),V.bindTexture(B,null)},attachFramebuffer:()=>{},detachFramebuffer:()=>{},reset:()=>{q=P(V),V.bindTexture(B,q),j=0;for(const{cubeTarget:G,level:z,image:W}of k)N(G,z,W,!0)},destroy:()=>{H||(V.deleteTexture(q),H=!0)}}}const x=-1;function M(V){return V.format===x}function D(V){var R;const E=(R=V?.TEXTURE_2D)!==null&&R!==void 0?R:3553;return{id:o(),target:E,format:x,internalFormat:0,type:0,filter:0,getWidth:()=>0,getHeight:()=>0,getDepth:()=>0,getByteCount:()=>0,define:()=>{},load:()=>{},mipmap:()=>{},bind:I=>{V&&(V.activeTexture(V.TEXTURE0+I),V.bindTexture(E,null))},unbind:I=>{V&&(V.activeTexture(V.TEXTURE0+I),V.bindTexture(E,null))},attachFramebuffer:()=>{throw new Error("cannot attach null-texture to a framebuffer")},detachFramebuffer:()=>{throw new Error("cannot detach null-texture from a framebuffer")},reset:()=>{},destroy:()=>{}}}return gn}var uU;function _w(){if(uU)return Li;uU=1,Object.defineProperty(Li,"__esModule",{value:!0}),Li.getUsageHint=c,Li.getDataType=o,Li.getBufferType=h,Li.getBuffer=f,Li.getAttribType=_,Li.createAttributeBuffer=g,Li.createAttributeBuffers=a,Li.createElementsBuffer=d,Li.createPixelPackBuffer=p;const e=Yn(),t=Gt(),r=on(),n=bn(),i=(0,e.idFactory)();function c(u,m){switch(m){case"static":return u.STATIC_DRAW;case"dynamic":return u.DYNAMIC_DRAW;case"stream":return u.STREAM_DRAW;default:(0,t.assertUnreachable)(m)}}function o(u,m){switch(m){case"uint8":return u.UNSIGNED_BYTE;case"int8":return u.BYTE;case"uint16":return u.UNSIGNED_SHORT;case"int16":return u.SHORT;case"uint32":return u.UNSIGNED_INT;case"int32":return u.INT;case"float32":return u.FLOAT;default:(0,t.assertUnreachable)(m)}}function s(u,m){if(m instanceof Uint8Array)return u.UNSIGNED_BYTE;if(m instanceof Int8Array)return u.BYTE;if(m instanceof Uint16Array)return u.UNSIGNED_SHORT;if(m instanceof Int16Array)return u.SHORT;if(m instanceof Uint32Array)return u.UNSIGNED_INT;if(m instanceof Int32Array)return u.INT;if(m instanceof Float32Array)return u.FLOAT;(0,t.assertUnreachable)(m)}function h(u,m){switch(m){case"attribute":return u.ARRAY_BUFFER;case"elements":return u.ELEMENT_ARRAY_BUFFER;case"uniform":if((0,r.isWebGL2)(u))return u.UNIFORM_BUFFER;throw new Error("WebGL2 is required for uniform buffers");case"pixel-pack":if((0,r.isWebGL2)(u))return u.PIXEL_PACK_BUFFER;throw new Error("WebGL2 is required for pixel-pack buffers")}}function f(u){const m=u.createBuffer();if(m===null)throw new Error("Could not create WebGL buffer");return m}function y(u,m,v,b){let P=f(u);const C=c(u,v),l=h(u,b),S=s(u,m),T=m.BYTES_PER_ELEMENT,A=m.length;function x(D){u.bindBuffer(l,P),u.bufferData(l,D,C)}x(m);let M=!1;return{id:i(),_usageHint:C,_bufferType:l,_dataType:S,_bpe:T,length:A,getByteCount:()=>T*A,getBuffer:()=>P,updateData:x,updateSubData:(D,V,R)=>{u.bindBuffer(l,P),R-V===D.length?u.bufferSubData(l,0,D):u.bufferSubData(l,V*T,D.subarray(V,V+R))},reset:()=>{P=f(u),x(m)},destroy:()=>{M||(u.deleteBuffer(P),M=!0)}}}function _(u,m,v){switch(m){case"float32":switch(v){case 1:return u.FLOAT;case 2:return u.FLOAT_VEC2;case 3:return u.FLOAT_VEC3;case 4:return u.FLOAT_VEC4;case 16:return u.FLOAT_MAT4}default:(0,t.assertUnreachable)(m)}}function g(u,m,v,b,P,C,l="static"){const{instancedArrays:S}=v,T=y(u,b,l,"attribute"),{_bufferType:A,_dataType:x,_bpe:M}=T;return{...T,divisor:C,bind:D=>{if(u.bindBuffer(A,T.getBuffer()),P===16)for(let V=0;V<4;++V)m.enableVertexAttrib(D+V),u.vertexAttribPointer(D+V,4,x,!1,16*M,V*4*M),S.vertexAttribDivisor(D+V,C);else m.enableVertexAttrib(D),u.vertexAttribPointer(D,P,x,!1,0,0),S.vertexAttribDivisor(D,C)},changeOffset:(D,V)=>{const R=V*M*P;if(u.bindBuffer(A,T.getBuffer()),P===16)for(let E=0;E<4;++E)u.vertexAttribPointer(D+E,4,x,!1,16*M,E*4*M+R);else u.vertexAttribPointer(D,P,x,!1,0,R)}}}function a(u,m,v){const b=[];return Object.keys(m).forEach(P=>{const C=m[P];C.type==="attribute"&&(b[b.length]=[P,u.resources.attribute(v[P].ref.value,C.itemSize,C.divisor)])}),b}function d(u,m,v="static"){const b=y(u,m,v,"elements");return{...b,bind:()=>{u.bindBuffer(u.ELEMENT_ARRAY_BUFFER,b.getBuffer())}}}function p(u,m,v,b){let P=f(u);const C=(0,n.getType)(u,m,b),l=(0,n.getFormat)(u,v,b),S=(0,n.getBytesPerElement)(v,b);let T=0,A=0;function x(V,R,E,I){T=E,A=I,u.bindBuffer(u.PIXEL_PACK_BUFFER,P),u.bufferData(u.PIXEL_PACK_BUFFER,E*I*S,u.STREAM_READ),u.readPixels(V,R,E,I,l,C,0),u.bindBuffer(u.PIXEL_PACK_BUFFER,null)}function M(V){u.bindBuffer(u.PIXEL_PACK_BUFFER,P),u.getBufferSubData(u.PIXEL_PACK_BUFFER,0,V),u.bindBuffer(u.PIXEL_PACK_BUFFER,null)}let D=!1;return{id:i(),_type:C,_format:l,_bpe:S,getByteCount:()=>S*T*A,read:x,getSubData:M,reset:()=>{P=f(u)},destroy:()=>{D||(u.deleteBuffer(P),D=!0)}}}return Li}
4083var lU;function cQ(){if(lU)return ay;lU=1,Object.defineProperty(ay,"__esModule",{value:!0}),ay.getProgram=_,ay.createProgram=a;const e=Kt(),t=sQ(),r=_w(),n=Yn(),i=Ct(),c=on(),o=(0,n.idFactory)();function s(d,p,u){const m={};return Object.keys(u).forEach(v=>{const b=u[v];if(b.type==="attribute"){const P=d.getAttribLocation(p,v);m[v]=P}else if(b.type==="uniform"){let P=d.getUniformLocation(p,v);P===null&&(0,t.isArrayUniform)(b.kind)&&(P=d.getUniformLocation(p,v+"[0]")),m[v]=P}else if(b.type==="texture"){const P=d.getUniformLocation(p,v);m[v]=P}}),m}function h(d,p,u){const m=d.getProgramParameter(p,d.ACTIVE_ATTRIBUTES);for(let v=0;v<m;++v){const b=d.getActiveAttrib(p,v);if(b){const{name:P,type:C}=b;if(P.startsWith("__activeAttribute")||P==="gl_InstanceID"||P==="gl_VertexID"||P==="gl_DrawID"||P==="gl_ViewID_OVR")continue;const l=u[P];if(l===void 0)throw new Error(`missing 'uniform' or 'texture' with name '${P}' in schema`);if(l.type!=="attribute")throw new Error(`'${P}' must be of type 'attribute' but is '${l.type}'`);const S=(0,r.getAttribType)(d,l.kind,l.itemSize);if(S!==C)throw new Error(`unexpected attribute type '${S}' for ${P}, expected '${C}'`)}}}function f(d,p,u){const m=d.getProgramParameter(p,d.ACTIVE_UNIFORMS);for(let v=0;v<m;++v){const b=d.getActiveUniform(p,v);if(b){const{name:P,type:C}=b;if(P.startsWith("__activeUniform")||P==="gl_InstanceID"||P==="gl_VertexID"||P==="gl_DrawID"||P==="gl_ViewID_OVR")continue;const l=P.replace(/[[0-9]+\]$/,""),S=u[l];if(S===void 0)throw new Error(`missing 'uniform' or 'texture' with name '${P}' in schema`);if(S.type==="uniform"){if((0,t.getUniformType)(d,S.kind)!==C)throw new Error(`unexpected uniform type for ${P}`)}else if(S.type==="texture"){if(S.kind==="image-float32"||S.kind==="image-uint8"){if(C!==d.SAMPLER_2D)throw new Error(`unexpected sampler type for '${P}'`)}else if(S.kind==="volume-float32"||S.kind==="volume-uint8")if((0,c.isWebGL2)(d)){if(C!==d.SAMPLER_3D)throw new Error(`unexpected sampler type for '${P}'`)}else throw new Error("WebGL2 is required to use SAMPLER_3D")}else throw new Error(`'${P}' must be of type 'uniform' or 'texture' but is '${S.type}'`)}}}function y(d,p){if(!d.getProgramParameter(p,d.LINK_STATUS))throw new Error(`Could not compile WebGL program. 
4084
4085${d.getProgramInfoLog(p)}`)}function _(d){const p=d.createProgram();if(p===null)throw new Error("Could not create WebGL program");return p}function g(d){if(typeof d!="string")throw new Error(`unknown program variant: ${d}`);return d.startsWith("color")?"color":d.startsWith("pick")?"pick":d}function a(d,p,u,m,v,b){const{defineValues:P,shaderCode:C,schema:l}=b;let S=_(d);const T=o(),A=g(P.dRenderVariant.ref.value),x=(0,e.addShaderDefines)(d,u,m,P,C),M=v("vert",x.vert),D=v("frag",x.frag);let V,R,E=!1,I=!1,B=!1;function w(){M.attach(S),D.attach(S),d.linkProgram(S),i.isDebugMode&&y(d,S),E=!0}A==="compute"&&w();function O(){V=s(d,S,l),R=(0,t.getUniformSetters)(l),i.isDebugMode&&(h(d,S,l),f(d,S,l)),I=!0}return{id:T,variant:A,isReady:()=>I,link:()=>{E||w()},finalize(F){return E||w(),!I&&(F||!u.parallelShaderCompile||d.getProgramParameter(S,u.parallelShaderCompile.COMPLETION_STATUS))&&O(),I},use:()=>{if(i.isDebugMode&&!I)throw new Error(`program not finalized: ${A}`);p.currentProgramId=T,d.useProgram(S)},setUniforms:F=>{for(let L=0,U=F.length;L<U;++L){const[q,N]=F[L];if(N){const k=V[q];k!==null&&R[q](d,k,N.ref.value)}}},uniform:(F,L)=>{const U=V[F];U!==null&&R[F](d,U,L)},bindAttributes:F=>{p.clearVertexAttribsState();for(let L=0,U=F.length;L<U;++L){const[q,N]=F[L],k=V[q];k!==-1&&N.bind(k)}p.disableUnusedVertexAttribs()},offsetAttributes:(F,L)=>{for(let U=0,q=F.length;U<q;++U){const[N,k]=F[U],j=V[N];j!==-1&&k.changeOffset(j,L)}},bindTextures:(F,L)=>{for(let U=0,q=F.length;U<q;++U){const[N,k]=F[U],j=V[N];j!=null&&(k.bind(U+L),R[N](d,j,U+L))}},reset:()=>{S=_(d),E&&w(),I&&O()},destroy:()=>{B||(M.destroy(),D.destroy(),d.deleteProgram(S),B=!0)}}}return ay}var r1={},dU;function uQ(){if(dU)return r1;dU=1,Object.defineProperty(r1,"__esModule",{value:!0}),r1.getShader=i,r1.createShader=c;const e=Yn(),t=Ct(),r=(0,e.idFactory)();function n(o){const s=o.split(`
4086`);for(let h=0;h<s.length;++h)s[h]=h+1+": "+s[h];return s.join(`
4087`)}function i(o,s){const{type:h,source:f}=s,y=o.createShader(h==="vert"?o.VERTEX_SHADER:o.FRAGMENT_SHADER);if(y===null)throw new Error(`Error creating ${h} shader`);if(o.shaderSource(y,f),o.compileShader(y),t.isDebugMode&&o.getShaderParameter(y,o.COMPILE_STATUS)===!1)throw console.warn(`'${h}' shader info log '${o.getShaderInfoLog(y)}'
4088${n(f)}
4088`),new Error(`Error compiling ${h} shader`);return y}function c(o,s){let h=i(o,s);return{id:r(),attach:f=>{o.attachShader(f,h)},reset:()=>{h=i(o,s)},destroy:()=>{o.deleteShader(h)}}}return r1}var fU;function on(){if(fU)return qt;fU=1,Object.defineProperty(qt,"__esModule",{value:!0}),qt.isWebGL=i,qt.isWebGL2=c,qt.getInstancedArrays=o,qt.getStandardDerivatives=s,qt.getElementIndexUint=h,qt.getVertexArrayObject=f,qt.getTextureFloat=y,qt.getTextureFloatLinear=_,qt.getTextureHalfFloat=g,qt.getTextureHalfFloatLinear=a,qt.getBlendMinMax=d,qt.getFragDepth=p,qt.getColorBufferFloat=u,qt.getColorBufferHalfFloat=m,qt.getDrawBuffers=v,qt.getDrawBuffersIndexed=b,qt.getShaderTextureLod=P,qt.getDepthTexture=C,qt.getSRGB=l,qt.getDisjointTimerQuery=S,qt.getMultiDraw=T,qt.getDrawInstancedBaseVertexBaseInstance=A,qt.getMultiDrawInstancedBaseVertexBaseInstance=x,qt.getParallelShaderCompile=M,qt.getFboRenderMipmap=D,qt.getProvokingVertex=V,qt.getClipCullDistance=R,qt.getConservativeDepth=E,qt.getStencilTexturing=I,qt.getClipControl=B,qt.getRenderSnorm=w,qt.getRenderSharedExponent=O,qt.getTextureNorm16=F,qt.getDepthClamp=L,qt.getMultiview2=U,qt.getNoNonInstancedActiveAttribs=q,qt.testColorBuffer=H;const e=Ct(),t=lQ(),r=cQ(),n=uQ();function i(G){return typeof WebGLRenderingContext<"u"&&G instanceof WebGLRenderingContext}function c(G){return typeof WebGL2RenderingContext<"u"&&G instanceof WebGL2RenderingContext}function o(G){if(c(G))return{drawArraysInstanced:G.drawArraysInstanced.bind(G),drawElementsInstanced:G.drawElementsInstanced.bind(G),vertexAttribDivisor:G.vertexAttribDivisor.bind(G),VERTEX_ATTRIB_ARRAY_DIVISOR:G.VERTEX_ATTRIB_ARRAY_DIVISOR};{const z=G.getExtension("ANGLE_instanced_arrays");return z===null?null:{drawArraysInstanced:z.drawArraysInstancedANGLE.bind(z),drawElementsInstanced:z.drawElementsInstancedANGLE.bind(z),vertexAttribDivisor:z.vertexAttribDivisorANGLE.bind(z),VERTEX_ATTRIB_ARRAY_DIVISOR:z.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE}}}function s(G){if(c(G))return{FRAGMENT_SHADER_DERIVATIVE_HINT:G.FRAGMENT_SHADER_DERIVATIVE_HINT};{const z=G.getExtension("OES_standard_derivatives");return z===null?null:{FRAGMENT_SHADER_DERIVATIVE_HINT:z.FRAGMENT_SHADER_DERIVATIVE_HINT_OES}}}function h(G){return c(G)?{}:G.getExtension("OES_element_index_uint")}function f(G){if(c(G))return{VERTEX_ARRAY_BINDING:G.VERTEX_ARRAY_BINDING,bindVertexArray:G.bindVertexArray.bind(G),createVertexArray:G.createVertexArray.bind(G),deleteVertexArray:G.deleteVertexArray.bind(G),isVertexArray:G.isVertexArray.bind(G)};{const z=G.getExtension("OES_vertex_array_object");return z===null?null:{VERTEX_ARRAY_BINDING:z.VERTEX_ARRAY_BINDING_OES,bindVertexArray:z.bindVertexArrayOES.bind(z),createVertexArray:z.createVertexArrayOES.bind(z),deleteVertexArray:z.deleteVertexArrayOES.bind(z),isVertexArray:z.isVertexArrayOES.bind(z)}}}function y(G){return c(G)?{}:G.getExtension("OES_texture_float")}function _(G){return G.getExtension("OES_texture_float_linear")}function g(G){if(c(G))return{HALF_FLOAT:G.HALF_FLOAT};{const z=G.getExtension("OES_texture_half_float");return z===null?null:{HALF_FLOAT:z.HALF_FLOAT_OES}}}function a(G){return G.getExtension("OES_texture_half_float_linear")}function d(G){if(c(G))return{MIN:G.MIN,MAX:G.MAX};{const z=G.getExtension("EXT_blend_minmax");return z===null?null:{MIN:z.MIN_EXT,MAX:z.MAX_EXT}}}function p(G){return c(G)?{}:G.getExtension("EXT_frag_depth")}function u(G){if(c(G))return G.getExtension("EXT_color_buffer_float")===null?null:(G.getExtension("EXT_float_blend"),{RGBA32F:G.RGBA32F});{const z=G.getExtension("WEBGL_color_buffer_float");return z===null?(G.getExtension("OES_texture_float"),H(G,G.FLOAT)?{RGBA32F:34836}:null):(G.getExtension("EXT_float_blend"),{RGBA32F:z.RGBA32F_EXT})}}function m(G){if(c(G))return G.getExtension("EXT_color_buffer_half_float")===null?null:(G.getExtension("EXT_float_blend"),{RGBA16F:G.RGBA16F});{const z=G.getExtension("EXT_color_buffer_half_float");return z===null?(G.getExtension("OES_texture_half_float"),H(G,36193)?{RGBA16F:34842}:null):(G.getExtension("EXT_float_blend"),{RGBA16F:z.RGBA16F_EXT})}}function v(G){if(c(G))return{drawBuffers:G.drawBuffers.bind(G),COLOR_ATTACHMENT0:G.COLOR_ATTACHMENT0,COLOR_ATTACHMENT1:G.COLOR_ATTACHMENT1,COLOR_ATTACHMENT2:G.COLOR_ATTACHMENT2,COLOR_ATTACHMENT3:G.COLOR_ATTACHMENT3,COLOR_ATTACHMENT4:G.COLOR_ATTACHMENT4,COLOR_ATTACHMENT5:G.COLOR_ATTACHMENT5,COLOR_ATTACHMENT6:G.COLOR_ATTACHMENT6,COLOR_ATTACHMENT7:G.COLOR_ATTACHMENT7,DRAW_BUFFER0:G.DRAW_BUFFER0,DRAW_BUFFER1:G.DRAW_BUFFER1,DRAW_BUFFER2:G.DRAW_BUFFER2,DRAW_BUFFER3:G.DRAW_BUFFER3,DRAW_BUFFER4:G.DRAW_BUFFER4,DRAW_BUFFER5:G.DRAW_BUFFER5,DRAW_BUFFER6:G.DRAW_BUFFER6,DRAW_BUFFER7:G.DRAW_BUFFER7,MAX_COLOR_ATTACHMENTS:G.MAX_COLOR_ATTACHMENTS,MAX_DRAW_BUFFERS:G.MAX_DRAW_BUFFERS};{const z=G.getExtension("WEBGL_draw_buffers");return z===null?null:{drawBuffers:z.drawBuffersWEBGL.bind(z),COLOR_ATTACHMENT0:z.COLOR_ATTACHMENT0_WEBGL,COLOR_ATTACHMENT1:z.COLOR_ATTACHMENT1_WEBGL,COLOR_ATTACHMENT2:z.COLOR_ATTACHMENT2_WEBGL,COLOR_ATTACHMENT3:z.COLOR_ATTACHMENT3_WEBGL,COLOR_ATTACHMENT4:z.COLOR_ATTACHMENT4_WEBGL,COLOR_ATTACHMENT5:z.COLOR_ATTACHMENT5_WEBGL,COLOR_ATTACHMENT6:z.COLOR_ATTACHMENT6_WEBGL,COLOR_ATTACHMENT7:z.COLOR_ATTACHMENT7_WEBGL,DRAW_BUFFER0:z.DRAW_BUFFER0_WEBGL,DRAW_BUFFER1:z.DRAW_BUFFER1_WEBGL,DRAW_BUFFER2:z.DRAW_BUFFER2_WEBGL,DRAW_BUFFER3:z.DRAW_BUFFER3_WEBGL,DRAW_BUFFER4:z.DRAW_BUFFER4_WEBGL,DRAW_BUFFER5:z.DRAW_BUFFER5_WEBGL,DRAW_BUFFER6:z.DRAW_BUFFER6_WEBGL,DRAW_BUFFER7:z.DRAW_BUFFER7_WEBGL,MAX_COLOR_ATTACHMENTS:z.MAX_COLOR_ATTACHMENTS_WEBGL,MAX_DRAW_BUFFERS:z.MAX_DRAW_BUFFERS_WEBGL}}}function b(G){const z=G.getExtension("OES_draw_buffers_indexed");return z===null?null:{enablei:z.enableiOES.bind(z),disablei:z.disableiOES.bind(z),blendEquationi:z.blendEquationiOES.bind(z),blendEquationSeparatei:z.blendEquationSeparateiOES.bind(z),blendFunci:z.blendFunciOES.bind(z),blendFuncSeparatei:z.blendFuncSeparateiOES.bind(z),colorMaski:z.colorMaskiOES.bind(z)}}function P(G){return c(G)?{}:G.getExtension("EXT_shader_texture_lod")}function C(G){if(c(G))return{UNSIGNED_INT_24_8:G.UNSIGNED_INT_24_8};{const z=G.getExtension("WEBGL_depth_texture");return z===null?null:{UNSIGNED_INT_24_8:z.UNSIGNED_INT_24_8_WEBGL}}}function l(G){if(c(G))return{FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:G.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING,SRGB8_ALPHA8:G.SRGB8_ALPHA8,SRGB8:G.SRGB8,SRGB:G.SRGB};{const z=G.getExtension("EXT_sRGB");return z===null?null:{FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:z.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT,S
4088RGB8_ALPHA8:z.SRGB8_ALPHA8_EXT,SRGB8:z.SRGB_ALPHA_EXT,SRGB:z.SRGB_EXT}}}function S(G){if(c(G)){const z=G.getExtension("EXT_disjoint_timer_query_webgl2")||G.getExtension("EXT_disjoint_timer_query");return z===null?null:{QUERY_COUNTER_BITS:z.QUERY_COUNTER_BITS_EXT,CURRENT_QUERY:G.CURRENT_QUERY,QUERY_RESULT:G.QUERY_RESULT,QUERY_RESULT_AVAILABLE:G.QUERY_RESULT_AVAILABLE,TIME_ELAPSED:z.TIME_ELAPSED_EXT,TIMESTAMP:z.TIMESTAMP_EXT,GPU_DISJOINT:z.GPU_DISJOINT_EXT,createQuery:G.createQuery.bind(G),deleteQuery:G.deleteQuery.bind(G),isQuery:G.isQuery.bind(G),beginQuery:G.beginQuery.bind(G),endQuery:G.endQuery.bind(G),queryCounter:z.queryCounterEXT.bind(z),getQuery:G.getQuery.bind(G),getQueryParameter:G.getQueryParameter.bind(G)}}else{const z=G.getExtension("EXT_disjoint_timer_query");return z===null?null:{QUERY_COUNTER_BITS:z.QUERY_COUNTER_BITS_EXT,CURRENT_QUERY:z.CURRENT_QUERY_EXT,QUERY_RESULT:z.QUERY_RESULT_EXT,QUERY_RESULT_AVAILABLE:z.QUERY_RESULT_AVAILABLE_EXT,TIME_ELAPSED:z.TIME_ELAPSED_EXT,TIMESTAMP:z.TIMESTAMP_EXT,GPU_DISJOINT:z.GPU_DISJOINT_EXT,createQuery:z.createQueryEXT.bind(z),deleteQuery:z.deleteQueryEXT.bind(z),isQuery:z.isQueryEXT.bind(z),beginQuery:z.beginQueryEXT.bind(z),endQuery:z.endQueryEXT.bind(z),queryCounter:z.queryCounterEXT.bind(z),getQuery:z.getQueryEXT.bind(z),getQueryParameter:z.getQueryObjectEXT.bind(z)}}}function T(G){const z=G.getExtension("WEBGL_multi_draw");return z?{multiDrawArrays:z.multiDrawArraysWEBGL.bind(z),multiDrawElements:z.multiDrawElementsWEBGL.bind(z),multiDrawArraysInstanced:z.multiDrawArraysInstancedWE
4088BGL.bind(z),multiDrawElementsInstanced:z.multiDrawElementsInstancedWEBGL.bind(z)}:null}function A(G){const z=G.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");return z?{drawArraysInstancedBaseInstance:z.drawArraysInstancedBaseInstanceWEBGL.bind(z),drawElementsInstancedBaseVertexBaseInstance:z.drawElementsInstancedBaseVertexBaseInstanceWEBGL.bind(z)}:null}function x(G){const z=G.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");return z?{multiDrawArraysInstancedBaseInstance:z.multiDrawArraysInstancedBaseInstanceWEBGL.bind(z),multiDrawElementsInstancedBaseVertexBaseInstance:z.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL.bind(z)}:null}function M(G){const z=G.getExtension("KHR_parallel_shader_compile");return z===null?null:{COMPLETION_STATUS:z.COMPLETION_STATUS_KHR}}function D(G){return c(G)?{}:G.getExtension("OES_fbo_render_mipmap")}function V(G){if(c(G)){const z=G.getExtension("WEBGL_provoking_vertex");if(z)return{FIRST_VERTEX_CONVENTION:z.FIRST_VERTEX_CONVENTION_WEBGL,LAST_VERTEX_CONVENTION:z.LAST_VERTEX_CONVENTION_WEBGL,PROVOKING_VERTEX:z.PROVOKING_VERTEX_WEBGL,provokingVertex:z.provokingVertexWEBGL.bind(z)}}return null}function R(G){if(c(G)){const z=G.getExtension("WEBGL_clip_cull_distance");if(z)return{MAX_CLIP_DISTANCES:z.MAX_CLIP_DISTANCES_WEBGL,MAX_CULL_DISTANCES:z.MAX_CULL_DISTANCES_WEBGL,MAX_COMBINED_CLIP_AND_CULL_DISTANCES:z.MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL,CLIP_DISTANCE0:z.CLIP_DISTANCE0_WEBGL,CLIP_DISTANCE1:z.CLIP_DISTANCE1_WEBGL,CLIP_DISTANCE2:z.CLIP_DISTANCE2_WEBGL,CLIP_DISTANCE3:z.CLIP_DISTANCE3_WEBGL,CLIP_DISTANCE4:z.CLIP_DISTANCE4_WEBGL,CLIP_DISTANCE5:z.CLIP_DISTANCE5_WEBGL,CLIP_DISTANCE6:z.CLIP_DISTANCE6_WEBGL,CLIP_DISTANCE7:z.CLIP_DISTANCE7_WEBGL}}return null}function E(G){return c(G)&&G.getExtension("EXT_conservative_depth")?{}:null}function I(G){if(c(G)){const z=G.getExtension("WEBGL_stencil_texturing");if(z)return{DEPTH_STENCIL_TEXTURE_MODE:z.DEPTH_STENCIL_TEXTURE_MODE_WEBGL,STENCIL_INDEX:z.STENCIL_INDEX_WEBGL}}return null}function B(G){const z=G.getExtension("EXT_clip_control");return z?{LOWER_LEFT:z.LOWER_LEFT_EXT,UPPER_LEFT:z.UPPER_LEFT_EXT,NEGATIVE_ONE_TO_ONE:z.NEGATIVE_ONE_TO_ONE_EXT,ZERO_TO_ONE:z.ZERO_TO_ONE_EXT,CLIP_ORIGIN:z.CLIP_ORIGIN_EXT,CLIP_DEPTH_MODE:z.CLIP_DEPTH_MODE_EXT,clipControl:z.clipControlEXT.bind(z)}:null}function w(G){return c(G)&&G.getExtension("EXT_render_snorm")?{}:null}function O(G){return c(G)&&G.getExtension("WEBGL_render_shared_exponent")?{}:null}function F(G){const z=G.getExtension("EXT_texture_norm16");return z?{R16:z.R16_EXT,RG16:z.RG16_EXT,RGB16:z.RGB16_EXT,RGBA16:z.RGBA16_EXT,R16_SNORM:z.R16_SNORM_EXT,RG16_SNORM:z.RG16_SNORM_EXT,RGB16_SNORM:z.RGB16_SNORM_EXT,RGBA16_SNORM:z.RGBA16_SNORM_EXT}:null}function L(G){const z=G.getExtension("EXT_depth_clamp");return z?{DEPTH_CLAMP:z.DEPTH_CLAMP_EXT}:null}function U(G){if(c(G)){const z=G.getExtension("OVR_multiview2");if(z)return{FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS:z.FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR,FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX:z.FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR,MAX_VIEWS:z.MAX_VIEWS_OVR,FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS:z.FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR,framebufferTextureMultiview:z.framebufferTextureMultiviewOVR.bind(z)}}return null}function q(G){if(!c(G))return!1;if(typeof navigator<"u"){const z=window.navigator.userAgent.match(/Firefox\/([0-9]+)\./);return z?parseInt(z[1])>=85:!0}return!1}const N=`
4089attribute vec4 aPosition;
4090
4091void main() {
4092    gl_Position = aPosition;
4093}`,k=`
4094precision mediump float;
4095uniform vec4 uColor;
4096uniform sampler2D uTexture;
4097
4098void main() {
4099    gl_FragColor = texture2D(uTexture, vec2(0.5, 0.5)) * uColor;
4100}`,j=new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]);function H(G,z){const W=(0,n.getShader)(G,{type:"vert",source:N}),X=(0,n.getShader)(G,{type:"frag",source:k}
4100);if(!W||!X)return!1;const Y=(0,r.getProgram)(G);G.attachShader(Y,W),G.attachShader(Y,X),G.linkProgram(Y),G.useProgram(Y);const K=G.getAttribLocation(Y,"aPosition"),Q=G.getUniformLocation(Y,"uColor");if(!Q)return e.isDebugMode&&console.log("error getting 'uColor' uniform location"),!1;const J=G.createBuffer();G.bindBuffer(G.ARRAY_BUFFER,J),G.bufferData(G.ARRAY_BUFFER,j,G.STATIC_DRAW),G.enableVertexAttribArray(K),G.vertexAttribPointer(K,2,G.FLOAT,!1,0,0);const ae=G.createTexture(),te=new Uint8Array([255,255,255,255]);G.bindTexture(G.TEXTURE_2D,ae),G.texImage2D(G.TEXTURE_2D,0,G.RGBA,1,1,0,G.RGBA,G.UNSIGNED_BYTE,te);const ne=G.createTexture();G.bindTexture(G.TEXTURE_2D,ne),G.texImage2D(G.TEXTURE_2D,0,G.RGBA,1,1,0,G.RGBA,z,null),G.texParameteri(G.TEXTURE_2D,G.TEXTURE_MIN_FILTER,G.NEAREST),G.texParameteri(G.TEXTURE_2D,G.TEXTURE_MAG_FILTER,G.NEAREST);const $=G.createFramebuffer();if(G.bindFramebuffer(G.FRAMEBUFFER,$),G.framebufferTexture2D(G.FRAMEBUFFER,G.COLOR_ATTACHMENT0,G.TEXTURE_2D,ne,0),G.checkFramebufferStatus(G.FRAMEBUFFER)!==G.FRAMEBUFFER_COMPLETE)return e.isDebugMode&&console.log(`error creating framebuffer for '${z}'`),!1;G.bindTexture(G.TEXTURE_2D,ae),G.uniform4fv(Q,[0,10,20,1]),G.drawArrays(G.TRIANGLES,0,6),G.bindTexture(G.TEXTURE_2D,ne),G.bindFramebuffer(G.FRAMEBUFFER,null),G.clearColor(1,0,0,1),G.clear(G.COLOR_BUFFER_BIT),G.uniform4fv(Q,[0,1/10,1/20,1]),G.drawArrays(G.TRIANGLES,0,6);const Z=new Uint8Array(4);if(G.readPixels(0,0,1,1,G.RGBA,G.UNSIGNED_BYTE,Z),Z[0]!==0||Z[1]<248||Z[2]<248||Z[3]<254)return e.isDebugMode&&console.log(`not able to actually render to '${z}' texture`),!1;if(z===G.FLOAT){G.bindFramebuffer(G.FRAMEBUFFER,$);const re=new Float32Array(4);G.readPixels(0,0,1,1,G.RGBA,G.FLOAT,re);const oe=G.getError();if(oe)return e.isDebugMode&&console.log(`error reading float pixels: '${(0,t.getErrorDescription)(G,oe)}'`),!1}return!0}return qt}var fd={},mU;function Sw(){if(mU)return fd;mU=1,Object.defineProperty(fd,"__esModule",{value:!0}),fd.checkFramebufferStatus=i,fd.createFramebuffer=o,fd.createNullFramebuffer=s;const e=Yn(),t=on(),r=(0,e.idFactory)();function n(h,f){switch(f){case h.FRAMEBUFFER_COMPLETE:return"complete";case h.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"incomplete attachment";case h.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"incomplete missing attachment";case h.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"incomplete dimensions";case h.FRAMEBUFFER_UNSUPPORTED:return"unsupported"}if((0,t.isWebGL2)(h))switch(f){case h.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:return"incomplete multisample";case h.RENDERBUFFER_SAMPLES:return"renderbuffer samples"}return"unknown error"}function i(h,f){const y=h.checkFramebufferStatus(h.FRAMEBUFFER);if(y!==h.FRAMEBUFFER_COMPLETE){const _=n(h,y);throw new Error(`Framebuffer status: ${_}${f?` (${f})`:""}`)}}function c(h){const f=h.createFramebuffer();if(f===null)throw new Error("Could not create WebGL framebuffer");return f}function o(h){let f=c(h),y=!1;return{id:r(),bind:()=>h.bindFramebuffer(h.FRAMEBUFFER,f),reset:()=>{f=c(h)},destroy:()=>{y||(h.deleteFramebuffer(f),y=!0)}}}function s(){return{id:r(),bind:()=>{},reset:()=>{},destroy:()=>{}}}return fd}var n1={},pU;function Vne(){if(pU)return n1;pU=1,Object.defineProperty(n1,"__esModule",{value:!0}),n1.createExtensions=n,n1.resetExtensions=i;const e=on(),t=Ct(),r=vr();function n(c){const o=(0,e.getInstancedArrays)(c);if(o===null)throw new Error('Could not find support for "instanced_arrays"');const s=(0,e.getElementIndexUint)(c);if(s===null)throw new Error('Could not find support for "element_index_uint"');const h=(0,e.getStandardDerivatives)(c);if(h===null)throw new Error('Could not find support for "standard_derivatives"');const f=(0,e.getTextureFloat)(c);t.isDebugMode&&f===null&&console.log('Could not find support for "texture_float"');const y=(0,e.getTextureFloatLinear)(c);t.isDebugMode&&y===null&&console.log('Could not find support for "texture_float_linear"');const _=(0,e.getTextureHalfFloat)(c);t.isDebugMode&&_===null&&console.log('Could not find support for "texture_half_float"');const g=(0,e.getTextureHalfFloatLinear)(c);t.isDebugMode&&g===null&&console.log('Could not find support for "texture_half_float_linear"');const a=(0,e.getDepthTexture)(c);t.isDebugMode&&a===null&&console.log('Could not find support for "depth_texture"');const d=(0,e.getBlendMinMax)(c);t.isDebugMode&&d===null&&console.log('Could not find support for "blend_minmax"');const p=(0,e.getVertexArrayObject)(c);t.isDebugMode&&p===null&&console.log('Could not find support for "vertex_array_object"');const u=(0,e.getFragDepth)(c);t.isDebugMode&&u===null&&console.log('Could not find support for "frag_depth"');const m=(0,e.getColorBufferFloat)(c);t.isDebugMode&&m===null&&console.log('Could not find support for "color_buffer_float"');const v=(0,e.getColorBufferHalfFloat)(c);t.isDebugMode&&v===null&&console.log('Could not find support for "color_buffer_half_float"');const b=(0,e.getDrawBuffers)(c);t.isDebugMode&&b===null&&console.log('Could not find support for "draw_buffers"');const P=(0,e.getDrawBuffersIndexed)(c);t.isDebugMode&&P===null&&console.log('Could not find support for "draw_buffers_indexed"');const C=(0,e.getShaderTextureLod)(c);t.isDebugMode&&C===null&&console.log('Could not find support for "shader_texture_lod"');const l=(0,e.getSRGB)(c);t.isDebugMode&&l===null&&console.log('Could not find support for "sRGB"');const S=(0,e.getDisjointTimerQuery)(c);t.isDebugMode&&S===null&&console.log('Could not find support for "disjoint_timer_query"');const T=(0,e.getMultiDraw)(c);t.isDebugMode&&T===null&&console.log('Could not find support for "multi_draw"');const A=(0,e.getDrawInstancedBaseVertexBaseInstance)(c);t.isDebugMode&&A===null&&console.log('Could not find support for "draw_instanced_base_vertex_base_instance"');const x=(0,e.getMultiDrawInstancedBaseVertexBaseInstance)(c);t.isDebugMode&&x===null&&console.log('Could not find support for "multi_draw_instanced_base_vertex_base_instance"');const M=(0,e.getParallelShaderCompile)(c);t.isDebugMode&&M===null&&console.log('Could not find support for "parallel_shader_compile"');const D=(0,e.getFboRenderMipmap)(c);t.isDebugMode&&D===null&&console.log('Could not find support for "fbo_render_mipmap"');const V=(0,e.getProvokingVertex)(c);t.isDebugMode&&V===null&&console.log('Could not find support for "provoking_vertex"');const R=(0,e.getClipCullDistance)(c);t.isDebugMode&&R===null&&console.log('Could not find support for "clip_cull_distance"');const E=(0,e.getConservativeDepth)(c);t.isDebugMode&&E===null&&console.log('Could not find support for "conservative_depth"');const I=(0,e.getStencilTexturing)(c);t.isDebugMode&&I===null&&console.log('Could not find support for "stencil_texturing"');const B=(0,e.getClipControl)(c);t.isDebugMode&&B===null&&console.log('Could not find support for "clip_control"');const w=(0,e.getRenderSnorm)(c);t.isDebugMode&&w===null&&console.log('Could not find support for "render_snorm"');const O=(0,e.getRenderSharedExponent)(c);t.isDebugMode&&O===null&&console.log('Could not find support for "render_shared_exponent"');const F=(0,e.getTextureNorm16)(c);t.isDebugMode&&F===null&&console.log('Could not find support for "texture_norm16"');const L=(0,e.getDepthClamp)(c);t.isDebugMode&&L===null&&console.log('Could not find support for "depth_clamp"');const U=(0,e.getMultiview2)(c);t.isDebugMode&&U===null&&console.log('Could not find support for "multiview2"');const q=(0,e.getNoNonInstancedActiveAttribs)(c);return{instancedArrays:o,standardDerivatives:h,elementIndexUint:s,textureFloat:f,textureFloatLinear:y,textureHalfFloat:_,textureHalfFloatLinear:g,depthTexture:a,blendMinMax:d,vertexArrayObject:p,fragDepth:u,colorBufferFloat:m,colorBufferHalfFloat:v,drawBuffers:b,drawBuffersIndexed:P,shaderTextureLod:C,sRGB:l,disjointTimerQuery:S,multiDraw:T,drawInstancedBaseVertexBaseInstance:A,multiDrawInstancedBaseVertexBaseInstance:x,parallelShaderCompile:M,fboRenderMipmap:D,provokingVertex:V,clipCullDistance:R,conservativeDepth:E,stencilTexturing:I,clipControl:B,renderSnorm:w,renderSharedExponent:O,textureNorm16:F,depthClamp:L,multiview2:U,noNonInstancedActiveAttribs:q}}function i(c,o){const s=n(c);(0,r.objectForEach)(o,(h,f)=>{f==="noNonInstancedActiveAttribs"?o.noNonInstancedActiveAttribs=s.noNonInstancedActiveAttribs:h!==null&&(s[f]===null?o[f]=null:Object.assign(h,s[f]))})}return n1}var tP={},hU;function Ene(){if(hU)return tP;
vendor: 4,245 bytes, line 4100
4100hU=1,Object.defineProperty(tP,"__esModule",{value:!0}),tP.createState=e;function e(t,r){let n={},i=t.getParameter(t.FRONT_FACE),c=t.getParameter(t.CULL_FACE_MODE),o=t.getParameter(t.DEPTH_WRITEMASK),s=t.getParameter(t.DEPTH_CLEAR_VALUE),h=t.getParameter(t.DEPTH_FUNC),f=t.getParameter(t.COLOR_WRITEMASK),y=t.getParameter(t.COLOR_CLEAR_VALUE),_=t.getParameter(t.BLEND_SRC_RGB),g=t.getParameter(t.BLEND_DST_RGB),a=t.getParameter(t.BLEND_SRC_ALPHA),d=t.getParameter(t.BLEND_DST_ALPHA),p=t.getParameter(t.BLEND_COLOR),u=t.getParameter(t.BLEND_EQUATION_RGB),m=t.getParameter(t.BLEND_EQUATION_ALPHA),v=t.getParameter(t.STENCIL_FUNC),b=t.getParameter(t.STENCIL_VALUE_MASK),P=t.getParameter(t.STENCIL_REF),C=t.getParameter(t.STENCIL_BACK_FUNC),l=t.getParameter(t.STENCIL_BACK_VALUE_MASK),S=t.getParameter(t.STENCIL_BACK_REF),T=t.getParameter(t.STENCIL_WRITEMASK),A=t.getParameter(t.STENCIL_BACK_WRITEMASK),x=t.getParameter(t.STENCIL_FAIL),M=t.getParameter(t.STENCIL_PASS_DEPTH_PASS),D=t.getParameter(t.STENCIL_PASS_DEPTH_FAIL),V=t.getParameter(t.STENCIL_BACK_FAIL),R=t.getParameter(t.STENCIL_BACK_PASS_DEPTH_PASS),E=t.getParameter(t.STENCIL_BACK_PASS_DEPTH_FAIL),I=t.getParameter(t.MAX_VERTEX_ATTRIBS);const B=[];let w=t.getParameter(t.VIEWPORT),O=t.getParameter(t.SCISSOR_BOX),F=r.clipControl?t.getParameter(r.clipControl.CLIP_ORIGIN):-1,L=r.clipControl?t.getParameter(r.clipControl.CLIP_DEPTH_MODE):-1;const U=()=>{for(let q=0;q<I;++q)B[q]=0};return U(),{currentProgramId:-1,currentMaterialId:-1,currentRenderItemId:-1,enable:q=>{n[q]!==!0&&(t.enable(q),n[q]=!0)},disable:q=>{n[q]!==!1&&(t.disable(q),n[q]=!1)},frontFace:q=>{q!==i&&(t.frontFace(q),i=q)},cullFace:q=>{q!==c&&(t.cullFace(q),c=q)},depthMask:q=>{q!==o&&(t.depthMask(q),o=q)},clearDepth:q=>{q!==s&&(t.clearDepth(q),s=q)},depthFunc:q=>{q!==h&&(t.depthFunc(q),h=q)},colorMask:(q,N,k,j)=>{(q!==f[0]||N!==f[1]||k!==f[2]||j!==f[3])&&(t.colorMask(q,N,k,j),f[0]=q,f[1]=N,f[2]=k,f[3]=j)},clearColor:(q,N,k,j)=>{(q!==y[0]||N!==y[1]||k!==y[2]||j!==y[3])&&(t.clearColor(q,N,k,j),y[0]=q,y[1]=N,y[2]=k,y[3]=j)},blendFunc:(q,N)=>{(q!==_||N!==g||q!==a||N!==d)&&(t.blendFunc(q,N),_=q,g=N,a=q,d=N)},blendFuncSeparate:(q,N,k,j)=>{(q!==_||N!==g||k!==a||j!==d)&&(t.blendFuncSeparate(q,N,k,j),_=q,g=N,a=k,d=j)},blendEquation:q=>{(q!==u||q!==m)&&(t.blendEquation(q),u=q,m=q)},blendEquationSeparate:(q,N)=>{(q!==u||N!==m)&&(t.blendEquationSeparate(q,N),u=q,m=N)},blendColor:(q,N,k,j)=>{(q!==p[0]||N!==p[1]||k!==p[2]||j!==p[3])&&(t.blendColor(q,N,k,j),p[0]=q,p[1]=N,p[2]=k,p[3]=j)},stencilFunc:(q,N,k)=>{(q!==v||N!==P||k!==b||q!==C||N!==S||k!==l)&&(t.stencilFunc(q,N,k),v=q,P=N,b=k,C=q,S=N,l=k)},stencilFuncSeparate:(q,N,k,j)=>{q===t.FRONT?(N!==v||k!==P||j!==b)&&(t.stencilFuncSeparate(q,N,k,j),v=N,P=k,b=j):q===t.BACK?(N!==C||k!==S||j!==l)&&(t.stencilFuncSeparate(q,N,k,j),C=N,S=k,l=j):q===t.FRONT_AND_BACK&&(N!==v||k!==P||j!==b||N!==C||k!==S||j!==l)&&(t.stencilFuncSeparate(q,N,k,j),v=N,P=k,b=j,C=N,S=k,l=j)},stencilMask:q=>{(q!==T||q!==A)&&(t.stencilMask(q),T=q,A=q)},stencilMaskSeparate:(q,N)=>{q===t.FRONT?N!==T&&(t.stencilMaskSeparate(q,N),T=N):q===t.BACK?N!==A&&(t.stencilMaskSeparate(q,N),A=N):q===t.FRONT_AND_BACK&&(N!==T||N!==A)&&(t.stencilMaskSeparate(q,N),T=N,A=N)},stencilOp:(q,N,k)=>{(q!==x||N!==D||k!==M||q!==V||N!==E||k!==R)&&(t.stencilOp(q,N,k),x=q,D=N,M=k,V=q,E=N,R=k)},stencilOpSeparate:(q,N,k,j)=>{q===t.FRONT?(N!==x||k!==D||j!==M)&&(t.stencilOpSeparate(q,N,k,j),x=N,D=k,M=j):q===t.BACK?(N!==V||k!==E||j!==R)&&(t.stencilOpSeparate(q,N,k,j),V=N,E=k,R=j):q===t.FRONT_AND_BACK&&(N!==x||k!==D||j!==M||N!==V||k!==E||j!==R)&&(t.stencilOpSeparate(q,N,k,j),x=N,D=k,M=j,V=N,E=k,R=j)},enableVertexAttrib:q=>{t.enableVertexAttribArray(q),B[q]=1},clearVertexAttribsState:U,disableUnusedVertexAttribs:()=>{for(let q=0;q<I;++q)B[q]===0&&t.disableVertexAttribArray(q)},viewport:(q,N,k,j)=>{(q!==w[0]||N!==w[1]||k!==w[2]||j!==w[3])&&(t.viewport(q,N,k,j),w[0]=q,w[1]=N,w[2]=k,w[3]=j)},scissor:(q,N,k,j)=>{(q!==O[0]||N!==O[1]||k!==O[2]||j!==O[3])&&(t.scissor(q,N,k,j),O[0]=q,O[1]=N,O[2]=k,O[3]=j)},clipControl:r.clipControl?(q,N)=>{(q!==F||N!==L)&&(r.clipControl.clipControl(q,N),F=q,L=N)}:void 0,reset:()=>{n={},i=t.getParameter(t.FRONT_FACE),c=t.getParameter(t.CULL_FACE_MODE),o=t.getParameter(t.DEPTH_WRITEMA
4100SK),s=t.getParameter(t.DEPTH_CLEAR_VALUE),h=t.getParameter(t.DEPTH_FUNC),f=t.getParameter(t.COLOR_WRITEMASK),y=t.getParameter(t.COLOR_CLEAR_VALUE),_=t.getParameter(t.BLEND_SRC_RGB),g=t.getParameter(t.BLEND_DST_RGB),a=t.getParameter(t.BLEND_SRC_ALPHA),d=t.getParameter(t.BLEND_DST_ALPHA),p=t.getParameter(t.BLEND_COLOR),u=t.getParameter(t.BLEND_EQUATION_RGB),m=t.getParameter(t.BLEND_EQUATION_ALPHA),v=t.getParameter(t.STENCIL_FUNC),b=t.getParameter(t.STENCIL_VALUE_MASK),P=t.getParameter(t.STENCIL_REF),C=t.getParameter(t.STENCIL_BACK_FUNC),l=t.getParameter(t.STENCIL_BACK_VALUE_MASK),S=t.getParameter(t.STENCIL_BACK_REF),T=t.getParameter(t.STENCIL_WRITEMASK),A=t.getParameter(t.STENCIL_BACK_WRITEMASK),x=t.getParameter(t.STENCIL_FAIL),M=t.getParameter(t.STENCIL_PASS_DEPTH_PASS),D=t.getParameter(t.STENCIL_PASS_DEPTH_FAIL),V=t.getParameter(t.STENCIL_BACK_FAIL),R=t.getParameter(t.STENCIL_BACK_PASS_DEPTH_PASS),E=t.getParameter(t.STENCIL_BACK_PASS_DEPTH_FAIL),I=t.getParameter(t.MAX_VERTEX_ATTRIBS),B.length=0;for(let q=0;q<I;++q)B[q]=0;w=t.getParameter(t.VIEWPORT),O=t.getParameter(t.SCISSOR_BOX),F=r.clipControl?t.getParameter(r.clipControl.CLIP_ORIGIN):-1,L=r.clipControl?t.getParameter(r.clipControl.CLIP_DEPTH_MODE):-1}}}return tP}var rP={},md={},gU;function Bne(){if(gU)return md;gU=1,Object.defineProperty(md,"__esModule",{value:!0}),md.createReference=t,md.createReferenceItem=r,md.createReferenceCache=n;const e=Vt();function t(i,c=0){return{value:i,usageCount:c}}function r(i){return{free:()=>{i.usageCount-=1},value:i.value}}function n(i,c,o){const s=new Map,h=[];return{get:f=>{const y=i(f);let _=s.get(y);return _||(_=t(c(f)),s.set(y,_),h.push(_.value)),_.usageCount+=1,r(_)},clear:()=>{s.forEach((f,y)=>{f.usageCount<=0&&(f.usageCount<0&&console.warn("Reference usageCount below zero."),o(f.value),s.delete(y),(0,e.arrayRemoveInPlace)(h,f.value))})},get count(){return s.size},values:h,dispose:()=>{s.forEach(f=>o(f.value)),s.clear(),h.length=0}}}return md}var pd={},yU;function Rne(){if(yU)return pd;yU=1,Object.defineProperty(pd,"__esModule",{value:!0}),pd.getFormat=c,pd.getAttachment=s,pd.createRenderbuffer=f;const e=Yn(),t=on(),r=Sw(),n=Ct(),i=(0,e.idFactory)();function c(y,_){switch(_){case"depth16":return y.DEPTH_COMPONENT16;case"stencil8":return y.STENCIL_INDEX8;case"rgba4":return y.RGBA4;case"depth-stencil":return y.DEPTH_STENCIL;case"depth24":if((0,t.isWebGL2)(y))return y.DEPTH_COMPONENT24;throw new Error("WebGL2 needed for `depth24` renderbuffer format");case"depth32f":if((0,t.isWebGL2)(y))return y.DEPTH_COMPONENT32F;throw new Error("WebGL2 needed for `depth32f` renderbuffer format");case"depth24-stencil8":if((0,t.isWebGL2)(y))return y.DEPTH24_STENCIL8;throw new Error("WebGL2 needed for `depth24-stencil8` renderbuffer format");case"depth32f-stencil8":if((0,t.isWebGL2)(y))return y.DEPTH32F_STENCIL8;throw new Error("WebGL2 needed for `depth32f-stencil8` renderbuffer format")}}function o(y){switch(y){case"depth16":return 4;case"stencil8":return 2;case"rgba4":return 4;case"depth-stencil":return 4;case"depth24":return 3;case"depth32f":return 4;case"depth24-stencil8":return 4;case"depth32f-stencil8":return 5}}function s(y,_){switch(_){case"depth":return y.DEPTH_ATTACHMENT;case"stencil":return y.STENCIL_ATTACHMENT;case"depth-stencil":return y.DEPTH_STENCIL_ATTACHMENT;case"color0":return y.COLOR_ATTACHMENT0}}function h(y){const _=y.createRenderbuffer();if(_===null)throw new Error("Could not create WebGL renderbuffer");return _}function f(y,_,g,a,d){let p=h(y);const u=()=>y.bindRenderbuffer(y.RENDERBUFFER,p),m=c(y,_),v=s(y,g);function b(){u(),y.renderbufferStorage(y.RENDERBUFFER,m,a,d)}b();let P=!1;return{id:i(),getByteCount:()=>o(_)*a*d,bind:u,attachFramebuffer:C=>{C.bind(),u(),y.framebufferRenderbuffer(y.FRAMEBUFFER,v,y.RENDERBUFFER,p),n.isDebugMode&&(0,r.checkFramebufferStatus)(y)},detachFramebuffer:C=>{C.bind(),u(),y.framebufferRenderbuffer(y.FRAMEBUFFER,v,y.RENDERBUFFER,null),n.isDebugMode&&(0,r.checkFramebufferStatus)(y)},setSize:(C,l)=>{a=C,d=l,b()},reset:()=>{p=h(y),b()},destroy:()=>{P||(y.deleteRenderbuffer(p),P=!0)}}}return pd}var nP={},vU;function One(){if(vU)return nP;
4100vU=1,Object.defineProperty(nP,"__esModule",{value:!0}),nP.createVertexArray=i;const t=(0,Yn().idFactory)();function r(c){const{vertexArrayObject:o}=c;if(!o)throw new Error("VertexArrayObject not supported");const s=o.createVertexArray();if(!s)throw new Error("Could not create WebGL vertex array");return s}function n(c){const{vertexArrayObject:o}=c;if(o===null)throw new Error("VertexArrayObject not supported");return o}function i(c,o,s,h,f){const y=t();let _=r(o),g=n(o);function a(){g.bindVertexArray(_),f&&f.bind(),s.bindAttributes(h),g.bindVertexArray(null),d=!0}let d=!1,p=!1;return{id:y,bind:()=>{d||a(),g.bindVertexArray(_)},update:a,reset:()=>{_=r(o),g=n(o),d=!1},destroy:()=>{p||(f&&(g.bindVertexArray(_),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,null)),g.deleteVertexArray(_),p=!0)}}}return nP}var bU;function kne(){if(bU)return rP;bU=1,Object.defineProperty(rP,"__esModule",{value:!0}),rP.createResources=d;const e=cQ(),t=uQ(),r=on(),n=Sw(),i=_w(),c=Bne(),o=_t(),s=Rne(),h=bn(),f=One(),y=ci(),_=Ct();function g(p){return typeof p=="boolean"?p?1:0:typeof p=="number"?p*1e4:(0,o.hashString)(p)}function a(p){return{...p.value,destroy:()=>{p.free()}}}function d(p,u,m,v,b){const P={attribute:new Set,elements:new Set,pixelPack:new Set,framebuffer:new Set,program:new Set,renderbuffer:new Set,shader:new Set,texture:new Set,cubeTexture:new Set,vertexArray:new Set};function C(x,M){return P[x].add(M),m.resourceCounts[x]+=1,{...M,destroy:()=>{M.destroy(),P[x].delete(M),m.resourceCounts[x]-=1}}}const l=(0,c.createReferenceCache)(x=>JSON.stringify(x),x=>C("shader",(0,t.createShader)(p,x)),x=>{x.destroy()});function S(x,M){return a(l.get({type:x,source:M}))}const T=new Set,A=(0,c.createReferenceCache)(x=>{var M;const D=[x.shaderCode.id],V=((M=x.defineValues.dRenderVariant)===null||M===void 0?void 0:M.ref.value)||"";return Object.keys(x.defineValues).forEach(R=>{var E,I;!((I=(E=x.shaderCode).ignoreDefine)===null||I===void 0)&&I.call(E,R,V,x.defineValues)||D.push((0,o.hashString)(R),g(x.defineValues[R].ref.value))}),(0,o.hashFnv32a)(D).toString()},x=>{const M=(0,e.createProgram)(p,u,v,b,S,x);return M.variant!=="compute"&&T.add(M),C("program",M)},x=>{T.delete(x),x.destroy()});return{attribute:(x,M,D,V)=>C("attribute",(0,i.createAttributeBuffer)(p,u,v,x,M,D,V)),elements:(x,M)=>C("elements",(0,i.createElementsBuffer)(p,x,M)),pixelPack:(x,M)=>{if(!(0,r.isWebGL2)(p))throw new Error("WebGL2 is required for pixel-pack buffers");return C("pixelPack",(0,i.createPixelPackBuffer)(p,v,x,M))},framebuffer:()=>C("framebuffer",(0,n.createFramebuffer)(p)),program:(x,M,D)=>a(A.get({defineValues:x,shaderCode:M,schema:D})),renderbuffer:(x,M,D,V)=>C("renderbuffer",(0,s.createRenderbuffer)(p,x,M,D,V)),shader:S,texture:(x,M,D,V)=>C("texture",(0,h.createTexture)(p,v,x,M,D,V)),cubeTexture:(x,M,D)=>C("cubeTexture",(0,h.createCubeTexture)(p,x,M,D)),vertexArray:(x,M,D)=>C("vertexArray",(0,f.createVertexArray)(p,v,x,M,D)),getByteCounts:()=>{let x=0;P.texture.forEach(I=>{x+=I.getByteCount()});let M=0;P.cubeTexture.forEach(I=>{M+=I.getByteCount()});let D=0;P.attribute.forEach(I=>{D+=I.getByteCount()});let V=0;P.elements.forEach(I=>{V+=I.getByteCount()});let R=0;P.pixelPack.forEach(I=>{R+=I.getByteCount()});let E=0;return P.renderbuffer.forEach(I=>{E+=I.getByteCount()}),{texture:x,cubeTexture:M,attribute:D,elements:V,pixelPack:R,renderbuffer:E}},linkPrograms:x=>{for(const M of T)x&&!x.includes(M.variant)||M.link()},finalizePrograms:(x,M)=>{let D=!0,V=0;for(const B of T)B.isReady()&&T.delete(B),(!x||x.includes(B.variant))&&(D=!1,V+=1);if(D)return!0;let R=!0,E=0;const I=(0,y.now)();for(const B of T)if(!(x&&!x.includes(B.variant))&&(B.finalize(M)?(T.delete(B),E+=1):R=!1,!M&&(0,y.now)()-I>16)){R=!1;break}return _.isTimingMode&&console.log(`Finalized ${E} of ${V} programs (${x?x.join(", "):"all"}) in ${((0,y.now)()-I).toFixed(2)} ms`),R},reset:()=>{P.attribute.forEach(x=>x.reset()),P.elements.forEach(x=>x.reset()),P.pixelPack.forEach(x=>x.reset()),P.framebuffer.forEach(x=>x.reset()),P.renderbuffer.forEach(x=>x.reset()),P.shader.forEach(x=>x.reset()),P.program.forEach(x=>x.reset()),P.vertexArray.forEach(x=>x.reset()),P.texture.forEach(x=>x.reset()),P.cubeTexture.forEach(x=>x.reset())},destroy:()=>{P.attribute.forEach(x=>
4100x.destroy()),P.elements.forEach(x=>x.destroy()),P.pixelPack.forEach(x=>x.destroy()),P.framebuffer.forEach(x=>x.destroy()),P.renderbuffer.forEach(x=>x.destroy()),P.shader.forEach(x=>x.destroy()),P.program.forEach(x=>x.destroy()),P.vertexArray.forEach(x=>x.destroy()),P.texture.forEach(x=>x.destroy()),P.cubeTexture.forEach(x=>x.destroy()),l.clear(),A.clear(),T.clear()}}}return rP}var iP={},_U;function Fne(){if(_U)return iP;_U=1,Object.defineProperty(iP,"__esModule",{value:!0}),iP.createRenderTarget=n;const e=Yn(),t=on(),r=(0,e.idFactory)();function n(i,c,o,s,h=!0,f="uint8",y="nearest",_="rgba"){if(_==="alpha"&&!(0,t.isWebGL2)(i))throw new Error("cannot render to alpha format in webgl1");const g=c.framebuffer(),a=f==="fp16"?c.texture("image-float16",_,"fp16",y):f==="float32"?c.texture("image-float32",_,"float",y):c.texture("image-uint8",_,"ubyte",y),d=h?(0,t.isWebGL2)(i)?c.renderbuffer("depth32f","depth",o,s):c.renderbuffer("depth16","depth",o,s):null;function p(){a.define(o,s),a.attachFramebuffer(g,"color0"),d&&d.attachFramebuffer(g)}p();let u=!1;return{id:r(),texture:a,framebuffer:g,depthRenderbuffer:d,getByteCount:()=>a.getByteCount()+(d?d.getByteCount():0),getWidth:()=>o,getHeight:()=>s,bind:()=>{g.bind()},setSize:(m,v)=>{o===m&&s===v||(o=m,s=v,a.define(o,s),d&&d.setSize(o,s))},reset:()=>{p()},destroy:()=>{u||(a.destroy(),g.destroy(),d&&d.destroy(),u=!0)}}}return iP}var i1={},SU;function Cw(){if(SU)return i1;SU=1,Object.defineProperty(i1,"__esModule",{value:!0}),i1.createTimer=c,i1.printTimerResults=s;const e=ci();function t(h,f,y){return h-=h/y,h+=f/y,h}class r{add(f,y){let _=this.avgs.get(f)||y;return _=t(_,y,this.count),this.avgs.set(f,_),_}get(f){return this.avgs.get(f)}stats(){return Object.fromEntries(this.avgs.entries())}clear(){this.avgs.clear()}constructor(f){this.count=f,this.avgs=new Map}}function n(h){h.calls.drawInstanced=0,h.calls.drawInstancedBase=0,h.calls.multiDrawInstancedBase=0,h.calls.counts=0,h.culled.lod=0,h.culled.frustum=0,h.culled.occlusion=0}function i(h){return h.disjointTimerQuery?h.disjointTimerQuery.createQuery():null}function c(h,f,y,_){var g;const a=f.disjointTimerQuery,d=(g=_?.avgCount)!==null&&g!==void 0?g:30,p=new Map,u=new Map,m=[],v=new r(d),b=new r(d);let P=[],C=null,l=!1;const S=()=>{u.clear(),m.length=0,v.clear(),b.clear(),P=[],C=null,l=!1,a&&p.forEach((A,x)=>{a.deleteQuery(x)}),p.clear()},T=()=>{if(!a)return;const A=i(f);A&&(a.beginQuery(a.TIME_ELAPSED,A),u.forEach((x,M)=>{x.queries.push(A)}),p.set(A,{refCount:u.size}),C=A)};return{resolve:()=>{const A=[];if(!a||!P.length||l)return A;p.forEach((M,D)=>{if(M.timeElapsed!==void 0)return;const V=a.getQueryParameter(D,a.QUERY_RESULT_AVAILABLE),R=h.getParameter(a.GPU_DISJOINT);if(V&&!R){const E=a.getQueryParameter(D,a.QUERY_RESULT);M.timeElapsed=E}(V||R)&&a.deleteQuery(D)});const x=[];for(const M of P)if(M.queries.every(D=>{var V;return((V=p.get(D))===null||V===void 0?void 0:V.timeElapsed)!==void 0})){let D=0;for(const V of M.queries){const R=p.get(V);D+=R.timeElapsed,R.refCount-=1}if(M.timeElapsed=D,M.root){const V=[],R=(I,B)=>{for(const w of I){const O=w.timeElapsed,F=w.cpu.end-w.cpu.start,L={label:w.label,gpuElapsed:O,gpuAvg:v.add(w.label,O),cpuElapsed:F,cpuAvg:b.add(w.label,F),children:[],calls:w.calls,note:w.note};B.push(L),R(w.children,L.children)}};R(M.children,V);const E=M.cpu.end-M.cpu.start;A.push({label:M.label,gpuElapsed:D,gpuAvg:v.add(M.label,D),cpuElapsed:E,cpuAvg:b.add(M.label,E),children:V,calls:M.calls,note:M.note})}}else x.push(M);return P=x,p.forEach((M,D)=>{M.refCount===0&&p.delete(D)}),A},mark:(A,x)=>{var M;if(!a)return;if(u.has(A))throw new Error(`Timer mark for '${A}' already exists`);const D=(M=x?.captureStats)!==null&&M!==void 0?M:!1;C!==null&&a.endQuery(a.TIME_ELAPSED);const V={label:A,queries:[],children:[],root:C===null,cpu:{start:(0,e.now)(),end:-1},captureStats:D};if(x?.note&&(V.note=x.note),u.set(A,V),m.length&&m[m.length-1].children.push(V),m.push(V),D){if(l)throw new Error("Already capturing stats");n(y),l=!0}T()},markEnd:A=>{var x;if(!a)return;const M=u.get(A);if(!M)throw new Error(`Timer mark for '${A}' does not exist`);if(((x=m.pop())===null||x===void 0?void 0:x.label)!==A)throw new Error(`Timer mark for '${A}' has pending nested mark`);a.endQuery(a.TIME_ELAPSED),u.delete(A),M.cpu.end=(0,e.now)(),M.captureStats&&(M.calls={...y.calls},l=!1),P.push(M),u.size>0?T():C=null},stats:()=>({gpu:v.stats(),cpu:b.stats()}),formatedStats:()=>{const A={},x=v.stats(),M=b.stats();for(const D of Object.keys(x)){const V=`${(x[D]/1e3/1e3).toFixed(2)}`,R=`${M[D].toFixed(2)}`;A[D]=`${V} ms | CPU: ${R} ms`}return A},clear:S,destroy:()=>{S()}}}function o(h){const f=`${(h.gpuElapsed/1e3/1e3).toFixed(2)}`,y=`${(h.gpuAvg/1e3/1e3).toFixed(2)}`,_=`${h.cpuElapsed.toFixed(2)}`,g=`${h.cpuAvg.toFixed(2)}`;return`${h.label} ${f} ms (avg. ${y} ms) | CPU: ${_} ms (avg. ${g} ms)`}function s(h){h.map(f=>{const y=o(f);f.children.length||f.calls||f.note?(console.groupCollapsed(y),f.calls&&console.log(f.calls),f.note&&console.log(f.note),s(f.children),console.groupEnd()):console.log(y)})}return i1}var CU;function lQ(){if(CU)return qo;CU=1,Object.defineProperty(qo,"__esModule",{value:!0}),qo.getGLContext=g,qo.getErrorDescription=a,qo.checkError=d,qo.glEnumToString=p,qo.readPixels=S,qo.createContext=R;const e=on(),t=Sw(),r=nt(),n=Ct(),i=Vne(),c=Ene(),o=kne(),s=Fne(),h=Rn(),f=ci(),y=bn(),_=Cw();function g(E,I){function B(O){try{return E.getContext(O,I)}catch{return null}}const w=(I?.preferWebGl1?null:B("webgl2"))||B("webgl")||B("experimental-webgl");return n.isDebugMode&&console.log(`isWebgl2: ${(0,e.isWebGL2)(w)}`),w}function a(E,I){switch(I){case E.NO_ERROR:return"no error";case E.INVALID_ENUM:return"invalid enum";case E.INVALID_VALUE:return"invalid value";case E.INVALID_OPERATION:return"invalid operation";case E.INVALID_FRAMEBUFFER_OPERATION:return"invalid framebuffer operation";case E.OUT_OF_MEMORY:return"out of memory";case E.CONTEXT_LOST_WEBGL:return"context lost"}return"unknown error"}function d(E,I){const B=E.getError();B!==E.NO_ERROR&&console.log(`WebGL error: '${a(E,B)}'${I?` (${I})`:""}`)}function p(E,I){const B=[];for(const w in E)E[w]===I&&B.push(w);return B.length?B.join(" | "):`0x${I.toString(16)}`}function u(E){const I=E.getParameter(E.MAX_TEXTURE_IMAGE_UNITS);for(let O=0;O<I;++O)E.activeTexture(E.TEXTURE0+O),E.bindTexture(E.TEXTURE_2D,null),E.bindTexture(E.TEXTURE_CUBE_MAP,null),(0,e.isWebGL2)(E)&&(E.bindTexture(E.TEXTURE_2D_ARRAY,null),E.bindTexture(E.TEXTURE_3D,null));const B=E.createBuffer();E.bindBuffer(E.ARRAY_BUFFER,B);const w=E.getParameter(E.MAX_VERTEX_ATTRIBS);for(let O=0;O<w;++O)E.vertexAttribPointer(O,1,E.FLOAT,!1,0,0);E.bindBuffer(E.ARRAY_BUFFER,null),E.bindBuffer(E.ELEMENT_ARRAY_BUFFER,null),E.bindRenderbuffer(E.RENDERBUFFER,null),E.bindFramebuffer(E.FRAMEBUFFER,null),(0,e.isWebGL2)(E)&&(E.bindBuffer(E.UNIFORM_BUFFER,null),E.bindBuffer(E.PIXEL_PACK_BUFFER,null))}const m=new Uint8Array(4);function v(E,I,B){E.getSyncParameter(I,E.SYNC_STATUS)===E.SIGNALED?(E.deleteSync(I),B()):r.Scheduler.setImmediate(v,E,I,B)}function b(E,I){const B=E.fenceSync(E.SYNC_GPU_COMMANDS_COMPLETE,0);B?r.Scheduler.setImmediate(v,E,B,I):(console.warn("Could not create a WebGLSync object"),E.readPixels(0,0,1,1,E.RGBA,E.UNSIGNED_BYTE,m),I())}let P=!1;function C(E){return new Promise(I=>{(0,e.isWebGL2)(E)?b(E,I):(P||(console.info("Sync object not supported in WebGL"),P=!0),l(E),I())})}function l(E){E.bindFramebuffer(E.FRAMEBUFFER,null),E.readPixels(0,0,1,1,E.RGBA,E.UNSIGNED_BYTE,m)}function S(E,I,B,w,O,F){if(n.isDebugMode&&(0,t.checkFramebufferStatus)(E),F instanceof Uint8Array)E.readPixels(I,B,w,O,E.RGBA,E.UNSIGNED_BYTE,F);else if(F instanceof Float32Array)E.readPixels(I,B,w,O,E.RGBA,E.FLOAT,F);else if(F instanceof Int32Array&&(0,e.isWebGL2)(E))E.readPixels(I,B,w,O,E.RGBA_INTEGER,E.INT,F);else throw new Error("unsupported readPixels buffer type");
4100n.isDebugMode&&d(E)}function T(E,I){I?E.bindFramebuffer(E.FRAMEBUFFER,I.framebuffer):E.bindFramebuffer(E.FRAMEBUFFER,null)}function A(E,I,B){var w,O;let F=(w=I?.framebufferWidth)!==null&&w!==void 0?w:E.drawingBufferWidth;B==="screen-space"&&(F*=2);const L=(O=I?.framebufferHeight)!==null&&O!==void 0?O:E.drawingBufferHeight;return{width:F,height:L}}function x(E,I,B,w){const O=I==="vertex"?E.VERTEX_SHADER:E.FRAGMENT_SHADER,F=E[`${B.toUpperCase()}_${w.toUpperCase()}`];return E.getShaderPrecisionFormat(O,F)}function M(E,I){return{lowFloat:x(E,I,"low","float"),mediumFloat:x(E,I,"medium","float"),highFloat:x(E,I,"high","float"),lowInt:x(E,I,"low","int"),mediumInt:x(E,I,"medium","int"),highInt:x(E,I,"high","int")}}function D(){return{resourceCounts:{attribute:0,elements:0,pixelPack:0,framebuffer:0,program:0,renderbuffer:0,shader:0,texture:0,cubeTexture:0,vertexArray:0},drawCount:0,instanceCount:0,instancedDrawCount:0,calls:{drawInstanced:0,drawInstancedBase:0,multiDrawInstancedBase:0,counts:0},culled:{lod:0,frustum:0,occlusion:0}}}function V(E,I){return{maxTextureSize:E.getParameter(E.MAX_TEXTURE_SIZE),max3dTextureSize:(0,e.isWebGL2)(E)?E.getParameter(E.MAX_3D_TEXTURE_SIZE):0,maxRenderbufferSize:E.getParameter(E.MAX_RENDERBUFFER_SIZE),maxDrawBuffers:I.drawBuffers?E.getParameter(I.drawBuffers.MAX_DRAW_BUFFERS):0,maxTextureImageUnits:E.getParameter(E.MAX_TEXTURE_IMAGE_UNITS),maxVertexTextureImageUnits:E.getParameter(E.MAX_VERTEX_TEXTURE_IMAGE_UNITS)}}function R(E,I={}){const B=(0,i.createExtensions)(E),w=(0,c.createState)(E,B),O=D(),F=V(E,B),L=(0,o.createResources)(E,w,O,B,F),U=(0,_.createTimer)(E,B,O);if(F.maxVertexTextureImageUnits<8)throw new Error('Need "MAX_VERTEX_TEXTURE_IMAGE_UNITS" >= 8');const q={vertex:M(E,"vertex"),fragment:M(E,"fragment")};n.isDebugMode&&console.log({parameters:F,shaderPrecisionFormats:q});const N=B.provokingVertex;N?.provokingVertex(N.FIRST_VERTEX_CONVENTION);let k=!1;const j=new h.Subject;let H=I.pixelScale||1;const G={session:void 0,layer:void 0,changed:new h.Subject,clear:()=>{G.layer=void 0,G.session=void 0,G.changed.next()}},z=new Set;return{gl:E,isWebGL2:(0,e.isWebGL2)(E),get pixelRatio(){return(typeof window<"u"&&window.devicePixelRatio||1)*(H||1)},extensions:B,state:w,stats:O,resources:L,timer:U,get maxTextureSize(){return F.maxTextureSize},get max3dTextureSize(){return F.max3dTextureSize},get maxRenderbufferSize(){return F.maxRenderbufferSize},get maxDrawBuffers(){return F.maxDrawBuffers},get maxTextureImageUnits(){return F.maxTextureImageUnits},get shaderPrecisionFormats(){return q},namedComputeRenderables:Object.create(null),namedFramebuffers:Object.create(null),namedTextures:Object.create(null),get isContextLost(){return k||E.isContextLost()},contextRestored:j,setContextLost:()=>{k=!0,U.clear()},handleContextRestored:W=>{(0,i.resetExtensions)(E,B),w.reset(),w.currentMaterialId=-1,w.currentProgramId=-1,w.currentRenderItemId=-1,L.reset(),z.forEach(X=>X.reset()),W?.(),k=!1,j.next((0,f.now)())},xr:{get session(){return G.session},changed:G.changed,set:async(W,X)=>{var Y,K;if(G.session!==W&&(await((Y=G.session)===null||Y===void 0?void 0:Y.end()),W!==void 0))try{await E.makeXRCompatible(),G.session=W,G.layer=new XRWebGLLayer(G.session,E,{antialias:!0,alpha:!0,depth:!0,framebufferScaleFactor:H*((K=X?.resolutionScale)!==null&&K!==void 0?K:1)}),await G.session.updateRenderState({baseLayer:G.layer}),G.session.addEventListener("end",G.clear),G.changed.next()}catch(Q){throw W?await W.end():(G.layer=void 0,G.session=void 0),Q}},end:async()=>{var W;return(W=G.session)===null||W===void 0?void 0:W.end()}},setPixelScale:W=>{H=W},createRenderTarget:(W,X,Y,K,Q,J)=>{const ae=(0,s.createRenderTarget)(E,L,W,X,Y,K,Q,J);return z.add(ae),{...ae,destroy:()=>{ae.destroy(),z.delete(ae)}}},createDrawTarget:()=>({id:-1,texture:(0,y.createNullTexture)(E),framebuffer:(0,t.createNullFramebuffer)(),depthRenderbuffer:null,getByteCount:()=>0,getWidth:()=>{var W;return A(E,G.layer,(W=G.session)===null||W===void 0?void 0:W.interactionMode).width},getHeight:()=>{var W;return A(E,G.layer,(W=G.session)===null||W===void 0?void 0:W.interactionMode).height},bind:()=>{T(E,G.layer)},setSize:()=>{},reset:()=>{},destroy:()=>{}}),bindDrawingBuffer:()=>T(E,G.layer),getDrawingBufferSize:()=>{var W;
4100return A(E,G.layer,(W=G.session)===null||W===void 0?void 0:W.interactionMode)},readPixels:(W,X,Y,K,Q)=>{S(E,W,X,Y,K,Q)},waitForGpuCommandsComplete:()=>C(E),waitForGpuCommandsCompleteSync:()=>l(E),getFenceSync:()=>(0,e.isWebGL2)(E)?E.fenceSync(E.SYNC_GPU_COMMANDS_COMPLETE,0):null,checkSyncStatus:W=>(0,e.isWebGL2)(E)?E.getSyncParameter(W,E.SYNC_STATUS)===E.SIGNALED?(E.deleteSync(W),!0):!1:!0,deleteSync:W=>{(0,e.isWebGL2)(E)&&E.deleteSync(W)},clear:(W,X,Y,K)=>{const Q=A(E,G.layer);T(E,G.layer),w.enable(E.SCISSOR_TEST),w.depthMask(!0),w.colorMask(!0,!0,!0,!0),w.clearColor(W,X,Y,K),w.viewport(0,0,Q.width,Q.height),w.scissor(0,0,Q.width,Q.height),E.clear(E.COLOR_BUFFER_BIT|E.DEPTH_BUFFER_BIT)},checkError:W=>{d(E,W)},checkFramebufferStatus:W=>{(0,t.checkFramebufferStatus)(E,W)},destroy:W=>{var X,Y,K,Q;L.destroy(),u(E),(X=G.session)===null||X===void 0||X.removeEventListener("end",G.clear),(Y=G.session)===null||Y===void 0||Y.end(),j.complete(),G.changed.complete(),W?.doNotForceWebGLContextLoss||((K=E.getExtension("WEBGL_lose_context"))===null||K===void 0||K.loseContext(),(Q=E.getExtension("STACKGL_destroy_context"))===null||Q===void 0||Q.destroy())}}}return qo}var Wx={},gu={},hd={},$x={},a1={},PU;function Ut(){return PU||(PU=1,Object.defineProperty(a1,"__esModule",{value:!0}),a1.ColorThemeCategory=void 0,a1.ColorThemeCategory={Atom:"Atom Property",Chain:"Chain Property",Residue:"Residue Property",Symmetry:"Symmetry",Validation:"Validation",Misc:"Miscellaneous"}),a1}var TU;function Lne(){return TU||(TU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CarbohydrateSymbolColorThemeProvider=e.CarbohydrateSymbolColorThemeParams=void 0,e.getCarbohydrateSymbolColorThemeParams=f,e.CarbohydrateSymbolColorTheme=y;const t=Ke(),r=xf(),n=vt(),i=Ne(),c=qa(),o=Ut(),s=(0,n.Color)(13421772),h="Assigns colors according to the Symbol Nomenclature for Glycans (SNFG).";e.CarbohydrateSymbolColorThemeParams={};function f(_){return e.CarbohydrateSymbolColorThemeParams}function y(_,g){let a;if(_.structure){const{elements:d,getElementIndices:p}=_.structure.carbohydrates,u=(m,v)=>{if(!t.Unit.isAtomic(m))return s;const b=p(m,v);return b.length>0?d[b[0]].component.color:s};a=(m,v)=>v?r.SaccharideColors.Secondary:t.StructureElement.Location.is(m)?u(m.unit,m.element):t.Bond.isLocation(m)?u(m.aUnit,m.aUnit.elements[m.aIndex]):s}else a=()=>s;return{factory:y,granularity:"group",color:a,props:g,description:h,legend:(0,c.TableLegend)(r.MonosaccharidesColorTable)}}e.CarbohydrateSymbolColorThemeProvider={name:"carbohydrate-symbol",label:"Carbohydrate Symbol",category:o.ColorThemeCategory.Residue,factory:y,getParams:f,defaultValues:i.ParamDefinition.getDefaultValues(e.CarbohydrateSymbolColorThemeParams),isApplicable:_=>!!_.structure&&_.structure.models.some(g=>t.Model.hasCarbohydrate(g))}})($x)),$x}var Xx={},xU;function wS(){return xU||(xU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.UniformColorThemeProvider=e.UniformColorThemeParams=void 0,e.getUniformColorThemeParams=h,e.UniformColorTheme=f;const t=vt(),r=Ne(),n=qa(),i=et(),c=Ut(),o=(0,t.Color)(13421772),s="Gives everything the same, uniform color.";e.UniformColorThemeParams={value:r.ParamDefinition.Color(o),saturation:r.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),lightness:r.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1})};function h(y){return e.UniformColorThemeParams}function f(y,_){let g=(0,i.defaults)(_.value,o);return g=t.Color.saturate(g,_.saturation),g=t.Color.lighten(g,_.lightness),{factory:f,granularity:"uniform",color:()=>g,props:_,description:s,legend:(0,n.TableLegend)([["uniform",g]])}}e.UniformColorThemeProvider={name:"uniform",label:"Uniform",category:c.ColorThemeCategory.Misc,factory:f,getParams:h,defaultValues:r.ParamDefinition.getDefaultValues(e.UniformColorThemeParams),isApplicable:y=>!0}})(Xx)),Xx}var Kx={},o1={},Yx={},Qx={},AU;function Vr(){return AU||(AU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ColorNamesValueMap=e.ColorNames=void 0;const t=wn();e.ColorNames=(0,t.ColorMap)({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflower:6591981,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,laserlemon:16777044,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrod:16448210,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,maroon2:8323
4100072,maroon3:11546720,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,purple2:8323199,purple3:10494192,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074}),e.ColorNamesValueMap=(function(){const r=new Map;return Object.keys(e.ColorNames).forEach(n=>{r.set(e.ColorNames[n],n)}),r})()})(Qx)),Qx}var MU;function dQ(){return MU||(MU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DistinctColorsParams=void 0,e.distinctColors=d;const t=FD(),r=LD(),n=vr(),i=et(),c=Ne(),o=Vr();e.DistinctColorsParams={hue:c.ParamDefinition.Interval([1,360],{min:0,max:360,step:1}),chroma:c.ParamDefinition.Interval([40,70],{min:0,max:100,step:1}),luminance:c.ParamDefinition.Interval([15,85],{min:0,max:100,step:1}),sort:c.ParamDefinition.Select("contrast",c.ParamDefinition.arrayToOptions(["none","contrast"]),{description:"no sorting leaves colors approximately ordered by hue"}),clusteringStepCount:c.ParamDefinition.Numeric(50,{min:10,max:200,step:1},{isHidden:!0}),minSampleCount:c.ParamDefinition.Numeric(800,{min:100,max:5e3,step:100},{isHidden:!0}),sampleCountFactor:c.ParamDefinition.Numeric(5,{min:1,max:100,step:1},{isHidden:!0})};const s=2,h=[0,0,0],f=[0,0,0];function y(p,u){return t.Lab.toHcl(h,p),t.Lab.fromColor(f,t.Lab.toColor(p)),h[0]>=u.hue[0]&&h[0]<=u.hue[1]&&h[1]>=u.chroma[0]&&h[1]<=u.chroma[1]&&h[2]>=u.luminance[0]&&h[2]<=u.luminance[1]&&f[0]>=p[0]-s&&f[0]<=p[0]+s&&f[1]>=p[1]-s&&f[1]<=p[1]+s&&f[2]>=p[2]-s&&f[2]<=p[2]+s}function _(p){const u=p.slice(0),m=[u.shift()];for(;u.length>0;){const v=m[m.length-1];let b=0,P=Number.NEGATIVE_INFINITY;for(let C=0;C<u.length;++C){const l=t.Lab.distance(v,u[C]);l>P&&(P=l,b=C)}m.push(u.splice(b,1)[0])}return m}function g(p,u){const m=new Map,v=Math.ceil(Math.cbrt(p)),b=(0,r.Hcl)(),P=Math.max((u.hue[1]-u.hue[0])/v,1),C=Math.max((u.chroma[1]-u.chroma[0])/v,1),l=Math.max((u.luminance[1]-u.luminance[0])/v,1);for(let S=u.hue[0]+P/2;S<=u.hue[1];S+=P)for(let T=u.chroma[0]+C/2;T<=u.chroma[1];T+=C)for(let A=u.luminance[0]+l/2;A<=u.luminance[1];A+=l){const x=t.Lab.fromHcl((0,t.Lab)(),r.Hcl.set(b,S,T,A));y(x,u)&&m.set(t.Lab.toColor(x),x)}return Array.from(m.values())}function a(p,u){let m=1/0,v=0;for(let b=0;b<p.length;b++){const P=t.Lab.distance(u,p[b]);P<m&&(m=P,v=b)}return v}function d(p,u={}){const m={...c.ParamDefinition.getDefaultValues(e.DistinctColorsParams),...u};if(p<=0)return[];const v=g(Math.max(m.minSampleCount,p*m.sampleCountFactor),m);if(v.length<p)return console.warn("Not enough samples to generate distinct colors, increase sample count."),new Array(p).fill(o.ColorNames.lightgrey);const b=[],P=[],C=Math.floor(v.length/p);for(let S=0;S<v.length&&(b.push(v[S]),P.push([]),!(b.length>=p));S+=C);for(let S=1;S<=m.clusteringStepCount;++S){const T=(0,n.deepClone)(P),A=(0,n.deepClone)(v);for(let M=0;M<b.length;++M){const D=a(A,b[M]);T[M].push(v[D]),A.splice(D,1)}for(let M=0;M<A.length;++M){const D=a(b,v[M]);T[D].push(v[M])}const x=(0,n.deepClone)(b);for(let M=0;M<T.length;++M){const D=T[M],V=D.length;if(V===0)continue;let R=0,E=0,I=0;for(const F of D)R+=F[0],E+=F[1],I+=F[2];const B=R/V,w=E/V,O=I/V;b[M]=[B,w,O]}if((0,i.deepEqual)(x,b))break}return(m.sort==="contrast"?_(b):b).map(S=>t.Lab.toColor(S))}})(Yx)),Yx}var DU;function On(){if(DU)return o1;DU=1,Object.defineProperty(o1,"__esModule",{value:!0}
4100),o1.getPaletteParams=o,o1.getPalette=h;const e=qa(),t=Ne(),r=dQ(),n=pa(),i=ND(),c={type:"generate",colorList:"red-yellow-blue"};function o(f={}){const y={...c,...f};return{palette:t.ParamDefinition.MappedStatic(y.type,{colors:t.ParamDefinition.Group({list:t.ParamDefinition.ColorList(y.colorList)},{isFlat:!0}),generate:t.ParamDefinition.Group({...r.DistinctColorsParams,maxCount:t.ParamDefinition.Numeric(75,{min:1,max:250,step:1})},{isFlat:!0})},{options:[["colors","Color List"],["generate","Generate Distinct"]]})}}t.ParamDefinition.getDefaultValues(o());const s={valueLabel:f=>`${f+1}`,minLabel:"Start",maxLabel:"End"};function h(f,y,_={}){var g;let a,d;if(y.palette.name==="colors"&&y.palette.params.list.kind==="interpolate"){const{list:p}=y.palette.params,u=[0,f-1],{minLabel:m,maxLabel:v}={...s,..._};let b=p.colors;b.length===0&&(b=(0,n.getColorListFromName)(c.colorList).list);const P=i.ColorScale.create({listOrName:b,domain:u,minLabel:m,maxLabel:v});d=P.legend,a=P.color}else{let p;y.palette.name==="colors"?(p=y.palette.params.list.colors.map(b=>Array.isArray(b)?b[0]:b),p.length===0&&(p=(0,n.getColorListFromName)("dark-2").list.map(b=>Array.isArray(b)?b[0]:b))):(f=Math.min(f,y.palette.params.maxCount),p=(0,r.distinctColors)(f,y.palette.params));const u=(g=_.valueLabel)!==null&&g!==void 0?g:s.valueLabel,m=p.length,v=[];for(let b=0;b<f;++b){const P=b%m;v[P]===void 0?v[P]=[u(b),p[P]]:v[P][0]+=`, ${u(b)}`}d=(0,e.TableLegend)(v),a=b=>p[b%m]}return{color:a,legend:d}}return o1}var IU;function Uf(){return IU||(IU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ChainIdColorThemeProvider=e.ChainIdColorThemeParams=void 0,e.getChainIdColorThemeParams=f,e.ChainIdColorTheme=d;const t=Ke(),r=vt(),n=Ne(),i=On(),c=Ut(),o="many-distinct",s=(0,r.Color)(16448250),h="Gives every chain a color based on its `asym_id` value.";e.ChainIdColorThemeParams={asymId:n.ParamDefinition.Select("auth",n.ParamDefinition.arrayToOptions(["auth","label"])),...(0,i.getPaletteParam
4100s)({type:"colors",colorList:o})};function f(p){var u;const m=n.ParamDefinition.clone(e.ChainIdColorThemeParams);return!((u=p.structure)===null||u===void 0)&&u.models.some(v=>v.coarseHierarchy.isDefined)&&(m.asymId.defaultValue="label"),m}function y(p,u){switch(p.kind){case t.Unit.Kind.Atomic:return u==="auth"?t.StructureProperties.chain.auth_asym_id:t.StructureProperties.chain.label_asym_id;case t.Unit.Kind.Spheres:case t.Unit.Kind.Gaussians:return t.StructureProperties.coarse.asym_id}}function _(p,u){const m=y(p.unit,u)(p);return p.structure.root.models.length>1?g(p.unit.model,m):m}function g(p,u){return`${u}|${(t.Model.Index.get(p).value||0)+1}`}function a(p,u){const m=new Map;for(const v of p.models){const b=t.Model.AsymIdOffset.get(v).value,P=(u==="auth"?b?.auth:b?.label)||0;let C=0;v.properties.structAsymMap.forEach(({auth_id:l},S)=>{const T=u==="auth"?l:S,A=p.models.length>1?g(v,T):T;m.has(A)||(m.set(A,C+P),++C)})}return m}function d(p,u){let m,v;if(p.structure){const b=t.StructureElement.Location.create(p.structure.root),P=a(p.structure.root,u.asymId),C=Array.from(P.keys()),l=T=>C[T],S=(0,i.getPalette)(P.size,u,{valueLabel:l});v=S.legend,m=T=>{let A;if(t.StructureElement.Location.is(T)){const x=_(T,u.asymId);A=P.get(x)}else if(t.Bond.isLocation(T)){b.unit=T.aUnit,b.element=T.aUnit.elements[T.aIndex];const x=_(b,u.asymId);A=P.get(x)}return A===void 0?s:S.color(A)}}else m=()=>s;return{factory:d,granularity:"group",color:m,props:u,description:h,legend:v}}e.ChainIdColorThemeProvider={name:"chain-id",label:"Chain Id",category:c.ColorThemeCategory.Chain,factory:d,getParams:f,defaultValues:n.ParamDefinition.getDefaultValues(e.ChainIdColorThemeParams),isApplicable:p=>!!p.structure}})(Kx)),Kx}var Zx={},wU;function Nne(){return wU||(wU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ElementIndexColorThemeProvider=e.ElementIndexColorThemeParams=void 0,e.getElementIndexColorThemeParams=f,e.ElementIndexColorTheme=y;const t=vt(),r=Ke(),n=nn(),i=Ne(),c=On(),o=Ut(),s=(0,t.Color)(13421772),h="Gives every element (atom or coarse sphere/gaussian) a unique color based on the position (index) of the element in the list of elements in the structure.";
4100e.ElementIndexColorThemeParams={...(0,c.getPaletteParams)({type:"colors",colorList:"red-yellow-blue"})};function f(_){return e.ElementIndexColorThemeParams}function y(_,g){let a,d;if(_.structure){const{units:p}=_.structure.root,u=p.length,m=new Map,v=new Map;let b=0;for(let C=0;C<u;++C)m.set(C,b),b+=p[C].elements.length,v.set(p[C].id,C);const P=(0,c.getPalette)(b,g);d=P.legend,a=C=>{if(r.StructureElement.Location.is(C)){const l=v.get(C.unit.id),S=n.OrderedSet.findPredecessorIndex(p[l].elements,C.element);return P.color(m.get(l)+S)}else if(r.Bond.isLocation(C)){const l=v.get(C.aUnit.id),S=n.OrderedSet.findPredecessorIndex(p[l].elements,C.aUnit.elements[C.aIndex]);return P.color(m.get(l)+S)}return s}}else a=()=>s;return{factory:y,granularity:"groupInstance",preferSmoothing:!0,color:a,props:g,description:h,legend:d}}e.ElementIndexColorThemeProvider={name:"element-index",label:"Element Index",category:o.ColorThemeCategory.Atom,factory:y,getParams:f,defaultValues:i.ParamDefinition.getDefaultValues(e.ElementIndexColorThemeParams),isApplicable:_=>!!_.structure}})(Zx)),Zx}var Jx={},aP={},VU;function VS(){if(VU)return aP;VU=1,Object.defineProperty(aP,"__esModule",{value:!0}),aP.getColorMapParams=r;const e=Ne(),t=vr();function r(n){const i={};return(0,t.objectForEach)(n,(c,o)=>{i[o]=e.ParamDefinition.Color(n[o])}),i}return aP}var e3={},EU;function a2(){return EU||(EU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.OperatorNameColorThemeProvider=e.OperatorNameColorThemeParams=void 0,e.getOperatorNameColorThemeParams=f,e.OperatorNameColorTheme=_;const t=vt(),r=Ke(),n=Ne(),i=On(),c=Ut(),o="many-distinct",s=(0,t.Color)(13421772),h="Assigns a color based on the operator name of a transformed chain.";
4100e.OperatorNameColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:o})};function f(g){return n.ParamDefinition.clone(e.OperatorNameColorThemeParams)}function y(g){const a=new Map;for(let d=0,p=g.units.length;d<p;++d){const u=g.units[d].conformation.operator.name;a.has(u)||a.set(u,a.size)}return a}function _(g,a){let d,p;if(g.structure){const u=y(g.structure.root),m=Array.from(u.keys()),v=P=>m[P],b=(0,i.getPalette)(u.size,a,{valueLabel:v});p=b.legend,d=P=>{let C;if(r.StructureElement.Location.is(P)){const l=P.unit.conformation.operator.name;C=u.get(l)}else if(r.Bond.isLocation(P)){const l=P.aUnit.conformation.operator.name;C=u.get(l)}return C===void 0?s:b.color(C)}}else d=()=>s;return{factory:_,granularity:"instance",color:d,props:a,description:h,legend:p}}e.OperatorNameColorThemeProvider={name:"operator-name",label:"Operator Name",category:c.ColorThemeCategory.Symmetry,factory:_,getParams:f,defaultValues:n.ParamDefinition.getDefaultValues(e.OperatorNameColorThemeParams),isApplicable:g=>!!g.structure}})(e3)),e3}var t3={},BU;function ES(){return BU||(BU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.EntityIdColorThemeProvider=e.EntityIdColorThemeParams=void 0,e.getEntityIdColorThemeParams=y,e.EntityIdColorTheme=p;const t=Ke(),r=vt(),n=Ne(),i=On(),c=Ut(),o="many-distinct",s=(0,r.Color)(16448250),h=(0,r.Color)(16715021),f="Gives every chain a color based on its `label_entity_id` value.";
4100e.EntityIdColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:o}),overrideWater:n.ParamDefinition.Boolean(!1,{description:"Override the color for water molecules."}),waterColor:n.ParamDefinition.Color(h,{hideIf:u=>!u.overrideWater,description:"Color for water molecules (if overrideWater is true)."})};function y(u){return n.ParamDefinition.clone(e.EntityIdColorThemeParams)}function _(u,m){return`${u}|${m}`}function g(u){const m=new WeakMap;let v=0;for(let b=0,P=u.models.length;b<P;++b){const C=u.models[b].sourceData;m.has(C)||m.set(C,v++)}return m}function a(u,m){var v;const b=new Map;for(let P=0,C=u.models.length;P<C;++P){const l=(v=m.get(u.models[P].sourceData))!==null&&v!==void 0?v:-1,{label_entity_id:S}=u.models[P].atomicHierarchy.chains;for(let A=0,x=S.rowCount;A<x;++A){const M=_(S.value(A),l);b.has(M)||b.set(M,b.size)}const{coarseHierarchy:T}=u.models[P];if(T.isDefined){const{entity_id:A}=T.spheres;for(let M=0,D=A.rowCount;M<D;++M){const V=_(A.value(M),l);b.has(V)||b.set(V,b.size)}const{entity_id:x}=T.gaussians;for(let M=0,D=x.rowCount;M<D;++M){const V=_(x.value(M),l);b.has(V)||b.set(V,b.size)}}}return b}function d(u){switch(u.unit.kind){case t.Unit.Kind.Atomic:return t.StructureProperties.chain.label_entity_id(u);case t.Unit.Kind.Spheres:case t.Unit.Kind.Gaussians:return t.StructureProperties.coarse.entity_id(u)}}function p(u,m){let v,b;if(u.structure){const P=t.StructureElement.Location.create(u.structure.root),C=g(u.structure),l=a(u.structure.root,C),S=Array.from(l.keys()),T=x=>S[x],A=(0,i.getPalette)(l.size,m,{valueLabel:T});b=A.legend,v=x=>{var M;let D;if(t.StructureElement.Location.is(x))D=x;else if(t.Bond.isLocation(x))P.unit=x.aUnit,P.element=x.aUnit.elements[x.aIndex],D=P;else return s;const V=d(D),R=(M=C.get(D.unit.model.sourceData))!==null&&M!==void 0?M:-1;if(m.overrideWater){const B=D.unit.model.entities;if(B.data.type.value(B.getEntityIndex(V))==="water")return m.waterColor}const E=_(V,R),I=l.get(E);return I===void 0?s:A.color(I)}}else v=()=>s;return{factory:p,granularity:"group",color:v,props:m,description:f,legend:b}}e.EntityIdColorThemeProvider={name:"entity-id",label:"Entity Id",category:c.ColorThemeCategory.Chain,factory:p,getParams:y,defaultValues:n.ParamDefinition.getDefaultValues(e.EntityIdColorThemeParams),isApplicable:u=>!!u.structure}})(t3)),t3}var r3={},RU;function BS(){return RU||(RU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.EntitySourceColorThemeProvider=e.EntitySourceColorThemeParams=void 0,e.getEntitySourceColorThemeParams=a,e.EntitySourceColorTheme=b;const t=Ke(),r=vt(),n=Ne(),i=Z_(),c=On(),o=Df(),s=pa(),h=Mi(),f=Ut(),y="dark-2",_=(0,r.Color)(16448250),g="Gives ranges of a polymer chain a color based on the entity source it originates from (e.g. gene, plasmid, organism).";
4100e.EntitySourceColorThemeParams={...(0,c.getPaletteParams)({type:"colors",colorList:y})};function a(P){const C=n.ParamDefinition.clone(e.EntitySourceColorThemeParams);return P.structure&&m(P.structure.root.models).srcKeySerialMap.size>s.ColorLists[y].list.length&&(C.palette.defaultValue.name="colors",C.palette.defaultValue.params={...C.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,s.getColorListFromName)(y).list}}),C}function d(P,C){return`${P}|${C}`}function p(P,C,l,S,T,A){return`${P}|${C}|${l}|${A||T||S}`}function u(P,C,l,S,T,A,x,M){const{entity_id:D,pdbx_src_id:V,pdbx_beg_seq_num:R,pdbx_end_seq_num:E}=T;for(let I=0,B=T._rowCount;I<B;++I){const w=D.value(I),O=d(l,w);let F;if(P.has(O))F=P.get(O);else{const H=S.entities.getEntityIndex(w),G=S.sequence.sequences[H].sequence;F=new Int16Array(G.length),P.set(O,F)}const L=x?x.value(I):"",U=M?M.value(I)[0]:"",q=p(l,w,A.value(I),V.value(I),L,U),N=R.valueKind(I)===i.Column.ValueKinds.Present?R.value(I):1,k=E.valueKind(I)===i.Column.ValueKinds.Present?E.value(I):F.length;let j;C.has(q)?j=C.get(q):(j=C.size+1,C.set(q,j));for(let H=N,G=k;H<=G;++H)F[H-1]=j}}function m(P){const C=new Map,l=new Map;for(let S=0,T=P.length;S<T;++S){const A=P[S];if(!h.MmcifFormat.is(A.sourceData))continue;const{entity_src_gen:x,entity_src_nat:M,pdbx_entity_src_syn:D}=A.sourceData.data.db;u(C,l,S,A,x,x.pdbx_gene_src_scientific_name,x.plasmid_name,x.pdbx_gene_src_gene),u(C,l,S,A,M,M.pdbx_organism_scientific,M.pdbx_plasmid_name),u(C,l,S,A,D,D.organism_scientific)}return{seqToSrcByModelEntity:C,srcKeySerialMap:l}}function v(P){let C=0;return Array.from(P.keys()).map(l=>{const S=l.split("|"),T=S[2];return`${(0,o.isInteger)(S[3])?`Unnamed ${++C}`:S[3]}${T?` (${T})`:""}`})}function b(P,C){let l,S;if(P.structure){const T=t.StructureElement.Location.create(P.structure),{models:A}=P.structure.root,{seqToSrcByModelEntity:x,srcKeySerialMap:M}=m(A),D=v(M),V=I=>D[I],R=(0,c.getPalette)(M.size,C,{valueLabel:V});S=R.legend;const E=I=>{const B=A.indexOf(I.unit.model),w=t.StructureProperties.entity.id(I),O=d(B,w),F=x.get(O);if(F){const L=F[t.StructureProperties.residue.label_seq_id(I)-1]-1;return L===-1?_:R.color(L)}else return _};l=I=>t.StructureElement.Location.is(I)?E(I):t.Bond.isLocation(I)?(T.unit=I.aUnit,T.element=I.aUnit.elements[I.aIndex],E(T)):_}else l=()=>_;return{factory:b,granularity:"group",color:l,props:C,description:g,legend:S}}e.EntitySourceColorThemeProvider={name:"entity-source",label:"Entity Source",category:f.ColorThemeCategory.Chain,factory:b,getParams:a,defaultValues:n.ParamDefinition.getDefaultValues(e.EntitySourceColorThemeParams),isApplicable:P=>!!P.structure}})(r3)),r3}var n3={},OU;function RS(){return OU||(OU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ModelIndexColorThemeProvider=e.ModelIndexColorThemeParams=void 0,e.getModelIndexColorThemeParams=h,e.ModelIndexColorTheme=f;const t=vt(),r=Ke(),n=Ne(),i=On(),c=Ut(),o=(0,t.Color)(13421772),s="Gives every model a unique color based on its index.";
4100e.ModelIndexColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:"many-distinct"})};function h(y){return n.ParamDefinition.clone(e.ModelIndexColorThemeParams)}function f(y,_){var g;let a,d,p=-1;if(y.structure){const u=((g=r.Model.MaxIndex.get(y.structure.models[0]).value)!==null&&g!==void 0?g:-1)+1;p=u;const m=(0,i.getPalette)(u,_);d=m.legend,a=v=>r.StructureElement.Location.is(v)?m.color(r.Model.Index.get(v.unit.model).value||0):r.Bond.isLocation(v)?m.color(r.Model.Index.get(v.aUnit.model).value||0):o}else a=()=>o;return{factory:f,granularity:"instance",color:a,props:_,contextHash:p,description:s,legend:d}}e.ModelIndexColorThemeProvider={name:"model-index",label:"Model Index",category:c.ColorThemeCategory.Chain,factory:f,getParams:h,defaultValues:n.ParamDefinition.getDefaultValues(e.ModelIndexColorThemeParams),isApplicable:y=>!!y.structure&&y.structure.elementCount>0}})(n3)),n3}var i3={},kU;function OS(){return kU||(kU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureIndexColorThemeProvider=e.StructureIndexColorThemeParams=void 0,e.getStructureIndexColorThemeParams=h,e.StructureIndexColorTheme=f;const t=vt(),r=Ke(),n=Ne(),i=On(),c=Ut(),o=(0,t.Color)(13421772),s="Gives every structure a unique color based on its index.";
4100e.StructureIndexColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:"many-distinct"})};function h(y){return n.ParamDefinition.clone(e.StructureIndexColorThemeParams)}function f(y,_){var g;let a,d,p=-1;if(y.structure){const u=((g=r.Structure.MaxIndex.get(y.structure).value)!==null&&g!==void 0?g:-1)+1;p=u;const m=(0,i.getPalette)(u,_);d=m.legend,a=v=>r.StructureElement.Location.is(v)?m.color(r.Structure.Index.get(v.structure).value||0):r.Bond.isLocation(v)?m.color(r.Structure.Index.get(v.aStructure).value||0):o}else a=()=>o;return{factory:f,granularity:"instance",color:a,props:_,contextHash:p,description:s,legend:d}}e.StructureIndexColorThemeProvider={name:"structure-index",label:"Structure Index",category:c.ColorThemeCategory.Chain,factory:f,getParams:h,defaultValues:n.ParamDefinition.getDefaultValues(e.StructureIndexColorThemeParams),isApplicable:y=>!!y.structure&&y.structure.elementCount>0}})(i3)),i3}var a3={},FU;function fQ(){return FU||(FU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.UnitIndexColorThemeProvider=e.UnitIndexColorThemeParams=void 0,e.getUnitIndexColorThemeParams=y,e.UnitIndexColorTheme=_;const t=vt(),r=Ke(),n=Ne(),i=On(),c=pa(),o=Ut(),s="dark-2",h=(0,t.Color)(13421772),f="Gives every chain instance (single chain or collection of single elements) a unique color based on the position (index) of the chain in the list of chains in the structure.";
4100e.UnitIndexColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:s})};function y(g){const a=n.ParamDefinition.clone(e.UnitIndexColorThemeParams);return g.structure&&g.structure.root.units.length>c.ColorLists[s].list.length&&(a.palette.defaultValue.name="colors",a.palette.defaultValue.params={...a.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,c.getColorListFromName)(s).list}}),a}function _(g,a){let d,p;if(g.structure){const{units:u}=g.structure.root,m=(0,i.getPalette)(u.length,a);p=m.legend;const v=new Map;for(let b=0,P=u.length;b<P;++b)v.set(u[b].id,m.color(b));d=b=>r.StructureElement.Location.is(b)?v.get(b.unit.id):r.Bond.isLocation(b)?v.get(b.aUnit.id):h}else d=()=>h;return{factory:_,granularity:"instance",color:d,props:a,description:f,legend:p}}e.UnitIndexColorThemeProvider={name:"unit-index",label:"Chain Instance",category:o.ColorThemeCategory.Chain,factory:_,getParams:y,defaultValues:n.ParamDefinition.getDefaultValues(e.UnitIndexColorThemeParams),isApplicable:g=>!!g.structure}})(a3)),a3}var o3={},LU;function o2(){return LU||(LU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.TrajectoryIndexColorThemeProvider=e.TrajectoryIndexColorThemeParams=void 0,e.getTrajectoryIndexColorThemeParams=f,e.TrajectoryIndexColorTheme=y;const t=vt(),r=Ke(),n=Ne(),i=On(),c=Ut(),o=Dn(),s=(0,t.Color)(13421772),h="Gives every model (frame) a unique color based on the index in its trajectory.";
4100e.TrajectoryIndexColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:"purples"})};function f(_){return n.ParamDefinition.clone(e.TrajectoryIndexColorThemeParams)}function y(_,g){var a,d;let p,u,m=-1;if(_.structure){const{models:v}=_.structure.root;let b=0;for(const S of v)b=Math.max(b,((a=r.Model.TrajectoryInfo.get(S))===null||a===void 0?void 0:a.size)||0);const P=[b],C=(0,i.getPalette)(b,g);u=C.legend;const l=new Map;for(let S=0,T=v.length;S<T;++S){const A=((d=r.Model.TrajectoryInfo.get(v[S]))===null||d===void 0?void 0:d.index)||0;l.set(A,C.color(A)),P.push(A)}m=(0,o.hashFnv32a)(P),p=S=>r.StructureElement.Location.is(S)?l.get(r.Model.TrajectoryInfo.get(S.unit.model).index):r.Bond.isLocation(S)?l.get(r.Model.TrajectoryInfo.get(S.aUnit.model).index):s}else p=()=>s;return{factory:y,granularity:"instance",color:p,props:g,contextHash:m,description:h,legend:u}}e.TrajectoryIndexColorThemeProvider={name:"trajectory-index",label:"Trajectory Index",category:c.ColorThemeCategory.Chain,factory:y,getParams:f,defaultValues:n.ParamDefinition.getDefaultValues(e.TrajectoryIndexColorThemeParams),isApplicable:_=>!!_.structure&&_.structure.elementCount>0&&r.Model.TrajectoryInfo.get(_.structure.models[0]).size>1}})(o3)),o3}var NU;function mQ(){return NU||(NU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ElementSymbolColorThemeProvider=e.ElementSymbolColorThemeParams=e.ElementSymbolColors=void 0,e.getElementSymbolColorThemeParams=P,e.elementSymbolColor=C,e.ElementSymbolColorTheme=S;const t=vt(),r=Ke(),n=Ne(),i=qa(),c=wn(),o=VS(),s=Uf(),h=a2(),f=ES(),y=Gt(),_=BS(),g=RS(),a=OS(),d=Ut(),p=fQ(),u=wS(),m=o2();e.ElementSymbolColors=(0,t.ColorMap)({H:16777215,D:16777152,T:16777120,HE:14286847,LI:13402367,BE:12779264,B:16758197,C:9474192,N:3166456,O:16715021,F:9494608,NE:11789301,NA:11230450,MG:9109248,AL:12560038,SI:1578e4,P:16744448,S:16777008,CL:2093087,AR:8442339,K:9388244,CA:4062976,SC:15132390,TI:12567239,V:10921643,CR:9083335,MN:10255047,FE:14706227,CO:15765664,NI:5296208,CU:13140019,ZN:8224944,GA:12750735,GE:6721423,AS:12419299,SE:16752896,BR:10889513,KR:6076625,RB:7351984,SR:65280,Y:9764863,ZR:9756896,NB:7586505,MO:5551541,TC:3907230,RU:2396047,RH:687500,PD:27013,AG:12632256,CD:16767375,IN:10909043,SN:6717568,SB:10380213,TE:13924864,I:9699476,XE:9699476,CS:5707663,BA:51456,LA:7394559,CE:16777159,PR:14286791,ND:13107143,PM:10747847,SM:9437127,EU:6422471,GD:4587463,TB:3211207,DY:2097095,HO:65436,ER:58997,TM:54354,YB:48952,LU:43812,HF:5096191,TA:5089023,W:2200790,RE:2522539,OS:2516630,IR:1528967,PT:13684960,AU:16765219,HG:12105936,TL:10900557,PB:5724513,BI:10375093,PO:11230208,AT:7688005,RN:4358806,FR:4325478,RA:32e3,AC:7384058,TH:47871,PA:41471,U:36863,NP:33023,PU:27647,AM:5528818,CM:7888099,BK:9064419,CF:10565332,ES:11739092,FM:11739066,MD:11734438,NO:12389767,LR:13041766,RF:13369433,DB:13697103,SG:14221381,BH:14680120,HS:15073326,MT:15400998,DS:16777215,RG:16777215,CN:16777215,UUT:16777215,FL:16777215,UUP:16777215,LV:16777215,UUH:16777215});const v=(0,t.Color)(16777215),b="Assigns a color to every atom according to its chemical element.";e.ElementSymbolColorThemeParams={carbonColor:n.ParamDefinition.MappedStatic("chain-id",{"chain-id":n.ParamDefinition.Group(s.ChainIdColorThemeParams),"unit-index":n.ParamDefinition.Group(p.UnitIndexColorThemeParams,{label:"Chain Instance"}),"entity-id":n.ParamDefinition.Group(f.EntityIdColorThemeParams),"entity-source":n.ParamDefinition.Group(_.EntitySourceColorThemeParams),"operator-name":n.ParamDefinition.Group(h.OperatorNameColorThemeParams),"model-index":n.ParamDefinition.Group(g.ModelIndexColorThemeParams),"structure-index":n.ParamDefinition.Group(a.StructureIndexColorThemeParams),"trajectory-index":n.ParamDefinition.Group(m.TrajectoryIndexColorThemeParams),uniform:n.ParamDefinition.Group(u.UniformColorThemeParams),"element-symbol":n.ParamDefinition.EmptyGroup()},{description:"Use chain-id coloring for carbon atoms."}),saturation:n.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),lightness:n.ParamDefinition.Numeric(.2,{min:-6,max:6,step:.1}),colors:n.ParamDefinition.MappedStatic("default",{default:n.ParamDefinition.EmptyGroup(),custom:n.ParamDefinition.Group((0,o.getColorMapParams)(e.ElementSymbolColors))})};function P(T){return n.ParamDefinition.clone(e.ElementSymbolColorThemeParams)}function C(T,A){const x=T[A];return x===void 0?v:x}function l(T,A){switch(A.name){case"chain-id":return(0,s.ChainIdColorTheme)(T,A.params);case"unit-index":return(0,p.UnitIndexColorTheme)(T,A.params);case"entity-id":return(0,f.EntityIdColorTheme)(T,A.params);case"entity-source":return(0,_.EntitySourceColorTheme)(T,A.params);case"operator-name":return(0,h.OperatorNameColorTheme)(T,A.params);case"model-index":return(0,g.ModelIndexColorTheme)(T,A.params);case"structure-index":return(0,a.StructureIndexColorTheme)(T,A.params);case"trajectory-index":return(0,m.TrajectoryIndexColorTheme)(T,A.params);case"uniform":return(0,u.UniformColorTheme)(T,A.params);case"element-symbol":return;default:(0,y.assertUnreachable)(A)}}function S(T,A){var x;const M=(0,c.getAdjustedColorMap)(A.colors.name==="default"?e.ElementSymbolColors:A.colors.params,A.saturation,A.lightness),D=l(T,A.carbonColor),V=D?.color,R=(x=D?.contextHash)!==null&&x!==void 0?x:-1;function E(w,O){return V&&w==="C"?V(O,!1):C(M,w)}function I(w){if(r.StructureElement.Location.is(w)){if(r.Unit.isAtomic(w.unit)){const{type_symbol:O}=w.unit.model.atomicHierarchy.atoms;return E(O.value(w.element),w)}}else if(r.Bond.isLocation(w)&&r.Unit.isAtomic(w.aUnit)){const{type_symbol:O}=w.aUnit.model.atomicHierarchy.atoms,F=O.value(w.aUnit.elements[w.aIndex]);return E(F,w)}return v}const B=A.carbonColor.name==="operator-name"||A.carbonColor.name==="unit-index"?"groupInstance":"group";return{factory:S,granularity:B,preferSmoothing:!0,color:I,props:A,contextHash:R,description:b,legend:(0,i.TableLegend)(Object.keys(M).map(w=>[w,M[w]]))}}e.ElementSymbolColorThemeProvider={name:"element-symbol",label:"Element Symbol",category:d.ColorThemeCategory.Atom,factory:S,getParams:P,defaultValues:n.ParamDefinition.getDefaultValues(e.ElementSymbolColorThemeParams),isApplicable:T=>!!T.structure}})(Jx)),Jx}var s3={},qU;function s2(){return qU||(qU=1,(function(e){Object.defineProperty(e,"__esMo
4100dule",{value:!0}),e.MoleculeTypeColorThemeProvider=e.MoleculeTypeColorThemeParams=e.MoleculeTypeColors=void 0,e.getMoleculeTypeColorThemeParams=g,e.moleculeTypeColor=a,e.MoleculeTypeColorTheme=d;const t=vt(),r=Ke(),n=dt(),i=Sl(),c=Ne(),o=qa(),s=wn(),h=VS(),f=Ut();e.MoleculeTypeColors=(0,t.ColorMap)({water:3697840,ion:15729279,protein:12496596,RNA:16629894,DNA:12540695,PNA:4367514,saccharide:8374655});const y=(0,t.Color)(16777113),_="Assigns a color based on the molecule type of a residue.";e.MoleculeTypeColorThemeParams={saturation:c.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),lightness:c.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),colors:c.ParamDefinition.MappedStatic("default",{default:c.ParamDefinition.EmptyGroup(),custom:c.ParamDefinition.Group((0,h.getColorMapParams)(e.MoleculeTypeColors))})};function g(p){return e.MoleculeTypeColorThemeParams}function a(p,u,m){switch((0,i.getElementMoleculeType)(u,m)){case n.MoleculeType.Water:return p.water;case n.MoleculeType.Ion:return p.ion;case n.MoleculeType.Protein:return p.protein;case n.MoleculeType.RNA:return p.RNA;case n.MoleculeType.DNA:return p.DNA;case n.MoleculeType.PNA:return p.PNA;case n.MoleculeType.Saccharide:return p.saccharide}return y}function d(p,u){const m=(0,s.getAdjustedColorMap)(u.colors.name==="default"?e.MoleculeTypeColors:u.colors.params,u.saturation,u.lightness);function v(b){return r.StructureElement.Location.is(b)?a(m,b.unit,b.element):r.Bond.isLocation(b)?a(m,b.aUnit,b.aUnit.elements[b.aIndex]):y}return{factory:d,granularity:"group",color:v,props:u,description:_,legend:(0,o.TableLegend)(Object.keys(m).map(b=>[b,m[b]]).concat([["Other/unknown",y]]))}}e.MoleculeTypeColorThemeProvider={name:"molecule-type",label:"Molecule Type",category:f.ColorThemeCategory.Residue,factory:d,getParams:g,defaultValues:c.ParamDefinition.getDefaultValues(e.MoleculeTypeColorThemeParams),isApplicable:p=>!!p.structure}})(s3)),s3}var c3={},UU;function qne(){return UU||(UU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PolymerIdColorThemeProvider=e.PolymerIdColorThemeParams=void 0,e.getPolymerIdColorThemeParams=_,e.PolymerIdColorTheme=d;const t=Ke(),r=vt(),n=Ne(),i=On(),c=J_(),o=pa(),s=Ut(),h="dark-2",f=(0,r.Color)(16448250),y="Gives every polymer chain a color based on its `asym_id` value.";
4100e.PolymerIdColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:h})};function _(p){const u=n.ParamDefinition.clone(e.PolymerIdColorThemeParams);return p.structure&&a(p.structure.root).size>o.ColorLists[h].list.length&&(u.palette.defaultValue.name="colors",u.palette.defaultValue.params={...u.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,o.getColorListFromName)(h).list}}),u}function g(p){switch(p.kind){case t.Unit.Kind.Atomic:return t.StructureProperties.chain.label_asym_id;case t.Unit.Kind.Spheres:case t.Unit.Kind.Gaussians:return t.StructureProperties.coarse.asym_id}}function a(p){const u=new Map;for(let m=0,v=p.unitSymmetryGroups.length;m<v;++m){const b=p.unitSymmetryGroups[m].units[0],{model:P}=b;if(t.Unit.isAtomic(b)){const{chainAtomSegments:C,chains:l}=P.atomicHierarchy,S=c.Segmentation.transientSegments(C,b.elements);for(;S.hasNext;){const{index:T}=S.move(),A=l.label_entity_id.value(T),x=P.entities.getEntityIndex(A);if(P.entities.data.type.value(x)==="polymer"){const M=l.label_asym_id.value(T);u.has(M)||u.set(M,u.size)}}}else if(t.Unit.isCoarse(b)){const{chainElementSegments:C,asym_id:l,entity_id:S}=t.Unit.isSpheres(b)?P.coarseHierarchy.spheres:P.coarseHierarchy.gaussians,T=c.Segmentation.transientSegments(C,b.elements);for(;T.hasNext;){const{index:A}=T.move(),x=C.offsets[A],M=S.value(x),D=P.entities.getEntityIndex(M);if(P.entities.data.type.value(D)==="polymer"){const V=l.value(x);u.has(V)||u.set(V,u.size)}}}}return u}function d(p,u){let m,v;if(p.structure){const b=t.StructureElement.Location.create(p.structure),P=a(p.structure.root),C=Array.from(P.keys()),l=T=>C[T],S=(0,i.getPalette)(P.size,u,{valueLabel:l});v=S.legend,m=T=>{let A;if(t.StructureElement.Location.is(T)){const x=g(T.unit);A=P.get(x(T))}else if(t.Bond.isLocation(T)){const x=g(T.aUnit);b.unit=T.aUnit,b.element=T.aUnit.elements[T.aIndex],A=P.get(x(b))}return A===void 0?f:S.color(A)}}else m=()=>f;return{factory:d,granularity:"group",color:m,props:u,description:y,legend:v}}e.PolymerIdColorThemeProvider={name:"polymer-id",label:"Polymer Chain Id",category:s.ColorThemeCategory.Chain,factory:d,getParams:_,defaultValues:n.ParamDefinition.getDefaultValues(e.PolymerIdColorThemeParams),isApplicable:p=>!!p.structure}})(c3)),c3}var u3={},jU;function Une(){return jU||(jU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PolymerIndexColorThemeProvider=e.PolymerIndexColorThemeParams=void 0,e.getPolymerIndexColorThemeParams=y,e.PolymerIndexColorTheme=g;const t=vt(),r=Ke(),n=Ne(),i=On(),c=pa(),o=Ut(),s="dark-2",h=(0,t.Color)(13421772),f="Gives every polymer chain instance a unique color based on the position (index) of the polymer in the list of polymers in the structure.";
4100e.PolymerIndexColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:s})};function y(a){const d=n.ParamDefinition.clone(e.PolymerIndexColorThemeParams);return a.structure&&_(a.structure.root)>c.ColorLists[s].list.length&&(d.palette.defaultValue.name="colors",d.palette.defaultValue.params={...d.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,c.getColorListFromName)(s).list}}),d}function _(a){let d=0;const{units:p}=a;for(let u=0,m=p.length;u<m;++u)p[u].polymerElements.length>0&&++d;return d}function g(a,d){let p,u;if(a.structure){const m=(0,i.getPalette)(_(a.structure.root),d);u=m.legend;const{units:v}=a.structure.root,b=new Map;for(let P=0,C=0,l=v.length;P<l;++P)v[P].polymerElements.length>0&&(b.set(v[P].id,m.color(C)),++C);p=P=>{let C;return r.StructureElement.Location.is(P)?C=b.get(P.unit.id):r.Bond.isLocation(P)&&(C=b.get(P.aUnit.id)),C!==void 0?C:h}}else p=()=>h;return{factory:g,granularity:"instance",color:p,props:d,description:f,legend:u}}e.PolymerIndexColorThemeProvider={name:"polymer-index",label:"Polymer Chain Instance",category:o.ColorThemeCategory.Chain,factory:g,getParams:y,defaultValues:n.ParamDefinition.getDefaultValues(e.PolymerIndexColorThemeParams),isApplicable:a=>!!a.structure}})(u3)),u3}var l3={},GU;function pQ(){return GU||(GU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ResidueNameColorThemeProvider=e.ResidueNameColorThemeParams=e.ResidueNameColors=void 0,e.getResidueNameColorThemeParams=y,e.residueNameColor=a,e.ResidueNameColorTheme=d;const t=vt(),r=Ke(),n=Ne(),i=qa(),c=wn(),o=VS(),s=Ut();e.ResidueNameColors=(0,t.ColorMap)({ALA:9240460,ARG:124,ASN:16743536,ASP:10485826,CYS:16777072,GLN:16731212,GLU:6684672,GLY:15658734,HIS:7368959,ILE:19456,LEU:4546117,LYS:4671416,MET:12099650,PHE:5459026,PRO:5395026,SER:16740418,THR:12078080,TRP:5195264,TYR:9203788,VAL:16747775,A:14423100,G:3329330,I:10145074,C:16766720,T:4286945,U:4251856,DA:14423100,DG:3329330,DI:10145074,DC:16766720,DT:4286945,DU:4251856,APN:14423100,GPN:3329330,CPN:16766720,TPN:4286945});const h=(0,t.Color)(16711935),f="Assigns a color to every residue according to its name.";e.ResidueNameColorThemeParams={saturation:n.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),lightness:n.ParamDefinition.Numeric(1,{min:-6,max:6,step:.1}),colors:n.ParamDefinition.MappedStatic("default",{default:n.ParamDefinition.EmptyGroup(),custom:n.ParamDefinition.Group((0,o.getColorMapParams)(e.ResidueNameColors))})};function y(p){return e.ResidueNameColorThemeParams}function _(p,u){return p.model.atomicHierarchy.atoms.label_comp_id.value(u)}function g(p,u){const m=p.coarseElements.seq_id_begin.value(u),v=p.coarseElements.seq_id_end.value(u);if(m===v){const b=p.coarseElements.entityKey[u];return p.model.sequence.byEntityKey[b].sequence.compId.value(m-1)}}function a(p,u){const m=p[u];return m===void 0?h:m}function d(p,u){const m=(0,c.getAdjustedColorMap)(u.colors.name==="default"?e.ResidueNameColors:u.colors.params,u.saturation,u.lightness);function v(b){if(r.StructureElement.Location.is(b))if(r.Unit.isAtomic(b.unit)){const P=_(b.unit,b.element);return a(m,P)}else{const P=g(b.unit,b.element);if(P)return a(m,P)}else if(r.Bond.isLocation(b))if(r.Unit.isAtomic(b.aUnit)){const P=_(b.aUnit,b.aUnit.elements[b.aIndex]);return a(m,P)}else{const P=g(b.aUnit,b.aUnit.elements[b.aIndex]);if(P)return a(m,P)}return h}return{factory:d,granularity:"group",preferSmoothing:!0,color:v,props:u,description:f,legend:(0,i.TableLegend)(Object.keys(m).map(b=>[b,m[b]]).concat([["Unknown",h]]))}}e.ResidueNameColorThemeProvider={name:"residue-name",label:"Residue Name",category:s.ColorThemeCategory.Residue,factory:d,getParams:y,defaultValues:n.ParamDefinition.getDefaultValues(e.ResidueNameColorThemeParams),isApplicable:p=>!!p.structure}})(l3)),l3}var d3={},zU;function jne(){return zU||(zU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ResidueChargeColorThemeProvider=e.ResidueChargeColorThemeParams=e.ChargedResidueColors=void 0,e.getResidueChargeColorThemeParams=y,e.residueChargeColor=a,e.ResidueChargeColorTheme=d;const t=vt(),r=Ke(),n=Ne(),i=qa(),c=wn(),o=VS(),s=Ut();e.ChargedResidueColors=(0,t.ColorMap)({ARG:255,ASP:16711680,GLU:16711680,HIS:3392505,LYS:255,ALA:16777215,ASN:16777215,CYS:16777215,GLN:16777215,GLY:16777215,ILE:16777215,LEU:16777215,MET:16777215,PHE:16777215,PRO:16777215,SER:16777215,THR:16777215,TRP:16777215,TYR:16777215,VAL:16777215,MSE:16777215,SEP:16777215,TPO:16777215,PTR:16777215,PCA:16777215,HYP:16777215,HSD:16777215,HSE:16777215,HSP:255,LSN:16777215,ASPP:16777215,GLUP:16777215,HID:16777215,HIE:16777215,HIP:255,LYN:16777215,ASH:16777215,GLH:16777215,A:16777215,G:16777215,I:16777215,C:16777215,T:16777215,U:16777215,DA:16777215,DG:16777215,DI:16777215,DC:16777215,DT:16777215,DU:16777215,APN:16777215,GPN:16777215,CPN:16777215,TPN:16777215});const h=(0,t.Color)(16711935),f="Assigns a color to every residue based on its charge state.";e.ResidueChargeColorThemeParams={method:n.ParamDefinition.MappedStatic("by-name",{"by-name":n.ParamDefinition.Group({saturation:n.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),lightness:n.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),colors:n.ParamDefinition.MappedStatic("default",{default:n.ParamDefinition.EmptyGroup(),custom:n.ParamDefinition.Group((0,o.getColorMapParams)(e.ChargedResidueColors))})},{isFlat:!0})})};function y(p){return n.ParamDefinition.clone(e.ResidueChargeColorThemeParams)}function _(p,u){return p.model.atomicHierarchy.atoms.label_comp_id.value(u)}function g(p,u){const m=p.coarseElements.seq_id_begin.value(u),v=p.coarseElements.seq_id_end.value(u);if(m===v){const b=p.coarseElements.entityKey[u];return p.model.sequence.byEntityKey[b].sequence.compId.value(m-1)}}function a(p,u){const m=p[u];return m===void 0?h:m}function d(p,u){const{saturation:m,lightness:v,colors:b}=u.method.params,P=(0,c.getAdjustedColorMap)(u.method.params.colors.name==="default"?e.ChargedResidueColors:b.params,m,v);function C(l){if(r.StructureElement.Location.is(l))if(r.Unit.isAtomic(l.unit)){const S=_(l.unit,l.element);return a(P,S)}else{const S=g(l.unit,l.element);if(S)return a(P,S)}else if(r.Bond.isLocation(l))if(r.Unit.isAtomic(l.aUnit)){const S=_(l.aUnit,l.aUnit.elements[l.aIndex]);return a(P,S)}else{const S=g(l.aUnit,l.aUnit.elements[l.aIndex]);if(S)return a(P,S)}return h}return{factory:d,granularity:"group",preferSmoothing:!0,color:C,props:u,description:f,legend:(0,i.TableLegend)(Object.keys(P).map(l=>[l,P[l]]).concat([["Unknown",h]]))}}e.ResidueChargeColorThemeProvider={name:"residue-charge",label:"Residue Charge",category:s.ColorThemeCategory.Residue,factory:d,getParams:y,defaultValues:n.ParamDefinition.getDefaultValues(e.ResidueChargeColorThemeParams),isApplicable:p=>!!p.structure}})(d3)),d3}var f3={},HU;function hQ(){return HU||(HU=1,(function(e){Object.defineProperty(e,"__esMo
4100dule",{value:!0}),e.SecondaryStructureColorThemeProvider=e.SecondaryStructureColorThemeParams=e.SecondaryStructureColors=void 0,e.getSecondaryStructureColorThemeParams=d,e.secondaryStructureColor=p,e.SecondaryStructureColorTheme=u;const t=vt(),r=Ke(),n=dt(),i=Sl(),c=Ne(),o=qa(),s=Pl(),h=wn(),f=VS(),y=Dn(),_=Ut();e.SecondaryStructureColors=(0,t.ColorMap)({alphaHelix:16711808,threeTenHelix:10485888,piHelix:6291584,betaTurn:6324479,betaStrand:16762880,coil:16777215,bend:6740169,turn:45670,dna:11403518,rna:16580962,carbohydrate:10921722});const g=(0,t.Color)(8421504),a="Assigns a color based on the type of secondary structure and basic molecule type.";e.SecondaryStructureColorThemeParams={saturation:c.ParamDefinition.Numeric(-1,{min:-6,max:6,step:.1}),lightness:c.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),colors:c.ParamDefinition.MappedStatic("default",{default:c.ParamDefinition.EmptyGroup(),custom:c.ParamDefinition.Group((0,f.getColorMapParams)(e.SecondaryStructureColors))})};function d(m){return e.SecondaryStructureColorThemeParams}function p(m,v,b,P){let C=n.SecondaryStructureType.create(n.SecondaryStructureType.Flag.None);if(P&&r.Unit.isAtomic(v)){const l=P.get(v.invariantId);l&&(C=l.type[l.getIndex(v.residueIndex[b])])}if(n.SecondaryStructureType.is(C,n.SecondaryStructureType.Flag.Helix))return n.SecondaryStructureType.is(C,n.SecondaryStructureType.Flag.Helix3Ten)?m.threeTenHelix:n.SecondaryStructureType.is(C,n.SecondaryStructureType.Flag.HelixPi)?m.piHelix:m.alphaHelix;if(n.SecondaryStructureType.is(C,n.SecondaryStructureType.Flag.Beta))return m.betaStrand;if(n.SecondaryStructureType.is(C,n.SecondaryStructureType.Flag.Bend))return m.bend;if(n.SecondaryStructureType.is(C,n.SecondaryStructureType.Flag.Turn))return m.turn;{const l=(0,i.getElementMoleculeType)(v,b);if(l===n.MoleculeType.DNA)return m.dna;if(l===n.MoleculeType.RNA)return m.rna;if(l===n.MoleculeType.Saccharide)return m.carbohydrate;if(l===n.MoleculeType.Protein)return m.coil}return g}function u(m,v){const b=m.structure&&s.SecondaryStructureProvider.get(m.structure),P=b?(0,y.hash2)(b.id,b.version):-1,C=(0,h.getAdjustedColorMap)(v.colors.name==="default"?e.SecondaryStructureColors:v.colors.params,v.saturation,v.lightness);function l(S){return r.StructureElement.Location.is(S)?p(C,S.unit,S.element,b?.value):r.Bond.isLocation(S)?p(C,S.aUnit,S.aUnit.elements[S.aIndex],b?.value):g}return{factory:u,granularity:"group",preferSmoothing:!0,color:l,props:v,contextHash:P,description:a,legend:(0,o.TableLegend)(Object.keys(C).map(S=>[S,C[S]]).concat([["Other",g]]))}}e.SecondaryStructureColorThemeProvider={name:"secondary-structure",label:"Secondary Structure",category:_.ColorThemeCategory.Residue,factory:u,getParams:d,defaultValues:c.ParamDefinition.getDefaultValues(e.SecondaryStructureColorThemeParams),isApplicable:m=>!!m.structure,ensureCustomProperties:{attach:(m,v)=>v.structure?s.SecondaryStructureProvider.attach(m,v.structure,void 0,!0):Promise.resolve(),detach:m=>m.structure&&s.SecondaryStructureProvider.ref(m.structure,!1)}}})(f3)),f3}var m3={},WU;function gQ(){return WU||(WU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SequenceIdColorThemeProvider=e.SequenceIdColorThemeParams=void 0,e.getSequenceIdColorThemeParams=s,e.SequenceIdColorTheme=y;const t=Ke(),r=vt(),n=Ne(),i=Ut(),c=(0,r.Color)(13421772),o="Gives every polymer residue a color based on its `seq_id` value.";e.SequenceIdColorThemeParams={list:n.ParamDefinition.ColorList("turbo-no-black",{presetKind:"scale"})};function s(_){return e.SequenceIdColorThemeParams}function h(_,g){const{model:a}=_;switch(_.kind){case t.Unit.Kind.Atomic:const d=a.atomicHierarchy.residueAtomSegments.index[g];return a.atomicHierarchy.residues.label_seq_id.value(d);case t.Unit.Kind.Spheres:return Math.round((a.coarseHierarchy.spheres.seq_id_begin.value(g)+a.coarseHierarchy.spheres.seq_id_end.value(g))/2);case t.Unit.Kind.Gaussians:return Math.round((a.coarseHierarchy.gaussians.seq_id_begin.value(g)+a.coarseHierarchy.gaussians.seq_id_end.value(g))/2)}}function f(_,g){const{model:a}=_;let d="";switch(_.kind){case t.Unit.Kind.Atomic:const m=a.atomicHierarchy.chainAtomSegments.index[g];d=a.atomicHierarchy.chains.label_entity_id.value(m);break;case t.Unit.Kind.Spheres:d=a.coarseHierarchy.spheres.entity_id.value(g);break;case t.Unit.Kind.Gaussians:d=a.coarseHierarchy.gaussians.entity_id.value(g);break}if(d==="")return 0;const p=a.entities.getEntityIndex(d);if(p===-1)return 0;const u=a.sequence.byEntityKey[p];return u===void 0?0:u.sequence.length}function y(_,g){const a=r.ColorScale.create({listOrName:g.list.colors,minLabel:"Start",maxLabel:"End"});return{factory:y,granularity:"group",preferSmoothing:!0,color:p=>{if(t.StructureElement.Location.is(p)){const{unit:u,element:m}=p,v=h(u,m);if(v>0){const b=f(u,m);
4100if(b)return a.setDomain(0,b-1),a.color(v)}}else if(t.Bond.isLocation(p)){const{aUnit:u,aIndex:m}=p,v=h(u,u.elements[m]);if(v>0){const b=f(u,u.elements[m]);if(b)return a.setDomain(0,b-1),a.color(v)}}return c},props:g,description:o,legend:a?a.legend:void 0}}e.SequenceIdColorThemeProvider={name:"sequence-id",label:"Sequence Id",category:i.ColorThemeCategory.Residue,factory:y,getParams:s,defaultValues:n.ParamDefinition.getDefaultValues(e.SequenceIdColorThemeParams),isApplicable:_=>!!_.structure}})(m3)),m3}var p3={},h3={},yu={},s1={},c1={},Ma={},$U;function us(){if($U)return Ma;$U=1,Object.defineProperty(Ma,"__esModule",{value:!0}),Ma.normalizeVec3Array=r,Ma.transformPositionArray=i,Ma.transformDirectionArray=c,Ma.appplyRadius=o,Ma.computeIndexedVertexNormals=g,Ma.computeVertexNormals=a,Ma.createGroupMapping=d;const e=Ge(),t=Vt();function r(p,u){for(let m=0,v=u*3;m<v;m+=3){const b=p[m],P=p[m+1],C=p[m+2],l=1/Math.sqrt(b*b+P*P+C*C);p[m]=b*l,p[m+1]=P*l,p[m+2]=C*l}return p}const n=(0,e.Vec3)();function i(p,u,m,v){for(let b=0,P=v*3;b<P;b+=3)e.Vec3.fromArray(n,u,m+b),e.Vec3.transformMat4(n,n,p),e.Vec3.toArray(n,u,m+b)}function c(p,u,m,v){for(let b=0,P=v*3;b<P;b+=3)e.Vec3.fromArray(n,u,m+b),e.Vec3.transformMat3(n,n,p),e.Vec3.toArray(n,u,m+b)}function o(p,u){for(let m=0,v=p.length;m<v;m+=3)e.Vec3.fromArray(n,p,m),e.Vec3.normalize(n,n),e.Vec3.scale(n,n,u),e.Vec3.toArray(n,p,m)}const s=(0,e.Vec3)(),h=(0,e.Vec3)(),f=(0,e.Vec3)(),y=(0,e.Vec3)(),_=(0,e.Vec3)();function g(p,u,m,v,b){for(let P=0,C=b*3;P<C;P+=3){const l=u[P]*3,S=u[P+1]*3,T=u[P+2]*3;e.Vec3.fromArray(s,p,l),e.Vec3.fromArray(h,p,S),e.Vec3.fromArray(f,p,T),e.Vec3.sub(y,f,h),e.Vec3.sub(_,s,h),e.Vec3.cross(y,y,_),m[l]+=y[0],m[l+1]+=y[1],m[l+2]+=y[2],m[S]+=y[0],m[S+1]+=y[1],m[S+2]+=y[2],m[T]+=y[0],m[T+1]+=y[1],m[T+2]+=y[2]}return r(m,v)}function a(p,u,m){for(let v=0,b=m*3;v<b;v+=9)e.Vec3.fromArray(s,p,v),e.Vec3.fromArray(h,p,v+3),e.Vec3.fromArray(f,p,v+6),e.Vec3.sub(y,f,h),e.Vec3.sub(_,s,h),e.Vec3.cross(y,y,_),u[v]=y[0],u[v+1]=y[1],u[v+2]=y[2],u[v+3]=y[0],u[v+4]=y[1],u[v+5]=y[2],u[v+6]=y[0],u[v+7]=y[1],u[v+8]=y[2];return r(u,m)}function d(p,u,m=1){const v=(0,t.arrayMax)(p),b=new Int32Array(v+2),P=new Int32Array(u),C=new Int32Array(u);for(let T=0,A=u*m;T<A;T+=m)++C[p[T]];let l=0;for(let T=0;T<u;T++)b[T]=l,l+=C[T];b[u]=l;const S=new Int32Array(l);for(let T=0,A=u*m;T<A;T+=m){const x=p[T],M=b[x]+P[x];S[M]=T,++P[x]}return{indices:S,offsets:b}}return Ma}var gd={},Da={},XU;function kr(){if(XU)return Da;XU=1,Object.defineProperty(Da,"__esModule",{value:!0}),Da.calculateTextureInfo=o,Da.createTextureImage=s,Da.printTextureImage=f,Da.printImageData=a,Da.calculateInvariantBoundingSphere=v,Da.calculateTransformBoundingSphere=P,Da.calculateBoundingSphere=C;const e=rt(),t=Ge(),r=Ki(),n=Vt(),i=t.Vec3.fromArray,c=t.Vec3.transformMat4Offset;function o(l,S){l=Math.max(l,2);const T=Math.sqrt(l);let A=Math.ceil(T);A=A+(S-A%S)%S;const x=A>0?Math.ceil(l/A):0;return{width:A,height:x,length:A*x*S}}function s(l,S,T,A){const{length:x,width:M,height:D}=o(l,S);return A=A&&A.length>=x?A:new T(x),{array:A,width:M,height:D}}const h={scale:1,pixelated:!1,id:"molstar.debug.image",normalize:!1,useCanvas:!1,flipY:!1};function f(l,S={}){const{array:T,width:A,height:x}=l,M=T.length/(A*x),D=new Uint8ClampedArray(A*x*4),[V,R]=(0,n.arrayMinMax)(T);if(M===1){D.fill(255);for(let E=0;E<x;++E)for(let I=0;I<A;++I){const B=E*A+I;S.normalize?D[B*4+0]=(T[B]-V)/(R-V)*255:D[B*4+0]=T[B]*255}}else if(M===4)if(S.normalize)for(let E=0,I=A*x*4;E<I;E+=4)D[E]=(T[E]-V)/(R-V)*255,D[E+1]=(T[E+1]-V)/(R-V)*255,D[E+2]=(T[E+2]-V)/(R-V)*255,D[E+3]=255;else D.set(T);else if(M===3)for(let E=0,I=A*x;E<I;++E)D[E*4]=T[E*3],D[E*4+1]=T[E*3+1],D[E*4+2]=T[E*3+2],D[E*4+3]=255;else console.warn(`itemSize '${M}' not supported`);return a(new ImageData(D,A,x),S)}let y,_,g;function a(l,S={}){const T={...h,...S};if(g||(g=document.createElement("div"),g.style.position="absolute",g.style.bottom="0px",g.style.right="0px",g.style.border="solid orange",g.style.pointerEvents="none",S.flipY&&(g.style.transform="scaleY(-1)"),document.body.appendChild(g)),T.useCanvas){const A=document.getElementById(T.id),x=A||document.createElement("canvas");x.width=l.width,x.height=l.height;const M=x.getContext("2d");if(!M)throw new Error("Could not create canvas 2d context");M.putImageData(l,0,0),x.id=T.id,x.style.width=l.width*T.scale+"px",x.style.height=l.height*T.scale+"px",T.pixelated&&(x.style.imageRendering="pixelated"),x.style.position="relative",x.style.border="solid grey",x.style.pointerEvents="none",A||g.appendChild(x)}else{const A=y||document.createElement("canvas");y=A,A.width=l.width,A.height=l.height;const x=_||A.getContext("2d");if(_=x,!x)throw new Error("Could not create canvas 2d context");x.putImageData(l,0,0),A.toBlob(M=>{const D=URL.createObjectURL(M),V=document.getElementById(T.id),R=V||document.createElement("img");R.id=T.id,R.src=D,R.style.width=l.width*T.scale+"px",R.style.height=l.height*T.scale+"px",T.pixelated&&(R.style.imageRendering="pixelated"),R.style.position="relative",R.style.border="solid grey",R.style.pointerEvents="none",V||g.appendChild(R)},"image/png")}}const d=(0,t.Vec3)(),p=new r.BoundaryHelper("14"),u=new r.BoundaryHelper("98");function m(l){return l>1e5?p:u}function v(l,S,T){const A=T*3,x=m(S);x.reset();for(let D=0,V=S*3;D<V;D+=A)i(d,l,D),x.includePosition(d);x.finishedIncludeStep();for(let D=0,V=S*3;D<V;D+=A)i(d,l,D),x.radiusPosition(d);const M=x.getSphere();if(S<=14){const D=[];for(let V=0,R=S*3;V<R;V+=A)D.push(i((0,t.Vec3)(),l,V));e.Sphere3D.setExtrema(M,D)}return M}const b=(0,t.Mat4)();function P(l,S,T,A){if(T===1){t.Mat4.fromArray(b,S,A);const R=e.Sphere3D.clone(l);return t.Mat4.isIdentity(b)?R:e.Sphere3D.transform(R,R,b)}const x=m(T);x.reset();const{center:M,radius:D,extrema:V}=l;if(V&&T<=14){for(let R=0,E=T;R<E;++R)for(const I of V)c(d,I,S,0,0,R*16+A),x.includePosition(d);x.finishedIncludeStep();for(let R=0,E=T;R<E;++R)for(const I of V)c(d,I,S,0,0,R*16+A),x.radiusPosition(d)}else{for(let R=0,E=T;R<E;++R)c(d,M,S,0,0,R*16+A),x.includePositionRadius(d,D);x.finishedIncludeStep();for(let R=0,E=T;R<E;++R)c(d,M,S,0,0,R*16+A),x.radiusPositionRadius(d,D)}
4100return x.getSphere()}function C(l,S,T,A,x=0,M=1){const D=v(l,S,M),V=P(D,T,A,0);return e.Sphere3D.expand(V,V,x),e.Sphere3D.expand(D,D,x),{boundingSphere:V,invariantBoundingSphere:D}}return Da}var KU;function li(){if(KU)return gd;KU=1,Object.defineProperty(gd,"__esModule",{value:!0}),gd.getMarkersAverage=i,gd.createMarkers=c,gd.createEmptyMarkers=s;const e=Kr(),t=Ge(),r=kr(),n=new Uint8Array(772);n[1]=1,n[2]=1,n[3]=1,n[256]=1,n[512]=1,n[768]=1,n[257]=2,n[513]=2,n[769]=2,n[258]=2,n[514]=2,n[770]=2,n[259]=2,n[515]=2,n[771]=2;function i(h,f){if(f===0)return 0;const y=new Uint32Array(h.buffer,0,h.buffer.byteLength>>2),_=f-4>>2,g=4*_;let a=0;if(_<0)for(let d=0;d<f;++d)a+=h[d]&&1;else{for(let d=0;d<_;++d){const p=y[d];a+=n[p&65535]+n[p>>16]}for(let d=g;d<f;++d)a+=h[d]&&1}return a/f}function c(h,f,y){if(y){const _=(0,r.createTextureImage)(Math.max(1,h),1,Uint8Array,y.tMarker.ref.value.array);return _.array.fill(0,0,h),e.ValueCell.updateIfChanged(y.uMarker,0),e.ValueCell.update(y.tMarker,_),e.ValueCell.update(y.uMarkerTexDim,t.Vec2.create(_.width,_.height)),e.ValueCell.updateIfChanged(y.markerAverage,0),e.ValueCell.updateIfChanged(y.markerStatus,0),e.ValueCell.updateIfChanged(y.dMarkerType,f),y}else{const _=(0,r.createTextureImage)(Math.max(1,h),1,Uint8Array);return{uMarker:e.ValueCell.create(0),tMarker:e.ValueCell.create(_),uMarkerTexDim:e.ValueCell.create(t.Vec2.create(_.width,_.height)),markerAverage:e.ValueCell.create(0),markerStatus:e.ValueCell.create(0),dMarkerType:e.ValueCell.create(f)}}}const o={array:new Uint8Array(1),width:1,height:1};function s(h){return h?(e.ValueCell.updateIfChanged(h.uMarker,0),e.ValueCell.update(h.tMarker,o),e.ValueCell.update(h.uMarkerTexDim,t.Vec2.create(1,1)),e.ValueCell.updateIfChanged(h.markerAverage,0),e.ValueCell.updateIfChanged(h.markerStatus,0),h):{uMarker:e.ValueCell.create(0),tMarker:e.ValueCell.create(o),uMarkerTexDim:e.ValueCell.create(t.Vec2.create(1,1)),markerAverage:e.ValueCell.create(0),markerStatus:e.ValueCell.create(0),dMarkerType:e.ValueCell.create("groupInstance")}}return gd}var Is={},la={},YU;function Xa(){if(YU)return la;YU=1,Object.defineProperty(la,"__esModule",{value:!0}),la.DirectLocation=la.NullLocation=void 0,la.isNullLocation=e,la.DataLocation=t,la.isDataLocation=r,la.isDirectLocation=n,la.NullLocation={kind:"null-location"};function e(i){return!!i&&i.kind==="null-location"}function t(i,c,o){return{kind:"data-location",tag:i,data:c,element:o}}function r(i){return!!i&&i.kind==="data-location"}la.DirectLocation={kind:"direct-location"};function n(i){return!!i&&i.kind==="direct-location"}return la}var QU;function zt(){if(QU)return Is;QU=1,Object.defineProperty(Is,"__esModule",{value:!0}),Is.EmptyLocationIterator=void 0,Is.LocationIterator=r,Is.PositionLocation=n,Is.isPositionLocation=i;const e=Ge(),t=Xa();function r(c,o,s,h,f=!1,y=()=>!1,_){if(c%s!==0)throw new Error("incompatible groupCount and stride");const g={location:t.NullLocation,location2:t.NullLocation,index:0,groupIndex:0,instanceIndex:0,isSecondary:!1};let a=g.groupIndex<c,d=!1,p=0,u=0,m=!1;const v=!!_;return{get hasNext(){return a},get isNextNewInstance(){return d},groupCount:c,instanceCount:o,count:c*o,stride:s,nonInstanceable:f,hasLocation2:v,move(){return a&&(g.groupIndex=p,g.instanceIndex=u,g.index=u*c+p,g.location=h(p,m?-1:u),v&&(g.location2=_(p,m?-1:u)),g.isSecondary=y(p,m?-1:u),p+=s,p===c?(++u,d=!0,u<o&&(p=0)):d=!1,a=p<c),g},reset(){g.location=t.NullLocation,g.location2=t.NullLocation,g.index=0,g.groupIndex=0,g.instanceIndex=0,g.isSecondary=!1,a=g.groupIndex<c,d=!1,p=0,u=0,m=!1},skipInstance(){a&&g.instanceIndex===u&&(++u,p=0,a=u<o)},voidInstances(){m=!0}}}Is.EmptyLocationIterator={get hasNext(){return!1},get isNextNewInstance(){return!1},groupCount:0,instanceCount:0,count:0,stride:0,nonInstanceable:!1,hasLocation2:!1,move(){return{location:t.NullLocation,location2:t.NullLocation,index:0,groupIndex:0,instanceIndex:0,isSecondary:!1}},reset(){},skipInstance(){},voidInstances(){}};function n(c,o){return{kind:"position-location",position:c?e.Vec3.clone(c):(0,e.Vec3)(),normal:o?e.Vec3.clone(o):(0,e.Vec3)()}}function i(c){return!!c&&c.kind==="position-location"}return Is}var vu={},ZU;function wi(){if(ZU)return vu;
4100ZU=1,Object.defineProperty(vu,"__esModule",{value:!0}),vu.createColors=o,vu.createValueColor=f,vu.createTextureColor=_,vu.createGridColor=m;const e=et(),t=kr(),r=vt(),n=Ge(),i=Xa(),c=bn();function o(b,P,C,l){var S;const T=s(b,P,C,l);if(C.palette){e.ValueCell.updateIfChanged(T.dUsePalette,!0);const[A,x]=C.palette.domain||[0,1];e.ValueCell.update(T.uPaletteDomain,n.Vec2.set(T.uPaletteDomain.ref.value,A,x)),e.ValueCell.update(T.uPaletteDefault,r.Color.toVec3Normalized(T.uPaletteDefault.ref.value,(S=C.palette.defaultColor)!==null&&S!==void 0?S:(0,r.Color)(13421772))),h(C.palette,T.tPalette)}else e.ValueCell.updateIfChanged(T.dUsePalette,!1);return T}function s(b,P,C,l){switch(C.granularity){case"uniform":return y(b,C.color,l);case"instance":return b.nonInstanceable?a(b,C.color,l):g(b,C.color,l);case"group":return a(b,C.color,l);case"groupInstance":return d(b,C.color,l);case"vertex":return p(P,C.color,l);case"vertexInstance":return u(P,C.color,l);case"volume":return m(C.grid,"volume",l);case"volumeInstance":return m(C.grid,"volumeInstance",l);case"direct":return v(l)}}function h(b,P){let C=!0;const l=P.ref.value;if(b.colors.length!==l.width||l.filter!==b.filter)C=!1;else{const A=l.array;let x=0;for(const M of b.colors){const[D,V,R]=r.Color.toRgb(M);if(A[x++]!==D||A[x++]!==V||A[x++]!==R){C=!1;break}}}if(C)return;const S=new Uint8Array(b.colors.length*3);let T=0;for(const A of b.colors){const[x,M,D]=r.Color.toRgb(A);S[T++]=x,S[T++]=M,S[T++]=D}e.ValueCell.update(P,{array:S,height:1,width:b.colors.length,filter:b.filter})}function f(b,P){return P?(e.ValueCell.update(P.uColor,r.Color.toVec3Normalized(P.uColor.ref.value,b)),e.ValueCell.updateIfChanged(P.dColorType,"uniform"),P):{uColor:e.ValueCell.create(r.Color.toVec3Normalized((0,n.Vec3)(),b)),tColor:e.ValueCell.create({array:new Uint8Array(3),width:1,height:1}),tColorGrid:e.ValueCell.create((0,c.createNullTexture)()),uPaletteDomain:e.ValueCell.create(n.Vec2.create(0,1)),uPaletteDefault:e.ValueCell.create((0,n.Vec3)()),tPalette:e.ValueCell.create({array:new Uint8Array(3),width:1,height:1}),uColorTexDim:e.ValueCell.create(n.Vec2.create(1,1)),uColorGridDim:e.ValueCell.create(n.Vec3.create(1,1,1)),uColorGridTransform:e.ValueCell.create(n.Vec4.create(0,0,0,1)),dColorType:e.ValueCell.create("uniform"),dUsePalette:e.ValueCell.create(!1)}}function y(b,P,C){b.reset();const l=b.hasNext?b.move():{location:i.NullLocation,isSecondary:!1};return f(P(l.location,l.isSecondary),C)}function _(b,P,C){return C?(e.ValueCell.update(C.tColor,b),e.ValueCell.update(C.uColorTexDim,n.Vec2.create(b.width,b.height)),e.ValueCell.updateIfChanged(C.dColorType,P),C):{uColor:e.ValueCell.create((0,n.Vec3)()),tColor:e.ValueCell.create(b),tColorGrid:e.ValueCell.create((0,c.createNullTexture)()),uPaletteDomain:e.ValueCell.create(n.Vec2.create(0,1)),uPaletteDefault:e.ValueCell.create((0,n.Vec3)()),tPalette:e.ValueCell.create({array:new Uint8Array(3),width:1,height:1}),uColorTexDim:e.ValueCell.create(n.Vec2.create(b.width,b.height)),uColorGridDim:e.ValueCell.create(n.Vec3.create(1,1,1)),uColorGridTransform:e.ValueCell.create(n.Vec4.create(0,0,0,1)),dColorType:e.ValueCell.create(P),dUsePalette:e.ValueCell.create(!1)}}function g(b,P,C){const{instanceCount:l}=b,S=(0,t.createTextureImage)(Math.max(1,l),3,Uint8Array,C&&C.tColor.ref.value.array);for(b.reset();b.hasNext;){const{location:T,isSecondary:A,instanceIndex:x}=b.move();r.Color.toArray(P(T,A),S.array,x*3),b.skipInstance()}return _(S,"instance",C)}function a(b,P,C){const{groupCount:l,hasLocation2:S}=b,T=(0,t.createTextureImage)(Math.max(1,l*(S?2:1)),3,Uint8Array,C&&C.tColor.ref.value.array);b.reset();const A=S?6:3;for(;b.hasNext&&!b.isNextNewInstance;){const{location:x,location2:M,isSecondary:D,groupIndex:V}=b.move();r.Color.toArray(P(x,D),T.array,V*A),S&&r.Color.toArray(P(M,D),T.array,V*A+3)}return _(T,"group",C)}function d(b,P,C){const{groupCount:l,instanceCount:S,hasLocation2:T}=b,A=S*l*(T?2:1),x=(0,t.createTextureImage)(Math.max(1,A),3,Uint8Array,C&&C.tColor.ref.value.array);b.reset();const M=T?6:3;for(;b.hasNext;){const{location:D,location2:V,isSecondary:R,index:E}=b.move();r.Color.toArray(P(D,R),x.array,E*M),T&&r.Color.toArray(P(V,R),x.array,E*M+3)}return _(x,"groupInstance",C)}function p(b,P,C){const{groupCount:l,stride:S}=b,T=(0,t.createTextureImage)(Math.max(1,l),3,Uint8Array,C&&C.tColor.ref.value.array);for(b.reset(),b.voidInstances();b.hasNext&&!b.isNextNewInstance;){const{location:A,isSecondary:x,groupIndex:M}=b.move(),D=P(A,x);for(let V=0;V<S;++V)r.Color.toArray(D,T.array,(M+V)*3)}return _(T,"vertex",C)}function u(b,P,C){const{groupCount:l,instanceCount:S,stride:T}=b,A=S*l,x=(0,t.createTextureImage)(Math.max(1,A),3,Uint8Array,C&&C.tColor.ref.value.array);for(b.reset();b.hasNext;){const{location:M,isSecondary:D,index:V}=b.move(),R=P(M,D);for(let E=0;E<T;++E)r.Color.toArray(R,x.array,(V+E)*3)}return _(x,"vertexInstance",C)}function m(b,P,C){const{colors:l,dimension:S,transform:T}=b,A=l.getWidth(),x=l.getHeight();return C?(e.ValueCell.update(C.tColorGrid,l),e.ValueCell.update(C.uColorTexDim,n.Vec2.create(A,x)),e.ValueCell.update(C.uColorGridDim,n.Vec3.clone(S)),e.ValueCell.update(C.uColorGridTransform,n.Vec4.clone(T)),e.ValueCell.updateIfChanged(C.dColorType,P),C):{uColor:e.ValueCell.create((0,n.Vec3)()),tColor:e.ValueCell.create({array:new Uint8Array(3),width:1,height:1}),tColorGrid:e.ValueCell.create(l),uPaletteDomain:e.ValueCell.create(n.Vec2.create(0,1)),uPaletteDefault:e.ValueCell.create((0,n.Vec3)()),tPalette:e.ValueCell.create({array:new Uint8Array(3),width:1,height:1}),uColorTexDim:e.ValueCell.create(n.Vec2.create(A,x)),uColorGridDim:e.ValueCell.create(n.Vec3.clone(S)),uColorGridTransform:e.ValueCell.create(n.Vec4.clone(T)),dColorType:e.ValueCell.create(P),dUsePalette:e.ValueCell.create(!1)}}function v(b){return b?(e.ValueCell.updateIfChanged(b.dColorType,"direct"),b):{uColor:e.ValueCell.create((0,n.Vec3)()),tColor:e.ValueCell.create({array:new Uint8Array(3),width:1,height:1}),tColorGrid:e.ValueCell.create((0,c.createNullTexture)()),uPaletteDomain:e.ValueCell.create(n.Vec2.create(0,1)),uPaletteDefault:e.ValueCell.create((0,n.Vec3)()),tPalette:e.ValueCell.create({array:new Uint8Array(3),width:1,height:1}),uColorTexDim:e.ValueCell.create(n.Vec2.create(1,1)),uColorGridDim:e.ValueCell.create(n.Vec3.create(1,1,1)),uColorGridTransform:e.ValueCell.create(n.Vec4.create(0,0,0,1)),dColorType:e.ValueCell.create("direct"),dUsePalette:e.ValueCell.create(!1)}}return vu}var g3={},bu={},u1={},JU;function Gne(){if(JU)return u1;JU=1,Object.defineProperty(u1,"__esModule",{value:!0}),u1.createEmptyInstanceGrid=f,u1.calcInstanceGrid=y;const e=nn(),t=Vt(),r=os(),n=wt(),i=jD(),c=ja(),o=n.Vec3.transformMat4Offset,s=n.Vec3.fromArray,h=r.Box3D.add;function f(){return{cellSize:0,cellCount:0,cellOffsets:new Uint32Array,cellSpheres:new Float32Array,cellTransform:new Float32Array,cellInstance:new Float32Array,batchSize:0,batchCount:0,batchOffsets:new Uint32Array,batchSpheres:new Float32Array,batchCell:new Uint32Array}}function y(a,d,p){const u=_(a,d),m=g(u,p),v=new Uint32Array(u.cellOffsets.length),b=new Float32Array(u.cellSpheres.length),P=new Float32Array(u.cellInstance.length);let C=0;for(let S=0,T=m.batchCell.length;S<T;++S){const A=m.batchCell[S],x=u.cellOffsets[A],D=u.cellOffsets[A+1]-x;v[S+1]=v[S]+D;for(let V=0;V<4;++V)b[S*4+V]=u.cellSpheres[A*4+V];for(let V=0;V<D;++V){const R=x+V,E=u.cellInstance[R];for(let I=0;I<16;++I)u.cellTransform[C*16+I]=a.transform[E*16+I];P[C]=E,C+=1}}return{cellSize:u.cellSize,cellCount:u.cellCount,cellOffsets:v,cellSpheres:b,cellTransform:u.cellTransform,cellInstance:P,batchSize:m.batchSize,batchCount:m.batchCount,batchOffsets:m.batchOffsets,batchSpheres:m.batchSpheres,batchCell:(0,t.fillSerial)(m.batchCell)}}function _(a,d){const{instanceCount:p,instance:u,transform:m,invariantBoundingSphere:v}=a,b=new Float32Array(p),P=new Float32Array(p),C=new Float32Array(p),l=e.OrderedSet.ofBounds(0,p),S=r.Box3D.setEmpty((0,r.Box3D)()),{center:T,radius:A}=v,x=n.Vec3.create(A,A,A),M=(0,n.Vec3)();for(let j=0;j<p;++j)o(M,T,m,0,0,j*16),b[j]=M[0],P[j]=M[1],C[j]=M[2],h(S,M);r.Box3D.expand(S,S,x);const D={x:b,y:P,z:C,indices:l}
4100,V={box:S,sphere:c.Sphere3D.fromBox3D((0,c.Sphere3D)(),S)},R=(0,i.GridLookup3D)(D,V,n.Vec3.create(d,d,d)),{array:E,offset:I,count:B}=R.buckets,w=I.length,O=new Uint32Array(w+1),F=new Float32Array(w*4),L=new Float32Array(p*16),U=new Float32Array(p),q=(0,r.Box3D)(),N=(0,c.Sphere3D)();let k=0;for(let j=0;j<w;++j){const H=I[j],G=B[j];O[j]=H;const z=k;for(let W=H,X=H+G;W<X;++W){const Y=E[W];U[k]=u[Y];for(let K=0;K<16;++K)L[k*16+K]=m[Y*16+K];k+=1}if(G===1)o(F,T,L,j*4,0,z*16),F[j*4+3]=A;else{r.Box3D.setEmpty(q);const W=z*16;for(let X=0;X<G;++X)o(M,T,L,0,0,X*16+W),h(q,M);r.Box3D.expand(q,q,x),c.Sphere3D.fromBox3D(N,q),c.Sphere3D.toArray(N,F,j*4)}}return O[w]=I[w-1]+B[w-1],{cellSize:d,cellCount:w,cellOffsets:O,cellSpheres:F,cellTransform:L,cellInstance:U}}function g(a,d){const{cellCount:p,cellSpheres:u}=a,m=new Float32Array(p),v=new Float32Array(p),b=new Float32Array(p),P=e.OrderedSet.ofBounds(0,p),C=r.Box3D.setEmpty((0,r.Box3D)()),l=(0,n.Vec3)();let S=0;for(let U=0;U<p;++U){const q=U*4;s(l,u,q),m[U]=l[0],v[U]=l[1],b[U]=l[2],h(C,l),S=Math.max(S,u[q+3])}const T=n.Vec3.create(S,S,S);r.Box3D.expand(C,C,T);const A={x:m,y:v,z:b,indices:P},x={box:C,sphere:c.Sphere3D.fromBox3D((0,c.Sphere3D)(),C)},M=(0,i.GridLookup3D)(A,x,n.Vec3.create(d,d,d)),{array:D,offset:V,count:R}=M.buckets,E=V.length,I=new Uint32Array(E+1),B=new Float32Array(E*4),w=new Uint32Array(p),O=(0,r.Box3D)(),F=(0,c.Sphere3D)();let L=0;for(let U=0;U<E;++U){const q=V[U],N=R[U];I[U]=q;for(let k=q,j=q+N;k<j;++k)w[L]=D[k],L+=1;if(N===1){const k=D[q];B[U*4]=u[k*4],B[U*4+1]=u[k*4+1],B[U*4+2]=u[k*4+2],B[U*4+3]=u[k*4+3]}else{r.Box3D.setEmpty(O),S=0;for(let k=q,j=q+N;k<j;++k){const H=D[k];l[0]=u[H*4],l[1]=u[H*4+1],l[2]=u[H*4+2],h(O,l),S=Math.max(S,u[H*4+3])}n.Vec3.set(T,S,S,S),r.Box3D.expand(O,O,T),c.Sphere3D.fromBox3D(F,O),c.Sphere3D.toArray(F,B,U*4)}}return I[E]=V[E-1]+R[E-1],{batchSize:d,batchCount:E,batchOffsets:I,batchSpheres:B,batchCell:w}}return u1}var ej;function kl(){if(ej)return bu;ej=1,Object.defineProperty(bu,"__esModule",{value:!0}),bu.createTransform=s,bu.createIdentityTransform=f,bu.fillIdentityTransform=y,bu.updateTransformData=_;const e=et(),t=Ge(),r=Vt(),n=Gne(),i=(0,t.Mat3)(),c=(0,t.Mat4)();function o(g,a){for(let d=0;d<a;d++)if(t.Mat3.fromMat4(i,t.Mat4.fromArray(c,g,d*16)),t.Mat3.determinant(i)<0)return!0;return!1}function s(g,a,d,p,u,m){const v=o(g,a);if(m){e.ValueCell.update(m.matrix,m.matrix.ref.value);const b=m.transform.ref.value.length>=a*16?m.transform.ref.value:new Float32Array(a*16);b.set(g),e.ValueCell.update(m.transform,b),e.ValueCell.updateIfChanged(m.uInstanceCount,a),e.ValueCell.updateIfChanged(m.instanceCount,a);const P=m.aTransform.ref.value.length>=a*16?m.aTransform.ref.value:new Float32Array(a*16);e.ValueCell.update(m.aTransform,P);const C=m.extraTransform.ref.value.length>=a*16?m.extraTransform.ref.value:new Float32Array(a*16);e.ValueCell.update(m.extraTransform,C),e.ValueCell.updateIfChanged(m.hasExtraTransform,!1);const l=m.aInstance.ref.value.length>=a?m.aInstance.ref.value:new Float32Array(a);e.ValueCell.update(m.aInstance,(0,r.fillSerial)(l,a)),e.ValueCell.update(m.hasReflection,v)}else m={aTransform:e.ValueCell.create(new Float32Array(a*16)),matrix:e.ValueCell.create(t.Mat4.identity()),transform:e.ValueCell.create(new Float32Array(g)),extraTransform:e.ValueCell.create(new Float32Array(a*16)),hasExtraTransform:e.ValueCell.create(!1),uInstanceCount:e.ValueCell.create(a),instanceCount:e.ValueCell.create(a),aInstance:e.ValueCell.create((0,r.fillSerial)(new Float32Array(a))),hasReflection:e.ValueCell.create(v),instanceGrid:e.ValueCell.create((0,n.createEmptyInstanceGrid)())};return _(m,d,p,u),m}const h=new Float32Array(16);t.Mat4.toArray(t.Mat4.identity(),h,0);function f(g){return s(new Float32Array(h),1,void 0,0,0,g)}function y(g,a){for(let d=0;d<a;d++)g.set(h,d*16);return g}function _(g,a,d,p){const u=g.aTransform.ref.value,m=g.aInstance.ref.value,v=g.instanceCount.ref.value,b=g.matrix.ref.value,P=g.transform.ref.value,C=g.extraTransform.ref.value,l=g.hasExtraTransform.ref.value,S=t.Mat4.isIdentity(b);if(!l&&S)for(let T=0,A=v*16;T<A;T++)u[T]=P[T];else if(!l&&!S)for(let T=0;T<v;T++){const A=T*16;t.Mat4.mulOffset(u,b,P,A,0,A)}else if(l&&S)for(let T=0;T<v;T++){const A=T*16;t.Mat4.mulOffset(u,C,P,A,A,A)}else for(let T=0;T<v;T++){const A=T*16;t.Mat4.mulOffset(u,C,P,A,A,A),t.Mat4.mulOffset(u,b,u,A,0,A)}for(let T=0;T<v;T++)m[T]=T;if(a&&v>0){const T=(0,n.calcInstanceGrid)({instanceCount:v,instance:m,transform:u,invariantBoundingSphere:a},d,p);e.ValueCell.update(g.instanceGrid,T),e.ValueCell.update(g.aInstance,T.cellInstance),e.ValueCell.update(g.aTransform,T.cellTransform)}else e.ValueCell.update(g.aInstance,m),e.ValueCell.update(g.aTransform,u)}return bu}var y3={},tj;function yQ(){return tj||(tj=1,(function(e){Object.defineProperty(e,"__esMo
4100dule",{value:!0}),e.UniformSizeThemeProvider=e.UniformSizeThemeParams=void 0,e.getUniformSizeThemeParams=n,e.UniformSizeTheme=i;const t=Ne(),r="Gives everything the same, uniform size.";e.UniformSizeThemeParams={value:t.ParamDefinition.Numeric(1,{min:0,max:20,step:.1})};function n(c){return e.UniformSizeThemeParams}function i(c,o){const s=o.value;return{factory:i,granularity:"uniform",size:()=>s,props:o,description:r}}e.UniformSizeThemeProvider={name:"uniform",label:"Uniform",category:"",factory:i,getParams:n,defaultValues:t.ParamDefinition.getDefaultValues(e.UniformSizeThemeParams),isApplicable:c=>!0}})(y3)),y3}var l1={},rj;function tc(){if(rj)return l1;rj=1,Object.defineProperty(l1,"__esModule",{value:!0}),l1.Material=t;const e=Ne();function t(r){return{...t.Zero,...r}}return(function(r){r.Zero={metalness:0,roughness:0,bumpiness:0};function n(h,f,y){return f[y]=h.metalness*255,f[y+1]=h.roughness*255,f[y+2]=h.bumpiness*255,f}r.toArray=n;function i(h,f,y){return f[y]=h.metalness,f[y+1]=h.roughness,f[y+2]=h.bumpiness,f}r.toArrayNormalized=i;function c(h,f){return h.metalness===f.metalness&&h.roughness===f.roughness&&h.bumpiness===f.bumpiness}r.areEqual=c;function o({metalness:h,roughness:f,bumpiness:y}){return`M ${h.toFixed(2)} | R ${f.toFixed(2)} | B ${y.toFixed(2)}`}r.toString=o;function s(h){return e.ParamDefinition.Group({metalness:e.ParamDefinition.Numeric(0,{min:0,max:1,step:.01}),roughness:e.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),bumpiness:e.ParamDefinition.Numeric(0,{min:0,max:1,step:.01})},{...h,presets:[[{metalness:0,roughness:1,bumpiness:0},"Matte"],[{metalness:0,roughness:.2,bumpiness:0},"Plastic"],[{metalness:0,roughness:.6,bumpiness:0},"Glossy"],[{metalness:1,roughness:.6,bumpiness:0},"Metallic"]]})}r.getParam=s})(t||(l1.Material=t={})),l1}var d1={},nj;function Pw(){if(nj)return d1;nj=1,Object.defineProperty(d1,"__esModule",{value:!0}),d1.Clip=s;const e=rn(),t=Xr(),r=rs(),n=wt(),i=er(),c=Ne(),o=ui();function s(){}return(function(h){h.Type={none:0,plane:1,sphere:2,cube:3,cylinder:4,infiniteCone:5},h.Params={variant:c.ParamDefinition.Select("pixel",c.ParamDefinition.arrayToOptions(["instance","pixel"])),objects:c.ParamDefinition.ObjectList({type:c.ParamDefinition.Select("plane",c.ParamDefinition.objectToOptions(h.Type,v=>(0,o.stringToWords)(v))),invert:c.ParamDefinition.Boolean(!1),position:c.ParamDefinition.Vec3((0,n.Vec3)()),rotation:c.ParamDefinition.Group({axis:c.ParamDefinition.Vec3(n.Vec3.create(1,0,0)),angle:c.ParamDefinition.Numeric(0,{min:-180,max:180,step:1},{description:"Angle in Degrees"})},{isExpanded:!0}),scale:c.ParamDefinition.Vec3(n.Vec3.create(1,1,1)),transform:c.ParamDefinition.Mat4(t.Mat4.identity())},v=>(0,o.stringToWords)(v.type))};function f(v){return{count:0,type:new Array(v).fill(1),invert:new Array(v).fill(!1),position:new Array(v*3).fill(0),rotation:new Array(v*4).fill(0),scale:new Array(v*3).fill(1),transform:new Array(v*16).fill(0)}}const y=(0,r.Quat)(),_=(0,r.Quat)(),g=(0,n.Vec3)(),a=(0,n.Vec3)(),d=(0,t.Mat4)(),p=(0,t.Mat4)();function u(v,b){const P=v.objects.length,{type:C,invert:l,position:S,rotation:T,scale:A,transform:x}=b?.objects||f(P);for(let M=0;M<P;++M){const D=v.objects[M];C[M]=h.Type[D.type],l[M]=D.invert,n.Vec3.toArray(D.position,S,M*3),n.Vec3.normalize(g,D.rotation.axis),r.Quat.toArray(r.Quat.setAxisAngle(y,g,(0,i.degToRad)(D.rotation.angle)),T,M*4),n.Vec3.toArray(D.scale,A,M*3),t.Mat4.toArray(D.transform,x,M*16)}return{variant:v.variant,objects:{count:P,type:C,invert:l,position:S,rotation:T,scale:A,transform:x}}}h.getClip=u;function m(v,b){if(v.variant!==b.variant||v.objects.count!==b.objects.count)return!1;const P=v.objects,C=b.objects;for(let l=0,S=P.count;l<S;++l)if(P.invert[l]!==C.invert[l]||P.type[l]!==C.type[l]||(n.Vec3.fromArray(g,P.position,l*3),n.Vec3.fromArray(a,C.position,l*3),!n.Vec3.equals(g,a))||(n.Vec3.fromArray(g,P.scale,l*3),n.Vec3.fromArray(a,C.scale,l*3),!n.Vec3.equals(g,a))||(r.Quat.fromArray(y,P.rotation,l*4),r.Quat.fromArray(_,C.rotation,l*4),!r.Quat.equals(y,_))||(t.Mat4.fromArray(d,P.transform,l*16),t.Mat4.fromArray(p,C.transform,l*16),!t.Mat4.areEqual(d,p,e.EPSILON)))return!1;return!0}h.areEqual=m})(s||(d1.Clip=s={})),d1}var ij;function Tt(){return ij||(ij=1,(function(e){Object.defineProperty(e,"__esMo
4100dule",{value:!0}),e.BaseGeometry=e.AutoInstanceGranularityThreshold=e.InstanceGranularityOptions=e.ColorSmoothingParams=e.VisualQualityOptions=e.VisualQualityNames=e.VisualQualityInfo=void 0,e.hasColorSmoothingProp=d,e.getColorSmoothingProps=p,e.resolveInstanceGranularity=u;const t=et(),r=zt(),n=Ne(),i=kl(),c=Vr(),o=Xa(),s=wS(),h=yQ(),f=ir(),y=tc(),_=Pw(),g=wt(),a=Fa();e.VisualQualityInfo={custom:{},auto:{},highest:{},higher:{},high:{},medium:{},low:{},lower:{},lowest:{}},e.VisualQualityNames=Object.keys(e.VisualQualityInfo),e.VisualQualityOptions=n.ParamDefinition.arrayToOptions(e.VisualQualityNames),e.ColorSmoothingParams={smoothColors:n.ParamDefinition.MappedStatic("auto",{auto:n.ParamDefinition.Group({}),on:n.ParamDefinition.Group({resolutionFactor:n.ParamDefinition.Numeric(2,{min:.5,max:6,step:.1}),sampleStride:n.ParamDefinition.Numeric(3,{min:1,max:12,step:1})}),off:n.ParamDefinition.Group({})})};function d(v){return!!v.smoothColors}function p(v,b,P){if((v.name==="on"||v.name==="auto"&&b)&&P&&P<3){let C=3;return v.name==="on"?(P*=v.params.resolutionFactor,C=v.params.sampleStride):(P*=2-(0,f.smoothstep)(0,1.1,P),P=Math.max(.5,P),P>1.2&&(C=2)),{resolution:P,stride:C}}}e.InstanceGranularityOptions=[[!0,"On"],[!1,"Off"],["auto","Auto"]],e.AutoInstanceGranularityThreshold=5e7;function u(v,b,P){return v==="auto"?b*P>e.AutoInstanceGranularityThreshold:v}var m;(function(v){v.MaterialCategory={category:"Material"},v.ShadingCategory={category:"Shading"},v.CullingLodCategory={category:"Culling & LOD"},v.CustomQualityParamInfo={category:"Custom Quality",hideIf:T=>typeof T.quality<"u"&&T.quality!=="custom"},v.Params={alpha:n.ParamDefinition.Numeric(1,{min:0,max:1,step:.01},{label:"Opacity",isEssential:!0,description:"How opaque/transparent the representation is rendered."}),quality:n.ParamDefinition.Select("auto",e.VisualQualityOptions,{isEssential:!0,description:"Visual/rendering quality of the representation."}),material:y.Material.getParam(),clip:n.ParamDefinition.Group(_.Clip.Params),emissive:n.ParamDefinition.Numeric(0,{min:0,max:1,step:.01}),density:n.ParamDefinition.Numeric(.2,{min:0,max:1,step:.01},{description:"Density value to estimate object thickness."}),instanceGranularity:n.ParamDefinition.Select("auto",e.InstanceGranularityOptions,{description:"Use instance granularity for marker, transparency, clipping, overpaint, substance data to save memory. When set to `auto`, granularity is enabled if `groupCount * instanceCount` exceeds `AutoInstanceGranularityThreshold`."}),lod:n.ParamDefinition.Vec3((0,g.Vec3)(),void 0,{...v.CullingLodCategory,description:"Level of detail.",fieldLabels:{x:"Min Distance",y:"Max Distance",z:"Overlap (Shader)"}}),cellSize:n.ParamDefinition.Numeric(200,{min:0,max:5e3,step:100},{...v.CullingLodCategory,description:"Instance grid cell size."}),batchSize:n.ParamDefinition.Numeric(2e3,{min:0,max:5e4,step:500},{...v.CullingLodCategory,description:"Instance grid batch size."})};function b(T=c.ColorNames.grey,A=1,x){x||(x=(0,i.createIdentityTransform)());const M=(0,r.LocationIterator)(1,x.instanceCount.ref.value,1,()=>o.NullLocation,!1,()=>!1),D={color:(0,s.UniformColorTheme)({},{value:T,lightness:0,saturation:0}),size:(0,h.UniformSizeTheme)({},{value:A})};return{transform:x,locationIterator:M,theme:D}}v.createSimple=b;function P(T,A){const x=_.Clip.getClip(T.clip);return{alpha:t.ValueCell.create(T.alpha),uAlpha:t.ValueCell.create(T.alpha),uVertexCount:t.ValueCell.create(A.vertexCount),uGroupCount:t.ValueCell.create(A.groupCount),drawCount:t.ValueCell.create(A.drawCount),uMetalness:t.ValueCell.create(T.material.metalness),uRoughness:t.ValueCell.create(T.material.roughness),uBumpiness:t.ValueCell.create(T.material.bumpiness),uEmissive:t.ValueCell.create(T.emissive),uDensity:t.ValueCell.create(T.density),dClipObjectCount:t.ValueCell.create(x.objects.count),dClipVariant:t.ValueCell.create(x.variant),uClipObjectType:t.ValueCell.create(x.objects.type),uClipObjectInvert:t.ValueCell.create(x.objects.invert),uClipObjectPosition:t.ValueCell.create(x.objects.position),uClipObjectRotation:t.ValueCell.create(x.objects.rotation),uClipObjectScale:t.ValueCell.create(x.objects.scale),uClipObjectTransform:t.ValueCell.create(x.objects.transform),instanceGranularity:t.ValueCell.create(u(T.instanceGranularity,A.groupCount,A.instanceCount)),uLod:t.ValueCell.create(a.Vec4.create(T.lod[0],T.lod[1],T.lod[2],0))}}v.createValues=P;function C(T,A){t.ValueCell.updateIfChanged(T.alpha,A.alpha),t.ValueCell.updateIfChanged(T.uMetalness,A.material.metalness),t.ValueCell.updateIfChanged(T.uRoughness,A.material.roughness),t.ValueCell.updateIfChanged(T.uBumpiness,A.material.bumpiness),t.ValueCell.updateIfChanged(T.uEmissive,A.emissive),t.ValueCell.updateIfChanged(T.uDensity,A.density);const x=_.Clip.getClip(A.clip);
4100t.ValueCell.updateIfChanged(T.dClipObjectCount,x.objects.count),t.ValueCell.updateIfChanged(T.dClipVariant,x.variant),t.ValueCell.update(T.uClipObjectType,x.objects.type),t.ValueCell.update(T.uClipObjectInvert,x.objects.invert),t.ValueCell.update(T.uClipObjectPosition,x.objects.position),t.ValueCell.update(T.uClipObjectRotation,x.objects.rotation),t.ValueCell.update(T.uClipObjectScale,x.objects.scale),t.ValueCell.update(T.uClipObjectTransform,x.objects.transform),t.ValueCell.updateIfChanged(T.instanceGranularity,u(A.instanceGranularity,T.uGroupCount.ref.value,T.instanceCount.ref.value)),t.ValueCell.update(T.uLod,a.Vec4.set(T.uLod.ref.value,A.lod[0],A.lod[1],A.lod[2],0))}v.updateValues=C;function l(T={}){const A=T.alpha===void 0?!0:T.alpha===1;return{disposed:!1,visible:!0,alphaFactor:1,pickable:!0,colorOnly:!1,opaque:A,writeDepth:A}}v.createRenderableState=l;function S(T,A){T.opaque=A.alpha*T.alphaFactor>=1,T.writeDepth=T.opaque}v.updateRenderableState=S})(m||(e.BaseGeometry=m={}))})(g3)),g3}var _u={},aj;function Ka(){if(aj)return _u;aj=1,Object.defineProperty(_u,"__esModule",{value:!0}),_u.applyOverpaintColor=c,_u.clearOverpaint=o,_u.createOverpaint=s,_u.createEmptyOverpaint=f;const e=Kr(),t=Ge(),r=kr(),n=vt(),i=bn();function c(y,_,g,a){for(let d=_;d<g;++d)n.Color.toArray(a,y,d*4),y[d*4+3]=255;return!0}function o(y,_,g){return y.fill(0,_*4,g*4),!0}function s(y,_,g){const a=(0,r.createTextureImage)(Math.max(1,y),4,Uint8Array,g&&g.tOverpaint.ref.value.array);return g?(e.ValueCell.update(g.tOverpaint,a),e.ValueCell.update(g.uOverpaintTexDim,t.Vec2.create(a.width,a.height)),e.ValueCell.updateIfChanged(g.dOverpaint,y>0),e.ValueCell.updateIfChanged(g.dOverpaintType,_),g):{tOverpaint:e.ValueCell.create(a),uOverpaintTexDim:e.ValueCell.create(t.Vec2.create(a.width,a.height)),dOverpaint:e.ValueCell.create(y>0),tOverpaintGrid:e.ValueCell.create((0,i.createNullTexture)()),uOverpaintGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uOverpaintGridTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dOverpaintType:e.ValueCell.create(_),uOverpaintStrength:e.ValueCell.create(1)}}const h={array:new Uint8Array(4),width:1,height:1};function f(y){return y?(e.ValueCell.update(y.tOverpaint,h),e.ValueCell.update(y.uOverpaintTexDim,t.Vec2.create(1,1)),y):{tOverpaint:e.ValueCell.create(h),uOverpaintTexDim:e.ValueCell.create(t.Vec2.create(1,1)),dOverpaint:e.ValueCell.create(!1),tOverpaintGrid:e.ValueCell.create((0,i.createNullTexture)()),uOverpaintGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uOverpaintGridTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dOverpaintType:e.ValueCell.create("groupInstance"),uOverpaintStrength:e.ValueCell.create(1)}}return _u}var jo={},oj;function Ya(){if(oj)return jo;oj=1,Object.defineProperty(jo,"__esModule",{value:!0}),jo.applyTransparencyValue=i,jo.getTransparencyAverage=c,jo.getTransparencyMin=o,jo.clearTransparency=s,jo.createTransparency=h,jo.createEmptyTransparency=y;const e=Kr(),t=Ge(),r=kr(),n=bn();function i(_,g,a,d){for(let p=g;p<a;++p)_[p]=d*255;return!0}function c(_,g){if(g===0||_.length<g)return 0;let a=0;for(let d=0;d<g;++d)a+=_[d];return a/(255*g)}function o(_,g){if(g===0||_.length<g)return 1;let a=255;for(let d=0;d<g;++d)_[d]>0&&_[d]<a&&(a=_[d]);return a/255}function s(_,g,a){_.fill(0,g,a)}function h(_,g,a){const d=(0,r.createTextureImage)(Math.max(1,_),1,Uint8Array,a&&a.tTransparency.ref.value.array);return a?(e.ValueCell.update(a.tTransparency,d),e.ValueCell.update(a.uTransparencyTexDim,t.Vec2.create(d.width,d.height)),e.ValueCell.updateIfChanged(a.dTransparency,_>0),e.ValueCell.updateIfChanged(a.transparencyAverage,c(d.array,_)),e.ValueCell.updateIfChanged(a.transparencyMin,o(d.array,_)),e.ValueCell.updateIfChanged(a.dTransparencyType,g),a):{tTransparency:e.ValueCell.create(d),uTransparencyTexDim:e.ValueCell.create(t.Vec2.create(d.width,d.height)),dTransparency:e.ValueCell.create(_>0),transparencyAverage:e.ValueCell.create(0),transparencyMin:e.ValueCell.create(1),tTransparencyGrid:e.ValueCell.create((0,n.createNullTexture)()),uTransparencyGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uTransparencyGri
4100dTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dTransparencyType:e.ValueCell.create(g),uTransparencyStrength:e.ValueCell.create(1)}}const f={array:new Uint8Array(1),width:1,height:1};function y(_){return _?(e.ValueCell.update(_.tTransparency,f),e.ValueCell.update(_.uTransparencyTexDim,t.Vec2.create(1,1)),_):{tTransparency:e.ValueCell.create(f),uTransparencyTexDim:e.ValueCell.create(t.Vec2.create(1,1)),dTransparency:e.ValueCell.create(!1),transparencyAverage:e.ValueCell.create(0),transparencyMin:e.ValueCell.create(1),tTransparencyGrid:e.ValueCell.create((0,n.createNullTexture)()),uTransparencyGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uTransparencyGridTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dTransparencyType:e.ValueCell.create("groupInstance"),uTransparencyStrength:e.ValueCell.create(1)}}return jo}var Su={},sj;function Qa(){if(sj)return Su;sj=1,Object.defineProperty(Su,"__esModule",{value:!0}),Su.applyClippingGroups=n,Su.clearClipping=i,Su.createClipping=c,Su.createEmptyClipping=s;const e=Kr(),t=Ge(),r=kr();function n(h,f,y,_){return h.fill(_,f,y),!0}function i(h,f,y){h.fill(0,f,y)}function c(h,f,y){const _=(0,r.createTextureImage)(Math.max(1,h),1,Uint8Array,y&&y.tClipping.ref.value.array);return y?(e.ValueCell.update(y.tClipping,_),e.ValueCell.update(y.uClippingTexDim,t.Vec2.create(_.width,_.height)),e.ValueCell.updateIfChanged(y.dClipping,h>0),e.ValueCell.updateIfChanged(y.dClippingType,f),y):{tClipping:e.ValueCell.create(_),uClippingTexDim:e.ValueCell.create(t.Vec2.create(_.width,_.height)),dClipping:e.ValueCell.create(h>0),dClippingType:e.ValueCell.create(f)}}const o={array:new Uint8Array(1),width:1,height:1};function s(h){return h?(e.ValueCell.update(h.tClipping,o),e.ValueCell.update(h.uClippingTexDim,t.Vec2.create(1,1)),e.ValueCell.updateIfChanged(h.dClipping,!1),h):{tClipping:e.ValueCell.create(o),uClippingTexDim:e.ValueCell.create(t.Vec2.create(1,1)),dClipping:e.ValueCell.create(!1),dClippingType:e.ValueCell.create("groupInstance")}}return Su}var Cu={},cj;function Za(){if(cj)return Cu;cj=1,Object.defineProperty(Cu,"__esModule",{value:!0}),Cu.applySubstanceMaterial=c,Cu.clearSubstance=o,Cu.createSubstance=s,Cu.createEmptySubstance=f;const e=Kr(),t=Ge(),r=kr(),n=bn(),i=tc();function c(y,_,g,a){for(let d=_;d<g;++d)i.Material.toArray(a,y,d*4),y[d*4+3]=255;return!0}function o(y,_,g){return y.fill(0,_*4,g*4),!0}function s(y,_,g){const a=(0,r.createTextureImage)(Math.max(1,y),4,Uint8Array,g&&g.tSubstance.ref.value.array);return g?(e.ValueCell.update(g.tSubstance,a),e.ValueCell.update(g.uSubstanceTexDim,t.Vec2.create(a.width,a.height)),e.ValueCell.updateIfChanged(g.dSubstance,y>0),e.ValueCell.updateIfChanged(g.dSubstanceType,_),g):{tSubstance:e.ValueCell.create(a),uSubstanceTexDim:e.ValueCell.create(t.Vec2.create(a.width,a.height)),dSubstance:e.ValueCell.create(y>0),tSubstanceGrid:e.ValueCell.create((0,n.createNullTexture)()),uSubstanceGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uSubstanceGridTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dSubstanceType:e.ValueCell.create(_),uSubstanceStrength:e.ValueCell.create(1)}}const h={array:new Uint8Array(4),width:1,height:1};function f(y){return y?(e.ValueCell.update(y.tSubstance,h),e.ValueCell.update(y.uSubstanceTexDim,t.Vec2.create(1,1)),y):{tSubstance:e.ValueCell.create(h),uSubstanceTexDim:e.ValueCell.create(t.Vec2.create(1,1)),dSubstance:e.ValueCell.create(!1),tSubstanceGrid:e.ValueCell.create((0,n.createNullTexture)()),uSubstanceGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uSubstanceGridTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dSubstanceType:e.ValueCell.create("groupInstance"),uSubstanceStrength:e.ValueCell.create(1)}}return Cu}var ws={},uj;function Ja(){if(uj)return ws;uj=1,Object.defineProperty(ws,"__esModule",{value:!0}),ws.applyEmissiveValue=i,ws.getEmissiveAverage=c,ws.clearEmissive=o,ws.createEmissive=s,ws.createEmptyEmissive=f;const e=Kr(),t=Ge(),r=kr(),n=bn();function i(y,_,g,a){for(let d=_;d<g;++d)y[d]=a*255;return!0}function c(y,_){if(_===0||y.length<_)return 0;let g=0;for(let a=0;a<_;++a)g+=y[a];return g/(255*_)}function o(y,_,g){y.fill(0,_,g)}function s(y,_,g){const a=(0,r.createTextureImage)(Math.max(1,y),1,Uint8Array,g&&g.tEmissive.ref.value.array);return g?(e.ValueCell.update(g.tEmissive,a),e.ValueCell.update(g.uEmissiveTexDim,t.Vec2.create(a.width,a.height)),e.ValueCell.updateIfChanged(g.dEmissive,y>0),e.ValueCell.updateIfChanged(g.emissiveAverage,c(a.array,y)),e.ValueCell.updateIfChanged(g.dEmissiveType,_),g):{tEmissive:e.ValueCell.create(a),uEmissiveTexDim:e.ValueCell.create(t.Vec2.create(a.width,a.height)),dEmissive:e.ValueCell.create(y>0),emissiveAverage:e.ValueCell.create(0),tEmissiveGrid:e.ValueCell.create((0,n.createNullTexture)()),uEmissiveGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uEmissiveGridTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dEmissiveType:e.ValueCell.create(_),uEmissiveStrength:e.ValueCell.create(1)}}const h={array:new Uint8Array(1),width:1,height:1};function f(y){return y?(e.ValueCell.update(y.tEmissive,h),e.ValueCell.update(y.uEmissiveTexDim,t.Vec2.create(1,1)),y):{tEmissive:e.ValueCell.create(h),uEmissiveTexDim:e.ValueCell.create(t.Vec2.create(1,1)),dEmissive:e.ValueCell.create(!1),emissiveAverage:e.ValueCell.create(0),tEmissiveGrid:e.ValueCell.create((0,n.createNullTexture)()),uEmissiveGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uEmissiveGridTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dEmissiveType:e.ValueCell.create("groupInstance"),uEmissiveStrength:e.ValueCell.create(1)}}return ws}var Vs={},lj;function eo(){if(lj)return Vs;lj=1,Object.defineProperty(Vs,"__esModule",{value:!0}),Vs.applyWiggleValue=n,Vs.getWiggleAverage=i,Vs.clearWiggle=c,Vs.createWiggle=o,Vs.createEmptyWiggle=h;const e=Kr(),t=Ge(),r=kr();function n(f,y,_,g){for(let a=y;a<_;++a)f[a]=g*255;return!0}
4100function i(f,y){if(y===0||f.length<y)return 0;let _=0;for(let g=0;g<y;++g)_+=f[g];return _/(255*y)}function c(f,y,_){f.fill(0,y,_)}function o(f,y,_){const g=(0,r.createTextureImage)(Math.max(1,f),1,Uint8Array,_&&_.tWiggle.ref.value.array);return _?(e.ValueCell.update(_.tWiggle,g),e.ValueCell.update(_.uWiggleTexDim,t.Vec2.create(g.width,g.height)),e.ValueCell.updateIfChanged(_.dWiggle,f>0),e.ValueCell.updateIfChanged(_.wiggleAverage,i(g.array,f)),e.ValueCell.updateIfChanged(_.dWiggleType,y),_):{tWiggle:e.ValueCell.create(g),uWiggleTexDim:e.ValueCell.create(t.Vec2.create(g.width,g.height)),dWiggle:e.ValueCell.create(f>0),wiggleAverage:e.ValueCell.create(0),dWiggleType:e.ValueCell.create(y),uWiggleStrength:e.ValueCell.create(1)}}const s={array:new Uint8Array(1),width:1,height:1};function h(f){return f?(e.ValueCell.update(f.tWiggle,s),e.ValueCell.update(f.uWiggleTexDim,t.Vec2.create(1,1)),f):{tWiggle:e.ValueCell.create(s),uWiggleTexDim:e.ValueCell.create(t.Vec2.create(1,1)),dWiggle:e.ValueCell.create(!1),wiggleAverage:e.ValueCell.create(0),dWiggleType:e.ValueCell.create("groupInstance"),uWiggleStrength:e.ValueCell.create(1)}}return Vs}var Go={},dj;function jf(){if(dj)return Go;dj=1,Object.defineProperty(Go,"__esModule",{value:!0}),Go.getInteriorParam=c,Go.areInteriorPropsEquals=o,Go.getInteriorColor=s,Go.getInteriorSubstance=h,Go.createInteriorValues=f,Go.updateInteriorValues=y;const e=Fa(),t=wn(),r=tc(),n=Ne(),i=Kr();function c(){return n.ParamDefinition.Group({color:n.ParamDefinition.Color(t.Color.fromRgb(76,76,76)),colorStrength:n.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),substance:r.Material.getParam(),substanceStrength:n.ParamDefinition.Numeric(1,{min:0,max:1,step:.01})})}function o(_,g){return _.color===g.color&&_.colorStrength===g.colorStrength&&r.Material.areEqual(_.substance,g.substance)&&_.substanceStrength===g.substanceStrength}function s(_,g){return t.Color.toArrayNormalized(_.color,g,0),g[3]=_.colorStrength,g}function h(_,g){return r.Material.toArrayNormalized(_.substance,g,0),g[3]=_.substanceStrength,g}function f(_){return{uInteriorColor:i.ValueCell.create(s(_,(0,e.Vec4)())),uInteriorSubstance:i.ValueCell.create(h(_,(0,e.Vec4)()))}}function y(_,g){i.ValueCell.update(_.uInteriorColor,s(g,_.uInteriorColor.ref.value)),i.ValueCell.update(_.uInteriorSubstance,h(g,_.uInteriorSubstance.ref.value))}return Go}var Pu={},fj;function rc(){if(fj)return Pu;fj=1,Object.defineProperty(Pu,"__esModule",{value:!0}),Pu.getAnimationParam=r,Pu.areAnimationPropsEqual=n,Pu.createAnimationValues=i,Pu.updateAnimationValues=c;const e=et(),t=Ne();function r(){return t.ParamDefinition.Group({wiggleMode:t.ParamDefinition.Select("position",[["position","Position"],["group","Group"]],{description:"Noise seeding mode. Position: spatially correlated (nearby atoms move together). Group: per-group independent noise."}),wiggleSpeed:t.ParamDefinition.Numeric(7,{min:0,max:10,step:.1},{description:"Speed of vertex wiggle animation."}),wiggleAmplitude:t.ParamDefinition.Numeric(0,{min:0,max:5,step:.01},{description:"Amplitude of vertex wiggle animation."}),wiggleFrequency:t.ParamDefinition.Numeric(.2,{min:.01,max:2,step:.01},{description:"Spatial frequency of vertex wiggle noise (position mode). Lower values correlate nearby atoms more."}),tumbleSpeed:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},{description:"Speed of instance tumble animation."}),tumbleAmplitude:t.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},{description:"Amplitude of instance tumble animation. In Ångströms of implied surface displacement."}),tumbleFrequency:t.ParamDefinition.Numeric(.2,{min:0,max:2,step:.01},{description:"Spatial frequency multiplier for tumble noise."})})}function n(o,s){return o.wiggleMode===s.wiggleMode&&o.wiggleSpeed===s.wiggleSpeed&&o.wiggleAmplitude===s.wiggleAmplitude&&o.wiggleFrequency===s.wiggleFrequency&&o.tumbleSpeed===s.tumbleSpeed&&o.tumbleAmplitude===s.tumbleAmplitude&&o.tumbleFrequency===s.tumbleFrequency}function i(o){return{uWiggleSpeed:e.ValueCell.create(o.wiggleSpeed),uWiggleAmplitude:e.ValueCell.create(o.wiggleAmplitude),uWiggleFrequency:e.ValueCell.create(o.wiggleFrequency),uWiggleMode:e.ValueCell.create(o.wiggleMode==="position"?0:1),uTumbleSpeed:e.ValueCell.create(o.tumbleSpeed),uTumbleAmplitude:e.ValueCell.create(o.tumbleAmplitude),uTumbleFrequency:e.ValueCell.create(o.tumbleFrequency)}}function c(o,s){e.ValueCell.updateIfChanged(o.uWiggleSpeed,s.wiggleSpeed),e.ValueCell.updateIfChanged(o.uWiggleAmplitude,s.wiggleAmplitude),e.ValueCell.updateIfChanged(o.uWiggleFrequency,s.wiggleFrequency),e.ValueCell.updateIfChanged(o.uWiggleMode,s.wiggleMode==="position"?0:1),e.ValueCell.updateIfChanged(o.uTumbleSpeed,s.tumbleSpeed),e.ValueCell.updateIfChanged(o.uTumbleAmplitude,s.tumbleAmplitude),e.ValueCell.updateIfChanged(o.uTumbleFrequency,s.tumbleFrequency)}return Pu}var mj;function Rt(){if(mj)return c1;mj=1,Object.defineProperty(c1,"__esModule",{value:!0}),c1.Mesh=void 0;const e=et(),t=Ge(),r=rt(),n=us(),i=li(),c=zt(),o=wi(),s=_t(),h=Ne(),f=kr(),y=Tt(),_=Ka(),g=Ya(),a=Qa(),d=Vt(),p=er(),u=Za(),m=Ja(),v=eo(),b=jf(),P=rc();
4100var C;return(function(l){function S(K,Q,J,ae,te,ne,$){return $?M(K,Q,J,ae,te,ne,$):x(K,Q,J,ae,te,ne)}l.create=S;function T(K){const Q=K?K.vertexBuffer.ref.value:new Float32Array(0),J=K?K.indexBuffer.ref.value:new Uint32Array(0),ae=K?K.normalBuffer.ref.value:new Float32Array(0),te=K?K.groupBuffer.ref.value:new Float32Array(0);return S(Q,J,ae,te,0,0,K)}l.createEmpty=T;function A(K){return(0,s.hashFnv32a)([K.vertexCount,K.triangleCount,K.vertexBuffer.ref.version,K.indexBuffer.ref.version,K.normalBuffer.ref.version,K.groupBuffer.ref.version])}function x(K,Q,J,ae,te,ne){const $=(0,r.Sphere3D)();let ie,Z=-1,re=-1;const oe={kind:"mesh",vertexCount:te,triangleCount:ne,vertexBuffer:e.ValueCell.create(K),indexBuffer:e.ValueCell.create(Q),normalBuffer:e.ValueCell.create(J),groupBuffer:e.ValueCell.create(ae),varyingGroup:e.ValueCell.create(!1),get boundingSphere(){const ce=A(oe);if(ce!==Z){const ue=(0,f.calculateInvariantBoundingSphere)(oe.vertexBuffer.ref.value,oe.vertexCount,1);r.Sphere3D.copy($,ue),Z=ce}return $},get groupMapping(){return oe.groupBuffer.ref.version!==re&&(ie=(0,n.createGroupMapping)(oe.groupBuffer.ref.value,oe.vertexCount),re=oe.groupBuffer.ref.version),ie},setBoundingSphere(ce){r.Sphere3D.copy($,ce),Z=A(oe)},hasBoundingSphere(){return Z===A(oe)},meta:{}};return oe}function M(K,Q,J,ae,te,ne,$){return $.vertexCount=te,$.triangleCount=ne,e.ValueCell.update($.vertexBuffer,K),e.ValueCell.update($.indexBuffer,Q),e.ValueCell.update($.normalBuffer,J),e.ValueCell.update($.groupBuffer,ae),$}function D(K){const{vertexCount:Q,triangleCount:J}=K,ae=K.vertexBuffer.ref.value,te=K.indexBuffer.ref.value,ne=K.normalBuffer.ref.value.length>=Q*3?K.normalBuffer.ref.value:new Float32Array(Q*3);ne===K.normalBuffer.ref.value&&ne.fill(0,0,Q*3),(0,n.computeIndexedVertexNormals)(ae,te,ne,Q,J),e.ValueCell.update(K.normalBuffer,ne)}l.computeNormals=D;function V(K,Q=3){const J=K.vertexBuffer.ref.value,ae=new Map,te=(ie,Z)=>`${ie[0].toFixed(Z)}|${ie[1].toFixed(Z)}|${ie[2].toFixed(Z)}`;let ne=0;const $=(0,t.Vec3)();for(let ie=0,Z=K.vertexCount;ie<Z;++ie){t.Vec3.fromArray($,J,ie*3);const re=te($,Q),oe=ae.get(re);oe!==void 0?(ne+=1,ae.set(re,oe+1)):ae.set(re,1)}return ne}l.checkForDuplicateVertices=V;const R=(0,t.Mat3)();function E(K,Q){const J=K.vertexBuffer.ref.value;if((0,n.transformPositionArray)(Q,J,0,K.vertexCount),!t.Mat4.isTranslationAndUniformScaling(Q)){const ae=t.Mat3.directionTransform(R,Q);(0,n.transformDirectionArray)(ae,K.normalBuffer.ref.value,0,K.vertexCount)}e.ValueCell.update(K.vertexBuffer,J)}l.transform=E;function I(K){const{originalData:Q}="kind"in K?K.meta:K.meta.ref.value;return Q}l.getOriginalData=I;function B(K,Q=!0){const{indexBuffer:J,vertexBuffer:ae,groupBuffer:te,normalBuffer:ne,triangleCount:$,vertexCount:ie}=K,Z=J.ref.value,re=ae.ref.value,oe=te.ref.value,ce=ne.ref.value,ue=s.ChunkedArray.create(Uint32Array,3,1024,$),pe=s.ChunkedArray.create(Float32Array,3,1024,re);pe.currentIndex=ie*3,pe.elementCount=ie;const he=s.ChunkedArray.create(Float32Array,3,1024,ce);he.currentIndex=ie*3,he.elementCount=ie;const fe=s.ChunkedArray.create(Float32Array,1,1024,oe);fe.currentIndex=ie,fe.elementCount=ie;const de=(0,t.Vec3)(),ge=(0,t.Vec3)(),Ce=(0,t.Vec3)(),ve=(0,t.Vec3)(),le=(0,t.Vec3)(),me=(0,t.Vec3)();function ee(Me){t.Vec3.fromArray(de,re,Me*3),t.Vec3.fromArray(ve,ce,Me*3),s.ChunkedArray.add3(pe,de[0],de[1],de[2]),s.ChunkedArray.add3(he,ve[0],ve[1],ve[2])}function se(Me,Re){t.Vec3.fromArray(de,re,Me*3),t.Vec3.fromArray(ge,re,Re*3),t.Vec3.scale(de,t.Vec3.add(de,de,ge),.5),t.Vec3.fromArray(ve,ce,Me*3),t.Vec3.fromArray(le,ce,Re*3),t.Vec3.scale(ve,t.Vec3.add(ve,ve,le),.5),s.ChunkedArray.add3(pe,de[0],de[1],de[2]),s.ChunkedArray.add3(he,ve[0],ve[1],ve[2])}function ye(Me,Re,Te){t.Vec3.fromArray(de,re,Me*3),t.Vec3.fromArray(ge,re,Re*3),t.Vec3.fromArray(Ce,re,Te*3),t.Vec3.scale(de,t.Vec3.add(de,t.Vec3.add(de,de,ge),Ce),1/3),t.Vec3.fromArray(ve,ce,Me*3),t.Vec3.fromArray(le,ce,Re*3),t.Vec3.fromArray(me,ce,Te*3),t.Vec3.scale(ve,t.Vec3.add(ve,t.Vec3.add(ve,ve,le),me),1/3),s.ChunkedArray.add3(pe,de[0],de[1],de[2]),s.ChunkedArray.add3(he,ve[0],ve[1],ve[2])}function Se(Me,Re,Te,Ve,qe){++_e,ee(Me),se(Me,Re),se(Me,Te),s.ChunkedArray.add3(ue,Ae,Ae+1,Ae+2);for(let ke=0;ke<3;++ke)s.ChunkedArray.add(fe,Ve);Ae+=3,_e+=2,ee(Re),ee(Te),se(Me,Re),se(Me,Te),s.ChunkedArray.add3(ue,Ae,Ae+1,Ae+3),s.ChunkedArray.add3(ue,Ae,Ae+3,Ae+2);for(let ke=0;ke<4;++ke)s.ChunkedArray.add(fe,qe);Ae+=4}let Ae=ie,_e=0;if(Q)for(let Me=0,Re=$;Me<Re;
4100++Me){const Te=Z[Me*3],Ve=Z[Me*3+1],qe=Z[Me*3+2],ke=oe[Te],ze=oe[Ve],We=oe[qe];if(ke===ze&&ke===We)++_e,s.ChunkedArray.add3(ue,Te,Ve,qe);else if(ke===ze)Se(qe,Te,Ve,We,ke);else if(ke===We)Se(Ve,qe,Te,ze,We);else if(ze===We)Se(Te,Ve,qe,ke,ze);else{_e+=2,ee(Te),se(Te,Ve),se(Te,qe),ye(Te,Ve,qe),s.ChunkedArray.add3(ue,Ae,Ae+1,Ae+3),s.ChunkedArray.add3(ue,Ae,Ae+3,Ae+2);for(let Je=0;Je<4;++Je)s.ChunkedArray.add(fe,ke);Ae+=4,_e+=2,ee(Ve),se(Ve,qe),se(Ve,Te),ye(Te,Ve,qe),s.ChunkedArray.add3(ue,Ae,Ae+1,Ae+3),s.ChunkedArray.add3(ue,Ae,Ae+3,Ae+2);for(let Je=0;Je<4;++Je)s.ChunkedArray.add(fe,ze);Ae+=4,_e+=2,ee(qe),se(qe,Ve),se(qe,Te),ye(Te,Ve,qe),s.ChunkedArray.add3(ue,Ae+3,Ae+1,Ae),s.ChunkedArray.add3(ue,Ae+2,Ae+3,Ae);for(let Je=0;Je<4;++Je)s.ChunkedArray.add(fe,We);Ae+=4}}else for(let Me=0,Re=$;Me<Re;++Me){const Te=Z[Me*3],Ve=Z[Me*3+1],qe=Z[Me*3+2],ke=oe[Te],ze=oe[Ve],We=oe[qe];if(ke!==ze||ke!==We){++_e,ee(Te),ee(Ve),ee(qe),s.ChunkedArray.add3(ue,Ae,Ae+1,Ae+2);const Je=ze===We?ze:ke;for(let De=0;De<3;++De)s.ChunkedArray.add(fe,Je);Ae+=3}else++_e,s.ChunkedArray.add3(ue,Te,Ve,qe)}const be=s.ChunkedArray.compact(ue),xe=s.ChunkedArray.compact(pe),we=s.ChunkedArray.compact(he),Be=s.ChunkedArray.compact(fe);return K.vertexCount=Ae,K.triangleCount=_e,e.ValueCell.update(ae,xe),e.ValueCell.update(te,Be),e.ValueCell.update(J,be),e.ValueCell.update(ne,we),K.meta.originalData={indexBuffer:Z,vertexCount:ie,triangleCount:$},K}l.uniformTriangleGroup=B;function w(K){const{vertexCount:Q,triangleCount:J}=K,ae=K.indexBuffer.ref.value,te=[];for(let ne=0;ne<Q;++ne)te[ne]=[];for(let ne=0;ne<J;++ne){const $=ae[ne*3],ie=ae[ne*3+1],Z=ae[ne*3+2];(0,d.arraySetAdd)(te[$],ie),(0,d.arraySetAdd)(te[$],Z),(0,d.arraySetAdd)(te[ie],$),(0,d.arraySetAdd)(te[ie],Z),(0,d.arraySetAdd)(te[Z],$),(0,d.arraySetAdd)(te[Z],ie)}return te}function O(K){const{triangleCount:Q}=K,J=K.indexBuffer.ref.value,ae=new Map,te=(ne,$)=>{const ie=(0,s.sortedCantorPairing)(ne,$),Z=ae.get(ie)||0;ae.set(ie,Z+1)};for(let ne=0;ne<Q;++ne){const $=J[ne*3],ie=J[ne*3+1],Z=J[ne*3+2];te($,ie),te($,Z),te(ie,Z)}return ae}function F(K){const Q=new Set,J=[0,0];return K.forEach((ae,te)=>{ae===1&&((0,s.invertCantorPairing)(J,te),Q.add(J[0]),Q.add(J[1]))}),Q}function L(K,Q,J){const ae=new Map,te=(ne,$)=>{ae.has(ne)?(0,d.arraySetAdd)(ae.get(ne),$):ae.set(ne,[$])};return Q.forEach(ne=>{const $=K[ne];for(const ie of $)Q.has(ie)&&J.get((0,s.sortedCantorPairing)(ne,ie))===1&&te(ne,ie)}),ae}function U(K,Q){const{indexBuffer:J,triangleCount:ae}=K,te=J.ref.value,ne=s.ChunkedArray.create(Uint32Array,3,1024,ae);let $=0;for(let Z=0;Z<ae;++Z){const re=te[Z*3],oe=te[Z*3+1],ce=te[Z*3+2];Q[re].length===2||Q[oe].length===2||Q[ce].length===2||(s.ChunkedArray.add3(ne,re,oe,ce),$+=1)}const ie=s.ChunkedArray.compact(ne);return K.triangleCount=$,e.ValueCell.update(J,ie),K}function q(K,Q,J,ae){var te;const{vertexBuffer:ne,indexBuffer:$,normalBuffer:ie,triangleCount:Z}=K,re=ne.ref.value,oe=$.ref.value,ce=ie.ref.value,ue=s.ChunkedArray.create(Uint32Array,3,1024,Z);let pe=0;for(let be=0;be<Z;++be)s.ChunkedArray.add3(ue,oe[be*3],oe[be*3+1],oe[be*3+2]),pe+=1;const he=(0,t.Vec3)(),fe=(0,t.Vec3)(),de=(0,t.Vec3)(),ge=(0,t.Vec3)(),Ce=(0,t.Vec3)(),ve=(0,t.Vec3)(),le=(0,t.Vec3)(),me=(0,t.Vec3)(),ee=(0,t.Vec3)(),se=(0,t.Vec3)(),ye=(0,p.degToRad)(120),Se=new Set,Ae=Array.from(J.keys()).filter(be=>J.get(be).length<2).map(be=>{const xe=J.get(be);return t.Vec3.fromArray(he,re,be*3),t.Vec3.fromArray(fe,re,xe[0]*3),t.Vec3.fromArray(de,re,xe[1]*3),t.Vec3.sub(Ce,fe,he),t.Vec3.sub(ve,de,he),[be,t.Vec3.angle(Ce,ve)]});Ae.sort(([,be],[,xe])=>be-xe);for(const[be,xe]of Ae){if(Se.has(be)||xe>ye)continue;const we=J.get(be);if(Q[we[0]].includes(we[1])&&!(!((te=J.get(we[0]))===null||te===void 0)&&te.includes(we[1]))||(t.Vec3.fromArray(he,re,be*3),t.Vec3.fromArray(fe,re,we[0]*3),t.Vec3.fromArray(de,re,we[1]*3),t.Vec3.sub(Ce,fe,he),t.Vec3.sub(ve,de,he),t.Vec3.add(me,Ce,ve),t.Vec3.squaredDistance(he,fe)>=ae))continue;let Be=!1;for(const Me of Q[be])if(!we.includes(Me)&&(t.Vec3.fromArray(ge,re,Me*3),t.Vec3.sub(le,ge,he),t.Vec3.dot(me,le)<0)){Be=!0;break}Be&&(t.Vec3.fromArray(ee,ce,be*3),t.Vec3.triangleNormal(se,he,fe,de),t.Vec3.dot(se,ee)>0?s.ChunkedArray.add3(ue,be,we[0],we[1]):s.ChunkedArray.add3(ue,we[1],we[0],be),Se.add(be),Se.add(we[0]),Se.add(we[1]),pe+=1)}const _e=s.ChunkedArray.compact(ue);return K.triangleCount=pe,e.ValueCell.update($,_e),K}function N(K,Q,J){const{iterations:ae,lambda:te}=J,ne=(0,t.Vec3)(),$=(0,t.Vec3)(),ie=(0,t.Vec3)(),Z=(0,t.Vec3)(),re=-te;let oe=new Float32Array(K.vertexBuffer.ref.value.length);const ce=ue=>{const pe=K.vertexBuffer.ref.value;oe.set(pe),Q.forEach((fe,de)=>{if(fe.length!==2)return;t.Vec3.fromArray(ne,pe,de*3),t.Vec3.fromArray($,pe,fe[0]*3),t.Vec3.fromArray(ie,pe,fe[1]*3);const ge=1/t.Vec3.distance(ne,$),Ce=1/t.Vec3.distance(ne,ie);t.Vec3.scale($,$,ge),t.Vec3.scale(ie,ie,Ce),t.Vec3.add(Z,$,ie),t.Vec3.scale(Z,Z,1/(ge+Ce)),t.Vec3.sub(Z,Z,ne),t.Vec3.scale(Z,Z,ue),t.Vec3.add(Z,ne,Z),t.Vec3.toArray(Z,oe,de*3)});const he=K.vertexBuffer.ref.value;e.ValueCell.update(K.vertexBuffer,oe),oe=he};for(let ue=0;ue<ae;++ue)ce(te),ce(re)}function k(K,Q){U(K,w(K));for(let $=0;$<10;++$){const ie=K.triangleCount,Z=O(K),re=w(K),oe=F(Z),ce=L(re,oe,Z);if(q(K,re,ce,Q.maxNewEdgeLength*Q.maxNewEdgeLength),K.triangleCount===ie)break}const J=O(K),ae=w(K),te=F(J),ne=L(ae,te,J);return N(K,ne,{iterations:Q.iterations,lambda:.5}),K}l.smoothEdges=k,l.Params={...y.BaseGeometry.Params,doubleSided:h.ParamDefinition.Boolean(!1,y.BaseGeometry.CustomQualityParamInfo),flipSided:h.ParamDefinition.Boolean(!1,y.BaseGeometry.ShadingCategory),flatShaded:h.ParamDefinition.Boolean(!1,y.BaseGeometry.ShadingCategory),ignoreLight:h.ParamDefinition.Boolean(!1,y.BaseGeometry.ShadingCategory),celShaded:h.ParamDefinition.Boolean(!1,y.BaseGeometry.ShadingCategory),xrayShaded:h.ParamDefinition.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],y.BaseGeometry.ShadingCategory),transparentBackfaces:h.ParamDefinition.Select("off",h.ParamDefinition.arrayToOptions(["off","on","opaque"]),y.BaseGeometry.ShadingCategory),bumpFrequency:h.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},y.BaseGeometry.ShadingCategory),bumpAmplitude:h.ParamDefinition.Numeric(1,{min:0,max:5,step:.1},y.BaseGeometry.ShadingCategory),interior:(0,b.getInteriorParam)(),animation:(0,P.getAnimationParam)()},l.Utils={Params:l.Params,createEmpty:T,createValues:H,createValuesSimple:G,updateValues:z,updateBoundingSphere:W,createRenderableState:X,updateRenderableState:Y,createPositionIterator:j};function j(K,Q){const J=K.vertexCount,ae=Q.instanceCount.ref.value,te=(0,c.PositionLocation)(),ne=te.position,$=te.normal,ie=K.vertexBuffer.ref.value,Z=K.normalBuffer.ref.value,re=Q.aTransform.ref.value,oe=(ce,ue)=>(ue<0?(t.Vec3.fromArray(ne,ie,ce*3),t.Vec3.fromArray($,Z,ce*3)):(t.Vec3.transformMat4Offset(ne,ie,re,0,ce*3,ue*16),t.Vec3.transformDirectionOffset($,Z,re,0,ce*3,ue*16)),te);return(0,c.LocationIterator)(J,ae,1,oe)}function H(K,Q,J,ae,te){const{instanceCount:ne,groupCount:$}=J,ie=j(K,Q),Z=(0,o.createColors)(J,ie,ae.color),re=(0,y.resolveInstanceGranularity)(te.instanceGranularity,$,ne)?(0,i.createMarkers)(ne,"instance"):(0,i.createMarkers)(ne*$,"groupInstance"),oe=(0,_.createEmptyOverpaint)(),ce=(0,g.createEmptyTransparency)(),ue=(0,m.createEmptyEmissive)(),pe=(0,u.createEmptySubstance)(),he=(0,a.createEmptyClipping)(),fe=(0,v.createEmptyWiggle)(),de={drawCount:K.triangleCount*3,vertexCount:K.vertexCount,groupCount:$,instanceCount:ne},ge=r.Sphere3D.clone(K.boundingSphere),Ce=(0,f.calculateTransformBoundingSphere)(ge,Q.aTransform.ref.value,ne,0);return{dGeometryType:e.ValueCell.create("mesh"),aPosition:K.vertexBuffer,aNormal:K.normalBuffer,aGroup:K.groupBuffer,elements:K.indexBuffer,dVaryingGroup:K.varyingGroup,boundingSphere:e.ValueCell.create(Ce),invariantBoundingSphere:e.ValueCell.create(ge),uInvariantBoundingSphere:e.ValueCell.create(t.Vec4.ofSphere(ge)),...Z,...re,...oe,...ce,...ue,...pe,...he,...fe,...Q,...y.BaseGeometry.createValues(te,de),uDoubleSided:e.ValueCell.create(te.doubleSided),dFlatShaded:e.ValueCell.create(te.flatShaded),dFlipSided:e.ValueCell.create(te.flipSided),dIgnoreLight:e.ValueCell.create(te.ignoreLight),dCelShaded:e.ValueCell.create(te.celShaded),dXrayShaded:e.ValueCell.create(te.xraySha
4100ded==="inverted"?"inverted":te.xrayShaded===!0?"on":"off"),dTransparentBackfaces:e.ValueCell.create(te.transparentBackfaces),uBumpFrequency:e.ValueCell.create(te.bumpFrequency),uBumpAmplitude:e.ValueCell.create(te.bumpAmplitude),meta:e.ValueCell.create(K.meta),...(0,b.createInteriorValues)(te.interior),...(0,P.createAnimationValues)(te.animation)}}function G(K,Q,J,ae,te){const ne=y.BaseGeometry.createSimple(J,ae,te),$={...h.ParamDefinition.getDefaultValues(l.Params),...Q};return H(K,ne.transform,ne.locationIterator,ne.theme,$)}function z(K,Q){y.BaseGeometry.updateValues(K,Q),e.ValueCell.updateIfChanged(K.uDoubleSided,Q.doubleSided),e.ValueCell.updateIfChanged(K.dFlatShaded,Q.flatShaded),e.ValueCell.updateIfChanged(K.dFlipSided,Q.flipSided),e.ValueCell.updateIfChanged(K.dIgnoreLight,Q.ignoreLight),e.ValueCell.updateIfChanged(K.dCelShaded,Q.celShaded),e.ValueCell.updateIfChanged(K.dXrayShaded,Q.xrayShaded==="inverted"?"inverted":Q.xrayShaded===!0?"on":"off"),e.ValueCell.updateIfChanged(K.dTransparentBackfaces,Q.transparentBackfaces),e.ValueCell.updateIfChanged(K.uBumpFrequency,Q.bumpFrequency),e.ValueCell.updateIfChanged(K.uBumpAmplitude,Q.bumpAmplitude),(0,b.updateInteriorValues)(K,Q.interior),(0,P.updateAnimationValues)(K,Q.animation)}function W(K,Q){const J=r.Sphere3D.clone(Q.boundingSphere),ae=(0,f.calculateTransformBoundingSphere)(J,K.aTransform.ref.value,K.instanceCount.ref.value,0);r.Sphere3D.equals(ae,K.boundingSphere.ref.value)||e.ValueCell.update(K.boundingSphere,ae),r.Sphere3D.equals(J,K.invariantBoundingSphere.ref.value)||(e.ValueCell.update(K.invariantBoundingSphere,J),e.ValueCell.update(K.uInvariantBoundingSphere,t.Vec4.fromSphere(K.uInvariantBoundingSphere.ref.value,J)))}function X(K){const Q=y.BaseGeometry.createRenderableState(K);return Y(Q,K),Q}function Y(K,Q){y.BaseGeometry.updateRenderableState(K,Q),K.opaque=K.opaque&&!Q.xrayShaded,K.writeDepth=K.opaque}})(C||(c1.Mesh=C={})),c1}var f1={},v3={},Tu={},pj;function nc(){if(pj)return Tu;pj=1,Object.defineProperty(Tu,"__esModule",{value:!0}),Tu.packIntToRGBArray=n,Tu.unpackRGBToInt=i,Tu.unpackRGBAToDepth=f,Tu.arrayMaxPackedIntToRGB=y;const e=ir(),t=wt(),r=Fa();function n(_,g,a){return _=(0,e.clamp)(Math.round(_),0,16777215)+1,g[a+2]=_%256,_=Math.floor(_/256),g[a+1]=_%256,_=Math.floor(_/256),g[a]=_%256,g}function i(_,g,a){return Math.floor(_)*256*256+Math.floor(g)*256+Math.floor(a)-1}const c=255/256,o=t.Vec3.create(256*256*256,256*256,256),s=r.Vec4.create(c/o[0],c/o[1],c/o[2],c/1),h=(0,r.Vec4)();function f(_,g,a,d){return r.Vec4.set(h,_/255,g/255,a/255,d/255),r.Vec4.dot(h,s)}function y(_,g){let a=-1/0;for(let d=0,p=_.length;d<p;d+=g){const u=i(_[d],_[d+1],_[d+2]);u>a&&(a=u)}return a}return Tu}var hj;function ls(){return hj||(hj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.sizeDataFactor=void 0,e.createSizes=s,e.getMaxSize=h,e.createValueSize=_,e.createUniformSize=g,e.createTextureSize=a,e.createInstanceSize=d,e.createGroupSize=p,e.createGroupInstanceSize=u,e.createVertexSize=m,e.createVertexInstanceSize=v;const t=et(),r=Ge(),n=kr(),i=Xa(),c=Ll(),o=nc();function s(b,P,C,l){switch(c.Geometry.getGranularity(b,C.granularity)){case"uniform":return g(b,C.size,l);case"instance":return d(b,C.size,l);case"group":return p(b,C.size,l);case"groupInstance":return u(b,C.size,l);case"vertex":return m(P,C.size,l);case"vertexInstance":return v(P,C.size,l)}}e.sizeDataFactor=100;function h(b){switch(b.dSizeType.ref.value){case"uniform":return b.uSize.ref.value;case"instance":case"group":case"groupInstance":case"vertex":case"vertexInstance":let C=0;const l=b.tSize.ref.value.array;for(let S=0,T=l.length;S<T;S+=3){const A=(0,o.unpackRGBToInt)(l[S],l[S+1],l[S+2]);C<A&&(C=A)}return C/e.sizeDataFactor}}const f={array:new Uint8Array(3),width:1,height:1};function y(){return{tSize:t.ValueCell.create(f),uSizeTexDim:t.ValueCell.create(r.Vec2.create(1,1))}}function _(b,P){return P?(t.ValueCell.update(P.uSize,b),t.ValueCell.updateIfChanged(P.dSizeType,"uniform"),P):{uSize:t.ValueCell.create(b),...y(),dSizeType:t.ValueCell.create("uniform")}}function g(b,P,C){b.reset();const l=b.hasNext?b.move().location:i.NullLocation;return _(P(l),C)}function a(b,P,C){return C?(t.ValueCell.update(C.tSize,b),t.ValueCell.update(C.uSizeTexDim,r.Vec2.create(b.width,b.height)),t.ValueCell.updateIfChanged(C.dSizeType,P),C):{uSize:t.ValueCell.create(0),tSize:t.ValueCell.create(b),uSizeTexDim:t.ValueCell.create(r.Vec2.create(b.width,b.height)),dSizeType:t.ValueCell.create(P)}}function d(b,P,C){const{instanceCount:l}=b,S=(0,n.createTextureImage)(Math.max(1,l),3,Uint8Array,C&&C.tSize.ref.value.array);for(b.reset();b.hasNext&&!b.isNextNewInstance;){const T=b.move();(0,o.packIntToRGBArray)(P(T.location)*e.sizeDataFactor,S.array,T.instanceIndex*3),b.skipInstance()}return a(S,"instance",C)}function p(b,P,C){const{groupCount:l}=b,S=(0,n.createTextureImage)(Math.max(1,l),3,Uint8Array,C&&C.tSize.ref.value.array);for(b.reset();b.hasNext&&!b.isNextNewInstance;){const T=b.move();(0,o.packIntToRGBArray)(P(T.location)*e.sizeDataFactor,S.array,T.groupIndex*3)}return a(S,"group",C)}function u(b,P,C){const{groupCount:l,instanceCount:S}=b,T=S*l,A=(0,n.createTextureImage)(Math.max(1,T),3,Uint8Array,C&&C.tSize.ref.value.array);for(b.reset();b.hasNext;){const x=b.move();(0,o.packIntToRGBArray)(P(x.location)*e.sizeDataFactor,A.array,x.index*3)}return a(A,"groupInstance",C)}function m(b,P,C){const{groupCount:l}=b,S=(0,n.createTextureImage)(Math.max(1,l),3,Uint8Array,C&&C.tSize.ref.value.array);for(b.reset();b.hasNext;){const T=b.move();(0,o.packIntToRGBArray)(P(T.location)*e.sizeDataFactor,S.array,T.index*3)}return a(S,"vertex",C)}function v(b,P,C){const{groupCount:l,instanceCount:S}=b,T=S*l,A=(0,n.createTextureImage)(Math.max(1,T),3,Uint8Array,C&&C.tSize.ref.value.array);for(b.reset();b.hasNext;){const x=b.move();(0,o.packIntToRGBArray)(P(x.location)*e.sizeDataFactor,A.array,x.index*3)}return a(A,"vertexInstance",C)}})(v3)),v3}var gj;function ic(){if(gj)return f1;gj=1,Object.defineProperty(f1,"__esModule",{value:!0}),f1.Points=void 0;const e=et(),t=Ge(),r=us(),n=wi(),i=li(),c=ls(),o=zt(),s=Ne(),h=kr(),f=rt(),y=Tt(),_=Ka(),g=Ya(),a=_t(),d=Qa(),p=Za(),u=Ja(),m=eo(),v=rc();var b;return(function(P){function C(w,O,F,L){return L?A(w,O,F,L):T(w,O,F)}P.create=C;function l(w){const O=w?w.centerBuffer.ref.value:new Float32Array(0),F=w?w.groupBuffer.ref.value:new Float32Array(0);return C(O,F,0,w)}P.createEmpty=l;function S(w){return(0,a.hashFnv32a)([w.pointCount,w.centerBuffer.ref.version,w.groupBuffer.ref.version]
4100)}function T(w,O,F){const L=(0,f.Sphere3D)();let U,q=-1,N=-1;const k={kind:"points",pointCount:F,centerBuffer:e.ValueCell.create(w),groupBuffer:e.ValueCell.create(O),get boundingSphere(){const j=S(k);if(j!==q){const H=(0,h.calculateInvariantBoundingSphere)(k.centerBuffer.ref.value,k.pointCount,1);f.Sphere3D.copy(L,H),q=j}return L},get groupMapping(){return k.groupBuffer.ref.version!==N&&(U=(0,r.createGroupMapping)(k.groupBuffer.ref.value,k.pointCount),N=k.groupBuffer.ref.version),U},setBoundingSphere(j){f.Sphere3D.copy(L,j),q=S(k)},hasBoundingSphere(){return q===S(k)}};return k}function A(w,O,F,L){return L.pointCount=F,e.ValueCell.update(L.centerBuffer,w),e.ValueCell.update(L.groupBuffer,O),L}function x(w,O){const F=w.centerBuffer.ref.value;(0,r.transformPositionArray)(O,F,0,w.pointCount),e.ValueCell.update(w.centerBuffer,F)}P.transform=x,P.StyleTypes={square:"Square",circle:"Circle",fuzzy:"Fuzzy"},P.StyleTypeNames=Object.keys(P.StyleTypes),P.Params={...y.BaseGeometry.Params,sizeFactor:s.ParamDefinition.Numeric(3,{min:0,max:10,step:.1}),pointSizeAttenuation:s.ParamDefinition.Boolean(!1),pointStyle:s.ParamDefinition.Select("square",s.ParamDefinition.objectToOptions(P.StyleTypes)),animation:(0,v.getAnimationParam)()},P.Utils={Params:P.Params,createEmpty:l,createValues:D,createValuesSimple:V,updateValues:R,updateBoundingSphere:E,createRenderableState:I,updateRenderableState:B,createPositionIterator:M};function M(w,O){const F=w.pointCount,L=O.instanceCount.ref.value,U=(0,o.PositionLocation)(),q=U.position,N=w.centerBuffer.ref.value,k=O.aTransform.ref.value,j=(H,G)=>(G<0?t.Vec3.fromArray(q,N,H*3):t.Vec3.transformMat4Offset(q,N,k,0,H*3,G*16),U);return(0,o.LocationIterator)(F,L,1,j)}function D(w,O,F,L,U){const{instanceCount:q,groupCount:N}=F,k=M(w,O),j=(0,n.createColors)(F,k,L.color),H=(0,c.createSizes)(F,k,L.size),G=(0,y.resolveInstanceGranularity)(U.instanceGranularity,N,q)?(0,i.createMarkers)(q,"instance"):(0,i.createMarkers)(q*N,"groupInstance"),z=(0,_.createEmptyOverpaint)(),W=(0,g.createEmptyTransparency)(),X=(0,u.createEmptyEmissive)(),Y=(0,p.createEmptySubstance)(),K=(0,d.createEmptyClipping)(),Q=(0,m.createEmptyWiggle)(),J={drawCount:w.pointCount,vertexCount:w.pointCount,groupCount:N,instanceCount:q},ae=f.Sphere3D.clone(w.boundingSphere),te=(0,h.calculateTransformBoundingSphere)(ae,O.aTransform.ref.value,q,0);return{dGeometryType:e.ValueCell.create("points"),aPosition:w.centerBuffer,aGroup:w.groupBuffer,boundingSphere:e.ValueCell.create(te),invariantBoundingSphere:e.ValueCell.create(ae),uInvariantBoundingSphere:e.ValueCell.create(t.Vec4.ofSphere(ae)),...j,...H,...G,...z,...W,...X,...Y,...K,...Q,...O,...y.BaseGeometry.createValues(U,J),uSizeFactor:e.ValueCell.create(U.sizeFactor),dPointSizeAttenuation:e.ValueCell.create(U.pointSizeAttenuation),dPointStyle:e.ValueCell.create(U.pointStyle),...(0,v.createAnimationValues)(U.animation)}}function V(w,O,F,L,U){const q=y.BaseGeometry.createSimple(F,L,U),N={...s.ParamDefinition.getDefaultValues(P.Params),...O};return D(w,q.transform,q.locationIterator,q.theme,N)}function R(w,O){y.BaseGeometry.updateValues(w,O),e.ValueCell.updateIfChanged(w.uSizeFactor,O.sizeFactor),e.ValueCell.updateIfChanged(w.dPointSizeAttenuation,O.pointSizeAttenuation),e.ValueCell.updateIfChanged(w.dPointStyle,O.pointStyle),(0,v.updateAnimationValues)(w,O.animation)}function E(w,O){const F=f.Sphere3D.clone(O.boundingSphere),L=(0,h.calculateTransformBoundingSphere)(F,w.aTransform.ref.value,w.instanceCount.ref.value,0);f.Sphere3D.equals(L,w.boundingSphere.ref.value)||e.ValueCell.update(w.boundingSphere,L),f.Sphere3D.equals(F,w.invariantBoundingSphere.ref.value)||(e.ValueCell.update(w.invariantBoundingSphere,F),e.ValueCell.update(w.uInvariantBoundingSphere,t.Vec4.fromSphere(w.uInvariantBoundingSphere.ref.value,F)))}function I(w){const O=y.BaseGeometry.createRenderableState(w);return B(O,w),O}function B(w,O){y.BaseGeometry.updateRenderableState(w,O),w.opaque=w.opaque&&O.pointStyle!=="fuzzy",w.writeDepth=w.opaque}})(b||(f1.Points=b={})),f1}var m1={},b3={},oP={},yj;function zne(){if(yj)return oP;
4100yj=1,Object.defineProperty(oP,"__esModule",{value:!0}),oP.edt=e;function e(r,n,i,c,o,s,h){for(let f=0;f<n;f++){for(let y=0;y<i;y++)c[y]=r[y*n+f];t(c,o,s,h,i);for(let y=0;y<i;y++)r[y*n+f]=o[y]}for(let f=0;f<i;f++){for(let y=0;y<n;y++)c[y]=r[f*n+y];t(c,o,s,h,n);for(let y=0;y<n;y++)r[f*n+y]=Math.sqrt(o[y])}}function t(r,n,i,c,o){i[0]=0,c[0]=Number.MIN_SAFE_INTEGER,c[1]=Number.MAX_SAFE_INTEGER;for(let s=1,h=0;s<o;s++){let f=(r[s]+s*s-(r[i[h]]+i[h]*i[h]))/(2*s-2*i[h]);for(;f<=c[h];)h--,f=(r[s]+s*s-(r[i[h]]+i[h]*i[h]))/(2*s-2*i[h]);h++,i[h]=s,c[h]=f,c[h+1]=Number.MAX_SAFE_INTEGER}for(let s=0,h=0;s<o;s++){for(;c[h+1]<s;)h++;n[s]=(s-i[h])*(s-i[h])+r[i[h]]}}return oP}var vj;function vQ(){return vj||(vj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.FontAtlas=e.FontAtlasParams=void 0,e.getFontAtlas=o,e.setCanvasModule=y;const t=Ne(),r=zne(),n=kr(),i=oI(),c={};function o(g){const a=JSON.stringify(g);return c[a]===void 0&&(c[a]=new s(g)),c[a]}e.FontAtlasParams={fontFamily:t.ParamDefinition.Select("sans-serif",[["sans-serif","Sans Serif"],["monospace","Monospace"],["serif","Serif"],["cursive","Cursive"]]),fontQuality:t.ParamDefinition.Select(3,[[0,"lower"],[1,"low"],[2,"medium"],[3,"high"],[4,"higher"]]),fontStyle:t.ParamDefinition.Select("normal",[["normal","Normal"],["italic","Italic"],["oblique","Oblique"]]),fontVariant:t.ParamDefinition.Select("normal",[["normal","Normal"],["small-caps","Small Caps"]]),fontWeight:t.ParamDefinition.Select("normal",[["normal","Normal"],["bold","Bold"]])};class s{constructor(a={}){this.mapped={},this.scratchW=0,this.scratchH=0,this.currentX=0,this.currentY=0,this.cutoff=.5;const d={...t.ParamDefinition.getDefaultValues(e.FontAtlasParams),...a};this.props=d;const p=64*(d.fontQuality+1);this.buffer=p/8,this.radius=p/3,this.lineHeight=Math.round(p+2*this.buffer+this.radius),this.maxWidth=Math.round(this.lineHeight*.75),this.texture=(0,n.createTextureImage)(350*this.lineHeight*this.maxWidth,1,Uint8Array),this.scratchContext=_(this.maxWidth,this.lineHeight,{willReadFrequently:!0}),this.scratchContext.font=`${d.fontStyle} ${d.fontVariant} ${d.fontWeight} ${p}px ${d.fontFamily}`,this.scratchContext.fillStyle="black",this.scratchContext.textBaseline="middle",this.scratchData=new Uint8Array(this.lineHeight*this.maxWidth),this.gridOuter=new Float64Array(this.lineHeight*this.maxWidth),this.gridInner=new Float64Array(this.lineHeight*this.maxWidth),this.f=new Float64Array(Math.max(this.lineHeight,this.maxWidth)),this.d=new Float64Array(Math.max(this.lineHeight,this.maxWidth)),this.z=new Float64Array(Math.max(this.lineHeight,this.maxWidth)+1),this.v=new Int16Array(Math.max(this.lineHeight,this.maxWidth)),this.middle=Math.ceil(this.lineHeight/2),this.placeholder=this.get("�")}get(a){if(this.mapped[a]===void 0){this.draw(a);const{array:d,width:p,height:u}=this.texture,m=this.scratchData;if(this.currentX+this.scratchW>p&&(this.currentX=0,this.currentY+=this.scratchH),this.currentY+this.scratchH>u)return console.warn("canvas to small"),this.placeholder;this.mapped[a]={x:this.currentX,y:this.currentY,w:this.scratchW,h:this.scratchH,nw:this.scratchW/this.lineHeight,nh:this.scratchH/this.lineHeight};for(let v=0;v<this.scratchH;++v)for(let b=0;b<this.scratchW;++b)d[p*(this.currentY+v)+this.currentX+b]=m[v*this.scratchW+b];this.currentX+=this.scratchW}return this.mapped[a]}draw(a){const d=this.lineHeight,p=this.scratchContext,u=this.scratchData,m=p.measureText(a),v=Math.min(this.maxWidth,Math.ceil(m.width+2*this.buffer)),b=v*d;p.clearRect(0,0,v,d),p.fillText(a,this.buffer,this.middle);const P=p.getImageData(0,0,v,d);for(let C=0;C<b;C++){const l=P.data[C*4+3]/255;this.gridOuter[C]=l===1?0:l===0?Number.MAX_SAFE_INTEGER:Math.pow(Math.max(0,.5-l),2),this.gridInner[C]=l===1?Number.MAX_SAFE_INTEGER:l===0?0:Math.pow(Math.max(0,l-.5),2)}(0,r.edt)(this.gridOuter,v,d,this.f,this.d,this.v,this.z),(0,r.edt)(this.gridInner,v,d,this.f,this.d,this.v,this.z);for(let C=0;C<b;C++){const l=this.gridOuter[C]-this.gridInner[C];u[C]=Math.max(0,Math.min(255,Math.round(255-255*(l/this.radius+this.cutoff))))}this.scratchW=v,this.scratchH=d}}e.FontAtlas=s;let h;function f(){if(!h)throw new Error("When running in Node.js and wanting to use Canvas API, call mol-util/data-source's setCanvasModule function first and pass imported `canvas` module to it.");return h}function y(g){h=g}function _(g,a,d){if(i.RUNNING_IN_NODEJS)return f().createCanvas(g,a).getContext("2d",d);{const p=document.createElement("canvas");return p.width=g,p.height=a,p.getContext("2d",d)}}})(b3)),b3}var bj;function ya(){if(bj)return m1;bj=1,Object.defineProperty(m1,"__esModule",{value:!0}),m1.Text=void 0;const e=Ne(),t=et(),r=zt(),n=wi(),i=ls(),c=li(),o=Vr(),s=rt(),h=kr(),f=vt(),y=Ge(),_=vQ(),g=ir(),a=Tt(),d=Ka(),p=Ya(),u=_t(),m=us(),v=Qa(),b=Za(),P=Ja(),C=eo();var l;(function(T){function A(L,U,q,N,k,j,H,G,z){return z?V(L,U,q,N,k,j,H,G,z):D(L,U,q,N,k,j,H,G)}T.create=A;function x(L){const U=L?L.fontTexture.ref.value:(0,h.createTextureImage)(0,1,Uint8Array),q=L?L.centerBuffer.ref.value:new Float32Array(0),N=L?L.mappingBuffer.ref.value:new Float32Array(0),k=L?L.depthBuffer.ref.value:new Float32Array(0),j=L?L.indexBuffer.ref.value:new Uint32Array(0),H=L?L.groupBuffer.ref.value:new Float32Array(0),G=L?L.tcoordBuffer.ref.value:new Float32Array(0);return A(U,q,N,k,j,H,G,0,L)}T.createEmpty=x;function M(L){return(0,u.hashFnv32a)([L.charCount,L.fontTexture.ref.version,L.centerBuffer.ref.version,L.mappingBuffer.ref.version,L.depthBuffer.ref.version,L.indexBuffer.ref.version,L.groupBuffer.ref.version,L.tco
4100ordBuffer.ref.version])}function D(L,U,q,N,k,j,H,G){const z=(0,s.Sphere3D)();let W,X=-1,Y=-1;const K={kind:"text",charCount:G,fontTexture:t.ValueCell.create(L),centerBuffer:t.ValueCell.create(U),mappingBuffer:t.ValueCell.create(q),depthBuffer:t.ValueCell.create(N),indexBuffer:t.ValueCell.create(k),groupBuffer:t.ValueCell.create(j),tcoordBuffer:t.ValueCell.create(H),get boundingSphere(){const Q=M(K);if(Q!==X){const J=(0,h.calculateInvariantBoundingSphere)(K.centerBuffer.ref.value,K.charCount*4,4);s.Sphere3D.copy(z,J),X=Q}return z},get groupMapping(){return K.groupBuffer.ref.version!==Y&&(W=(0,m.createGroupMapping)(K.groupBuffer.ref.value,K.charCount,4),Y=K.groupBuffer.ref.version),W},setBoundingSphere(Q){s.Sphere3D.copy(z,Q),X=M(K)},hasBoundingSphere(){return X===M(K)}};return K}function V(L,U,q,N,k,j,H,G,z){return z.charCount=G,t.ValueCell.update(z.fontTexture,L),t.ValueCell.update(z.centerBuffer,U),t.ValueCell.update(z.mappingBuffer,q),t.ValueCell.update(z.depthBuffer,N),t.ValueCell.update(z.indexBuffer,k),t.ValueCell.update(z.groupBuffer,j),t.ValueCell.update(z.tcoordBuffer,H),z}T.Params={...a.BaseGeometry.Params,..._.FontAtlasParams,sizeFactor:e.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),borderWidth:e.ParamDefinition.Numeric(0,{min:0,max:.5,step:.01}),borderColor:e.ParamDefinition.Color(o.ColorNames.grey),offsetX:e.ParamDefinition.Numeric(0,{min:0,max:10,step:.1}),offsetY:e.ParamDefinition.Numeric(0,{min:0,max:10,step:.1}),offsetZ:e.ParamDefinition.Numeric(0,{min:0,max:10,step:.1}),background:e.ParamDefinition.Boolean(!1),backgroundMargin:e.ParamDefinition.Numeric(.2,{min:0,max:1,step:.01}),backgroundColor:e.ParamDefinition.Color(o.ColorNames.grey),backgroundOpacity:e.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),tether:e.ParamDefinition.Boolean(!1),tetherLength:e.ParamDefinition.Numeric(1,{min:0,max:5,step:.1}),tetherBaseWidth:e.ParamDefinition.Numeric(.3,{min:0,max:1,step:.01}),attachment:e.ParamDefinition.Select("middle-center",[["bottom-left","bottom-left"],["bottom-center","bottom-center"],["bottom-right","bottom-right"],["middle-left","middle-left"],["middle-center","middle-center"],["middle-right","middle-right"],["top-left","top-left"],["top-center","top-center"],["top-right","top-right"]])},T.Utils={Params:T.Params,createEmpty:x,createValues:E,createValuesSimple:I,updateValues:B,updateBoundingSphere:w,createRenderableState:O,updateRenderableState:F,createPositionIterator:R};function R(L,U){const q=L.charCount*4,N=U.instanceCount.ref.value,k=(0,r.PositionLocation)(),j=k.position,H=L.centerBuffer.ref.value,G=U.aTransform.ref.value,z=(W,X)=>(X<0?y.Vec3.fromArray(j,H,W*3):y.Vec3.transformMat4Offset(j,H,G,0,W*3,X*16),k);return(0,r.LocationIterator)(q,N,4,z)}function E(L,U,q,N,k){const{instanceCount:j,groupCount:H}=q,G=R(L,U),z=(0,n.createColors)(q,G,N.color),W=(0,i.createSizes)(q,G,N.size),X=(0,a.resolveInstanceGranularity)(k.instanceGranularity,H,j)?(0,c.createMarkers)(j,"instance"):(0,c.createMarkers)(j*H,"groupInstance"),Y=(0,d.createEmptyOverpaint)(),K=(0,p.createEmptyTransparency)(),Q=(0,P.createEmptyEmissive)(),J=(0,b.createEmptySubstance)(),ae=(0,v.createEmptyClipping)(),te=(0,C.createEmptyWiggle)(),ne={drawCount:L.charCount*2*3,vertexCount:L.charCount*4,groupCount:H,instanceCount:j},$=(0,i.getMaxSize)(W)*k.sizeFactor,ie=S(L.mappingBuffer.ref.value,L.depthBuffer.ref.value,L.charCount,$),Z=s.Sphere3D.expand((0,s.Sphere3D)(),L.boundingSphere,ie),re=(0,h.calculateTransformBoundingSphere)(Z,U.aTransform.ref.value,j,0);return{dGeometryType:t.ValueCell.create("text"),aPosition:L.centerBuffer,aMapping:L.mappingBuffer,aDepth:L.depthBuffer,aGroup:L.groupBuffer,elements:L.indexBuffer,boundingSphere:t.ValueCell.create(re),invariantBoundingSphere:t.ValueCell.create(Z),uInvariantBoundingSphere:t.ValueCell.create(y.Vec4.ofSphere(Z)),...z,...W,...X,...Y,...K,...Q,...J,...ae,...te,...U,aTexCoord:L.tcoordBuffer,tFont:L.fontTexture,padding:t.ValueCell.create(ie),...a.BaseGeometry.createValues(k,ne),uSizeFactor:t.ValueCell.create(k.sizeFactor),uBorderWidth:t.ValueCell.create((0,g.clamp)(k.borderWidth,0,.5)),uBorderColor:t.ValueCell.create(f.Color.toArrayNormalized(k.borderColor,y.Vec3.zero(),0)),uOffsetX:t.ValueCell.create(k.offsetX),uOffsetY:t.ValueCell.create(k.offsetY),uOffsetZ:t.ValueCell.create(k.offsetZ),uBackgroun
4100dColor:t.ValueCell.create(f.Color.toArrayNormalized(k.backgroundColor,y.Vec3.zero(),0)),uBackgroundOpacity:t.ValueCell.create(k.backgroundOpacity)}}function I(L,U,q,N,k){const j=a.BaseGeometry.createSimple(q,N,k),H={...e.ParamDefinition.getDefaultValues(T.Params),...U};return E(L,j.transform,j.locationIterator,j.theme,H)}function B(L,U){a.BaseGeometry.updateValues(L,U),t.ValueCell.updateIfChanged(L.uSizeFactor,U.sizeFactor),t.ValueCell.updateIfChanged(L.uBorderWidth,U.borderWidth),f.Color.fromNormalizedArray(L.uBorderColor.ref.value,0)!==U.borderColor&&(f.Color.toArrayNormalized(U.borderColor,L.uBorderColor.ref.value,0),t.ValueCell.update(L.uBorderColor,L.uBorderColor.ref.value)),t.ValueCell.updateIfChanged(L.uOffsetX,U.offsetX),t.ValueCell.updateIfChanged(L.uOffsetY,U.offsetY),t.ValueCell.updateIfChanged(L.uOffsetZ,U.offsetZ),f.Color.fromNormalizedArray(L.uBackgroundColor.ref.value,0)!==U.backgroundColor&&(f.Color.toArrayNormalized(U.backgroundColor,L.uBackgroundColor.ref.value,0),t.ValueCell.update(L.uBackgroundColor,L.uBackgroun
4100dColor.ref.value)),t.ValueCell.updateIfChanged(L.uBackgroundOpacity,U.backgroundOpacity)}function w(L,U){const q=(0,i.getMaxSize)(L)*L.uSizeFactor.ref.value,N=S(L.aMapping.ref.value,L.aDepth.ref.value,U.charCount,q),k=s.Sphere3D.expand((0,s.Sphere3D)(),U.boundingSphere,N),j=(0,h.calculateTransformBoundingSphere)(k,L.aTransform.ref.value,L.instanceCount.ref.value,0);s.Sphere3D.equals(j,L.boundingSphere.ref.value)||t.ValueCell.update(L.boundingSphere,j),s.Sphere3D.equals(k,L.invariantBoundingSphere.ref.value)||(t.ValueCell.update(L.invariantBoundingSphere,k),t.ValueCell.update(L.uInvariantBoundingSphere,y.Vec4.fromSphere(L.uInvariantBoundingSphere.ref.value,k))),t.ValueCell.update(L.padding,N)}function O(L){const U=a.BaseGeometry.createRenderableState(L);return F(U,L),U}function F(L,U){a.BaseGeometry.updateRenderableState(L,U),L.pickable=!1,L.opaque=!1,L.writeDepth=!0}})(l||(m1.Text=l={}));function S(T,A,x,M){let D=0,V=0,R=0;for(let E=0,I=x*4;E<I;++E){const B=2*E,w=Math.abs(T[B]);w>D&&(D=w);const O=Math.abs(T[B+1]);O>V&&(V=O);const F=Math.abs(A[E]);F>R&&(R=F)}return Math.max(R,M*Math.sqrt(D*D+V*V))}return m1}var p1={},xu={},_j;function ac(){if(_j)return xu;_j=1,Object.defineProperty(xu,"__esModule",{value:!0}),xu.StripLinesBuilder=xu.LinesBuilder=void 0;const e=_t(),t=kn(),r=Ge(),n=e.ChunkedArray.add,i=e.ChunkedArray.add2,c=e.ChunkedArray.add3,o=(0,r.Vec3)(),s=(0,r.Vec3)(),h=(0,r.Vec3)();var f;(function(g){function a(d=2048,p=1024,u){const m=e.ChunkedArray.create(Float32Array,1,p,u?u.groupBuffer.ref.value:d),v=e.ChunkedArray.create(Float32Array,3,p,u?u.startBuffer.ref.value:d),b=e.ChunkedArray.create(Float32Array,3,p,u?u.endBuffer.ref.value:d),P=(S,T,A,x,M,D,V)=>{for(let R=0;R<4;++R)c(v,S,T,A),c(b,x,M,D),n(m,V)},C=(S,T,A)=>{for(let x=0;x<4;++x)c(v,S[0],S[1],S[2]),c(b,T[0],T[1],T[2]),n(m,A)},l=(S,T,A,x)=>{const M=r.Vec3.distance(S,T),D=A%2!==0,V=Math.floor((A+1)/2),R=M/(A+.5);r.Vec3.setMagnitude(h,r.Vec3.sub(h,T,S),R),r.Vec3.copy(o,S);for(let E=0;E<V;++E)r.Vec3.add(o,o,h),D&&E===V-1?r.Vec3.copy(s,T):r.Vec3.add(s,o,h),P(o[0],o[1],o[2],s[0],s[1],s[2],x),r.Vec3.add(o,o,h)};return{add:P,addVec:C,addFixedCountDashes:l,addFixedLengthDashes:(S,T,A,x)=>{const M=r.Vec3.distance(S,T);l(S,T,M/A,x)},addCage:(S,T,A)=>{const{vertices:x,edges:M}=T;for(let D=0,V=M.length;D<V;D+=2)r.Vec3.fromArray(o,x,M[D]*3),r.Vec3.fromArray(s,x,M[D+1]*3),r.Vec3.transformMat4(o,o,S),r.Vec3.transformMat4(s,s,S),P(o[0],o[1],o[2],s[0],s[1],s[2],A)},getLines:()=>{const S=m.elementCount/4,T=m.elementCount,A=e.ChunkedArray.compact(m,!0),x=e.ChunkedArray.compact(v,!0),M=e.ChunkedArray.compact(b,!0),D=u&&S<=u.lineCount&&u.stripCount.ref.value===0?u.mappingBuffer.ref.value:new Float32Array(S*8),V=u&&S<=u.lineCount&&u.stripCount.ref.value===0?u.indexBuffer.ref.value:new Uint32Array(S*6),R=u?u.stripBuffer.ref.value:new Uint32Array(0);return(!u||S>u.lineCount||u.stripCount.ref.value>0)&&y(S,D,V),t.Lines.create(D,V,A,x,M,R,S,T,0,u)}}}g.create=a})(f||(xu.LinesBuilder=f={}));function y(g,a,d){for(let p=0;p<g;++p){const u=p*8;a[u]=-1,a[u+1]=-1,a[u+2]=1,a[u+3]=-1,a[u+4]=-1,a[u+5]=1,a[u+6]=1,a[u+7]=1}for(let p=0;p<g;++p){const u=p*4,m=p*6;d[m]=u,d[m+1]=u+1,d[m+2]=u+2,d[m+3]=u+1,d[m+4]=u+3,d[m+5]=u+2}}var _;return(function(g){function a(d=2048,p=1024,u){const m=e.ChunkedArray.create(Float32Array,1,p,u?u.groupBuffer.ref.value:d),v=e.ChunkedArray.create(Float32Array,3,p,u?u.startBuffer.ref.value:d),b=e.ChunkedArray.create(Float32Array,3,p,u?u.endBuffer.ref.value:d),P=e.ChunkedArray.create(Float32Array,2,p,u?u.mappingBuffer.ref.value:d),C=e.ChunkedArray.create(Uint32Array,3,p,u?u.indexBuffer.ref.value:d),l=e.ChunkedArray.create(Uint32Array,1,p,u?u.stripBuffer.ref.value:d);let S=0,T=0,A=0,x=0,M=0,D=0;const V=(R,E,I)=>{if(T===0){A=m.elementCount,x=R,M=E,D=I,T=1;return}const B=m.elementCount;T===1&&(c(v,x,M,D),c(b,R,E,I),n(m,S),i(P,-1,-1),c(v,x,M,D),c(b,R,E,I),n(m,S),i(P,1,-1)),c(v,x,M,D),c(b,R,E,I),n(m,S),i(P,-1,1),c(v,x,M,D),c(b,R,E,I),n(m,S),i(P,1,1);const w=T===1?A:B-2,O=T===1?B+2:B;c(C,w,w+1,O),c(C,w+1,O+1,O),x=R,M=E,D=I,T++};return{start:R=>{S=R,T=0,l.elementCount===0&&n(l,0)},add:(R,E,I)=>{V(R,E,I)},addVec:R=>{V(R[0],R[1],R[2])},end:()=>{T=0,n(l,m.elementCount)}
4100,getLines:()=>{const R=C.elementCount/2,E=m.elementCount,I=l.elementCount-1,B=e.ChunkedArray.compact(m,!0),w=e.ChunkedArray.compact(v,!0),O=e.ChunkedArray.compact(b,!0),F=e.ChunkedArray.compact(P,!0),L=e.ChunkedArray.compact(C,!0),U=e.ChunkedArray.compact(l,!0);return t.Lines.create(F,L,B,w,O,U,R,E,I,u)}}}g.create=a})(_||(xu.StripLinesBuilder=_={})),xu}var Sj;function kn(){if(Sj)return p1;Sj=1,Object.defineProperty(p1,"__esModule",{value:!0}),p1.Lines=void 0;const e=et(),t=Ge(),r=us(),n=wi(),i=li(),c=ls(),o=zt(),s=ac(),h=Ne(),f=kr(),y=rt(),_=Tt(),g=Ka(),a=Ya(),d=_t(),p=Qa(),u=Za(),m=Ja(),v=eo(),b=rc();var P;return(function(C){function l(w,O,F,L,U,q,N,k,j,H){return H?M(w,O,F,L,U,q,N,k,j,H):x(w,O,F,L,U,q,N,k,j)}C.create=l;function S(w){const O=w?w.mappingBuffer.ref.value:new Float32Array(0),F=w?w.indexBuffer.ref.value:new Uint32Array(0),L=w?w.groupBuffer.ref.value:new Float32Array(0),U=w?w.startBuffer.ref.value:new Float32Array(0),q=w?w.endBuffer.ref.value:new Float32Array(0),N=w?w.stripBuffer.ref.value:new Uint32Array(0);return l(O,F,L,U,q,N,0,0,0,w)}C.createEmpty=S;function T(w,O){const F=w.vertexBuffer.ref.value,L=w.indexBuffer.ref.value,U=w.groupBuffer.ref.value,q=s.LinesBuilder.create(w.triangleCount*3,w.triangleCount/10,O);for(let N=0,k=w.triangleCount*3;N<k;N+=3){const j=L[N],H=L[N+1],G=L[N+2],z=F[j*3],W=F[j*3+1],X=F[j*3+2],Y=F[H*3],K=F[H*3+1],Q=F[H*3+2],J=F[G*3],ae=F[G*3+1],te=F[G*3+2];q.add(z,W,X,Y,K,Q,U[j]),q.add(z,W,X,J,ae,te,U[j]),q.add(Y,K,Q,J,ae,te,U[H])}return q.getLines()}C.fromMesh=T;function A(w){return(0,d.hashFnv32a)([w.lineCount,w.vertexCount,w.mappingBuffer.ref.version,w.indexBuffer.ref.version,w.groupBuffer.ref.version,w.startBuffer.ref.version,w.endBuffer.ref.version,w.stripCount.ref.version,w.stripBuffer.ref.version])}function x(w,O,F,L,U,q,N,k,j){const H=(0,y.Sphere3D)();let G,z=-1,W=-1;const X={kind:"lines",lineCount:N,vertexCount:k,mappingBuffer:e.ValueCell.create(w),indexBuffer:e.ValueCell.create(O),groupBuffer:e.ValueCell.create(F),startBuffer:e.ValueCell.create(L),endBuffer:e.ValueCell.create(U),stripCount:e.ValueCell.create(j),stripBuffer:e.ValueCell.create(q),get boundingSphere(){const Y=A(X);if(Y!==z){const K=(0,f.calculateInvariantBoundingSphere)(X.startBuffer.ref.value,X.lineCount*4,4),Q=(0,f.calculateInvariantBoundingSphere)(X.endBuffer.ref.value,X.lineCount*4,4);y.Sphere3D.expandBySphere(H,K,Q),z=Y}return H},get groupMapping(){return X.groupBuffer.ref.version!==W&&(G=(0,r.createGroupMapping)(X.groupBuffer.ref.value,X.lineCount,4),W=X.groupBuffer.ref.version),G},setBoundingSphere(Y){y.Sphere3D.copy(H,Y),z=A(X)},hasBoundingSphere(){return z===A(X)}};return X}function M(w,O,F,L,U,q,N,k,j,H){return(N>H.lineCount||j!==H.stripCount.ref.value||j>0)&&(e.ValueCell.update(H.mappingBuffer,w),e.ValueCell.update(H.indexBuffer,O)),H.lineCount=N,H.vertexCount=k,e.ValueCell.update(H.groupBuffer,F),e.ValueCell.update(H.startBuffer,L),e.ValueCell.update(H.endBuffer,U),e.ValueCell.updateIfChanged(H.stripCount,j),e.ValueCell.update(H.stripBuffer,q),H}function D(w,O){const F=w.startBuffer.ref.value;(0,r.transformPositionArray)(O,F,0,w.vertexCount),e.ValueCell.update(w.startBuffer,F);const L=w.endBuffer.ref.value;(0,r.transformPositionArray)(O,L,0,w.vertexCount),e.ValueCell.update(w.endBuffer,L)}C.transform=D,C.Params={..._.BaseGeometry.Params,sizeFactor:h.ParamDefinition.Numeric(2,{min:0,max:10,step:.1}),lineSizeAttenuation:h.ParamDefinition.Boolean(!1),animation:(0,b.getAnimationParam)()},C.Utils={Params:C.Params,createEmpty:S,createValues:R,createValuesSimple:E,updateValues:I,updateBoundingSphere:B,createRenderableState:_.BaseGeometry.createRenderableState,updateRenderableState:_.BaseGeometry.updateRenderableState,createPositionIterator:V};function V(w,O){const F=w.lineCount*4,L=O.instanceCount.ref.value,U=(0,o.PositionLocation)(),q=U.position,N=w.startBuffer.ref.value,k=w.endBuffer.ref.value,j=O.aTransform.ref.value,H=(G,z)=>{const W=G%4===0?N:k;return z<0?t.Vec3.fromArray(q,W,G*3):t.Vec3.transformMat4Offset(q,W,j,0,G*3,z*16),U};return(0,o.LocationIterator)(F,L,2,H)}function R(w,O,F,L,U){const{instanceCount:q,groupCount:N}=F,k=V(w,O),j=(0,n.createColors)(F,k,L.color),H=(0,c.createSizes)(F,k,L.size),G=(0,_.resolveInstanceGranularity)(U.instanceGranularity,N,q)?(0,i.createMarkers)(q,"instance"):(0,i.createMarkers)(q*N,"groupInstance"),z=(0,g.createEmptyOverpaint)(),W=(0,a.createEmptyTransparency)(),X=(0,m.createEmptyEmissive)(),Y=(0,u.createEmptySubstance)(),K=(0,p.createEmptyClipping)(),Q=(0,v.createEmptyWiggle)(),J={drawCount:w.lineCount*2*3,vertexCount:w.vertexCount,groupCount:N,instanceCount:q},ae=y.Sphere3D.clone(w.boundingSphere),te=(0,f.calculateTransformBoundingSphere)(ae,O.aTransform.ref.value,q,0);return{dGeometryType:e.ValueCell.create("lines"),aMapping:w.mappingBuffer,aGroup:w.groupBuffer,aStart:w.startBuffer,aEnd:w.endBuffer,elements:w.indexBuffer,boundingSphere:e.ValueCell.create(te),invariantBoundingSphere:e.ValueCell.create(ae),uInvariantBoundingSphere:e.ValueCell.create(t.Vec4.ofSphere(ae)),...j,...H,...G,...z,...W,...X,...Y,...K,...Q,...O,..._.BaseGeometry.createValues(U,J),uSizeFactor:e.ValueCell.create(U.sizeFactor),dLineSizeAttenuation:e.ValueCell.create(U.lineSizeAttenuation),uDoubleSided:e.ValueCell.create(!0),dFlipSided:e.ValueCell.create(!1),...(0,b.createAnimationValues)(U.animation),str
4100ipCount:w.stripCount,stripOffsets:w.stripBuffer}}function E(w,O,F,L,U){const q=_.BaseGeometry.createSimple(F,L,U),N={...h.ParamDefinition.getDefaultValues(C.Params),...O};return R(w,q.transform,q.locationIterator,q.theme,N)}function I(w,O){_.BaseGeometry.updateValues(w,O),e.ValueCell.updateIfChanged(w.uSizeFactor,O.sizeFactor),e.ValueCell.updateIfChanged(w.dLineSizeAttenuation,O.lineSizeAttenuation),(0,b.updateAnimationValues)(w,O.animation)}function B(w,O){const F=y.Sphere3D.clone(O.boundingSphere),L=(0,f.calculateTransformBoundingSphere)(F,w.aTransform.ref.value,w.instanceCount.ref.value,0);y.Sphere3D.equals(L,w.boundingSphere.ref.value)||e.ValueCell.update(w.boundingSphere,L),y.Sphere3D.equals(F,w.invariantBoundingSphere.ref.value)||(e.ValueCell.update(w.invariantBoundingSphere,F),e.ValueCell.update(w.uInvariantBoundingSphere,t.Vec4.fromSphere(w.uInvariantBoundingSphere.ref.value,F)))}})(P||(p1.Lines=P={})),p1}var h1={},yd={},Au={},Cj;function to(){if(Cj)return Au;Cj=1,Object.defineProperty(Au,"__esModule",{value:!0}),Au.createPrimitive=i,Au.copyPrimitive=c,Au.PrimitiveBuilder=s,Au.transformPrimitive=y;const e=Ge(),t=(0,e.Vec3)(),r=(0,e.Vec3)(),n=(0,e.Vec3)();function i(_,g){const a=g.length,d=s(a/3);for(let p=0;p<a;p+=3)e.Vec3.fromArray(t,_,g[p]*3),e.Vec3.fromArray(r,_,g[p+1]*3),e.Vec3.fromArray(n,_,g[p+2]*3),d.add(t,r,n);return d.getPrimitive()}function c(_){return{vertices:new Float32Array(_.vertices),normals:new Float32Array(_.normals),indices:new Uint32Array(_.indices)}}const o=(0,e.Vec3)();function s(_,g){g===void 0&&(g=_*3);const a=new Float32Array(g*3),d=new Float32Array(g*3),p=new Uint32Array(_*3);let u=0,m=0;return{add:(v,b,P)=>{e.Vec3.toArray(v,a,u),e.Vec3.toArray(b,a,u+3),e.Vec3.toArray(P,a,u+6),e.Vec3.triangleNormal(o,v,b,P);for(let C=0;C<3;++C)e.Vec3.toArray(o,d,u+3*C),p[m+C]=u/3+C;u+=9,m+=3},addQuad:(v,b,P,C)=>{e.Vec3.toArray(v,a,u),e.Vec3.toArray(b,a,u+3),e.Vec3.toArray(P,a,u+6),e.Vec3.toArray(C,a,u+9),e.Vec3.triangleNormal(o,v,b,P);for(let S=0;S<4;++S)e.Vec3.toArray(o,d,u+3*S);const l=u/3;p[m]=l,p[m+1]=l+1,p[m+2]=l+2,p[m+3]=l+2,p[m+4]=l+3,p[m+5]=l,u+=12,m+=6},getPrimitive:()=>({vertices:a,normals:d,indices:p})}}const h=(0,e.Vec3)(),f=(0,e.Mat3)();function y(_,g){const{vertices:a,normals:d}=_,p=e.Mat3.directionTransform(f,g);for(let u=0,m=a.length;u<m;u+=3)e.Vec3.transformMat4(h,e.Vec3.fromArray(h,a,u),g),e.Vec3.toArray(h,a,u),e.Vec3.transformMat3(h,e.Vec3.fromArray(h,d,u),p),e.Vec3.toArray(h,d,u);return _}return Au}var sP={},Pj;function kS(){if(Pj)return sP;Pj=1,Object.defineProperty(sP,"__esModule",{value:!0}),sP.polygon=e;function e(t,r,n=-1){const i=new Float32Array(t*3),c=n===-1?t<=4?Math.sqrt(2)/2:.6:n,o=r?1:0;for(let s=0,h=t;s<h;++s){const f=(s*2+o)/t*Math.PI;i[s*3]=Math.cos(f)*c,i[s*3+1]=Math.sin(f)*c,i[s*3+2]=0}return i}return sP}var vd={},Tj;function Gf(){if(Tj)return vd;Tj=1,Object.defineProperty(vd,"__esModule",{value:!0}),vd.createCage=t,vd.cloneCage=r,vd.transformCage=i;const e=Ge();function t(c,o){return{vertices:c,edges:o}}function r(c){return{vertices:new Float32Array(c.vertices),edges:new Uint32Array(c.edges)}}const n=e.Vec3.zero();function i(c,o){const{vertices:s}=c;for(let h=0,f=s.length;h<f;h+=3)e.Vec3.transformMat4(n,e.Vec3.fromArray(n,s,h),o),e.Vec3.toArray(n,s,h);return c}return vd}var xj;function FS(){if(xj)return yd;xj=1,Object.defineProperty(yd,"__esModule",{value:!0}),yd.Box=_,yd.PerforatedBox=a,yd.BoxCage=p;const e=Ge(),t=to(),r=kS(),n=Gf(),i=(0,e.Vec3)(),c=(0,e.Vec3)(),o=(0,e.Vec3)(),s=(0,e.Vec3)(),h=(0,r.polygon)(4,!0);function f(u){const v=u?36:24,b=(0,t.PrimitiveBuilder)(12,v);for(let P=0;P<4;++P){const C=(P+1)%4;e.Vec3.set(i,h[P*3],h[P*3+1],-.5),e.Vec3.set(c,h[C*3],h[C*3+1],-.5),e.Vec3.set(o,h[C*3],h[C*3+1],.5),e.Vec3.set(s,h[P*3],h[P*3+1],.5),u?b.add(i,c,o):b.addQuad(i,c,o,s)}return e.Vec3.set(i,h[0],h[1],-.5),e.Vec3.set(c,h[3],h[4],-.5),e.Vec3.set(o,h[6],h[7],-.5),e.Vec3.set(s,h[9],h[10],-.5),u?b.add(o,c,i):b.addQuad(s,o,c,i),e.Vec3.set(i,h[0],h[1],.5),e.Vec3.set(c,h[3],h[4],.5),e.Vec3.set(o,h[6],h[7],.5),e.Vec3.set(s,h[9],h[10],.5),u?b.add(i,c,o):b.addQuad(i,c,o,s),b.getPrimitive()}let y;function _(){return y||(y=f(!1)),y}let g;function a(){return g||(g=f(!0)),g}let d;function p(){return d||(d=(0,n.createCage)([.5,.5,-.5,-.5,.5,-.5,-.5,-.5,-.5,.5,-.5,-.5,.5,.5,.5,-.5,.5,.5,-.5,-.5,.5,.5,-.5,.5],[0,4,1,5,2,6,3,7,0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4])),d}return yd}var bd={},Aj;function Hne(){if(Aj)return bd;Aj=1,Object.defineProperty(bd,"__esModule",{value:!0}),bd.getControlPointsFromString=r,bd.getControlPointsFromVec2Array=n,bd.createTransferFunctionTexture=o;const e=ir(),t=et();function r(s){return s.split(/\s*,\s*/).map(h=>{const f=h.split(/\s*:\s*/);return{x:parseFloat(f[0]),alpha:parseFloat(f[1])}})}function n(s){return s.map(h=>({x:h[0],alpha:h[1]}))}const i=256;function c(s,h){const f=[{x:0,alpha:0},{x:0,alpha:0},...s,{x:1,alpha:0},{x:1,alpha:0}],y=h??new Uint8Array(i);h&&y.fill(0);let _=0,g,a,d,p,u,m;const v=s.length+1;for(let b=0;b<v;++b){g=f[b+1].x,a=f[b+2].x,d=f[b].alpha,p=f[b+1].alpha,u=f[b+2].alpha,m=f[b+3].alpha;const P=Math.round((a-g)*i);for(let C=0;C<P;++C){const l=C/P;_<i&&(y[_]=Math.max(0,(0,e.spline)(d,p,u,m,l,.5)*255),++_)}}return y}function o(s,h){const y=h&&h.ref.value.height===1&&h.ref.value.array.length===i?h.ref.value.array:new Uint8Array(i);c(s,y);const _={array:y,width:i,height:1};return h?(t.ValueCell.update(h,_),h):t.ValueCell.create(_)}return bd}var _3={},g1={},y1={},Mu={},Mj;function Wne(){if(Mj)return Mu;
4100Mj=1,Object.defineProperty(Mu,"__esModule",{value:!0}),Mu.calculateHistogram=t,Mu.histogramPercentile=n,Mu.histogramRobustStats=i,Mu.downsampleHistogram=c;const e=Vt();function t(o,s,h){if(h)return r(o,s,h.min,h.max);{const[f,y]=(0,e.arrayMinMax)(o);return r(o,s,f,y)}}function r(o,s,h,f){let y=(f-h)/s;y===0&&(y=1);const _=new Int32Array(s);for(let g=0,a=o.length;g<a;g++){let d=Math.floor((o[g]-h)/y);d>=s?d=s-1:d<0&&(d=0),_[d]++}return{min:h,max:f,binWidth:y,counts:_}}function n(o,s,h){const{counts:f,min:y,binWidth:_}=o,g=f.length;if(g===0)return y;let a=0;for(let u=0;u<g;++u)u!==h&&(a+=f[u]);if(a===0)return y;const d=Math.max(0,Math.min(1,s))*a;let p=0;for(let u=0;u<g;++u){if(u===h)continue;const m=f[u];if(m===0)continue;const v=p+m;if(v>=d){const b=m>0?(d-p)/m:0;return y+(u+b)*_}p=v}return y+g*_}function i(o,s){const{counts:h,min:f,binWidth:y}=o,_=h.length;let g;s?.ignoreZero&&y>0&&Math.floor((0-f)/y)===0&&(g=0);let a=0,d=0,p=0,u=-1,m=-1;for(let S=0;S<_;++S){if(S===g)continue;const T=h[S];if(T===0)continue;const A=f+(S+.5)*y;a+=T,d+=T*A,p+=T*A*A,u<0&&(u=S),m=S}
4100if(a===0)return{count:0,min:f,max:f,mean:f,sigma:0,p1:f,p50:f,p95:f,p99:f};const v=d/a,b=Math.max(0,p/a-v*v),P=Math.sqrt(b),C=f+u*y,l=f+(m+1)*y;return{count:a,min:C,max:l,mean:v,sigma:P,p1:n(o,.01,g),p50:n(o,.5,g),p95:n(o,.95,g),p99:n(o,.99,g)}}function c(o,s){const h=o.counts.length;if(s<=0||s>=h)return o;const f=new Int32Array(s);for(let _=0;_<h;++_){let g=Math.floor(_*s/h);g>=s&&(g=s-1),f[g]+=o.counts[_]}const y=(o.max-o.min)/s||1;return{min:o.min,max:o.max,binWidth:y,counts:f}}return Mu}var Dj;function zf(){if(Dj)return y1;Dj=1,Object.defineProperty(y1,"__esModule",{value:!0}),y1.Grid=void 0;const e=rt(),t=Ge(),r=Wne(),n=ir(),i=t.Vec3.transformMat4,c=t.Vec3.lerp;var o;return(function(s){s.One={transform:{kind:"matrix",matrix:t.Mat4.identity()},cells:t.Tensor.create(t.Tensor.Space([1,1,1],[0,1,2]),t.Tensor.Data1([0])),stats:{min:0,max:0,mean:0,sigma:0}};const h=(0,t.Mat4)(),f=(0,t.Mat4)();function y(I){if(I.transform.kind==="matrix")return t.Mat4.copy((0,t.Mat4)(),I.transform.matrix);if(I.transform.kind==="spacegroup"){const{cells:{space:B}}=I,w=t.Mat4.fromScaling(h,t.Vec3.div((0,t.Vec3)(),e.Box3D.size((0,t.Vec3)(),I.transform.fractionalBox),t.Vec3.ofArray(B.dimensions))),O=t.Mat4.fromTranslation(f,I.transform.fractionalBox.min);return t.Mat4.mul3((0,t.Mat4)(),I.transform.cell.fromFractional,O,w)}return t.Mat4.identity()}s.getGridToCartesianTransform=y;function _(I,B){return I===B}s.areEquivalent=_;function g(I){return I.cells.data.length===0}s.isEmpty=g;function a(I,B){B||(B=(0,e.Sphere3D)());const w=I.cells.space.dimensions,O=s.getGridToCartesianTransform(I);return e.Sphere3D.fromDimensionsAndTransform(B,w,O)}s.getBoundingSphere=a;const d=(0,e.Box3D)();function p(I,B,w){const O=B<0,F=[0,0,0],L=I.cells.space.getCoords,U=I.cells.data,[q,N,k]=I.cells.space.dimensions;let j=q-1,H=N-1,G=k-1,z=0,W=0,X=0;for(let K=0,Q=U.length;K<Q;++K)(O&&U[K]<=B||!O&&U[K]>=B)&&(L(K,F),F[0]<j&&(j=F[0]),F[1]<H&&(H=F[1]),F[2]<G&&(G=F[2]),F[0]>z&&(z=F[0]),F[1]>W&&(W=F[1]),F[2]>X&&(X=F[2]));t.Vec3.set(d.min,j-1,H-1,G-1),t.Vec3.set(d.max,z+1,W+1,X+1);const Y=s.getGridToCartesianTransform(I);return e.Box3D.transform(d,d,Y),e.Sphere3D.fromBox3D(w||(0,e.Sphere3D)(),d)}s.getIsosurfaceBoundingSphere=p;function u(I,B){let w=I._histograms;return w||(w=I._histograms={}),w[B]||(w[B]=(0,r.calculateHistogram)(I.cells.data,B,{min:I.stats.min,max:I.stats.max})),w[B]}s.getHistogram=u,s.RobustStatsBinCount=1024;function m(I,B){var w;const O=(w=B?.binCount)!==null&&w!==void 0?w:s.RobustStatsBinCount,F=!!B?.ignoreZero,L=`${O}|${F?1:0}`;let U=I._robustStats;return U||(U=I._robustStats={}),U[L]||(U[L]=(0,r.histogramRobustStats)(u(I,O),{ignoreZero:F})),U[L]}s.getRobustStats=m;function v(I,B){const w=s.getGridToCartesianTransform(I);t.Mat4.invert(w,w);const O=(0,t.Vec3)(),{stats:F}=I,{dimensions:L,get:U}=I.cells.space,q=I.cells.data,[N,k,j]=L,H=(z,W,X)=>U(q,z,W,X),G=I.periodicity==="xyz";return function(W){i(O,W,w);const X=b(O,N,k,j,G,H);return Number.isNaN(X)?X:B==="relative"?(X-F.mean)/F.sigma:X}}s.makeGetTrilinearlyInterpolated=v;function b(I,B,w,O,F,L){const U=Math.trunc(I[0]),q=Math.trunc(I[1]),N=Math.trunc(I[2]);if(!F&&(U<0||U>=B||q<0||q>=w||N<0||N>=O))return Number.NaN;const k=I[0]-U,j=I[1]-q,H=I[2]-N,G=Math.min(U+1,B-1),z=Math.min(q+1,w-1),W=Math.min(N+1,O-1);let X=L(U,q,N),Y=L(G,q,N),K=L(U,z,N),Q=L(G,z,N);const J=(0,n.lerp)((0,n.lerp)(X,Y,k),(0,n.lerp)(K,Q,k),j);X=L(U,q,W),Y=L(G,q,W),K=L(U,z,W),Q=L(G,z,W);const ae=(0,n.lerp)((0,n.lerp)(X,Y,k),(0,n.lerp)(K,Q,k),j);return(0,n.lerp)(J,ae,H)}s.trilinearlyInterpolate=b;const P=(0,t.Vec3)(),C=(0,t.Vec3)(),l=(0,t.Vec3)(),S=(0,t.Vec3)(),T=(0,t.Vec3)(),A=(0,t.Vec3)(),x=(0,t.Vec3)(),M=(0,t.Vec3)();function D(I,B,w,O,F,L){const U=Math.trunc(I[0]),q=Math.trunc(I[1]),N=Math.trunc(I[2]);if(U<0||U>=B||q<0||q>=w||N<0||N>=O)return!1;const k=I[0]-U,j=I[1]-q,H=I[2]-N,G=Math.min(U+1,B-1),z=Math.min(q+1,w-1),W=Math.min(N+1,O-1);return F(U,q,N,P),F(G,q,N,C),F(U,z,N,l),F(G,z,N,S),c(T,P,C,k),c(A,l,S,k),c(x,T,A,j),F(U,q,W,P),F(G,q,W,C),F(U,z,W,l),F(G,z,W,S),c(T,P,C,k),c(A,l,S,k),c(M,T,A,j),c(L,x,M,H),!0}s.trilinearlyInterpolateVec3=D;
4100function V(I){if(I._gradients)return I._gradients;const B=R(I);return I._gradients=B,B}s.getGradients=V;function R(I){const{dimensions:B,get:w,dataOffset:O}=I.cells.space,F=I.cells.data,[L,U,q]=B,N=L*U*q,k=new Float32Array(N*3);let j=1/0,H=-1/0,G=0,z=0;for(let Y=0;Y<q;++Y)for(let K=0;K<U;++K)for(let Q=0;Q<L;++Q){const J=O(Q,K,Y)*3,ae=Math.max(0,Q-1),te=Math.min(L-1,Q+1),ne=Math.max(0,K-1),$=Math.min(U-1,K+1),ie=Math.max(0,Y-1),Z=Math.min(q-1,Y+1),re=(w(F,te,K,Y)-w(F,ae,K,Y))/(te-ae||1),oe=(w(F,Q,$,Y)-w(F,Q,ne,Y))/($-ne||1),ce=(w(F,Q,K,Z)-w(F,Q,K,ie))/(Z-ie||1);k[J]=re,k[J+1]=oe,k[J+2]=ce;const ue=re*re+oe*oe+ce*ce;ue<j&&(j=ue),ue>H&&(H=ue),G+=ue,z+=ue*ue}j===1/0&&(j=0),H===-1/0&&(H=1),j=Math.sqrt(j),H=Math.sqrt(H);const W=G/N,X=Math.sqrt(z/N);return{values:k,magnitude:{min:j,max:H,mean:W,sigma:X}}}function E(I){const{values:B}=V(I),{dimensions:w,dataOffset:O}=I.cells.space,[F,L,U]=w,q=(N,k,j,H)=>{const G=O(N,k,j)*3;H[0]=B[G],H[1]=B[G+1],H[2]=B[G+2]};return function(k,j){return D(k,F,L,U,q,j)}}s.makeGetInterpolatedGradient=E})(o||(y1.Grid=o={})),y1}var _d={},Ij;function bQ(){if(Ij)return _d;Ij=1,Object.defineProperty(_d,"__esModule",{value:!0}),_d.CubeFormat=void 0,_d.volumeFromCube=i;const e=Ge(),t=nt(),r=Vt(),n=Pr();function i(o,s){return t.Task.create("Create Volume",async()=>{const{header:h,values:f}=o,y=e.Tensor.Space(h.dim,[0,1,2],Float64Array);let _;if(h.dataSetIds.length===0)_=f;else{const[p,u,m]=h.dim,v=(s?.dataIndex||0)+1;let b=0,P=0;_=new Float64Array(p*u*m);for(let C=0;C<p;C++)for(let l=0;l<u;l++)for(let S=0;S<m;S++)_[b++]=f[P],P+=v}const g=e.Tensor.create(y,e.Tensor.Data1(_)),a=e.Mat4.fromTranslation((0,e.Mat4)(),h.origin),d=e.Mat4.fromBasis((0,e.Mat4)(),h.basisX,h.basisY,h.basisZ);return e.Mat4.mul(a,a,d),{label:s?.label,entryId:s?.entryId,grid:{transform:{kind:"matrix",matrix:a},cells:g,stats:{min:(0,r.arrayMin)(_),max:(0,r.arrayMax)(_),mean:(0,r.arrayMean)(_),sigma:(0,r.arrayRms)(_)}},instances:[{transform:e.Mat4.identity()}],sourceData:c.create(o),customProperties:new n.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)}})}var c;return(function(o){function s(f){return f?.kind==="cube"}o.is=s;function h(f){return{kind:"cube",name:f.name,data:f}}o.create=h})(c||(_d.CubeFormat=c={})),_d}var Sd={},wj;function Tw(){if(wj)return Sd;wj=1,Object.defineProperty(Sd,"__esModule",{value:!0}),Sd.DscifFormat=void 0,Sd.volumeFromDensityServerData=i;const e=nt(),t=rt(),r=Ge(),n=Pr();function i(o,s){return e.Task.create("Create Volume",async h=>{const{volume_data_3d_info:f,volume_data_3d:y}=o,_=t.SpacegroupCell.create(f.spacegroup_number.value(0)||"P 1",r.Vec3.ofArray(f.spacegroup_cell_size.value(0)),r.Vec3.scale(r.Vec3.zero(),r.Vec3.ofArray(f.spacegroup_cell_angles.value(0)),Math.PI/180)),g=f.axis_order.value(0),a=r.Tensor.convertToCanonicalAxisIndicesFastToSlow(g),d=a(f.sample_count.value(0)),p=r.Tensor.Space(d,r.Tensor.invertAxisOrder(g),Float32Array),u=r.Tensor.create(p,r.Tensor.Data1(y.values.toArray({array:Float32Array}))),m=r.Vec3.ofArray(a(f.origin.value(0))),v=r.Vec3.ofArray(a(f.dimensions.value(0)));return{label:s?.label,entryId:s?.entryId,grid:{transform:{kind:"spacegroup",cell:_,fractionalBox:t.Box3D.create(m,r.Vec3.add(r.Vec3.zero(),m,v))},cells:u,stats:{min:f.min_sampled.value(0),max:f.max_sampled.value(0),mean:f.mean_sampled.value(0),sigma:f.sigma_sampled.value(0)},periodicity:r.Vec3.isInteger(v)?"xyz":"none"},instances:[{transform:r.Mat4.identity()}],sourceData:c.create(o),customProperties:new n.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)}})}var c;return(function(o){function s(f){return f?.kind==="dscif"}o.is=s;function h(f){return{kind:"dscif",name:f._name,data:f}}o.create=h})(c||(Sd.DscifFormat=c={})),Sd}var Vj;function oc(){if(Vj)return g1;Vj=1,Object.defineProperty(g1,"__esModule",{value:!0}),g1.Volume=void 0;const e=zf(),t=at(),r=rt(),n=Ge(),i=Ki(),c=bQ(),o=rn(),s=Pr(),h=Ne(),f=Df(),y=Tw(),_=Dn();var g;return(function(a){function d(I){var B,w,O,F;return((F=(O=(w=(B=I?.grid)===null||B===void 0?void 0:B.cells)===null||w===void 0?void 0:w.space)===null||O===void 0?void 0:O.dimensions)===null||F===void 0?void 0:F.length)&&I?.instances&&I?.sourceData&&I?.customProperties&&I?._propertyData&&I?._localPropertyData}a.is=d;let p;(function(I){function B(k,j,H){return(0,o.equalEps)(U(k,H).absoluteValue,U(j,H).absoluteValue,H.sigma/100)}I.areSame=B;function w(k){return{kind:"absolute",absoluteValue:k}}I.absolute=w;function O(k){return{kind:"relative",relativeValue:k}}I.relative=O;function F(k,j){return j*k.sigma+k.mean}I.calcAbsolute=F;function L(k,j){return k.sigma===0?0:(j-k.mean)/k.sigma}I.calcRelative=L;function U(k,j){return k.kind==="absolute"?k:{kind:"absolute",absoluteValue:I.calcAbsolute(j,k.relativeValue)}}I.toAbsolute=U;function q(k,j){return k.kind==="relative"?k:{kind:"relative",relativeValue:I.calcRelative(j,k.absoluteValue)}}I.toRelative=q;function N(k){return k.kind==="relative"?`${k.relativeValue.toFixed(2)} σ`:`${k.absoluteValue.toPrecision(4)}`}I.toString=N})(p=a.IsoValue||(a.IsoValue={}));function u(I,B,w){if(w==="relative")return p.relative(B);const O=p.absolute(B);if(y.DscifFormat.is(I.sourceData)){const F={min:I.sourceData.data.volume_data_3d_info.min_source.value(0),max:I.sourceData.data.volume_data_3d_info.max_source.value(0),mean:I.sourceData.data.volume_data_3d_info.mean_source.value(0),sigma:I.sourceData.data.volume_data_3d_info.sigma_source.value(0)};return a.IsoValue.toRelative(O,F)}return O}
4100a.adjustedIsoValue=u;const m={min:-1,max:1,mean:0,sigma:.1};function v(I,B){const w=B||m,{min:O,max:F,mean:L,sigma:U}=w,q=(O-L)/U,N=(F-L)/U;let k=I;return I.kind==="absolute"?I.absoluteValue<O?k=a.IsoValue.absolute(O):I.absoluteValue>F&&(k=a.IsoValue.absolute(F)):I.relativeValue<q?k=a.IsoValue.relative(q):I.relativeValue>N&&(k=a.IsoValue.relative(N)),h.ParamDefinition.Conditioned(k,{absolute:h.ParamDefinition.Converted(j=>a.IsoValue.toAbsolute(j,e.Grid.One.stats).absoluteValue,j=>a.IsoValue.absolute(j),h.ParamDefinition.Numeric(L,{min:O,max:F,step:(0,f.toPrecision)(U/100,2)},{immediateUpdate:!0})),relative:h.ParamDefinition.Converted(j=>a.IsoValue.toRelative(j,e.Grid.One.stats).relativeValue,j=>a.IsoValue.relative(j),h.ParamDefinition.Numeric(Math.min(1,N),{min:q,max:N,step:(0,f.toPrecision)(Math.round((F-O)/U)/100,2)},{immediateUpdate:!0}))},j=>j.kind==="absolute"?"absolute":"relative",(j,H)=>H==="absolute"?a.IsoValue.toAbsolute(j,w):a.IsoValue.toRelative(j,w),{isEssential:!0})}a.createIsoValueParam=v,a.IsoValueParam=v(a.IsoValue.relative(2)),a.One={label:"",grid:e.Grid.One,instances:[],sourceData:{kind:"",name:"",data:{}},customProperties:new s.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)};function b(I,B){return e.Grid.areEquivalent(I.grid,B.grid)&&P(I,B)}a.areEquivalent=b;function P(I,B){if(I.instances.length!==B.instances.length)return!1;for(let w=0,O=I.instances.length;w<O;++w)if(!n.Mat4.areEqual(I.instances[w].transform,B.instances[w].transform,o.EPSILON))return!1;return!0}a.areInstanceTransformsEqual=P;function C(I){return e.Grid.isEmpty(I.grid)||I.instances.length===0}a.isEmpty=C;function l(I){return c.CubeFormat.is(I.sourceData)?I.sourceData.data.header.orbitals:!1}a.isOrbitals=l;function S(I,B){return{kind:"volume-loci",volume:I,instances:B}}a.Loci=S;function T(I){return!!I&&I.kind==="volume-loci"}a.isLoci=T;function A(I,B){return I.volume===B.volume&&t.OrderedSet.areEqual(I.instances,B.instances)}a.areLociEqual=A;function x(I){return C(I.volume)||t.OrderedSet.isEmpty(I.instances)}a.isLociEmpty=x;const M=new i.BoundaryHelper("98");function D(I,B,w){const O=e.Grid.getBoundingSphere(I.grid);if(w||(w=(0,r.Sphere3D)()),t.OrderedSet.isEmpty(B))return r.Sphere3D.copy(w,O);const F=[];for(let L=0,U=t.OrderedSet.size(B);L<U;++L){const{transform:q}=I.instances[t.OrderedSet.getAt(B,L)];F.push(r.Sphere3D.transform((0,r.Sphere3D)(),O,q))}M.reset();for(const L of F)M.includeSphere(L);M.finishedIncludeStep();for(const L of F)M.radiusSphere(L);return M.getSphere(w)}a.getBoundingSphere=D,(function(I){function B(q,N,k){return{kind:"isosurface-loci",volume:q,isoValue:N,instances:k}}I.Loci=B;function w(q){return!!q&&q.kind==="isosurface-loci"}I.isLoci=w;function O(q,N){return q.volume===N.volume&&a.IsoValue.areSame(q.isoValue,N.isoValue,q.volume.grid.stats)&&t.OrderedSet.areEqual(q.instances,N.instances)}I.areLociEqual=O;function F(q){return C(q.volume)||t.OrderedSet.isEmpty(q.instances)}I.isLociEmpty=F;const L=new i.BoundaryHelper("98");function U(q,N,k,j){const H=a.IsoValue.toAbsolute(N,q.grid.stats).absoluteValue,G=e.Grid.getIsosurfaceBoundingSphere(q.grid,H);if(t.OrderedSet.isEmpty(k))return r.Sphere3D.copy(j||(0,r.Sphere3D)(),G);const z=[];for(let W=0,X=t.OrderedSet.size(k);W<X;++W)z.push(r.Sphere3D.transform((0,r.Sphere3D)(),G,q.instances[t.OrderedSet.getAt(k,W)].transform));L.reset();for(const W of z)L.includeSphere(W);L.finishedIncludeStep();for(const W of z)L.radiusSphere(W);return L.getSphere(j)}I.getBoundingSphere=U})(a.Isosurface||(a.Isosurface={})),(function(I){function B(G,z){return{kind:"cell-loci",volume:G,elements:z}}I.Loci=B;function w(G){return!!G&&G.kind==="cell-loci"}I.isLoci=w;function O(G,z){if(G.volume!==z.volume||G.elements.length!==z.elements.length)return!1;for(let W=0,X=G.elements.length;W<X;++W){const Y=G.elements[W],K=z.elements[W];if(!t.OrderedSet.areEqual(Y.instances,K.instances)||!t.OrderedSet.areEqual(Y.indices,K.indices))return!1}return!0}I.areLociEqual=O;function F(G){for(const{indices:z,instances:W}of G.elements)if(!t.OrderedSet.isEmpty(W)||!t.OrderedSet.isEmpty(z))return!1;return!0}I.isLociEmpty=F;function L(G){let z=0;for(const{indices:W,instances:X}of G.elements)z+=t.OrderedSet.size(W)*t.OrderedSet.size(X);return z}I.getLociSize=L;function U(G,z,W){return{kind:"cell-location",volume:G,cell:z,instance:W}}I.Location=U;function q(G){return!!G&&G.kind==="cell-location"}I.isLocation=q;const N=new i.BoundaryHelper("98"),k=(0,n.Vec3)(),j=(0,n.Vec3)();function H(G,z,W){N.reset();const X=e.Grid.getGridToCartesianTransform(G.grid),{getCoords:Y}=G.grid.cells.space;for(const{indices:Q,instances:J}of z)for(let ae=0,te=t.OrderedSet.size(Q);ae<te;ae++){const ne=t.OrderedSet.getAt(Q,ae);Y(ne,k),n.Vec3.transformMat4(k,k,X);for(let $=0,ie=t.OrderedSet.size(J);$<ie;$++){const Z=G.instances[t.OrderedSet.getAt(J,$)];n.Vec3.transformMat4(j,k,Z.transform),N.includePosition(j)}}N.finishedIncludeStep();for(const{indices:Q,instances:J}of z)for(let ae=0,te=t.OrderedSet.size(Q);ae<te;ae++){const ne=t.OrderedSet.getAt(Q,ae);Y(ne,k),n.Vec3.transformMat4(k,k,X);for(let $=0,ie=t.OrderedSet.size(J);$<ie;$++){const Z=G.instances[t.OrderedSet.getAt(J,$)];n.Vec3.transformMat4(j,k,Z.transform),N.radiusPosition(j)}}
4100const K=N.getSphere(W);return r.Sphere3D.expand(K,K,n.Mat4.getMaxScaleOnAxis(X)*10)}I.getBoundingSphere=H})(a.Cell||(a.Cell={})),(function(I){function B(G,z){return{kind:"segment-loci",volume:G,elements:z}}I.Loci=B;function w(G){return!!G&&G.kind==="segment-loci"}I.isLoci=w;function O(G,z){if(G.volume!==z.volume||G.elements.length!==z.elements.length)return!1;for(let W=0,X=G.elements.length;W<X;++W){const Y=G.elements[W],K=z.elements[W];if(!t.OrderedSet.areEqual(Y.instances,K.instances)||!t.OrderedSet.areEqual(Y.segments,K.segments))return!1}return!0}I.areLociEqual=O;function F(G){for(const{segments:z,instances:W}of G.elements)if(!t.OrderedSet.isEmpty(W)||!t.OrderedSet.isEmpty(z))return!1;return!0}I.isLociEmpty=F;function L(G){let z=0;for(const{segments:W,instances:X}of G.elements)z+=t.OrderedSet.size(W)*t.OrderedSet.size(X);return z}I.getLociSize=L;const U=(0,r.Box3D)(),q=(0,r.Box3D)(),N=(0,r.Box3D)();function k(G,z,W){const X=a.Segmentation.get(G);if(X){r.Box3D.setEmpty(U);const Y=e.Grid.getGridToCartesianTransform(G.grid);for(const{segments:K,instances:Q}of z){r.Box3D.setEmpty(q);for(let J=0,ae=t.OrderedSet.size(K);J<ae;J++){const te=t.OrderedSet.getAt(K,J),ne=X.bounds[te];r.Box3D.add(q,ne.min),r.Box3D.add(q,ne.max)}r.Box3D.transform(q,q,Y);for(let J=0,ae=t.OrderedSet.size(Q);J<ae;J++){const te=G.instances[t.OrderedSet.getAt(Q,J)];r.Box3D.transform(N,q,te.transform),r.Box3D.addBox3D(U,N)}}return r.Sphere3D.fromBox3D(W||(0,r.Sphere3D)(),U)}else return a.getBoundingSphere(G,t.Interval.ofLength(G.instances.length),W)}I.getBoundingSphere=k;function j(G,z,W){return{kind:"segment-location",volume:G,segment:z,instance:W}}I.Location=j;function H(G){return!!G&&G.kind==="segment-location"}
4100I.isLocation=H})(a.Segment||(a.Segment={})),a.PickingGranularity={set(I,B){I._propertyData.__picking_granularity__=B},get(I){var B;return(B=I._propertyData.__picking_granularity__)!==null&&B!==void 0?B:"voxel"}},a.Segmentation={set(I,B){I._propertyData.__segmentation__=B},get(I){return I._propertyData.__segmentation__}};function V(I){if(!E(I))return;const B=I.parent||I;if(!B._localPropertyData.__periodicRange__){const w=n.Vec3.fromArray((0,n.Vec3)(),B.grid.cells.space.dimensions,0),O=e.Grid.getGridToCartesianTransform(B.grid);n.Vec3.transformMat4(w,w,O);const F=n.Vec3.create(1/0,1/0,1/0),L=n.Vec3.create(-1/0,-1/0,-1/0),U=(0,n.Vec3)();for(const{transform:q}of B.instances)n.Mat4.getTranslation(U,q),n.Vec3.div(U,U,w),n.Vec3.round(U,U),n.Vec3.min(F,F,U),n.Vec3.max(L,L,U);n.Vec3.addScalar(L,L,1),B._localPropertyData.__periodicRange__={min:F,max:L}}return B._localPropertyData.__periodicRange__}a.getPeriodicRange=V;function R(I){if(!E(I))return;const B=I.parent||I;if(!B._localPropertyData.__periodicInstanceMapping__){const w=new Map,O=n.Vec3.fromArray((0,n.Vec3)(),B.grid.cells.space.dimensions,0),F=e.Grid.getGridToCartesianTransform(B.grid);n.Vec3.transformMat4(O,O,F);const{min:L}=V(B),U=(0,n.Vec3)();for(let N=0,k=B.instances.length;N<k;N++){const{transform:j}=B.instances[N];n.Mat4.getTranslation(U,j),n.Vec3.div(U,U,O),n.Vec3.round(U,U),n.Vec3.sub(U,U,L),w.set((0,_.mortonOrder3d)(U[0],U[1],U[2]),N)}const q=n.Vec3.fromArray((0,n.Vec3)(),B.grid.cells.space.dimensions,0);B._localPropertyData.__periodicInstanceMapping__={get(N,k,j){n.Vec3.set(U,N,k,j),n.Vec3.div(U,U,q),n.Vec3.floor(U,U);const H=w.get((0,_.mortonOrder3d)(U[0],U[1],U[2]));if(H===void 0)return;n.Vec3.set(U,N,k,j),n.Vec3.mod(U,U,q);const G=B.grid.cells.space.dataOffset(U[0],U[1],U[2]);return{instance:H,cell:G}}}}return B._localPropertyData.__periodicInstanceMapping__}a.getPeriodicMapping=R;function E(I){return I.grid.periodicity==="xyz"}a.isPeriodic=E})(g||(g1.Volume=g={})),g1}var Ej;function sn(){return Ej||(Ej=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(oc(),e),t.__exportStar(zf(),e)})(_3)),_3}var Bj;function Hf(){if(Bj)return h1;Bj=1,Object.defineProperty(h1,"__esModule",{value:!0}),h1.DirectVolume=void 0;const e=_t(),t=zt(),r=kr(),n=bn(),i=rt(),c=Ge(),o=et(),s=Ne(),h=FS(),f=Tt(),y=wi(),_=li(),g=Ka(),a=Ya(),d=Hne(),p=Qa(),u=sn(),m=Za(),v=Ja(),b=eo(),P=(0,h.Box)();
4100var C;(function(S){function T(q,N,k,j,H,G,z,W,X,Y,K){return K?M(q,N,k,j,H,G,z,W,X,Y,K):x(q,N,k,j,H,G,z,W,X,Y)}S.create=T;function A(q){return(0,e.hashFnv32a)([q.bboxSize.ref.version,q.gridDimension.ref.version,q.gridTexture.ref.version,q.transform.ref.version,q.gridStats.ref.version])}function x(q,N,k,j,H,G,z,W,X,Y){const K=(0,i.Sphere3D)();let Q=-1;const J=G.getWidth(),ae=G.getHeight(),te=G.getDepth(),ne={kind:"direct-volume",gridDimension:o.ValueCell.create(N),gridTexture:o.ValueCell.create(G),gridTextureDim:o.ValueCell.create(c.Vec3.create(J,ae,te)),gridStats:o.ValueCell.create(c.Vec4.create(z.min,z.max,z.mean,z.sigma)),bboxMin:o.ValueCell.create(q.min),bboxMax:o.ValueCell.create(q.max),bboxSize:o.ValueCell.create(c.Vec3.sub((0,c.Vec3)(),q.max,q.min)),transform:o.ValueCell.create(k),cellDim:o.ValueCell.create(H),unitToCartn:o.ValueCell.create(j),cartnToUnit:o.ValueCell.create(c.Mat4.invert((0,c.Mat4)(),j)),get boundingSphere(){const $=A(ne);if($!==Q){const ie=l(ne.gridDimension.ref.value,ne.transform.ref.value);i.Sphere3D.copy(K,ie),Q=$}return K},packedGroup:o.ValueCell.create(W),axisOrder:o.ValueCell.create(X),dataType:o.ValueCell.create(Y),setBoundingSphere($){i.Sphere3D.copy(K,$),Q=A(ne)},hasBoundingSphere(){return Q===A(ne)},meta:{}};return ne}function M(q,N,k,j,H,G,z,W,X,Y,K){const Q=G.getWidth(),J=G.getHeight(),ae=G.getDepth();return o.ValueCell.update(K.gridDimension,N),o.ValueCell.update(K.gridTexture,G),o.ValueCell.update(K.gridTextureDim,c.Vec3.set(K.gridTextureDim.ref.value,Q,J,ae)),o.ValueCell.update(K.gridStats,c.Vec4.set(K.gridStats.ref.value,z.min,z.max,z.mean,z.sigma)),o.ValueCell.update(K.bboxMin,q.min),o.ValueCell.update(K.bboxMax,q.max),o.ValueCell.update(K.bboxSize,c.Vec3.sub(K.bboxSize.ref.value,q.max,q.min)),o.ValueCell.update(K.transform,k),o.ValueCell.update(K.cellDim,H),o.ValueCell.update(K.unitToCartn,j),o.ValueCell.update(K.cartnToUnit,c.Mat4.invert((0,c.Mat4)(),j)),o.ValueCell.updateIfChanged(K.packedGroup,W),o.ValueCell.updateIfChanged(K.axisOrder,c.Vec3.fromArray(K.axisOrder.ref.value,X,0)),o.ValueCell.updateIfChanged(K.dataType,Y),K}function D(q){const N=(0,i.Box3D)(),k=(0,c.Vec3)(),j=c.Mat4.identity(),H=c.Mat4.identity(),G=(0,c.Vec3)(),z=(0,n.createNullTexture)(),W=u.Grid.One.stats,X=!1,Y=c.Vec3.create(0,1,2);return T(N,k,j,H,G,z,W,X,Y,"byte",q)}S.createEmpty=D,S.Params={...f.BaseGeometry.Params,ignoreLight:s.ParamDefinition.Boolean(!1,f.BaseGeometry.ShadingCategory),celShaded:s.ParamDefinition.Boolean(!1,f.BaseGeometry.ShadingCategory),xrayShaded:s.ParamDefinition.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],f.BaseGeometry.ShadingCategory),controlPoints:s.ParamDefinition.LineGraph([c.Vec2.create(.19,0),c.Vec2.create(.2,.05),c.Vec2.create(.25,.05),c.Vec2.create(.26,0),c.Vec2.create(.79,0),c.Vec2.create(.8,.05),c.Vec2.create(.85,.05),c.Vec2.create(.86,0)],{isEssential:!0,yAxis:{scale:"log"}}),stepsPerCell:s.ParamDefinition.Numeric(3,{min:1,max:10,step:1}),jumpLength:s.ParamDefinition.Numeric(0,{min:0,max:20,step:.1})},S.Utils={Params:S.Params,createEmpty:D,createValues:B,createValuesSimple:w,updateValues:O,updateBoundingSphere:F,createRenderableState:L,updateRenderableState:U,createPositionIterator:V};function V(q,N){const k=q.transform.ref.value,[j,H,G]=q.gridDimension.ref.value,z=j*H*G,W=N.instanceCount.ref.value,X=(0,t.PositionLocation)(),Y=X.position,K=N.aTransform.ref.value,Q=(J,ae)=>{const te=Math.floor(J/G);return Y[0]=Math.floor(te/H),Y[1]=te%H,Y[2]=J%G,c.Vec3.transformMat4(Y,Y,k),ae>=0&&c.Vec3.transformMat4Offset(Y,Y,K,0,0,ae*16),X};return(0,t.LocationIterator)(z,W,1,Q)}function R(q,N){return Math.ceil(c.Vec3.magnitude(q)*N)}function E(q,N){return Math.min(...q)*(1/N)}function I(q){return 1/q}function B(q,N,k,j,H){const{gridTexture:G,gridTextureDim:z,gridStats:W}=q,{bboxSize:X,bboxMin:Y,bboxMax:K,gridDimension:Q,transform:J}=q,{instanceCount:ae,groupCount:te}=k,ne=V(q,N),$=(0,y.createColors)(k,ne,j.color),ie=(0,f.resolveInstanceGranularity)(H.instanceGranularity,te,ae)?(0,_.createMarkers)(ae,"instance"):(0,_.createMarkers)(ae*te,"groupInstance"),Z=(0,g.createEmptyOverpaint)(),re=(0,a.createEmptyTransparency)(),oe=(0,v.createEmptyEmissive)(),ce=(0,m.createEmptySubstance)(),ue=(0,p.createEmptyClipping)(),pe=(0,b.createEmptyWiggle)(),[he,fe,de]=Q.ref.value,ge={drawCount:P.indices.length,vertexCount:he*fe*de,groupCount:te,instanceCount:ae},Ce=i.Sphere3D.clone(q.boundingSphere),ve=(0,r.calculateTransformBoundingSphere)(Ce,N.aTransform.ref.value,ae,0),le=(0,d.getControlPointsFromVec2Array)(H.controlPoints),me=(0,d.createTransferFunctionTexture)(le);return{dGeometryType:o.ValueCell.create("directVolume"),...$,...ie,...Z,...re,...oe,...ce,...ue,...pe,...N,...f.BaseGeometry.createValues(H,ge),aPosition:o.ValueCell.create(P.vertices),elements:o.ValueCell.create(P.indices),boundingSphere:o.ValueCell.create(ve),invariantBoundingSphere:o.ValueCell.create(Ce),uInvariantBoundingSphere:o.ValueCell.create(c.Vec4.ofSphere(Ce)),uBboxMin:Y,uBboxMax:K,uBboxSize:X,uMaxSteps:o.V
4100alueCell.create(R(Q.ref.value,H.stepsPerCell)),uStepScale:o.ValueCell.create(E(q.cellDim.ref.value,H.stepsPerCell)),uJumpLength:o.ValueCell.create(H.jumpLength),uTransform:J,uGridDim:Q,tTransferTex:me,uTransferScale:o.ValueCell.create(I(H.stepsPerCell)),dGridTexType:o.ValueCell.create(G.ref.value.getDepth()>0?"3d":"2d"),uGridTexDim:z,tGridTex:G,uGridStats:W,uCellDim:q.cellDim,uCartnToUnit:q.cartnToUnit,uUnitToCartn:q.unitToCartn,dPackedGroup:q.packedGroup,dAxisOrder:o.ValueCell.create(q.axisOrder.ref.value.join("")),dIgnoreLight:o.ValueCell.create(H.ignoreLight),dCelShaded:o.ValueCell.create(H.celShaded),dXrayShaded:o.ValueCell.create(H.xrayShaded==="inverted"?"inverted":H.xrayShaded===!0?"on":"off"),meta:o.ValueCell.create(q.meta)}}function w(q,N,k,j,H){const G=f.BaseGeometry.createSimple(k,j,H),z={...s.ParamDefinition.getDefaultValues(S.Params),...N};return B(q,G.transform,G.locationIterator,G.theme,z)}function O(q,N){f.BaseGeometry.updateValues(q,N),o.ValueCell.updateIfChanged(q.dIgnoreLight,N.ignoreLight),o.ValueCell.updateIfChanged(q.dCelShaded,N.celShaded),o.ValueCell.updateIfChanged(q.dXrayShaded,N.xrayShaded==="inverted"?"inverted":N.xrayShaded===!0?"on":"off");const k=(0,d.getControlPointsFromVec2Array)(N.controlPoints);(0,d.createTransferFunctionTexture)(k,q.tTransferTex),o.ValueCell.updateIfChanged(q.uMaxSteps,R(q.uGridDim.ref.value,N.stepsPerCell)),o.ValueCell.updateIfChanged(q.uStepScale,E(q.uCellDim.ref.value,N.stepsPerCell)),o.ValueCell.updateIfChanged(q.uTransferScale,I(N.stepsPerCell)),o.ValueCell.updateIfChanged(q.uJumpLength,N.jumpLength)}function F(q,N){const k=i.Sphere3D.clone(N.boundingSphere),j=(0,r.calculateTransformBoundingSphere)(k,q.aTransform.ref.value,q.instanceCount.ref.value,0);i.Sphere3D.equals(j,q.boundingSphere.ref.value)||o.ValueCell.update(q.boundingSphere,j),i.Sphere3D.equals(k,q.invariantBoundingSphere.ref.value)||(o.ValueCell.update(q.invariantBoundingSphere,k),o.ValueCell.update(q.uInvariantBoundingSphere,c.Vec4.fromSphere(q.uInvariantBoundingSphere.ref.value,k)))}function L(q){const N=f.BaseGeometry.createRenderableState(q);return N.opaque=!1,N.writeDepth=!1,N}function U(q,N){f.BaseGeometry.updateRenderableState(q,N),q.opaque=!1,q.writeDepth=!1}})(C||(h1.DirectVolume=C={}));function l(S,T){return i.Sphere3D.fromDimensionsAndTransform((0,i.Sphere3D)(),S,T)}return h1}var v1={},Rj;function ro(){if(Rj)return v1;Rj=1,Object.defineProperty(v1,"__esModule",{value:!0}),v1.Spheres=void 0;const e=et(),t=Ne(),r=zt(),n=wi(),i=li(),c=kr(),o=rt(),s=ls(),h=Tt(),f=Ka(),y=Ya(),_=_t(),g=us(),a=Qa(),d=Ge(),p=Za(),u=Ja(),m=eo(),v=jf(),b=rc();var P;return(function(C){function l(N,k,j,H){return H?x(N,k,j,H):A(N,k,j)}C.create=l;function S(N){const k=N?N.centerBuffer.ref.value:new Float32Array(0),j=N?N.groupBuffer.ref.value:new Float32Array(0);return l(k,j,0,N)}C.createEmpty=S;function T(N){return(0,_.hashFnv32a)([N.sphereCount,N.centerBuffer.ref.version,N.groupBuffer.ref.version])}function A(N,k,j){const H=(0,o.Sphere3D)();let G,z=-1,W=-1;const X=e.ValueCell.create((0,c.createTextureImage)(1,4,Float32Array)),Y=e.ValueCell.create(d.Vec2.create(0,0)),K=e.ValueCell.create([]),Q=e.ValueCell.create(0),J={kind:"spheres",sphereCount:j,centerBuffer:e.ValueCell.create(N),groupBuffer:e.ValueCell.create(k),get boundingSphere(){const ae=T(J);if(ae!==z){const te=(0,c.calculateInvariantBoundingSphere)(J.centerBuffer.ref.value,J.sphereCount,1);o.Sphere3D.copy(H,te),z=ae}return H},get groupMapping(){return J.groupBuffer.ref.version!==W&&(G=(0,g.createGroupMapping)(J.groupBuffer.ref.value,J.sphereCount),W=J.groupBuffer.ref.version),G},setBoundingSphere(ae){o.Sphere3D.copy(H,ae),z=T(J)},hasBoundingSphere(){return z===T(J)},shaderData:{positionGroup:X,texDim:Y,lodLevels:K,sizeFactor:Q,update(ae){var te,ne;const $=(te=ae?.lodLevels)!==null&&te!==void 0?te:R(K.ref.value),ie=(ne=ae?.sizeFactor)!==null&&ne!==void 0?ne:Q.ref.value,Z=I($,ie),re=(0,c.createTextureImage)(J.sphereCount,4,Float32Array,X.ref.value.array),oe=M(re,J.centerBuffer.ref.value,J.groupBuffer.ref.value,J.sphereCount,Z),ce=oe?V($,ie,oe,J.sphereCount):[];e.ValueCell.update(X,re),e.ValueCell.update(Y,d.Vec2.set(Y.ref.value,re.width,re.height)),e.ValueCell.update(K,ce),e.ValueCell.update(Q,ie)}}};return J.shaderData.update(),J}function x(N,k,j,H){return H.sphereCount=j,e.ValueCell.update(H.centerBuffer,N),e.ValueCell.update(H.groupBuffer,k),H.shaderData.update(),H}function M(N,k,j,H,G){const{array:z}=N;
4100if(G.length===0){for(let Y=0;Y<H;++Y)z[Y*4+0]=k[Y*3+0],z[Y*4+1]=k[Y*3+1],z[Y*4+2]=k[Y*3+2],z[Y*4+3]=j[Y];return}const W=[0];let X=0;for(let Y=0,K=G.length;Y<K;++Y){const Q=G[Y];for(let J=0;J<H;++J){let ae=!1;for(let te=0;te<Y;++te)if(J%G[te]===0){ae=!0;break}!ae&&J%Q===0&&(z[X*4+0]=k[J*3+0],z[X*4+1]=k[J*3+1],z[X*4+2]=k[J*3+2],z[X*4+3]=j[J],X+=1)}W.push(X*6)}return W}function D(N,k){if(N.length!==k.length)return!1;for(let j=0,H=N.length;j<H;++j)if(N[j].maxDistance!==k[j].maxDistance||N[j].minDistance!==k[j].minDistance||N[j].overlap!==k[j].overlap||N[j].stride!==k[j].stride||N[j].scaleBias!==k[j].scaleBias)return!1;return!0}function V(N,k,j,H){return N.map((G,z)=>{const W=E(G,k);return[G.minDistance,G.maxDistance,G.overlap,j[j.length-1-z],Math.pow(Math.min(H,W),1/G.scaleBias),G.stride,G.scaleBias]})}function R(N){return N.map(k=>({minDistance:k[0],maxDistance:k[1],overlap:k[2],stride:k[5],scaleBias:k[6]}))}function E(N,k){return Math.max(1,Math.round(N.stride/Math.pow(k,N.scaleBias)))}function I(N,k){return N.map(j=>E(j,k)).reverse()}C.LodLevelsPresets={performance:[{minDistance:1,maxDistance:300,overlap:0,stride:1,scaleBias:1},{minDistance:300,maxDistance:2e3,overlap:0,stride:40,scaleBias:3},{minDistance:2e3,maxDistance:6e3,overlap:0,stride:150,scaleBias:3},{minDistance:6e3,maxDistance:1e7,overlap:0,stride:300,scaleBias:2.5}],balanced:[{minDistance:1,maxDistance:500,overlap:0,stride:1,scaleBias:1},{minDistance:500,maxDistance:2e3,overlap:0,stride:15,scaleBias:3},{minDistance:2e3,maxDistance:6e3,overlap:0,stride:70,scaleBias:2.7},{minDistance:6e3,maxDistance:1e7,overlap:0,stride:200,scaleBias:2.5}],quality:[{minDistance:1,maxDistance:1e3,overlap:0,stride:1,scaleBias:1},{minDistance:1e3,maxDistance:4e3,overlap:0,stride:10,scaleBias:3},{minDistance:4e3,maxDistance:1e4,overlap:0,stride:50,scaleBias:2.7},{minDistance:1e4,maxDistance:1e7,overlap:0,stride:200,scaleBias:2.3}],ultra:[{minDistance:1,maxDistance:5e3,overlap:0,stride:1,scaleBias:1},{minDistance:5e3,maxDistance:1e4,overlap:0,stride:10,scaleBias:3},{minDistance:1e4,maxDistance:3e4,overlap:0,stride:50,scaleBias:2.5},{minDistance:3e4,maxDistance:1e7,overlap:0,stride:200,scaleBias:2}]},C.Params={...h.BaseGeometry.Params,sizeFactor:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),doubleSided:t.ParamDefinition.Boolean(!1,h.BaseGeometry.CustomQualityParamInfo),ignoreLight:t.ParamDefinition.Boolean(!1,h.BaseGeometry.ShadingCategory),celShaded:t.ParamDefinition.Boolean(!1,h.BaseGeometry.ShadingCategory),xrayShaded:t.ParamDefinition.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],h.BaseGeometry.ShadingCategory),transparentBackfaces:t.ParamDefinition.Select("off",t.ParamDefinition.arrayToOptions(["off","on","opaque"]),h.BaseGeometry.ShadingCategory),solidInterior:t.ParamDefinition.Boolean(!0,h.BaseGeometry.ShadingCategory),clipPrimitive:t.ParamDefinition.Boolean(!1,{...h.BaseGeometry.ShadingCategory,description:"Clip whole sphere instead of cutting it."}),approximate:t.ParamDefinition.Boolean(!1,{...h.BaseGeometry.ShadingCategory,description:"Faster rendering, but has artifacts."}),alphaThickness:t.ParamDefinition.Numeric(0,{min:0,max:20,step:1},{...h.BaseGeometry.ShadingCategory,description:"If not zero, adju
4100sts alpha for radius."}),bumpFrequency:t.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},h.BaseGeometry.ShadingCategory),bumpAmplitude:t.ParamDefinition.Numeric(1,{min:0,max:5,step:.1},h.BaseGeometry.ShadingCategory),interior:(0,v.getInteriorParam)(),animation:(0,b.getAnimationParam)(),lodLevels:t.ParamDefinition.ObjectList({minDistance:t.ParamDefinition.Numeric(0),maxDistance:t.ParamDefinition.Numeric(0),overlap:t.ParamDefinition.Numeric(0),stride:t.ParamDefinition.Numeric(0),scaleBias:t.ParamDefinition.Numeric(3,{min:.1,max:10,step:.1})},N=>`${N.stride}`,{...h.BaseGeometry.CullingLodCategory,defaultValue:[],presets:Object.entries(C.LodLevelsPresets).map(([N,k])=>[k,N])})},C.Utils={Params:C.Params,createEmpty:S,createValues:w,createValuesSimple:O,updateValues:F,updateBoundingSphere:L,createRenderableState:U,updateRenderableState:q,createPositionIterator:B};function B(N,k){const j=N.sphereCount,H=k.instanceCount.ref.value,G=(0,r.PositionLocation)(),z=G.position,W=N.centerBuffer.ref.value,X=k.aTransform.ref.value,Y=(K,Q)=>(Q<0?d.Vec3.fromArray(z,W,K*3):d.Vec3.transformMat4Offset(z,W,X,0,K*3,Q*16),G);return(0,r.LocationIterator)(j,H,1,Y)}function w(N,k,j,H,G){const{instanceCount:z,groupCount:W}=j,X=B(N,k),Y=(0,n.createColors)(j,X,H.color),K=(0,s.createSizes)(j,X,H.size),Q=(0,h.resolveInstanceGranularity)(G.instanceGranularity,W,z)?(0,i.createMarkers)(z,"instance"):(0,i.createMarkers)(z*W,"groupInstance"),J=(0,f.createEmptyOverpaint)(),ae=(0,y.createEmptyTransparency)(),te=(0,u.createEmptyEmissive)(),ne=(0,p.createEmptySubstance)(),$=(0,a.createEmptyClipping)(),ie=(0,m.createEmptyWiggle)(),Z={drawCount:N.sphereCount*2*3,vertexCount:N.sphereCount*6,groupCount:W,instanceCount:z},re=N.boundingSphere.radius?(0,s.getMaxSize)(K)*G.sizeFactor:0,oe=o.Sphere3D.expand((0,o.Sphere3D)(),N.boundingSphere,re),ce=(0,c.calculateTransformBoundingSphere)(oe,k.aTransform.ref.value,z,0);return N.shaderData.update({lodLevels:G.lodLevels,sizeFactor:G.sizeFactor}),{dGeometryType:e.ValueCell.create("spheres"),uTexDim:N.shaderData.texDim,tPositionGroup:N.shaderData.positionGroup,boundingSphere:e.ValueCell.create(ce),invariantBoundingSphere:e.ValueCell.create(oe),uInvariantBoundingSphere:e.ValueCell.create(d.Vec4.ofSphere(oe)),...Y,...K,...Q,...J,...ae,...te,...ne,...$,...ie,...k,padding:e.ValueCell.create(re),...h.BaseGeometry.createValues(G,Z),uSizeFactor:N.shaderData.sizeFactor,uDoubleSided:e.ValueCell.create(G.doubleSided),dIgnoreLight:e.ValueCell.create(G.ignoreLight),dCelShaded:e.ValueCell.create(G.celShaded),dXrayShaded:e.ValueCell.create(G.xrayShaded==="inverted"?"inverted":G.xrayShaded===!0?"on":"off"),dTransparentBackfaces:e.ValueCell.create(G.transparentBackfaces),dSolidInterior:e.ValueCell.create(G.solidInterior),dClipPrimitive:e.ValueCell.create(G.clipPrimitive),dApproximate:e.ValueCell.create(G.approximate),uAlphaThickness:e.ValueCell.create(G.alphaThickness),uBumpFrequency:e.ValueCell.create(G.bumpFrequency),uBumpAmplitude:e.ValueCell.create(G.bumpAmplitude),lodLevels:N.shaderData.lodLevels,centerBuffer:N.centerBuffer,groupBuffer:N.groupBuffer,...(0,v.createInteriorValues)(G.interior),...(0,b.createAnimationValues)(G.animation)}}function O(N,k,j,H,G){const z=h.BaseGeometry.createSimple(j,H,G),W={...t.ParamDefinition.getDefaultValues(C.Params),...k};return w(N,z.transform,z.locationIterator,z.theme,W)}function F(N,k){const j=N.uSizeFactor.ref.value;h.BaseGeometry.updateValues(N,k),e.ValueCell.updateIfChanged(N.uSizeFactor,k.sizeFactor),e.ValueCell.updateIfChanged(N.uDoubleSided,k.doubleSided),e.ValueCell.updateIfChanged(N.dIgnoreLight,k.ignoreLight),e.ValueCell.updateIfChanged(N.dCelShaded,k.celShaded),e.ValueCell.updateIfChanged(N.dXrayShaded,k.xrayShaded==="inverted"?"inverted":k.xrayShaded===!0?"on":"off"),e.ValueCell.updateIfChanged(N.dTransparentBackfaces,k.transparentBackfaces),e.ValueCell.updateIfChanged(N.dSolidInterior,k.solidInterior),e.ValueCell.updateIfChanged(N.dClipPrimitive,k.clipPrimitive),e.ValueCell.updateIfChanged(N.dApproximate,k.approximate),e.ValueCell.updateIfChanged(N.uAlphaThickness,k.alphaThickness),e.ValueCell.updateIfChanged(N.uBumpFrequency,k.bumpFrequency),e.ValueCell.updateIfChanged(N.uBumpAmplitude,k.bumpAmplitude),(0,v.updateInteriorValues)(N,k.interior),(0,b.updateAnimationValues)(N,k.animation);const H=R(N.lodLevels.ref.value);if(!D(k.lodLevels,H)||k.sizeFactor!==j){const G=N.uVertexCount.ref.value/6,z=I(k.lodLevels,k.sizeFactor),W=M(N.tPositionGroup.ref.value,N.centerBuffer.ref.value,N.groupBuffer.ref.value,G,z),X=W?V(k.lodLevels,k.sizeFactor,W,G):[];e.ValueCell.update(N.tPositionGroup,N.tPositionGroup.ref.value),e.ValueCell.update(N.lodLevels,X)}}function L(N,k){const j=k.boundingSphere.radius?(0,s.getMaxSize)(N)*N.uSizeFactor.ref.value:0,H=o.Sphere3D.expand((0,o.Sphere3D)(),k.boundingSphere,j),G=(0,c.calculateTransformBoundingSphere)(H,N.aTransform.ref.value,N.instanceCount.ref.value,0);o.Sphere3D.equals(G,N.boundingSphere.ref.value)||e.ValueCell.update(N.boundingSphere,G),o.Sphere3D.equals(H,N.invariantBoundingSphere.ref.value)||(e.ValueCell.update(N.invariantBoundingSphere,H),e.ValueCell.update(N.uInvariantBoundingSphere,d.Vec4.fromSphere(N.uInvariantBoundingSphere.ref.value,H))),e.ValueCell.update(N.padding,j)}function U(N){const k=h.BaseGeometry.createRenderableState(N);return q(k,N),k}function q(N,k){h.BaseGeometry.updateRenderableState(N,k),N.opaque=N.opaque&&!k.xrayShaded,N.writeDepth=N.opaque}})(P||(v1.Spheres=P={})),v1}var b1={},Oj;function Fl(){if(Oj)return b1;Oj=1,Object.defineProperty(b1,"__esModule",{value:!0}),b1.TextureMesh=void 0;const e=et(),t=rt(),r=Ne(),n=zt(),i=wi(),c=li(),o=Tt(),s=Ka(),h=Ya(),f=kr(),y=bn(),_=Ge(),g=Qa(),a=Xa(),d=Za(),p=Ja(),u=eo(),m=jf(),v=rc();var b;return(function(P){class C{constructor(){this.index=0,this.textures=[]}get(){return this.textures[this.index]}set(B,w,O){this.textures[this.index]=Object.assign(this.textures[this.index]||{},{vertex:B,group:w,normal:O}),this.index=(this.index+1)%2}destroy(){for(const B of this.textures)B.vertex.destroy(),B.group.destroy(),B.normal.destroy()}}P.DoubleBuffer=C;function l(I,B,w,O,F,L,U){const q=w.getWidth(),N=w.getHeight();return U?(U.vertexCount=I,U.groupCount=B,e.ValueCell.update(U.geoTextureDim,_.Vec2.set(U.geoTextureDim.ref.value,q,N)),e.ValueCell.update(U.vertexTexture,w),e.ValueCell.update(U.groupTexture,O),e.ValueCell.update(U.normalTexture,F),U.doubleBuffer.set(w,O,F),t.Sphere3D.copy(U.boundingSphere,L),U):{kind:"texture-mesh",vertexCount:I,groupCount:B,geoTextureDim:e.ValueCell.create(_.Vec2.create(q,N)),vertexTexture:e.ValueCell.create(w),groupTexture:e.ValueCell.create(O),normalTexture:e.ValueCell.create(F),varyingGroup:e.ValueCell.create(!1),doubleBuffer:new C,boundingSphere:t.Sphere3D.clone(L),meta:{}}}P.create=l;function S(I){const B=I?I.vertexTexture.ref.value:(0,y.createNullTexture)(),w=I?I.groupTexture.ref.value:(0,y.createNullTexture)(),O=I?I.normalTexture.ref.value:(0,y.createNullTexture)(),F=I?I.boundingSphere:(0,t.Sphere3D)();return l(0,0,B,w,O,F,I)}P.createEmpty=S,P.Params={...o.BaseGeometry.Params,doubleSided:r.ParamDefinition.Boolean(!1,o.BaseGeometry.CustomQualityParamInfo),flipSided:r.ParamDefinition.Boolean(!1,o.BaseGeometry.ShadingCategory),flatShaded:r.ParamDefinition.Boolean(!1,o.BaseGeometry.ShadingCategory),ignoreLight:r.ParamDefinition.Boolean(!1,o.BaseGeometry.ShadingCategory),celShaded:r.ParamDefinition.Boolean(!1,o.BaseGeometry.ShadingCategory),xrayShaded:r.ParamDefinition.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],o.BaseGeometry.ShadingCategory),transparentBackfaces:r.ParamDefinition.Select("off",r.ParamDefinition.arrayToOptions(["off","on","opaque"]),o.BaseGeometry.ShadingCategory),bumpFrequency:r.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},o.BaseGeometry.ShadingCategory),bumpAmplitude:r.ParamDefinition.Numeric(1,{min:0,max:5,step:.1},o.BaseGeometry.ShadingCategory),interior:(0,m.getInteriorParam)(),animation:(0,v.getAnimationParam)()},P.Utils={Params:P.Params,createEmpty:S,createValues:x,createValuesSimple:M,updateV
4100alues:D,updateBoundingSphere:V,createRenderableState:R,updateRenderableState:E,createPositionIterator:A};const T="texture-mesh";function A(I,B){const w=I.meta.webgl;if(!w)return(0,n.LocationIterator)(1,1,1,()=>a.NullLocation);w.namedFramebuffers[T]||(w.namedFramebuffers[T]=w.resources.framebuffer());const O=w.namedFramebuffers[T],[F,L]=I.geoTextureDim.ref.value;let U;const q=()=>{if(!U){const X=new Float32Array(F*L*4);O.bind(),I.vertexTexture.ref.value.attachFramebuffer(O,0),w.readPixels(0,0,F,L,X);const Y=new Float32Array(F*L*4);O.bind(),I.normalTexture.ref.value.attachFramebuffer(O,0),w.readPixels(0,0,F,L,Y),U={vertices:X,normals:Y}}return U},N=I.vertexCount,k=B.instanceCount.ref.value,j=(0,n.PositionLocation)(),H=j.position,G=j.normal,z=B.aTransform.ref.value,W=(X,Y)=>{const{vertices:K,normals:Q}=q();return Y<0?(_.Vec3.fromArray(H,K,X*4),_.Vec3.fromArray(G,Q,X*4)):(_.Vec3.transformMat4Offset(H,K,z,0,X*4,Y*16),_.Vec3.transformDirectionOffset(G,Q,z,0,X*4,Y*16)),j};return(0,n.LocationIterator)(N,k,1,W)}function x(I,B,w,O,F){const{instanceCount:L,groupCount:U}=w,q=P.Utils.createPositionIterator(I,B),N=(0,i.createColors)(w,q,O.color),k=(0,o.resolveInstanceGranularity)(F.instanceGranularity,U,L)?(0,c.createMarkers)(L,"instance"):(0,c.createMarkers)(L*U,"groupInstance"),j=(0,s.createEmptyOverpaint)(),H=(0,h.createEmptyTransparency)(),G=(0,p.createEmptyEmissive)(),z=(0,d.createEmptySubstance)(),W=(0,g.createEmptyClipping)(),X=(0,u.createEmptyWiggle)(),Y={drawCount:I.vertexCount,vertexCount:I.vertexCount,groupCount:U,instanceCount:L},K=t.Sphere3D.clone(I.boundingSphere),Q=(0,f.calculateTransformBoundingSphere)(K,B.aTransform.ref.value,L,0);return{dGeometryType:e.ValueCell.create("textureMesh"),uGeoTexDim:I.geoTextureDim,tPosition:I.vertexTexture,tGroup:I.groupTexture,tNormal:I.normalTexture,dVaryingGroup:I.varyingGroup,boundingSphere:e.ValueCell.create(Q),invariantBoundingSphere:e.ValueCell.create(K),uInvariantBoundingSphere:e.ValueCell.create(_.Vec4.ofSphere(K)),...N,...k,...j,...H,...G,...z,...W,...X,...B,...o.BaseGeometry.createValues(F,Y),uDoubleSided:e.ValueCell.create(F.doubleSided),dFlatShaded:e.ValueCell.create(F.flatShaded),dFlipSided:e.ValueCell.create(F.flipSided),dIgnoreLight:e.ValueCell.create(F.ignoreLight),dCelShaded:e.ValueCell.create(F.celShaded),dXrayShaded:e.ValueCell.create(F.xrayShaded==="inverted"?"inverted":F.xrayShaded===!0?"on":"off"),dTransparentBackfaces:e.ValueCell.create(F.transparentBackfaces),uBumpFrequency:e.ValueCell.create(F.bumpFrequency),uBumpAmplitude:e.ValueCell.create(F.bumpAmplitude),meta:e.ValueCell.create(I.meta),...(0,m.createInteriorValues)(F.interior),...(0,v.createAnimationValues)(F.animation)}}function M(I,B,w,O,F){const L=o.BaseGeometry.createSimple(w,O,F),U={...r.ParamDefinition.getDefaultValues(P.Params),...B};return x(I,L.transform,L.locationIterator,L.theme,U)}function D(I,B){o.BaseGeometry.updateValues(I,B),e.ValueCell.updateIfChanged(I.uDoubleSided,B.doubleSided),e.ValueCell.updateIfChanged(I.dFlatShaded,B.flatShaded),e.ValueCell.updateIfChanged(I.dFlipSided,B.flipSided),e.ValueCell.updateIfChanged(I.dIgnoreLight,B.ignoreLight),e.ValueCell.updateIfChanged(I.dCelShaded,B.celShaded),e.ValueCell.updateIfChanged(I.dXrayShaded,B.xrayShaded==="inverted"?"inverted":B.xrayShaded===!0?"on":"off"),e.ValueCell.updateIfChanged(I.dTransparentBackfaces,B.transparentBackfaces),e.ValueCell.updateIfChanged(I.uBumpFrequency,B.bumpFrequency),e.ValueCell.updateIfChanged(I.uBumpAmplitude,B.bumpAmplitude),(0,m.updateInteriorValues)(I,B.interior),(0,v.updateAnimationValues)(I,B.animation)}function V(I,B){const w=t.Sphere3D.clone(B.boundingSphere),O=(0,f.calculateTransformBoundingSphere)(w,I.aTransform.ref.value,I.instanceCount.ref.value,0);t.Sphere3D.equals(O,I.boundingSphere.ref.value)||e.ValueCell.update(I.boundingSphere,O),t.Sphere3D.equals(w,I.invariantBoundingSphere.ref.value)||(e.ValueCell.update(I.invariantBoundingSphere,w),e.ValueCell.update(I.uInvariantBoundingSphere,_.Vec4.fromSphere(I.uInvariantBoundingSphere.ref.value,w)))}function R(I){const B=o.BaseGeometry.createRenderableState(I);return E(B,I),B}function E(I,B){o.BaseGeometry.updateRenderableState(I,B),I.opaque=I.opaque&&!B.xrayShaded,I.writeDepth=I.opaque}})(b||(b1.TextureMesh=b={})),b1}var S3={},C3={},P3={},kj;function Yt(){return kj||(kj=1,(function(e){Object.defineProperty(e,"__esMo
4100dule",{value:!0}),e.AnimationSchema=e.InteriorSchema=e.BaseSchema=e.WiggleSchema=e.ClippingSchema=e.SubstanceSchema=e.EmissiveSchema=e.TransparencySchema=e.OverpaintSchema=e.MarkerSchema=e.SizeSchema=e.ColorSchema=e.InternalSchema=e.GlobalDefineSchema=e.GlobalTextureSchema=e.GlobalUniformSchema=void 0,e.splitValues=t,e.getValueVersions=r,e.AttributeSpec=n,e.UniformSpec=i,e.TextureSpec=c,e.ElementsSpec=o,e.DefineSpec=s,e.ValueSpec=h;function t(f,y){const _={},g={},a={},d={},p={},u={},m={};return Object.keys(f).forEach(v=>{const b=f[v];b.type==="attribute"&&(_[v]=y[v]),b.type==="define"&&(g[v]=y[v]),b.type==="texture"&&y[v]!==void 0&&(b.variant==="material"?d[v]=y[v]:a[v]=y[v]),b.type==="uniform"&&y[v]!==void 0&&(b.variant==="material"?u[v]=y[v]:b.variant==="buffered"?m[v]=y[v]:p[v]=y[v])}),{attributeValues:_,defineValues:g,textureValues:a,materialTextureValues:d,uniformValues:p,materialUniformValues:u,bufferedUniformValues:m}}function r(f){const y={};return Object.keys(f).forEach(_=>{y[_]=f[_].ref.version}),y}function n(f,y,_){return{type:"attribute",kind:f,itemSize:y,divisor:_}}function i(f,y){return{type:"uniform",kind:f,variant:y}}function c(f,y,_,g,a){return{type:"texture",kind:f,format:y,dataType:_,filter:g,variant:a}}function o(f){return{type:"elements",kind:f}}function s(f,y){return{type:"define",kind:f,options:y}}function h(f){return{type:"value",kind:f}}e.GlobalUniformSchema={uDrawId:i("i"),uModel:i("m4"),uView:i("m4"),uInvView:i("m4"),uModelView:i("m4"),uInvModelView:i("m4"),uProjection:i("m4"),uInvProjection:i("m4"),uModelViewProjection:i("m4"),uInvModelViewProjection:i("m4"),uHasHeadRotation:i("b"),uInvHeadRotation:i("m4"),uIsAsymmetricProjection:i("b"),uHasEyeCamera:i("b"),uModelViewEye:i("m4"),uInvModelViewEye:i("m4"),uIsOrtho:i("f"),uPixelRatio:i("f"),uViewport:i("v4"),uViewOffset:i("v2"),uModelScale:i("f"),uDrawingBufferSize:i("v2"),uCameraPosition:i("v3"),uCameraDir:i("v3"),uCameraPlane:i("v4"),uNear:i("f"),uFar:i("f"),uFog:i("b"),uFogNear:i("f"),uFogFar:i("f"),uFogColor:i("v3"),uTransparentBackground:i("b"),uLightDirection:i("v3[]"),uLightColor:i("v3[]"),uAmbientColor:i("v3"),uPickingAlphaThreshold:i("f"),uHighlightColor:i("v3"),uSelectColor:i("v3"),uDimColor:i("v3"),uHighlightStrength:i("f"),uSelectStrength:i("f"),uDimStrength:i("f"),uMarkerPriority:i("i"),uMarkerAverage:i("f"),uXrayEdgeFalloff:i("f"),uCelSteps:i("f"),uExposure:i("f"),uRenderMask:i("i"),uMarkingDepthTest:i("b"),uMarkingType:i("i"),uPickType:i("i"),uTime:i("f"),uEnableAnimation:i("b")},e.GlobalTextureSchema={tDepth:c("texture","depth","ushort","nearest"),tDpoitDepth:c("texture","rg","float","nearest"),tDpoitFrontColor:c("texture","rgba","float","nearest"),tDpoitBackColor:c("texture","rgba","float","nearest")},e.GlobalDefineSchema={dLightCount:s("number"),dColorMarker:s("boolean")},e.InternalSchema={uObjectId:i("i")},e.ColorSchema={uColor:i("v3","material"),uColorTexDim:i("v2"),uColorGridDim:i("v3"),uColorGridTransform:i("v4"),uPaletteDomain:i("v2"),uPaletteDefault:i("v3"),tColor:c("image-uint8","rgb","ubyte","nearest"),tPalette:c("image-uint8","rgb","ubyte","nearest"),tColorGrid:c("texture","rgb","ubyte","linear"),dColorType:s("string",["uniform","attribute","instance","group","groupInstance","vertex","vertexInstance","volume","volumeInstance","direct"]),dUsePalette:s("boolean")},e.SizeSchema={uSize:i("f","material"),uSizeTexDim:i("v2"),tSize:c("image-uint8","rgb","ubyte","nearest"),dSizeType:s("string",["uniform","attribute","instance","group","groupInstance"]),uSizeFactor:i("f","material")},e.MarkerSchema={uMarker:i("f"),uMarkerTexDim:i("v2"),tMarker:c("image-uint8","alpha","ubyte","nearest"),markerAverage:h("number"),markerStatus:h("number"),dMarkerType:s("string",["instance","groupInstance"])},e.OverpaintSchema={uOverpaintTexDim:i("v2"),tOverpaint:c("image-uint8","rgba","ubyte","nearest"),dOverpaint:s("boolean"),uOverpaintGridDim:i("v3"),uOverpaintGridTransform:i("v4"),tOverpaintGrid:c("texture","rgba","ubyte","linear"),dOverpaintType:s("string",["instance","groupInstance","volumeInstance"]),uOverpaintStrength:i("f","material")},e.TransparencySchema={uTransparencyTexDim:i("v2"),tTransparency:c("image-uint8","alpha","ubyte","nearest"),dTransparency:s("boolean"),transparencyAverage:h("number"),transparencyMin:h("number"),uTransparencyGri
4100dDim:i("v3"),uTransparencyGridTransform:i("v4"),tTransparencyGrid:c("texture","alpha","ubyte","linear"),dTransparencyType:s("string",["instance","groupInstance","volumeInstance"]),uTransparencyStrength:i("f","material")},e.EmissiveSchema={uEmissiveTexDim:i("v2"),tEmissive:c("image-uint8","alpha","ubyte","nearest"),dEmissive:s("boolean"),emissiveAverage:h("number"),uEmissiveGridDim:i("v3"),uEmissiveGridTransform:i("v4"),tEmissiveGrid:c("texture","alpha","ubyte","linear"),dEmissiveType:s("string",["instance","groupInstance","volumeInstance"]),uEmissiveStrength:i("f","material")},e.SubstanceSchema={uSubstanceTexDim:i("v2"),tSubstance:c("image-uint8","rgba","ubyte","nearest"),dSubstance:s("boolean"),uSubstanceGridDim:i("v3"),uSubstanceGridTransform:i("v4"),tSubstanceGrid:c("texture","rgba","ubyte","linear"),dSubstanceType:s("string",["instance","groupInstance","volumeInstance"]),uSubstanceStrength:i("f","material")},e.ClippingSchema={uClippingTexDim:i("v2"),tClipping:c("image-uint8","alpha","ubyte","nearest"),dClipping:s("boolean"),dClippingType:s("string",["instance","groupInstance"])},e.WiggleSchema={uWiggleTexDim:i("v2"),tWiggle:c("image-uint8","alpha","ubyte","nearest"),dWiggle:s("boolean"),wiggleAverage:h("number"),dWiggleType:s("string",["instance","groupInstance"]),uWiggleStrength:i("f","material")},e.BaseSchema={dGeometryType:s("string",["cylinders","directVolume","image","lines","mesh","points","spheres","text","textureMesh"]),...e.ColorSchema,...e.MarkerSchema,...e.OverpaintSchema,...e.TransparencySchema,...e.EmissiveSchema,...e.SubstanceSchema,...e.ClippingSchema,...e.WiggleSchema,dClipObjectCount:s("number"),dClipVariant:s("string",["instance","pixel"]),uClipObjectType:i("i[]","material"),uClipObjectInvert:i("b[]","material"),uClipObjectPosition:i("v3[]","material"),uClipObjectRotation:i("v4[]","material"),uClipObjectScale:i("v3[]","material"),uClipObjectTransform:i("m4[]","material"),aInstance:n("float32",1,1),aTransform:n("float32",16,1),uAlpha:i("f","material"),uMetalness:i("f","material"),uRoughness:i("f","material"),uBumpiness:i("f","material"),uEmissive:i("f","material"),uDensity:i("f","material"),uVertexCount:i("i"),uInstanceCount:i("i"),uGroupCount:i("i"),uInvariantBoundingSphere:i("v4"),uLod:i("v4"),drawCount:h("number"),instanceCount:h("number"),alpha:h("number"),matrix:h("m4"),transform:h("float32"),extraTransform:h("float32"),hasExtraTransform:h("boolean"),hasReflection:h("boolean"),instanceGranularity:h("boolean"),boundingSphere:h("sphere"),invariantBoundingSphere:h("sphere"),instanceGrid:h("instanceGrid")},e.InteriorSchema={uInteriorColor:i("v4"),uInteriorSubstance:i("v4")},e.AnimationSchema={uWiggleSpeed:i("f","material"),uWiggleAmplitude:i("f","material"),uWiggleFrequency:i("f","material"),uWiggleMode:i("i","material"),uTumbleSpeed:i("f","material"),uTumbleAmplitude:i("f","material"),uTumbleFrequency:i("f","material")}})(P3)),P3}var _1={},Fj;function $ne(){return Fj||(Fj=1,Object.defineProperty(_1,"__esModule",{value:!0}),_1.copy_frag=void 0,_1.copy_frag=`
4101precision highp float;
4102precision highp sampler2D;
4103
4104uniform sampler2D tColor;
4105uniform vec2 uTexSize;
4106
4107void main() {
4108    vec2 coords = gl_FragCoord.xy / uTexSize;
4109    gl_FragColor = texture2D(tColor, coords);
4110}
4111`),_1}var S1={},Lj;function Gr(){return Lj||(Lj=1,Object.defineProperty(S1,"__esModule",{value:!0}),S1.quad_vert=void 0,S1.quad_vert=`
4112precision highp float;
4113
4114attribute vec2 aPosition;
4115uniform vec2 uQuadScale;
4116
4117void main(void) {
4118    vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale;
4119    gl_Position = vec4(position, 0.0, 1.0);
4120}
4121`),S1}var T3={},Nj;function Zt(){return Nj||(Nj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ComputeRenderVariants=e.GraphicsRenderVariants=void 0,e.getDrawMode=g,e.createGraphicsRenderItem=b,e.createComputeRenderItem=P,e.createRenderItem=C;const t=_w(),r=bn(),n=Yt(),i=Yn(),c=et(),o=Ct(),s=Vt(),h=vr(),f=sQ(),y=3e7,_=(0,i.idFactory)();function g(l,S){const{gl:T}=l;switch(S){case"points":return T.POINTS;case"lines":return T.LINES;case"line-strip":return T.LINE_STRIP;case"line-loop":return T.LINE_LOOP;case"triangles":return T.TRIANGLES;case"triangle-strip":return T.TRIANGLE_STRIP;case"triangle-fan":return T.TRIANGLE_FAN}}const a={color:"",pick:"",depth:"",marking:"",emissive:"",tracing:""};e.GraphicsRenderVariants=Object.keys(a);const d={compute:""};e.ComputeRenderVariants=Object.keys(d);function p(l,S,T,A,x){return T={...T,dRenderVariant:c.ValueCell.create(S)},x.dRenderVariant===void 0&&Object.defineProperty(x,"dRenderVariant",{value:(0,n.DefineSpec)("str
4121ing")}),l.resources.program(T,A,x)}function u(){return{attributes:!1,defines:!1,elements:!1,textures:!1}}function m(l){l.attributes=!1,l.defines=!1,l.elements=!1,l.textures=!1}function v(l,S){if(l==="color")switch(S){case"blended":return"colorBlended";case"wboit":return"colorWboit";case"dpoit":return"colorDpoit"}return l}function b(l,S,T,A,x,M,D){return C(l,S,T,A,x,M,e.GraphicsRenderVariants,D)}function P(l,S,T,A,x,M=-1){return C(l,S,T,A,x,M,e.ComputeRenderVariants,void 0)}function C(l,S,T,A,x,M,D,V){const R=_(),{stats:E,state:I,resources:B}=l,{instancedArrays:w,vertexArrayObject:O,multiDrawInstancedBaseVertexBaseInstance:F,drawInstancedBaseVertexBaseInstance:L}=l.extensions;if(D=D.filter(de=>de==="tracing"?!!l.extensions.drawBuffers:!0),x.uVertexCount&&!l.extensions.noNonInstancedActiveAttribs){const de=x.uVertexCount.ref.value;x.aVertex=c.ValueCell.create((0,s.fillSerial)(new Float32Array(de))),A.aVertex=(0,n.AttributeSpec)("float32",1,0)}const{attributeValues:U,defineValues:q,textureValues:N,materialTextureValues:k,uniformValues:j,materialUniformValues:H,bufferedUniformValues:G}=(0,n.splitValues)(A,x),z=Object.entries(j),W=Object.entries(H),X=Object.entries(G),Y=Object.entries((0,f.cloneUniformValues)(G)),K=Object.entries(q),Q=(0,n.getValueVersions)(x),J=g(l,S),ae={};for(const de of D)ae[de]=p(l,v(de,V),q,T,A);const te=(0,r.createTextures)(l,A,N),ne=(0,r.createTextures)(l,A,k),$=(0,t.createAttributeBuffers)(l,A,U),ie=[];for(let de=0,ge=$.length;de<ge;++de){const Ce=$[de];Ce[1].divisor===1&&ie.push(Ce)}let Z;const re=x.elements;re&&re.ref.value&&(Z=B.elements(re.ref.value));const oe={};for(const de of D)oe[de]=O?B.vertexArray(ae[de],$,Z):null;let ce=x.drawCount.ref.value,ue=x.instanceCount.ref.value;E.drawCount+=ce,E.instanceCount+=ue,E.instancedDrawCount+=ue*ce;const pe=u();let he=!1,fe=-1;return{id:R,materialId:M,getByteCount(){let de=0;for(let ge=0,Ce=$.length;ge<Ce;++ge)de+=$[ge][1].getByteCount();
4121Z&&(de+=Z.getByteCount());for(let ge=0,Ce=te.length;ge<Ce;++ge)de+=te[ge][1].getByteCount();for(let ge=0,Ce=ne.length;ge<Ce;++ge)de+=ne[ge][1].getByteCount();return de},getProgram:de=>ae[de],setTransparency:de=>{if(de!==V){V=de;for(const ge of D)ae[ge].destroy(),ae[ge]=p(l,v(ge,V),q,T,A)}},render:(de,ge,Ce)=>{if(ce===0||ue===0)return;const ve=ae[de];if(ve.id===fe&&I.currentRenderItemId===R)ve.setUniforms(z),ve.bindTextures(te,ge);else{const le=oe[de];(ve.id!==I.currentProgramId||ve.id!==fe||M===-1||M!==I.currentMaterialId)&&(ve.id!==I.currentProgramId&&ve.use(),ve.setUniforms(W),ve.bindTextures(ne,ge+te.length),I.currentMaterialId=M,fe=ve.id),ve.setUniforms(z),ve.setUniforms(Y),ve.bindTextures(te,ge),le?(le.bind(),Z&&Z.bind()):(Z&&Z.bind(),ve.bindAttributes($)),I.currentRenderItemId=R}if(o.isDebugMode&&l.checkFramebufferStatus(`Framebuffer error rendering item id ${R}`),Ce){for(const le of Ce)if(le.count!==0){if(ve.setUniforms(le.uniforms),F)Z?F.multiDrawElementsInstancedBaseVertexBaseInstance(J,le.counts,0,Z._dataType,le.offsets,0,le.instanceCounts,0,le.baseVertices,0,le.baseInstances,0,le.count):F.multiDrawArraysInstancedBaseInstance(J,le.firsts,0,le.counts,0,le.instanceCounts,0,le.baseInstances,0,le.count);else if(L)if(Z)for(let me=0;me<le.count;++me)le.counts[me]>0&&(ve.uniform("uDrawId",me),L.drawElementsInstancedBaseVertexBaseInstance(J,le.counts[me],Z._dataType,le.offsets[me],le.instanceCounts[me],le.baseVertices[me],le.baseInstances[me]));else for(let me=0;me<le.count;++me)le.counts[me]>0&&(ve.uniform("uDrawId",me),L.drawArraysInstancedBaseInstance(J,le.firsts[me],le.counts[me],le.instanceCounts[me],le.baseInstances[me]));else if(Z)for(let me=0;me<le.count;++me)le.counts[me]>0&&(ve.uniform("uDrawId",me),ve.offsetAttributes(ie,le.baseInstances[me]),w.drawElementsInstanced(J,le.counts[me],Z._dataType,le.offsets[me],le.instanceCounts[me]));else for(let me=0;me<le.count;++me)le.counts[me]>0&&(ve.uniform("uDrawId",me),ve.offsetAttributes(ie,le.baseInstances[me]),w.drawArraysInstanced(J,0,le.counts[me],le.instanceCounts[me]));if(o.isTimingMode){F?E.calls.multiDrawInstancedBase+=1:L?E.calls.drawInstancedBase+=le.count:E.calls.drawInstanced+=le.count;for(let me=0;me<le.count;++me)E.calls.counts+=le.instanceCounts[me]}}}else{let le=0;for(;;){const me=Math.min(ce-le,y);if(Z?w.drawElementsInstanced(J,me,Z._dataType,le*Z._bpe,ue):w.drawArraysInstanced(J,le,me,ue),le+=me,le>=ce)break}o.isTimingMode&&(E.calls.drawInstanced+=1,E.calls.counts+=ue)}o.isDebugMode&&l.checkError(`Draw error rendering item id ${R}`)},update:()=>{if(m(pe),x.aVertex){const de=x.uVertexCount.ref.value;x.aVertex.ref.value.length<de&&c.ValueCell.update(x.aVertex,(0,s.fillSerial)(new Float32Array(de)))}for(let de=0,ge=K.length;de<ge;++de){const[Ce,ve]=K[de];ve.ref.version!==Q[Ce]&&(pe.defines=!0,Q[Ce]=ve.ref.version)}if(pe.defines)for(const de of D)ae[de].destroy(),ae[de]=p(l,v(de,V),q,T,A);x.drawCount.ref.version!==Q.drawCount&&(E.drawCount+=x.drawCount.ref.value-ce,E.instancedDrawCount+=ue*x.drawCount.ref.value-ue*ce,ce=x.drawCount.ref.value,Q.drawCount=x.drawCount.ref.version),x.instanceCount.ref.version!==Q.instanceCount&&(E.instanceCount+=x.instanceCount.ref.value-ue,E.instancedDrawCount+=x.instanceCount.ref.value*ce-ue*ce,ue=x.instanceCount.ref.value,Q.instanceCount=x.instanceCount.ref.version);for(let de=0,ge=$.length;de<ge;++de){const[Ce,ve]=$[de],le=U[Ce];if(le.ref.version!==Q[Ce]){if(ve.length>=le.ref.value.length)ve.updateSubData(le.ref.value,0,ve.length);else{ve.destroy();const{itemSize:me,divisor:ee}=A[Ce];$[de][1]=B.attribute(le.ref.value,me,ee),pe.attributes=!0}Q[Ce]=le.ref.version}}if(Z&&x.elements.ref.version!==Q.elements&&(Z.length>=x.elements.ref.value.length?Z.updateSubData(x.elements.ref.value,0,Z.length):(Z.destroy(),Z=B.elements(x.elements.ref.value),pe.elements=!0),Q.elements=x.elements.ref.version),pe.attributes||pe.defines||pe.elements)for(const de of D){const ge=oe[de];
4121ge&&ge.destroy(),oe[de]=O?B.vertexArray(ae[de],$,Z):null}for(let de=0,ge=te.length;de<ge;++de){const[Ce,ve]=te[de],le=N[Ce];le.ref.version!==Q[Ce]&&(A[Ce].kind!=="texture"?(ve.load(le.ref.value),pe.textures=!0):te[de][1]=le.ref.value,Q[Ce]=le.ref.version)}for(let de=0,ge=ne.length;de<ge;++de){const[Ce,ve]=ne[de],le=k[Ce];le.ref.version!==Q[Ce]&&(A[Ce].kind!=="texture"?(ve.load(le.ref.value),pe.textures=!0):ne[de][1]=le.ref.value,Q[Ce]=le.ref.version)}for(let de=0,ge=X.length;de<ge;++de){const[Ce,ve]=X[de];ve.ref.version!==Q[Ce]&&(c.ValueCell.update(Y[de][1],(0,h.deepClone)(ve.ref.value)),Q[Ce]=ve.ref.version)}},destroy:()=>{if(!he){for(const de of D){ae[de].destroy();const ge=oe[de];ge&&ge.destroy()}te.forEach(([de,ge])=>{A[de].kind!=="texture"&&ge.destroy()}),ne.forEach(([de,ge])=>{A[de].kind!=="texture"&&ge.destroy()}),$.forEach(([de,ge])=>ge.destroy()),Z&&Z.destroy(),E.drawCount-=ce,E.instanceCount-=ue,E.instancedDrawCount-=ue*ce,he=!0}}}}})(T3)),T3}var C1={},qj;function Jt(){if(qj)return C1;qj=1,Object.defineProperty(C1,"__esModule",{value:!0}),C1.createRenderable=a,C1.createComputeRenderable=d;const e=Kr(),t=Yn(),r=ir(),n=oQ(),i=DS(),c=ja(),o=Fa(),s=Ct(),h=i.Plane3D.distanceToPoint,f=n.Frustum3D.intersectsSphere3D,y=c.Sphere3D.fromArray,_=(0,t.idFactory)();function g(p,u){return u&&u.instanceCounts.length>=p?u:{firsts:new Int32Array(p),counts:new Int32Array(p),offsets:new Int32Array(p),instanceCounts:new Int32Array(p),baseVertices:new Int32Array(p),baseInstances:new Uint32Array(p),count:0,uniforms:[]}}function a(p,u,m){const v=_();let b=g(0);const P=[];let C=!1,l=-1;const S=(0,c.Sphere3D)(),T=()=>{var A;const x=(A=u.lodLevels)===null||A===void 0?void 0:A.ref.value;if(x&&x.length>0){const{cellCount:M}=u.instanceGrid.ref.value;P.length=x.length;for(let D=0,V=x.length;D<V;++D)P[D]=g(M,P[D]),P[D].count=0;if(u.lodLevels.ref.version!==l){for(let D=0,V=x.length;D<V;++D)P[D].uniforms.length!==1&&(P[D].uniforms.length=1,P[D].uniforms[0]=["uLod",e.ValueCell.create((0,o.Vec4)())]),e.ValueCell.update(P[D].uniforms[0][1],o.Vec4.set(P[D].uniforms[0][1].ref.value,x[D][0],x[D][1],x[D][2],x[D][4]));l=u.lodLevels.ref.version}}};return T(),{id:v,materialId:p.materialId,values:u,state:m,cull:(A,x,M,D)=>{var V,R;if(C=!1,u.drawCount.ref.value===0||u.instanceCount.ref.value===0||u.instanceGrid.ref.value.cellSize<=1)return;const{cellOffsets:E,cellSpheres:I,cellCount:B,batchOffsets:w,batchSpheres:O,batchCount:F,batchCell:L,batchSize:U}=u.instanceGrid.ref.value,[q,N]=u.uLod.ref.value,k=q!==0||N!==0,j=2*U,H=(V=u.lodLevels)===null||V===void 0?void 0:V.ref.value;if(H&&H.length>0){if(((R=u.lodLevels)===null||R===void 0?void 0:R.ref.version)!==l)T();else for(let G=0,z=H.length;G<z;++G)P[G].count=0;for(let G=0;G<F;++G){const z=w[G],W=w[G+1];if(W-z===0)continue;y(S,O,G*4);const Y=h(A,S.center);if(k&&(Y+S.radius<q||Y-S.radius>N)){s.isTimingMode&&(D.culled.lod+=E[L[W-1]+1]-E[L[z]]);continue}if(!f(x,S)){s.isTimingMode&&(D.culled.frustum+=E[L[W-1]+1]-E[L[z]]);continue}if(M!==null&&M(S)){s.isTimingMode&&(D.culled.occlusion+=E[L[W-1]+1]-E[L[z]]);continue}for(let K=z;K<W;++K){const Q=L[K],J=E[Q],te=E[Q+1]-J;if(te===0)continue;y(S,I,Q*4);const ne=h(A,S.center);if(k&&(ne+S.radius<q||ne-S.radius>N)){s.isTimingMode&&(D.culled.lod+=te);continue}if(!f(x,S)){s.isTimingMode&&(D.culled.frustum+=te);continue}if(M!==null&&ne-S.radius<j&&M(S)){s.isTimingMode&&(D.culled.occlusion+=te);continue}for(let $=0,ie=H.length;$<ie;++$){if(ne+S.radius<H[$][0]||ne-S.radius>H[$][1])continue;const Z=P[$],re=Z.count;re>0&&Z.baseInstances[re-1]+Z.instanceCounts[re-1]===J&&Z.counts[re-1]===H[$][3]?Z.instanceCounts[re-1]+=te:(Z.counts[re]=H[$][3],Z.instanceCounts[re]=te,Z.baseInstances[re]=J,Z.count+=1)}}}}else{b=g(B,b);const{baseInstances:G,instanceCounts:z,counts:W}=b;let X=0;for(let Y=0;Y<F;++Y){const K=w[Y],Q=w[Y+1];if(Q-K!==0){if(y(S,O,Y*4),k){const ae=h(A,S.center);if(ae+S.radius<q||ae-S.radius>N){s.isTimingMode&&(D.culled.lod+=E[L[Q-1]+1]-E[L[K]]);continue}}if(!f(x,S)){s.isTimingMode&&(D.culled.frustum+=E[L[Q-1]+1]-E[L[K]]);continue}if(M!==null&&M(S)){s.isTimingMode&&(D.culled.occlusion+=E[L[Q-1]+1]-E[L[K]]);continue}for(let ae=K;ae<Q;++ae){const te=L[ae],ne=E[te],ie=E[te+1]-ne;if(ie===0)continue;y(S,I,te*4);const Z=h(A,S.center);if(k&&(Z+S.radius<q||Z-S.radius>N)){s.isTimingMode&&(D.culled.lod+=ie);continue}if(!f(x,S)){s.isTimingMode&&(D.culled.frustum+=ie);continue}if(M!==null&&Z-S.radius<j&&M(S)){s.isTimingMode&&(D.culled.occlusion+=ie);continue}X>0&&G[X-1]+z[X-1]===ne?z[X-1]+=ie:(W[X]=u.drawCount.ref.value,z[X]=ie,G[X]=ne,X+=1)}}}b.count=X,P.length=1,P[0]=b,P[0].uniforms.length=0}C=!0},uncull:()=>{C=!1},cullSimple:(A,x,M)=>{var D,V;const R=(D=u.lodLevels)===null||D===void 0?void 0:D.ref.value;if(!(!R||R.length===0)){if(((V=u.lodLevels)===null||V===void 0?void 0:V.ref.version)!==l)T();else for(let E=0,I=R.length;E<I;++E)P[E].count=0;for(let E=0,I=R.length;E<I;++E)if(A+x<R[E][1]*M){const B=P[E],w=B.count;B.counts[w]=R[E][3],B.instanceCounts[w]=u.instanceCount.ref.value,B.baseInstances[w]=0,B.count+=1;break}C=!0}},render:(A,x)=>{u.uAlpha&&u.alpha&&e.ValueCell.updateIfChanged(u.uAlpha,(0,r.clamp)(u.alpha.ref.value*m.alphaFactor,0,1)),p.render(A,x,C?P:void 0)},getByteCount:()=>p.getByteCount(),getProgram:A=>p.getProgram(A),setTransparency:A=>p.setTransparency(A),update:()=>{p.update(),T()},dispose:()=>p.destroy()}}function d(p,u){return{id:_(),values:u,render:()=>{p.getProgram("compute").finalize(!0),p.render("compute",0)},update:()=>p.update(),dispose:()=>p.destroy()}}return C1}var Uj;function Mr(){return Uj||(Uj=1,(function(e){Object.defineProperty(e,"__esMo
4121dule",{value:!0}),e.QuadValues=e.QuadSchema=e.QuadPositions=void 0,e.createCopyRenderable=g,e.getSharedCopyRenderable=d,e.readTexture=m,e.readAlphaTexture=v;const t=bn(),r=et(),n=Yt(),i=Ge(),c=Kt(),o=$ne(),s=Gr(),h=Zt(),f=Jt();e.QuadPositions=new Float32Array([1,1,-1,1,-1,-1,-1,-1,1,-1,1,1]),e.QuadSchema={drawCount:(0,n.ValueSpec)("number"),instanceCount:(0,n.ValueSpec)("number"),aPosition:(0,n.AttributeSpec)("float32",2,0),uQuadScale:(0,n.UniformSpec)("v2")},e.QuadValues={drawCount:r.ValueCell.create(6),instanceCount:r.ValueCell.create(1),aPosition:r.ValueCell.create(e.QuadPositions),uQuadScale:r.ValueCell.create(i.Vec2.create(1,1))};const y={...e.QuadSchema,tColor:(0,n.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,n.UniformSpec)("v2")},_=(0,c.ShaderCode)("copy",s.quad_vert,o.copy_frag);function g(b,P){const C={...e.QuadValues,tColor:r.ValueCell.create(P),uTexSize:r.ValueCell.create(i.Vec2.create(P.getWidth(),P.getHeight()))},l={...y},S=(0,h.createComputeRenderItem)(b,"triangles",_,l,C);return(0,f.createComputeRenderable)(S,C)}const a="shared-copy";function d(b,P){b.namedComputeRenderables[a]||(b.namedComputeRenderables[a]=g(b,(0,t.createNullTexture)()));const C=b.namedComputeRenderables[a];return r.ValueCell.update(C.values.tColor,P),r.ValueCell.update(C.values.uTexSize,i.Vec2.set(C.values.uTexSize.ref.value,P.getWidth(),P.getHeight())),C.update(),C}const p="read-texture",u="read-alpha-texture";function m(b,P,C){const{gl:l,resources:S}=b;if(!C&&P.type!==l.UNSIGNED_BYTE)throw new Error("unsupported texture type");b.namedFramebuffers[p]||(b.namedFramebuffers[p]=S.framebuffer());const T=b.namedFramebuffers[p],A=P.getWidth(),x=P.getHeight();return C||(C=new Uint8Array(A*x*4)),T.bind(),P.attachFramebuffer(T,0),b.readPixels(0,0,A,x,C),{array:C,width:A,height:x}}function v(b,P){const{gl:C,state:l,resources:S}=b;if(P.type!==C.UNSIGNED_BYTE)throw new Error("unsupported texture type");const T=P.getWidth(),A=P.getHeight(),x=d(b,P);l.currentRenderItemId=-1,b.namedFramebuffers[u]||(b.namedFramebuffers[u]=S.framebuffer());const M=b.namedFramebuffers[u];M.bind(),b.namedTextures[u]||(b.namedTextures[u]=S.texture("image-uint8","rgba","ubyte","linear"));const D=b.namedTextures[u];D.define(T,A),D.attachFramebuffer(M,0),l.disable(C.CULL_FACE),l.enable(C.BLEND),l.disable(C.DEPTH_TEST),l.enable(C.SCISSOR_TEST),l.depthMask(!1),l.clearColor(0,0,0,0),l.blendFunc(C.ONE,C.ONE),l.blendEquation(C.FUNC_ADD),l.viewport(0,0,T,A),l.scissor(0,0,T,A),C.clear(C.COLOR_BUFFER_BIT),x.render();const V=new Uint8Array(T*A*4);return b.readPixels(0,0,T,A,V),{array:V,width:T,height:A}}})(C3)),C3}var jj;function Wf(){return jj||(jj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Image=e.InterpolationTypeNames=e.InterpolationTypes=void 0;const t=_t(),r=zt(),n=kr(),i=rt(),c=Ge(),o=et(),s=Ne(),h=Tt(),f=wi(),y=li(),_=Ka(),g=Ya(),a=Vt(),d=Qa(),p=Xa(),u=Mr(),m=Za(),v=Ja(),b=eo(),P=new Uint32Array([0,1,2,1,3,2]),C=new Float32Array([0,1,0,0,1,1,1,0]);e.InterpolationTypes={nearest:"Nearest",catmulrom:"Catmulrom (Cubic)",mitchell:"Mitchell (Cubic)",bspline:"B-Spline (Cubic)"},e.InterpolationTypeNames=Object.keys(e.InterpolationTypes);var l;(function(T){function A(){return{type:0,center:(0,c.Vec3)(),rotation:(0,c.Quat)(),scale:(0,c.Vec3)(),transform:(0,c.Mat4)()}}T.createEmptyTrim=A;function x(U,q,N,k,j,H,G){return G?V(U,q,N,k,j,H,G):D(U,q,N,k,j,H)}T.create=x;function M(U){return(0,t.hashFnv32a)([U.cornerBuffer.ref.version])}function D(U,q,N,k,j,H){const G=(0,i.Sphere3D)();let z=-1;const W=U.width,X=U.height,Y={kind:"image",imageTexture:o.ValueCell.create(U),imageTextureDim:o.ValueCell.create(c.Vec2.create(W,X)),cornerBuffer:o.ValueCell.create(q),groupTexture:o.ValueCell.create(N),valueTexture:o.ValueCell.create(k),trimType:o.ValueCell.create(j.type),trimCenter:o.ValueCell.create(j.center),trimRotation:o.ValueCell.create(j.rotation),trimScale:o.ValueCell.create(j.scale),trimTransform:o.ValueCell.create(j.transform),isoLevel:o.ValueCell.create(H),get boundingSphere(){const K=M(Y);if(K!==z){const Q=S(Y.cornerBuffer.ref.value);i.Sphere3D.copy(G,Q),z=K}return G},setBoundingSphere(K){i.Sphere3D.copy(G,K),z=M(Y)},hasBoundingSphere(){return z===M(Y)},meta:{}};return Y}function V(U,q,N,k,j,H,G){const z=U.width,W=U.height;return o.ValueCell.update(G.imageTexture,U),o.ValueCell.update(G.imageTextureDim,c.Vec2.set(G.imageTextureDim.ref.value,z,W)),o.ValueCell.update(G.cornerBuffer,q),o.ValueCell.update(G.groupTexture,N),o.ValueCell.update(G.valueTexture,k),o.ValueCell.updateIfChanged(G.trimType,j.type),o.ValueCell.update(G.trimCenter,c.Vec3.copy(G.trimCenter.ref.value,j.center)),o.ValueCell.update(G.trimRotation,c.Quat.copy(G.trimRotation.ref.value,j.rotation)),o.ValueCell.update(G.trimScale,c.Vec3.copy(G.trimScale.ref.value,j.scale)),o.ValueCell.update(G.trimTransform,c.Mat4.copy(G.trimTransform.ref.value,j.transform)),o.ValueCell.updateIfChanged(G.isoLevel,H),G}function R(U){const q=(0,n.createTextureImage)(0,4,Uint8Array),N=U?U.cornerBuffer.ref.value:new Float32Array(24),k=(0,n.createTextureImage)(0,4,Uint8Array),j=(0,n.createTextureImage)(0,1,Float32Array),H=A();return x(q,N,k,j,H,-1,U)}T.createEmpty=R,T.Params={...h.BaseGeometry.Params,interpolation:s.ParamDefinition.Select("bspline",s.ParamDefinition.objectToOptions(e.InterpolationTypes))},T.Utils={Params:T.Params,createEmpty:R,createValues:I,createValuesSimple:B,updateV
4121alues:w,updateBoundingSphere:O,createRenderableState:F,updateRenderableState:L,createPositionIterator:E};function E(U,q){return(0,r.LocationIterator)(1,1,1,()=>p.NullLocation)}function I(U,q,N,k,j){const{instanceCount:H,groupCount:G}=N,z=E(),W=(0,f.createColors)(N,z,k.color),X=(0,h.resolveInstanceGranularity)(j.instanceGranularity,G,H)?(0,y.createMarkers)(H,"instance"):(0,y.createMarkers)(H*G,"groupInstance"),Y=(0,_.createEmptyOverpaint)(),K=(0,g.createEmptyTransparency)(),Q=(0,v.createEmptyEmissive)(),J=(0,m.createEmptySubstance)(),ae=(0,d.createEmptyClipping)(),te=(0,b.createEmptyWiggle)(),ne={drawCount:P.length,vertexCount:u.QuadPositions.length/3,groupCount:G,instanceCount:H},$=i.Sphere3D.clone(U.boundingSphere),ie=(0,n.calculateTransformBoundingSphere)($,q.aTransform.ref.value,H,0);return{dGeometryType:o.ValueCell.create("image"),...W,...X,...Y,...K,...Q,...J,...ae,...te,...q,...h.BaseGeometry.createValues(j,ne),aPosition:U.cornerBuffer,aUv:o.ValueCell.create(C),elements:o.ValueCell.create(P),aGroup:o.ValueCell.create((0,a.fillSerial)(new Float32Array(4))),boundingSphere:o.ValueCell.create(ie),invariantBoundingSphere:o.ValueCell.create($),uInvariantBoundingSphere:o.ValueCell.create(c.Vec4.ofSphere($)),dInterpolation:o.ValueCell.create(j.interpolation),uImageTexDim:U.imageTextureDim,tImageTex:U.imageTexture,tGroupTex:U.groupTexture,tValueTex:U.valueTexture,uTrimType:U.trimType,uTrimCenter:U.trimCenter,uTrimRotation:U.trimRotation,uTrimScale:U.trimScale,uTrimTransform:U.trimTransform,uIsoLevel:U.isoLevel}}function B(U,q,N,k,j){const H=h.BaseGeometry.createSimple(N,k,j),G={...s.ParamDefinition.getDefaultValues(T.Params),...q};return I(U,H.transform,H.locationIterator,H.theme,G)}function w(U,q){h.BaseGeometry.updateValues(U,q),o.ValueCell.updateIfChanged(U.dInterpolation,q.interpolation)}function O(U,q){const N=i.Sphere3D.clone(q.boundingSphere),k=(0,n.calculateTransformBoundingSphere)(N,U.aTransform.ref.value,U.instanceCount.ref.value,0);i.Sphere3D.equals(k,U.boundingSphere.ref.value)||o.ValueCell.update(U.boundingSphere,k),i.Sphere3D.equals(N,U.invariantBoundingSphere.ref.value)||(o.ValueCell.update(U.invariantBoundingSphere,N),o.ValueCell.update(U.uInvariantBoundingSphere,c.Vec4.fromSphere(U.uInvariantBoundingSphere.ref.value,N)))}function F(U){const q=h.BaseGeometry.createRenderableState(U);return q.opaque=!1,q}function L(U,q){h.BaseGeometry.updateRenderableState(U,q),U.opaque=!1}})(l||(e.Image=l={}));function S(T){const A=(0,c.Vec3)(),x=[];for(let V=0,R=T.length;V<R;V+=3){const E=c.Vec3.fromArray((0,c.Vec3)(),T,V);x.push(E),c.Vec3.add(A,A,E)}c.Vec3.scale(A,A,1/(T.length/3));let M=0;for(const V of x){const R=c.Vec3.distance(A,V);R>M&&(M=R)}const D=i.Sphere3D.create(A,M);return i.Sphere3D.setExtrema(D,x),D}})(S3)),S3}var P1={},Gj;function no(){if(Gj)return P1;Gj=1,Object.defineProperty(P1,"__esModule",{value:!0}),P1.Cylinders=void 0;const e=et(),t=Ge(),r=us(),n=wi(),i=li(),c=ls(),o=zt(),s=Ne(),h=kr(),f=rt(),y=Tt(),_=Ka(),g=Ya(),a=_t(),d=Qa(),p=Za(),u=Ja(),m=eo(),v=jf(),b=rc();var P;return(function(C){function l(O,F,L,U,q,N,k,j,H,G){return G?x(O,F,L,U,q,N,k,j,H,G):A(O,F,L,U,q,N,k,j,H)}C.create=l;function S(O){const F=O?O.mappingBuffer.ref.value:new Float32Array(0),L=O?O.indexBuffer.ref.value:new Uint32Array(0),U=O?O.groupBuffer.ref.value:new Float32Array(0),q=O?O.startBuffer.ref.value:new Float32Array(0),N=O?O.endBuffer.ref.value:new Float32Array(0),k=O?O.scaleBuffer.ref.value:new Float32Array(0),j=O?O.capBuffer.ref.value:new Float32Array(0),H=O?O.colorModeBuffer.ref.value:new Float32Array(0);return l(F,L,U,q,N,k,j,H,0,O)}C.createEmpty=S;function T(O){return(0,a.hashFnv32a)([O.cylinderCount,O.mappingBuffer.ref.version,O.indexBuffer.ref.version,O.groupBuffer.ref.version,O.startBuffer.ref.version,O.endBuffer.ref.version,O.scaleBuffer.ref.version,O.capBuffer.ref.version,O.colorModeBuffer.ref.version])}function A(O,F,L,U,q,N,k,j,H){const G=(0,f.Sphere3D)();let z,W=-1,X=-1;const Y={kind:"cylinders",cylinderCount:H,mappingBuffer:e.ValueCell.create(O),indexBuffer:e.ValueCell.create(F),groupBuffer:e.ValueCell.create(L),startBuffer:e.ValueCell.create(U),endBuffer:e.ValueCell.create(q),scaleBuffer:e.ValueCell.create(N),capBuffer:e.ValueCell.create(k),colorModeBuffer:e.ValueCell.create(j),get boundingSphere(){const K=T(Y);if(K!==W){const Q=(0,h.calculateInvariantBoundingSphere)(Y.startBuffer.ref.value,Y.cylinderCount*6,6),J=(0,h.calculateInvariantBoundingSphere)(Y.endBuffer.ref.value,Y.cylinderCount*6,6);f.Sphere3D.expandBySphere(G,Q,J),W=K}return G},get groupMapping(){return Y.groupBuffer.ref.version!==X&&(z=(0,r.createGroupMapping)(Y.groupBuffer.ref.value,Y.cylinderCount,6),X=Y.groupBuffer.ref.version),z},setBoundingSphere(K){f.Sphere3D.copy(G,K),W=T(Y)},hasBoundingSphere(){return W===T(Y)}};return Y}function x(O,F,L,U,q,N,k,j,H,G){return H>G.cylinderCount&&(e.ValueCell.update(G.mappingBuffer,O),e.ValueCell.update(G.indexBuffer,F)),G.cylinderCount=H,e.ValueCell.update(G.groupBuffer,L),e.ValueCell.update(G.startBuffer,U),e.ValueCell.update(G.endBuffer,q),e.ValueCell.update(G.scaleBuffer,N),e.ValueCell.update(G.capBuffer,k),e.ValueCell.update(G.colorModeBuffer,j),G}function M(O,F){const L=O.startBuffer.ref.value;(0,r.transformPositionArray)(F,L,0,O.cylinderCount*6),e.ValueCell.update(O.startBuffer,L);const U=O.endBuffer.ref.value;(0,r.transformPositionArray)(F,U,0,O.cylinderCount*6),e.ValueCell.update(O.endBuffer,U)}C.transform=M,C.Params={...y.BaseGeometry.Params,sizeFactor:s.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),sizeAspectRatio:s.ParamDefinition.Numeric(1,{min:0,max:3,step:.01}),doubleSided:s.ParamDefinition.Boolean(!1,y.BaseGeometry.CustomQualityParamInfo),ignoreLight:s.ParamDefinition.Boolean(!1,y.BaseGeometry.ShadingCategory),celShaded:s.ParamDefinition.Boolean(!1,y.BaseGeometry.ShadingCategory),xrayShaded:s.ParamDefinition.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],y.BaseGeometry.ShadingCategory),transparentBackfaces:s.ParamDefinition.Select("off",s.ParamDefinition.arrayToOptions(["off","on","opaque"]),y.BaseGeometry.ShadingCategory),solidInterior:s.ParamDefinition.Boolean(!0,y.BaseGeometry.ShadingCategory),bumpFrequency:s.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},y.BaseGeometry.ShadingCategory),bumpAmplitude:s.ParamDefinition.Numeric(1,{min:0,max:5,step:.1},y.BaseGeometry.ShadingCategory),interior:(0,v.getInteriorParam)(),animation:(0,b.getAnimationParam)(),colorMode:s.ParamDefinition.Select("default",s.ParamDefinition.arrayToOptions(["default","interpolate"]),y.BaseGeometry.ShadingCategory)}
4121,C.Utils={Params:C.Params,createEmpty:S,createValues:V,createValuesSimple:R,updateValues:E,updateBoundingSphere:I,createRenderableState:B,updateRenderableState:w,createPositionIterator:D};function D(O,F){const L=O.cylinderCount*6,U=F.instanceCount.ref.value,q=(0,o.PositionLocation)(),N=q.position,k=O.startBuffer.ref.value,j=O.endBuffer.ref.value,H=F.aTransform.ref.value,G=(z,W)=>{const X=z%6===0?k:j;return W<0?t.Vec3.fromArray(N,X,z*3):t.Vec3.transformMat4Offset(N,X,H,0,z*3,W*16),q};return(0,o.LocationIterator)(L,U,2,G)}function V(O,F,L,U,q){const{instanceCount:N,groupCount:k}=L,j=D(O,F),H=(0,n.createColors)(L,j,U.color),G=(0,c.createSizes)(L,j,U.size),z=(0,y.resolveInstanceGranularity)(q.instanceGranularity,k,N)?(0,i.createMarkers)(N,"instance"):(0,i.createMarkers)(N*k,"groupInstance"),W=(0,_.createEmptyOverpaint)(),X=(0,g.createEmptyTransparency)(),Y=(0,u.createEmptyEmissive)(),K=(0,p.createEmptySubstance)(),Q=(0,d.createEmptyClipping)(),J=(0,m.createEmptyWiggle)(),ae={drawCount:O.cylinderCount*4*3,vertexCount:O.cylinderCount*6,groupCount:k,instanceCount:N}
4121,te=(0,c.getMaxSize)(G)*q.sizeFactor,ne=f.Sphere3D.clone(O.boundingSphere),$=(0,h.calculateTransformBoundingSphere)(ne,F.aTransform.ref.value,N,0);return{dGeometryType:e.ValueCell.create("cylinders"),aMapping:O.mappingBuffer,aGroup:O.groupBuffer,aStart:O.startBuffer,aEnd:O.endBuffer,aScale:O.scaleBuffer,aCap:O.capBuffer,aColorMode:O.colorModeBuffer,elements:O.indexBuffer,boundingSphere:e.ValueCell.create($),invariantBoundingSphere:e.ValueCell.create(ne),uInvariantBoundingSphere:e.ValueCell.create(t.Vec4.ofSphere(ne)),...H,...G,...z,...W,...X,...Y,...K,...Q,...J,...F,padding:e.ValueCell.create(te),...y.BaseGeometry.createValues(q,ae),uSizeFactor:e.ValueCell.create(q.sizeFactor*q.sizeAspectRatio),uDoubleSided:e.ValueCell.create(q.doubleSided),dIgnoreLight:e.ValueCell.create(q.ignoreLight),dCelShaded:e.ValueCell.create(q.celShaded),dXrayShaded:e.ValueCell.create(q.xrayShaded==="inverted"?"inverted":q.xrayShaded===!0?"on":"off"),dTransparentBackfaces:e.ValueCell.create(q.transparentBackfaces),dSolidInterior:e.ValueCell.create(q.solidInterior),uBumpFrequency:e.ValueCell.create(q.bumpFrequency),uBumpAmplitude:e.ValueCell.create(q.bumpAmplitude),dDualColor:e.ValueCell.create(q.colorMode==="interpolate"),...(0,v.createInteriorValues)(q.interior),...(0,b.createAnimationValues)(q.animation)}}function R(O,F,L,U,q){const N=y.BaseGeometry.createSimple(L,U,q),k={...s.ParamDefinition.getDefaultValues(C.Params),...F};return V(O,N.transform,N.locationIterator,N.theme,k)}function E(O,F){y.BaseGeometry.updateValues(O,F),e.ValueCell.updateIfChanged(O.uSizeFactor,F.sizeFactor*F.sizeAspectRatio),e.ValueCell.updateIfChanged(O.uDoubleSided,F.doubleSided),e.ValueCell.updateIfChanged(O.dIgnoreLight,F.ignoreLight),e.ValueCell.updateIfChanged(O.dCelShaded,F.celShaded),e.ValueCell.updateIfChanged(O.dXrayShaded,F.xrayShaded==="inverted"?"inverted":F.xrayShaded===!0?"on":"off"),e.ValueCell.updateIfChanged(O.dTransparentBackfaces,F.transparentBackfaces),e.ValueCell.updateIfChanged(O.dSolidInterior,F.solidInterior),e.ValueCell.updateIfChanged(O.uBumpFrequency,F.bumpFrequency),e.ValueCell.updateIfChanged(O.uBumpAmplitude,F.bumpAmplitude),e.ValueCell.updateIfChanged(O.dDualColor,F.colorMode==="interpolate"),(0,v.updateInteriorValues)(O,F.interior),(0,b.updateAnimationValues)(O,F.animation)}function I(O,F){const L=f.Sphere3D.clone(F.boundingSphere),U=(0,h.calculateTransformBoundingSphere)(L,O.aTransform.ref.value,O.instanceCount.ref.value,0);f.Sphere3D.equals(U,O.boundingSphere.ref.value)||e.ValueCell.update(O.boundingSphere,U),f.Sphere3D.equals(L,O.invariantBoundingSphere.ref.value)||(e.ValueCell.update(O.invariantBoundingSphere,L),e.ValueCell.update(O.uInvariantBoundingSphere,t.Vec4.fromSphere(O.uInvariantBoundingSphere.ref.value,L)))}function B(O){const F=y.BaseGeometry.createRenderableState(O);return w(F,O),F}function w(O,F){y.BaseGeometry.updateRenderableState(O,F),O.opaque=O.opaque&&!F.xrayShaded,O.writeDepth=O.opaque}})(P||(P1.Cylinders=P={})),P1}var zj;function Ll(){if(zj)return s1;zj=1,Object.defineProperty(s1,"__esModule",{value:!0}),s1.Geometry=void 0;const e=Rt(),t=ic(),r=ya(),n=kn(),i=Hf(),c=ro(),o=Vt(),s=Fl(),h=Wf(),f=no(),y=nc();var _;return(function(g){function a(v){switch(v.kind){case"mesh":return v.triangleCount*3;case"points":return v.pointCount;case"spheres":return v.sphereCount*2*3;case"cylinders":return v.cylinderCount*4*3;case"text":return v.charCount*2*3;case"lines":return v.lineCount*2*3;case"direct-volume":return 36;case"image":return 6;case"texture-mesh":return v.vertexCount}}g.getDrawCount=a;function d(v){switch(v.kind){case"mesh":return v.vertexCount;case"points":return v.pointCount;case"spheres":return v.sphereCount*6;case"cylinders":return v.cylinderCount*6;case"text":return v.charCount*4;case"lines":return v.vertexCount;case"direct-volume":const[b,P,C]=v.gridDimension.ref.value;return b*P*C;case"image":return 4;case"texture-mesh":return v.vertexCount}}g.getVertexCount=d;function p(v){switch(v.kind){case"mesh":case"points":case"spheres":case"cylinders":case"text":case"lines":return a(v)===0?0:(0,o.arrayMax)(v.groupBuffer.ref.value)+1;case"direct-volume":return 1;case"image":return(0,y.arrayMaxPackedIntToRGB)(v.groupTexture.ref.value.array,4)+1;case"texture-mesh":return v.groupCount}}g.getGroupCount=p;function u(v){switch(v.kind){case"mesh":return e.Mesh.Utils;case"points":return t.Points.Utils;case"spheres":return c.Spheres.Utils;case"cylinders":return f.Cylinders.Utils;case"text":return r.Text.Utils;case"lines":return n.Lines.Utils;case"direct-volume":return i.DirectVolume.Utils;case"image":return h.Image.Utils;case"texture-mesh":return s.TextureMesh.Utils}}g.getUtils=u;function m(v,b){return b==="instance"&&v.nonInstanceable?"group":b}g.getGranularity=m})(_||(s1.Geometry=_={})),s1}var x3={},Hj;function _Q(){return Hj||(Hj=1,(function(e){Object.defineProperty(e,"__esMo
4121dule",{value:!0}),e.ShapeGroupSizeThemeProvider=e.ShapeGroupSizeThemeParams=void 0,e.getShapeGroupSizeThemeParams=c,e.ShapeGroupSizeTheme=o;const t=pn(),r=Ne(),n=1,i="Assigns sizes as defined by the shape object.";e.ShapeGroupSizeThemeParams={};function c(s){return e.ShapeGroupSizeThemeParams}function o(s,h){return{factory:o,granularity:"groupInstance",size:f=>t.ShapeGroup.isLocation(f)?f.shape.getSize(f.group,f.instance):n,props:h,description:i}}e.ShapeGroupSizeThemeProvider={name:"shape-group",label:"Shape Group",category:"",factory:o,getParams:c,defaultValues:r.ParamDefinition.getDefaultValues(e.ShapeGroupSizeThemeParams),isApplicable:s=>!!s.shape}})(x3)),x3}var Du={},A3={},Wj;function Xne(){return Wj||(Wj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DirectVolumeSchema=void 0,e.DirectVolumeRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=et();e.DirectVolumeSchema={...n.BaseSchema,aPosition:(0,n.AttributeSpec)("float32",3,0),elements:(0,n.ElementsSpec)("uint32"),uBboxMin:(0,n.UniformSpec)("v3"),uBboxMax:(0,n.UniformSpec)("v3"),uBboxSize:(0,n.UniformSpec)("v3"),uMaxSteps:(0,n.UniformSpec)("i"),uStepScale:(0,n.UniformSpec)("f"),uJumpLength:(0,n.UniformSpec)("f"),uTransform:(0,n.UniformSpec)("m4"),uGridDim:(0,n.UniformSpec)("v3"),tTransferTex:(0,n.TextureSpec)("image-uint8","alpha","ubyte","linear"),uTransferScale:(0,n.UniformSpec)("f","material"),dGridTexType:(0,n.DefineSpec)("string",["2d","3d"]),uGridTexDim:(0,n.UniformSpec)("v3"),tGridTex:(0,n.TextureSpec)("texture","rgba","ubyte","linear"),uGridStats:(0,n.UniformSpec)("v4"),uCellDim:(0,n.UniformSpec)("v3"),uCartnToUnit:(0,n.UniformSpec)("m4"),uUnitToCartn:(0,n.UniformSpec)("m4"),dPackedGroup:(0,n.DefineSpec)("boolean"),dAxisOrder:(0,n.DefineSpec)("string",["012","021","102","120","201","210"]),dIgnoreLight:(0,n.DefineSpec)("boolean"),dCelShaded:(0,n.DefineSpec)("boolean"),dXrayShaded:(0,n.DefineSpec)("string",["off","on","inverted"]),meta:(0,n.ValueSpec)("unknown")};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.DirectVolumeSchema};s.isWebGL2||(d.uMaxSteps=(0,n.DefineSpec)("number"));const p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.DirectVolumeShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(A3)),A3}var M3={},$j;function Kne(){return $j||($j=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.MeshSchema=void 0,e.MeshRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=et();e.MeshSchema={...n.BaseSchema,aGroup:(0,n.AttributeSpec)("float32",1,0),aPosition:(0,n.AttributeSpec)("float32",3,0),aNormal:(0,n.AttributeSpec)("float32",3,0),elements:(0,n.ElementsSpec)("uint32"),dVaryingGroup:(0,n.DefineSpec)("boolean"),dFlatShaded:(0,n.DefineSpec)("boolean"),uDoubleSided:(0,n.UniformSpec)("b","material"),dFlipSided:(0,n.DefineSpec)("boolean"),dIgnoreLight:(0,n.DefineSpec)("boolean"),dCelShaded:(0,n.DefineSpec)("boolean"),dXrayShaded:(0,n.DefineSpec)("string",["off","on","inverted"]),dTransparentBackfaces:(0,n.DefineSpec)("string",["off","on","opaque"]),uBumpFrequency:(0,n.UniformSpec)("f","material"),uBumpAmplitude:(0,n.UniformSpec)("f","material"),meta:(0,n.ValueSpec)("unknown"),...n.InteriorSchema,...n.AnimationSchema};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.MeshSchema},p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.MeshShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(M3)),M3}var D3={},Xj;function Yne(){return Xj||(Xj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PointsSchema=void 0,e.PointsRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=et();e.PointsSchema={...n.BaseSchema,...n.SizeSchema,aGroup:(0,n.AttributeSpec)("float32",1,0),aPosition:(0,n.AttributeSpec)("float32",3,0),dPointSizeAttenuation:(0,n.DefineSpec)("boolean"),dPointStyle:(0,n.DefineSpec)("str
4121ing",["square","circle","fuzzy"]),...n.AnimationSchema};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.PointsSchema},p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.PointsShaderCode,m=(0,r.createGraphicsRenderItem)(s,"points",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(D3)),D3}var I3={},Kj;function Qne(){return Kj||(Kj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.LinesSchema=void 0,e.LinesRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=et(),c=Kt();e.LinesSchema={...n.BaseSchema,...n.SizeSchema,aGroup:(0,n.AttributeSpec)("float32",1,0),aMapping:(0,n.AttributeSpec)("float32",2,0),aStart:(0,n.AttributeSpec)("float32",3,0),aEnd:(0,n.AttributeSpec)("float32",3,0),elements:(0,n.ElementsSpec)("uint32"),dLineSizeAttenuation:(0,n.DefineSpec)("boolean"),uDoubleSided:(0,n.UniformSpec)("b","material"),dFlipSided:(0,n.DefineSpec)("boolean"),stripCount:(0,n.ValueSpec)("number"),stripOffsets:(0,n.ValueSpec)("uint32"),...n.AnimationSchema};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.LinesSchema},p={...f,uObjectId:i.ValueCell.create(h),dLightCount:i.ValueCell.create(a.dLightCount),dColorMarker:i.ValueCell.create(a.dColorMarker)},u=c.LinesShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(I3)),I3}var w3={},Yj;function Zne(){return Yj||(Yj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SpheresSchema=void 0,e.SpheresRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=et();e.SpheresSchema={...n.BaseSchema,...n.SizeSchema,uTexDim:(0,n.UniformSpec)("v2"),tPositionGroup:(0,n.TextureSpec)("image-float32","rgba","float","nearest"),padding:(0,n.ValueSpec)("number"),uDoubleSided:(0,n.UniformSpec)("b","material"),dIgnoreLight:(0,n.DefineSpec)("boolean"),dCelShaded:(0,n.DefineSpec)("boolean"),dXrayShaded:(0,n.DefineSpec)("string",["off","on","inverted"]),dTransparentBackfaces:(0,n.DefineSpec)("string",["off","on","opaque"]),dSolidInterior:(0,n.DefineSpec)("boolean"),dClipPrimitive:(0,n.DefineSpec)("boolean"),dApproximate:(0,n.DefineSpec)("boolean"),uAlphaThickness:(0,n.UniformSpec)("f"),uBumpFrequency:(0,n.UniformSpec)("f","material"),uBumpAmplitude:(0,n.UniformSpec)("f","material"),lodLevels:(0,n.ValueSpec)("unknown"),centerBuffer:(0,n.ValueSpec)("float32"),groupBuffer:(0,n.ValueSpec)("float32"),...n.InteriorSchema,...n.AnimationSchema};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.SpheresSchema},p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.SpheresShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(w3)),w3}var V3={},Qj;function Jne(){return Qj||(Qj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.TextSchema=void 0,e.TextRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=et();e.TextSchema={...n.BaseSchema,...n.SizeSchema,aGroup:(0,n.AttributeSpec)("float32",1,0),aPosition:(0,n.AttributeSpec)("float32",3,0),aMapping:(0,n.AttributeSpec)("float32",2,0),aDepth:(0,n.AttributeSpec)("float32",1,0),elements:(0,n.ElementsSpec)("uint32"),aTexCoord:(0,n.AttributeSpec)("float32",2,0),tFont:(0,n.TextureSpec)("image-uint8","alpha","ubyte","linear"),padding:(0,n.ValueSpec)("number"),uBorderWidth:(0,n.UniformSpec)("f","material"),uBorderColor:(0,n.UniformSpec)("v3","material"),uOffsetX:(0,n.UniformSpec)("f","material"),uOffsetY:(0,n.UniformSpec)("f","material"),uOffsetZ:(0,n.UniformSpec)("f","material"),uBackgroundColor:(0,n.UniformSpec)("v3","material"),uBackgroundOpacity:(0,n.UniformSpec)("f","material")};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.TextSchema},p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.TextShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(V3)),V3}var E3={},Zj;function eie(){return Zj||(Zj=1,(function(e){Object.defineProperty(e,"__esMo
4121dule",{value:!0}),e.TextureMeshSchema=void 0,e.TextureMeshRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=et();e.TextureMeshSchema={...n.BaseSchema,uGeoTexDim:(0,n.UniformSpec)("v2","buffered"),tPosition:(0,n.TextureSpec)("texture","rgb","float","nearest"),tGroup:(0,n.TextureSpec)("texture","alpha","float","nearest"),tNormal:(0,n.TextureSpec)("texture","rgb","float","nearest"),dVaryingGroup:(0,n.DefineSpec)("boolean"),dFlatShaded:(0,n.DefineSpec)("boolean"),uDoubleSided:(0,n.UniformSpec)("b","material"),dFlipSided:(0,n.DefineSpec)("boolean"),dIgnoreLight:(0,n.DefineSpec)("boolean"),dCelShaded:(0,n.DefineSpec)("boolean"),dXrayShaded:(0,n.DefineSpec)("string",["off","on","inverted"]),dTransparentBackfaces:(0,n.DefineSpec)("string",["off","on","opaque"]),uBumpFrequency:(0,n.UniformSpec)("f","material"),uBumpAmplitude:(0,n.UniformSpec)("f","material"),meta:(0,n.ValueSpec)("unknown"),...n.InteriorSchema,...n.AnimationSchema};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.TextureMeshSchema},p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.MeshShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(E3)),E3}var B3={},Jj;function tie(){return Jj||(Jj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ImageSchema=void 0,e.ImageRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=Kr();e.ImageSchema={...n.BaseSchema,aGroup:(0,n.AttributeSpec)("float32",1,0),aPosition:(0,n.AttributeSpec)("float32",3,0),aUv:(0,n.AttributeSpec)("float32",2,0),elements:(0,n.ElementsSpec)("uint32"),uImageTexDim:(0,n.UniformSpec)("v2"),tImageTex:(0,n.TextureSpec)("image-uint8","rgba","ubyte","nearest"),tGroupTex:(0,n.TextureSpec)("image-uint8","rgba","ubyte","nearest"),tValueTex:(0,n.TextureSpec)("image-float32","alpha","float","linear"),uTrimType:(0,n.UniformSpec)("i"),uTrimCenter:(0,n.UniformSpec)("v3"),uTrimRotation:(0,n.UniformSpec)("q"),uTrimScale:(0,n.UniformSpec)("v3"),uTrimTransform:(0,n.UniformSpec)("m4"),uIsoLevel:(0,n.UniformSpec)("f"),dInterpolation:(0,n.DefineSpec)("string",["nearest","catmulrom","mitchell","bspline"])};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.ImageSchema},p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.ImageShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(B3)),B3}var R3={},e5;function rie(){return e5||(e5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CylindersSchema=void 0,e.CylindersRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=et();e.CylindersSchema={...n.BaseSchema,...n.SizeSchema,aGroup:(0,n.AttributeSpec)("float32",1,0),aStart:(0,n.AttributeSpec)("float32",3,0),aEnd:(0,n.AttributeSpec)("float32",3,0),aMapping:(0,n.AttributeSpec)("float32",3,0),aScale:(0,n.AttributeSpec)("float32",1,0),aCap:(0,n.AttributeSpec)("float32",1,0),aColorMode:(0,n.AttributeSpec)("float32",1,0),elements:(0,n.ElementsSpec)("uint32"),padding:(0,n.ValueSpec)("number"),uDoubleSided:(0,n.UniformSpec)("b","material"),dIgnoreLight:(0,n.DefineSpec)("boolean"),dCelShaded:(0,n.DefineSpec)("boolean"),dXrayShaded:(0,n.DefineSpec)("string",["off","on","inverted"]),dTransparentBackfaces:(0,n.DefineSpec)("string",["off","on","opaque"]),dSolidInterior:(0,n.DefineSpec)("boolean"),uBumpFrequency:(0,n.UniformSpec)("f","material"),uBumpAmplitude:(0,n.UniformSpec)("f","material"),dDualColor:(0,n.DefineSpec)("boolean"),...n.InteriorSchema,...n.AnimationSchema};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.CylindersSchema},p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.CylindersShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(R3)),R3}var t5;function ds(){if(t5)return Du;
4121t5=1,Object.defineProperty(Du,"__esModule",{value:!0}),Du.getNextMaterialId=void 0,Du.createRenderObject=g,Du.createRenderable=a;const e=Yn(),t=Xne(),r=Kne(),n=Yne(),i=Qne(),c=Zne(),o=Jne(),s=eie(),h=tie(),f=rie(),y=Gt(),_=(0,e.idFactory)(0,2147483647);Du.getNextMaterialId=(0,e.idFactory)(0,2147483647);function g(d,p,u,m){return{id:_(),type:d,values:p,state:u,materialId:m}}function a(d,p,u,m){switch(p.type){case"mesh":return(0,r.MeshRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"points":return(0,n.PointsRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"spheres":return(0,c.SpheresRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"cylinders":return(0,f.CylindersRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"text":return(0,o.TextRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"lines":return(0,i.LinesRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"direct-volume":return(0,t.DirectVolumeRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"image":return(0,h.ImageRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"texture-mesh":return(0,s.TextureMeshRenderable)(d,p.id,p.values,p.state,p.materialId,u,m)}(0,y.assertUnreachable)(p.type)}return Du}var r5;function SQ(){if(r5)return yu;r5=1,Object.defineProperty(yu,"__esModule",{value:!0}),yu.ShapeGroup=yu.Shape=void 0;const e=et(),t=at(),r=Ll(),n=Ge(),i=rt(),c=rS(),o=_Q(),s=CQ(),h=kl(),f=ds(),y=zt();var _;(function(a){function d(S,T,A,x,M,D,V,R){return{id:e.UUID.create22(),name:S,sourceData:T,geometry:A,transforms:V||[n.Mat4.identity()],get groupCount(){return R??r.Geometry.getGroupCount(A)},getColor:x,getSize:M,getLabel:D}}a.create=d;function p(S){return{color:(0,s.ShapeGroupColorTheme)({shape:S},{}),size:(0,o.ShapeGroupSizeTheme)({shape:S},{})}}a.getTheme=p;function u(S){const T=S.transforms.length,A=g.Location(S),x=(M,D)=>(A.group=M,A.instance=D,A);return(0,y.LocationIterator)(S.groupCount,T,1,x)}a.groupIterator=u;function m(S,T,A,x,M){const D=M&&M.aTransform.ref.value.length>=S.length*16?M.aTransform.ref.value:new Float32Array(S.length*16);for(let V=0,R=S.length;V<R;++V)n.Mat4.toArray(S[V],D,V*16);return(0,h.createTransform)(D,S.length,T,A,x,M)}a.createTransform=m;function v(S,T){const A=p(S),x=r.Geometry.getUtils(S.geometry),M=(0,f.getNextMaterialId)(),D=u(S),V=m(S.transforms,S.geometry.boundingSphere,T.cellSize,T.batchSize),R=x.createValues(S.geometry,V,D,A,T),E=x.createRenderableState(T);return(0,f.createRenderObject)(S.geometry.kind,R,E,M)}a.createRenderObject=v;function b(S){return{kind:"shape-loci",shape:S}}a.Loci=b;function P(S){return!!S&&S.kind==="shape-loci"}a.isLoci=P;function C(S,T){return S.shape===T.shape}a.areLociEqual=C;function l(S){return S.shape.groupCount===0}a.isLociEmpty=l})(_||(yu.Shape=_={}));var g;return(function(a){function d(x,M=0,D=0){return{kind:"group-location",shape:x,group:M,instance:D}}a.Location=d;function p(x){return!!x&&x.kind==="group-location"}a.isLocation=p;function u(x,M){return{kind:"group-loci",shape:x,groups:M}}a.Loci=u;function m(x){return!!x&&x.kind==="group-loci"}a.isLoci=m;function v(x,M){if(x.shape!==M.shape||x.groups.length!==M.groups.length)return!1;for(let D=0,V=x.groups.length;D<V;++D){const{ids:R,instance:E}=x.groups[D],{ids:I,instance:B}=M.groups[D];if(E!==B||!t.OrderedSet.areEqual(R,I))return!1}return!0}a.areLociEqual=v;function b(x){return P(x)===0}a.isLociEmpty=b;function P(x){let M=0;for(const D of x.groups)M+=t.OrderedSet.size(D.ids);return M}a.size=P;const C=new c.CentroidHelper,l=n.Vec3.zero();function S(x,M,D,V){const{indices:R,offsets:E}=M;for(const{ids:I,instance:B}of x)t.OrderedSet.forEach(I,w=>{for(let O=E[w],F=E[w+1];O<F;++O)n.Vec3.fromArray(l,D,R[O]*3),n.Vec3.transformMat4(l,l,V[B]),C.includeStep(l)})}function T(x,M,D,V){const{indices:R,offsets:E}=M;for(const{ids:I,instance:B}of x)t.OrderedSet.forEach(I,w=>{for(let O=E[w],F=E[w+1];O<F;++O)n.Vec3.fromArray(l,D,R[O]*3),n.Vec3.transformMat4(l,l,V[B]),C.radiusStep(l)})}function A(x,M){M||(M=(0,i.Sphere3D)()),C.reset();let D=0;const{geometry:V,transforms:R}=x.shape;if(V.kind==="mesh"||V.kind==="points"){const E=V.kind==="mesh"?V.vertexBuffer.ref.value:V.centerBuffer.ref.value;S(x.groups,V.groupMapping,E,R),C.finishedIncludeStep(),T(x.groups,V.groupMapping,E,R)}else if(V.kind==="lines"){const E=V.startBuffer.ref.value,I=V.endBuffer.ref.value;S(x.groups,V.groupMapping,E,R),S(x.groups,V.groupMapping,I,R),C.finishedIncludeStep(),T(x.groups,V.groupMapping,E,R),T(x.groups,V.groupMapping,I,R)}else if(V.kind==="spheres"||V.kind==="text"){const E=V.centerBuffer.ref.value;S(x.groups,V.groupMapping,E,R),C.finishedIncludeStep(),T(x.groups,V.groupMapping,E,R);for(const{ids:I,instance:B}of x.groups)t.OrderedSet.forEach(I,w=>{const O=x.shape.getSize(w,B);D<O&&(D=O)})}else return i.Sphere3D.copy(M,V.boundingSphere);return n.Vec3.copy(M.center,C.center),M.radius=Math.sqrt(C.radiusSq),i.Sphere3D.expand(M,M,D),M}a.getBoundingSphere=A})(g||(yu.ShapeGroup=g={})),yu}var n5;function pn(){return n5||(n5=1,(function(e){Object.defineProperty(e,"__esMo
4121dule",{value:!0}),At.__exportStar(SQ(),e)})(h3)),h3}var i5;function CQ(){return i5||(i5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ShapeGroupColorThemeProvider=e.ShapeGroupColorThemeParams=void 0,e.getShapeGroupColorThemeParams=s,e.ShapeGroupColorTheme=h;const t=vt(),r=pn(),n=Ne(),i=Ut(),c=(0,t.Color)(13421772),o="Assigns colors as defined by the shape object.";e.ShapeGroupColorThemeParams={};function s(f){return e.ShapeGroupColorThemeParams}function h(f,y){return{factory:h,granularity:"groupInstance",color:_=>r.ShapeGroup.isLocation(_)?_.shape.getColor(_.group,_.instance):c,props:y,description:o}}e.ShapeGroupColorThemeProvider={name:"shape-group",label:"Shape Group",category:i.ColorThemeCategory.Misc,factory:h,getParams:s,defaultValues:n.ParamDefinition.getDefaultValues(e.ShapeGroupColorThemeParams),isApplicable:f=>!!f.shape}})(p3)),p3}var O3={},a5;function PQ(){return a5||(a5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.UncertaintyColorThemeProvider=e.UncertaintyColorThemeParams=void 0,e.getUncertaintyColorThemeParams=s,e.getUncertainty=h,e.UncertaintyColorTheme=f;const t=vt(),r=Ke(),n=Ne(),i=Ut(),c=(0,t.Color)(16777113),o="Assigns a color based on the uncertainty or disorder of an element's position, e.g. B-factor or RMSF, depending on the data availability and experimental technique.";e.UncertaintyColorThemeParams={domain:n.ParamDefinition.Interval([0,100]),list:n.ParamDefinition.ColorList("red-white-blue",{presetKind:"scale"})};function s(y){return e.UncertaintyColorThemeParams}function h(y,_){return r.Unit.isAtomic(y)?y.model.atomicConformation.B_iso_or_equiv.value(_):r.Unit.isSpheres(y)?y.model.coarseConformation.spheres.rmsf[_]:0}function f(y,_){let g;_.list.kind==="set"?g=t.ColorScale.createDiscrete({reverse:!0,domain:_.domain,listOrName:_.list.colors}):g=t.ColorScale.create({reverse:!0,domain:_.domain,listOrName:_.list.colors});function a(d){return r.StructureElement.Location.is(d)?g.color(h(d.unit,d.element)):r.Bond.isLocation(d)?g.color(h(d.aUnit,d.aUnit.elements[d.aIndex])):c}return{factory:f,granularity:"group",preferSmoothing:!0,color:a,props:_,description:o,legend:g?g.legend:void 0}}e.UncertaintyColorThemeProvider={name:"uncertainty",label:"Uncertainty/Disorder",category:i.ColorThemeCategory.Atom,factory:f,getParams:s,defaultValues:n.ParamDefinition.getDefaultValues(e.UncertaintyColorThemeParams),isApplicable:y=>!!y.structure&&y.structure.models.some(_=>_.atomicConformation.B_iso_or_equiv.isDefined||_.coarseHierarchy.isDefined)}})(O3)),O3}var k3={},o5;function nie(){return o5||(o5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.IllustrativeColorThemeProvider=e.IllustrativeColorThemeParams=void 0,e.getIllustrativeColorThemeParams=u,e.IllustrativeColorTheme=v;const t=vt(),r=Ke(),n=Ne(),i=Uf(),c=wS(),o=Gt(),s=ES(),h=s2(),f=BS(),y=RS(),_=OS(),g=Ut(),a=o2(),d=(0,t.Color)(15658734),p="Assigns an illustrative color that gives every chain a color based on the chosen style but with lighter carbons (inspired by David Goodsell's Molecule of the Month style).";e.IllustrativeColorThemeParams={style:n.ParamDefinition.MappedStatic("entity-id",{uniform:n.ParamDefinition.Group(c.UniformColorThemeParams),"chain-id":n.ParamDefinition.Group(i.ChainIdColorThemeParams),"entity-id":n.ParamDefinition.Group(s.EntityIdColorThemeParams),"entity-source":n.ParamDefinition.Group(f.EntitySourceColorThemeParams),"molecule-type":n.ParamDefinition.Group(h.MoleculeTypeColorThemeParams),"model-index":n.ParamDefinition.Group(y.ModelIndexColorThemeParams),"structure-index":n.ParamDefinition.Group(_.StructureIndexColorThemeParams),"trajectory-index":n.ParamDefinition.Group(a.TrajectoryIndexColorThemeParams)}),carbonLightness:n.ParamDefinition.Numeric(.8,{min:-6,max:6,step:.1})};function u(b){return n.ParamDefinition.clone(e.IllustrativeColorThemeParams)}function m(b,P){switch(P.name){case"uniform":return(0,c.UniformColorTheme)(b,P.params);case"chain-id":return(0,i.ChainIdColorTheme)(b,P.params);case"entity-id":return(0,s.EntityIdColorTheme)(b,P.params);case"entity-source":return(0,f.EntitySourceColorTheme)(b,P.params);case"molecule-type":return(0,h.MoleculeTypeColorTheme)(b,P.params);case"model-index":return(0,y.ModelIndexColorTheme)(b,P.params);case"structure-index":return(0,_.StructureIndexColorTheme)(b,P.params);case"trajectory-index":return(0,a.TrajectoryIndexColorTheme)(b,P.params);default:(0,o.assertUnreachable)(P)}}function v(b,P){const{color:C,legend:l,contextHash:S}=m(b,P.style);function T(x,M){const D=C(x,!1);return M==="C"?t.Color.lighten(D,P.carbonLightness):D}function A(x){if(r.StructureElement.Location.is(x)&&r.Unit.isAtomic(x.unit)){const M=x.unit.model.atomicHierarchy.atoms.type_symbol.value(x.element);return T(x,M)}else if(r.Bond.isLocation(x)&&r.Unit.isAtomic(x.aUnit)){const M=x.aUnit.elements[x.aIndex],D=x.aUnit.model.atomicHierarchy.atoms.type_symbol.value(M);return T(x,D)}return d}return{factory:v,granularity:"group",preferSmoothing:!0,color:A,props:P,contextHash:S,description:p,legend:l}}e.IllustrativeColorThemeProvider={name:"illustrative",label:"Illustrative",category:g.ColorThemeCategory.Misc,factory:v,getParams:u,defaultValues:n.ParamDefinition.getDefaultValues(e.IllustrativeColorThemeParams),isApplicable:b=>!!b.structure}}
4121)(k3)),k3}var F3={},s5;function TQ(){return s5||(s5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.HydrophobicityColorThemeProvider=e.HydrophobicityColorThemeParams=void 0,e.getHydrophobicityColorThemeParams=s,e.hydrophobicity=f,e.HydrophobicityColorTheme=g;const t=vt(),r=Ke(),n=Ne(),i=dt(),c=Ut(),o='Assigns a color to every amino acid according to the "Experimentally determined hydrophobicity scale for proteins at membrane interfaces" by Wimely and White (doi:10.1038/nsb1096-842).';e.HydrophobicityColorThemeParams={list:n.ParamDefinition.ColorList("red-yellow-green",{presetKind:"scale"}),scale:n.ParamDefinition.Select("DGwif",[["DGwif","DG water-membrane"],["DGwoct","DG water-octanol"],["Oct-IF","DG difference"]])};function s(a){return e.HydrophobicityColorThemeParams}const h={DGwif:0,DGwoct:1,"Oct-IF":2};function f(a,d){const p=i.ResidueHydrophobicity[a];return p===void 0?0:p[d]}function y(a,d){return a.model.atomicHierarchy.atoms.label_comp_id.value(d)}function _(a,d){const p=a.coarseElements.seq_id_begin.value(d),u=a.coarseElements.seq_id_end.value(d);if(p===u){const m=a.coarseElements.entityKey[d];return a.model.sequence.byEntityKey[m].sequence.compId.value(p-1)}}function g(a,d){const p=h[d.scale];let u=1/0,m=-1/0;for(const P in i.ResidueHydrophobicity){const C=i.ResidueHydrophobicity[P][p];u=Math.min(u,C),m=Math.max(m,C)}const v=t.ColorScale.create({listOrName:d.list.colors,domain:[m,u],minLabel:"Hydrophilic",maxLabel:"Hydrophobic"});function b(P){let C;return r.StructureElement.Location.is(P)?r.Unit.isAtomic(P.unit)?C=y(P.unit,P.element):C=_(P.unit,P.element):r.Bond.isLocation(P)&&(r.Unit.isAtomic(P.aUnit)?C=y(P.aUnit,P.aUnit.elements[P.aIndex]):C=_(P.aUnit,P.aUnit.elements[P.aIndex])),v.color(C?f(C,p):0)}return{factory:g,granularity:"group",preferSmoothing:!0,color:b,props:d,description:o,legend:v?v.legend:void 0}}e.HydrophobicityColorThemeProvider={name:"hydrophobicity",label:"Hydrophobicity",category:c.ColorThemeCategory.Residue,factory:g,getParams:s,defaultValues:n.ParamDefinition.getDefaultValues(e.HydrophobicityColorThemeParams),isApplicable:a=>!!a.structure}})(F3)),F3}var L3={},c5;function xQ(){return c5||(c5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.OccupancyColorThemeProvider=e.OccupancyColorThemeParams=void 0,e.getOccupancyColorThemeParams=s,e.getOccupancy=h,e.OccupancyColorTheme=f;const t=vt(),r=Ke(),n=Ne(),i=Ut(),c=(0,t.Color)(13421772),o="Assigns a color based on the occupancy of an atom.";e.OccupancyColorThemeParams={domain:n.ParamDefinition.Interval([0,1]),list:n.ParamDefinition.ColorList("purples",{presetKind:"scale"})};function s(y){return e.OccupancyColorThemeParams}function h(y,_){return r.Unit.isAtomic(y)?y.model.atomicConformation.occupancy.value(_):0}function f(y,_){const g=t.ColorScale.create({reverse:!1,domain:_.domain,listOrName:_.list.colors});function a(d){return r.StructureElement.Location.is(d)?g.color(h(d.unit,d.element)):r.Bond.isLocation(d)?g.color(h(d.aUnit,d.aUnit.elements[d.aIndex])):c}return{factory:f,granularity:"group",preferSmoothing:!0,color:a,props:_,description:o,legend:g?g.legend:void 0}}e.OccupancyColorThemeProvider={name:"occupancy",label:"Occupancy",category:i.ColorThemeCategory.Atom,factory:f,getParams:s,defaultValues:n.ParamDefinition.getDefaultValues(e.OccupancyColorThemeParams),isApplicable:y=>!!y.structure&&y.structure.models.some(_=>_.atomicConformation.occupancy.isDefined)}})(L3)),L3}var N3={},u5;function iie(){return u5||(u5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.OperatorHklColorThemeProvider=e.OperatorHklColorThemeParams=void 0,e.getOperatorHklColorThemeParams=g,e.OperatorHklColorTheme=v;const t=vt(),r=Ke(),n=Ne(),i=On(),c=Ge(),o=Df(),s=pa(),h=Ut(),f="dark-2",y=(0,t.Color)(13421772),_="Assigns a color based on the operator HKL value of a transformed chain.";
4121e.OperatorHklColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:f})};function g(b){const P=n.ParamDefinition.clone(e.OperatorHklColorThemeParams);return b.structure&&m(b.structure.root).map.size>s.ColorLists[f].list.length&&(P.palette.defaultValue.name="colors",P.palette.defaultValue.params={...P.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,s.getColorListFromName)(f).list}}),P}const a=1e4;function d(b){return b.map(P=>`${P+a}`.padStart(5,"0")).join("")}function p(b){const P=(0,o.integerDigitCount)(a,0),C=parseInt(b.substr(0,P)),l=parseInt(b.substr(P,P)),S=parseInt(b.substr(P+P,P));return c.Vec3.create(C-a,l-a,S-a)}function u(b){return b.map(P=>P+5).join("")}function m(b){const P=new Map,C=new Set;for(let A=0,x=b.units.length;A<x;++A){const M=d(b.units[A].conformation.operator.hkl);C.add(M)}const l=Array.from(C.values()).sort();l.forEach(A=>P.set(A,P.size));const S=p(l[0]),T=p(l[l.length-1]);return{min:S,max:T,map:P}}function v(b,P){let C,l;if(b.structure){const{min:S,max:T,map:A}=m(b.structure.root),x=[];A.forEach((V,R)=>{const E=V%A.size,I=u(p(R));x[E]===void 0?x[E]=I:x[E]+=`, ${I}`});const M={minLabel:u(S),maxLabel:u(T),valueLabel:V=>x[V]},D=(0,i.getPalette)(A.size,P,M);l=D.legend,C=V=>{let R;if(r.StructureElement.Location.is(V)){const E=d(V.unit.conformation.operator.hkl);R=A.get(E)}else if(r.Bond.isLocation(V)){const E=d(V.aUnit.conformation.operator.hkl);R=A.get(E)}return R===void 0?y:D.color(R)}}else C=()=>y;return{factory:v,granularity:"instance",color:C,props:P,description:_,legend:l}}e.OperatorHklColorThemeProvider={name:"operator-hkl",label:"Operator HKL",category:h.ColorThemeCategory.Symmetry,factory:v,getParams:g,defaultValues:n.ParamDefinition.getDefaultValues(e.OperatorHklColorThemeParams),isApplicable:b=>!!b.structure}})(N3)),N3}var q3={},T1={},l5;function c2(){if(l5)return T1;l5=1,Object.defineProperty(T1,"__esModule",{value:!0}),T1.AtomPartialCharge=void 0;const e=as();var t;return(function(r){r.Descriptor={name:"atom_partial_charge"},r.Provider=e.FormatPropertyProvider.create(r.Descriptor)})(t||(T1.AtomPartialCharge=t={})),T1}var d5;function AQ(){return d5||(d5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PartialChargeColorThemeProvider=e.PartialChargeColorThemeParams=void 0,e.getPartialChargeColorThemeParams=h,e.PartialChargeColorTheme=y;const t=vt(),r=Ke(),n=Ne(),i=c2(),c=Ut(),o=(0,t.Color)(16777113),s="Assigns a color based on the partial charge of an atom.";e.PartialChargeColorThemeParams={domain:n.ParamDefinition.Interval([-1,1]),list:n.ParamDefinition.ColorList("red-white-blue",{presetKind:"scale"})};function h(_){return e.PartialChargeColorThemeParams}function f(_,g){var a;return(a=i.AtomPartialCharge.Provider.get(_.model))===null||a===void 0?void 0:a.data.value(g)}function y(_,g){const a=t.ColorScale.create({domain:g.domain,listOrName:g.list.colors});function d(p){if(r.StructureElement.Location.is(p)){const u=f(p.unit,p.element);return u!==void 0?a.color(u):o}else if(r.Bond.isLocation(p)){const u=f(p.aUnit,p.aUnit.elements[p.aIndex]);return u!==void 0?a.color(u):o}return o}return{factory:y,granularity:"group",preferSmoothing:!0,color:d,props:g,description:s,legend:a?a.legend:void 0}}e.PartialChargeColorThemeProvider={name:"partial-charge",label:"Partial Charge",category:c.ColorThemeCategory.Atom,factory:y,getParams:h,defaultValues:n.ParamDefinition.getDefaultValues(e.PartialChargeColorThemeParams),isApplicable:_=>!!_.structure&&_.structure.models.some(g=>i.AtomPartialCharge.Provider.get(g)!==void 0)}})(q3)),q3}var U3={},f5;function aie(){return f5||(f5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.AtomIdColorThemeProvider=e.AtomIdColorThemeParams=void 0,e.getAtomIdColorThemeParams=f,e.AtomIdColorTheme=_;const t=Ke(),r=vt(),n=Ne(),i=On(),c=Ut(),o="many-distinct",s=(0,r.Color)(16448250),h="Gives every atom a color based on its `label_atom_id` value.";
4121e.AtomIdColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:o})};function f(g){return n.ParamDefinition.clone(e.AtomIdColorThemeParams)}function y(g){const a=new Map;for(const d of g.models){const{label_atom_id:p}=d.atomicHierarchy.atoms;for(let u=0,m=p.rowCount;u<m;++u){const v=p.value(u);a.has(v)||a.set(v,a.size)}}return a}function _(g,a){let d,p;if(g.structure){const u=t.StructureElement.Location.create(g.structure.root),m=y(g.structure.root),v=Array.from(m.keys()),b=C=>v[C],P=(0,i.getPalette)(m.size,a,{valueLabel:b});p=P.legend,d=C=>{let l;if(t.StructureElement.Location.is(C)){const S=t.StructureProperties.atom.label_atom_id(C);l=m.get(S)}else if(t.Bond.isLocation(C)){u.unit=C.aUnit,u.element=C.aUnit.elements[C.aIndex];const S=t.StructureProperties.atom.label_atom_id(u);l=m.get(S)}return l===void 0?s:P.color(l)}}else d=()=>s;return{factory:_,granularity:"group",preferSmoothing:!0,color:d,props:a,description:h,legend:p}}e.AtomIdColorThemeProvider={name:"atom-id",label:"Atom Id",category:c.ColorThemeCategory.Atom,factory:_,getParams:f,defaultValues:n.ParamDefinition.getDefaultValues(e.AtomIdColorThemeParams),isApplicable:g=>!!g.structure}})(U3)),U3}var j3={},m5;function oie(){return m5||(m5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.VolumeValueColorThemeProvider=e.VolumeValueColorThemeParams=void 0,e.getVolumeValueColorThemeParams=_,e.VolumeValueColorTheme=g;const t=ms(),r=Ne(),n=Vr(),i=oc(),c=Ut(),o=ir(),s=wn(),h=zf(),f=zt(),y="Assign color based on the given value of a volume cell.";e.VolumeValueColorThemeParams={colorList:r.ParamDefinition.ColorList({kind:"interpolate",colors:[[n.ColorNames.white,0],[n.ColorNames.red,.25],[n.ColorNames.white,.5],[n.ColorNames.blue,.75],[n.ColorNames.white,1]]},{offsets:!0,isEssential:!0}),domain:r.ParamDefinition.MappedStatic("auto",{custom:r.ParamDefinition.Interval([-1,1],{step:.001}),auto:r.ParamDefinition.Group({symmetric:r.ParamDefinition.Boolean(!1,{description:"If true the automatic range is determined as [-|max|, |max|]."})})}),isRelative:r.ParamDefinition.Boolean(!1,{description:"If true the value is treated as relative to the volume mean and sigma."}),defaultColor:r.ParamDefinition.Color((0,s.Color)(13421772))};function _(a){return e.VolumeValueColorThemeParams}function g(a,d){var p;if(a.volume){const{min:u,max:m,mean:v,sigma:b}=a.volume.grid.stats,P=d.domain.name==="custom"?d.domain.params:[u,m],{colorList:C,defaultColor:l}=d;if(d.domain.name==="auto"&&d.isRelative&&(P[0]=(P[0]-v)/b,P[1]=(P[1]-v)/b),d.domain.name==="auto"&&d.domain.params.symmetric){const S=Math.max(Math.abs(P[0]),Math.abs(P[1]));P[0]=-S,P[1]=S}if(!((p=a.locationKinds)===null||p===void 0)&&p.includes("direct-location")){const S=[(0,o.normalize)(P[0],u,m),(0,o.normalize)(P[1],u,m)],T=t.ColorTheme.Palette(C.colors,C.kind,S,l);return{factory:g,granularity:"direct",props:d,description:y,palette:T}}else{const S=h.Grid.makeGetTrilinearlyInterpolated(a.volume.grid,"none"),T=x=>{if(!(0,f.isPositionLocation)(x))return d.defaultColor;const M=S(x.position);return Number.isNaN(M)?d.defaultColor:(0,o.clamp)((M-P[0])/(P[1]-P[0]),0,1)*t.ColorTheme.PaletteScale},A=t.ColorTheme.Palette(C.colors,C.kind,void 0,l);return{factory:g,granularity:"vertex",preferSmoothing:!0,color:T,palette:A,props:d,description:y}}}else return{factory:g,granularity:"uniform",color:()=>d.defaultColor,props:d,description:y}}e.VolumeValueColorThemeProvider={name:"volume-value",label:"Volume Value",category:c.ColorThemeCategory.Misc,factory:g,getParams:_,defaultValues:r.ParamDefinition.getDefaultValues(e.VolumeValueColorThemeParams),isApplicable:a=>!!a.volume&&!i.Volume.Segmentation.get(a.volume)}})(j3)),j3}var G3={},p5;function sie(){return p5||(p5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.VolumeSegmentColorThemeProvider=e.VolumeSegmentColorThemeParams=void 0,e.getVolumeSegmentColorThemeParams=h,e.VolumeSegmentColorTheme=f;const t=vt(),r=Ne(),n=On(),i=oc(),c=Ut(),o=(0,t.Color)(13421772),s="Gives every volume segment a unique color.";
4121e.VolumeSegmentColorThemeParams={...(0,n.getPaletteParams)({type:"colors",colorList:"many-distinct"})};function h(y){return r.ParamDefinition.clone(e.VolumeSegmentColorThemeParams)}function f(y,_){let g,a;const d=y.volume&&i.Volume.Segmentation.get(y.volume);if(d){const p=d.segments.size,u=Array.from(d.segments.keys()),m=(0,n.getPalette)(p,_);a=m.legend,g=v=>i.Volume.Segment.isLocation(v)?m.color(u.indexOf(v.segment)):o}else g=()=>o;return{factory:f,granularity:"instance",color:g,props:_,description:s,legend:a}}e.VolumeSegmentColorThemeProvider={name:"volume-segment",label:"Volume Segment",category:c.ColorThemeCategory.Misc,factory:f,getParams:h,defaultValues:r.ParamDefinition.getDefaultValues(e.VolumeSegmentColorThemeParams),isApplicable:y=>!!y.volume&&!!i.Volume.Segmentation.get(y.volume)}})(G3)),G3}var z3={},x1={},H3={},A1={},M1={},D1={},I1={},h5;function MQ(){if(h5)return I1;h5=1,Object.defineProperty(I1,"__esModule",{value:!0}),I1.StateAction=void 0;const e=et(),t=Ne();var r;return(function(n){function i(s){const h={create(f){return{action:h,params:f}},id:e.UUID.create22(),definition:s,createDefaultParams(f,y){return s.params?t.ParamDefinition.getDefaultValues(s.params(f,y)):{}}};return h}n.create=i;function c(s){const h=s.definition;return i({from:h.from,display:h.display,params:h.params,isApplicable:s.definition.isApplicable?(f,y,_)=>s.definition.isApplicable(f,_):void 0,run({cell:f,state:y,params:_}){const g=y.build().to(f.transform.ref).apply(s,_);return y.updateTree(g)}})}n.fromTransformer=c;let o;(function(s){function h(f){return y=>i({from:f.from instanceof Array?f.from:f.from?[f.from]:[],display:typeof f.display=="string"?{name:f.display}:f.display?f.display:{name:"Unnamed State Action"},params:typeof f.params=="object"?()=>f.params:f.params?f.params:void 0,isApplicable:f.isApplicable,...typeof y=="function"?{run:y}:y})}s.build=f=>h(f)})(o=n.Builder||(n.Builder={})),n.build=o.build})(r||(I1.StateAction=r={})),I1}var g5;function u2(){if(g5)return D1;g5=1,Object.defineProperty(D1,"__esModule",{value:!0}),D1.StateTransformer=void 0;const e=sc(),t=Ne(),r=MQ(),n=ui(),i=Ct();var c;return(function(o){function s(C,l,S){return C.definition.params?C.definition.params(l,S):{}}o.getParamDefinition=s;function h(C){return!!C&&typeof C.toAction=="function"&&typeof C.apply=="function"}o.is=h;let f;(function(C){C[C.Unchanged=0]="Unchanged",C[C.Updated=1]="Updated",C[C.Recreate=2]="Recreate",C[C.Null=3]="Null"})(f=o.UpdateResult||(o.UpdateResult={}));const y=new Map,_=new Map;function g(C){for(const l of C.definition.from)if(_.has(l.type)){const S=_.get(l.type);for(let T=0;T<S.length;T++)if(S[T].id===C.id){S[T]=C;return}S.push(C)}else _.set(l.type,[C])}function a(){return Array.from(y.values())}o.getAll=a;function d(C){const l=y.get(C);if(!l)throw new Error(`A transformer with signature '${C}' is not registered.`);return l}o.get=d;function p(C){return _.get(C)||[]}o.fromType=p;function u(C,l){const{name:S}=l,T=`${C}.${S}`;if(y.has(T)){if(y.get(T).definition===l)return y.get(T);i.isProductionMode||console.warn(`A transform with id '${S}' is already registered. Please pick a unique identifier for your transforms and/or register them only once. This is to ensure that transforms can be serialized and replayed.`)}const A={apply(x,M,D){return e.StateTransform.create(x,A,M,D)},toAction(){return r.StateAction.fromTransformer(A)},namespace:C,id:T,definition:l,createDefaultParams(x,M){return l.params?t.ParamDefinition.getDefaultValues(l.params(x,M)):{}}};return y.set(T,A),g(A),A}o.create=u;function m(C){return l=>u(C,l)}o.factory=m;function v(C){return b.build(C)}o.builderFactory=v;let b;(function(C){function l(T,A){return x=>u(T,{name:A.name,from:A.from instanceof Array?A.from:[A.from],to:A.to instanceof Array?A.to:[A.to],display:typeof A.display=="string"?{name:A.display}:A.display?A.display:{name:(0,n.capitalize)(A.name.replace(/[-]/g," "))},params:typeof A.params=="object"?()=>A.params:A.params?A.params:void 0,isDecorator:A.isDecorator,...x})}function S(T){return A=>l(T,A)}C.build=S})(b=o.Builder||(o.Builder={}));function P(C){return b.build(C)}o.build=P,o.ROOT=u("build-in",{name:"root",from:[],to:[],display:{name:"Root",description:"For internal use."},apply(){throw new Error("should never be applied")},update(){return f.Unchanged}})})(c||(D1.StateTransformer=c={})),D1}var y5;function sc(){if(y5)return M1;y5=1,Object.defineProperty(M1,"__esModule",{value:!0}),M1.StateTransform=void 0;const e=u2(),t=et(),r=Dn(),n=Ne(),i=Vt();var c;return(function(o){o.RootRef="-=root=-";function s(M,D){return D?typeof D.isCollapsed<"u"&&M.isCollapsed!==D.isCollapsed||t
4121ypeof D.isHidden<"u"&&M.isHidden!==D.isHidden||typeof D.isGhost<"u"&&M.isGhost!==D.isGhost||typeof D.isLocked<"u"&&M.isLocked!==D.isLocked:!1}o.isStateChange=s;function h(M,D){if(!D)return!1;let V=!1;for(const R of Object.keys(D)){const E=D[R],I=M[R];!!E!=!!I&&(V=!0,M[R]=E)}return V}o.assignState=h;function f(M,D){if(!D)return!1;let V=!1;for(const R of Object.keys(D)){const E=D[R],I=M[R];!!E!=!!I&&(V=!0,E!==void 0?M[R]=E:delete M[R])}for(const R of Object.keys(M)){const E=D[R],I=M[R];!!E!=!!I&&(V=!0,E!==void 0?M[R]=E:delete M[R])}return V}o.syncState=f;function y(M,D,V,R){const E=R&&R.ref?R.ref:t.UUID.create22();let I;return R&&R.tags&&(I=typeof R.tags=="string"?[R.tags]:R.tags,I.length===0?I=void 0:I.sort()),{parent:M,transformer:D,state:R?.state||{},tags:I,ref:E,dependsOn:R&&R.dependsOn,params:V,version:t.UUID.create22()}}o.create=y;function _(M,D){return{...M,params:D,version:t.UUID.create22()}}o.withParams=_;function g(M,D){return D?{...M,state:{...M.state,...D}}:M}o.withState=g;function a(M,D){let V;return D&&(V=typeof D=="str
4121ing"?[D]:D,V.length===0?V=void 0:V.sort()),{...M,tags:V,version:t.UUID.create22()}}o.withTags=a;function d(M,D){let V;return D&&(V=typeof D=="string"?[D]:D,V.length===0?V=void 0:V.sort()),{...M,dependsOn:V,version:t.UUID.create22()}}o.withDependsOn=d;function p(M,D){return{...M,parent:D,version:t.UUID.create22()}}o.withParent=p;function u(M){return y(o.RootRef,e.StateTransformer.ROOT,{},{ref:o.RootRef,state:M})}o.createRoot=u;function m(M,D){return M.tags?M.tags.indexOf(D)>=0:!1}o.hasTag=m;function v(M,D){if(!M.tags)return typeof D!="string"&&D.length===0;if(typeof D=="string")return m(M,D);for(const V of D)if(M.tags.indexOf(V)<0)return!1;return!0}o.hasTags=v;function b(M){const D=M;if(D._defaultSchemaSet)return D._defaultSchema;D._defaultSchemaSet=!0;try{const V=M.transformer.definition;V.params&&(D._defaultSchema=V.params(void 0,void 0))}catch{}return D._defaultSchema}o.tryGetDefaultParamDefinition=b;function P(M){const D=[];if(M.dependsOn)for(const E of M.dependsOn)(0,i.arraySetAdd)(D,E);const V=M.transformer.definition,R=M.params;if(V.getDependencies&&R)try{const E=V.getDependencies(R);if(E)for(const I of E)(0,i.arraySetAdd)(D,I)}catch{}if(R){const E=b(M);E?n.ParamDefinition.collectRefs(E,R,D):C(R,D)}return(0,i.arraySetRemove)(D,M.ref),(0,i.arraySetRemove)(D,o.RootRef),D}o.getEffectiveDependsOn=P;function C(M,D,V=0){if(!M||typeof M!="object"||V>6)return D;if(Array.isArray(M)){for(const E of M)C(E,D,V+1);return D}const R=M.ref;if(typeof R=="string"&&typeof M.getValue=="function")return(0,i.arraySetAdd)(D,R),D;for(const E of Object.keys(M))C(M[E],D,V+1);return D}const l={};function S(M){var D,V;let R;try{R=(0,r.hashMurmur128o)((D=M.params)!==null&&D!==void 0?D:l)}catch{const I=M.transformer.definition.customSerialization?M.transformer.definition.customSerialization.toJSON:T;R=(0,r.hashMurmur128o)(I((V=M.params)!==null&&V!==void 0?V:l))}M.version=R}o.setParamsHashVersion=S;function T(M){return M}function A(M){const D=M.transformer.definition.customSerialization?M.transformer.definition.customSerialization.toJSON:T;let V;for(const R of Object.keys(M.state))M.state[R]&&(V||(V={}),V[R]=!0);return{parent:M.parent,transformer:M.transformer.id,params:M.params?D(M.params):void 0,state:V,tags:M.tags,ref:M.ref,dependsOn:M.dependsOn,version:M.version}}o.toJSON=A;function x(M){const D=e.StateTransformer.get(M.transformer),V=D.definition.customSerialization?D.definition.customSerialization.fromJSON:T;return{parent:M.parent,transformer:D,params:M.params?V(M.params):void 0,state:M.state||{},tags:M.tags,ref:M.ref,dependsOn:M.dependsOn,version:M.version}}o.fromJSON=x})(c||(M1.StateTransform=c={})),M1}var w1={},v5;function DQ(){if(v5)return w1;v5=1,Object.defineProperty(w1,"__esModule",{value:!0}),w1.TransientTree=void 0;const e=Ff,t=sc(),r=xw(),n=vr(),i=Vt();class c{get childMutations(){return this._childMutations?this._childMutations:(this._childMutations=new Map,this._childMutations)}get dependencyMutations(){return this._dependencyMutations?this._dependencyMutations:(this._dependencyMutations=new Map,this._dependencyMutations)}changeNodes(){this.changedNodes||(this.changedNodes=!0,this.transforms=this.transforms.asMutable())}changeChildren(){this.changedChildren||(this.changedChildren=!0,this.children=this.children.asMutable())}changeDependencies(){this.changedDependencies||(this.changedDependencies=!0,this.dependencies=this.dependencies.asMutable())}get root(){return this.transforms.get(t.StateTransform.RootRef)}asTransient(){return this.asImmutable().asTransient()}addChild(g,a){if(this.changeChildren(),this.childMutations.has(g))this.childMutations.get(g).add(a);else{const d=this.children.get(g).asMutable();d.add(a),this.children.set(g,d),this.childMutations.set(g,d)}}removeChild(g,a){if(this.changeChildren(),this.childMutations.has(g))this.childMutations.get(g).remove(a);else{const d=this.children.get(g).asMutable();d.remove(a),this.children.set(g,d),this.childMutations.set(g,d)}}clearRoot(){const g=t.StateTransform.RootRef;if(this.children.get(g).size===0)return;this.changeChildren();const a=(0,e.OrderedSet)();this.children.set(g,a),this.childMutations.set(g,a)}mutateDependency(g,a,d){let p=this.dependencyMutations.get(g);if(!p){const u=this.dependencies.get(g);if(!u&&d==="remove")return;this.changeDependencies(),p=u?u.asMutable():(0,e.OrderedSet)().asMutable(),this.dependencyMutations.set(g,p),this.dependencies.set(g,p)}d==="add"?p.add(a):p.remove(a)}changeParent(g,a){y(this.transforms,g);const d=this.transforms.get(g);this.removeChild(d.parent,g),this.addChild(a,g),this.changeNodes(),this.transforms.set(g,t.StateTransform.withParent(d,a))}add(g){const a=g.ref;this.transforms.has(g.ref)&&this.transforms.get(g.ref).parent!==g.parent&&h(g.ref);const d=this.children.get(g.parent);if(d||f(g.parent),d.has(g.ref)||this.addChild(g.parent,g.ref),this.children.has(g.ref)||(this.changedChildren||(this.changedChildren=!0,this.children=this.children.asMutable()),this.children.set(g.ref,(0,e.OrderedSet)())),this.changeNodes(),this.transforms.set(a,g),g.depen
4121dsOn)for(const p of g.dependsOn)this.mutateDependency(p,a,"add");return this}setParams(g,a){y(this.transforms,g);const d=this.transforms.get(g);return(0,n.shallowEqual)(d.params,a)?!1:(this.changedNodes||(this.changedNodes=!0,this.transforms=this.transforms.asMutable()),this.transforms.set(d.ref,t.StateTransform.withParams(d,a)),!0)}setTags(g,a){y(this.transforms,g);const d=this.transforms.get(g),p=t.StateTransform.withTags(d,a);return(0,i.arrayEqual)(d.tags,p.tags)?!1:(this.changedNodes||(this.changedNodes=!0,this.transforms=this.transforms.asMutable()),this.transforms.set(d.ref,p),!0)}setDependsOn(g,a){y(this.transforms,g);const d=this.transforms.get(g),p=t.StateTransform.withDependsOn(d,a);return(0,i.arrayEqual)(d.dependsOn,p.dependsOn)?!1:(this.changedNodes||(this.changedNodes=!0,this.transforms=this.transforms.asMutable()),this.transforms.set(d.ref,p),!0)}assignState(g,a){y(this.transforms,g);const d=this.transforms.get(g);if(this._stateUpdates&&this._stateUpdates.has(g))return t.StateTransform.assignState(d.state,a),d;{this._stateUpdates||(this._stateUpdates=new Set),this._stateUpdates.add(d.ref),this.changeNodes();const p=t.StateTransform.withState(d,a);return this.transforms.set(g,p),p}}remove(g){const a=this.transforms.get(g);if(!a)return[];const d=r.StateTree.subtreePostOrder(this,a);if(g===t.StateTransform.RootRef){if(d.pop(),d.length===0)return d;this.clearRoot()}else{if(d.length===0)return d;this.removeChild(a.parent,a.ref)}this.changeNodes(),this.changeChildren();for(const u of d)this.transforms.delete(u.ref),this.children.delete(u.ref),this._childMutations&&this._childMutations.delete(u.ref);const p=[];for(const u of d){if(u.dependsOn)for(const m of u.dependsOn)this.transforms.has(m)&&this.mutateDependency(m,u.ref,"remove");if(this.dependencies.has(u.ref)){const m=this.dependencies.get(u.ref).toArray();this.changeDependencies(),this.dependencies.delete(u.ref),this._dependencyMutations&&this._dependencyMutations.delete(u.ref);for(const v of m)if(this.transforms.has(v))for(const b of this.remove(v))p[p.length]=b}}for(const u of p)d[d.length]=u;return d}asImmutable(){return!this.changedNodes&&!this.changedChildren&&!this._childMutations?this.tree:(this._childMutations&&this._childMutations.forEach(o,this.children),this._dependencyMutations&&this._dependencyMutations.forEach(s,this.dependencies),r.StateTree.create(this.changedNodes?this.transforms.asImmutable():this.transforms,this.changedChildren?this.children.asImmutable():this.children,this.changedDependencies?this.dependencies.asImmutable():this.dependencies))}constructor(g){this.tree=g,this.transforms=this.tree.transforms,this.children=this.tree.children,this.dependencies=this.tree.dependencies,this.changedNodes=!1,this.changedChildren=!1,this.changedDependencies=!1,this._childMutations=void 0,this._dependencyMutations=void 0,this._stateUpdates=void 0}}w1.TransientTree=c;function o(_,g){this.set(g,_.asImmutable())}function s(_,g){_.size===0?this.delete(g):this.set(g,_.asImmutable())}function h(_){throw new Error(`Transform '${_}' is already present in the tree.`)}function f(_){throw new Error(`Parent '${_}' must be present in the tree.`)}function y(_,g){if(!_.has(g))throw new Error(`Node '${g}' is not present in the tree.`)}return w1}var b5;function xw(){if(b5)return A1;b5=1,Object.defineProperty(A1,"__esModule",{value:!0}),A1.StateTree=void 0;const e=Ff,t=sc(),r=DQ();var n;return(function(i){class c{get root(){return this.transforms.get(t.StateTransform.RootRef)}asTransient(){return new r.TransientTree(this)}constructor(x,M,D){this.transforms=x,this.children=M,this.dependencies=D}}function o(A){const x=A||t.StateTransform.createRoot();return s((0,e.Map)([[x.ref,x]]),(0,e.Map)([[x.ref,(0,e.OrderedSet)()]]),(0,e.Map)())}i.createEmpty=o;function s(A,x,M){return new c(A,x,M)}i.create=s;function h(A){f(this,this.tree.transforms.get(A))}function f(A,x){const M=A.tree.children.get(x.ref);M&&M.size&&M.forEach(h,A),A.f(x,A.tree,A.state)}function y(A,x,M,D){const V={tree:A,state:M,f:D};return f(V,x),V.state}i.doPostOrder=y;function _(A){g(this,this.tree.transforms.get(A))}function g(A,x){const M=A.f(x,A.tree,A.state);if(typeof M=="boolean"&&!M)return;const D=A.tree.children.get(x.ref);D&&D.size&&D.forEach(_,A)}function a(A,x,M,D){const V={tree:A,state:M,f:D};return g(V,x),V.state}i.doPreOrder=a;function d(A,x,M){M.push(A)}function p(A,x){return y(A,x,[],d)}i.subtreePostOrder=p;function u(A,x,M){M.push(t.StateTransform.toJSON(A))}function m(A){const x=[];return a(A,A.root,x,u),{transforms:x}}i.toJSON=m;function v(A){const x=(0,e.Map)().asMutable(),M=(0,e.Map)().asMutable(),D=(0,e.Map)().asMutable();for(const R of A.transforms){const E=t.StateTransform.fromJSON(R);
4121x.set(E.ref,E),M.has(E.ref)||M.set(E.ref,(0,e.OrderedSet)().asMutable()),E.ref!==E.parent&&M.get(E.parent).add(E.ref)}const V=new Set;for(const R of A.transforms){const E=R.ref;if(M.set(E,M.get(E).asImmutable()),!!R.dependsOn)for(const I of R.dependsOn)V.add(I),D.has(I)?D.get(I).add(E):D.set(I,(0,e.OrderedSet)([E]).asMutable())}return V.forEach(R=>{D.set(R,D.get(R).asImmutable())}),s(x.asImmutable(),M.asImmutable(),D.asImmutable())}i.fromJSON=v;function b(A){console.log({tr:A.transforms.keySeq().toArray(),tr1:A.transforms.valueSeq().toArray().map(x=>x.ref),ch:A.children.keySeq().toArray()})}i.dump=b;function P(A,x,M){if(x===M)return!0;const V=A.children.get(x).values();for(;;){const R=V.next();if(R.done)return!1;if(P(A,R.value,M))return!0}}function C(A,x,M){return!A.transforms.has(x)||!A.transforms.has(M)?!1:P(A,x,M)}i.subtreeHasRef=C;function l(A,x){const M=A.children.get(x);if(M.size!==1)return x;const D=A.transforms.get(M.first());return D?.transformer.definition.isDecorator?l(A,D.ref):x}i.getDecoratorRoot=l;function S(A,x){for(const M of x){const D=A.transforms.get(M);D&&t.StateTransform.setParamsHashVersion(D)}}i.setParamHashVersion=S;function T(A,x){const M=new Map(x.transforms.map(D=>[D.ref,D]));for(const D of A.transforms){const V=M.get(D.ref);V&&(D.transformer!==V.transformer||D.version!==V.version||(D.params=V.params))}}i.reuseTransformParams=T})(n||(A1.StateTree=n={})),A1}var _5;function Aw(){return _5||(_5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.TransientTree=e.StateTree=void 0;const t=xw();Object.defineProperty(e,"StateTree",{enumerable:!0,get:function(){return t.StateTree}});const r=DQ();Object.defineProperty(e,"TransientTree",{enumerable:!0,get:function(){return r.TransientTree}})})(H3)),H3}var S5;function l2(){if(S5)return x1;S5=1,Object.defineProperty(x1,"__esModule",{value:!0}),x1.StateSelection=void 0;const e=Aw(),t=sc();var r;return(function(n){function i(z,W){return c(z)(W)}n.select=i;function c(z){const W=z||g.root;let X;return s(W)?X=W.compile():o(W)?X=g.byValue(W).compile():h(W)?X=W:X=g.byRef(W).compile(),X}n.compile=c;function o(z){return z.transform!==void 0&&z.status!==void 0}function s(z){return z.compile!==void 0}function h(z){return typeof z=="function"}const f={select(z){return i(this,z||this.state)}};function y(z,W){f[z]=function(...X){return W.call(void 0,this,...X)}}function _(z){return Object.create(f,{compile:{writable:!1,configurable:!1,value:z}})}let g;(function(z){z.root=_(()=>ie=>[ie.cells.get(ie.tree.root.ref)]);function W(...ie){return _(()=>Z=>{const re=[];for(const oe of ie){const ce=Z.cells.get(oe);ce&&re.push(ce)}return re})}z.byRef=W;function X(...ie){return _(()=>Z=>ie)}z.byValue=X;function Y(ie,Z=t.StateTransform.RootRef){return _(()=>re=>{const oe={roots:[],cells:re.cells,type:ie.type};return e.StateTree.doPreOrder(re.tree,re.tree.transforms.get(Z),oe,ae),oe.roots})}z.rootsOfType=Y;function K(ie,Z=t.StateTransform.RootRef){return _(()=>re=>{const oe={ret:[],cells:re.cells,type:ie.type};return e.StateTree.doPreOrder(re.tree,re.tree.transforms.get(Z),oe,te),oe.ret})}z.ofType=K;function Q(ie,Z=t.StateTransform.RootRef){return _(()=>re=>{const oe={ret:[],cells:re.cells,t:ie};return e.StateTree.doPreOrder(re.tree,re.tree.transforms.get(Z),oe,ne),oe.ret})}z.ofTransformer=Q;function J(ie,Z=t.StateTransform.RootRef){return _(()=>re=>{const oe={ret:[],cells:re.cells,t:ie};return e.StateTree.doPreOrder(re.tree,re.tree.transforms.get(Z),oe,$),oe.ret})}z.ofTransformerWithError=J;function ae(ie,Z,re){const oe=re.cells.get(ie.ref);return oe&&oe.obj&&oe.obj.type===re.type?(re.roots.push(oe),!1):!0}function te(ie,Z,re){const oe=re.cells.get(ie.ref);return oe&&oe.obj&&oe.obj.type===re.type&&re.ret.push(oe),!0}function ne(ie,Z,re){const oe=re.cells.get(ie.ref);return oe&&oe.obj&&oe.transform.transformer===re.t&&re.ret.push(oe),!0}function $(ie,Z,re){const oe=re.cells.get(ie.ref);return oe&&oe.status==="error"&&oe.transform.transformer===re.t&&re.ret.push(oe),!0}})(g=n.Generators||(n.Generators={})),y("flatMap",a);function a(z,W){const X=c(z);return _(()=>Y=>{const K=[];for(const Q of X(Y))for(const J of W(Q,Y))K.push(J);return K})}n.flatMap=a,y("mapObject",d);function d(z,W){const X=c(z);return _(()=>Y=>{const K=[];for(const Q of X(Y)){const J=W(Q,Y);J&&K.push(J)}return K})}n.mapObject=d,y("unique",p);function p(z){const W=c(z);return _(()=>X=>{const Y=new Set,K=[];for(const Q of W(X))Q&&(Y.has(Q.transform.ref)||(Y.add(Q.transform.ref),K.push(Q
4121)));return K})}n.unique=p,y("first",u);function u(z){const W=c(z);return _(()=>X=>{const Y=W(X);return Y.length?[Y[0]]:[]})}n.first=u,y("filter",m);function m(z,W){return a(z,X=>W(X)?[X]:[])}n.filter=m,y("withStatus",v);function v(z,W){return m(z,X=>X.status===W)}n.withStatus=v,y("withTag",b);function b(z,W){return m(z,X=>!!X.transform.tags&&X.transform.tags.indexOf(W)>=0)}n.withTag=b,y("subtree",P);function P(z){return a(z,(W,X)=>{const Y=[];return e.StateTree.doPreOrder(X.tree,X.tree.transforms.get(W.transform.ref),Y,(K,Q,J)=>{J.push(K.ref)}),Y.map(K=>X.cells.get(K))})}n.subtree=P,y("children",C);function C(z){return a(z,(W,X)=>{const Y=[];return X.tree.children.get(W.transform.ref).forEach(K=>Y.push(X.cells.get(K))),Y})}n.children=C,y("ofType",l);function l(z,W){return m(z,X=>X.obj?X.obj.type===W.type:!1)}n.ofType=l,y("ancestor",S);function S(z,W){return p(d(z,(X,Y)=>E(Y.tree,Y.cells,X.transform.ref,W)))}n.ancestor=S,y("ancestorOfType",T);function T(z,W){return p(d(z,(X,Y)=>w(Y.tree,Y.cells,X.transform.ref,W)))}n.ancestorOfType=T,y("ancestorWithTransformer",A);function A(z,W){return p(d(z,(X,Y)=>B(Y.tree,Y.cells,X.transform.ref,W)))}n.ancestorWithTransformer=A,y("withTransformer",x);function x(z,W){return m(z,X=>X.transform.transformer===W)}n.withTransformer=x,y("root",M);function M(z,W){return p(d(z,(X,Y)=>I(Y.tree,Y.cells,X.transform.ref,W)))}n.root=M,y("rootOfType",D);function D(z,W){return p(d(z,(X,Y)=>O(Y.tree,Y.cells,X.transform.ref,W)))}n.rootOfType=D,y("parent",V);function V(z){return p(d(z,(W,X)=>X.cells.get(X.tree.transforms.get(W.transform.ref).parent)))}n.parent=V;function R(z,W,X,Y,K){let Q=z.transforms.get(X),J;for(;;){Q=z.transforms.get(Q.parent);const ae=W.get(Q.ref);if(ae.obj&&Y(ae)&&(J=ae,K)||Q.ref===t.StateTransform.RootRef)return J}}function E(z,W,X,Y){return R(z,W,X,Y,!0)}n.findAncestor=E;function I(z,W,X,Y){return R(z,W,X,Y,!1)}n.findRoot=I;function B(z,W,X,Y){return E(z,W,X,Array.isArray(Y)?K=>Y.indexOf(K.transform.transformer)>=0:K=>K.transform.transformer===Y)}n.findAncestorWithTransformer=B;function w(z,W,X,Y){return E(z,W,X,F(Y))}n.findAncestorOfType=w;function O(z,W,X,Y){return I(z,W,X,F(Y))}n.findRootOfType=O;function F(z){return Array.isArray(z)?W=>{for(const X of z)if(X.type===W.obj.type)return!0}:W=>W.obj.type===z.type}function L(z,W,X){return e.StateTree.doPreOrder(z,z.transforms.get(W),{refs:{},tags:X},U).refs}n.findUniqueTagsInSubtree=L;function U(z,W,X){if(z.tags){for(const Y of z.tags)if(X.tags.has(Y)){X.refs[Y]=z.ref;break}}return!0}function q(z,W,X){return e.StateTree.doPreOrder(z,z.transforms.get(W),{ref:void 0,tag:X},N).ref}n.findTagInSubtree=q;function N(z,W,X){return z.tags&&z.tags.indexOf(X.tag)>=0?(X.ref=z.ref,!1):!0}function k(z,W,X){return e.StateTree.doPreOrder(z,z.transforms.get(W),{refs:[],tags:X},j).refs}n.findWithAllTags=k;function j(z,W,X){if(z.tags){const Y=X.tags.size;let K=0;for(const Q of z.tags)if(X.tags.has(Q)&&(K++,K===Y)){X.refs.push(z);break}}else X.tags.size===0&&X.refs.push(z)}function H(z,W,X){if(z.transforms.get(W).transformer===X)return z.cells.get(W);const K=z.tree.children.get(W);if(K.size!==1)return;const Q=K.first();if(Q&&z.transforms.get(Q).transformer.definition.isDecorator)return H(z,Q,X)}n.tryFindDecorator=H;function G(z,W){const X=z.tree.children.get(W);if(X.size!==1)return z.cells.get(W);const Y=X.first();return Y&&z.transforms.get(Y).transformer.definition.isDecorator?G(z,Y):z.cells.get(W)}n.getDecorated=G})(r||(x1.StateSelection=r={})),x1}var Iu={},W3={},gi={},C5;function Mw(){if(C5)return gi;C5=1,Object.defineProperty(gi,"__esModule",{value:!0}),gi.StateObjectRef=gi.StateObjectSelector=gi.StateObjectTracker=gi.StateObjectCell=gi.StateObject=void 0;const e=et(),t=Et();var r;(function(s){function h(){return _=>f(_)}s.factory=h;function f(_){var g;return g=class{static is(d){return!!d&&_===d.type}constructor(d,p){this.data=d,this.id=e.UUID.create22(),this.type=_,this.label=p&&p.label||_.name,this.description=p&&p.description}},g.type=_,g}s.create=f;function y(_,g){if(!_.tags)return!1;for(const a of _.tags)if(a===g)return!0;return!1}s.hasTag=y,s.Null={id:e.UUID.create22(),type:{name:"Null",typeClass:"Null"},data:void 0,label:"Null"}})(r||(gi.StateObject=r={}));var n;(function(s){function h(y){const _=y;return!!_&&!!_.transform&&!!_.parent&&!!_.status}s.is=h;function f(y,_){const g=typeof _=="string"?_:s.is(_)?_.transform.ref:_.ref;return y.cells.get(g)}s.resolve=f})(n||(gi.StateObjectCell=n={}));
4121class i{setQuery(h){this.query=t.StateSelection.compile(h)}update(){const h=this.state.select(this.query)[0],f=h?h.transform.version:void 0,y=this.cell!==h||this.version!==f;return this.cell=h,this.version=f||"",this.data=h&&h.obj?h.obj.data:void 0,y}constructor(h){this.state=h,this.version=""}}gi.StateObjectTracker=i;class c{get cell(){var h;return(h=this.state)===null||h===void 0?void 0:h.cells.get(this.ref)}get obj(){var h,f;return(f=(h=this.state)===null||h===void 0?void 0:h.cells.get(this.ref))===null||f===void 0?void 0:f.obj}get data(){var h;return(h=this.obj)===null||h===void 0?void 0:h.data}update(h,f){if(!this.state)throw new Error("To use update() from StateObjectSelector, 'state' must be defined.");return f||(f=this.state.build()),(f||this.state.build()).to(this).update(h),f}checkValid(){if(!this.state)throw new Error("Unassigned State.");const h=this.cell;if(!h)throw new Error("Not created at all. Did you await/then the corresponding state update?");if(h.status==="ok")return!0;throw h.status==="error"?new Error(h.errorText):h.obj===r.Null?new Error("The object is Null."):new Error("Unresolved. Did you await/then the corresponding state update?")}get isOk(){const h=this.cell;return h&&h.status==="ok"&&h.obj!==r.Null}constructor(h,f){this.ref=h,this.state=f}}gi.StateObjectSelector=c;var o;return(function(s){function h(_){var g;if(_)return typeof _=="string"?_:n.is(_)?_.transform.ref:(g=_.cell)===null||g===void 0?void 0:g.transform.ref}s.resolveRef=h;function f(_,g){if(g)return n.is(g)?g:typeof g=="string"?_.cells.get(g):g.cell}s.resolve=f;function y(_,g){const a=f(_,g);if(!(!a||!a.obj||a.status!=="ok"))return a}s.resolveAndCheck=y})(o||(gi.StateObjectRef=o={})),gi}var Es={},V1={},P5;function Nl(){if(P5)return V1;P5=1,Object.defineProperty(V1,"__esModule",{value:!0}),V1.RxEventHelper=void 0;const e=Rn();var t;(function(n){function i(){const c=new r,o=(()=>c.create());return o.dispose=()=>c.dispose(),o.behavior=s=>c.behavior(s),o}n.create=i})(t||(V1.RxEventHelper=t={}));class r{constructor(){this._eventList=[],this._disposed=!1}create(){const i=new e.Subject;return this._eventList.push(i),i}behavior(i){const c=new e.BehaviorSubject(i);return this._eventList.push(c),c}dispose(){if(!this._disposed){for(const i of this._eventList)i.complete();this._disposed=!0}}}return V1}var E1={},T5;function IQ(){if(T5)return E1;T5=1,Object.defineProperty(E1,"__esModule",{value:!0}),E1.StateBuilder=void 0;const e=xw(),t=Mw(),r=sc(),n=Lf();var i;(function(o){function s(a){const d=new Set;for(const p of a.actions)switch(p.kind){case"add":d.add(p.transform.ref);break;case"update":d.add(p.ref);break;case"delete":d.add(p.ref);break;case"insert":{d.add(p.ref),d.add(p.transform.ref);const u=a.tree.children.get(p.ref).toArray();for(const m of u)d.add(m);break}}return Array.from(d)}function h(a,d){if(!a.state||a.state.tree===a.editInfo.sourceTree){const m=a.tree.asImmutable();return d?.useHashVersion&&e.StateTree.setParamHashVersion(m,s(a)),m}const p=a.state.tree.asTransient();for(const m of a.actions)switch(m.kind){case"add":p.add(m.transform);break;case"update":p.setParams(m.ref,m.params);break;case"delete":p.remove(m.ref);break;case"insert":{const v=p.children.get(m.ref).toArray();p.add(m.transform);for(const b of v)p.changeParent(b,m.transform.ref);break}}a.editInfo.sourceTree=a.tree;const u=p.asImmutable();return d?.useHashVersion&&e.StateTree.setParamHashVersion(u,s(a)),u}function f(a){return!!a&&typeof a.getTree=="function"}o.is=f;function y(a){return!!a&&typeof a.getTree=="function"&&typeof a.ref=="string"}o.isTo=y;class _{get editInfo(){return this.state.editInfo}get currentTree(){return this.state.tree}to(d){const p=typeof d=="string"?d:t.StateObjectCell.is(d)?d.transform.ref:d.ref;return new g(this.state,p,this)}toRoot(){return new g(this.state,this.state.tree.root.ref,this)}delete(d){const p=t.StateObjectRef.resolveRef(d);return!p||!this.state.tree.transforms.has(p)?this:(this.editInfo.count++,this.state.tree.remove(p),this.state.actions.push({kind:"delete",ref:p}),this)}getTree(d){return h(this.state,d)}commit(d){if(!this.state.state)throw new Error("Cannot commit template tree");return this.state.state.runTask(this.state.state.updateTree(this,d))}constructor(d,p){this.state={state:p,tree:d.asTransient(),actions:[],editInfo:{applied:!1,sourceTree:d,count:0,lastUpdate:void 0}}}}o.Root=_;class g{get editInfo(){return this.state.editInfo}get selector(){return new t.StateObjectSelector(this.ref,this.state.state)}
4121getApplyRoot(){return e.StateTree.getDecoratorRoot(this.state.tree,this.ref)}apply(d,p,u){if(d.definition.isDecorator)return this.insert(d,p,u);const m=this.getApplyRoot(),v=d.apply(m,p,u);return this.state.tree.add(v),this.editInfo.count++,this.editInfo.lastUpdate=v.ref,this.state.actions.push({kind:"add",transform:v}),new g(this.state,v.ref,this.root)}applyOrUpdate(d,p,u,m){if(this.state.tree.transforms.has(d)){const v=this.to(d);return u&&v.update(u),v}else return this.apply(p,u,{...m,ref:d})}applyOrUpdateTagged(d,p,u,m){if(p.definition.isDecorator)throw new Error("Can't use applyOrUpdateTagged on decorator transformers.");const v=this.getApplyRoot(),b=this.state.tree.children.get(v).values();for(;;){const C=b.next();if(C.done)break;const l=this.state.tree.transforms.get(C.value);if(l&&r.StateTransform.hasTags(l,d)){const S=this.to(C.value);return S.updateTagged(u,c(l.tags,d,m&&m.tags)),S}}const P=p.apply(v,u,{...m,tags:c(d,m&&m.tags)});return this.state.tree.add(P),this.editInfo.count++,this.editInfo.lastUpdate=P.ref,this.state.actions.push({kind:"add",transform:P}),new g(this.state,P.ref,this.root)}group(d,p,u){return this.apply(d,p,u)}insert(d,p,u){const m=this.state.tree.children.get(this.ref).toArray(),v=d.apply(this.ref,p,u);this.state.tree.add(v);for(const b of m)this.state.tree.changeParent(b,v.ref);return this.editInfo.count++,this.editInfo.lastUpdate=v.ref,this.state.actions.push({kind:"insert",ref:this.ref,transform:v}),new g(this.state,v.ref,this.root)}updateTagged(d,p){(this.state.tree.setParams(this.ref,d)||this.state.tree.setTags(this.ref,p))&&(this.editInfo.count++,this.editInfo.lastUpdate=this.ref,this.state.actions.push({kind:"update",ref:this.ref,params:d}))}update(d,p){let u;if(p){const m=this.state.tree.transforms.get(this.ref);u=(0,n.produce)(m.params,p)}else u=typeof d=="function"?(0,n.produce)(this.state.tree.transforms.get(this.ref).params,d):d;return this.state.tree.setParams(this.ref,u)&&(this.editInfo.count++,this.editInfo.lastUpdate=this.ref,this.state.actions.push({kind:"update",ref:this.ref,params:u})),this.root}updateState(d){const p=this.state.tree.transforms.get(this.ref);r.StateTransform.isStateChange(p.state,d)&&(this.state.tree.assignState(this.ref,d),this.editInfo.count++,this.editInfo.lastUpdate=this.ref,this.state.actions.find(u=>u.kind==="update"&&u.ref===this.ref)||this.state.actions.push({kind:"update",ref:this.ref,params:p.params}))}tag(d){const p=this.state.tree.transforms.get(this.ref);return this.updateTagged(p.params,c(p.tags,d)),this}dependsOn(d){const p=this.state.tree.transforms.get(this.ref);this.state.tree.setDependsOn(this.ref,c(p.dependsOn,d))&&(this.editInfo.count++,this.editInfo.lastUpdate=this.ref,this.state.actions.push({kind:"update",ref:this.ref,params:p.params}))}to(d){return this.root.to(d)}toRoot(){return this.root.toRoot()}delete(d){return this.root.delete(d)}getTree(d){return h(this.state,d)}commit(d){if(!this.state.state)throw new Error("Cannot commit template tree");return this.state.state.runTask(this.state.state.updateTree(this,d))}constructor(d,p,u){if(this.state=d,this.root=u,this.ref=p,!this.state.tree.transforms.has(p))throw new Error(`Could not find node '${p}'.`)}}o.To=g})(i||(E1.StateBuilder=i={}));function c(...o){let s;const h=[];for(const f of o)if(f)if(s||(s=new Set),typeof f=="string"){if(s.has(f))continue;s.add(f),h.push(f)}else for(const y of f)s.has(y)||(s.add(y),h.push(y));return h}return E1}var B1={},x5;function cie(){if(x5)return B1;x5=1,Object.defineProperty(B1,"__esModule",{value:!0}),B1.StateActionManager=void 0;const e=u2(),t=et(),r=Vt(),n=Nl();class i{constructor(){this.ev=n.RxEventHelper.create(),this.actions=new Map,this.fromTypeIndex=new Map,this.events={added:this.ev(),removed:this.ev()}}add(o){const s=e.StateTransformer.is(o)?o.toAction():o;if(this.actions.has(s.id))return this;this.actions.set(s.id,s);for(const h of s.definition.from)this.fromTypeIndex.has(h.type)?this.fromTypeIndex.get(h.type).push(s):this.fromTypeIndex.set(h.type,[s]);return this.events.added.next(void 0),this}remove(o){const s=e.StateTransformer.is(o)?o.toAction().id:t.UUID.is(o)?o:o.id,h=this.actions.get(s);if(!h)return this;this.actions.delete(s);for(const f of h.definition.from){const y=this.fromTypeIndex.get(f.type);y&&((0,r.arraySetRemove)(y,h),y.length===0&&this.fromTypeIndex.delete(f.type))}return this.events.removed.next(void 0),this}fromCell(o,s){const h=o.obj;if(!h)return[];const f=this.fromTypeIndex.get(h.type);if(!f)return[];let y=!1;for(const g of f)if(g.definition.isApplicable){y=!0;break}if(!y)return f;const _=[];for(const g of f)g.definition.isApplicable?g.definition.isApplicable(h,o.transform,s)&&_.push(g):_.push(g);return _}dispose(){this.ev.dispose()}}return B1.StateActionManager=i,B1}var R1={},A5;function wQ(){if(A5)return R1;A5=1,Object.defineProperty(R1,"__esModule",{value:!0}),R1.LogEntry=void 0;var e;return(function(t){function r(o){return{type:"message",timestamp:new Date,message:o}}t.message=r;function n(o){return{type:"error",timestamp:new Date,message:o}}t.error=n;function i(o){return{type:"warning",timestamp:new Date,message:o}}t.warning=i;function c(o){return{type:"info",timestamp:new Date,message:o}}t.info=c})(e||(R1.LogEntry=e={})),R1}var O1={},M5;function VQ(){if(M5)return O1;M5=1,Object.defineProperty(O1,"__esModule",{value:!0}),O1.StateTreeSpine=void 0;const e=sc();var t;
4121return(function(r){class n{get current(){return this._current}set current(s){this._current=s}getAncestorOfType(s){if(!this._current)return;let h=this._current;for(;;){if(h=this.cells.get(h.transform.parent),!h.obj)return;if(h.obj.type===s.type)return h.obj;if(h.transform.ref===e.StateTransform.RootRef)return}}getRootOfType(s){if(!this._current)return;let h=this._current,f;for(;;){if(!h.obj)return;if(h.obj.type===s.type&&(f=h),h.transform.ref===e.StateTransform.RootRef)return f?f.obj:void 0;h=this.cells.get(h.transform.parent)}}constructor(s){this.cells=s,this._current=void 0}}r.Impl=n;function i(o,s){const h=o.cells;let f=h.get(s);const y=[f];for(;f?.transform.transformer.definition.isDecorator;)f=h.get(f.transform.parent),y.push(f);return y}r.getDecoratorChain=i;function c(o,s,h){let f,y=o.cells.get(h);if(y)for(;;){if(!y.obj)return;if(y.obj.type===s.type&&(f=y),y.transform.ref===e.StateTransform.RootRef)return f?f.obj:void 0;y=o.cells.get(y.transform.parent)}}r.getRootOfType=c})(t||(O1.StateTreeSpine=t={})),O1}var k1={},D5;function uie(){if(D5)return k1;D5=1,Object.defineProperty(k1,"__esModule",{value:!0}),k1.AsyncQueue=void 0;const e=Vt(),t=Rn();class r{constructor(){this.queue=[],this.signal=new t.Subject}get length(){return this.queue.length}enqueue(i){return this.queue.push(i),this.queue.length===1?!0:this.waitFor(i)}handled(i){(0,e.arrayRemoveInPlace)(this.queue,i),this.queue.length>0&&this.signal.next({v:this.queue[0],stillPresent:!0})}remove(i){const c=(0,e.arrayRemoveInPlace)(this.queue,i);return c&&this.signal.next({v:i,stillPresent:!1}),c}waitFor(i){return new Promise(c=>{const o=this.signal.subscribe(({v:s,stillPresent:h})=>{s===i&&(o.unsubscribe(),c(h))})})}}return k1.AsyncQueue=r,k1}var I5;function lie(){if(I5)return Es;I5=1,Object.defineProperty(Es,"__esModule",{value:!0}),Es.StateTreeCycleError=Es.State=void 0;const e=Mw(),t=Aw(),r=sc(),n=u2(),i=nt(),c=l2(),o=Nl(),s=IQ(),h=cie(),f=wQ(),y=ci(),_=Ne(),g=VQ(),a=uie(),d=Vt(),p=HD(),u=vr();class m extends Error{constructor(ne){super(`Cyclic state-tree dependency detected: ${ne.join(" -> ")}`),this.name="StateTreeCycleError",this.cycle=ne}}Es.StateTreeCycleError=m;class v{get tree(){return this._tree}get transforms(){return this._tree.transforms}get current(){return this.behaviors.currentObject.value.ref}get root(){return this.cells.get(this._tree.root.ref)}build(){return new s.StateBuilder.Root(this.tree,this)}registerRefResolver(ne,$){this.refResolvers.push([ne,$])}removeRefResolver(ne){this.refResolvers=this.refResolvers.filter($=>$[0]!==ne)}addHistory(ne,$){this.historyCapacity!==0&&(this.history.unshift([ne,$||"Update"]),this.history.length>this.historyCapacity&&this.history.pop(),this.events.historyUpdated.next({state:this}))}clearHistory(){this.history.length!==0&&(this.history=[],this.events.historyUpdated.next({state:this}))}get latestUndoLabel(){return this.history.length>0?this.history[0][1]:void 0}get canUndo(){return this.history.length>0}undo(){return i.Task.create("Undo",async ne=>{const $=this.history.shift();if($){this.events.historyUpdated.next({state:this}),this.undoingHistory=!0;try{await this.updateTree($[0],{canUndo:!1}).runInContext(ne)}finally{this.undoingHistory=!1}}})}getSnapshot(){return{tree:t.StateTree.toJSON(this._tree)}}setSnapshot(ne){const $=t.StateTree.fromJSON(ne.tree);return this.updateTree($)}setCurrent(ne){this.behaviors.currentObject.next({state:this,ref:ne})}updateCellState(ne,$){const ie=this.cells.get(ne);if(!ie)return;const Z=typeof $=="function"?$(ie.state):$;r.StateTransform.assignState(ie.state,Z)&&(ie.transform=this._tree.assignState(ie.transform.ref,Z),this.events.cell.stateUpdated.next({state:this,ref:ne,cell:ie}))}dispose(){const ne=[];t.StateTree.doPostOrder(this._tree,this._tree.root,{refs:ne},($,ie,Z)=>{Z.refs.push($.ref)});for(let $=ne.length-1;$>=0;$--){const ie=this.cells.get(ne[$]);if(ie)try{X(ie.transform,ie.obj,ie.transform.params,ie.cache,this.globalContext)}catch(Z){console.warn("Error in transformer dispose during State.dispose",Z)}}this.ev.dispose(),this.actions.dispose()}select(ne){return c.StateSelection.select(ne,this)}selectQ(ne){return typeof ne=="string"?c.StateSelection.select(ne,this):c.StateSelection.select(ne(c.StateSelection.Generators),this)}applyAction(ne,$,ie=r.StateTransform.RootRef){return i.Task.create("Apply Action",Z=>{const re=this.cells.get(ie);if(!re)throw new Error(`'${ie}' does not exist.`);if(re.status!=="ok")throw new Error(`Action cannot be applied to a cell with status '${re.status}'`);return K(ne.definition.run({ref:ie,cell:re,a:re.obj,params:$,state:this},this.globalContext),Z)})}transaction(ne,$){return i.Task.create("State Transaction",async ie=>{const Z=this.inTransaction,re=this._tree.asImmutable();let oe=!1;try{Z||this.behaviors.isUpdating.next(!0),this.inTransaction=!0,this.inTransactionError=!1,await ne(ie),this.inTransactionError&&(oe=!0,await this.updateTree(re).runInContext(ie))}catch(ce){if(oe||(oe=!0,await this.updateTree(re).runInContext(ie),this.events.log.next(f.LogEntry.error("Error during state transaction, reverting"))),Z)throw this.inTransactionError=!0,
4121ce;if($?.rethrowErrors)throw ce;console.error(ce)}finally{Z||(this.inTransaction=!1,this.events.changed.next({state:this,inTransaction:!1}),this.behaviors.isUpdating.next(!1),oe||($?.canUndo?this.addHistory(re,typeof $.canUndo=="string"?$.canUndo:void 0):this.clearHistory()))}})}get inUpdate(){return this._inUpdate}updateTree(ne,$){const ie={tree:ne,options:$};return i.Task.create("Update Tree",async Z=>{if(!await this.updateQueue.enqueue(ie))return;this._inUpdate=!0;const oe=$?.canUndo?this._tree.asImmutable():void 0;let ce=!1;this.inTransaction||this.behaviors.isUpdating.next(!0);try{if(s.StateBuilder.is(ne)){if(ne.editInfo.applied)throw new Error("This builder has already been applied. Create a new builder for further state updates");ne.editInfo.applied=!0}this.reverted=!1;const ue=$&&($.revertIfAborted||$.revertOnError)?await this._revertibleTreeUpdate(Z,ie,$):await this._updateTree(Z,ie);return ce=this.reverted,ue.ctx.hadError&&(this.inTransactionError=!0),ue.cell?new e.StateObjectSelector(ue.cell.transform.ref,this):void 0}finally{this._inUpdate=!1,this.updateQueue.handled(ie),this.inTransaction||(this.behaviors.isUpdating.next(!1),$?.canUndo?ce||this.addHistory(oe,typeof $.canUndo=="string"?$.canUndo:void 0):this.undoingHistory||this.clearHistory())}},()=>{this.updateQueue.remove(ie)})}async _revertibleTreeUpdate(ne,$,ie){const Z=this.tree,re=await this._updateTree(ne,$);return(re.ctx.hadError||re.ctx.wasAborted)&&ie.revertOnError||re.ctx.wasAborted&&ie.revertIfAborted?(this.reverted=!0,await this._updateTree(ne,{tree:Z,options:$.options})):re}async _updateTree(ne,$){let ie=!1;const Z=this.updateTreeAndCreateCtx($.tree,ne,$.options);try{if(ie=await P(Z),s.StateBuilder.isTo($.tree)){const re=this.select($.tree.ref)[0];return{ctx:Z,cell:re}}return{ctx:Z}}finally{this.spine.current=void 0,ie&&this.events.changed.next({state:this,inTransaction:this.inTransaction})}}updateTreeAndCreateCtx(ne,$,ie){const Z=(s.StateBuilder.is(ne)?ne.getTree():ne).asTransient(),re=this._tree;this._tree=Z;const oe={parent:this,editInfo:s.StateBuilder.is(ne)?ne.editInfo:void 0,errorFree:this.errorFree,taskCtx:$,oldTree:re,tree:Z,cells:this.cells,spine:this.spine,results:[],options:{...b,...ie},changed:!1,hadError:!1,wasAborted:!1,newCurrent:void 0,getCellData:this.tryGetCellData};return this.errorFree=!0,oe}constructor(ne,$){this.errorFree=!0,this.ev=o.RxEventHelper.create(),this.globalContext=void 0,this.events={cell:{stateUpdated:this.ev(),created:this.ev(),removed:this.ev()},object:{updated:this.ev(),created:this.ev(),removed:this.ev()},log:this.ev(),changed:this.ev(),historyUpdated:this.ev()},this.behaviors={currentObject:this.ev.behavior({state:this,ref:r.StateTransform.RootRef}),isUpdating:this.ev.behavior(!1)},this.actions=new h.StateActionManager,this.cells=new Map,this.spine=new g.StateTreeSpine.Impl(this.cells),this.refResolvers=[],this.tryGetCellData=re=>{var oe,ce;let ue=(ce=(oe=this.cells.get(re))===null||oe===void 0?void 0:oe.obj)===null||ce===void 0?void 0:ce.data;if(ue===void 0){for(const[,pe]of this.refResolvers)if(ue=pe(this,re),ue!==void 0)break;if(ue===void 0)throw new Error(`Cell '${re}' data undefined.`)}return ue},this.historyCapacity=5,this.history=[],this.undoingHistory=!1,this.inTransaction=!1,this.inTransactionError=!1,this._inUpdate=!1,this.reverted=!1,this.updateQueue=new a.AsyncQueue,this._tree=t.StateTree.createEmpty(r.StateTransform.createRoot($&&$.rootState)).asTransient();const Z=this._tree.root;this.runTask=$.runTask,$?.historyCapacity!==void 0&&(this.historyCapacity=$.historyCapacity),this.cells.set(Z.ref,{parent:this,transform:Z,sourceRef:void 0,obj:ne,status:"ok",state:{...Z.state},errorText:void 0,params:{definition:{},values:{}},dependencies:{dependentBy:[],dependsOn:[]},cache:{}}),this.globalContext=$&&$.globalContext}}Es.State=v,(function(te){function ne($,ie){return new te($,ie)}te.create=ne,(function($){function ie(Z,re){return!!re&&Z.ref===re.transform.ref&&Z.state===re.parent}$.isCell=ie})(te.ObjectEvent||(te.ObjectEvent={}))})(v||(Es.State=v={}));const b={doNotLogTiming:!1,doNotUpdateCurrent:!0,revertIfAborted:!1,revertOnError:!1,canUndo:!1};async function P(te){const ne=!!(te.editInfo&&te.editInfo.count===1&&te.editInfo.lastUpdate&&te.editInfo.sourceTree===te.oldTree);let $,ie=[],Z;if(ne)$=[],Z=[te.editInfo.lastUpdate];else{$=T(te);const ce=te.parent.current;let ue=!1;for(const pe of $)if(pe===ce){ue=!0;break}if(ue){const pe=L(te.oldTree,ce,$,te.cells);te.parent.setCurrent(pe)}for(let pe=$.length-1;pe>=0;pe--){const he=te.cells.get($[pe]);he&&X(he.transform,he.obj,he?.transform.params,he.cache,te.parent.globalContext)}for(const pe of $){const he=te.cells.get(pe);he&&(he.parent=void 0,R(he));const fe=he&&he.obj;te.cells.delete(pe),ie.push(fe)}Z=C(te.cells,te.tree)}const re=F(te,Z);for(const ce of re.added)te.parent.events.cell.created.next({state:te.parent,ref:ce.transform.ref,cell:ce});for(let ce=0;ce<$.length;ce++){const ue=$[ce],pe=te.oldTree.transforms.get(ue).parent;te.parent.events.object.removed.next({state:te.parent,ref:ue,obj:ie[ce]}),te.parent.events.cell.removed.next({state:te.parent,ref:ue,parent:pe})}if(ie.length&&(ie=[]),re.dependent)for(const ce of re.dependent)Z.push(ce.transform.ref);V(te,Z),te.scheduled=j(te,Z);for(const ce of Z)await G(te,ce);if(te.deferred&&te.deferred.length>0)for(;te.deferred.length>0;){const ce=te.deferred;te.deferred=[];let ue=!1;for(const pe of ce){const he=te.deferred.length;await G(te,pe),te.deferred.length>he&&te.deferred[te.deferred.length-1]===pe||(ue=!0)}if(!ue){const pe=te.deferred.map(he=>{const fe=te.cells.get(he);if(!fe)return he;const de=H(te,fe);return`${he} (waiting on: ${de.length?de.join(", "):"unknown"})`});throw te.deferred=[],new Error(`Unresolved dependency: ${pe.join("; ")}`)}}te.editInfo||x(te);let oe=te.newCurrent;for(const ce of te.results)ce.action==="created"?(te.parent.events.object.created.next({state:te.parent,ref:ce.ref,obj:ce.obj}),te.newCurrent||!te.tree.transforms.get(ce.ref).state.isGhost&&ce.obj!==e.StateObject.Null&&(oe=ce.ref)):ce.action==="updated"?te.parent.events.object.updated.next({state:te.parent,ref:ce.ref,action:"in-place",obj:ce.obj,oldData:ce.oldData}):ce.action==="replaced"&&te.parent.events.object.updated.next({state:te.parent,ref:ce.ref,action:"recreate",obj:ce.obj,oldObj:ce.oldObj});
4121if(oe)te.options.doNotUpdateCurrent||te.parent.setCurrent(oe);else{const ce=te.parent.current,ue=te.cells.get(ce);ue&&(ue.obj===e.StateObject.Null||ue.status==="error"&&ue.errorText===N)&&(oe=L(te.oldTree,ce,[],te.cells),te.parent.setCurrent(oe))}return $.length>0||Z.length>0||te.changed}function C(te,ne){const $={roots:[],cells:te};return t.StateTree.doPreOrder(ne,ne.root,$,l),$.roots}function l(te,ne,$){const ie=$.cells.get(te.ref);return!ie||ie.transform.version!==te.version?($.roots.push(te.ref),!1):!(ie.status==="error"||ie&&ie.obj===e.StateObject.Null)}function S(te,ne,$){!$.newTree.transforms.has(te.ref)&&$.cells.has(te.ref)&&$.deletes.push(te.ref)}function T(te){const ne={newTree:te.tree,cells:te.cells,deletes:[]};return t.StateTree.doPostOrder(te.oldTree,te.oldTree.root,ne,S),ne.deletes}function A(te,ne,$){const ie=$.cells.get(te.ref);!ie||!r.StateTransform.syncState(ie.state,te.state)||$.parent.events.cell.stateUpdated.next({state:$.parent,ref:te.ref,cell:ie})}function x(te){t.StateTree.doPreOrder(te.tree,te.tree.root,te,A)}function M(te,ne,$,ie){const Z=te.cells.get(ne),re=Z.status!==$;Z.status=$,Z.errorText=ie,re&&te.parent.events.cell.stateUpdated.next({state:te.parent,ref:ne,cell:Z})}function D(te,ne,$){const ie=$.cells.get(te.ref);ie.transform=te,B(ie,$)&&O(ie),M($,te.ref,"pending")}function V(te,ne){for(const $ of ne)t.StateTree.doPreOrder(te.tree,te.tree.transforms.get($),te,D)}function R(te){for(const ne of te.dependencies.dependsOn)(0,d.arraySetRemove)(ne.dependencies.dependentBy,te)}function E(te,ne,{ctx:$,added:ie,visited:Z}){if(Z.add(te.ref),$.cells.has(te.ref))return;const re={parent:$.parent,transform:te,sourceRef:void 0,status:"pending",state:{...te.state},errorText:void 0,params:void 0,dependencies:{dependentBy:[],dependsOn:[]},cache:void 0};$.cells.set(te.ref,re),ie.push(re)}function I(te,ne){const $=r.StateTransform.getEffectiveDependsOn(te.transform);if($.length!==0)for(const ie of $){if(!ne.tree.transforms.get(ie))throw new Error("Cannot depend on a non-existent transform.");const re=ne.cells.get(ie);(0,d.arraySetAdd)(te.dependencies.dependsOn,re),(0,d.arraySetAdd)(re.dependencies.dependentBy,te)}}function B(te,ne){const $=r.StateTransform.getEffectiveDependsOn(te.transform),ie=te.dependencies.dependsOn;if(ie.length===$.length){let ce=!0;for(const ue of ie)if($.indexOf(ue.transform.ref)<0){ce=!1;break}if(ce)return!1}const Z=new Set($);let re=!1;for(let ce=ie.length-1;ce>=0;ce--){const ue=ie[ce];Z.has(ue.transform.ref)||(ie.splice(ce,1),(0,d.arraySetRemove)(ue.dependencies.dependentBy,te),re=!0)}const oe=new Set(ie.map(ce=>ce.transform.ref));for(const ce of $){if(oe.has(ce))continue;if(!ne.tree.transforms.get(ce))throw new Error("Cannot depend on a non-existent transform.");const pe=ne.cells.get(ce);(0,d.arraySetAdd)(te.dependencies.dependsOn,pe),(0,d.arraySetAdd)(pe.dependencies.dependentBy,te),re=!0}return re}function w(te){if(te.dependencies.dependsOn.length===0)return;const ne=[{cell:te,idx:0}],$=new Set([te.transform.ref]),ie=new Set;for(;ne.length>0;){const Z=ne[ne.length-1],re=Z.cell.dependencies.dependsOn;if(Z.idx>=re.length){$.delete(Z.cell.transform.ref),ie.add(Z.cell.transform.ref),ne.pop();continue}const oe=re[Z.idx++],ce=oe.transform.ref;if(!ie.has(ce)){if($.has(ce)){const ue=[];let pe=!1;for(const he of ne)(pe||he.cell.transform.ref===ce)&&(pe=!0,ue.push(he.cell.transform.ref));return ue.push(ce),ue}$.add(ce),ne.push({cell:oe,idx:0})}}}function O(te){const ne=w(te);if(ne)throw new m(ne)}function F(te,ne){const $={ctx:te,visited:new Set,added:[]};for(const Z of ne)t.StateTree.doPreOrder(te.tree,te.tree.transforms.get(Z),$,E);for(const Z of $.added)I(Z,te);for(const Z of $.added)O(Z);let ie;return $.visited.forEach(Z=>{const re=te.cells.get(Z);for(const oe of re.dependencies.dependentBy)$.visited.has(oe.transform.ref)||(ie||(ie=p.UniqueArray.create()),p.UniqueArray.add(ie,oe.transform.ref,oe))}),{added:$.added,dependent:ie?ie.array:void 0}}function L(te,ne,$,ie){const Z=new Set($);return U(te,ne,Z,ie)}function U(te,ne,$,ie){if(ne===r.StateTransform.RootRef)return ne;const Z=te.transforms.get(ne),re=te.children.get(Z.parent).values();let oe,ce=!1;for(;;){const ue=re.next();if(ue.done)break;if($.has(ue.value))continue;const pe=ie.get(ue.value);if(!pe||pe.status==="error"||pe.obj===e.StateObject.Null)continue;const he=te.transforms.get(ue.value);
4121if(!he.state.isGhost){if(ue.value===ne){ce=!0,$.has(ne)||(oe=ne);continue}if(ce)return he.ref;oe=he.ref}}return oe||U(te,Z.parent,$,ie)}function q(te,ne,$,ie){ie||(te.hadError=!0,te.parent.errorFree=!1);const Z=te.cells.get(ne);if($){te.wasAborted=te.wasAborted||i.Task.isAbort($);const oe=""+$;M(te,ne,"error",oe),ie||te.parent.events.log.next({type:"error",timestamp:new Date,message:oe})}else Z.params=void 0;if(Z.obj){const oe=Z.obj;Z.obj=void 0,Z.cache=void 0,te.parent.events.object.removed.next({state:te.parent,ref:ne,obj:oe})}const re=te.tree.children.get(ne).values();for(;;){const oe=re.next();if(oe.done)return;q(te,oe.value,void 0,ie)}}const N="Parent is null";function k(te,ne,$){$.add(te.ref)}function j(te,ne){const $=new Set;for(const ie of ne){const Z=te.tree.transforms.get(ie);Z&&t.StateTree.doPreOrder(te.tree,Z,$,k)}return $}function H(te,ne){const $=[],ie=te.scheduled;if(!ie)return $;for(const Z of ne.dependencies.dependsOn)Z.obj||Z.status!=="error"&&ie.has(Z.transform.ref)&&$.push(Z.transform.ref);return $}async function G(te,ne){const $=te.cells.get(ne);if($&&$.dependencies.dependsOn.length>0&&H(te,$).length>0){te.deferred||(te.deferred=[]),te.deferred.push(ne);return}M(te,ne,"processing");let ie=!1;try{const re=(0,y.now)(),oe=await W(te,ne),ce=(0,y.now)()-re;oe.action!=="none"&&(te.changed=!0),M(te,ne,"ok"),te.results.push(oe),oe.action==="created"?(ie=oe.obj===e.StateObject.Null,!ie&&!te.options.doNotLogTiming&&te.parent.events.log.next(f.LogEntry.info(`Created ${oe.obj.label} in ${(0,y.formatTimespan)(ce)}.`))):oe.action==="updated"?(ie=oe.obj===e.StateObject.Null,!ie&&!te.options.doNotLogTiming&&te.parent.events.log.next(f.LogEntry.info(`Updated ${oe.obj.label} in ${(0,y.formatTimespan)(ce)}.`))):oe.action==="replaced"&&(ie=oe.obj===e.StateObject.Null,!ie&&!te.options.doNotLogTiming&&te.parent.events.log.next(f.LogEntry.info(`Updated ${oe.obj.label} in ${(0,y.formatTimespan)(ce)}.`)))}catch(re){te.changed=!0,te.hadError||(te.newCurrent=ne),q(te,ne,re,!1),console.error(re);return}const Z=te.tree.children.get(ne).values();for(;;){const re=Z.next();if(re.done)return;ie?q(te,re.value,void 0,!0):await G(te,re.value)}}function z(te,ne,$,ie){const Z=ne.transformer.definition.params,re=Z?Z($,te.parent.globalContext):{};if(ne.version!==ne._normalized_param_version)ne.params=_.ParamDefinition.normalizeParams(re,ne.params,"all"),ne._normalized_param_version=ne.version;else{const oe=_.ParamDefinition.getDefaultValues(re);ne.params=ne.params?(0,u.assignIfUndefined)(ne.params,oe):oe}return _.ParamDefinition.resolveRefs(re,ne.params,te.getCellData),{definition:re,values:ne.params}}async function W(te,ne){var $;const{oldTree:ie,tree:Z}=te,re=te.cells.get(ne),oe=re.transform;if(re.transform.ref===r.StateTransform.RootRef)return{action:"none"};const ce=te.cells.get(re.transform.parent);if(ce?.obj===e.StateObject.Null)if(re.sourceRef=ce.transform.ref,ie.transforms.has(ne)&&re.params){const de=re.params.values,ge=re.cache;return X(oe,re.obj,de,ge,te.parent.globalContext),re.params=void 0,re.obj=e.StateObject.Null,{ref:ne,action:"updated",obj:re.obj}}else return re.params=void 0,{ref:ne,action:"created",obj:e.StateObject.Null};const pe=oe.transformer.definition.from.length===0?ce:c.StateSelection.findAncestorOfType(Z,te.cells,ne,oe.transformer.definition.from);if(!pe)throw new Error(`No suitable parent found for '${ne}'`);te.spine.current=re;const he=pe.obj;re.sourceRef=pe.transform.ref;const fe=z(te,oe,he);if(!ie.transforms.has(ne)||!re.params){re.params=fe;const de=await J(te,re,oe.transformer,he,fe.values);return Y(de,oe),re.obj=de,{ref:ne,action:"created",obj:de}}else{const de=re.params.values,ge=re.cache,Ce=($=re.obj)===null||$===void 0?void 0:$.data,ve=fe.values;switch(re.params=fe,re.obj&&re.obj!==e.StateObject.Null?await ae(te,re,oe.transformer,he,re.obj,de,ve):n.StateTransformer.UpdateResult.Recreate){case n.StateTransformer.UpdateResult.Recreate:{const me=re.obj;X(oe,me,de,ge,te.parent.globalContext);const ee=await J(te,re,oe.transformer,he,ve);return Y(ee,oe),re.obj=ee,{ref:ne,action:"replaced",oldObj:me,obj:ee}}
4121case n.StateTransformer.UpdateResult.Updated:return Y(re.obj,oe),{ref:ne,action:"updated",oldData:Ce,obj:re.obj};case n.StateTransformer.UpdateResult.Null:return X(oe,re.obj,de,ge,te.parent.globalContext),re.obj=e.StateObject.Null,{ref:ne,action:"updated",obj:re.obj};default:return{action:"none"}}}}function X(te,ne,$,ie,Z){var re,oe;(oe=(re=te.transformer.definition).dispose)===null||oe===void 0||oe.call(re,{b:ne!==e.StateObject.Null?ne:void 0,params:$,cache:ie},Z)}function Y(te,ne){!te||te===e.StateObject.Null||(te.tags=ne.tags)}function K(te,ne){return typeof te.runInContext=="function"?te.runInContext(ne):te}function Q(te){if(te.dependencies.dependsOn.length===0)return;const ne=Object.create(null);for(const $ of te.dependencies.dependsOn){if(!$.obj)throw new Error("Unresolved dependency.");ne[$.transform.ref]=$.obj}return ne}function J(te,ne,$,ie,Z){return ne.cache||(ne.cache=Object.create(null)),K($.definition.apply({a:ie,params:Z,cache:ne.cache,spine:te.spine,dependencies:Q(ne)},te.parent.globalContext),te.taskCtx)}async function ae(te,ne,$,ie,Z,re,oe){return $.definition.update?(ne.cache||(ne.cache=Object.create(null)),K($.definition.update({a:ie,oldParams:re,b:Z,newParams:oe,cache:ne.cache,spine:te.spine,dependencies:Q(ne)},te.parent.globalContext),te.taskCtx)):n.StateTransformer.UpdateResult.Recreate}return Es}var w5;function Et(){return w5||(w5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(Mw(),e),t.__exportStar(Aw(),e),t.__exportStar(lie(),e),t.__exportStar(IQ(),e),t.__exportStar(l2(),e),t.__exportStar(u2(),e),t.__exportStar(sc(),e),t.__exportStar(MQ(),e)})(W3)),W3}var V5;function jt(){if(V5)return Iu;V5=1,Object.defineProperty(Iu,"__esModule",{value:!0}),Iu.PluginStateTransform=Iu.PluginStateObject=void 0;const e=Et();var t;(function(n){n.Create=e.StateObject.factory();function i(y){return!!y&&y.type.typeClass==="Representation3D"}n.isRepresentation3D=i;function c(y){return!!y&&y.type.typeClass==="Behavior"}n.isBehavior=c;function o(y){return n.Create({...y,typeClass:"Representation3D"})}n.CreateRepresentation3D=o;function s(y){return n.Create({...y,typeClass:"Behavior"})}n.CreateBehavior=s;class h extends n.Create({name:"Root",typeClass:"Root"}){}n.Root=h;class f extends n.Create({name:"Group",typeClass:"Group"}){}n.Group=f,(function(y){class _ extends n.Create({name:"String Data",typeClass:"Data"}){}y.String=_;class g extends n.Create({name:"Binary Data",typeClass:"Data"}){}y.Binary=g;class a extends n.Create({name:"Data Blob",typeClass:"Data"}){}y.Blob=a})(n.Data||(n.Data={})),(function(y){class _ extends n.Create({name:"JSON Data",typeClass:"Data"}){}y.Json=_;class g extends n.Create({name:"CIF File",typeClass:"Data"}){}y.Cif=g;class a extends n.Create({name:"Cube File",typeClass:"Data"}){}y.Cube=a;class d extends n.Create({name:"PSF File",typeClass:"Data"}){}y.Psf=d;class p extends n.Create({name:"PRMTOP File",typeClass:"Data"}){}y.Prmtop=p;class u extends n.Create({name:"TOP File",typeClass:"Data"}){}y.Top=u;class m extends n.Create({name:"PLY File",typeClass:"Data"}){}y.Ply=m;class v extends n.Create({name:"OBJ File",typeClass:"Data"}){}y.Obj=v;class b extends n.Create({name:"VTP File",typeClass:"Data"}){}y.Vtp=b;class P extends n.Create({name:"CCP4/MRC/MAP File",typeClass:"Data"}){}y.Ccp4=P;class C extends n.Create({name:"DSN6/BRIX File",typeClass:"Data"}){}y.Dsn6=C;class l extends n.Create({name:"DX File",typeClass:"Data"}){}y.Dx=l;class S extends n.Create({name:"MTZ File",typeClass:"Data"}){}y.Mtz=S;class T extends n.Create({name:"Format Blob",typeClass:"Data"}){}y.Blob=T})(n.Format||(n.Format={})),(function(y){class _ extends n.Create({name:"Coordinates",typeClass:"Object"}){}y.Coordinates=_;class g extends n.Create({name:"Topology",typeClass:"Object"}){}y.Topology=g;class a extends n.Create({name:"Model",typeClass:"Object"}){}y.Model=a;class d extends n.Create({name:"Trajectory",typeClass:"Object"}){}y.Trajectory=d;class p extends n.Create({name:"Structure",typeClass:"Object"}){}y.Structure=p,(function(u){class m extends o({name:"Structure 3D"}){}u.Representation3D=m;class v extends n.Create({name:"Structure 3D State",typeClass:"Object"}){}u.Representation3DState=v;class b extends n.Create({name:"Selections",typeClass:"Object"}){}u.Selections=b})(p=y.Structure||(y.Structure={}))})(n.Molecule||(n.Molecule={})),(function(y){class _ extends n.Create({name:"Volume",typeClass:"Object"}){}y.Data=_;class g extends n.Create({name:"Lazy Volume",typeClass:"Object"}){}y.Lazy=g;class a extends o({name:"Volume 3D"}){}y.Representation3D=a})(n.Volume||(n.Volume={})),(function(y){class _ extends n.Create({name:"Shape Provider",typeClass:"Object"}){}y.Provider=_;class g extends o({name:"Shape 3D"}){}y.Representation3D=g})(n.Shape||(n.Shape={}))})(t||(Iu.PluginStateObject=t={}));var r;return(function(n){n.CreateBuiltIn=e.StateTransformer.factory("ms-plugin"),n.BuiltIn=e.StateTransformer.builderFactory("ms-plugin")})(r||(Iu.PluginStateTransform=r={})),Iu}var E5;function die(){return E5||(E5=1,(function(e){Object.defineProperty(e,"__esMo
4121dule",{value:!0}),e.ExternalVolumeColorThemeProvider=e.ExternalVolumeColorThemeParams=void 0,e.ExternalVolumeColorTheme=g;const t=vt(),r=ms(),n=Ne(),i=sn(),c=zt(),o=Ge(),s=ir(),h=Ut(),f=l2(),y=jt(),_="Assigns a color based on volume value at a given vertex.";e.ExternalVolumeColorThemeParams={volume:n.ParamDefinition.ValueRef(a=>a.state.data.select(f.StateSelection.Generators.rootsOfType(y.PluginStateObject.Volume.Data)).filter(p=>{var u;return(u=p.obj)===null||u===void 0?void 0:u.data}).map(p=>{var u,m;return[p.transform.ref,(m=(u=p.obj)===null||u===void 0?void 0:u.label)!==null&&m!==void 0?m:"<unknown>"]}),(a,d)=>d(a)),coloring:n.ParamDefinition.MappedStatic("absolute-value",{"absolute-value":n.ParamDefinition.Group({domain:n.ParamDefinition.MappedStatic("auto",{custom:n.ParamDefinition.Interval([-1,1],{step:.001}),auto:n.ParamDefinition.Group({symmetric:n.ParamDefinition.Boolean(!1,{description:"If true the automatic range is determined as [-|max|, |max|]."})})}),list:n.ParamDefinition.ColorList("red-white-blue",{presetKind:"scale"})}),"relative-value":n.ParamDefinition.Group({domain:n.ParamDefinition.MappedStatic("auto",{custom:n.ParamDefinition.Interval([-1,1],{step:.001}),auto:n.ParamDefinition.Group({symmetric:n.ParamDefinition.Boolean(!1,{description:"If true the automatic range is determined as [-|max|, |max|]."})})}),list:n.ParamDefinition.ColorList("red-white-blue",{presetKind:"scale"})})}),defaultColor:n.ParamDefinition.Color((0,t.Color)(13421772)),normalOffset:n.ParamDefinition.Numeric(0,{min:0,max:20,step:.1},{description:"Offset vertex position along its normal by given amount."}),usePalette:n.ParamDefinition.Boolean(!1,{description:"Use a palette to color at the pixel level."})};function g(a,d){let p;try{p=d.volume.getValue()}catch{}let u,m;const{normalOffset:v,defaultColor:b,usePalette:P}=d;if(p){const C=d.coloring.params,{stats:l}=p.grid,S=C.domain.name==="custom"?C.domain.params:[l.min,l.max],T=d.coloring.name==="relative-value";if(C.domain.name==="auto"&&T&&(S[0]=(S[0]-l.mean)/l.sigma,S[1]=(S[1]-l.mean)/l.sigma),C.domain.name==="auto"&&C.domain.params.symmetric){const D=Math.max(Math.abs(S[0]),Math.abs(S[1]));S[0]=-D,S[1]=D}const A=t.ColorScale.create({domain:S,listOrName:C.list.colors}),x=(0,o.Vec3)(),M=i.Grid.makeGetTrilinearlyInterpolated(p.grid,T?"relative":"none");u=D=>{if(!(0,c.isPositionLocation)(D))return b;v>0?o.Vec3.scaleAndAdd(x,D.position,D.normal,v):o.Vec3.copy(x,D.position);const V=M(x);return Number.isNaN(V)?b:P?(0,s.clamp)((V-S[0])/(S[1]-S[0]),0,1)*r.ColorTheme.PaletteScale:A.color(V)},m=P?{colors:C.list.colors.map(D=>Array.isArray(D)?D[0]:D),filter:C.list.kind==="set"?"nearest":"linear"}:void 0}else u=()=>b;return{factory:g,granularity:"vertex",preferSmoothing:!0,color:u,palette:m,props:d,description:_}}e.ExternalVolumeColorThemeProvider={name:"external-volume",label:"External Volume",category:h.ColorThemeCategory.Misc,factory:g,getParams:()=>e.ExternalVolumeColorThemeParams,defaultValues:n.ParamDefinition.getDefaultValues(e.ExternalVolumeColorThemeParams),isApplicable:a=>!0}})(z3)),z3}var $3={},B5;function fie(){return B5||(B5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CartoonColorThemeProvider=e.CartoonColorThemeParams=void 0,e.getCartoonColorThemeParams=l,e.CartoonColorTheme=A;const t=Ne(),r=Uf(),n=wS(),i=Gt(),c=ES(),o=s2(),s=BS(),h=RS(),f=OS(),y=Ut(),_=pQ(),g=hQ(),a=mQ(),d=o2(),p=Dn(),u=TQ(),m=PQ(),v=xQ(),b=gQ(),P=AQ(),C="Uses separate themes for coloring mainchain and sidechain visuals.";e.CartoonColorThemeParams={mainchain:t.ParamDefinition.MappedStatic("molecule-type",{uniform:t.ParamDefinition.Group(n.UniformColorThemeParams),"chain-id":t.ParamDefinition.Group(r.ChainIdColorThemeParams),"entity-id":t.ParamDefinition.Group(c.EntityIdColorThemeParams),"entity-source":t.ParamDefinition.Group(s.EntitySourceColorThemeParams),"molecule-type":t.ParamDefinition.Group(o.MoleculeTypeColorThemeParams),"model-index":t.ParamDefinition.Group(h.ModelIndexColorThemeParams),"structure-index":t.ParamDefinition.Group(f.StructureIndexColorThemeParams),"secondary-structure":t.ParamDefinition.Group(g.SecondaryStructureColorThemeParams),"trajectory-index":t.ParamDefinition.Group(d.TrajectoryIndexColorThemeParams)}),sidechain:t.ParamDefinition.MappedStatic("residue-name",{uniform:t.ParamDefinition.Group(n.UniformColorThemeParams),"residue-name":t.ParamDefinition.Group(_.ResidueNameColorThemeParams),"element-symbol":t.ParamDefinition.Group(a.ElementSymbolColorThemeParams),hydrophobicity:t.ParamDefinition.Group(u.HydrophobicityColorThemeParams),uncertainty:t.ParamDefinition.Group(m.UncertaintyColorThemeParams),occupancy:t.ParamDefinition.Group(v.OccupancyColorThemeParams),"sequence-id":t.ParamDefinition.Group(b.SequenceIdColorThemeParams),"partial-charge":t.ParamDefinition.Group(P.PartialChargeColorThemeParams)})};function l(x){return t.ParamDefinition.clone(e.CartoonColorThemeParams)}function S(x,M){switch(M.name){case"uniform":return(0,n.UniformColorTheme)(x,M.params);case"chain-id":return(0,r.ChainIdColorTheme)(x,M.params);case"entity-id":return(0,c.EntityIdColorTheme)(x,M.params);case"entity-source":return(0,s.EntitySourceColorTheme)(x,M.params);case"molecule-type":return(0,o.MoleculeTypeColorTheme)(x,M.params);case"model-index":return(0,h.ModelIndexColorTheme)(x,M.params);case"structure-index":return(0,f.StructureIndexColorTheme)(x,M.params);case"secondary-structure":return(0,g.SecondaryStructureColorTheme)(x,M.params);case"trajectory-index":return(0,d.TrajectoryIndexColorTheme)(x,M.params);default:(0,i.assertUnreachable)(M)}}function T(x,M){switch(M.name){case"uniform":return(0,n.UniformColorTheme)(x,M.params);case"residue-name":return(0,_.ResidueNameColorTheme)(x,M.params);case"element-symbol":return(0,a.ElementSymbolColorTheme)(x,M.params);case"hydrophobicity":return(0,u.HydrophobicityColorTheme)(x,M.params);case"uncertainty":return(0,m.UncertaintyColorTheme)(x,M.params);case"occupancy":return(0,v.OccupancyColorTheme)(x,M.params);case"sequence-id":return(0,b.SequenceIdColorTheme)(x,M.params);case"partial-charge":return(0,P.PartialChargeColorTheme)(x,M.params);default:(0,i.assertUnreachable)(M)}}function A(x,M){var D,V,R,E;const I=S(x,M.mainchain),B=T(x,M.sidechain),w=(0,p.hash2)((D=I.contextHash)!==null&&D!==void 0?D:0,(V=B.contextHash)!==null&&V!==void 0?V:0);function O(L,U){return U?I.color(L,!1):B.color(L,!1)}let F=I.legend;return((R=I.legend)===null||R===void 0?void 0:R.kind)==="table-legend"&&((E=B.legend)===null||E===void 0?void 0:E.kind)==="table-legend"&&(F={kind:"table-legend",table:[...I.legend.table,...B.legend.table]}
4121),{factory:A,granularity:"group",preferSmoothing:!1,color:O,props:M,contextHash:w,description:C,legend:F}}e.CartoonColorThemeProvider={name:"cartoon",label:"Cartoon",category:y.ColorThemeCategory.Misc,factory:A,getParams:l,defaultValues:t.ParamDefinition.getDefaultValues(e.CartoonColorThemeParams),isApplicable:x=>!!x.structure}})($3)),$3}var X3={},R5;function mie(){return R5||(R5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.FormalChargeColorThemeProvider=e.FormalChargeColorThemeParams=void 0,e.getFormalChargeColorThemeParams=h,e.FormalChargeColorTheme=y;const t=vt(),r=Ke(),n=Ne(),i=Ut(),c=pa(),o=(0,t.Color)(16777113),s="Assigns a color based on the formal charge of an atom.";e.FormalChargeColorThemeParams={domain:n.ParamDefinition.Interval([-3,3]),list:n.ParamDefinition.ColorList({kind:"set",colors:c.ColorLists["red-white-blue"].list})};function h(_){return e.FormalChargeColorThemeParams}function f(_,g){return r.Unit.isAtomic(_)?_.model.atomicHierarchy.atoms.pdbx_formal_charge.value(g):0}function y(_,g){const a=t.ColorScale.create({domain:g.domain,listOrName:g.list.colors});function d(p){if(r.StructureElement.Location.is(p)){const u=f(p.unit,p.element);return u!==void 0?a.color(u):o}else if(r.Bond.isLocation(p)){const u=f(p.aUnit,p.aUnit.elements[p.aIndex]);return u!==void 0?a.color(u):o}return o}return{factory:y,granularity:"group",preferSmoothing:!0,color:d,props:g,description:s,legend:a?a.legend:void 0}}e.FormalChargeColorThemeProvider={name:"formal-charge",label:"Formal Charge",category:i.ColorThemeCategory.Atom,factory:y,getParams:h,defaultValues:n.ParamDefinition.getDefaultValues(e.FormalChargeColorThemeParams),isApplicable:_=>!!_.structure&&_.structure.models.some(g=>g.atomicHierarchy.atoms.pdbx_formal_charge.isDefined)}})(X3)),X3}var K3={},Y3={},Q3={},Z3={},O5;function pie(){if(O5)return Z3;O5=1,Object.defineProperty(Z3,"__esModule",{value:!0});const e=$D(),t=sI(),r=Ke(),n=dt(),i=Hi(),c=ui(),o=ma(),s=Dn(),h=iI(),f=Vt(),y=t.QuerySymbolRuntime.Const,_=t.QuerySymbolRuntime.Dynamic,g=[y(e.MolScriptSymbolTable.core.type.bool,function(v,b){return!!b[0](v)}),y(e.MolScriptSymbolTable.core.type.num,function(v,b){return+b[0](v)}),y(e.MolScriptSymbolTable.core.type.str,function(v,b){return""+b[0](v)}),y(e.MolScriptSymbolTable.core.type.list,function(v,b){return t.QueryRuntimeArguments.forEachEval(b,v,(P,C,l)=>l[C]=P,[])}),y(e.MolScriptSymbolTable.core.type.set,function(v,b){return t.QueryRuntimeArguments.forEachEval(b,v,function(C,l,S){return S.add(C)},new Set)}),y(e.MolScriptSymbolTable.core.type.regex,function(v,b){return new RegExp(b[0](v),b[1]&&b[1](v)||"")}),y(e.MolScriptSymbolTable.core.type.bitflags,function(v,b){return+b[0](v)}),y(e.MolScriptSymbolTable.core.type.compositeKey,function(v,b){return t.QueryRuntimeArguments.forEachEval(b,v,(P,C,l)=>l[C]=""+P,[]).join("-")}),y(e.MolScriptSymbolTable.core.logic.not,(m,v)=>!v[0](m)),y(e.MolScriptSymbolTable.core.logic.and,(m,v)=>{if(typeof v.length=="number"){for(let b=0,P=v.length;b<P;b++)if(!v[b](m))return!1}else for(const b of Object.keys(v))if(!v[b](m))return!1;return!0}),y(e.MolScriptSymbolTable.core.logic.or,(m,v)=>{if(typeof v.length=="number"){for(let b=0,P=v.length;b<P;b++)if(v[b](m))return!0}else for(const b of Object.keys(v))if(v[b](m))return!0;return!1}),y(e.MolScriptSymbolTable.core.rel.eq,(m,v)=>v[0](m)===v[1](m)),y(e.MolScriptSymbolTable.core.rel.neq,(m,v)=>v[0](m)!==v[1](m)),y(e.MolScriptSymbolTable.core.rel.lt,(m,v)=>v[0](m)<v[1](m)),y(e.MolScriptSymbolTable.core.rel.lte,(m,v)=>v[0](m)<=v[1](m)),y(e.MolScriptSymbolTable.core.rel.gr,(m,v)=>v[0](m)>v[1](m)),y(e.MolScriptSymbolTable.core.rel.gre,(m,v)=>v[0](m)>=v[1](m)),y(e.MolScriptSymbolTable.core.rel.inRange,(m,v)=>{const b=v[0](m);return b>=v[1](m)&&b<=v[2](m)}),y(e.MolScriptSymbolTable.core.math.add,(m,v)=>{let b=0;if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b+=v[P](m);else for(const P of Object.keys(v))b+=v[P](m);return b}),y(e.MolScriptSymbolTable.core.math.sub,(m,v)=>{let b=0;if(typeof v.length=="number"){if(v.length===1)return-v[0](m);b=v[0](m)||0;for(let P=1,C=v.length;P<C;P++)b-=v[P](m)}else{const P=Object.keys(v);if(P.length===1)return-v[P[0]](m);b=v[P[0]](m)||0;for(let C=1,l=P.length;C<l;C++)b-=v[P[C]](m)}return b}),y(e.MolScriptSymbolTable.core.math.mult,(m,v)=>{let b=1;if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b*=v[P](m);else for(const P of Object.keys(v))b*=v[P](m);return b}),y(e.MolScriptSymbolTable.core.math.div,(m,v)=>v[0](m)/v[1](m)),y(e.MolScriptSymbolTable.core.math.pow,(m,v)=>Math.pow(v[0](m),v[1](m))),y(e.MolScriptSymbolTable.core.math.mod,(m,v)=>v[0](m)%v[1](m)),y(e.MolScriptSymbolTable.core.math.min,(m,v)=>{let b=Number.POSITIVE_INFINITY;if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b=Math.min(v[P](m),b);else for(const P of Object.keys(v))b=Math.min(v[P](m),b);return b}),y(e.MolScriptSymbolTable.core.math.max,(m,v)=>{let b=Number.NEGATIVE_INFINITY;if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b=Math.max(v[P](m),b);else for(const P of Object.keys(v))b=Math.max(v[P](m),b);return b}),y(e.MolScriptSymbolTable.core.math.cantorPairing,(m,v)=>(0,s.cantorPairing)(v[0](m),v[1](m))),y(e.MolScriptSymbolTable.core.math.sortedCantorPairing,(m,v)=>(0,s.sortedCantorPairing)(v[0](m),v[1](m))),y(e.MolScriptSymbolTable.core.math.invertCantorPairing,(m,v)=>(0,s.invertCantorPairing)([0,0],v[0](m))),y(e.MolScriptSymbolTable.core.math.floor,(m,v)=>Math.floor(v[0](m))),y(e.MolScriptSymbolTable.core.math.ceil,(m,v)=>Math.ceil(v[0](m))),y(e.MolScriptSymbolTable.core.math.roundInt,(m,v)=>Math.round(v[0](m))),y(e.MolScriptSymbolTable.core.math.trunc,(m,v)=>Math.trunc(v[0](m))),y(e.MolScriptSymbolTable.core.math.abs,(m,v)=>Math.abs(v[0](m))),y(e.MolScriptSymbolTable.core.math.sign,(m,v)=>Math.sign(v[0](m))),y(e.MolScriptSymbolTable.core.math.sqrt,(m,v)=>Math.sqrt(v[0](m))),y(e.MolScriptSymbolTable.core.math.cbrt,(m,v)=>Math.cbrt(v[0](m))),y(e.MolScriptSymbolTable.core.math.sin,(m,v)=>Math.sin(v[0](m))),y(e.MolScriptSymbolTable.core.math.cos,(m,v)=>Math.cos(v[0](m))),y(e.MolScriptSymbolTable.core.math.tan,(m,v)=>Math.tan(v[0](m))),y(e.MolScriptSymbolTable.core.math.asin,(m,v)=>Math.asin(v[0](m))),y(e.MolScriptSymbolTable.core.math.acos,(m,v)=>Math.acos(v[0](m))),y(e.MolScriptSymbolTable.core.math.atan,(m,v)=>Math.atan(v[0](m))),y(e.MolScriptSymbolTable.core.math.sinh,(m,v)=>Math.sinh(v[0](m))),y(e.MolScriptSymbolTable.core.math.cosh,(m,v)=>Math.cosh(v[0](m))),y(e.MolScriptSymbolTable.core.math.tanh,(m,v)=>Math.tanh(v[0](m))),y(e.MolScriptSymbolTable.core.math.exp,(m,v)=>Math.exp(v[0](m))),y(e.MolScriptSymbolTable.core.math.log,(m,v)=>Math.log(v[0](m))),y(e.MolScriptSymbolTable.core.math.log10,(m,v)=>Math.log10(v[0](m))),y(e.MolScriptSymbolTable.core.math.atan2,(m,v)=>Math.atan2(v[0](m),v[1](m))),y(e.MolScriptSymbolTable.core.str.match,(m,v)=>v[0](m).test(v[1](m))),y(e.MolScriptSymbolTable.core.str.concat,(m,v)=>{const b=[];if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b.push(v[P](m).toString());else for(const P of Object.keys(v))b.push(v[P](m).toString());return b.join("")}),y(e.MolScriptSymbolTable.core.list.getAt,(m,v)=>v[0](m)[v[1](m)]),y(e.MolScriptSymbolTable.core.list.equal,(m,v)=>(0,f.arrayEqual)(v[0](m),v[1](m))),y(e.MolScriptSymbolTable.core.set.has,function(v,b){return b[0](v).has(b[1](v))}),y(e.MolScriptSymbolTable.core.set.isSubset,function(v,b){return i.SetUtils.isSuperset(b[1](v),b[0](v))}
4121),y(e.MolScriptSymbolTable.core.flags.hasAny,(m,v)=>{const b=v[1](m),P=v[0](m);return b?(P&b)!==0:!!P}),y(e.MolScriptSymbolTable.core.flags.hasAll,(m,v)=>{const b=v[1](m),P=v[0](m);return b?(P&b)===b:!P}),y(e.MolScriptSymbolTable.structureQuery.type.elementSymbol,(m,v)=>(0,n.ElementSymbol)(v[0](m))),y(e.MolScriptSymbolTable.structureQuery.type.atomName,(m,v)=>(0,c.upperCaseAny)(v[0](m))),y(e.MolScriptSymbolTable.structureQuery.type.bondFlags,(m,v)=>{let b=n.BondType.Flag.None;if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b=d(b,v[P](m));else for(const P of Object.keys(v))b=d(b,v[P](m));return b}),y(e.MolScriptSymbolTable.structureQuery.type.ringFingerprint,(m,v)=>r.UnitRing.elementFingerprint(u(m,v))),y(e.MolScriptSymbolTable.structureQuery.type.secondaryStructureFlags,(m,v)=>{let b=n.SecondaryStructureType.Flag.None;if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b=p(b,v[P](m));else for(const P of Object.keys(v))b=p(b,v[P](m));return b}),_(e.MolScriptSymbolTable.structureQuery.filter.pick,(m,v)=>r.Queries.filters.pick(v[0],v.test)(m)),_(e.MolScriptSymbolTable.structureQuery.filter.first,(m,v)=>r.Queries.filters.first(v[0])(m)),_(e.MolScriptSymbolTable.structureQuery.filter.withSameAtomProperties,(m,v)=>r.Queries.filters.withSameAtomProperties(v[0],v.source,v.property)(m)),_(e.MolScriptSymbolTable.structureQuery.filter.intersectedBy,(m,v)=>r.Queries.filters.areIntersectedBy(v[0],v.by)(m)),_(e.MolScriptSymbolTable.structureQuery.filter.within,(m,v)=>{var b,P,C;return r.Queries.filters.within({query:v[0],target:v.target,minRadius:(b=v["min-radius"])===null||b===void 0?void 0:b.call(v,m),maxRadius:(P=v["max-radius"])===null||P===void 0?void 0:P.call(v,m),elementRadius:v["atom-radius"],invert:(C=v.invert)===null||C===void 0?void 0:C.call(v,m)})(m)}),_(e.MolScriptSymbolTable.structureQuery.filter.isConnectedTo,(m,v)=>{var b,P;return r.Queries.filters.isConnectedTo({query:v[0],target:v.target,disjunct:(b=v.disjunct)===null||b===void 0?void 0:b.call(v,m),invert:(P=v.invert)===null||P===void 0?void 0:P.call(v,m),bondTest:v["bond-test"]})(m)}),_(e.MolScriptSymbolTable.structureQuery.generator.atomGroups,function(v,b){return r.Queries.generators.atoms({entityTest:b["entity-test"],chainTest:b["chain-test"],residueTest:b["residue-test"],atomTest:b["atom-test"],groupBy:b["group-by"]})(v)}),_(e.MolScriptSymbolTable.structureQuery.generator.all,function(v){return r.Queries.generators.all(v)}),_(e.MolScriptSymbolTable.structureQuery.generator.empty,function(v){return r.Queries.generators.none(v)}),_(e.MolScriptSymbolTable.structureQuery.generator.bondedAtomicPairs,function(v,b){return r.Queries.generators.bondedAtomicPairs(b&&b[0])(v)}),_(e.MolScriptSymbolTable.structureQuery.generator.rings,function(v,b){var P,C;return r.Queries.generators.rings((P=b?.fingerprint)===null||P===void 0?void 0:P.call(b,v),(C=b?.["only-aromatic"])===null||C===void 0?void 0:C.call(b,v))(v)}),_(e.MolScriptSymbolTable.structureQuery.generator.queryInSelection,function(v,b){var P;return r.Queries.generators.querySelection(b[0],b.query,(P=b["in-complement"])===null||P===void 0?void 0:P.call(b,v))(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.includeSurroundings,function(v,b){return r.Queries.modifiers.includeSurroundings(b[0],{radius:b.radius(v),wholeResidues:!!(b["as-whole-residues"]&&b["as-whole-residues"](v)),elementRadius:b["atom-radius"]})(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.surroundingLigands,function(v,b){return r.Queries.modifiers.surroundingLigands({query:b[0],radius:b.radius(v),includeWater:!!(b["include-water"]&&b["include-water"](v))})(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.wholeResidues,function(v,b){return r.Queries.modifiers.wholeResidues(b[0])(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.union,function(v,b){return r.Queries.modifiers.union(b[0])(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.expandProperty,function(v,b){return r.Queries.modifiers.expandProperty(b[0],b.property)(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.exceptBy,function(v,b){return r.Queries.modifiers.exceptBy(b[0],b.by)(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.includeConnected,function(v,b){var P,C;return r.Queries.modifiers.includeConnected({query:b[0],bondTest:b["bond-test"],wholeResidues:!!(b["as-whole-residues"]&&b["as-whole-residues"](v)),layerCount:b["layer-count"]&&b["layer-count"](v)||1,fixedPoint:(C=(P=b["fixed-point"])===null||P===void 0?void 0:P.call(b,v))!==null&&C!==void 0?C:!1})(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.intersectBy,function(v,b){return r.Queries.modifiers.intersectBy(b[0],b.by)(v)}),_(e.MolScriptSymbolTable.structureQuery.combinator.merge,(m,v)=>r.Queries.combinators.merge(v)(m)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.elementSymbol,a(r.StructureProperties.atom.type_symbol)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.vdw,(m,v)=>(0,o.VdwRadius)(r.StructureProperties.atom.type_symbol(v&&v[0]&&v[0](m)||m.element))),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.mass,(m,v)=>(0,o.AtomWeight)(r.StructureProperties.atom.type_symbol(v&&v[0]&&v[0](m)||m.element))),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.atomicNumber,(m,v)=>(0,o.AtomNumber)(r.StructureProperties.atom.type_symbol(v&&v[0]&&v[0](m)||m.element))),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.x,a(r.StructureProperties.atom.x)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.y,a(r.StructureProperties.atom.y)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.z,a(r.StructureProperties.atom.z)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.sourceIndex,a(r.StructureProperties.atom.sourceIndex)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.operatorName,a(r.StructureProperties.unit.operator_name)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.instanceId,a(r.StructureProperties.unit.instance_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.operatorKey,a(r.StructureProperties.unit.operator_key)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.modelIndex,a(r.StructureProperties.unit.model_index)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.modelLabel,a(r.StructureProperties.unit.model_label)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.modelEntryId,a(r.StructureProperties.unit.model_entry_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.atomKey,(m,v)=>{const b=v&&v[0]&&v[0](m)||m.element;return(0,s.cantorPairing)(b.unit.id,b.element)}),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.residueKey,(m,v)=>r.StructureElement.residueIndex(v&&v[0]&&v[0](m)||m.element)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.chainKey,(m,v)=>r.StructureElement.chainIndex(v&&v[0]&&v[0](m)||m.element)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityKey,(m,v)=>r.StructureElement.entityIndex(v&&v[0]&&v[0](m)||m.element)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.id,a(r.StructureProperties.atom.id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.isHet,(m,v)=>r.StructureProperties.residue.group_PDB(v&&v[0]&&v[0](m)||m.element)!=="ATOM"),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_atom_id,a(r.StructureProperties.atom.label_atom_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_alt_id,a(r.StructureProperties.atom.label_alt_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_comp_id,a(r.StructureProperties.atom.label_comp_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_seq_id,a(r.StructureProperties.residue.label_seq_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_asym_id,a(r.StructureProperties.chain.label_asym_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_entity_id,a(r.StructureProperties.entity.id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_atom_id,a(r.StructureProperties.atom.auth_atom_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_comp_id,a(r.StructureProperties.atom.auth_comp_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_seq_id,a(r.StructureProperties.residue.auth_seq_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_asym_id,a(r.StructureProperties.chain.auth_asym_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.pdbx_PDB_ins_code,a(r.StructureProperties.residue.pdbx_PDB_ins_code)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.pdbx_formal_charge,a(r.StructureProperties.atom.pdbx_formal_charge)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.occupancy,a(r.StructureProperties.atom.occupancy)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.B_iso_or_equiv,a(r.StructureProperties.atom.B_iso_or_equiv)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityType,a(r.StructureProperties.entity.type)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entitySubtype,a(r.StructureProperties.entity.subtype)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityPrdId,a(r.StructureProperties.entity.prd_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityDescription,a(r.StructureProperties.entity.pdbx_description)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.objectPrimitive,a(r.StructureProperties.unit.object_primitive)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.isNonStandard,a(r.StructureProperties.residue.isNonStandard)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.secondaryStructureKey,a(r.StructureProperties.residue.secondary_structure_key)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.secondaryStructureFlags,a(r.StructureProperties.residue.secondary_structure_type)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.chemCompType,a(r.StructureProperties.residue.chem_comp_type)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.residueSourceIndex,a(r.StructureProperties.residue.residueSourceIndex)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.ihm.hasSeqId,function(v,b){const P=v.element,C=b&&b[0]&&b[0](v);return P.unit.kind===r.Unit.Kind.Atomic?C===r.StructureProperties.residue.label_seq_id(P):C>=r.StructureProperties.coarse.seq_id_begin(P)&&C<=r.StructureProperties.coarse.seq_id_end(P)}),_(e.MolScriptSymbolTable.structureQuery.atomProperty.ihm.overlapsSeqIdRange,function(v,b){var P,C;const l=v.element,S=(P=b&&b.beg&&b.beg(v))!==null&&P!==void 0?P:-Number.MAX_VALUE,T=(C=b&&b.end&&b.end(v))!==null&&C!==void 0?C:Number.MAX_VALUE;if(l.unit.kind===r.Unit.Kind.Atomic){const M=r.StructureProperties.residue.label_seq_id(l);return M>=S&&M<=T}const A=r.StructureProperties.coarse.seq_id_begin(l),x=r.StructureProperties.coarse.seq_id_end(l);return A>=S&&A<=T||x>=S&&x<=T||A<=S&&x>=T}),_(e.MolScriptSymbolTable.structureQuery.atomSet.atomCount,function(v,b){return r.Queries.atomset.atomCount(v)}),_(e.MolScriptSymbolTable.structureQuery.atomSet.countQuery,function(v,b){return r.Queries.atomset.countQuery(b[0])(v)}),_(e.MolScriptSymbolTable.structureQuery.atomSet.propertySet,function(v,b){return r.Queries.atomset.propertySet(b[0])(v)}),_(e.MolScriptSymbolTable.structureQuery.bondProperty.order,(m,v)=>m.atomicBond.order),_(e.MolScriptSymbolTable.structureQuery.bondProperty.flags,(m,v)=>m.atomicBond.type),_(e.MolScriptSymbolTable.structureQuery.bondProperty.key,(m,v)=>m.atomicBond.key),_(e.MolScriptSymbolTable.structureQuery.bondProperty.atomA,(m,v)=>m.atomicBond.a),_(e.MolScriptSymbolTable.structureQuery.bondProperty.atomB,(m,v)=>m.atomicBond.b),_(e.MolScriptSymbolTable.structureQuery.bondProperty.length,(m,v)=>m.atomicBond.length),_(e.MolScriptSymbolTable.internal.generator.bundleElement,function(v,b){return(0,h.bundleElementImpl)(b.groupedUnits(v),b.ranges(v),b.set(v))}),_(e.MolScriptSymbolTable.internal.generator.bundle,function(v,b){return(0,h.bundleGenerator)(b.elements(v))(v)}),_(e.MolScriptSymbolTable.internal.generator.current,function(v,b){return v.tryGetCurrentSelection()})];function a(m){return(v,b)=>m(b&&b[0]&&b[0](v)||v.element)}function d(m,v){return m|(n.BondType.isName(v)?n.BondType.fromName(v):n.BondType.Flag.None)}function p(m,v){switch(v.toLowerCase()){case"helix":return m|n.SecondaryStructureType.Flag.Helix;case"alpha":return m|n.SecondaryStructureType.Flag.Helix|n.SecondaryStructureType.Flag.HelixAlpha;case"pi":return m|n.SecondaryStructureType.Flag.Helix|n.SecondaryStructureType.Flag.HelixPi;case"310":return m|n.SecondaryStructureType.Flag.Helix|n.SecondaryStructureType.Flag.Helix3Ten;case"beta":return m|n.SecondaryStructureType.Flag.Beta;case"strand":return m|n.SecondaryStructureType.Flag.Beta|n.SecondaryStructureType.Flag.BetaStrand;case"sheet":return m|n.SecondaryStructureType.Flag.Beta|n.SecondaryStructureType.Flag.BetaSheet;case"turn":return m|n.SecondaryStructureType.Flag.Turn;case"bend":return m|n.SecondaryStructureType.Flag.Bend;case"coil":return m|n.SecondaryStructureType.Flag.NA;default:return m}}function u(m,v){const b=[];if(!v)return b;if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b.push(v[P](m));else{const P=Object.keys(v);for(let C=1,l=P.length;C<l;C++)b.push(v[P[C]](m))}return b}return(function(){for(const m of g)t.DefaultQueryRuntimeTable.addSymbol(m)})(),Z3}var k5;function LS(){return k5||(k5=1,(function(e){Object.defineProperty(e,"__esMo
4121dule",{value:!0}),At.__exportStar(sI(),e),pie()})(Q3)),Q3}var F1={},It={},zo={},L1={},N1={},F5;function NS(){if(F5)return N1;F5=1,Object.defineProperty(N1,"__esModule",{value:!0}),N1.SimpleBuffer=void 0;const e=et();var t;return(function(r){function n(f){const y=new DataView(f.buffer);return Object.assign(f.subarray(0),{readInt8:_=>y.getInt8(_),readUInt8:_=>y.getUint8(_),writeInt8:(_,g)=>y.setInt8(g,_),writeUInt8:(_,g)=>y.setUint8(g,_),readInt16LE:_=>y.getInt16(_,!0),readInt32LE:_=>y.getInt32(_,!0),readUInt16LE:_=>y.getUint16(_,!0),readUInt32LE:_=>y.getUint32(_,!0),readFloatLE:_=>y.getFloat32(_,!0),readDoubleLE:_=>y.getFloat64(_,!0),writeInt16LE:(_,g)=>y.setInt16(g,_,!0),writeInt32LE:(_,g)=>y.setInt32(g,_,!0),writeUInt16LE:(_,g)=>y.setUint16(g,_,!0),writeUInt32LE:(_,g)=>y.setUint32(g,_,!0),writeFloatLE:(_,g)=>y.setFloat32(g,_,!0),writeDoubleLE:(_,g)=>y.setFloat64(g,_,!0),readInt16BE:_=>y.getInt16(_,!1),readInt32BE:_=>y.getInt32(_,!1),readUInt16BE:_=>y.getUint16(_,!1),readUInt32BE:_=>y.getUint32(_,!1),readFloatBE:_=>y.getFloat32(_,!1),readDoubleBE:_=>y.getFloat64(_,!1),writeInt16BE:(_,g)=>y.setInt16(g,_,!1),writeInt32BE:(_,g)=>y.setInt32(g,_,!1),writeUInt16BE:(_,g)=>y.setUint16(g,_,!1),writeUInt32BE:(_,g)=>y.setUint32(g,_,!1),writeFloatBE:(_,g)=>y.setFloat32(g,_,!1),writeDoubleBE:(_,g)=>y.setFloat64(g,_,!1),copy:(_,g,a,d)=>(g=(0,e.defaults)(g,0),a=(0,e.defaults)(a,0),d=(0,e.defaults)(d,f.length),_.set(f.subarray(a,d),g),d-a)})}r.fromUint8Array=n;function i(f){return n(new Uint8Array(f))}r.fromArrayBuffer=i;function c(f){return f}r.fromBuffer=c,r.IsNativeEndianLittle=new Uint16Array(new Uint8Array([18,52]).buffer)[0]===13330;function o(f,y,_,g,a){for(let d=0,p=_;d<p;d+=g)for(let u=0;u<g;u++)y[a+d+g-u-1]=f[a+d+u]}r.flipByteOrder=o;function s(f,y=0,_){const g=new Int16Array(f,y,_);for(let a=0,d=g.length;a<d;++a){const p=g[a];g[a]=(p&255)<<8|p>>8&255}}r.flipByteOrderInPlace2=s;function h(f,y,_,g,a){r.IsNativeEndianLittle||!_||g<=1||o(f,y,_,g,a)}r.ensureLittleEndian=h})(t||(N1.SimpleBuffer=t={})),N1}var L5;function EQ(){if(L5)return L1;L5=1,Object.defineProperty(L1,"__esModule",{value:!0}),L1.FileHandle=void 0;const e=et(),t=NS();var r;return(function(n){function i(c,o){return{name:o,readBuffer:(s,h,f,y)=>{let _,g;if(typeof h=="number"){f=(0,e.defaults)(f,h);const a=s,d=Math.min(c.length,a+f);_=d-a,g=t.SimpleBuffer.fromUint8Array(new Uint8Array(c.buffer,a,d-a))}else{f=(0,e.defaults)(f,h.length);const a=s,d=Math.min(c.length,a+f);h.set(c.subarray(a,d),y),_=d-a,g=h}return f!==_&&console.warn(`byteCount ${f} and bytesRead ${_} differ`),Promise.resolve({bytesRead:_,buffer:g})},writeBuffer:(s,h,f)=>(f=(0,e.defaults)(f,h.length),console.error(".writeBuffer not implemented for FileHandle.fromBuffer"),Promise.resolve(0)),writeBufferSync:(s,h,f)=>(f=(0,e.defaults)(f,h.length),console.error(".writeSync not implemented for FileHandle.fromBuffer"),0),close:e.noop}}n.fromBuffer=i})(r||(L1.FileHandle=r={})),L1}var Ia={},N5;function BQ(){if(N5)return Ia;N5=1,Object.defineProperty(Ia,"__esModule",{value:!0}),Ia.TypedArrayValueType=void 0,Ia.getElementByteSize=r,Ia.makeTypedArray=n,Ia.createTypedArray=i,Ia.createTypedArrayBufferContext=c,Ia.readTypedArray=o;const e=NS();var t;(function(s){s.Float32="float32",s.Int8="int8",s.Int16="int16",s.Uint16="uint16"})(t||(Ia.TypedArrayValueType=t={}));function r(s){return s===t.Float32?4:s===t.Int16||s===t.Uint16?2:1}function n(s,h,f=0,y){return s===t.Float32?new Float32Array(h,f,y):s===t.Int16?new Int16Array(h,f,y):s===t.Uint16?new Uint16Array(h,f,y):new Int8Array(h,f,y)}function i(s,h){switch(s){case t.Float32:return new Float32Array(new ArrayBuffer(4*h));case t.Int8:return new Int8Array(new ArrayBuffer(1*h));case t.Int16:return new Int16Array(new ArrayBuffer(2*h));case t.Uint16:return new Uint16Array(new ArrayBuffer(2*h))}throw Error(`${s} is not a supported value format.`)}function c(s,h){const f=r(h),y=new ArrayBuffer(f*s),_=e.SimpleBuffer.fromArrayBuffer(y),g=e.SimpleBuffer.IsNativeEndianLittle?y:new ArrayBuffer(f*s);return{type:h,elementByteSize:f,readBuffer:_,valuesBuffer:new Uint8Array(g),values:n(h,g)}}
4121async function o(s,h,f,y,_,g){return await h.readBuffer(f,s.readBuffer,y,_),s.elementByteSize>1&&(g!==void 0&&g!==e.SimpleBuffer.IsNativeEndianLittle||!e.SimpleBuffer.IsNativeEndianLittle)&&e.SimpleBuffer.flipByteOrder(s.readBuffer,s.valuesBuffer,y,s.elementByteSize,_),s.values}return Ia}var q5;function RQ(){if(q5)return zo;q5=1,Object.defineProperty(zo,"__esModule",{value:!0}),zo.readCcp4Header=c,zo.readCcp4Slices=o,zo.getCcp4ValueType=f,zo.getCcp4DataOffset=y,zo.parseFile=g,zo.parse=a;const e=nt(),t=Tr(),r=EQ(),n=NS(),i=BQ();async function c(d){const{buffer:u}=await d.readBuffer(0,1024),m=String.fromCharCode(u.readUInt8(208),u.readUInt8(209),u.readUInt8(210),u.readUInt8(211)||32);if(m!=="MAP ")throw new Error('ccp4 format error, missing "MAP " string');const v=[u.readUInt8(212),u.readUInt8(213)];let b=!1;v[0]===68&&v[1]===65?b=!0:v[0]===17&&v[1]===17?b=!1:u.readInt32LE(12)<=16&&(b=!0);const P=b?S=>u.readInt32LE(S*4):S=>u.readInt32BE(S*4),C=b?S=>u.readFloatLE(S*4):S=>u.readFloatBE(S*4);return{header:{NC:P(0),NR:P(1),NS:P(2),MODE:P(3),NCSTART:P(4),NRSTART:P(5),NSSTART:P(6),NX:P(7),NY:P(8),NZ:P(9),xLength:C(10),yLength:C(11),zLength:C(12),alpha:C(13),beta:C(14),gamma:C(15),MAPC:P(16),MAPR:P(17),MAPS:P(18),AMIN:C(19),AMAX:C(20),AMEAN:C(21),ISPG:P(22),NSYMBT:P(23),LSKFLG:P(24),SKWMAT:[],SKWTRN:[],userFlag1:P(39),userFlag2:P(40),originX:C(49),originY:C(50),originZ:C(51),MAP:m,MACHST:v,ARMS:C(54)},littleEndian:b}}async function o(d,p,u,m,v,b){if(h(d)){const P=3*v;await u.readBuffer(m,p.readBuffer,v,P);const C=new Int8Array(p.valuesBuffer.buffer,P),l=(d.AMAX-d.AMIN)/255,S=.5*(d.AMIN+d.AMAX+l);for(let T=0,A=v;T<A;++T)p.values[T]=l*C[T]+S}else await(0,i.readTypedArray)(p,u,m,v,0,b)}function s(d){switch(d){case 0:return i.TypedArrayValueType.Int8;case 1:return i.TypedArrayValueType.Int16;case 2:return i.TypedArrayValueType.Float32;case 3:throw new Error("mode 3 unsupported, complex 16-bit integers");case 4:throw new Error("mode 4 unsupported, complex 32-bit reals");case 6:i.TypedArrayValueType.Uint16;case 16:throw new Error("mode 16 unsupported, unsigned char * 3 (for rgb data, non-standard)")}throw new Error(`unknown mode '${d}'`)}function h(d){return d.userFlag1===-128&&d.userFlag2===127}function f(d){return h(d)?i.TypedArrayValueType.Float32:s(d.MODE)}function y(d){return 256*4+d.NSYMBT}async function _(d,p,u){await u.update({message:"Parsing CCP4/MRC/MAP file..."});const{header:m,littleEndian:v}=await c(d),b=y(m),P=s(m.MODE),C=f(m),l=m.NC*m.NR*m.NS,S=(0,i.getElementByteSize)(P),T=l*S,A=(0,i.createTypedArrayBufferContext)(l,C);return o(m,A,d,b,T,v),{header:m,values:A.values,name:d.name}}function g(d,p){return e.Task.create("Parse CCP4/MRC/MAP",async u=>{try{return t.ReaderResult.success(await _(d,p,u))}catch(m){return t.ReaderResult.error(m)}})}function a(d,p){return g(r.FileHandle.fromBuffer(n.SimpleBuffer.fromUint8Array(d),p),d.length)}return zo}var J3={},U5;function hie(){return U5||(U5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.dsn6HeaderSize=void 0,e.readDsn6Header=f,e.parseDsn6Values=y,e.getDsn6Counts=_,e.parseFile=a,e.parse=d;const t=nt(),r=Tr(),n=EQ(),i=NS(),c=QD();e.dsn6HeaderSize=512;function o(p){return{xStart:parseInt(p.substr(10,5)),yStart:parseInt(p.substr(15,5)),zStart:parseInt(p.substr(20,5)),xExtent:parseInt(p.substr(32,5)),yExtent:parseInt(p.substr(38,5)),zExtent:parseInt(p.substr(42,5)),xRate:parseInt(p.substr(52,5)),yRate:parseInt(p.substr(58,5)),zRate:parseInt(p.substr(62,5)),xlen:parseFloat(p.substr(73,10)),ylen:parseFloat(p.substr(83,10)),zlen:parseFloat(p.substr(93,10)),alpha:parseFloat(p.substr(103,10)),beta:parseFloat(p.substr(113,10)),gamma:parseFloat(p.substr(123,10)),divisor:parseFloat(p.substr(138,12)),summand:parseInt(p.substr(155,8)),sigma:parseFloat(p.substr(170,12))}}function s(p,u){const m=u?b=>p.readInt16LE(b*2):b=>p.readInt16BE(b*2),v=1/m(17);return{xStart:m(0),yStart:m(1),zStart:m(2),xExtent:m(3),yExtent:m(4),zExtent:m(5),xRate:m(6),yRate:m(7),zRate:m(8),xlen:m(9)*v,ylen:m(10)*v,zlen:m(11)*v,alpha:m(12)*v,beta:m(13)*v,gamma:m(14)*v,divisor:m(15)/100,summand:m(16),sigma:void 0}}function h(p){const{xExtent:u,yExtent:m,zExtent:v}=p,b=Math.ceil(u/8),P=Math.ceil(m/8),C=Math.ceil(v/8);return{xBlocks:b,yBlocks:P,zBlocks:C}}async function f(p){const{buffer:u}=await p.readBuffer(0,e.dsn6HeaderSize),m=(0,c.uint8ToString)(u),v=m.startsWith(":-)"),b=v||u.readInt16LE(36)===100;return{header:v?o(m):s(u,b),littleEndian:b}}async function y(p,u,m,v){v||i.SimpleBuffer.flipByteOrderInPlace2(u.buffer);const{divisor:b,summand:P,xExtent:C,yExtent:l,zExtent:S}=p,{xBlocks:T,yBlocks:A,zBlocks:x}=h(p);let M=0;for(let D=0;D<x;++D)for(let V=0;V<A;++V)for(let R=0;R<T;++R)for(let E=0;E<8;++E){const I=8*D+E;for(let B=0;B<8;++B){const w=8*V+B;for(let O=0;O<8;++O){const F=8*R+O;if(F<C&&w<l&&I<S){const L=(F*l+w)*S+I;m[L]=(u[M]-P)/b,++M}else{M+=8-O;break}}}}}function _(p){const{xExtent:u,yExtent:m,zExtent:v}=p,{xBlocks:b,yBlocks:P,zBlocks:C}=h(p),l=u*m*v,S=b*8*P*8*C*8,A=S*1;return{count:S,byteCount:A,valueCount:l}}async function g(p,u,m){await m.update({message:"Parsing DSN6/BRIX file..."});const{header:v,littleEndian:b}=await f(p),{buffer:P}=await p.readBuffer(e.dsn6HeaderSize,u-e.dsn6HeaderSize),{valueCount:C}=_(v),l=new Float32Array(C);return await y(v,P,l,b),{header:v,values:l,name:p.name}}function a(p,u){return t.Task.create("Parse DSN6/BRIX",async m=>{try{return r.ReaderResult.success(await g(p,u,m))}catch(v){return r.ReaderResult.error(v)}})}function d(p,u){return a(n.FileHandle.fromBuffer(i.SimpleBuffer.fromUint8Array(p),u),p.length)}})(J3)),J3}var cP={},eA={},j5;function gie(){return j5||(j5=1,(function(e){Object.defineProperty(e,"__esMo
4121dule",{value:!0}),e.PlyTypes=e.PlyTypeByteLength=void 0,e.PlyType=t,e.PlyFile=r,e.PlyTypeByteLength={char:1,uchar:1,short:2,ushort:2,int:4,uint:4,float:4,double:8,int8:1,uint8:1,int16:2,uint16:2,int32:4,uint32:4,float32:4,float64:8},e.PlyTypes=new Set(Object.keys(e.PlyTypeByteLength));function t(n){if(!e.PlyTypes.has(n))throw new Error(`unknown ply type '${n}'`);return n}function r(n,i,c){const o=new Map;for(let s=0,h=i.length;s<h;++s)o.set(i[s],n[s]);return{comments:c,elementNames:i,getElement:s=>o.get(s)}}})(eA)),eA}var G5;function yie(){if(G5)return cP;G5=1,Object.defineProperty(cP,"__esModule",{value:!0}),cP.parsePly=C;const e=Tr(),t=nt(),r=gie(),n=Or(),i=lt(),c=Wi(),o=$s();function s(l,S,T){const A=(0,n.Tokenizer)(l);return{data:l,tokenizer:A,runtimeCtx:S,format:T??"ascii",formatPreset:T!==void 0,littleEndian:T!=="binary_big_endian",binaryData:void 0,binaryOffset:0,comments:[],elementSpecs:[],elements:[]}}function h(l){const S=l.data.indexOf("end_header",l.position);if(S===-1)throw new Error("no 'end_header' record found");l.tokenStart=l.position,l.tokenEnd=S,l.position=S,n.Tokenizer.eatLine(l)}function f(l){const{tokenizer:S,comments:T,elementSpecs:A}=l;h(S);const x=n.Tokenizer.getTokenString(S).split(/\r?\n/);if(x[0]!=="ply")throw new Error("data not starting with 'ply'");if(!l.formatPreset){const E=x[1];if(E==="format ascii 1.0")l.format="ascii",l.littleEndian=!0;else if(E==="format binary_little_endian 1.0")l.format="binary_little_endian",l.littleEndian=!0;else if(E==="format binary_big_endian 1.0")l.format="binary_big_endian",l.littleEndian=!1;else throw new Error(`unsupported PLY format '${E}'`)}let M,D,V;function R(){if(M!==void 0&&D!==void 0&&V!==void 0){let E=!1;for(let I=0,B=V.length;I<B;++I)if(V[I].kind==="list"){E=!0;break}E&&V.length,E?A.push({kind:"list",name:M,count:D,property:V[0]}):A.push({kind:"table",name:M,count:D,properties:V})}}for(let E=2,I=x.length;E<I;++E){const B=x[E],w=B.split(" ");if(B.startsWith("comment"))T.push(B.substr(8));else if(B.startsWith("element"))R(),V=[],M=w[1],D=parseInt(w[2]);else if(B.startsWith("property")){if(V===void 0)throw new Error("properties outside of element");w[1]==="list"?V.push({kind:"list",countType:(0,r.PlyType)(w[2]),dataType:(0,r.PlyType)(w[3]),name:w[4]}
4121):V.push({kind:"column",type:(0,r.PlyType)(w[1]),name:w[2]})}else B.startsWith("end_header")?R():console.warn("unknown header line")}}function y(l){const{elementSpecs:S}=l;if(l.format==="ascii")for(let T=0,A=S.length;T<A;++T){const x=S[T];x.kind==="table"?u(l,x):x.kind==="list"&&m(l,x)}else for(let T=0,A=S.length;T<A;++T){const x=S[T];x.kind==="table"?d(l,x):x.kind==="list"&&p(l,x)}}function _(l){switch(l){case"char":case"uchar":case"int8":case"uint8":case"short":case"ushort":case"int16":case"uint16":case"int":case"uint":case"int32":case"uint32":return i.Column.Schema.int;case"float":case"double":case"float32":case"float64":return i.Column.Schema.float}}function g(l,S,T,A){switch(T){case"char":case"int8":return l.getInt8(S);case"uchar":case"uint8":return l.getUint8(S);case"short":case"int16":return l.getInt16(S,A);case"ushort":case"uint16":return l.getUint16(S,A);case"int":case"int32":return l.getInt32(S,A);case"uint":case"uint32":return l.getUint32(S,A);case"float":case"float32":return l.getFloat32(S,A);case"double":case"float64":return l.getFloat64(S,A)}}function a(l,S){switch(l){case"char":case"int8":return new Int8Array(S);case"uchar":case"uint8":return new Uint8Array(S);case"short":case"int16":return new Int16Array(S);case"ushort":case"uint16":return new Uint16Array(S);case"int":case"int32":return new Int32Array(S);case"uint":case"uint32":return new Uint32Array(S);case"float":case"float32":return new Float32Array(S);case"double":case"float64":return new Float64Array(S)}}function d(l,S){const{elements:T,binaryData:A,littleEndian:x}=l,{count:M,properties:D}=S,V=D.length,R=[],E=[],I=new Map,B=[];for(let O=0;O<V;O++)B.push(a(D[O].type,M));const w=new DataView(A.buffer,A.byteOffset);for(let O=0;O<M;O++)for(let F=0;F<V;F++){const{type:L}=D[F];B[F][O]=g(w,l.binaryOffset,L,x),l.binaryOffset+=r.PlyTypeByteLength[L]}for(let O=0;O<V;O++){const{type:F,name:L}=D[O],U=_(F),q=i.Column.ofArray({array:B[O],schema:U});R.push(L),E.push(F),I.set(L,q)}T.push({kind:"table",rowCount:M,propertyNames:R,propertyTypes:E,getProperty:O=>I.get(O)})}function p(l,S){const{elements:T,binaryData:A,littleEndian:x}=l,{count:M,property:D}=S,{countType:V,dataType:R}=D,E=new DataView(A.buffer,A.byteOffset),I=[],B=new Uint32Array(M+1);for(let O=0;O<M;O++){const F=g(E,l.binaryOffset,V,x);l.binaryOffset+=r.PlyTypeByteLength[V],B[O+1]=B[O]+F;for(let L=0;L<F;L++)I.push(g(E,l.binaryOffset,R,x)),l.binaryOffset+=r.PlyTypeByteLength[R]}const w={entries:[],count:0};T.push({kind:"list",rowCount:M,name:D.name,type:D.dataType,value:O=>{const F=B[O],L=B[O+1];w.count=L-F;for(let U=F;U<L;U++)w.entries[U-F]=I[U];return w}})}function u(l,S){const{elements:T,tokenizer:A}=l,{count:x,properties:M}=S,D=M.length,V=[],R=[],E=[],I=new Map;for(let B=0,w=D;B<w;++B){const O=n.TokenBuilder.create(A.data,x*2);E.push(O)}for(let B=0,w=x;B<w;++B)for(let O=0,F=D;O<F;++O)n.Tokenizer.skipWhitespace(A),n.Tokenizer.markStart(A),n.Tokenizer.eatValue(A),n.TokenBuilder.addUnchecked(E[O],A.tokenStart,A.tokenEnd);for(let B=0,w=D;B<w;++B){const{type:O,name:F}=M[B],L=(0,c.TokenColumn)(E[B],_(O));V.push(F),R.push(O),I.set(F,L)}T.push({kind:"table",rowCount:x,propertyNames:V,propertyTypes:R,getProperty:B=>I.get(B)})}function m(l,S){const{elements:T,tokenizer:A}=l,{count:x,property:M}=S,D=n.TokenBuilder.create(A.data,x*2*3),V=new Uint32Array(x+1);let R=0;for(let B=0,w=x;B<w;++B){for(n.Tokenizer.skipWhitespace(A),n.Tokenizer.markStart(A);n.Tokenizer.skipWhitespace(A)!==10;)++R,n.Tokenizer.markStart(A),n.Tokenizer.eatValue(A),n.TokenBuilder.addToken(D,A);V[B+1]=R}const E={entries:[],count:0},I=(0,c.TokenColumn)(D,_(M.dataType));T.push({kind:"list",rowCount:x,name:M.name,type:M.dataType,value:B=>{const w=V[B]+1,O=I.value(w-1);for(let F=w,L=w+O;F<L;++F)E.entries[F-w]=I.value(F);return E.count=O,E}})}async function v(l,S){let T,A,x=0,M;if(l instanceof Uint8Array){x=P(l);const w=(0,o.utf8Read)(l,0,x),O=b(w);M=O,O!=="ascii"?(T=w,A=l):T=(0,o.utf8ReadLong)(l,0,l.length)}else T=l;const D=s(T,S,M);A!==void 0&&(D.binaryData=A,D.binaryOffset=x),S.update({message:"Parsing...",current:0,max:l.length}),f(D),y(D);const{elements:V,elementSpecs:R,comments:E}=D,I=R.map(w=>w.name),B=(0,r.PlyFile)(V,I,E);return e.ReaderResult.success(B)}function b(l){const S=l.indexOf(`
4122`),T=S===-1?"":l.substring(S+1,l.indexOf(`
4123`,S+1)).replace(/\r$/,"");return T==="format binary_little_endian 1.0"?"binary_little_endian":T==="format binary_big_endian 1.0"?"binary_big_endian":"ascii"}function P(l){const S=[101,110,100,95,104,101,97,100,101,114],T=S.length;for(let A=0;A<=l.length-T;A++){if(A!==0&&l[A-1]!==10)continue;let x=!0;for(let D=0;D<T;D++)if(l[A+D]!==S[D]){x=!1;break}if(!x)continue;let M=A+T;return M<l.length&&l[M]===13&&M++,M<l.length&&l[M]===10&&M++,M}throw new Error("no 'end_header' record found")}function C(l){return t.Task.create("Parse PLY",async S=>await v(l,S))}return cP}var uP={},z5;
4123function vie(){if(z5)return uP;z5=1,Object.defineProperty(uP,"__esModule",{value:!0}),uP.parseObj=E;const e=Tr(),t=nt(),r=_t(),n=Or(),i=La(),c=256;function o(I){return{tokenizer:(0,n.Tokenizer)(I),positions:r.ChunkedArray.create(Float32Array,3,1024),normals:r.ChunkedArray.create(Float32Array,3,1024),vertexColors:r.ChunkedArray.create(Float32Array,3,1024),positionIndices:r.ChunkedArray.create(Int32Array,3,1024),normalIndices:r.ChunkedArray.create(Int32Array,3,1024),faceGroups:r.ChunkedArray.create(Int32Array,1,1024),facePos:new Int32Array(c),faceNorm:new Int32Array(c),materialNames:[],materialMap:new Map,currentMaterialIdx:0,hasVertexColors:!1,warnings:[]}}const s=118,h=110,f=102,y=117,_=115,g=101,a=109,d=116,p=108,u=35,m=10,v=13,b=32,P=9,C=47;function l(I){const{data:B}=I;for(;I.position<I.length;){const w=B.charCodeAt(I.position);if(w===m){++I.position,++I.lineNumber;return}if(w===v){++I.position,++I.lineNumber,I.position<I.length&&B.charCodeAt(I.position)===m&&++I.position;return}++I.position}}function S(I){const{data:B}=I;for(;I.position<I.length;){const w=B.charCodeAt(I.position);if(w!==b&&w!==P)return;++I.position}}function T(I){S(I);const{data:B}=I;if(I.position>=I.length)return!1;const w=B.charCodeAt(I.position);if(w===m||w===v||w===u)return!1;for(I.tokenStart=I.position;I.position<I.length;){const O=B.charCodeAt(I.position);if(O===b||O===P||O===m||O===v||O===u)break;++I.position}return I.tokenEnd=I.position,I.tokenEnd>I.tokenStart}function A(I,B,w,O,F,L){const{data:U}=I;let q=0;for(;q<O&&T(I);){const N=I.tokenStart,k=I.tokenEnd;let j=-1;for(let z=N;z<k;++z)if(U.charCodeAt(z)===C){j=z;break}let H,G=-1;if(j===-1){const z=(0,i.parseInt)(U,N,k);H=z<0?F+z:z-1}else{const z=(0,i.parseInt)(U,N,j);H=z<0?F+z:z-1;let W=-1;for(let X=j+1;X<k;++X)if(U.charCodeAt(X)===C){W=X;break}if(W!==-1&&W+1<k){const X=(0,i.parseInt)(U,W+1,k);G=X<0?L+X:X-1}}B[q]=H,w[q]=G,++q}return q}function x(I){const{tokenizer:B}=I;if(T(B)){const w=B.data.substring(B.tokenStart,B.tokenEnd);if(!I.materialMap.has(w)){const O=I.materialNames.length;I.materialMap.set(w,O),I.materialNames.push(w)}I.currentMaterialIdx=I.materialMap.get(w)}l(B)}function M(I){const{tokenizer:B}=I;let w=0,O=0,F=0;T(B)&&(w=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd)),T(B)&&(O=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd)),T(B)&&(F=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd)),r.ChunkedArray.add3(I.positions,w,O,F);let L=1,U=1,q=1;if(T(B)){const N=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd);if(T(B)){const k=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd);T(B)&&(L=N,U=k,q=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd),I.hasVertexColors=!0)}}r.ChunkedArray.add3(I.vertexColors,L,U,q),l(B)}function D(I){const{tokenizer:B}=I;let w=0,O=0,F=0;T(B)&&(w=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd)),T(B)&&(O=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd)),T(B)&&(F=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd)),r.ChunkedArray.add3(I.normals,w,O,F),l(B)}function V(I){const{tokenizer:B}=I,w=I.positions.elementCount,O=I.normals.elementCount,F=A(B,I.facePos,I.faceNorm,c,w,O);if(F<3){I.warnings.push(`Line ${B.lineNumber}: degenerate face with ${F} vertices, skipped`),l(B);return}F===c&&T(B)&&I.warnings.push(`Line ${B.lineNumber}: face with more than ${c} vertices truncated`);const L=I.facePos[0],U=I.faceNorm[0],q=I.currentMaterialIdx;for(let N=1;N<F-1;++N)r.ChunkedArray.add3(I.positionIndices,L,I.facePos[N],I.facePos[N+1]),r.ChunkedArray.add3(I.normalIndices,U,I.faceNorm[N],I.faceNorm[N+1]),r.ChunkedArray.add(I.faceGroups,q);l(B)}async function R(I,B){const w=o(I),{tokenizer:O}=w,F=1e5;for(;O.position<O.length;){const G=O.data.charCodeAt(O.position);if(G===m){++O.position,++O.lineNumber;continue}if(G===v){++O.position,++O.lineNumber,O.position<O.length&&O.data.charCodeAt(O.position)===m&&++O.position;continue}if(G===b||G===P){S(O);continue}if(G===u){l(O);continue}const z=O.position+1<O.length?O.data.charCodeAt(O.position+1):-1;if(G===f&&(z===b||z===P))O.position+=2,V(w);else if(G===y){const W=O.position;W+6<O.length&&O.data.charCodeAt(W+1)===_&&O.data.charCodeAt(W+2)===g&&O.data.charCodeAt(W+3)===a&&O.data.charCodeAt(W+4)===d&&O.data.charCodeAt(W+5)===p&&(O.data.charCodeAt(W+6)===b||O.data.charCodeAt(W+6)===P)?(O.position+=7,x(w)):l(O)}else G===s?z===b||z===P?(O.position+=2,M(w)):z===h?(O.position+=2,D(w)):l(O):l(O);B.shouldUpdate&&O.lineNumber%F===0&&await B.update({message:"Parsing OBJ",current:O.position,max:O.length})}const L=r.ChunkedArray.compact(w.positions),U=r.ChunkedArray.compact(w.normals),q=r.ChunkedArray.compact(w.positionIndices),N=r.ChunkedArray.compact(w.normalIndices),k=r.ChunkedArray.compact(w.faceGroups),j=w.hasVertexColors?r.ChunkedArray.compact(w.vertexColors):new Float32Array(0),H={positions:L,normals:U,positionIndices:q,normalIndices:N,positionCount:w.positions.elementCount,normalCount:w.normals.elementCount,triangleCount:q.length/3,vertexColors:j,materialNames:w.materialNames,faceGroups:k};return e.ReaderResult.success(H,w.warnings)}function E(I){return t.Task.create("Parse OBJ",async B=>await R(I,B))}return uP}var lP={},dP={},H5;function bie(){if(H5)return dP;
4123H5=1,Object.defineProperty(dP,"__esModule",{value:!0}),dP.toVtkDataType=t;const e=new Set(["Float32","Float64","Int8","UInt8","Int16","UInt16","Int32","UInt32","Int64","UInt64"]);function t(r){return r!==void 0&&e.has(r)?r:"Float32"}return dP}var tA={},W5;function _ie(){return W5||(W5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.B64_DECODE=void 0,e.decodeB64Bytes=t,e.decodeB64Str=r,e.B64_DECODE=new Int8Array(256).fill(-1),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("").forEach((n,i)=>e.B64_DECODE[n.charCodeAt(0)]=i);function t(n,i,c){if(c===0)return new Uint8Array(0);const o=new Uint8Array(c);let s=i,h=0;for(;h<c;){const f=e.B64_DECODE[n[s++]],y=e.B64_DECODE[n[s++]],_=e.B64_DECODE[n[s++]],g=e.B64_DECODE[n[s++]];if(f<0||y<0)break;h<c&&(o[h++]=f<<2|y>>4),_>=0&&h<c&&(o[h++]=(y&15)<<4|_>>2),g>=0&&h<c&&(o[h++]=(_&3)<<6|g)}return o}function r(n,i,c){if(c===0)return new Uint8Array(0);const o=new Uint8Array(c);let s=i,h=0;for(;h<c;){const f=e.B64_DECODE[n.charCodeAt(s++)],y=e.B64_DECODE[n.charCodeAt(s++)],_=e.B64_DECODE[n.charCodeAt(s++)],g=e.B64_DECODE[n.charCodeAt(s++)];if(f<0||y<0)break;h<c&&(o[h++]=f<<2|y>>4),_>=0&&h<c&&(o[h++]=(y&15)<<4|_>>2),g>=0&&h<c&&(o[h++]=(_&3)<<6|g)}return o}})(tA)),tA}var $5;function Sie(){if($5)return lP;$5=1,Object.defineProperty(lP,"__esModule",{value:!0}),lP.parseVtp=I;const e=Tr(),t=nt(),r=iS(),n=bie(),i=La(),c=_ie(),o=Gt(),s=lt();function h(B,w){return{name:B.name,type:B.type,numberOfComponents:B.numberOfComponents,rangeMin:B.rangeMin,rangeMax:B.rangeMax,values:s.Column.ofFloatArray(w)}}function f(B,w){if(B.byteOffset%4===0)return new Float32Array(B.buffer,B.byteOffset,w);const O=B.slice(0,w*4);return new Float32Array(O.buffer,0,w)}function y(B,w){const O=new DataView(B.buffer,B.byteOffset,B.byteLength),F=new Int32Array(w);for(let L=0;L<w;L++)F[L]=O.getUint32(L*8,!0);return F}function _(B,w,O){const F=new DataView(B.buffer,B.byteOffset,B.byteLength);switch(w){case"Float32":return f(B,O);case"Float64":{const L=new Float64Array(O);for(let U=0;U<O;U++)L[U]=F.getFloat64(U*8,!0);return L}case"Int8":{const L=new Int8Array(O);for(let U=0;U<O;U++)L[U]=F.getInt8(U);return L}case"UInt8":{const L=new Uint8Array(O);for(let U=0;U<O;U++)L[U]=F.getUint8(U);return L}case"Int16":{const L=new Int16Array(O);for(let U=0;U<O;U++)L[U]=F.getInt16(U*2,!0);return L}case"UInt16":{const L=new Uint16Array(O);for(let U=0;U<O;U++)L[U]=F.getUint16(U*2,!0);return L}case"Int32":{const L=new Int32Array(O);for(let U=0;U<O;U++)L[U]=F.getInt32(U*4,!0);return L}case"UInt32":{const L=new Uint32Array(O);for(let U=0;U<O;U++)L[U]=F.getUint32(U*4,!0);return L}case"Int64":case"UInt64":{const L=new Float64Array(O);for(let U=0;U<O;U++){const q=F.getUint32(U*8,!0),N=F.getInt32(U*8+4,!0);L[U]=N*4294967296+q}return L}default:return(0,o.assertUnreachable)(w)}}function g(B,w,O){return w==="Float32"?f(B,O):new Float32Array(_(B,w,O))}function a(B,w){if(w==="Int64"||w==="UInt64")return y(B,B.byteLength/8);if(w==="Int32"||w==="UInt32"){if(B.byteOffset%4===0)return new Int32Array(B.buffer,B.byteOffset,B.byteLength/4);const O=B.slice();return new Int32Array(O.buffer,0,O.byteLength/4)}throw new Error(`Unsupported connectivity type: "${w}". Expected Int32, UInt32, Int64, or UInt64.`)}function d(B,w,O=0){const F=w.split("").map(U=>U.charCodeAt(0)),L=F.length;for(let U=O,q=B.length-L;U<=q;U++){let N=!0;for(let k=0;k<L;k++)if(B[U+k]!==F[k]){N=!1;break}if(N)return U}return-1}function p(B){var w,O,F;const L=d(B,"<AppendedData");if(L===-1)throw new Error("AppendedData section not found");let U=L;for(;U<B.length&&B[U]!==62;)U++;const q=new TextDecoder("ascii").decode(B.subarray(L,U+1)),{attrs:N}=v(q,13),k=((w=N.get("encoding"))!==null&&w!==void 0?w:"raw").toLowerCase();for(U++;U<B.length&&(B[U]===32||B[U]===9||B[U]===10||B[U]===13);)U++;if(U>=B.length||B[U]!==95)throw new Error(`Expected '_' before appended data, got 0x${(F=(O=B[U])===null||O===void 0?void 0:O.toString(16))!==null&&F!==void 0?F:"EOF"}`);const j=U+1;return{encoding:k,rawByteStart:j,rawData:B}}function u(B){return B===32||B===9||B===10||B===13}function m(B,w,O){const F="<"+w,L=F.length;e:for(let U=O,q=B.length-L;U<=q;
4123U++){if(B.charCodeAt(U)!==60)continue;for(let k=1;k<L;k++)if(B.charCodeAt(U+k)!==F.charCodeAt(k))continue e;const N=B.charCodeAt(U+L);if(u(N)||N===62||N===47)return U}return-1}function v(B,w){const O=new Map,F=B.length;for(;w<F;){for(;w<F&&u(B.charCodeAt(w));)w++;const L=B.charCodeAt(w);if(L===62||L===47)break;const U=w;for(;w<F&&B.charCodeAt(w)!==61&&!u(B.charCodeAt(w))&&B.charCodeAt(w)!==62&&B.charCodeAt(w)!==47;)w++;const q=B.slice(U,w);for(;w<F&&u(B.charCodeAt(w));)w++;for(w<F&&B.charCodeAt(w)===61&&w++;w<F&&u(B.charCodeAt(w));)w++;if(w<F&&(B.charCodeAt(w)===34||B.charCodeAt(w)===39)){const N=B.charCodeAt(w++),k=w;for(;w<F&&B.charCodeAt(w)!==N;)w++;q&&O.set(q,B.slice(k,w)),w<F&&w++}}return{attrs:O,tagEnd:w}}function b(B,w){var O,F,L;const U=m(B,w,0);if(U===-1)return[];let q=U+1+w.length;for(;q<B.length&&B.charCodeAt(q)!==62;)q++;q++;const N=B.indexOf("</"+w+">",q);if(N===-1)return[];const k=[];for(;q<N;){const j=m(B,"DataArray",q);if(j===-1||j>=N)break;const{attrs:H,tagEnd:G}=v(B,j+10);let z="",W;if(B.charCodeAt(G)===47)W=G+2;else{W=G+1;const te=B.indexOf("</DataArray>",W);te!==-1?(z=B.slice(W,te),W=te+12):W=N}q=W;const X=(O=H.get("format"))!==null&&O!==void 0?O:"binary",Y=H.get("offset"),K=X==="binary"?z.replace(/\s/g,""):"",Q=X==="ascii"?z:void 0;if(X==="appended"&&Y===void 0||X==="binary"&&K.length===0)continue;const J=H.get("RangeMin"),ae=H.get("RangeMax");k.push({name:(F=H.get("Name"))!==null&&F!==void 0?F:"",type:(0,n.toVtkDataType)(H.get("type")),numberOfComponents:parseInt((L=H.get("NumberOfComponents"))!==null&&L!==void 0?L:"1",10),format:X,offset:Y!==void 0?parseInt(Y,10):-1,rangeMin:J!==void 0?parseFloat(J):void 0,rangeMax:ae!==void 0?parseFloat(ae):void 0,...K.length>0?{inlineBase64:K}:{},...Q!==void 0?{asciiText:Q}:{}})}return k}function P(B){var w,O,F,L,U;const q=m(B,"VTKFile",0);if(q===-1)throw new Error("Cannot find VTKFile element in VTP header");const{attrs:N}=v(B,q+8),k=m(B,"Piece",0);if(k===-1)throw new Error("Cannot find Piece element in VTP header");const{attrs:j}=v(B,k+6),H=j.get("NumberOfPoints"),G=j.get("NumberOfPolys");if(!H||!G)throw new Error("Cannot parse NumberOfPoints/NumberOfPolys from VTP Piece element");return{nPoints:parseInt(H,10),nCells:parseInt(G,10),nVerts:parseInt((w=j.get("NumberOfVerts"))!==null&&w!==void 0?w:"0",10),nLines:parseInt((O=j.get("NumberOfLines"))!==null&&O!==void 0?O:"0",10),nStrips:parseInt((F=j.get("NumberOfStrips"))!==null&&F!==void 0?F:"0",10),byteOrder:(L=N.get("byte_order"))!==null&&L!==void 0?L:"LittleEndian",compressor:(U=N.get("compressor"))!==null&&U!==void 0?U:"",headerType:N.get("header_type")==="UInt64"?"UInt64":"UInt32",pointDataArrays:b(B,"PointData"),cellDataArrays:b(B,"CellData"),pointsArrays:b(B,"Points"),polysArrays:b(B,"Polys")}}async function C(B,w,O,F,L="UInt32",U=!0){const q=L==="UInt64"?8:4,N=O+F;if(!U){const ie=(0,c.decodeB64Bytes)(w,N,q),Z=new DataView(ie.buffer,ie.byteOffset,q).getUint32(0,!0);return(0,c.decodeB64Bytes)(w,N+Math.ceil(q/3)*4,Z)}const k=(0,c.decodeB64Bytes)(w,N,3*q),j=new DataView(k.buffer,k.byteOffset,3*q),H=j.getUint32(0,!0),G=j.getUint32(q,!0),z=j.getUint32(2*q,!0);if(H===0)return new Uint8Array(0);const W=(3+H)*q,X=(0,c.decodeB64Bytes)(w,N,W),Y=new DataView(X.buffer,X.byteOffset,X.byteLength),K=new Uint32Array(H);let Q=0;for(let ie=0;ie<H;ie++)K[ie]=Y.getUint32((3+ie)*q,!0),Q+=K[ie];const J=(0,c.decodeB64Bytes)(w,N+Math.ceil(W/3)*4,Q),ae=z>0?(H-1)*G+z:H*G,te=new Uint8Array(ae);let ne=0,$=0;for(let ie=0;ie<H;ie++){const Z=K[ie],re=await(0,r.inflate)(B,new Uint8Array(J.buffer,J.byteOffset+ne,Z));te.set(re,$),$+=re.length,ne+=Z}return te}async function l(B,w,O,F="UInt32",L=!0){const U=F==="UInt64"?8:4;if(!L){const ne=(0,c.decodeB64Str)(w,O,U),$=new DataView(ne.buffer,ne.byteOffset,U).getUint32(0,!0);return(0,c.decodeB64Str)(w,O+Math.ceil(U/3)*4,$)}const q=(0,c.decodeB64Str)(w,O,3*U),N=new DataView(q.buffer,q.byteOffset,3*U),k=N.getUint32(0,!0),j=N.getUint32(U,!0),H=N.getUint32(2*U,!0);if(k===0)return new Uint8Array(0);const G=(3+k)*U,z=(0,c.decodeB64Str)(w,O,G),W=new DataView(z.buffer,z.byteOffset,z.byteLength),X=new Uint32Array(k);let Y=0;for(let ne=0;ne<k;ne++)X[ne]=W.getUint32((3+ne)*U,!0),Y+=X[ne];const K=(0,c.decodeB64Str)(w,O+Math.ceil(G/3)*4,Y),Q=H>0?(k-1)*j+H:k*j,J=new Uint8Array(Q);let ae=0,te=0;for(let ne=0;ne<k;ne++){const $=X[ne],ie=await(0,r.inflate)(B,new Uint8Array(K.buffer,K.byteOffset+ae,$));J.set(ie,te),te+=ie.length,ae+=$}return J}async function S(B,w,O,F,L="UInt32",U=!0){const q=L==="UInt64"?8:4,N=O+F,k=new DataView(w.buffer,w.byteOffset,w.b
4123yteLength);if(!U){const J=k.getUint32(N,!0);return new Uint8Array(w.buffer,w.byteOffset+N+q,J).slice()}const j=k.getUint32(N,!0),H=k.getUint32(N+q,!0),G=k.getUint32(N+2*q,!0);if(j===0)return new Uint8Array(0);const z=(3+j)*q,W=new Uint32Array(j);for(let J=0;J<j;J++)W[J]=k.getUint32(N+(3+J)*q,!0);const X=G>0?(j-1)*H+G:j*H,Y=new Uint8Array(X);let K=N+z,Q=0;for(let J=0;J<j;J++){const ae=W[J],te=new Uint8Array(w.buffer,w.byteOffset+K,ae),ne=await(0,r.inflate)(B,te);Y.set(ne,Q),Q+=ne.length,K+=ae}return Y}async function T(B,w,O,F,L){if(O.inlineBase64)return l(B,O.inlineBase64,0,F,L);if(!w)throw new Error(`No data source for array "${O.name}"`);return w.encoding==="base64"?C(B,w.rawData,w.rawByteStart,O.offset,F,L):S(B,w.rawData,w.rawByteStart,O.offset,F,L)}function A(B,w,O,F){let L=0,U=0;const q=B.length;for(;L<q&&U<O;){for(;L<q&&u(B.charCodeAt(L));)L++;if(L>=q)break;const N=L;for(;L<q&&!u(B.charCodeAt(L));)L++;L>N&&(w[U++]=F?(0,i.parseInt)(B,N,L):(0,i.parseFloat)(B,N,L))}}function x(B,w){const O=new Float32Array(w);return A(B,O,w,!1),O}function M(B,w){const O=new Float64Array(w);return A(B,O,w,!1),O}function D(B,w){const O=new Int32Array(w);return A(B,O,w,!0),O}function V(B){let w=0,O=0;const F=B.length;for(;O<F;){for(;O<F&&u(B.charCodeAt(O));)O++;if(O>=F)break;for(w++;
4123O<F&&!u(B.charCodeAt(O));)O++}const L=new Int32Array(w);return A(B,L,w,!0),L}function R(B,w,O){let F=0;for(let k=0;k<O;k++){const j=k>0?w[k-1]:0;F+=Math.max(0,w[k]-j-2)}const L=new Int32Array(3*F),U=new Int32Array(F);let q=0,N=0;for(let k=0;k<O;k++){const j=k>0?w[k-1]:0,H=w[k],G=B[j];for(let z=j+1;z<H-1;z++)L[q++]=G,L[q++]=B[z],L[q++]=B[z+1],U[N++]=k}return{connectivity:L,triangleCellIndex:U}}async function E(B,w){var O,F,L,U,q,N;w.update({message:"Parsing VTP header...",current:0,max:100});const k=d(B,"<AppendedData"),j=k===-1,H=new TextDecoder("ascii").decode(j?B:B.subarray(0,k)),G=P(H);if(G.byteOrder==="BigEndian")throw new Error("BigEndian VTP files are not supported.");if(G.compressor&&G.compressor!=="vtkZLibDataCompressor")throw new Error(`Unsupported VTP compressor: "${G.compressor}". Only vtkZLibDataCompressor is supported.`);G.nVerts+G.nLines+G.nStrips>0&&console.warn(`VTP: file contains ${G.nVerts} verts, ${G.nLines} lines, ${G.nStrips} strips — only Polys are rendered.`);const z=G.headerType,W=!!G.compressor;w.update({message:"Locating binary section...",current:5,max:100});const X=j?null:p(B),Y=(O=G.pointsArrays.find(oe=>oe.name==="Points"))!==null&&O!==void 0?O:G.pointsArrays[0];if(!Y)throw new Error("VTP file missing Points DataArray");w.update({message:"Decoding positions...",current:10,max:100});let K;if(Y.format==="ascii")K=x((F=Y.asciiText)!==null&&F!==void 0?F:"",G.nPoints*3);else{const oe=await T(w,X,Y,z,W);K=g(oe,Y.type,G.nPoints*3)}const Q=G.polysArrays.find(oe=>oe.name==="connectivity"),J=G.polysArrays.find(oe=>oe.name==="offsets");if(!Q||!J)throw new Error("VTP file missing Polys connectivity/offsets DataArrays");w.update({message:"Decoding topology...",current:20,max:100});let ae,te;if(Q.format==="ascii")ae=V((L=Q.asciiText)!==null&&L!==void 0?L:""),te=D((U=J.asciiText)!==null&&U!==void 0?U:"",G.nCells);else{const oe=await T(w,X,Q,z,W),ce=await T(w,X,J,z,W);ae=a(oe,Q.type),te=a(ce,J.type)}const{connectivity:ne,triangleCellIndex:$}=R(ae,te,G.nCells),ie=ne.length/3,Z=new Map;for(let oe=0;oe<G.pointDataArrays.length;oe++){const ce=G.pointDataArrays[oe],ue=G.nPoints*ce.numberOfComponents;w.update({message:`Point data: ${ce.name}...`,current:30+Math.floor(oe/Math.max(1,G.pointDataArrays.length)*30),max:100});let pe;if(ce.format==="ascii")pe=M((q=ce.asciiText)!==null&&q!==void 0?q:"",ue);else{const he=await T(w,X,ce,z,W);pe=_(he,ce.type,ue)}Z.set(ce.name,h(ce,pe))}const re=new Map;for(let oe=0;oe<G.cellDataArrays.length;oe++){const ce=G.cellDataArrays[oe],ue=G.nCells*ce.numberOfComponents;w.update({message:`Cell data: ${ce.name}...`,current:60+Math.floor(oe/Math.max(1,G.cellDataArrays.length)*35),max:100});let pe;if(ce.format==="ascii")pe=M((N=ce.asciiText)!==null&&N!==void 0?N:"",ue);else{const he=await T(w,X,ce,z,W);pe=_(he,ce.type,ue)}re.set(ce.name,h(ce,pe))}return e.ReaderResult.success({numberOfPoints:G.nPoints,numberOfCells:G.nCells,positions:K,connectivity:ne,numberOfTriangles:ie,triangleCellIndex:$,pointData:Z,cellData:re})}function I(B){return t.Task.create("Parse VTP",async w=>await E(B,w))}return lP}var fP={},X5;function Cie(){if(X5)return fP;X5=1,Object.defineProperty(fP,"__esModule",{value:!0}),fP.parsePsf=m;const e=nt(),t=Or(),r=Tr(),n=Wi(),i=lt(),{readLine:c,skipWhitespace:o,eatValue:s,eatLine:h,markStart:f}=t.Tokenizer,y=/\s+/,_=/(^\*|REMARK)*/;function g(v,b){return{tokenizer:v,runtimeCtx:b}}async function a(v,b){const{tokenizer:P}=v,C=t.TokenBuilder.create(P.data,b*2),l=t.TokenBuilder.create(P.data,b*2),S=t.TokenBuilder.create(P.data,b*2),T=t.TokenBuilder.create(P.data,b*2),A=t.TokenBuilder.create(P.data,b*2),x=t.TokenBuilder.create(P.data,b*2),M=t.TokenBuilder.create(P.data,b*2),D=t.TokenBuilder.create(P.data,b*2),{position:V}=P,R=c(P).trim();P.position=V;const E=R.split(y).length===7,I=E?6:8,{length:B}=P;let w=0;return await(0,e.chunkedSubtask)(v.runtimeCtx,1e5,void 0,O=>{const F=Math.min(b-w,O);for(let L=0;L<F;++L){for(let U=0;U<I;++U)if(o(P),f(P),s(P),E)switch(U){case 0:t.TokenBuilder.addUnchecked(C,P.tokenStart,P.tokenEnd);break;case 1:t.TokenBuilder.addUnchecked(S,P.tokenStart,P.tokenEnd);break;case 2:t.TokenBuilder.addUnchecked(A,P.tokenStart,P.tokenEnd);break;case 3:t.TokenBuilder.addUnchecked(x,P.tokenStart,P.tokenEnd);break;case 4:t.TokenBuilder.addUnchecked(M,P.tokenStart,P.tokenEnd);break;case 5:t.TokenBuilder.addUnchecked(D,P.tokenStart,P.tokenEnd);break}else switch(U){case 0:t.TokenBuilder.addUnchecked(C,P.tokenStart,P.tokenEnd);break;case 1:t.TokenBuilder.addUnchecked(l,P.tokenStart,P.tokenEnd);break;case 2:t.TokenBuilder.addUnchecked(S,P.tokenStart,P.tokenEnd);break;case 3:t.TokenBuilder.addUnchecked(T,P.tokenStart,P.tokenEnd);break;case 4:t.TokenBuilder.addUnchecked(A,P.tokenStart,P.tokenEnd);break;case 5:t.TokenBuilder.addUnchecked(x,P.tokenStart,P.tokenEnd);break;case 6:t.TokenBuilder.addUnchecked(M,P.tokenStart,P.tokenEnd);break;case 7:t.TokenBuilder.addUnchecked(D,P.tokenStart,P.tokenEnd);break}h(P),f(P)}return w+=F,F},O=>O.update({message:"Parsing...",current:P.position,max:B}
4123)),{count:b,atomId:(0,n.TokenColumnProvider)(C)(i.Column.Schema.int),segmentName:E?(0,n.TokenColumnProvider)(S)(i.Column.Schema.str):(0,n.TokenColumnProvider)(l)(i.Column.Schema.str),residueId:(0,n.TokenColumnProvider)(S)(i.Column.Schema.int),residueName:E?(0,n.TokenColumnProvider)(S)(i.Column.Schema.str):(0,n.TokenColumnProvider)(T)(i.Column.Schema.str),atomName:(0,n.TokenColumnProvider)(A)(i.Column.Schema.str),atomType:(0,n.TokenColumnProvider)(x)(i.Column.Schema.str),charge:(0,n.TokenColumnProvider)(M)(i.Column.Schema.float),mass:(0,n.TokenColumnProvider)(D)(i.Column.Schema.float)}}async function d(v,b){const{tokenizer:P}=v,C=t.TokenBuilder.create(P.data,b*2),l=t.TokenBuilder.create(P.data,b*2),{length:S}=P;let T=0;return await(0,e.chunkedSubtask)(v.runtimeCtx,10,void 0,A=>{const x=Math.min(b-T,A);for(let M=0;M<x;++M)for(let D=0;D<2;++D)switch(o(P),f(P),s(P),D){case 0:t.TokenBuilder.addUnchecked(C,P.tokenStart,P.tokenEnd);break;case 1:t.TokenBuilder.addUnchecked(l,P.tokenStart,P.tokenEnd);break}return T+=x,x},A=>A.update({message:"Parsing...",current:P.position,max:S})),{count:b,atomIdA:(0,n.TokenColumnProvider)(C)(i.Column.Schema.int),atomIdB:(0,n.TokenColumnProvider)(l)(i.Column.Schema.int)}}function p(v,b){const P=[];for(let C=0;C<b;++C){const l=c(v.tokenizer);P.push(l.replace(_,"").trim())}return P}async function u(v,b){const P=(0,t.Tokenizer)(v),C=g(P,b);let l,S,T;const A=c(C.tokenizer).trim();for(;P.tokenEnd<P.length;){const M=c(C.tokenizer).trim();if(M.includes("!NTITLE")){const D=parseInt(M.split(y)[0]);l=p(C,D)}else if(M.includes("!NATOM")){const D=parseInt(M.split(y)[0]);S=await a(C,D)}else if(M.includes("!NBOND")){const D=parseInt(M.split(y)[0]);T=await d(C,D);break}else M.includes("!NTHETA")||M.includes("!NPHI")||M.includes("!NIMPHI")||M.includes("!NDON")||M.includes("!NACC")||M.includes("!NNB")||M.includes("!NGRP NST2")||M.includes("!MOLNT")||M.includes("!NUMLP NUMLPH")||M.includes("!NCRTERM")}if(l===void 0&&(l=[]),S===void 0)return r.ReaderResult.error("no atoms data");if(T===void 0)return r.ReaderResult.error("no bonds data");const x={id:A,title:l,atoms:S,bonds:T};return r.ReaderResult.success(x)}function m(v){return e.Task.create("Parse PSF",async b=>await u(v,b))}return fP}var mP={},q1={},K5;function Pie(){if(K5)return q1;K5=1,Object.defineProperty(q1,"__esModule",{value:!0}),q1.asciiWrite=e,q1.asciiSlice=t;function e(r,n){for(let i=0,c=n.length;i<c;++i)r[i]=n.charCodeAt(i)}function t(r,n,i){let c="";for(let o=n;o<i;o++)c+=String.fromCharCode(r[o]);return c}return q1}var Y5;function Tie(){if(Y5)return mP;Y5=1,Object.defineProperty(mP,"__esModule",{value:!0}),mP.parseMtz=f;const e=nt(),t=Tr(),r=NS(),n=Pie();function i(y){return y.replace(/\s+$/,"").replace(/\0/g,"").trim()}function c(y,_){const g=y[8],a=y[9];
4123if(g===68&&a===65)return!0;if(g===17&&a===17)return!1;const d=new DataView(y.buffer,y.byteOffset),p=d.getInt32(4,!0),u=d.getInt32(4,!1),m=_/4|0,v=p>=21&&p<=m,b=u>=21&&u<=m;return v&&!b?!0:!(b&&!v)}function o(y){var _;const g=y.trim().split(/\s+/),a=parseInt(g[0],10)||1,d=parseInt(g[3],10)||1,p=y.indexOf("'"),u=y.lastIndexOf("'"),m=p>=0&&u>p?y.slice(p+1,u):(_=g[4])!==null&&_!==void 0?_:"P 1";return{nsym:a,spgno:d,spgname:m}}function s(y,_){var g;const a=y.trim().split(/\s+/),d=a.length,p=parseInt(a[d-1],10)||0,u=parseFloat(a[d-2]),m=parseFloat(a[d-3]),v=(g=a[d-4])!==null&&g!==void 0?g:"R",b=a.slice(0,d-4).join(" ");return{label:i(b),type:v,min:m,max:u,datasetId:p,index:_}}function h(y){var _,g,a,d,p,u;const m=y.trim().split(/\s+/).map(Number);return[(_=m[0])!==null&&_!==void 0?_:0,(g=m[1])!==null&&g!==void 0?g:0,(a=m[2])!==null&&a!==void 0?a:0,(d=m[3])!==null&&d!==void 0?d:90,(p=m[4])!==null&&p!==void 0?p:90,(u=m[5])!==null&&u!==void 0?u:90]}function f(y,_){return e.Task.create("Parse MTZ",async g=>{var a;try{if(y.length<80)return t.ReaderResult.error("MTZ file too small to be valid.");if((0,n.asciiSlice)(y,0,4).slice(0,3)!=="MTZ")return t.ReaderResult.error("Not an MTZ file: magic bytes mismatch.");const p=c(y,y.length),u=new DataView(y.buffer,y.byteOffset),m=k=>u.getInt32(k,p),v=k=>u.getFloat32(k,p),b=m(4),P=(b-1)*4;if(P<=0||P>=y.length)return t.ReaderResult.error(`MTZ header position out of range: word ${b}`);await g.update({message:"Reading MTZ header..."});let C="",l=0,S=0,T=0,A="",x=[1,1,1,90,90,90],M=1,D="P 1",V=1,R=NaN;const E=[],I=[],B=[],w=new Map;let O=P;for(;O+80<=y.length;){const k=(0,n.asciiSlice)(y,O,O+80);O+=80;const j=k.indexOf(" "),H=(j>=0?k.slice(0,j):k).trim(),G=j>=0?k.slice(j+1):"";if(H==="END")break;switch(H){case"VERS":C=i(G);break;case"TITLE":case"TITL":A=i(G);break;case"NCOL":{const z=G.trim().split(/\s+/);l=parseInt(z[0],10)||0,S=parseInt(z[1],10)||0,T=parseInt(z[2],10)||0;break}case"CELL":x=h(G);break;case"SYMINF":case"SYMI":{const z=o(G);V=z.nsym,M=z.spgno,D=z.spgname;break}case"SYMM":E.push(i(G));break;case"COLUMN":case"COL":{const z=s(G,I.length);I.push(z);break}case"VALM":{const z=parseFloat(G.trim());R=isNaN(z)?NaN:z;break}case"PROJECT":case"PROJ":{const z=G.trim().split(/\s+/),W=parseInt(z[0],10)||0;w.has(W)||w.set(W,{id:W,project:"",crystal:"",name:""}),w.get(W).project=z.slice(1).join(" ");break}case"CRYSTAL":case"CRYS":{const z=G.trim().split(/\s+/),W=parseInt(z[0],10)||0;w.has(W)||w.set(W,{id:W,project:"",crystal:"",name:""}),w.get(W).crystal=z.slice(1).join(" ");break}case"DATASET":case"DATA":{const z=G.trim().split(/\s+/),W=parseInt(z[0],10)||0;w.has(W)||w.set(W,{id:W,project:"",crystal:"",name:""}),w.get(W).name=z.slice(1).join(" ");break}case"DCELL":case"DCEL":{const z=G.trim().split(/\s+/),W=parseInt(z[0],10)||0;w.has(W)||w.set(W,{id:W,project:"",crystal:"",name:""}),w.get(W).cell=h(z.slice(1).join(" "));break}case"DWAVEL":case"DWAV":{const z=G.trim().split(/\s+/),W=parseInt(z[0],10)||0;w.has(W)||w.set(W,{id:W,project:"",crystal:"",name:""}),w.get(W).wavelength=parseFloat(z[1])||void 0;break}}}for(const k of w.values())B.push(k);if(B.sort((k,j)=>k.id-j.id),l===0||S===0)return t.ReaderResult.error(`MTZ header did not contain valid NCOL record (nColumns=${l}, nReflections=${S}).`);await g.update({message:"Reading MTZ reflection data..."});const F=80,L=S*l,U=F+L*4;if(U>y.length)return t.ReaderResult.error(`MTZ file truncated: expected ${U} bytes for ${S} × ${l} reflections, got ${y.length}.`);const q=new Float32Array(L);if(p===r.SimpleBuffer.IsNativeEndianLittle){const k=new Float32Array(y.buffer,y.byteOffset+F,L);q.set(k)}else for(let k=0;k<L;k++)q[k]=v(F+k*4);const N={version:C,title:A,nColumns:l,nReflections:S,nBatches:T,cell:x,spaceGroupNumber:M,spaceGroupName:D,nSymOps:V,symops:E,columns:I,datasets:B,missingNumber:R};return t.ReaderResult.success({name:_,header:N,data:q})}catch(d){return t.ReaderResult.error((a=d?.message)!==null&&a!==void 0?a:String(d))}})}return mP}var pP={},Q5;function xie(){if(Q5)return pP;Q5=1,Object.defineProperty(pP,"__esModule",{value:!0}),pP.parseCube=y;const e=Ge(),t=Or(),r=lt(),n=nt(),i=Tr(),c=La(),o=.529177210859;function s(_){const g=t.Tokenizer.readLines(_,6),a=(V,R)=>{const E=+g[V].trim().split(/\s+/g)[R];return Number.isNaN(E)?0:E},d=V=>{const R=a(V+2,0),E=o;return[Math.abs(R),e.Vec3.create(a(V+2,1)*E,a(V+2,2)*E,a(V+2,3)*E),R]},p=g[0].trim(),u=g[1].trim(),[m,v,b]=d(0),[P,C]=d(1),[l,S]=d(2),[T,A]=d(3),x=h(_,m,o),M=[];if(b>=0){let V=a(2,4);V===0&&(V=1);for(let R=0;R<V;R++)M.push(R)}else{const V=t.Tokenizer.readLine(_).trim().split(/\s+/g);for(let R=0,E=+V[0];R<E;R++)M.push(+V[R+1])}return{header:{orbitals:b<0,comment1:p,comment2:u,atomCount:m,origin:v,dim:e.Vec3.create(P,l,T),basisX:C,basisY:S,basisZ:A,dataSetIds:M},atoms:x}}function h(_,g,a){const d=new Int32Array(g),p=new Float64Array(g),u=new Float32Array(g),m=new Float32Array(g),v=new Float32Array(g);for(let b=0;b<g;b++){const P=t.Tokenizer.readLine(_).trim().split(/\s+/g);d[b]=+P[0],p[b]=+P[1],u[b]=+P[2]*a,m[b]=+P[3]*a,v[b]=+P[4]*a}return{count:g,number:r.Column.ofArray({array:d,schema:r.Column.Schema.int}),nuclearCharge:r.Column.ofArray({array:p,schema:r.Column.Schema.float}),x:r.Column.ofArray({array:u,schema:r.Column.Schema.float}),y:r.Column.ofArray({array:m,schema:r.Column.Schema.float}),z:r.Column.ofArray({array:v,schema:r.Column.Schema.float})}}function f(_,g,a){const d=a.dim[0]*a.dim[1]*a.dim[2]*a.dataSetIds.length,p=1e4*100,u=new Float64Array(d);let m=0;return(0,n.chunkedSubtask)(_,p,u,(v,b)=>{const P=Math.min(d,m+v);for(let C=m;C<P;C++)t.Tokenizer.skipWhitespace(g),g.tokenStart=g.position,t.Tokenizer.eatValue(g),b[C]=(0,c.parseFloat)(g.data,g.tokenStart,g.tokenEnd);return m=P,P===d?0:p},(v,b,P)=>v.update({current:Math.min(P,d),max:d}))}function y(_,g){return n.Task.create("Parse Cube",async a=>{await a.update("Reading header...");const d=(0,t.Tokenizer)(_),{header:p,atoms:u}=s(d),m=await f(a,d,p);return i.ReaderResult.success({header:p,atoms:u,values:m,name:g})})}return pP}var hP={},Z5;
4123function Aie(){if(Z5)return hP;Z5=1,Object.defineProperty(hP,"__esModule",{value:!0}),hP.parseDx=_;const e=Ge(),t=nt(),r=nS(),n=$s(),i=La(),c=Or(),o=Tr();function s(g){const a={h:(0,e.Vec3)()};let d=0,p=0;const u=/\s+/g;for(;;){const m=c.Tokenizer.readLine(g);let v;if(m.startsWith("object 1"))v=m.split(u),a.dim=e.Vec3.create(parseInt(v[5]),parseInt(v[6]),parseInt(v[7]));else if(m.startsWith("origin"))v=m.split(u),a.min=e.Vec3.create(parseFloat(v[1]),parseFloat(v[2]),parseFloat(v[3]));else if(m.startsWith("delta"))v=m.split(u),p===0?a.h[0]=parseFloat(v[1]):p===1?a.h[1]=parseFloat(v[2]):p===2&&(a.h[2]=parseFloat(v[3])),p+=1;else if(m.startsWith("object 3")){d+=m.length+1;break}d+=m.length+1}return{header:a,headerByteCount:d}}function h(g,a,d){const p=d.dim[0]*d.dim[1]*d.dim[2],u=1e4*100,m=new Float64Array(p);let v=0;return(0,t.chunkedSubtask)(g,u,m,(b,P)=>{const C=Math.min(p,v+b);for(let l=v;l<C;l++)c.Tokenizer.skipWhitespace(a),a.tokenStart=a.position,c.Tokenizer.eatValue(a),P[l]=(0,i.parseFloat)(a.data,a.tokenStart,a.tokenEnd);return v=C,C===p?0:u},(b,P,C)=>b.update({current:Math.min(C,p),max:p}))}async function f(g,a,d){await g.update("Reading header...");const p=(0,c.Tokenizer)(a),{header:u}=s(p);await g.update("Reading values...");const m=await h(g,p,u);return o.ReaderResult.success({header:u,values:m,name:d})}async function y(g,a,d){await g.update("Reading header...");const p=(0,n.utf8Read)(a,0,1e3),u=(0,c.Tokenizer)(p),{header:m,headerByteCount:v}=s(u);await g.update("Reading values...");const b=m.dim[0]*m.dim[1]*m.dim[2],P=new DataView(a.buffer,a.byteOffset+v),C=new Float64Array(b);for(let l=0;l<b;l++)C[l]=P.getFloat64(l*8,!0);return o.ReaderResult.success({header:m,values:C,name:d})}function _(g,a){return t.Task.create("Parse DX",d=>r.StringLike.is(g)?f(d,g,a):y(d,g,a))}return hP}var gP={},J5;function Mie(){if(J5)return gP;J5=1,Object.defineProperty(gP,"__esModule",{value:!0}),gP.parsePrmtop=p;const e=nt(),t=Or(),r=Tr(),n=Wi(),i=lt(),o=Object.keys({NATOM:"",NTYPES:"",NBONH:"",MBONA:"",NTHETH:"",MTHETA:"",NPHIH:"",MPHIA:"",NHPARM:"",NPARM:"",NNB:"",NRES:"",NBONA:"",NTHETA:"",NPHIA:"",NUMBND:"",NUMANG:"",NPTRA:"",NATYP:"",NPHB:"",IFPERT:"",NBPER:"",NGPER:"",NDPER:"",MBPER:"",MGPER:"",MDPER:"",IFBOX:"",NMXRS:"",IFCAP:"",NUMEXTRA:"",NCOPY:""}),{readLine:s,markLine:h,trim:f}=t.Tokenizer;function y(u,m){return{tokenizer:u,runtimeCtx:m}}function _(u){const{tokenizer:m}=u,v=[];for(;m.tokenEnd<m.length&&m.data.charAt(m.position)!=="%";){const b=s(m).trim();b&&v.push(b)}return v}function g(u){const{tokenizer:m}=u,v=Object.create(null);o.forEach(P=>{v[P]=0});let b=0;for(;m.tokenEnd<m.length&&m.data.charAt(m.position)!=="%";){const P=s(m),C=Math.min(b+10,32);for(let l=0;b<C;++l,++b)v[o[b]]=parseInt(P.substring(l*8,l*8+8).trim())}return v}function a(u,m,v,b){const{tokenizer:P}=u,C=t.TokenBuilder.create(P.data,m*2);let l=0;for(;P.tokenEnd<P.length&&P.data.charAt(P.position)!=="%";){P.tokenStart=P.position;const S=Math.min(l+v,m);for(let T=0;l<S;++T,++l){const A=P.position;f(P,P.position,P.position+b),t.TokenBuilder.addUnchecked(C,P.tokenStart,P.tokenEnd),P.position=A+b}h(P)}return C}async function d(u,m){const v=(0,t.Tokenizer)(u),b=y(v,m),P=Object.create(null);let C=0;for(;v.tokenEnd<v.length;){v.position-C>1e5&&m.shouldUpdate&&(C=v.position,await m.update({current:v.position,max:v.length}));const l=s(b.tokenizer).trim();if(l.startsWith("%VERSION"))P.version=l.substring(8).trim();else if(l.startsWith("%FLAG")){const S=l.substring(5).trim();let T=s(b.tokenizer).trim();for(;T.startsWith("%COMMENT");)T=s(b.tokenizer).trim();if(!T.startsWith("%FORMAT"))throw new Error(`expected %FORMAT got "${T}"`);if(S==="TITLE"||S==="CTITLE")P.title=_(b);else if(S==="POINTERS")P.pointers=g(b);else if(S==="ATOM_NAME"){const A=a(b,P.pointers.NATOM,20,4);P.atomName=(0,n.TokenColumnProvider)(A)(i.Column.Schema.str)}else if(S==="CHARGE"){const A=a(b,P.pointers.NATOM,5,16);P.charge=(0,n.TokenColumnProvider)(A)(i.Column.Schema.float)}else if(S==="MASS"){const A=a(b,P.pointers.NATOM,5,16);P.mass=(0,n.TokenColumnProvider)(A)(i.Column.Schema.float)}else if(S==="RESIDUE_LABEL"){const A=a(b,P.pointers.NRES,20,4);
4123P.residueLabel=(0,n.TokenColumnProvider)(A)(i.Column.Schema.str)}else if(S==="RESIDUE_POINTER"){const A=a(b,P.pointers.NRES,10,8);P.residuePointer=(0,n.TokenColumnProvider)(A)(i.Column.Schema.int)}else if(S==="BONDS_INC_HYDROGEN"){const A=a(b,P.pointers.NBONH*3,10,8);P.bondsIncHydrogen=(0,n.TokenColumnProvider)(A)(i.Column.Schema.int)}else if(S==="BONDS_WITHOUT_HYDROGEN"){const A=a(b,P.pointers.NBONA*3,10,8);P.bondsWithoutHydrogen=(0,n.TokenColumnProvider)(A)(i.Column.Schema.int)}else if(S==="RADII"){const A=a(b,P.pointers.NATOM,5,16);P.radii=(0,n.TokenColumnProvider)(A)(i.Column.Schema.float)}else for(;v.tokenEnd<v.length&&v.data.charAt(v.position)!=="%";)h(v)}}return r.ReaderResult.success(P)}function p(u){return e.Task.create("Parse PRMTOP",async m=>await d(u,m))}return gP}var yP={},eG;function Die(){if(eG)return yP;eG=1,Object.defineProperty(yP,"__esModule",{value:!0}),yP.parseTop=S;const e=nt(),t=Or(),r=Tr(),n=Wi(),i=lt(),c={nr:i.Column.Schema.Int(),type:i.Column.Schema.Str(),resnr:i.Column.Schema.Int(),residu:i.Column.Schema.Str(),atom:i.Column.Schema.Str(),cgnr:i.Column.Schema.Int(),charge:i.Column.Schema.Float(),mass:i.Column.Schema.Float()},o={ai:i.Column.Schema.Int(),aj:i.Column.Schema.Int()},s={compound:i.Column.Schema.Str(),molCount:i.Column.Schema.Int()},{readLine:h,markLine:f,skipWhitespace:y,markStart:_,eatValue:g,eatLine:a}=t.Tokenizer;function d(T,A){return{tokenizer:T,runtimeCtx:A}}const p=/\[ (.+) \]/,u=/\s+/;function m(T){const{tokenizer:A}=T;let x;for(;A.tokenEnd<A.length;){y(A);const M=A.data.charAt(A.position);if(M==="[")break;if(M===";"||M==="*"){f(A);continue}if(x!==void 0)throw new Error("more than one molName");x=h(A).split(u)[0]}if(x===void 0)throw new Error("missing molName");return x}function v(T){const{tokenizer:A}=T,x=t.TokenBuilder.create(A.data,64),M=t.TokenBuilder.create(A.data,64),D=t.TokenBuilder.create(A.data,64),V=t.TokenBuilder.create(A.data,64),R=t.TokenBuilder.create(A.data,64),E=t.TokenBuilder.create(A.data,64),I=t.TokenBuilder.create(A.data,64),B=t.TokenBuilder.create(A.data,64);for(;A.tokenEnd<A.length;){y(A);const w=A.data.charAt(A.position);if(w==="[")break;if(w===";"||w==="*"){f(A);continue}for(let O=0;O<8;++O)switch(y(A),_(A),g(A),O){case 0:t.TokenBuilder.add(x,A.tokenStart,A.tokenEnd);break;case 1:t.TokenBuilder.add(M,A.tokenStart,A.tokenEnd);break;case 2:t.TokenBuilder.add(D,A.tokenStart,A.tokenEnd);break;case 3:t.TokenBuilder.add(V,A.tokenStart,A.tokenEnd);break;case 4:t.TokenBuilder.add(R,A.tokenStart,A.tokenEnd);break;case 5:t.TokenBuilder.add(E,A.tokenStart,A.tokenEnd);break;case 6:t.TokenBuilder.add(I,A.tokenStart,A.tokenEnd);break;case 7:t.TokenBuilder.add(B,A.tokenStart,A.tokenEnd);break}f(A)}return i.Table.ofColumns(c,{nr:(0,n.TokenColumnProvider)(x)(i.Column.Schema.int),type:(0,n.TokenColumnProvider)(M)(i.Column.Schema.str),resnr:(0,n.TokenColumnProvider)(D)(i.Column.Schema.int),residu:(0,n.TokenColumnProvider)(V)(i.Column.Schema.str),atom:(0,n.TokenColumnProvider)(R)(i.Column.Schema.str),cgnr:(0,n.TokenColumnProvider)(E)(i.Column.Schema.int),charge:(0,n.TokenColumnProvider)(I)(i.Column.Schema.float),mass:(0,n.TokenColumnProvider)(B)(i.Column.Schema.float)})}function b(T){const{tokenizer:A}=T,x=t.TokenBuilder.create(A.data,64),M=t.TokenBuilder.create(A.data,64);for(;A.tokenEnd<A.length;){y(A);const D=A.data.charAt(A.position);if(D==="[")break;if(D===";"||D==="*"){f(A);continue}for(let V=0;V<2;++V)switch(y(A),_(A),g(A),V){case 0:t.TokenBuilder.add(x,A.tokenStart,A.tokenEnd);break;case 1:t.TokenBuilder.add(M,A.tokenStart,A.tokenEnd);break}f(A)}return i.Table.ofColumns(o,{ai:(0,n.TokenColumnProvider)(x)(i.Column.Schema.int),aj:(0,n.TokenColumnProvider)(M)(i.Column.Schema.int)})}function P(T){const{tokenizer:A}=T;let x;for(;A.tokenEnd<A.length;){y(A);const M=A.data.charAt(A.position);if(M==="[")break;if(M===";"||M==="*"){f(A);continue}if(x!==void 0)throw new Error("more than one system");x=h(A).trim()}if(x===void 0)throw new Error("missing system");return x}function C(T){const{tokenizer:A}=T,x=t.TokenBuilder.create(A.data,64),M=t.TokenBuilder.create(A.data,64);for(;A.tokenEnd<A.length&&(y(A),!(A.position>=A.length));){const D=A.data.charAt(A.position);if(D==="[")break;if(D===";"||D==="*"){f(A);continue}for(let V=0;V<2;
4123++V)switch(y(A),_(A),g(A),V){case 0:t.TokenBuilder.add(x,A.tokenStart,A.tokenEnd);break;case 1:t.TokenBuilder.add(M,A.tokenStart,A.tokenEnd);break}a(A),_(A)}return i.Table.ofColumns(s,{compound:(0,n.TokenColumnProvider)(x)(i.Column.Schema.str),molCount:(0,n.TokenColumnProvider)(M)(i.Column.Schema.int)})}async function l(T,A){const x=(0,t.Tokenizer)(T),M=d(x,A),D=Object.create(null);let V=0;D.compounds={};let R={},E="";function I(){E&&R.atoms&&(D.compounds[E]=R,R={},E="")}for(;x.tokenEnd<x.length;){x.position-V>1e5&&A.shouldUpdate&&(V=x.position,await A.update({current:x.position,max:x.length}));const B=h(M.tokenizer).trim();if(!(!B||B[0]==="*"||B[0]===";")){if(B.startsWith("#include"))throw new Error("#include statements not allowed");if(B.startsWith("[")){const w=B.match(p);if(w===null)throw new Error("expected field name");const O=w[1];if(O==="moleculetype")I(),E=m(M);else if(O==="atoms")R.atoms=v(M);else if(O==="bonds")R.bonds=b(M);else if(O==="system")D.system=P(M);else if(O==="molecules")I(),D.molecules=C(M);else for(;x.tokenEnd<x.length&&x.data.charAt(x.position)!=="[";)f(x)}}}return r.ReaderResult.success(D)}function S(T){return e.Task.create("Parse TOP",async A=>await l(T,A))}return yP}var tG;function OQ(){if(tG)return It;tG=1,Object.defineProperty(It,"__esModule",{value:!0}),It.LazyVolume=It.ParseJson=It.ImportJson=It.ImportString=It.ParseDx=It.ParseMtz=It.ParseDsn6=It.ParseCcp4=It.ParseVtp=It.ParseObj=It.ParsePly=It.ParseTop=It.ParsePrmtop=It.ParsePsf=It.ParseCube=It.ParseCif=It.ParseBlob=It.ReadFile=It.RawData=It.DeflateData=It.DownloadBlob=It.Download=void 0;const e=At,t=e.__importStar(RQ()),r=Ti(),n=e.__importStar(hie()),i=e.__importStar(yie()),c=e.__importStar(vie()),o=e.__importStar(Sie()),s=Cie(),h=Tie(),f=Et(),y=nt(),_=ET(),g=Ne(),a=jt(),d=Ha(),p=xie(),u=Aie(),m=Vr(),v=Gt(),b=Mie(),P=Die(),C=iS(),l=nS(),S=$s(),T=a.PluginStateTransform.BuiltIn({name:"download",display:{name:"Download",description:"Download string or binary data from the specified URL"},from:[a.PluginStateObject.Root],to:[a.PluginStateObject.Data.String,a.PluginStateObject.Data.Binary],params:{url:g.ParamDefinition.Url("https://www.ebi.ac.uk/pdbe/static/entry/1cbs_updated.cif",{description:"Resource URL. Must be the same domain or support CORS."}),label:g.ParamDefinition.Optional(g.ParamDefinition.Text("")),isBinary:g.ParamDefinition.Optional(g.ParamDefinition.Boolean(!1,{description:"If true, download data as binary (string otherwise)"}))}})({apply({params:W,cache:X},Y){return y.Task.create("Download",async K=>{const Q=d.Asset.getUrlAsset(Y.managers.asset,W.url),J=await Y.managers.asset.resolve(Q,W.isBinary?"binary":"string").runInContext(K);return X.asset=J,W.isBinary?new a.PluginStateObject.Data.Binary(J.data,{label:W.label?W.label:Q.url}):new a.PluginStateObject.Data.String(J.data,{label:W.label?W.label:Q.url})})},dispose({cache:W}){var X;(X=W?.asset)===null||X===void 0||X.dispose()},update({oldParams:W,newParams:X,b:Y}){return W.url!==X.url||W.isBinary!==X.isBinary?f.StateTransformer.UpdateResult.Recreate:W.label!==X.label?(Y.label=X.label||(typeof X.url=="string"?X.url:X.url.url),f.StateTransformer.UpdateResult.Updated):f.StateTransformer.UpdateResult.Unchanged}});It.Download=T;const A=a.PluginStateTransform.BuiltIn({name:"download-blob",display:{name:"Download Blob",description:"Download multiple string or binary data from the specified URLs."},from:a.PluginStateObject.Root,to:a.PluginStateObject.Data.Blob,params:{sources:g.ParamDefinition.ObjectList({id:g.ParamDefinition.Text("",{label:"Unique ID"}),url:g.ParamDefinition.Url("https://www.ebi.ac.uk/pdbe/static/entry/1cbs_updated.cif",{description:"Resource URL. Must be the same domain or support CORS."}),isBinary:g.ParamDefinition.Optional(g.ParamDefinition.Boolean(!1,{description:"If true, download data as binary (string otherwise)"})),canFail:g.ParamDefinition.Optional(g.ParamDefinition.Boolean(!1,{description:"Indicate whether the download can fail and not be included in the blob as a result."}))},W=>`${W.id}: ${W.url}`),maxConcurrency:g.ParamDefinition.Optional(g.ParamDefinition.Numeric(4,{min:1,max:12,step:1},{description:"The maximum number of concurrent downloads."}))}})({apply({params:W,cache:X},Y){return y.Task.create("Download Blob",async K=>{const Q=[],J=await(0,_.ajaxGetMany)(K,Y.managers.asset,W.sources,W.maxConcurrency||4),ae=[];for(let te=0;te<J.length;te++){const ne=J[te],$=W.sources[te];ne.kind==="error"?Y.log.warn(`Download ${ne.id} (${$.url}) failed: ${ne.error}
4123`):(ae.push(ne.result),Q.push($.isBinary?{id:ne.id,kind:"binary",data:ne.result.data}:{id:ne.id,kind:"string",data:ne.result.data}))}return X.assets=ae,new a.PluginStateObject.Data.Blob(Q,{label:"Data Blob",description:`${Q.length} ${Q.length===1?"entry":"entries"}`})})},dispose({cache:W},X){const Y=W?.assets;if(Y)for(const K of Y)K.dispose()}});It.DownloadBlob=A;const x=a.PluginStateTransform.BuiltIn({name:"defalate-data",display:{name:"Deflate",description:"Deflate compressed data"},params:{method:g.ParamDefinition.Select("gzip",[["gzip","gzip"]]),isString:g.ParamDefinition.Boolean(!1),stringEncoding:g.ParamDefinition.Optional(g.ParamDefinition.Select("utf-8",[["utf-8","UTF8"]])),label:g.ParamDefinition.Optional(g.ParamDefinition.Text(""))},from:[a.PluginStateObject.Data.Binary],to:[a.PluginStateObject.Data.Binary,a.PluginStateObject.Data.String]})({apply({a:W,params:X},Y){return y.Task.create("Gzip",async K=>{const Q=await(0,C.ungzip)(K,W.data),J=X.label?X.label:W.label;if(X.isString){const ae=(0,S.utf8ReadLong)(Q);return new a.PluginStateObject.Data.String(ae,{label:J})}return new a.PluginStateObject.Data.Binary(Q,{label:J})})}});It.DeflateData=x;const M=a.PluginStateTransform.BuiltIn({name:"raw-data",display:{name:"Raw Data",description:"Raw data supplied by value."},from:[a.PluginStateObject.Root],to:[a.PluginStateObject.Data.String,a.PluginStateObject.Data.Binary],params:{data:g.ParamDefinition.Value("",{isHidden:!0}),label:g.ParamDefinition.Optional(g.ParamDefinition.Text(""))}})({apply({params:W}){return y.Task.create("Raw Data",async()=>{if(typeof W.data=="string")return new a.PluginStateObject.Data.String(W.data,{label:W.label?W.label:"String"});if(Array.isArray(W.data))return new a.PluginStateObject.Data.Binary(new Uint8Array(W.data),{label:W.label?W.label:"Binary"});if(W.data instanceof ArrayBuffer)return new a.PluginStateObject.Data.Binary(new Uint8Array(W.data),{label:W.label?W.label:"Binary"});if(W.data instanceof Uint8Array)return new a.PluginStateObject.Data.Binary(W.data,{label:W.label?W.label:"Binary"});(0,v.assertUnreachable)(W.data)})},update({oldParams:W,newParams:X,b:Y}){return W.data!==X.data?f.StateTransformer.UpdateResult.Recreate:W.label!==X.label?(Y.label=X.label||Y.label,f.StateTransformer.UpdateResult.Updated):f.StateTransformer.UpdateResult.Unchanged},customSerialization:{toJSON(W){if(typeof W.data=="string"||Array.isArray(W.data))return W;if(W.data instanceof ArrayBuffer){const X=new Uint8Array(W.data),Y=new Array(X.length);for(let K=0,Q=X.length;K<Q;K++)Y[K]=X[K];return{data:Y,label:W.label}}else if(W.data instanceof Uint8Array){const X=new Array(W.data.length);for(let Y=0,K=W.data.length;Y<K;Y++)X[Y]=W.data[Y];return{data:X,label:W.label}}},fromJSON(W){return W}}});It.RawData=M;const D=a.PluginStateTransform.BuiltIn({name:"read-file",display:{name:"Read File",description:"Read string or binary data from the specified file"},from:a.PluginStateObject.Root,to:[a.PluginStateObject.Data.String,a.PluginStateObject.Data.Binary],params:{file:g.ParamDefinition.File(),label:g.ParamDefinition.Optional(g.ParamDefinition.Text("")),isBinary:g.ParamDefinition.Optional(g.ParamDefinition.Boolean(!1,{description:"If true, open file as as binary (string otherwise)"}))}})({apply({params:W,cache:X},Y){return y.Task.create("Open File",async K=>{if(W.file===null)return Y.log.error("No file(s) selected"),f.StateObject.Null;const Q=await Y.managers.asset.resolve(W.file,W.isBinary?"binary":"string").runInContext(K);return X.asset=Q,W.isBinary?new a.PluginStateObject.Data.Binary(Q.data,{label:W.label?W.label:W.file.name}):new a.PluginStateObject.Data.String(Q.data,{label:W.label?W.label:W.file.name})})},dispose({cache:W}){var X;(X=W?.asset)===null||X===void 0||X.dispose()},update({oldParams:W,newParams:X,b:Y}){var K;return W.label!==X.label?(Y.label=X.label||((K=W.file)===null||K===void 0?void 0:K.name)||"",f.StateTransformer.UpdateResult.Updated):f.StateTransformer.UpdateResult.Unchanged},isSerializable:()=>({isSerializable:!1,reason:"Cannot serialize user loaded files."})});It.ReadFile=D;const V=a.PluginStateTransform.BuiltIn({name:"parse-blob",display:{name:"Parse Blob",description:"Parse multiple data enties"},from:a.PluginStateObject.Data.Blob,to:a.PluginStateObject.Format.Blob,params:{formats:g.ParamDefinition.ObjectList({id:g.ParamDefinition.Text("",{label:"Unique ID"}),format:g.ParamDefinition.Select("cif",[["cif","cif"]])},W=>`${W.id}: ${W.format}`)}})({apply({a:W,params:X},Y){return y.Task.create("Parse Blob",async K=>{const Q=new Map;for(const ae of X.formats)Q.set(ae.id,ae.format);const J=[];for(const ae of W.data){if(!Q.has(ae.id))continue;
4123const te=await(ae.kind==="string"?r.CIF.parse(ae.data):r.CIF.parseBinary(ae.data)).runInContext(K);if(te.isError)throw new Error(`${ae.id}: ${te.message}`);J.push({id:ae.id,kind:"cif",data:te.result})}return new a.PluginStateObject.Format.Blob(J,{label:"Format Blob",description:`${J.length} ${J.length===1?"entry":"entries"}`})})}});It.ParseBlob=V;const R=a.PluginStateTransform.BuiltIn({name:"parse-cif",display:{name:"Parse CIF",description:"Parse CIF from String or Binary data"},from:[a.PluginStateObject.Data.String,a.PluginStateObject.Data.Binary],to:a.PluginStateObject.Format.Cif})({apply({a:W}){return y.Task.create("Parse CIF",async X=>{const Y=await r.CIF.parse(W.data).runInContext(X);if(Y.isError)throw new Error(Y.message);return Y.result.blocks.length===0?f.StateObject.Null:new a.PluginStateObject.Format.Cif(Y.result)})}});It.ParseCif=R;const E=a.PluginStateTransform.BuiltIn({name:"parse-cube",display:{name:"Parse Cube",description:"Parse Cube from String data"},from:a.PluginStateObject.Data.String,to:a.PluginStateObject.Format.Cube})({apply({a:W}){return y.Task.create("Parse Cube",async X=>{const Y=await(0,p.parseCube)(W.data,W.label).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Cube(Y.result)})}});It.ParseCube=E;const I=a.PluginStateTransform.BuiltIn({name:"parse-psf",display:{name:"Parse PSF",description:"Parse PSF from String data"},from:[a.PluginStateObject.Data.String],to:a.PluginStateObject.Format.Psf})({apply({a:W}){return y.Task.create("Parse PSF",async X=>{const Y=await(0,s.parsePsf)(W.data).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Psf(Y.result)})}});It.ParsePsf=I;const B=a.PluginStateTransform.BuiltIn({name:"parse-prmtop",display:{name:"Parse PRMTOP",description:"Parse PRMTOP from String data"},from:[a.PluginStateObject.Data.String],to:a.PluginStateObject.Format.Prmtop})({apply({a:W}){return y.Task.create("Parse PRMTOP",async X=>{const Y=await(0,b.parsePrmtop)(W.data).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Prmtop(Y.result)})}});It.ParsePrmtop=B;const w=a.PluginStateTransform.BuiltIn({name:"parse-top",display:{name:"Parse TOP",description:"Parse TOP from String data"},from:[a.PluginStateObject.Data.String],to:a.PluginStateObject.Format.Top})({apply({a:W}){return y.Task.create("Parse TOP",async X=>{const Y=await(0,P.parseTop)(W.data).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Top(Y.result)})}});It.ParseTop=w;const O=a.PluginStateTransform.BuiltIn({name:"parse-ply",display:{name:"Parse PLY",description:"Parse PLY from String or Binary data"},from:[a.PluginStateObject.Data.String,a.PluginStateObject.Data.Binary],to:a.PluginStateObject.Format.Ply})({apply({a:W}){return y.Task.create("Parse PLY",async X=>{const Y=await i.parsePly(W.data).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Ply(Y.result,{label:Y.result.comments[0]||"PLY Data"})})}});It.ParsePly=O;const F=a.PluginStateTransform.BuiltIn({name:"parse-obj",display:{name:"Parse OBJ",description:"Parse OBJ from String data"},from:[a.PluginStateObject.Data.String],to:a.PluginStateObject.Format.Obj})({apply({a:W}){return y.Task.create("Parse OBJ",async X=>{const Y=await c.parseObj(W.data).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Obj(Y.result,{label:"OBJ Data"})})}});It.ParseObj=F;const L=a.PluginStateTransform.BuiltIn({name:"parse-vtp",display:{name:"Parse VTP",description:"Parse VTP (VTK PolyData) from Binary data"},from:[a.PluginStateObject.Data.Binary],to:a.PluginStateObject.Format.Vtp})({apply({a:W}){return y.Task.create("Parse VTP",async X=>{const Y=await o.parseVtp(W.data).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Vtp(Y.result,{label:"VTP Data"})})}});It.ParseVtp=L;const U=a.PluginStateTransform.BuiltIn({name:"parse-ccp4",display:{name:"Parse CCP4/MRC/MAP",description:"Parse CCP4/MRC/MAP from Binary data"},from:[a.PluginStateObject.Data.Binary],to:a.PluginStateObject.Format.Ccp4})({apply({a:W}){return y.Task.create("Parse CCP4/MRC/MAP",async X=>{const Y=await t.parse(W.data,W.label).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Ccp4(Y.result)})}});It.ParseCcp4=U;const q=a.PluginStateTransform.BuiltIn({name:"parse-dsn6",display:{name:"Parse DSN6/BRIX",description:"Parse CCP4/BRIX from Binary data"},from:[a.PluginStateObject.Data.Binary],to:a.PluginStateObject.Format.Dsn6})({apply({a:W}){return y.Task.create("Parse DSN6/BRIX",async X=>{const Y=await n.parse(W.data,W.label).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Dsn6(Y.result)})}});It.ParseDsn6=q;const N=a.PluginStateTransform.BuiltIn({name:"parse-mtz",display:{name:"Parse MTZ",description:"Parse CCP4 MTZ reflection file from Binary data"},from:[a.PluginStateObject.Data.Binary],to:a.PluginStateObject.Format.Mtz})({apply({a:W}){return y.Task.create("Parse MTZ",async X=>{const Y=await(0,h.parseMtz)(W.data,W.label).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Mtz(Y.result)})}});It.ParseMtz=N;const k=a.PluginStateTransform.BuiltIn({name:"parse-dx",display:{name:"Parse DX",description:"Parse DX from Binary/String data"},from:[a.PluginStateObject.Data.Binary,a.PluginStateObject.Data.String],to:a.PluginStateObject.Format.Dx})({apply({a:W}){return y.Task.create("Parse DX",async X=>{const Y=await(0,u.parseDx)(W.data,W.label).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Dx(Y.result)})}});It.ParseDx=k;const j=a.PluginStateTransform.BuiltIn({name:"import-string",display:{name:"Import String",description:"Import given data as a string"},from:a.PluginStateObject.Root,to:a.PluginStateObject.Data.String,params:{data:g.ParamDefinition.Value(""),label:g.ParamDefinition.Optional(g.ParamDefinition.Text(""))}})({apply({params:{data:W,label:X}}){return new a.PluginStateObject.Data.String(W,{label:X||""})},update({oldParams:W,newParams:X,b:Y}
4123){return W.data!==X.data?f.StateTransformer.UpdateResult.Recreate:W.label!==X.label?(Y.label=X.label||"",f.StateTransformer.UpdateResult.Updated):f.StateTransformer.UpdateResult.Unchanged},isSerializable:()=>({isSerializable:!1,reason:"Cannot serialize user imported strings."})});It.ImportString=j;const H=a.PluginStateTransform.BuiltIn({name:"import-json",display:{name:"Import JSON",description:"Import given data as a JSON"},from:a.PluginStateObject.Root,to:a.PluginStateObject.Format.Json,params:{data:g.ParamDefinition.Value({}),label:g.ParamDefinition.Optional(g.ParamDefinition.Text(""))}})({apply({params:{data:W,label:X}}){return new a.PluginStateObject.Format.Json(W,{label:X||""})},update({oldParams:W,newParams:X,b:Y}){return W.data!==X.data?f.StateTransformer.UpdateResult.Recreate:W.label!==X.label?(Y.label=X.label||"",f.StateTransformer.UpdateResult.Updated):f.StateTransformer.UpdateResult.Unchanged},isSerializable:()=>({isSerializable:!1,reason:"Cannot serialize user imported JSON."})});It.ImportJson=H;const G=a.PluginStateTransform.BuiltIn({name:"parse-json",display:{name:"Parse JSON",description:"Parse JSON from String data"},from:[a.PluginStateObject.Data.String],to:a.PluginStateObject.Format.Json})({apply({a:W}){return y.Task.create("Parse JSON",async X=>{const Y=await new Response(l.StringLike.toString(W.data)).json();return new a.PluginStateObject.Format.Json(Y)})}});It.ParseJson=G;const z=a.PluginStateTransform.BuiltIn({name:"lazy-volume",display:{name:"Lazy Volume",description:"A placeholder for lazy loaded volume representation"},from:a.PluginStateObject.Root,to:a.PluginStateObject.Volume.Lazy,params:{url:g.ParamDefinition.Url(""),isBinary:g.ParamDefinition.Boolean(!1),format:g.ParamDefinition.Text("ccp4"),entryId:g.ParamDefinition.Value("",{isHidden:!0}),isovalues:g.ParamDefinition.ObjectList({type:g.ParamDefinition.Text("relative"),value:g.ParamDefinition.Numeric(0),color:g.ParamDefinition.Color(m.ColorNames.black),alpha:g.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),volumeIndex:g.ParamDefinition.Numeric(0)},W=>`${W.type} ${W.value}`)}})({apply({a:W,params:X}){return y.Task.create("Lazy Volume",async Y=>{const K=Array.isArray(X.entryId)?X.entryId.join(", "):X.entryId;return new a.PluginStateObject.Volume.Lazy(X,{label:`${K||X.url}`,description:"Lazy Volume"})})}});return It.LazyVolume=z,It}var U1={},rG;function Iie(){if(rG)return U1;rG=1,Object.defineProperty(U1,"__esModule",{value:!0}),U1.CreateGroup=void 0;const e=Et(),t=et(),r=Ne(),n=jt(),i=n.PluginStateTransform.BuiltIn({name:"create-group",display:{name:"Group"},from:[],to:n.PluginStateObject.Group,params:{label:r.ParamDefinition.Text("Group"),description:r.ParamDefinition.Optional(r.ParamDefinition.Text(""))}})({apply({params:c}){return new n.PluginStateObject.Group({},c)},update({oldParams:c,newParams:o,b:s}){return(0,t.shallowEqualObjects)(c,o)?e.StateTransformer.UpdateResult.Unchanged:(s.label=o.label,s.description=o.description,e.StateTransformer.UpdateResult.Updated)}});return U1.CreateGroup=i,U1}var rA={},j1={},nG;function wie(){if(nG)return j1;nG=1,Object.defineProperty(j1,"__esModule",{value:!0}),j1._parseDcd=n,j1.parseDcd=i;const e=Tr(),t=nt(),r=QD();function n(c){const o=new DataView(c.buffer),s=Object.create(null),h=[];let f=0;const y=new Int32Array(c.buffer,0,23),_=y[0]!==o.getInt32(0);if(y[0]!==84){const P=c.byteLength;for(let C=0;C<P;C+=4)o.setFloat32(C,o.getFloat32(C),!0)}if(y[0]!==84)throw new Error("dcd bad format, header block start");if(String.fromCharCode(o.getUint8(4),o.getUint8(5),o.getUint8(6),o.getUint8(7))!=="CORD")throw new Error("dcd bad format, format string");let a=!1,d=!1,p=!1;if(y[22]!==0&&(a=!0,y[12]!==0&&(d=!0),y[13]===1&&(p=!0)),s.NSET=y[2],s.ISTART=y[3],s.NSAVC=y[4],s.NAMNF=y[10],a?s.DELTA=o.getFloat32(44,_):s.DELTA=o.getFloat64(44,_),y[22]!==84)throw new Error("dcd bad format, header block end");f=f+84+8;const u=o.getInt32(f,_),m=f+1;if((u-4)%80!==0)throw new Error("dcd bad format, title block start");if(s.TITLE=(0,r.uint8ToString)(c.subarray(m,u)),o.getInt32(m+u+4-1,_)!==u)throw new Error("dcd bad format, title block end");if(f=f+u+8,o.getInt32(f,_)!==4)throw new Error("dcd bad format, natom block start");if(s.NATOM=o.getInt32(f+4,_),o.getInt32(f+8,_)!==4)throw new Error("dcd bad format, natom block end");if(f=f+4+8,s.NAMNF>0)throw new Error("dcd format with fixed atoms unsupported, aborting");const v=s.NATOM,b=v*4;for(let P=0,C=s.NSET;P<C;++P){const l=Object.create(null);l.elementCount=v,d&&(f+=4,l.cell=[o.getFloat64(f,_),o.getFloat64(f+1,_),o.getFloat64(f+16,_),o.getFloat64(f+24,_),o.getFloat64(f+32,_),o.getFloat64(f+40,_)],f+=48,f+=4);for(let S=0;S<3;++S){if(o.getInt32(f,_)!==b)throw new Error(`dcd bad format, coord block start: ${P}, ${S}`);f+=4;const T=new Float32Array(c.buffer,f,v);if(S===0?l.x=T:S===1?l.y=T:l.z=T,f+=b,o.getInt32(f,_)!==b)throw new Error(`dcd bad format, coord block end: ${P}, ${S}`);f+=4}if(p){const S=o.getInt32(f,_);f+=4+S+4}h.push(l)}return{header:s,frames:h}}function i(c){return t.Task.create("Parse DCD",async o=>{try{const s=n(c);return e.ReaderResult.success(s)}catch(s){return e.ReaderResult.error(s)}})}return j1}var vP={},G1={},iG;function Vie(){if(iG)return G1;iG=1,Object.defineProperty(G1,"__esModule",{value:!0}
4123),G1.FixedColumnProvider=n,G1.FixedColumn=i;const e=lt(),t=Or(),r=La();function n(c){return function(o,s,h){return i(c,o,s,h)}}function i(c,o,s,h){const{data:f,indices:y,count:_}=c,{valueType:g}=h,a=g==="str"?d=>{const p=y[2*d]+o,u=y[2*d+1];if(p>=u)return"";let m=p+s;return m>u&&(m=u),(0,t.trimStr)(f,p,m)}:g==="int"?d=>{const p=y[2*d]+o;return p>y[2*d+1]?0:(0,r.parseIntSkipLeadingWhitespace)(f,p,p+s)}:d=>{const p=y[2*d]+o;return p>y[2*d+1]?0:(0,r.parseFloatSkipLeadingWhitespace)(f,p,p+s)};return{schema:h,__array:void 0,isDefined:!0,rowCount:_,value:a,valueKind:d=>e.Column.ValueKinds.Present,toArray:d=>e.ColumnHelpers.createAndFillArray(_,a,d),areValuesEqual:(d,p)=>a(d)===a(p)}}return G1}var aG;function Eie(){if(aG)return vP;aG=1,Object.defineProperty(vP,"__esModule",{value:!0}),vP.parseGRO=g;const e=lt(),t=Or(),r=Vie(),n=Tr(),i=nt();function c(){return{title:"",timeInPs:0,hasVelocities:!1,precision:{position:0,velocity:0},box:[0,0,0]}}function o(a,d){return{tokenizer:a,header:c(),numberOfAtoms:0,runtimeCtx:d}}function s(a){const{tokenizer:d,header:p}=a;let u=t.Tokenizer.readLine(d);u.trim().length===0&&(u=t.Tokenizer.readLine(d));const m=u.lastIndexOf("t=");m>=0?(p.timeInPs=parseFloat(u.substring(m+2)),p.title=u.substring(0,m).trim(),p.title&&p.title[p.title.length-1]===","&&(p.title=p.title.substring(0,p.title.length-1))):p.title=u}function h(a){const{tokenizer:d}=a;t.Tokenizer.markLine(d);const p=t.Tokenizer.getTokenString(d);a.numberOfAtoms=parseInt(p)}async function f(a){const{tokenizer:d,numberOfAtoms:p}=a,u=await t.Tokenizer.readLinesAsync(d,p,a.runtimeCtx,1e5),v=d.data.substring(u.indices[0],u.indices[1]).substring(20).match(/\.\d+/g),b=v.length===6;a.header.hasVelocities=b,a.header.precision.position=v[0].length-1,a.header.precision.velocity=b?v[3].length-1:0;const P=20,C=a.header.precision.position+5,l=P+3*C,S=a.header.precision.velocity+4,T=(0,r.FixedColumnProvider)(u),A=e.Column.Undefined(a.numberOfAtoms,e.Column.Schema.float);return{count:a.numberOfAtoms,residueNumber:T(0,5,e.Column.Schema.int),residueName:T(5,5,e.Column.Schema.str),atomName:T(10,5,e.Column.Schema.str),atomNumber:T(15,5,e.Column.Schema.int),x:T(P,C,e.Column.Schema.float),y:T(P+C,C,e.Column.Schema.float),z:T(P+2*C,C,e.Column.Schema.float),vx:b?T(l,S,e.Column.Schema.float):A,vy:b?T(l+S,S,e.Column.Schema.float):A,vz:b?T(l+2*S,S,e.Column.Schema.float):A}}function y(a){const{tokenizer:d}=a,p=t.Tokenizer.readLine(d).trim().split(/\s+/g);a.header.box=[+p[0],+p[1],+p[2]]}async function _(a,d){const p=(0,t.Tokenizer)(a);await d.update({message:"Parsing...",current:0,max:a.length});const u=[];for(;p.position<a.length;){const v=o(p,d);s(v),h(v);const b=await f(v);y(v),u.push({header:v.header,atoms:b})}const m={structures:u};return n.ReaderResult.success(m)}function g(a){return i.Task.create("Parse GRO",async d=>await _(a,d))}return vP}var bP={},oG;function Bie(){if(oG)return bP;oG=1,Object.defineProperty(bP,"__esModule",{value:!0}),bP.parsePDB=n;const e=nt(),t=Tr(),r=Or();function n(i,c,o){return e.Task.create("Parse PDB",async s=>t.ReaderResult.success({lines:await r.Tokenizer.readAllLinesAsync(i,s),id:c,variant:o||"pdb"}))}return bP}var _P={},z1={},sG;function d2(){if(sG)return z1;sG=1,Object.defineProperty(z1,"__esModule",{value:!0}),z1.Cell=t;const e=Ge();function t(){return t.empty()}return(function(r){function n(o,s){return{size:o,anglesInRadians:s}}r.create=n;function i(){return n((0,e.Vec3)(),(0,e.Vec3)())}r.empty=i;function c(o,s,h){const f=e.Vec3.magnitude(o),y=e.Vec3.magnitude(s),_=e.Vec3.magnitude(h),g=Math.acos(e.Vec3.dot(s,h)/(y*_)),a=Math.acos(e.Vec3.dot(o,h)/(f*_)),d=Math.acos(e.Vec3.dot(o,s)/(f*y));return f<=0||y<=0||_<=0||g>=Math.PI||a>=Math.PI||d>=Math.PI?i():n(e.Vec3.create(f,y,_),e.Vec3.create(g,a,d))}r.fromBasis=c})(t||(z1.Cell=t={})),z1}var cG;function Rie(){if(cG)return _P;cG=1,Object.defineProperty(_P,"__esModule",{value:!0}),_P.coordinatesFromDcd=s;const e=nt(),t=vl(),r=Ge(),n=er(),i=d2(),c=rn(),o=20.45482949774598;function s(h){return e.Task.create("Parse DCD",async f=>{await f.update("Converting to coordinates");const{header:y}=h,_=y.DELTA?(0,t.Time)(y.DELTA*o,"ps"):(0,t.Time)(1,"step"),g=y.ISTART>=1?(0,t.Time)((y.ISTART-1)*_.value,_.unit):(0,t.Time)(0,_.unit),a=[];for(let d=0,p=h.frames.length;d<p;++d){const u=h.frames[d],m={elementCount:u.elementCount,time:(0,t.Time)(g.value+_.value*d,_.unit),x:u.x,y:u.y,z:u.z,xyzOrdering:{isIdentity:!0}};if(u.cell){const v=u.cell;v[1]>=-1&&v[1]<=1&&v[3]>=-1&&v[3]<=1&&v[4]>=-1&&v[4]<=1?m.cell=i.Cell.create(r.Vec3.create(v[0],v[2],v[5]),r.Vec3.create((0,n.degToRad)(90-Math.asin(v[1])*90/n.halfPI),(0,n.degToRad)(90-Math.asin(v[3])*90/n.halfPI),(0,n.degToRad)(90-Math.asin(v[4])*90/n.halfPI))):v[0]<0||v[1]<0||v[2]<0||v[3]<0||v[4]<0||v[5]<0||v[3]>180||v[4]>180||v[5]>180?m.cell=i.Cell.fromBasis(r.Vec3.create(v[0],v[1],v[3]),r.Vec3.create(v[1],v[2],v[4]),r.Vec3.create(v[3],v[4],v[5])):m.cell=i.Cell.create(r.Vec3.create(v[0],v[2],v[5]),r.Vec3.create((0,n.degToRad)((0,c.equalEps)(v[1],0,c.EPSILON)?90:v[1]),(0,n.degToRad)((0,c.equalEps)(v[3],0,c.EPSILON)?90:v[3]),(0,n.degToRad)((0,c.equalEps)(v[4],0,c.EPSILON)?90:v[4])))}a.push(m)}return t.Coordinates.create(a,_,g)})}return _P}var Cd={},H1={},uG;function cc(){if(uG)return H1;uG=1,Object.defineProperty(H1,"__esModule",{value:!0}),H1.guessElementSymbolTokens=t,H1.guessElementSymbolString=c;const e=Or();function t(o,s,h,f){let y=h,_=f-1,g=s.charCodeAt(y);for(;(g===32||g>=48&&g<=57)&&y<=_;)g=s.charCodeAt(++y);for(g=s.charCodeAt(_);(g===32||g>=48&&g<=57)&&_>=y;)g=s.charCodeAt(--_);if(++_,y===_||y+1===_)return e.TokenBuilder.add(o,y,_);if(g=s.charCodeAt(y),y+2===_){const a=s.charCodeAt(y+1);if((g===78||g===110)&&(a===65||a===97)||(g===67||g===99)&&(a===76||a===108)||(g===70||g===102)&&(a===69||a===101)||(g===83||g===115)&&(a===73||a===105)||(g===66||g===98)&&(a===82||a===114)||(g===65||g===97)&&(a===83||a===115)||(g===76||g===108)&&(a===73||a===105)||(g===71||g===103)&&(a===65||a===97))return e.TokenBuilder.add(o,y,y+2)}if(g===67||g===99||g===72||g===104||g===78||g===110||g===79||g===111||g===80||g===112||g===83||g===115)return e.TokenBuilder.add(o,y,y+1);e.TokenBuilder.add(o,y,y)}const r=new Set(["NA","CL","FE","SI","BR","AS","LI","GA"]),n=new Set(["C","H","N","O","P","S","F","B"]),i=/^[\s\d]+|[\s\d]+$/g;function c(o,s){o=o.replace(i,"").toUpperCase();const h=o.length;if(h===0||h===1||r.has(o))return o;if(h===3&&s===o){if(o==="SOD")return"NA";if(o==="POT")return"K";if(o==="CES")return"CS";if(o==="CAL")return"CA";if(o==="CLA")return"CL"}return n.has(o[0])?o[0]:""}return H1}var W1={},lG;function qS(){if(lG)return W1;lG=1,Object.defineProperty(W1,"__esModule",{value:!0}),W1.getChainId=void 0;const e=Af(),t="ABCDEFGHIJKLMNOPQRSTUVWXYZ";function r(n){const i=t.length;let c=n,o=0,s=t[c%i];for(;c>=i;)c=Math.floor(c/i),s+=t[c%i],o+=1;return o>=5&&console.warn("getChainId overflow"),s}return W1.getChainId=(0,e.memoize1)(r),W1}var dG;function Oie(){if(dG)return Cd;dG=1,Object.defineProperty(Cd,"__esModule",{value:!0}),Cd.GroFormat=void 0,Cd.trajectoryFromGRO=d;const e=nt(),t=lt(),r=Ge(),n=cc(),i=dt(),c=Ai(),o=qS(),s=xi(),h=vn(),f=ga(),y=LT(),_=Qn();function g(p,u){const m=p.atomName,v=p.residueName,b=new Array(p.count),P=new Array(p.count),C=new Uint32Array(p.count),l=new Uint32Array(p.count),S=new Array(p.count),T=new s.EntityBuilder,A=new c.ComponentBuilder(p.residueNumber,p.atomName);let x="",M=0,D="",V=0,R=i.MoleculeType.Unknown,E=-1;for(let w=0,O=p.count;w<O;++w){const F=p.residueNumber.value(w);if(F!==E){const L=p.residueName.value(w),U=(0,i.getMoleculeType)(A.add(L,w).type,L);(U!==R||F!==E+1&&!(E===99999&&F===0))&&(D=(0,o.getChainId)(M),M+=1,V=0),x=T.getEntityId(L,U,D),V+=1,E=F,R=U}b[w]=x,P[w]=D,C[w]=V,l[w]=w,S[w]=(0,n.guessElementSymbolString)(p.atomName.value(w),p.residueName.value(w))}
4123const I=t.Column.ofStringArray(P),B=t.Table.ofPartialColumns(h.BasicSchema.atom_site,{auth_asym_id:I,auth_atom_id:m,auth_comp_id:v,auth_seq_id:p.residueNumber,Cartn_x:t.Column.ofFloatArray(t.Column.mapToArray(p.x,w=>w*10,Float32Array)),Cartn_y:t.Column.ofFloatArray(t.Column.mapToArray(p.y,w=>w*10,Float32Array)),Cartn_z:t.Column.ofFloatArray(t.Column.mapToArray(p.z,w=>w*10,Float32Array)),id:t.Column.ofIntArray(l),label_asym_id:I,label_atom_id:m,label_comp_id:v,label_seq_id:t.Column.ofIntArray(C),label_entity_id:t.Column.ofStringArray(b),occupancy:t.Column.ofConst(1,p.count,t.Column.Schema.float),type_symbol:t.Column.ofStringArray(S),pdbx_PDB_model_num:t.Column.ofConst(u,p.count,t.Column.Schema.int)},p.count);return(0,h.createBasic)({entity:T.getEntityTable(),chem_comp:A.getChemCompTable(),atom_site:B})}var a;(function(p){function u(v){return v?.kind==="gro"}p.is=u;function m(v){return{kind:"gro",name:v.structures[0].header.title,data:v}}p.fromGro=m})(a||(Cd.GroFormat=a={}));function d(p){return e.Task.create("Parse GRO",async u=>{const m=a.fromGro(p),v=[];for(let b=0,P=p.structures.length;b<P;++b){const C=g(p.structures[b].atoms,b+1),l=await(0,f.createModels)(C,m,u);if(l.frameCount===1){const S=l.representative,[T,A,x]=p.structures[b].header.box;if(T!==0&&A!==0&&x!==0){const M=_.ModelSymmetry.fromCell(r.Vec3.create(T*10,A*10,x*10),r.Vec3.create(Math.PI/2,Math.PI/2,Math.PI/2));_.ModelSymmetry.Provider.set(S,M)}v.push(S)}}return new y.ArrayTrajectory(v)})}return Cd}var Pd={},SP={},Td={},fG;function kie(){if(fG)return Td;fG=1,Object.defineProperty(Td,"__esModule",{value:!0}),Td.parseCryst1=r,Td.parseRemark350=i,Td.parseMtrix=c;const e=Ti(),t=Ge();function r(o,s){const h=(_,g)=>(s.substr(_,g)||"").trim(),f={entry_id:e.CifField.ofString(o),length_a:e.CifField.ofString(h(6,9)),length_b:e.CifField.ofString(h(15,9)),length_c:e.CifField.ofString(h(24,9)),angle_alpha:e.CifField.ofString(h(33,7)),angle_beta:e.CifField.ofString(h(40,7)),angle_gamma:e.CifField.ofString(h(47,7)),Z_PDB:e.CifField.ofString(h(66,4)),pdbx_unique_axis:e.CifField.ofString("?")},y={entry_id:e.CifField.ofString(o),"space_group_name_H-M":e.CifField.ofString(h(55,11)),Int_Tables_number:e.CifField.ofString("?"),cell_setting:e.CifField.ofString("?"),space_group_name_Hall:e.CifField.ofString("?")};return[e.CifCategory.ofFields("cell",f),e.CifCategory.ofFields("symmetry",y)]}function n(o,s){return{id:o,details:s,groups:[]}}function i(o,s,h){const f=[];let y,_,g,a=1,d=1;const p=C=>o.data.substring(o.indices[2*C],o.indices[2*C+1]);for(let C=s;C<h;C++){let l=p(C);if(l.substr(11,12)==="BIOMOLECULE:"){const S=l.substr(23).trim();let T=`Biomolecule ${S}`;l=p(C+1),l.substr(11,30)!=="APPLY THE FOLLOWING TO CHAINS:"&&(C++,T=l.substr(11).trim()),y=n(S,T),f.push(y)}else if(l.substr(13,5)==="BIOMT"){const S=l.split(/\s+/),T=parseInt(l[18])-1;T===0&&(g=t.Mat4.identity(),_.operators.push({id:a++,matrix:g})),t.Mat4.setValue(g,T,0,parseFloat(S[4])),t.Mat4.setValue(g,T,1,parseFloat(S[5])),t.Mat4.setValue(g,T,2,parseFloat(S[6])),t.Mat4.setValue(g,T,3,parseFloat(S[7]))}else if(l.substr(11,30)==="APPLY THE FOLLOWING TO CHAINS:"||l.substr(11,30)==="                   AND CHAINS:"){l.substr(11,5)==="APPLY"&&(_={chains:[],operators:[]},y.groups.push(_));const S=l.substr(41,30).split(",");for(let T=0,A=S.length;T<A;++T){const x=S[T].trim();x&&_.chains.push(x)}}else if(l.substr(11,33)==="APPLYING THE FOLLOWING TO CHAINS:"){y=n(`${d}`,`Biomolecule ${d}`),f.push(y),d+=1,_={chains:[],operators:[]},y.groups.push(_),C++,l=p(C);const S=l.substr(11,69).split(",");for(let T=0,A=S.length;T<A;++T){const x=S[T].trim();x&&_.chains.push(x)}}}if(f.length===0)return[];const u={id:e.CifField.ofStrings(f.map(C=>C.id)),details:e.CifField.ofStrings(f.map(C=>C.details))},m=[];for(const C of f)for(const l of C.groups)m.push({assembly_id:C.id,oper_expression:l.operators.map(S=>S.id).join(","),asym_id_list:l.chains.join(",")});const v={assembly_id:e.CifField.ofStrings(m.map(C=>C.assembly_id)),oper_expression:e.CifField.ofStrings(m.map(C=>C.oper_expression)),asym_id_list:e.CifField.ofStrings(m.map(C=>C.asym_id_list))},b=[];for(const C of f)for(const l of C.groups)for(const S of l.operators){const T={id:""+S.id,type:"?",name:"?",symmetry_operation:"?"};for(let A=0;A<3;A++){for(let x=0;x<3;x++)T[`matrix[${A+1}][${x+1}]`]=""+t.Mat4.getValue(S.matrix,A,x);T[`vector[${A+1}]`]=""+t.Mat4.getValue(S.matrix,A,3)}b.push(T)}const P={id:e.CifField.ofStrings(b.map(C=>C.id)),type:e.CifField.ofStrings(b.map(C=>C.type)),name:e.CifField.ofStrings(b.map(C=>C.name)),symmetry_operation:e.CifField.ofStrings(b.map(C=>C.symmetry_operation))};for(let C=0;C<3;C++){for(let S=0;S<3;S++){const T=`matrix[${C+1}][${S+1}]`;P[T]=e.CifField.ofStrings(b.map(A=>A[T]))}const l=`vector[${C+1}]`;P[l]=e.CifField.ofStrings(b.map(S=>S[l]))}return[e.CifCategory.ofFields("pdbx_struct_assembly",u),e.CifCategory.ofFields("pdbx_struct_assembly_gen",v),e.CifCategory.ofFields("pdbx_struct_oper_list",P)]}function c(o,s,h){const f=[];let y;const _=p=>o.data.substring(o.indices[2*p],o.indices[2*p+1]);for(let p=s;p<h;p++){const u=_(p),m=u.split(/\s+/),v=parseInt(u[5])-1;v===0&&(y=t.Mat4.identity(),f.push(y)),t.Mat4.setValue(y,v,0,parseFloat(m[2])),t.Mat4.setValue(y,v,1,parseFloat(m[3])),t.Mat4.setValue(y,v,2,parseFloat(m[4])),t.Mat4.setValue(y,v,3,parseFloat(m[5]))}if(f.length===0)return[];const g=[];let a=1;for(const p of f){const u={id:"ncsop"+a++,code:".",details:"."};for(let m=0;m<3;m++){for(let v=0;v<3;v++)u[`matrix[${m+1}][${v+1}]`]=""+t.Mat4.getValue(p,m,v);u[`vector[${m+1}]`]=""+t.Mat4.getValue(p,m,3)}g.push(u)}const d={id:e.CifField.ofStrings(g.map(p=>p.id)),code:e.CifField.ofStrings(g.map(p=>p.code)),details:e.CifField.ofStrings(g.map(p=>p.details))};for(let p=0;p<3;p++){for(let m=0;m<3;m++){const v=`matrix[${p+1}][${m+1}]`;d[v]=e.CifField.ofStrings(g.map(b=>b[v]))}const u=`vector[${p+1}]`;d[u]=e.CifField.ofStrings(g.map(m=>m[u]))}return[e.CifCategory.ofFields("struct_ncs_oper",d)]}return Td}var $1={},mG;function Fie(){if(mG)return $1;mG=1,Object.defineProperty($1,"__esModule",{value:!0}),$1.parseHelix=i,$1.parseSheet=c;const e=Ti(),t=lt(),r={1:"helx_rh_al_p",2:"helx_rh_om_p",3:"helx_rh_pi_p",4:"helx_rh_ga_p",5:"helx_rh_3t_p",6:"helx_lh_al_p",7:"helx_lh_om_p",8:"helx_lh_ga_p",9:"helx_rh_27_p",10:"helx_rh_pp_p"};function n(o){return r[o]||"helx_p"}function i(o,s,h){const f=[],y=u=>o.data.substring(o.indices[2*u],o.indices[2*u+1]);for(let u=s;u<h;u++){const m=y(u);f.push({serNum:m.substring(7,10).trim(),helixID:m.substring(11,14).trim(),initResName:m.substring(15,19).trim(),initChainID:m.substring(19,20).trim(),initSeqNum:m.substring(21,25).trim(),initICode:m.substring(25,26).trim(),endResName:m.substring(27,31).trim(),endChainID:m.substring(31,34).trim(),endSeqNum:m.substring(33,37).trim(),endICode:m.substring(37,38).trim(),helixClass:m.substring(38,40).trim(),comment:m.substring(40,70).trim(),length:m.substring(71,76).trim()})}const _=e.CifField.ofStrings(f.map(u=>u.initChainID)),g=e.CifField.ofStrings(f.map(u=>u.initResName)),a=e.CifField.ofStrings(f.map(u=>u.endChainID)),d=e.CifField.ofStrings(f.map(u=>u.endResName)),p={beg_label_asym_id:_,beg_label_comp_id:g,beg_label_seq_id:e.CifField.ofUndef
4123ined(f.length,t.Column.Schema.int),beg_auth_asym_id:_,beg_auth_comp_id:g,beg_auth_seq_id:e.CifField.ofStrings(f.map(u=>u.initSeqNum)),conf_type_id:e.CifField.ofStrings(f.map(u=>n(u.helixClass))),details:e.CifField.ofStrings(f.map(u=>u.comment)),end_label_asym_id:a,end_label_comp_id:d,end_label_seq_id:e.CifField.ofUndefined(f.length,t.Column.Schema.int),end_auth_asym_id:a,end_auth_comp_id:d,end_auth_seq_id:e.CifField.ofStrings(f.map(u=>u.endSeqNum)),id:e.CifField.ofStrings(f.map(u=>u.serNum)),pdbx_beg_PDB_ins_code:e.CifField.ofStrings(f.map(u=>u.initICode)),pdbx_end_PDB_ins_code:e.CifField.ofStrings(f.map(u=>u.endICode)),pdbx_PDB_helix_class:e.CifField.ofStrings(f.map(u=>u.helixClass)),pdbx_PDB_helix_length:e.CifField.ofStrings(f.map(u=>u.length)),pdbx_PDB_helix_id:e.CifField.ofStrings(f.map(u=>u.helixID))};return e.CifCategory.ofFields("struct_conf",p)}function c(o,s,h){const f=[],y=v=>o.data.substring(o.indices[2*v],o.indices[2*v+1]);for(let v=s;v<h;v++){const b=y(v);f.push({strand:b.substring(7,10).trim(),sheetID:b.substring(11,14).trim(),numStrands:b.substring(14,16).trim(),initResName:b.substring(17,21).trim(),initChainID:b.substring(21,22).trim(),initSeqNum:b.substring(22,26).trim(),initICode:b.substring(26,27).trim(),endResName:b.substring(28,32).trim(),endChainID:b.substring(32,33).trim(),endSeqNum:b.substring(33,37).trim(),endICode:b.substring(37,38).trim(),sense:b.substring(38,40).trim(),curAtom:b.substring(41,45).trim(),curResName:b.substring(45,49).trim(),curChainId:b.substring(49,50).trim(),curResSeq:b.substring(50,54).trim(),curICode:b.substring(54,55).trim(),prevAtom:b.substring(56,60).trim(),prevResName:b.substring(60,64).trim(),prevChainId:b.substring(64,65).trim(),prevResSeq:b.substring(65,69).trim(),prevICode:b.substring(69,70).trim()})}const _=e.CifField.ofStrings(f.map(v=>v.initChainID)),g=e.CifField.ofStrings(f.map(v=>v.initResName)),a=e.CifField.ofStrings(f.map(v=>v.initSeqNum)),d=e.CifField.ofStrings(f.map(v=>v.endChainID)),p=e.CifField.ofStrings(f.map(v=>v.endResName)),u=e.CifField.ofStrings(f.map(v=>v.endSeqNum)),m={beg_label_asym_id:_,beg_label_comp_id:g,beg_label_seq_id:a,beg_auth_asym_id:_,beg_auth_comp_id:g,beg_auth_seq_id:a,end_label_asym_id:d,end_label_comp_id:d,end_label_seq_id:u,end_auth_asym_id:d,end_auth_comp_id:p,end_auth_seq_id:u,id:e.CifField.ofStrings(f.map(v=>v.strand)),sheet_id:e.CifField.ofStrings(f.map(v=>v.sheetID)),pdbx_beg_PDB_ins_code:e.CifField.ofStrings(f.map(v=>v.initICode)),pdbx_end_PDB_ins_code:e.CifField.ofStrings(f.map(v=>v.endICode))};return e.CifCategory.ofFields("struct_sheet_range",m)}return $1}var Bs={},pG;function Lie(){if(pG)return Bs;pG=1,Object.defineProperty(Bs,"__esModule",{value:!0}),Bs.parseCmpnd=r,Bs.parseHetnam=n,Bs.parseSeqres=i,Bs.getEntityPolySeq=c,Bs.getPdbxUnobsOrZeroOccResidues=o;const e=Ti(),t={MOL_ID:"",MOLECULE:"",CHAIN:"",FRAGMENT:"",SYNONYM:"",EC:"",ENGINEERED:"",MUTATION:"",OTHER_DETAILS:""};function r(s,h,f){const y=p=>s.data.substring(s.indices[2*p],s.indices[2*p+1]);let _,g={chains:[],description:""};const a=[];for(let p=h;p<f;p++){const m=y(p).substring(10,80).trim(),v=m.indexOf(":"),b=m.substring(0,v);let P;b in t?(_=b,P=m.substring(v+2)):P=m,P=P.replace(/;$/,""),_==="MOL_ID"?(g={chains:[],description:""},a.push(g)):_==="MOLECULE"?(g.description&&(g.description+=" "),g.description+=P):_==="CHAIN"&&Array.prototype.push.apply(g.chains,P.split(/\s*,\s*/))}const d=[];for(const p of a)for(const u of p.chains)d.push({description:p.description,chains:[u]});return d}function n(s,h,f){const y=g=>s.data.substring(s.indices[2*g],s.indices[2*g+1]),_=new Map;for(let g=h;g<f;g++){const a=y(g),d=a.substring(11,14).trim(),p=a.substring(15).trim();_.has(d)?_.set(d,`${_.get(d)} ${p}`):_.set(d,p)}return _}function i(s,h,f){const y=g=>s.data.substring(s.indices[2*g],s.indices[2*g+1]),_=new Map;for(let g=h;g<f;g++){const a=y(g),d=a.substring(11,12),p=a.substring(19).trim().split(/\s+/);_.has(d)||_.set(d,[]),_.get(d).push(...p)}return _}function c(s,h){const f=[],y=[],_=[],g=[],a=new Set;for(const[d,p]of s){const u=h(d);if(!(!u||a.has(u))){a.add(u);for(let m=0;m<p.length;m++)f.push(u),y.push(m+1),_.push(p[m]),g.push("no")}}if(f.length>0){const d={entity_id:e.CifField.ofStrings(f),num:e.CifField.ofNumbers(y),mon_id:e.CifField.ofStrings(_),hetero:e.CifField.ofStrings(g)};return e.CifCategory.ofFields("entity_poly_seq",d)}}
4123function o(s,h,f,y){const _=new Map;for(const x of s.keys()){const M=h(x);M&&_.set(x,M)}const g=new Set,a=new Map,d=f.label_asym_id.rowCount;for(let x=0;x<d;++x){const M=f.auth_asym_id.str(x),D=f.label_entity_id.str(x),V=_.get(M);if(V&&D!==V)continue;const R=f.label_asym_id.str(x),E=f.label_seq_id.int(x),I=f.pdbx_PDB_model_num.int(x);g.add(`${I}|${R}|${E}`),a.has(M)||a.set(M,R)}const p=[],u=[],m=[],v=[],b=[],P=[],C=[],l=[],S=[],T=[];let A=0;y=Math.max(y,1);for(let x=1;x<=y;++x)for(const[M,D]of s){const V=a.get(M);if(V)for(let R=0;R<D.length;R++){const E=R+1;g.has(`${x}|${V}|${E}`)||(A++,p.push(A),u.push(x),m.push(V),v.push(D[R]),b.push(E),P.push(M),C.push(D[R]),l.push(E),S.push("y"),T.push(1))}}if(p.length>0){const x={id:e.CifField.ofNumbers(p),PDB_model_num:e.CifField.ofNumbers(u),polymer_flag:e.CifField.ofStrings(S),occupancy_flag:e.CifField.ofNumbers(T),label_asym_id:e.CifField.ofStrings(m),label_comp_id:e.CifField.ofStrings(v),label_seq_id:e.CifField.ofNumbers(b),auth_asym_id:e.CifField.ofStrings(P),auth_comp_id:e.CifField.ofStrings(C),auth_seq_id:e.CifField.ofNumbers(l)};return e.CifCategory.ofFields("pdbx_unobs_or_zero_occ_residues",x)}}return Bs}var Rs={},CP={},X1={},hG;function Nie(){if(hG)return X1;hG=1,Object.defineProperty(X1,"__esModule",{value:!0}),X1.SubstitutionMatrices=void 0;const e="ACDEFGHIKLMNPQRSTVWY",t="ARNDCQEGHILKMFPSTWYVBZX",r=[[4,0,-2,-1,-2,0,-2,-1,-1,-1,-1,-2,-1,-1,-1,1,0,0,-3,-2],[0,9,-3,-4,-2,-3,-3,-1,-3,-1,-1,-3,-3,-3,-3,-1,-1,-1,-2,-2],[-2,-3,6,2,-3,-1,-1,-3,-1,-4,-3,1,-1,0,-2,0,-1,-3,-4,-3],[-1,-4,2,5,-3,-2,0,-3,1,-3,-2,0,-1,2,0,0,-1,-2,-3,-2],[-2,-2,-3,-3,6,-3,-1,0,-3,0,0,-3,-4,-3,-3,-2,-2,-1,1,3],[0,-3,-1,-2,-3,6,-2,-4,-2,-4,-3,0,-2,-2,-2,0,-2,-3,-2,-3],[-2,-3,-1,0,-1,-2,8,-3,-1,-3,-2,1,-2,0,0,-1,-2,-3,-2,2],[-1,-1,-3,-3,0,-4,-3,4,-3,2,1,-3,-3,-3,-3,-2,-1,3,-3,-1],[-1,-3,-1,1,-3,-2,-1,-3,5,-2,-1,0,-1,1,2,0,-1,-2,-3,-2],[-1,-1,-4,-3,0,-4,-3,2,-2,4,2,-3,-3,-2,-2,-2,-1,1,-2,-1],[-1,-1,-3,-2,0,-3,-2,1,-1,2,5,-2,-2,0,-1,-1,-1,1,-1,-1],[-2,-3,1,0,-3,0,1,-3,0,-3,-2,6,-2,0,0,1,0,-3,-4,-2],[-1,-3,-1,-1,-4,-2,-2,-3,-1,-3,-2,-2,7,-1,-2,-1,-1,-2,-4,-3],[-1,-3,0,2,-3,-2,0,-3,1,-2,0,0,-1,5,1,0,-1,-2,-2,-1],[-1,-3,-2,0,-3,-2,0,-3,2,-2,-1,0,-2,1,5,-1,-1,-3,-3,-2],[1,-1,0,0,-2,0,-1,-2,0,-2,-1,1,-1,0,-1,4,1,-2,-3,-2],[0,-1,-1,-1,-2,-2,-2,-1,-1,-1,-1,0,-1,-1,-1,1,5,0,-2,-2],[0,-1,-3,-2,-1,-3,-3,3,-2,1,1,-3,-2,-2,-3,-2,0,4,-3,-1],[-3,-2,-4,-3,1,-2,-2,-3,-3,-2,-1,-4,-4,-2,-3,-3,-2,-3,11,2],[-2,-2,-3,-2,3,-3,2,-1,-2,-1,-1,-2,-3,-1,-2,-2,-2,-1,2,7]],n=[[4,-1,-2,-2,0,-1,-1,0,-2,-1,-1,-1,-1,-2,-1,1,0,-3,-2,0,-2,-1,0],[-1,5,0,-2,-3,1,0,-2,0,-3,-2,2,-1,-3,-2,-1,-1,-3,-2,-3,-1,0,-1],[-2,0,6,1,-3,0,0,0,1,-3,-3,0,-2,-3,-2,1,0,-4,-2,-3,3,0,-1],[-2,-2,1,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,4,1,-1],[0,-3,-3,-3,9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1,-3,-3,-2],[-1,1,0,0,-3,5,2,-2,0,-3,-2,1,0,-3,-1,0,-1,-2,-1,-2,0,3,-1],[-1,0,0,2,-4,2,5,-2,0,-3,-3,1,-2,-3,-1,0,-1,-3,-2,-2,1,4,-1],[0,-2,0,-1,-3,-2,-2,6,-2,-4,-4,-2,-3,-3,-2,0,-2,-2,-3,-3,-1,-2,-1],[-2,0,1,-1,-3,0,0,-2,8,-3,-3,-1,-2,-1,-2,-1,-2,-2,2,-3,0,0,-1],[-1,-3,-3,-3,-1,-3,-3,-4,-3,4,2,-3,1,0,-3,-2,-1,-3,-1,3,-3,-3,-1],[-1,-2,-3,-4,-1,-2,-3,-4,-3,2,4,-2,2,0,-3,-2,-1,-2,-1,1,-4,-3,-1],[-1,2,0,-1,-3,1,1,-2,-1,-3,-2,5,-1,-3,-1,0,-1,-3,-2,-2,0,1,-1],[-1,-1,-2,-3,-1,0,-2,-3,-2,1,2,-1,5,0,-2,-1,-1,-1,-1,1,-3,-1,-1],[-2,-3,-3,-3,-2,-3,-3,-3,-1,0,0,-3,0,6,-4,-2,-2,1,3,-1,-3,-3,-1],[-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4,7,-1,-1,-4,-3,-2,-2,-1,-2],[1,-1,1,0,-1,0,0,0,-1,-2,-2,0,-1,-2,-1,4,1,-3,-2,-2,0,0,0],[0,-1,0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1,1,5,-2,-2,0,-1,-1,0],[-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1,1,-4,-3,-2,11,2,-3,-4,-3,-2],[-2,-2,-2,-3,-2,-1,-2,-3,2,-1,-1,-2,-1,3,-3,-2,-2,2,7,-1,-3,-2,-1],[0,-3,-3,-3,-1,-2,-2,-3,-3,3,1,-2,1,-1,-2,-2,0,-3,-1,4,-3,-2,-1],[-2,-1,3,4,-3,0,1,-1,0,-3,-4,0,-3,-3,-2,0,-1,-4,-3,-3,4,1,-1],[-1,0,0,1,-3,3,4,-2,0,-3,-3,1,-1,-3,-1,0,-1,-3,-2,-2,1,4,-1],[0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,0,0,-2,-1,-1,-1,-1,-1]];function i(c,o){let s,h=0;const f={};return o.forEach(y=>{s=0;const _={};y.forEach(g=>_[c[s++]]=g),f[c[h++]]=_}),f}return X1.SubstitutionMatrices={blosum62:i(t,n),blosum62x:i(e,r)},X1}var gG;
4123function qie(){if(gG)return CP;gG=1,Object.defineProperty(CP,"__esModule",{value:!0}),CP.align=n;const e=Ct(),t=Nie(),r={gapPenalty:-11,gapExtensionPenalty:-1,substMatrix:"default"};function n(c,o,s={}){const h={...r,...s},f=new i(c,o,h);return f.calculate(),f.trace()}class i{constructor(o,s,h){this.seqA=o,this.seqB=s,this.S=[],this.V=[],this.H=[],this.gapPenalty=h.gapPenalty,this.gapExtensionPenalty=h.gapExtensionPenalty,this.substMatrix=h.substMatrix==="default"?void 0:t.SubstitutionMatrices[h.substMatrix],this.n=this.seqA.length,this.m=this.seqB.length}initMatrices(){const{n:o,m:s,gapPenalty:h,S:f,V:y,H:_}=this;for(let g=0;g<=o;++g){f[g]=[],y[g]=[],_[g]=[];for(let a=0;a<=s;++a)f[g][a]=0,y[g][a]=0,_[g][a]=0}for(let g=0;g<=o;++g)f[g][0]=h,_[g][0]=-1/0;for(let g=0;g<=s;++g)f[0][g]=h,y[0][g]=-1/0;f[0][0]=0}makeScoreFn(){const{seqA:o,seqB:s,substMatrix:h}=this;return h?function(y,_){var g;const a=o[y],d=s[_],p=(g=h[a])===null||g===void 0?void 0:g[d];return e.isDebugMode&&p===void 0&&console.warn(`Substitution matrix has no entry for residue pair ('${a}', '${d}') (seqA[${y}], seqB[${_}]). Non-standard residues are not supported with BLOSUM matrices.`),p??0}:function(y,_){const g=o[y],a=s[_];return g===a?5:-3}}calculate(){this.initMatrices();const o=this.makeScoreFn(),{V:s,H:h,S:f,n:y,m:_,gapExtensionPenalty:g,gapPenalty:a}=this;let d,p,u,m,v;for(let b=1;b<=y;++b){p=f[b-1],d=s[b-1],u=s[b],m=h[b],v=f[b];for(let P=1;P<=_;++P)u[P]=Math.max(p[P]+a,d[P]+g),m[P]=Math.max(v[P-1]+a,m[P-1]+g),v[P]=Math.max(p[P-1]+o(b-1,P-1),u[P],m[P])}}trace(){const o=this.makeScoreFn(),{V:s,H:h,S:f,seqA:y,seqB:_,gapExtensionPenalty:g,gapPenalty:a}=this;let d=this.n,p=this.m,u,m;const v=[],b=[];for(f[d][p]>=s[d][p]?(u="S",m=f[d][p]):s[d][p]>=h[d][p]?(u="V",m=s[d][p]):(u="H",m=h[d][p]);d>0&&p>0;)u==="S"?f[d][p]===f[d-1][p-1]+o(d-1,p-1)?(v.push(y[d-1]),b.push(_[p-1]),--d,--p,u="S"):f[d][p]===s[d][p]?u="V":f[d][p]===h[d][p]?u="H":(--d,--p):u==="V"?s[d][p]===s[d-1][p]+g?(v.push(y[d-1]),b.push("-"),--d,u="V"):s[d][p]===f[d-1][p]+a?(v.push(y[d-1]),b.push("-"),--d,u="S"):--d:u==="H"&&(h[d][p]===h[d][p-1]+g?(v.push("-"),b.push(_[p-1]),--p,u="H"):h[d][p]===f[d][p-1]+a?(v.push("-"),b.push(_[p-1]),--p,u="S"):--p);for(;d>0;)v.push(y[d-1]),b.push("-"),--d;for(;p>0;)v.push("-"),b.push(_[p-1]),--p;return v.reverse(),b.reverse(),{aliA:v,aliB:b,score:m}}}return CP}var yG;function Uie(){if(yG)return Rs;yG=1,Object.defineProperty(Rs,"__esModule",{value:!0}),Rs.LabelAsymIdHelper=void 0,Rs.getAtomSiteTemplate=o,Rs.getAtomSite=g,Rs.addAtom=a;const e=Ti(),t=Or(),r=cc(),n=lt(),i=Wi(),c=qie();function o(d,p){const u=()=>[],m=()=>t.TokenBuilder.create(d,2*p);return{index:0,group_PDB:m(),id:u(),auth_atom_id:m(),label_alt_id:m(),auth_comp_id:m(),auth_asym_id:m(),auth_seq_id:m(),pdbx_PDB_ins_code:m(),Cartn_x:m(),Cartn_y:m(),Cartn_z:m(),occupancy:m(),B_iso_or_equiv:m(),type_symbol:m(),pdbx_PDB_model_num:u(),label_entity_id:u(),partial_charge:m()}}class s{constructor(p,u,m,v){this.asymIds=p,this.modelNums=u,this.terIndices=m,this.hasAssemblies=v,this.asymIdCounts=new Map,this.currModelNum=void 0,this.currAsymId="",this.currLabelAsymId=""}clear(){this.asymIdCounts.clear(),this.currModelNum=void 0}get(p){const u=this.asymIds.value(p);if(this.hasAssemblies)return u;const m=this.modelNums[p];if(m!==this.currModelNum?(this.asymIdCounts.clear(),this.currModelNum=m,this.currLabelAsymId=u):this.currAsymId!==u&&(this.currAsymId=u,this.currLabelAsymId=u),this.asymIdCounts.has(u)){if(this.terIndices.has(p)){const v=this.asymIdCounts.get(u)+1;this.asymIdCounts.set(u,v),this.currLabelAsymId=`${u}_${v}`}}else this.asymIdCounts.set(u,0);return this.currLabelAsymId}}Rs.LabelAsymIdHelper=s;const h=-1;function f(d,p){const u=p.length,m=d.length;if(u===0)return[];if(m===0)return new Array(u).fill(h);const{aliA:v,aliB:b}=(0,c.align)(p,d),P=new Array(u).fill(h);let C=0,l=0;for(let S=0,T=v.length;S<T;S++){const A=v[S]!=="-",x=b[S]!=="-";A&&x?(P[C]=l+1,C++,l++):A?C++:l++}return P}function y(d,p,u,m,v,b,P){const C=new Map;if(!d)return C;const l=new Map;let S="",T=-99999,A="___";const x=u.str(0);for(let M=0,D=p.rowCount;M<D&&u.str(M)===x;++M){const V=m.str(M),R=v.int(M),E=b.str(M);(V!==S||R!==T||E!==A)&&(l.has(V)||l.set(V,[]),l.get(V).push(P.str(M)),S=V,T=R,A=E)}for(const[M,D]of l){const V=d.get(M);V&&V.length>0&&C.set(M,f(V,D))}return C}function _(d,p,u){const m=d?d[0]:h;return m!==h?m:u?1:p}function g(d,p,u){p.clear();const m=e.CifField.ofStrings(d.pdbx_PDB_model_num),v=e.CifField.ofTokens(d.auth_asym_id),b=e.CifField.ofTokens(d.auth_seq_id),P=e.CifField.ofTokens(d.pdbx_PDB_ins_code),C=e.CifField.ofTokens(d.auth_atom_id),l=e.CifField.ofTokens(d.auth_comp_id),S=e.CifField.ofStrings(d.id);let T=!!u.seqresMap;if(!T){for(let k=0,j=S.rowCount;k<j;++k)if(P.str(k)!==""){T=!0;break}}const A=y(u.seqresMap,S,m,v,b,P,l);let x=m.str(0),M=v.str(0),D=b.int(0),V=P.str(0),R=A.get(M),E=0,I=_(R,D,T);const B=new Map,w=new Map,O=[],F=[],L=[];for(let k=0,j=S.rowCount;k<j;++k){const H=m.str(k),G=v.str(k),z=b.int(k),W=P.str(k);let X=C.str(k);if(H!==x)B.clear(),w.clear(),x=H,M=G,D=z,V=W,R=A.get(G),E=0,I=_(R,D,T);else if(M!==G)w.clear(),M=G,D=z,V=W,R=A.get(G),E=0,I=_(R,z,T);else if(D!==z||V!==W){w.clear(),E++;const Y=R&&E<R.length?R[E]:h;Y!==h?I=Y:D===I&&!T?I=z:I+=1,D=z,V=W}if(O[k]=p.get(k),w.has(X)){const Y=w.get(X)+1;w.set(X,Y),X=`${X}_${Y}`}else w.set(X,0);F[k]=X,T&&(L[k]=I)}const U=n.Column.ofStringArray(O),q=n.Column.ofStringArray(F),N=T?e.CifField.ofColumn(n.Column.ofIntArray(L)):e.CifField.ofUndef
4123ined(d.index,n.Column.Schema.int);return{auth_asym_id:v,auth_atom_id:C,auth_comp_id:l,auth_seq_id:b,B_iso_or_equiv:e.CifField.ofTokens(d.B_iso_or_equiv),Cartn_x:e.CifField.ofTokens(d.Cartn_x),Cartn_y:e.CifField.ofTokens(d.Cartn_y),Cartn_z:e.CifField.ofTokens(d.Cartn_z),group_PDB:e.CifField.ofTokens(d.group_PDB),id:S,label_alt_id:e.CifField.ofTokens(d.label_alt_id),label_asym_id:e.CifField.ofColumn(U),label_atom_id:e.CifField.ofColumn(q),label_comp_id:l,label_seq_id:N,label_entity_id:e.CifField.ofStrings(d.label_entity_id),occupancy:(0,i.areTokensEmpty)(d.occupancy)?e.CifField.ofUndefined(d.index,n.Column.Schema.float):e.CifField.ofTokens(d.occupancy),type_symbol:e.CifField.ofTokens(d.type_symbol),pdbx_PDB_ins_code:e.CifField.ofTokens(d.pdbx_PDB_ins_code),pdbx_PDB_model_num:m,partial_charge:e.CifField.ofTokens(d.partial_charge)}}function a(d,p,u,m,v,b){const{data:P}=u,C=v-m;t.TokenBuilder.addToken(d.group_PDB,t.Tokenizer.trim(u,m,m+6)),t.Tokenizer.trim(u,m+6,m+11),d.id[d.index]=u.data.substring(u.tokenStart,u.tokenEnd),t.TokenBuilder.addToken(d.auth_atom_id,t.Tokenizer.trim(u,m+12,m+16)),P.charCodeAt(m+16)===32?t.TokenBuilder.add(d.label_alt_id,0,0):t.TokenBuilder.add(d.label_alt_id,m+16,m+17),t.TokenBuilder.addToken(d.auth_comp_id,t.Tokenizer.trim(u,m+17,m+21)),t.TokenBuilder.add(d.auth_asym_id,m+21,m+22),t.TokenBuilder.addToken(d.auth_seq_id,t.Tokenizer.trim(u,m+22,m+26)),P.charCodeAt(m+26)===32?t.TokenBuilder.add(d.pdbx_PDB_ins_code,0,0):t.TokenBuilder.add(d.pdbx_PDB_ins_code,m+26,m+27),t.TokenBuilder.addToken(d.Cartn_x,t.Tokenizer.trim(u,m+30,m+38)),t.TokenBuilder.addToken(d.Cartn_y,t.Tokenizer.trim(u,m+38,m+46)),t.TokenBuilder.addToken(d.Cartn_z,t.Tokenizer.trim(u,m+46,m+54)),b==="pqr"?(t.TokenBuilder.addToken(d.partial_charge,t.Tokenizer.trim(u,m+54,m+62)),(0,r.guessElementSymbolTokens)(d.type_symbol,P,m+12,m+16)):(t.TokenBuilder.addToken(d.occupancy,t.Tokenizer.trim(u,m+54,m+60)),C>=66?t.TokenBuilder.addToken(d.B_iso_or_equiv,t.Tokenizer.trim(u,m+60,m+66)):t.TokenBuilder.add(d.B_iso_or_equiv,0,0),b==="pdbqt"&&t.TokenBuilder.addToken(d.partial_charge,t.Tokenizer.trim(u,m+70,m+76)),C>=78&&b==="pdb"?(t.Tokenizer.trim(u,m+76,m+78),u.tokenStart<u.tokenEnd?t.TokenBuilder.addToken(d.type_symbol,u):(0,r.guessElementSymbolTokens)(d.type_symbol,P,m+12,m+16)):(0,r.guessElementSymbolTokens)(d.type_symbol,P,m+12,m+16)),d.pdbx_PDB_model_num[d.index]=p,d.index++}return Rs}var xd={},vG;function jie(){if(vG)return xd;vG=1,Object.defineProperty(xd,"__esModule",{value:!0}),xd.getAnisotropicTemplate=i,xd.getAnisotropic=c,xd.addAnisotropic=o;const e=Ti(),t=Or(),r=cc(),n=La();function i(s,h){const f=()=>[],y=()=>new Float32Array(h),_=()=>t.TokenBuilder.create(s,2*h);return{index:0,count:h,id:f(),type_symbol:_(),pdbx_label_atom_id:_(),pdbx_label_alt_id:_(),pdbx_label_comp_id:_(),pdbx_label_asym_id:_(),pdbx_label_seq_id:_(),pdbx_PDB_ins_code:_(),"U[1][1]":y(),"U[2][2]":y(),"U[3][3]":y(),"U[1][2]":y(),"U[1][3]":y(),"U[2][3]":y(),pdbx_auth_seq_id:_(),pdbx_auth_comp_id:_(),pdbx_auth_asym_id:_(),pdbx_auth_atom_id:_()}}function c(s){const h=e.CifField.ofTokens(s.pdbx_auth_seq_id),f=e.CifField.ofTokens(s.pdbx_auth_comp_id),y=e.CifField.ofTokens(s.pdbx_auth_asym_id),_=e.CifField.ofTokens(s.pdbx_auth_atom_id),g={id:e.CifField.ofStrings(s.id),type_symbol:e.CifField.ofTokens(s.type_symbol),pdbx_label_atom_id:_,pdbx_label_alt_id:e.CifField.ofTokens(s.pdbx_label_alt_id),pdbx_label_comp_id:f,pdbx_label_asym_id:y,pdbx_label_seq_id:h,pdbx_PDB_ins_code:e.CifField.ofTokens(s.pdbx_PDB_ins_code),pdbx_auth_seq_id:h,pdbx_auth_comp_id:f,pdbx_auth_asym_id:y,pdbx_auth_atom_id:_};return g["U[1][1]"]=e.CifField.ofNumbers(s["U[1][1]"]),g["U[2][2]"]=e.CifField.ofNumbers(s["U[2][2]"]),g["U[3][3]"]=e.CifField.ofNumbers(s["U[3][3]"]),g["U[1][2]"]=e.CifField.ofNumbers(s["U[1][2]"]),g["U[1][3]"]=e.CifField.ofNumbers(s["U[1][3]"]),g["U[2][3]"]=e.CifField.ofNumbers(s["U[2][3]"]),g}function o(s,h,f,y,_){const{data:g}=f,a=_-y;t.Tokenizer.trim(f,y+6,y+11),s.id[s.index]=g.substring(f.tokenStart,f.tokenEnd),t.TokenBuilder.addToken(s.pdbx_auth_atom_id,t.Tokenizer.trim(f,y+12,y+16)),g.charCodeAt(y+16)===32?t.TokenBuilder.add(s.pdbx_label_alt_id,0,0):t.TokenBuilder.add(s.pdbx_label_alt_id,y+16,y+17),t.TokenBuilder.addToken(s.pdbx_auth_comp_id,t.Tokenizer.trim(f,y+17,y+21)),t.TokenBuilder.add(s.pdbx_auth_asym_id,y+21,y+22),t.TokenBuilder.addToken(s.pdbx_auth_seq_id,t.Tokenizer.trim(f,y+22,y+26)),g.charCodeAt(y+26)===32?t.TokenBuilder.add(s.pdbx_PDB_ins_code,0,0):t.TokenBuilder.add(s.pdbx_PDB_ins_code,y+26,y+27),s["U[1][1]"][s.index]=(0,n.parseIntSkipLeadingWhitespace)(g,y+28,y+35)/1e4,s["U[2][2]"][s.index]=(0,n.parseIntSkipLeadingWhitespace)(g,y+35,y+42)/1e4,s["U[3][3]"][s.index]=(0,n.parseIntSkipLeadingWhitespace)(g,y+42,y+49)/1e4,s["U[1][2]"][s.index]=(0,n.parseIntSkipLeadingWhitespace)(g,y+49,y+56)/1e4,s["U[1][3]"][s.index]=(0,n.parseIntSkipLeadingWhitespace)(g,y+56,y+63)/1e4,s["U[2][3]"][s.index]=(0,n.parseIntSkipLeadingWhitespace)(g,y+63,y+70)/1e4,a>=78?(t.Tokenizer.trim(f,y+76,y+78),f.tokenStart<f.tokenEnd?t.TokenBuilder.addToken(s.type_symbol,f):(0,r.guessElementSymbolTokens)(s.type_symbol,g,y+12,y+16)):(0,r.guessElementSymbolTokens)(s.type_symbol,g,y+12,y+16),s.index++}return xd}var PP={},bG;function Gie(){if(bG)return PP;
4123bG=1,Object.defineProperty(PP,"__esModule",{value:!0}),PP.parseConect=r;const e=Ti(),t=Xi();function r(n,i,c,o){const s={};for(let R=0,E=o.id.rowCount;R<E;++R)s[o.id.str(R)]=R;const h=R=>n.data.substring(n.indices[2*R],n.indices[2*R+1]),f=[],y=[],_=[],g=[],a=[],d=[],p=[],u=[],m=[],v=[],b=[],P=[],C=[],l=[],S=[],T=[11,16,21,26];let A=1,x=-1,M={},D=!1;for(let R=i;R<c;R++){const E=h(R),I=s[parseInt(E.substr(6,5))];if(I!==void 0){x!==I&&(x=I,M={});for(let B=0;B<4;++B){const w=parseInt(E.substr(T[B],5));if(Number.isNaN(w))continue;const O=s[w];if(O===void 0||I>O)continue;if(M[O]!==void 0){_[M[O]]+=1,D=!0;continue}M[O]=A-1;const F=o.type_symbol.str(I),L=o.type_symbol.str(O);(0,t.isMetal)(F)||(0,t.isMetal)(L)?(f.push(`metalc${A}`),y.push("metalc")):(f.push(`covale${A}`),y.push("covale")),_.push(1),g.push(o.label_asym_id.str(I)),a.push(o.label_seq_id.int(I)),d.push(o.auth_seq_id.int(I)),p.push(o.label_atom_id.str(I)),u.push(o.label_alt_id.str(I)),m.push(o.pdbx_PDB_ins_code.str(I)),v.push(o.label_asym_id.str(O)),b.push(o.label_seq_id.int(O)),P.push(o.auth_seq_id.int(O)),C.push(o.label_atom_id.str(O)),l.push(o.label_alt_id.str(O)),S.push(o.pdbx_PDB_ins_code.str(O)),A+=1}}}const V={id:e.CifField.ofStrings(f),conn_type_id:e.CifField.ofStrings(y),ptnr1_label_asym_id:e.CifField.ofStrings(g),ptnr1_label_seq_id:e.CifField.ofNumbers(a),ptnr1_auth_seq_id:e.CifField.ofNumbers(d),ptnr1_label_atom_id:e.CifField.ofStrings(p),pdbx_ptnr1_label_alt_id:e.CifField.ofStrings(u),pdbx_ptnr1_PDB_ins_code:e.CifField.ofStrings(m),ptnr2_label_asym_id:e.CifField.ofStrings(v),ptnr2_label_seq_id:e.CifField.ofNumbers(b),ptnr2_auth_seq_id:e.CifField.ofNumbers(P),ptnr2_label_atom_id:e.CifField.ofStrings(C),pdbx_ptnr2_label_alt_id:e.CifField.ofStrings(l),pdbx_ptnr2_PDB_ins_code:e.CifField.ofStrings(S)};if(D){const R=["sing","doub","trpl","quad"];V.pdbx_value_order=e.CifField.ofStrings(_.map(E=>R[E-1]||"sing"))}return e.CifCategory.ofFields("struct_conn",V)}return PP}var TP={},_G;function zie(){if(_G)return TP;_G=1,Object.defineProperty(TP,"__esModule",{value:!0}),TP.addHeader=e;function e(t,r,n,i){const c=t.substring(r,n);i.id_code=c.substring(62,66).trim()||void 0,i.dep_date=c.substring(50,59).trim()||void 0,i.classification=c.substring(10,50).trim()||void 0}return TP}var SG;function Hie(){if(SG)return SP;SG=1,Object.defineProperty(SP,"__esModule",{value:!0}),SP.pdbToMmCif=p;const e=Ti(),t=Or(),r=kie(),n=Fie(),i=Lie(),c=Ai(),o=xi(),s=lt(),h=dt(),f=Uie(),y=jie(),_=Gie(),g=Ct(),a=zie();function d(u,m,v,b){const P=b.length;if(P>v-m)return!1;for(let C=0;C<P;C++)if(u.charCodeAt(m+C)!==b.charCodeAt(C))return!1;return!0}async function p(u){const{lines:m,variant:v}=u,{data:b,indices:P}=m,C=(0,t.Tokenizer)(b);let l=0,S=0;for(let G=0,z=m.count;G<z;G++){const W=P[2*G],X=P[2*G+1];switch(b.charAt(W)){case"A":d(b,W,X,"ATOM  ")?l++:d(b,W,X,"ANISOU")&&S++;break;case"H":d(b,W,X,"HETATM")&&l++;break}}const T={},A=(0,f.getAtomSiteTemplate)(b,l),x=(0,y.getAnisotropicTemplate)(b,S),M=new o.EntityBuilder,D=[],V=[];let R=0,E="",I,B=!1,w;const O=new Set;for(let G=0,z=m.count;G<z;G++){let W=P[2*G],X=P[2*G+1];switch(b.charAt(W)){case"A":d(b,W,X,"ATOM  ")?(R||(R++,E=""+R),(0,f.addAtom)(A,E,C,W,X,v)):d(b,W,X,"ANISOU")&&(0,y.addAnisotropic)(x,E,C,W,X);break;case"C":if(d(b,W,X,"CRYST1"))D.push(...(0,r.parseCryst1)(u.id||"?",b.substring(W,X)));else if(d(b,W,X,"CONECT")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"CONECT");)Y++;I?g.isDebugMode&&console.log("only single CONECT block allowed, ignoring others"):I=[G,Y],G=Y-1}else if(d(b,W,X,"COMPND")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"COMPND");)Y++;M.setCompounds((0,i.parseCmpnd)(m,G,Y)),G=Y-1}break;case"H":if(d(b,W,X,"HEADER"))(0,a.addHeader)(b,W,X,T);else if(d(b,W,X,"HETATM"))R||(R++,E=""+R),(0,f.addAtom)(A,E,C,W,X,v);else if(d(b,W,X,"HELIX")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"HELIX");)Y++;D.push((0,n.parseHelix)(m,G,Y)),G=Y-1}else if(d(b,W,X,"HETNAM")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"HETNAM");)Y++;V.push(...Array.from((0,i.parseHetnam)(m,G,Y).entries())),G=Y-1}break;case"M":if(d(b,W,X,"MODEL ")&&(R++,E=""+R),d(b,W,X,"MTRIX")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"MTRIX");)Y++;D.push(...(0,r.parseMtrix)(m,G,Y)),G=Y-1}break;case"O":break;case"R":if(d(b,W,X,"REMARK 350")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"REMARK 350");)Y++;D.push(...(0,r.parseRemark350)(m,G,Y)),G=Y-1,B=!0}break;case"S":if(d(b,W,X,"SHEET")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"SHEET");)Y++;D.push((0,n.parseSheet)(m,G,Y)),G=Y-1}else if(d(b,W,X,"SEQRES")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"SEQRES");)Y++;w?g.isDebugMode&&console.log("only single SEQRES block allowed, ignoring others"):(w=(0,i.parseSeqres)(m,G,Y),M.setSeqres(w)),G=Y-1}break;case"T":d(b,W,X,"TER")&&O.add(A.index)}}if(T.id_code){const G={id:e.CifField.ofString(T.id_code)};D.push(e.CifCategory.ofFields("entry",G))}if(T.classification){const G={pdbx_keywords:e.CifField.ofString(T.classification)};D.push(e.CifCategory.ofFields("struct_keywords",G))}if(T.dep_date){const G={recvd_initial_deposition_date:e.CifField.ofString(T.dep_date)};D.push(e.CifCategory.ofFields("pdbx_database_status",G))}const F=s.Column.ofIntTokens(A.auth_seq_id),L=s.Column.ofStringTokens(A.auth_atom_id),U=s.Column.ofStringTokens(A.auth_comp_id),q=s.Column.ofStringTokens(A.auth_asym_id),N=new f.LabelAsymIdHelper(q,A.pdbx_PDB_model_num,O,B),k=new c.ComponentBuilder(F,L);k.setNames(V),M.setNames(V);for(let G=0,z=U.rowCount;G<z;
4123++G){const W=U.value(G),X=(0,h.getMoleculeType)(k.add(W,G).type,W),Y=N.get(G);A.label_entity_id[G]=M.getEntityId(W,X,Y)}const j=(0,f.getAtomSite)(A,N,{hasAssemblies:B,seqresMap:w});v==="pdb"&&delete j.partial_charge,I&&D.push((0,_.parseConect)(m,I[0],I[1],j));const H={entity:e.CifCategory.ofTable("entity",M.getEntityTable()),chem_comp:e.CifCategory.ofTable("chem_comp",k.getChemCompTable()),atom_site:e.CifCategory.ofFields("atom_site",j),atom_site_anisotrop:e.CifCategory.ofFields("atom_site_anisotrop",(0,y.getAnisotropic)(x))};if(w){const G=(0,i.getEntityPolySeq)(w,W=>M.getEntityIdForChain(W));G&&D.push(G);const z=(0,i.getPdbxUnobsOrZeroOccResidues)(w,W=>M.getEntityIdForChain(W),j,R);z&&D.push(z)}for(const G of D)H[G.name]=G;return{header:u.id||v.toUpperCase(),categoryNames:Object.keys(H),categories:H}}return SP}var CG;function Wie(){if(CG)return Pd;CG=1,Object.defineProperty(Pd,"__esModule",{value:!0}),Pd.PdbFormat=void 0,Pd.trajectoryFromPDB=h;const e=Hie(),t=nt(),r=Mi(),n=ga(),i=lt(),c=c2(),o=vn();var s;(function(f){function y(g){return g?.kind==="pdb"}f.is=y;function _(g){return{kind:"pdb",name:g.id||"",data:g}}f.create=_})(s||(Pd.PdbFormat=s={}));function h(f){return t.Task.create("Parse PDB",async y=>{var _;await y.update("Converting to mmCIF");const g=await(0,e.pdbToMmCif)(f),a=r.MmcifFormat.fromFrame(g,void 0,s.create(f)),d=(0,o.createBasic)(a.data.db,!0),p=await(0,n.createModels)(d,a,y),u=(_=g.categories.atom_site)===null||_===void 0?void 0:_.getField("partial_charge");if(u&&p.frameCount===1){const m=p.representative,v=m.atomicHierarchy.atomSourceIndex,P=i.Column.isIdentity(v)?void 0:v.toArray({array:Int32Array}),C=u.toFloatArray(),l=P?i.Column.ofFloatArray(i.Column.mapToArray(v,S=>C[S],Float32Array)):i.Column.ofFloatArray(C);c.AtomPartialCharge.Provider.set(m,{data:l,type:"GASTEIGER"})}return p})}return Pd}var Ad={},PG;function $ie(){if(PG)return Ad;PG=1,Object.defineProperty(Ad,"__esModule",{value:!0}),Ad.PsfFormat=void 0,Ad.topologyFromPsf=_;const e=lt(),t=dt(),r=yT(),n=nt(),i=vn(),c=Ai(),o=xi(),s=qS(),h=cc();function f(g){const a=new Array(g.count),d=new Array(g.count),p=new Uint32Array(g.count),u=new Uint32Array(g.count),m=new Array(g.count),v=new o.EntityBuilder,b=new c.ComponentBuilder(g.residueId,g.atomName);let P="",C=0,l="",S=0,T=g.segmentName.value(0),A=!1,x=t.MoleculeType.Unknown,M=-1;for(let V=0,R=g.count;V<R;++V){const E=g.residueId.value(V),I=g.segmentName.value(V);if(T!==I?(l=(0,s.getChainId)(C),C+=1,S=0,A=!0,T=I):A=!1,A||E!==M){const B=g.residueName.value(V),w=(0,t.getMoleculeType)(b.add(B,V).type,B);!A&&(w!==x||E!==M+1)&&(l=(0,s.getChainId)(C),C+=1,S=0),P=v.getEntityId(B,w,l),S+=1,M=E,x=w}a[V]=P,d[V]=l,p[V]=S,u[V]=V,m[V]=(0,h.guessElementSymbolString)(g.atomName.value(V),g.residueName.value(V))}const D=e.Table.ofPartialColumns(i.BasicSchema.atom_site,{auth_asym_id:g.segmentName,auth_atom_id:g.atomName,auth_comp_id:g.residueName,auth_seq_id:g.residueId,id:e.Column.ofIntArray(u),label_asym_id:e.Column.ofStringArray(d),label_atom_id:g.atomName,label_comp_id:g.residueName,label_seq_id:e.Column.ofIntArray(p),label_entity_id:e.Column.ofStringArray(a),occupancy:e.Column.ofConst(1,g.count,e.Column.Schema.float),type_symbol:e.Column.ofStringArray(m),pdbx_PDB_model_num:e.Column.ofConst(1,g.count,e.Column.Schema.int)},g.count);return(0,i.createBasic)({entity:v.getEntityTable(),chem_comp:b.getChemCompTable(),atom_site:D})}var y;(function(g){function a(p){return p?.kind==="psf"}g.is=a;function d(p){return{kind:"psf",name:p.id,data:p}}g.fromPsf=d})(y||(Ad.PsfFormat=y={}));function _(g){return n.Task.create("Parse PSF",async a=>{const d=y.fromPsf(g),p=f(g.atoms),{atomIdA:u,atomIdB:m}=g.bonds,v={indexA:e.Column.ofLambda({value:b=>u.value(b)-1,rowCount:u.rowCount,schema:u.schema}),indexB:e.Column.ofLambda({value:b=>m.value(b)-1,rowCount:m.rowCount,schema:m.schema}),order:e.Column.ofConst(1,g.bonds.count,e.Column.Schema.int)};return r.Topology.create(g.id,p,v,d)})}return Ad}var K1={},nA={},wu={},TG;function Xie(){if(TG)return wu;TG=1,Object.defineProperty(wu,"__esModule",{value:!0}),wu.getPositionalArgs=t,wu.tryGetArg=r,wu.pickArgs=n,wu.aggregate=i;const e=dr();function t(c){return Object.keys(c).filter(o=>!isNaN(o)).map(o=>+o).sort((o,s)=>o-s).map(o=>c[o])}function r(c,o,s){return c&&c[o]!==void 0?c[o]:s}function n(c,...o){const s=Object.create(null);let h=0;for(const f of Object.keys(c))o.indexOf(f)>=0&&(s[f]=c[f],h++);return h?s:void 0}function i(c,o,s){return e.MolScriptBuilder.struct.atomSet.reduce({initial:s!==void 0?s:c,value:o([e.MolScriptBuilder.struct.slot.elementSetReduce(),c])})}return wu}var xG;function Kie(){return xG||(xG=1,(function(e){Object.defineProperty(e,"__esMo
4123dule",{value:!0}),e.SymbolList=e.SymbolMap=e.NamedArgs=e.Constants=e.MolScriptSymbols=e.SymbolTable=void 0,e.isMolScriptSymbol=_,e.transpileMolScript=u;const t=HD(),r=PT(),n=Mf(),i=$D(),c=tS(),o=WD(),s=dr(),h=Xie();function f(m,...v){return{kind:"alias",aliases:v,symbol:m}}function y(m,v,...b){return m.info.namespace="molscript-macro",m.id=`molscript-macro.${m.info.name}`,{kind:"macro",symbol:m,translate:v,aliases:[m.info.name,...b]}}function _(m){return m.kind==="alias"||m.kind==="macro"}e.SymbolTable=[["Core symbols",f(i.MolScriptSymbolTable.core.type.bool,"bool"),f(i.MolScriptSymbolTable.core.type.num,"num"),f(i.MolScriptSymbolTable.core.type.str,"str"),f(i.MolScriptSymbolTable.core.type.regex,"regex"),f(i.MolScriptSymbolTable.core.type.list,"list"),f(i.MolScriptSymbolTable.core.type.set,"set"),f(i.MolScriptSymbolTable.core.type.compositeKey,"composite-key"),f(i.MolScriptSymbolTable.core.logic.not,"not"),f(i.MolScriptSymbolTable.core.logic.and,"and"),f(i.MolScriptSymbolTable.core.logic.or,"or"),f(i.MolScriptSymbolTable.core.ctrl.if,"if"),f(i.MolScriptSymbolTable.core.ctrl.fn,"fn"),f(i.MolScriptSymbolTable.core.ctrl.eval,"eval"),f(i.MolScriptSymbolTable.core.math.add,"add","+"),f(i.MolScriptSymbolTable.core.math.sub,"sub","-"),f(i.MolScriptSymbolTable.core.math.mult,"mult","*"),f(i.MolScriptSymbolTable.core.math.div,"div","/"),f(i.MolScriptSymbolTable.core.math.pow,"pow","**"),f(i.MolScriptSymbolTable.core.math.mod,"mod"),f(i.MolScriptSymbolTable.core.math.min,"min"),f(i.MolScriptSymbolTable.core.math.max,"max"),f(i.MolScriptSymbolTable.core.math.cantorPairing,"cantor-pairing"),f(i.MolScriptSymbolTable.core.math.sortedCantorPairing,"sorted-cantor-pairing"),f(i.MolScriptSymbolTable.core.math.invertCantorPairing,"invert-cantor-pairing"),f(i.MolScriptSymbolTable.core.math.floor,"floor"),f(i.MolScriptSymbolTable.core.math.ceil,"ceil"),f(i.MolScriptSymbolTable.core.math.roundInt,"round"),f(i.MolScriptSymbolTable.core.math.trunc,"trunc"),f(i.MolScriptSymbolTable.core.math.abs,"abs"),f(i.MolScriptSymbolTable.core.math.sign,"sign"),f(i.MolScriptSymbolTable.core.math.sqrt,"sqrt"),f(i.MolScriptSymbolTable.core.math.cbrt,"cbrt"),f(i.MolScriptSymbolTable.core.math.sin,"sin"),f(i.MolScriptSymbolTable.core.math.cos,"cos"),f(i.MolScriptSymbolTable.core.math.tan,"tan"),f(i.MolScriptSymbolTable.core.math.asin,"asin"),f(i.MolScriptSymbolTable.core.math.acos,"acos"),f(i.MolScriptSymbolTable.core.math.atan,"atan"),f(i.MolScriptSymbolTable.core.math.sinh,"sinh"),f(i.MolScriptSymbolTable.core.math.cosh,"cosh"),f(i.MolScriptSymbolTable.core.math.tanh,"tanh"),f(i.MolScriptSymbolTable.core.math.exp,"exp"),f(i.MolScriptSymbolTable.core.math.log,"log"),f(i.MolScriptSymbolTable.core.math.log10,"log10"),f(i.MolScriptSymbolTable.core.math.atan2,"atan2"),f(i.MolScriptSymbolTable.core.rel.eq,"eq","="),f(i.MolScriptSymbolTable.core.rel.neq,"neq","!="),f(i.MolScriptSymbolTable.core.rel.lt,"lt","<"),f(i.MolScriptSymbolTable.core.rel.lte,"lte","<="),f(i.MolScriptSymbolTable.core.rel.gr,"gr",">"),f(i.MolScriptSymbolTable.core.rel.gre,"gre",">="),f(i.MolScriptSymbolTable.core.rel.inRange,"in-range"),f(i.MolScriptSymbolTable.core.str.concat,"concat"),f(i.MolScriptSymbolTable.core.str.match,"regex.match"),f(i.MolScriptSymbolTable.core.list.getAt,"list.get"),f(i.MolScriptSymbolTable.core.set.has,"set.has"),f(i.MolScriptSymbolTable.core.set.isSubset,"set.subset")],["Structure",["Types",f(i.MolScriptSymbolTable.structureQuery.type.entityType,"ent-type"),f(i.MolScriptSymbolTable.structureQuery.type.authResidueId,"auth-resid"),f(i.MolScriptSymbolTable.structureQuery.type.labelResidueId,"label-resid"),f(i.MolScriptSymbolTable.structureQuery.type.ringFingerprint,"ringfp"),f(i.MolScriptSymbolTable.structureQuery.type.bondFlags,"bond-flags")],["Slots",f(i.MolScriptSymbolTable.structureQuery.slot.elementSetReduce,"atom.set.reduce.value")],["Generators",f(i.MolScriptSymbolTable.structureQuery.generator.atomGroups,"sel.atom.atom-groups"),f(i.MolScriptSymbolTable.structureQuery.generator.queryInSelection,"sel.atom.query-in-selection"),f(i.MolScriptSymbolTable.structureQuery.generator.rings,"sel.atom.rings"),f(i.MolScriptSymbolTable.structureQuery.generator.empty,"sel.atom.empty"),f(i.MolScriptSymbolTable.structureQuery.generator.all,"sel.atom.all"),f(i.MolScriptSymbolTable.structureQuery.generator.bondedAtomicPairs,"sel.atom.bonded-pairs"),y((0,n.MSymbol)("sel.atom.atoms",n.Arguments.Dictionary({0:(0,n.Argument)(c.Type.Bool,{isOptional:!0,defaultValue:!0,description:"Test applied to each atom."})}),o.Types.ElementSelection,"A selection of singleton atom sets."),m=>s.MolScriptBuilder.struct.generator.atomGroups({"atom-test":(0,h.tryGetArg)(m,0,!0)})),y((0,n.MSymbol)("sel.atom.res",n.Arguments.Dictionary({0:(0,n.Argument)(c.Type.Bool,{isOptional:!0,defaultValue:!0,description:"Test applied to the 1st atom of each residue."})}),o.Types.ElementSelection,"A selection of atom sets grouped by residue."),m=>s.MolScriptBuilder.struct.generator.atomGroups({"residue-test":(0,h.tryGetArg)(m,0,!0),"group-by":s.MolScriptBuilder.ammp("residueKey")})),y((0,n.MSymbol)("sel.atom.chains",n.Arguments.Dictionary({0:(0,n.Argument)(c.Type.Bool,{isOptional:!0,defaultValue:!0,description:"Test applied to the 1st atom of each chain."})}),o.Types.ElementSelection,"A selection of atom sets grouped by chain."),m=>s.MolScriptBuilder.struct.generator.atomGroups({"chain-test":(0,h.tryGetArg)(m,0,!0),"group-by":s.MolScriptBuilder.ammp("chainKey")}))],["Modifiers",f(i.MolScriptSymbolTable.structureQuery.modifier.queryEach,"sel.atom.query-each"),f(i.MolScriptSymbolTable.structureQuery.modifier.intersectBy,"sel.atom.intersect-by"),f(i.MolScriptSymbolTable.structureQuery.modifier.exceptBy,"sel.atom.except-by"),f(i.MolScriptSymbolTable.structureQuery.modifier.unionBy,"sel.atom.union-by"),f(i.MolScriptSymbolTable.structureQuery.modifier.union,"sel.atom.union"),f(i.MolScriptSymbolTable.structureQuery.modifier.cluster,"sel.atom.cluster"),f(i.MolScriptSymbolTable.structureQuery.modifier.includeSurroundings,"sel.atom.include-surroundings"),f(i.MolScriptSymbolTable.structureQuery.modifier.surroundingLigands,"sel.atom.surrounding-ligands"),f(i.MolScriptSymbolTable.structureQuery.modifier.includeConnected,"sel.atom.include-connected"),f(i.MolScriptSymbolTable.structureQuery.modifier.expandProperty,"sel.atom.expand-property")],["Filters",f(i.MolScriptSymbolTable.structureQuery.filter.pick,"sel.atom.pick"),f(i.MolScriptSymbolTable.structureQuery.filter.first,"sel.atom.first"),f(i.MolScriptSymbolTable.structureQuery.filter.withSameAtomProperties,"sel.atom.with-same-atom-properties"),f(i.MolScriptSymbolTable.structureQuery.filter.intersectedBy,"sel.atom.intersected-by"),f(i.MolScriptSymbolTable.structureQuery.filter.within,"sel.atom.within"),f(i.MolScriptSymbolTable.structureQuery.filter.isConnectedTo,"sel.atom.is-connected-to")],["Combinators",f(i.MolScriptSymbolTable.structureQuery.combinator.intersect,"sel.atom.intersect"),f(i.MolScriptSymbolTable.structureQuery.combinator.merge,"sel.atom.merge"),f(i.MolScriptSymbolTable.structureQuery.combinator.distanceCluster,"sel.atom.dist-cluster")],["Atom Set Properties",f(i.MolScriptSymbolTable.structureQuery.atomSet.atomCount,"atom.set.atom-count"),f(i.MolScriptSymbolTable.structureQuery.atomSet.countQuery,"atom.set.count-query"),f(i.MolScriptSymbolTable.structureQuery.atomSet.reduce,"atom.set.reduce"),f(i.MolScriptSymbolTable.structureQuery.atomSet.propertySet,"atom.set.property")],["Atom Properties",f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.elementSymbol,"atom.el"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.vdw,"atom.vdw"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.mass,"atom.mass"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.atomicNumber,"atom.atomic-number"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.x,"atom.x"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.y,"atom.y"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.z,"atom.z"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.sourceIndex,"atom.src-index"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.operatorName,"atom.op-name"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.instanceId,"atom.instance-id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.operatorKey,"atom.op-key"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.modelIndex,"atom.model-index"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.modelLabel,"atom.model-label"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.modelEntryId,"atom.model-entry-id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.atomKey,"atom.key"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.bondCount,"atom.bond-count"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.topology.connectedComponentKey,"atom.key.molecule"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.authResidueId,"atom.auth-resid"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.labelResidueId,"atom.label-resid"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.residueKey,"atom.key.res"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.chainKey,"atom.key.chain"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityKey,"atom.key.entity"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.isHet,"atom.is-het"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.id,"atom.id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_atom_id,"atom.label_atom_id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_alt_id,"atom.label_alt_id","atom.altloc"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_comp_id,"atom.label_comp_id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_asym_id,"atom.label_asym_id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_entity_id,"atom.label_entity_id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_seq_id,"atom.label_seq_id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_atom_id,"atom.auth_atom_id","atom.name"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_comp_id,"atom.auth_comp_id","atom.resname"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_asym_id,"atom.auth_asym_id","atom.chain"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_seq_id,"atom.auth_seq_id","atom.resno"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.pdbx_PDB_ins_code,"atom.pdbx_PDB_ins_code","atom.inscode"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.pdbx_formal_charge,"atom.pdbx_formal_charge"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.occupancy,"atom.occupancy"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.B_iso_or_equiv,"atom.B_iso_or_equiv","atom.bfactor"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityType,"atom.entity-type"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entitySubtype,"atom.entity-subtype"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityPrdId,"atom.entity-prd-id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityDescription,"atom.entity-description"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.objectPrimitive,"atom.object-primitive"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.chemCompType,"atom.chem-comp-type"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.secondaryStructureKey,"atom.key.sec-struct"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.isModified,"atom.is-modified"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.modifiedParentName,"atom.modified-parent"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.ihm.hasSeqId,"atom.ihm.has-seq-id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.ihm.overlapsSeqIdRange,"atom.ihm.overlaps-seq-id-range")],["Bond Properties",f(i.MolScriptSymbolTable.structureQuery.bondProperty.order,"bond.order"),f(i.MolScriptSymbolTable.structureQuery.bondProperty.length,"bond.length"),f(i.MolScriptSymbolTable.structureQuery.bondProperty.key,"bond.key"),f(i.MolScriptSymbolTable.structureQuery.bondProperty.atomA,"bond.atom-a"),f(i.MolScriptSymbolTable.structureQuery.bondProperty.atomB,"bond.atom-b"),y((0,n.MSymbol)("bond.is",n.Arguments.List(o.Types.BondFlag),c.Type.Bool,`Test if the current bond has at least one (or all if partial = false) of the specified flags: ${c.Type.oneOfValues(o.Types.BondFlag).join(", ")}`),m=>
4123s.MolScriptBuilder.core.flags.hasAny([s.MolScriptBuilder.struct.bondProperty.flags(),s.MolScriptBuilder.struct.type.bondFlags((0,h.getPositionalArgs)(m))]))]]];const g=[];function a(m){for(const v of m)_(v)?g.push(v):v instanceof Array&&a(v)}a(e.SymbolTable);const d=(function(){const m=[],v=Object.create(null),b=t.UniqueArray.create(),P=t.UniqueArray.create();for(const C of g){for(const S of C.aliases){if(m.push([S,C]),v[S])throw new Error(`Alias '${S}' already in use.`);v[S]=C}const l=C.symbol.args;if(l.kind!=="dictionary"){l.type.kind==="oneof"&&c.Type.oneOfValues(l.type).forEach(S=>t.UniqueArray.add(P,S,S));continue}for(const S of Object.keys(l.map)){isNaN(S)&&t.UniqueArray.add(b,S,S);const T=l.map[S];T.type.kind==="oneof"&&c.Type.oneOfValues(T.type).forEach(A=>t.UniqueArray.add(P,A,A))}}return{symbolList:m,symbolMap:v,namedArgs:b.array,constants:P.array}})();e.MolScriptSymbols=g,e.Constants=d.constants,e.NamedArgs=d.namedArgs,e.SymbolMap=d.symbolMap,e.SymbolList=d.symbolList;function p(m){if(r.Expression.isLiteral(m))return m;if(r.Expression.isSymbol(m)){if(!e.SymbolMap[m.name])return m;const S=e.SymbolMap[m.name];if(S.kind==="alias")return r.Expression.Symbol(e.SymbolMap[m.name].symbol.id);throw S.translate([])}const v=r.Expression.isSymbol(m.head)&&!!e.SymbolMap[m.head.name]&&e.SymbolMap[m.head.name].kind==="macro",b=v?m.head:p(m.head),P=b!==m.head;if(!m.args)return v?p(m.head):P?r.Expression.Apply(b):m;let C=!1,l;if(r.Expression.isArgumentsArray(m.args)){l=[];for(let S=0,T=m.args.length;S<T;S++){const A=m.args[S],x=p(A);A!==x&&(C=!0),l[l.length]=x}if(C||(l=m.args),!v&&!P&&!C)return m}else{l={};for(const S of Object.keys(m.args)){const T=m.args[S],A=p(T);T!==A&&(C=!0),l[S]=A}if(!v&&!P&&!C)return m;C||(l=m.args)}if(v){const S=e.SymbolMap[m.head.name];return S.kind!=="macro"?r.Expression.Apply(b,l):S.translate(l)}return r.Expression.Apply(b,l)}function u(m){return p(m)}})(nA)),nA}var xP={},Md={},AG;function uc(){if(AG)return Md;AG=1,Object.defineProperty(Md,"__esModule",{value:!0}),Md.MonadicParser=void 0;class e{constructor(g){this._=g}parse(g){const a=this.skip(e.eof)._(g,0);return a.status?{success:!0,value:a.value}:{success:!1,index:c(g,a.furthest),expected:a.expected}}tryParse(g){const a=this.parse(g);if(a.success)return a.value;{const d=h(g,a);throw new Error(d)}}or(g){return e.alt(this,g)}trim(g){return this.wrap(g,g)}wrap(g,a){return t(1,typeof g=="string"?e.string(g):g,this,typeof a=="string"?e.string(a):a)}thru(g){return g(this)}then(g){return t(1,this,g)}many(){return new e((g,a)=>{const d=[];let p;for(;;)if(p=i(this._(g,a),p),p.status){if(a===p.index)throw new Error("infinite loop detected in .many() parser --- calling .many() on a parser which can accept zero characters is usually the cause");a=p.index,d.push(p.value)}else return i(r(a,d),p)})}times(g,a){const d=typeof a>"u"?g:a;return new e((p,u)=>{const m=[];let v,b,P;for(P=0;P<g;P++)if(v=this._(p,u),b=i(v,b),v.status)u=v.index,m.push(v.value);else return b;for(;P<d&&(v=this._(p,u),b=i(v,b),v.status);P+=1)u=v.index,m.push(v.value);return i(r(u,m),b)})}result(g){return this.map(()=>g)}atMost(g){return this.times(0,g)}atLeast(g){return e.seq(this.times(g),this.many()).map(a=>[...a[0],...a[1]])}map(g){return new e((a,d)=>{const p=this._(a,d);return p.status?i(r(p.index,g(p.value)),p):p})}skip(g){return t(0,this,g)}mark(){return e.seq(e.index,this,e.index).map(g=>({start:g[0],value:g[1],end:g[2]}))}node(g){return e.seq(e.index,this,e.index).map(a=>({name:g,start:a[0],value:a[1],end:a[2]}))}sepBy(g){return e.sepBy(this,g)}sepBy1(g){return e.sepBy1(this,g)}lookahead(g){return this.skip(e.lookahead(g))}notFollowedBy(g){return this.skip(e.notFollowedBy(g))}desc(g){return new e((a,d)=>{const p=this._(a,d);return p.status||(p.expected=[g]),p})}fallback(g){return this.or(e.succeed(g))}ap(g){return e.seq(g,this).map(([a,d])=>a(d))}chain(g){return new e((a,d)=>{const p=this._(a,d);if(!p.status)return p;const u=g(p.value);return i(u._(a,p.index),p)})}}Md.MonadicParser=e,(function(_){function g(O,F,L){const U=[].slice.call(arguments);if(U.length===0)throw new Error("seqMap needs at least one argument");const q=U.pop();if(typeof q!="function")throw new Error("not a function: "+q);return d.apply(null,U).map(function(N){return q.apply(null,N)})}_.seqMap=g;function a(O){const F={};for(const L of Object.keys(O))(function(U){F[U]=E(()=>O[U](F))})(L);return F}_.createLanguage=a;function d(...O){const F=O.length;return new _((L,U)=>{let q;
4123const N=new Array(F);let k=U;for(let j=0;j<F;j++){if(q=i(O[j]._(L,k),q),!q.status)return q;N[j]=q.value,k=q.index}return i(r(k,N),q)})}_.seq=d;function p(...O){return O.length===0?S("zero alternates"):new _((L,U)=>{let q;for(let N=0;N<O.length;N++)if(q=i(O[N]._(L,U),q),q.status)return q;return q})}_.alt=p;function u(O,F){return m(O,F).or(l([]))}_.sepBy=u;function m(O,F){const L=F.then(O).many();return d(O,L).map(U=>[U[0],...U[1]])}_.sepBy1=m;function v(O){const F=`'${O}'`;if(O.length===1){const L=O.charCodeAt(0);return new _((U,q)=>U.charCodeAt(q)===L?r(q+1,O):n(q,F))}return new _((L,U)=>{const q=U+O.length;return L.slice(U,q)===O?r(q,O):n(U,F)})}_.string=v;function b(O){const F=""+O;return F.slice(F.lastIndexOf("/")+1)}function P(O){return RegExp("^(?:"+O.source+")",b(O))}function C(O,F=0){const L=P(O),U=""+O;return new _((q,N)=>{const k=L.exec(q.slice(N));if(k){if(0<=F&&F<=k.length){const H=k[0],G=k[F];return r(N+H.length,G)}const j=`invalid match group (0 to ${k.length}) in ${U}`;return n(N,j)}return n(N,U)})}_.regexp=C;function l(O){return new _((F,L)=>r(L,O))}_.succeed=l;function S(O){return new _((F,L)=>n(L,O))}_.fail=S;function T(O){if(y(O))return new _((F,L)=>{const U=O._(F,L);return U.status&&(U.index=L,U.value=null),U});if(typeof O=="string")return T(v(O));if(O instanceof RegExp)return T(C(O));throw new Error("not a string, regexp, or parser: "+O)}_.lookahead=T;function A(O){return new _((F,L)=>{const U=O._(F,L);return U.status?n(L,'not "'+F.slice(L,U.index)+'"'):r(L,null)})}_.notFollowedBy=A;function x(O){return new _((F,L)=>{const U=F.charAt(L);return L<F.length&&O(U)?r(L+1,U):n(L,"a character "+O)})}_.test=x;function M(O){return x(F=>O.indexOf(F)>=0)}_.oneOf=M;function D(O){return x(F=>O.indexOf(F)<0)}_.noneOf=D;function V(O,F){return x(L=>O<=L&&L<=F).desc(O+"-"+F)}_.range=V;function R(O){return new _((F,L)=>{let U=L;for(;U<F.length&&O(F.charAt(U));)U++;return r(U,F.slice(L,U))})}_.takeWhile=R;function E(O){const F=new _((L,U)=>{const q=O()._;return F._=q,q(L,U)});return F}_.lazy=E;function I(){return S("empty")}_.empty=I,_.index=new _(function(O,F){return r(F,c(O,F))}),_.anyChar=new _((O,F)=>F>=O.length?n(F,"any character"):r(F+1,O.charAt(F))),_.all=new _(function(O,F){return r(O.length,O.slice(F))}),_.eof=new _(function(O,F){return F<O.length?n(F,"EOF"):r(F,null)}),_.digit=C(/[0-9]/).desc("a digit"),_.digits=C(/[0-9]*/).desc("optional digits"),_.letter=C(/[a-z]/i).desc("a letter"),_.letters=C(/[a-z]*/i).desc("optional letters"),_.optWhitespace=C(/\s*/).desc("optional whitespace"),_.whitespace=C(/\s+/).desc("whitespace"),_.cr=v("\r"),_.lf=v(`
4124`),_.crlf=v(`\r
4125`),_.newline=p(_.crlf,_.lf,_.cr).desc("newline"),_.end=p(_.newline,_.eof);function B(O){return l(O)}_.of=B;function w(O){return C(O)}_.regex=w})(e||(Md.MonadicParser=e={}));function t(_,...g){const a=g.length;return new e((d,p)=>{let u,m,v=p;for(let b=0;b<a;b++){if(u=i(g[b]._(d,v),u),!u.status)return u;_===b&&(m=u.value),v=u.index}return i(r(v,m),u)})}function r(_,g){return{status:!0,index:_,value:g}}function n(_,g){return{status:!1,furthest:_,expected:[g]}}function i(_,g){if(!g||_.status||g.status||_.furthest>g.furthest)return _;const a=_.furthest===g.furthest?f(_.expected,g.expected):g.expected;return{status:_.status,furthest:g.furthest,expected:a}}function c(_,g){const a=_.slice(0,g).split(`
4126`),d=a.length,p=a[a.length-1].length+1;return{offset:g,line:d,column:p}}function o(_){return _.length===1?_[0]:"one of "+_.join(", ")}function s(_,g){const a=g.index,d=a.offset;if(d===_.length)return", got the end of the input";const p=d>0?"'...":"'",u=_.length-d>12?"...'":"'";return` at line ${a.line} column ${a.column}, got ${p}${_.slice(d,d+12)}${u}`}function h(_,g){return`expected ${o(g.expected)}${s(_,g)}`}function f(_,g){const a=_.length,d=g.length;if(a===0)return g;if(d===0)return _;const p=new Set,u=[];for(let m=0;m<a;m++)p.has(_[m])||(u[u.length]=_[m],p.add(_[m]));for(let m=0;m<d;m++)p.has(g[m])||(u[u.length]=g[m],p.add(g[m]));return u.sort(),u}function y(_){return _ instanceof e}return Md}var MG;function Yie(){if(MG)return xP;
4126MG=1,Object.defineProperty(xP,"__esModule",{value:!0}),xP.parseMolScript=i;const e=uc(),t=PT(),r=dr(),n=Gt();function i(o){return c.parse(o)}var c;return(function(o){let s;(function(x){function M(E){return{kind:"string",value:E}}x.str=M;function D(E){return{kind:"symbol",value:E}}x.symb=D;function V(E,I){return{kind:"list",bracket:E,nodes:I}}x.list=V;function R(E){return{kind:"comment",value:E}}x.comment=R})(s||(s={}));const h=e.MonadicParser.regexp(/[\n\r\s]*/),f=e.MonadicParser.lazy(()=>e.MonadicParser.alt(y,m,_,g).trim(h)),y=e.MonadicParser.takeWhile(x=>x!=="`").trim("`").map(s.str),_=e.MonadicParser.regexp(/[^()\[\]{};`,\n\r\s]+/).map(s.symb),g=e.MonadicParser.regexp(/\s*;+([^\n\r]*)\n/,1).map(s.comment),a=f.many(),d=a.wrap("(",")").map(x=>s.list("(",x)),p=a.wrap("[","]").map(x=>s.list("[",x)),u=a.wrap("{","}").map(x=>s.list("{",x)),m=e.MonadicParser.alt(d,p,u),v=f.many();function b(x){return v.tryParse(x)}function P(x){switch(x.kind){case"string":return x.value;case"symbol":{const M=x.value;if(M.length>1)switch(M.charAt(0)){case".":return r.MolScriptBuilder.atomName(M.substr(1));case"_":return r.MolScriptBuilder.struct.type.elementSymbol([M.substr(1)])}return M==="true"?!0:M==="false"?!1:T(M)?+M:t.Expression.Symbol(M)}case"list":switch(x.bracket){case"[":return r.MolScriptBuilder.core.type.list(S(x.nodes).map(P));case"{":return r.MolScriptBuilder.core.type.set(S(x.nodes).map(P));case"(":{if(x.nodes[0].kind==="comment")throw new Error("Invalid expression");const M=P(x.nodes[0]);return t.Expression.Apply(M,C(x.nodes))}default:(0,n.assertUnreachable)(x.bracket)}default:(0,n.assertUnreachable)(x)}}function C(x){if(x.length<=1)return;if(!l(x)){const R=[];for(let E=1,I=x.length;E<I;E++){const B=x[E];B.kind!=="comment"&&(R[R.length]=P(B))}return R}const M={};let D=!0,V=0;for(let R=1,E=x.length;R<E;R++){const I=x[R];if(I.kind!=="comment")if(I.kind==="symbol"&&I.value.length>1&&I.value.charAt(0)===":"){const B=I.value.substr(1);for(++R;R<E&&x[R].kind==="comment";)R++;if(R>=E)throw new Error(`There must be a value foolowed a named arg ':${B}'.`);if(x[R].kind==="comment")throw new Error("Invalid expression");M[B]=P(x[R]),isNaN(+B)&&(D=!1)}else M[V++]=P(I)}if(D){const R=Object.keys(M).map(I=>+I).sort((I,B)=>I-B);let E=!0;for(let I=0,B=R.length;I<B;I++)if(R[I]!==I){E=!1;break}if(E){const I=[];for(let B=0,w=R.length;B<w;B++)I[B]=M[B];return I}}return M}function l(x){for(let M=1,D=x.length;M<D;M++){const V=x[M];if(V.kind==="symbol"&&V.value.length>1&&V.value.charAt(0)===":")return!0}return!1}function S(x){let M=!1;for(let D=0,V=x.length;D<V;D++)if(x[D].kind==="comment"){M=!0;break}return M?x.filter(D=>D.kind!=="comment"):x}function T(x){return/-?(0|[1-9][0-9]*)([.][0-9]+)?([eE][+-]?[0-9]+)?/.test(x)&&!isNaN(+x)}function A(x){const M=b(x),D=[];for(const V of M)V.kind!=="comment"&&(D[D.length]=P(V));return D}o.parse=A})(c||(c={})),xP}var AP={},Y1={},Q1={},iA={},DG;function fs(){return DG||(DG=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.escapeRegExp=void 0,e.prefix=o,e.postfix=s,e.binaryRight=h,e.binaryLeft=f,e.combineOperators=y,e.infixOp=_,e.prefixOp=g,e.postfixOp=a,e.ofOp=d,e.makeError=p,e.andExpr=u,e.orExpr=m,e.testExpr=v,e.invertExpr=b,e.strLenSortFn=P,e.getPropertyRules=l,e.getNamedPropertyRules=S,e.getKeywordRules=T,e.getFunctionRules=A,e.getPropertyNameRules=x,e.getReservedWords=M,e.atomNameSet=D,e.asAtoms=V,e.wrapValue=R,e.testLevel=O,e.valuesTest=L,e.resnameExpr=U;const r=At.__importStar(uc()),i=dr().MolScriptBuilder,c=ui();Object.defineProperty(e,"escapeRegExp",{enumerable:!0,get:function(){return c.escapeRegExp}});function o(q,N,k){const j=r.MonadicParser.lazy(()=>r.MonadicParser.seq(q,j).map(H=>k(...H)).or(N));return j}function s(q,N,k){return r.MonadicParser.seqMap(N,q.many(),(j,H)=>H.reduce((G,z)=>k(z,G),j))}function h(q,N,k){const j=r.MonadicParser.lazy(()=>N.chain(H=>r.MonadicParser.seq(q,r.MonadicParser.of(H),j).map(G=>G).or(r.MonadicParser.of(H))));return j}function f(q,N,k){return r.MonadicParser.seqMap(N,r.MonadicParser.seq(q,N).many(),(j,H)=>H.reduce((G,z)=>{const[W,X]=z;return k(W,G,X)}
4126,j))}function y(q,N){return q.reduce((j,H)=>{const G=H.isUnsupported?p(`operator '${H.name}' not supported`):H.map;return H.type(H.rule,j,G)},N)}function _(q,N=0){return r.MonadicParser.optWhitespace.then(r.MonadicParser.regexp(q,N).skip(r.MonadicParser.optWhitespace))}function g(q,N=0){return r.MonadicParser.regexp(q,N).skip(r.MonadicParser.optWhitespace)}function a(q,N=0){return r.MonadicParser.optWhitespace.then(r.MonadicParser.regexp(q,N))}function d(q,N){const k=N?`${q}|${(0,c.escapeRegExp)(N)}`:q,j=RegExp(`(${k})\\s+([-+]?[0-9]*\\.?[0-9]+)\\s+OF`,"i");return _(j,2).map(parseFloat)}function p(q){return function(){throw new Error(q)}}function u(q){return q.length===1?q[0]:q.length>1?i.core.logic.and(q):void 0}function m(q){return q.length===1?q[0]:q.length>1?i.core.logic.or(q):void 0}function v(q,N){if(N&&N.op!==void 0&&N.val!==void 0){const k=[q,N.val];switch(N.op){case"=":return i.core.rel.eq(k);case"!=":return i.core.rel.neq(k);case">":return i.core.rel.gr(k);case"<":return i.core.rel.lt(k);case">=":return i.core.rel.gre(k);case"<=":return i.core.rel.lte(k);default:throw new Error(`operator '${N.op}' not supported`)}}else return N&&N.flags!==void 0?i.core.flags.hasAny([q,N.flags]):N&&N.min!==void 0&&N.max!==void 0?i.core.rel.inRange([q,N.min,N.max]):Array.isArray(N)?N.length>1?i.core.set.has([i.core.type.set(N),q]):i.core.rel.eq([q,N[0]]):i.core.rel.eq([q,N])}function b(q){return i.struct.generator.queryInSelection({0:q,query:i.struct.generator.all(),"in-complement":!0})}function P(q,N){return q.length<N.length?1:-1}function C(q,N){const k=(N?[q].concat(N):[q]).sort(P).map(c.escapeRegExp).join("|");return RegExp(`${k}`,"i")}function l(q){const N={};return Object.keys(q).sort(P).forEach(k=>{const j=q[k],H=p(`property '${k}' not supported`),G=r.MonadicParser.regexp(j.regex).map(z=>(j.isUnsupported&&H(),v(j.property,j.map(z))));j.isNumeric||(N[k]=G)}),N}function S(q){const N=[];return Object.keys(q).sort(P).forEach(k=>{const j=q[k],H=p(`property '${k}' not supported`),G=r.MonadicParser.regexp(j.regex).map(X=>(j.isUnsupported&&H(),v(j.property,j.map(X)))),z=r.MonadicParser.regexp(C(k,j.abbr)).trim(r.MonadicParser.optWhitespace),W=X=>i.struct.generator.atomGroups({[j.level]:X});j.isNumeric?N.push(z.then(r.MonadicParser.seq(r.MonadicParser.regexp(/>=|<=|=|!=|>|</).trim(r.MonadicParser.optWhitespace),r.MonadicParser.regexp(j.regex).map(j.map))).map(X=>(j.isUnsupported&&H(),v(j.property,{op:X[0],val:X[1]}))).map(W)):N.push(z.then(G).map(W))}),N}function T(q){const N=[];return Object.keys(q).sort(P).forEach(k=>{const j=q[k],H=j.map?j.map:p(`keyword '${k}' not supported`),G=r.MonadicParser.regexp(C(k,j.abbr)).map(H);N.push(G)}),N}function A(q,N){const k=[],j=r.MonadicParser.regexp(/\(\s*/),H=r.MonadicParser.regexp(/\s*\)/);return Object.keys(q).sort(P).forEach(G=>{const z=q[G],W=z.map?z.map:p(`function '${G}' not supported`),X=r.MonadicParser.regexp(new RegExp(G,"i")).skip(j).then(N).skip(H).map(W);k.push(X)}),k}function x(q,N){const k=[];return Object.keys(q).sort(P).forEach(j=>{const H=q[j],G=p(`property '${j}' not supported`),z=r.MonadicParser.regexp(C(j,H.abbr)).lookahead(N).map(()=>(H.isUnsupported&&G(),H.property));k.push(z)}),k}function M(q,N,k,j){const H=[];for(const G in q)H.push(G),q[G].abbr&&H.push(...q[G].abbr);for(const G in N)H.push(G),N[G].abbr&&H.push(...N[G].abbr);return k.forEach(G=>{H.push(G.name),G.abbr&&H.push(...G.abbr)}),H}function D(q){return i.core.type.set(q.map(i.atomName))}function V(q){return i.struct.generator.queryInSelection({0:q,query:i.struct.generator.all()})}function R(q,N,k){switch(q.head.name){case"structure-query.atom-property.macromolecular.label_atom_id":return i.atomName(N);case"structure-query.atom-property.core.element-symbol":return i.es(N);case"structure-query.atom-property.macromolecular.secondary-structure-flags":return k&&(N=[k[N.toUpperCase()]||"none"]),i.struct.type.secondaryStructureFlags([N]);default:return N}}const E="structure-query.atom-property.macromolecular.",I=["entityKey","label_entity_id","entityType"],B=["chainKey","label_asym_id","label_entity_id","auth_asym_id","entityType"],w=["residueKey","label_comp_id","label_seq_id","auth_comp_id","auth_seq_id","pdbx_formal_charge","secondaryStructureKey","secondaryStructureFlags","isModified","modifiedParentName"];function O(q){if(q.head.name.startsWith(E)){const N=q.head.name.substr(E.length);if(I.includes(N))return"entity-test";if(B.includes(N))return"chain-test";if(w.includes(N))return"residue-test"}return"atom-test"}const F=["structure-query.atom-property.macromolecular.secondary-structure-flags"];function L(q,N){if(F.includes(q.head.name)){const k=N[0].head,j=[];
4126return N.forEach(H=>j.push(...H.args[0])),i.core.flags.hasAny([q,{head:k,args:j}])}else{if(N.length===1)return i.core.rel.eq([q,N[0]]);if(N.length>1)return i.core.set.has([i.core.type.set(N),q])}}function U(q){return i.struct.generator.atomGroups({"residue-test":i.core.set.has([i.core.type.set(q),i.ammp("label_comp_id")])})}})(iA)),iA}var Dd={},IG;function Qie(){if(IG)return Dd;IG=1,Object.defineProperty(Dd,"__esModule",{value:!0}),Dd.properties=void 0,Dd.structureMap=o;const t=dr().MolScriptBuilder,r=/[-+]?[0-9]*\.?[0-9]+/,n=/[0-9]+/;function i(s){return s}const c={none:"none",turn:"turn",sheet:"beta",helix:"helix",dna:"dna",rna:"rna",carbohydrate:"carbohydrate",helix310:"3-10",helixalpha:"alpha",helixpi:"pi",0:"none",1:"turn",2:"beta",3:"helix",4:"dna",5:"rna",6:"carbohydrate",7:"3-10",8:"alpha",9:"pi"};function o(s){if(s.head){if(s.head.name&&s.head.name==="core.type.regex"&&(s=s.args[0].replace(/^\^|\$$/g,"")),s=c[s.toString().toLowerCase()]||"none",["dna","rna","carbohydrate"].indexOf(s)!==-1)throw new Error("values 'dna', 'rna', 'carbohydrate' not yet supported for 'structure' property");return t.struct.type.secondaryStructureFlags([s])}}return Dd.properties={adpmax:{"@desc":"the maximum anisotropic displacement parameter for the selected atom","@examples":[""],isUnsupported:!0,regex:r,map:s=>parseFloat(s),level:"atom-test"},adpmin:{"@desc":"the minimum anisotropic displacement parameter for the selected atom","@examples":[""],isUnsupported:!0,regex:r,map:s=>parseFloat(s),level:"atom-test"},altloc:{"@desc":"PDB alternate location identifier","@examples":["altloc = A"],regex:/[a-zA-Z0-9]/,map:i,level:"atom-test",property:t.ammp("label_alt_id")},altname:{"@desc":"an alternative name given to atoms by some file readers (for example, P2N)","@examples":[""],isUnsupported:!0,regex:/[a-zA-Z0-9]/,map:i,level:"atom-test"},atomID:{"@desc":"special atom IDs for PDB atoms assigned by Jmol","@examples":[""],isUnsupported:!0,regex:n,map:s=>parseInt(s),level:"atom-test"},atomIndex:{"@desc":"atom 0-based index; a unique number for each atom regardless of the number of models loaded","@examples":[""],isUnsupported:!0,regex:n,map:s=>parseInt(s),level:"atom-test"},atomName:{"@desc":"atom name","@examples":["atomName = CA"],regex:/[a-zA-Z0-9]+/,map:s=>t.atomName(s),level:"atom-test",property:t.ammp("label_atom_id")},atomno:{"@desc":'sequential number; you can use "@" instead of "atomno=" -- for example, select @33 or Var x = @33 or @35',"@examples":[""],isUnsupported:!0,regex:n,map:s=>parseInt(s),level:"atom-test"},atomType:{"@desc":"atom type (mol2, AMBER files) or atom name (other file types)","@examples":["atomType = OH"],regex:/[a-zA-Z0-9]+/,map:s=>t.atomName(s),level:"atom-test",property:t.ammp("label_atom_id")},atomX:{"@desc":"Cartesian X coordinate (or just X)","@examples":["x = 4.2"],abbr:["X"],isNumeric:!0,regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.acp("x")},atomY:{"@desc":"Cartesian Y coordinate (or just Y)","@examples":["y < 42"],abbr:["Y"],isNumeric:!0,regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.acp("y")},atomZ:{"@desc":"Cartesian Z coordinate (or just Z)","@examples":["Z > 10"],abbr:["Z"],isNumeric:!0,regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.acp("z")},bondcount:{"@desc":"covalent bond count","@examples":["bondcount = 0"],isNumeric:!0,regex:n,map:s=>parseInt(s),level:"atom-test",property:t.acp("bondCount")},bondingRadius:{"@desc":"radius used for auto bonding; synonymous with ionic and ionicRadius","@examples":[""],abbr:["ionic","ionicRadius"],isUnsupported:!0,regex:r,map:s=>parseFloat(s),level:"atom-test"},cell:{"@desc":'crystallographic unit cell, expressed either in lattice integer notation (111-999) or as a coordinate in ijk space, where {1 1 1} is the same as 555. ANDing two cells, for example select cell=555 and cell=556, selects the atoms on the common face. (Note: in the specifc case of CELL, only "=" is allowed as a comparator.)',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},configuration:{"@desc":'Only in the context {configuration=n}
4126, this option selects the set of atoms with either no ALTLOC specified or those atoms having this index into the array of altlocs within its model. So, for example, if the model has altloc "A" and "B", select configuration=1 is equivalent to select altloc="" or altloc="A", and print {configuration=2} is equivalent to print {altloc="" or altloc="B"}. Configuration 0 is "all atoms in a model having configurations", and an invalid configuration number gives no atoms. (Note: in the specifc case of CONFIGURATION, only "=" is allowed as a comparator.)',"@examples":[""],isUnsupported:!0,regex:n,map:s=>parseInt(s),level:"atom-test"},chain:{"@desc":'protein chain. For newer CIF files allowing multicharacter chain specifications, use quotations marks: select chain="AA". For these multicharacter desigations, case is not checked unless the CIF file has lower-case chain designations.',"@examples":["chain = A",'chain = "AA"'],regex:/[a-zA-Z0-9]+/,map:i,level:"chain-test",property:t.ammp("auth_asym_id")},chainNo:{"@desc":'chain number; sequentially counted from 1 for each model; chainNo == 0 means"no chain" or PDB chain identifier indicated as a blank (Jmol 14.0).',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},color:{"@desc":"the atom color","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},covalentRadius:{"@desc":"covalent bonding radius, synonymous with covalent. Not used by Jmol, but could be used, for example, in {*}.spacefill={*}.covalentRadius.all.","@examples":[""],abbr:["covalent"],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},cs:{"@desc":"chemical shift calculated using computational results that include magnetic shielding tensors.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},element:{"@desc":'element symbol. The value of this parameter depends upon the context. Used with select structure=x, x can be either the quoted element symbol, "H", "He", "Li", etc. or atomic number. In all other contexts, the value is the element symbol. When the atom is a specific isotope, the string will contain the isotope number -- "13C", for example.',"@examples":["element=Fe"],regex:/[a-zA-Z]+/,map:s=>t.es(s),level:"atom-test",property:t.acp("elementSymbol")},elemno:{"@desc":"atomic element number","@examples":["elemno=8"],regex:/[0-9\s{}-]+/,map:s=>parseInt(s),level:"atom-test",property:t.acp("atomicNumber")},eta:{"@desc":`Based on Carlos M. Duarte, Leven M. Wadley, and Anna Marie Pyle, RNA structure comparison, motif search and discovery using a reduced representation of RNA conformational space, Nucleic Acids Research, 2003, Vol. 31, No. 16 4755-4761. The parameter eta is the C4'[i-1]-P[i]-C4'[i]-P[i+1] dihedral angle; theta is the P[i]-C4'[i]-P[i+1]-C4'[i+1] dihedral angle. Both are measured on a 0-360 degree scale because they are commonly near 180 degrees. Using the commands plot PROPERTIES eta theta resno; select visible;wireframe only one can create these authors' "RNA worm" graph.`,"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},theta:{"@desc":`Based on Carlos M. Duarte, Leven M. Wadley, and Anna Marie Pyle, RNA structure comparison, motif search and discovery using a reduced representation of RNA conformational space, Nucleic Acids Research, 2003, Vol. 31, No. 16 4755-4761. The parameter eta is the C4'[i-1]-P[i]-C4'[i]-P[i+1] dihedral angle; theta is the P[i]-C4'[i]-P[i+1]-C4'[i+1] dihedral angle. Both are measured on a 0-360 degree scale because they are commonly near 180 degrees. Using the commands plot PROPERTIES eta theta resno; select visible;wireframe only one can create these authors' "RNA worm" graph.`,"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},file:{"@desc":"file number containing this atom","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},formalCharge:{"@desc":"formal charge","@examples":["formalCharge=1"],regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.ammp("pdbx_formal_charge")},format:{"@desc":"format (label) of the atom.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fXyz:{"@desc":"fractional XYZ coordinates","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fX:{"@desc":"fractional X coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fY:{"@desc":"fractional Y coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fZ:{"@desc":"fractional Z coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fuxyz:{"@desc":"fractional XYZ coordinates in the unitcell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fux:{"@desc":"fractional X coordinate in the unitcell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fuy:{"@desc":"fractional Y coordinate in the unitcell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fuz:{"@desc":"fractional Z coordinate in the unit cell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},group:{"@desc":"3-letter residue code","@examples":["group = ALA"],regex:/[a-zA-Z0-9]{1,3}/,map:i,level:"residue-test",property:t.ammp("label_comp_id")},group1:{"@desc":"single-letter residue code (amino acids only)","@examples":["group1 = G"],regex:/[a-zA-Z]/,map:i,level:"residue-test",property:t.ammp("label_comp_id")}
vendor: 4,789 bytes, line 4126
4126,groupID:{"@desc":"group ID number: A unique ID for each amino acid or nucleic acid residue in a PDB file. 0  noGroup 1-5  ALA, ARG, ASN, ASP, CYS 6-10  GLN, GLU, GLY, HIS, ILE 11-15  LEU, LYS, MET, PHE, PRO 16-20  SER, THR, TRP, TYR, VAL 21-23  ASX, GLX, UNK 24-29  A, +A, G, +G, I, +I 30-35  C, +C, T, +T, U, +U Additional unique numbers are assigned arbitrarily by Jmol and cannot be used reproducibly.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},groupindex:{"@desc":"overall group index","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},hydrophobicity:{"@desc":"Aminoacid residue scale of hydrophobicity based on Rose, G. D., Geselowitz, A. R., Lesser, G. J., Lee, R. H., and Zehfus, M. H. (1985). Hydrophobicity of amino acid residues in globular proteins, Science, 229(4716):834-838.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},identify:{"@desc":"for a PDB/mmCIF file, a label such as [ILE]7^1:A.CD1%A/3 #47, which includes the group ([ILE]), residue number with optional insertion code (7^1), chain (:A), atom name (CD1), alternate location if present (%A), PDB model number (/3, for NMR models when one file is loaded; /file.model such as /2.3 if more than one file is loaded), and atom number (#47). For non-PDB data, the information is shorter -- for example, H15/2.1 #6, indicating atom name (H15), full file.model number (/2.1), and atom number (#6). If only a single model is loaded, %[identify] does not include the model number.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},insertion:{"@desc":"protein residue insertion code","@examples":["insertion=A"],regex:/[a-zA-Z0-9]/,map:i,level:"atom-test",property:t.ammp("pdbx_PDB_ins_code")},label:{"@desc":"current atom label (same as format)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},mass:{"@desc":"atomic mass -- especially useful with appended .max or .sum","@examples":["mass > 13"],regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.acp("mass")},model:{"@desc":"model number","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},modelindex:{"@desc":"a unique number for each model, starting with 0 and spanning all models in all files","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},modO:{"@desc":"currently calculated occupancy from modulation (0 to 100; NaN if atom has no occupancy modulation)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},modXYZ:{"@desc":"currently calculated displacement modulation (for incommensurately modulated structures). Also modX, modY, modZ for individual components. For atoms without modultion, {xx}.modXYZ is -1 and {xx}.modX is NaN, and in a label %[modXYZ] and %[modX] are blank.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},molecule:{"@desc":"molecule number","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},monomer:{"@desc":"monomer number (group number) in a polymer (usually a chain), starting with 1, or 0 if not part of a biopolymer -- that is, not a connected carbohydrate, amino acid, or nucleic acid (Jmol 14.3.15)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},ms:{"@desc":"magnetic shielding calculated from file-loaded tensors.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},occupancy:{"@desc":'CIF file site occupancy. In SELECT command comparisons ("select occupancy < 90"), an integer n implies measurement on a 0-100 scale; also, in the context %[occupancy] or %q for a label, the reported number is a percentage. In all other cases, such as when %Q is used in a label or when a decimal number is used in a comparison, the scale is 0.0 - 1.0.',"@examples":["occupancy < 1"],regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.ammp("occupancy")},partialCharge:{"@desc":"partial charge","@examples":[""],isUnsupported:!0,regex:r,map:s=>parseFloat(s),level:"atom-test"},phi:{"@desc":"protein group PHI angle for atom's residue","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},polymer:{"@desc":"sequential polymer number in a model, starting with 1.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},polymerLength:{"@desc":"polymer length","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},property_xx:{"@desc":"a property created using the DATA command","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},psi:{"@desc":"protein group PSI angle for the atom's residue","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"}
4126,radius:{"@desc":'currently displayed radius -- In SELECT command comparisons ("select radius=n"), integer n implies Rasmol units 1/250 Angstroms; in all other cases or when a decimal number is used, the units are Angstroms.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},resno:{"@desc":"PDB residue number, not including insertion code (see also seqcode, below)","@examples":["resno = 100"],regex:/-?[0-9]+/,map:s=>parseInt(s),level:"residue-test",property:t.ammp("auth_seq_id")},selected:{"@desc":"1.0 if atom is selected; 0.0 if not","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},sequence:{"@desc":'PDB one-character sequence code, as a string of characters, with "?" indicated where single-character codes are not available',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},seqcode:{"@desc":'PDB residue number, including insertion code (for example, 234^2; "seqcode" option added in Jmol 14.3.16)',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},seqid:{"@desc":"(mmCIF only) the value from _atom_site.label_seq_id; a pointer to _entity_poly_seq.num in the ENTITY_POLY_SEQ category specifying the sequence of monomers in a polymer. Allowance is made for the possibility of microheterogeneity in a sample by allowing a given sequence number to be correlated with more than one monomer id. (Jmol 14.2.3)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},shape:{"@desc":'hybridization geometry such as "tetrahedral"',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},site:{"@desc":"crystallographic site number","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},spacefill:{"@desc":"currently displayed radius","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},straightness:{"@desc":'quaternion-derived straightness (second derivative of the quaternion describing the orientation of the residue. This quantity will have different values depending upon the setting of quaternionFrame as "A" (alpha-carbon/phosphorus atom only), "C" (alpha-carbon/pyrimidine or purine base based), "P" (carbonyl-carbon peptide plane/phosphorus tetrahedron based), or "N" (amide-nitrogen based). The default is alpha-carbon based, which corresponds closely to the following combination of Ramachandran angles involving three consecutive residues i-1, i, and i+1: -psii-1 - phii + psii + phii+1.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},strucno:{"@desc":"a unique number for each helix, sheet, or turn in a model, starting with 1.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},structure:{"@desc":'The value of this parameter depends upon the context. Used with select structure=x, x can be either the quoted keyword "none", "turn", "sheet", "helix", "dna", "rna", or "carbohydrate" or a respective number 0-6. In the context {*}.structure, the return value is a number; in the context label %[structure], the return is one of the six keywords.',"@examples":['structure="helix"',"structure=3"],regex:/none|turn|sheet|helix|dna|rna|carbohydrate|[0-6]/i,map:i,level:"residue-test",property:"structure"},substructure:{"@desc":'like structure, the value of this parameter depends upon the context. Used with select substructure=x, x can be either the quoted keyword "none", "turn", "sheet", "helix", "dna", "rna", "carbohydrate", "helix310", "helixalpha", or "helixpi", or the respective number 0-9. In the context {*}.substructure, the return value is a number; in the context label %[substructure], the return is one of the nine keywords.',"@examples":['substructure = "alphahelix"',"substructure =9"],regex:/none|turn|sheet|helix|dna|rna|carbohydrate|helix310|helixalpha|helixpi|[0-9]/i,map:i,level:"residue-test",property:"structure"},surfacedistance:{"@desc":"A value related to the distance of an atom to a nominal molecular surface. 0 indicates at the surface. Positive numbers are minimum distances in Angstroms from the given atom to the surface.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"}
4126,symop:{"@desc":'the first symmetry operation code that generated this atom by Jmol; an integer starting with 1. See also symmetry, below. This operator is only present if the file contains space group information and the file was loaded using the {i, j, k} option so as to generate symmetry-based atoms. To select only the original atoms prior to application of symmetry, you can either use "SYMOP=n", where n is the symmetry operator corresponding to "x,y,z", or you can specify instead simply "NOT symmetry" the way you might specify "NOT hydrogen". Note that atoms in special positions will have multiple operator matches. These atoms can be selected using the keyword SPECIALPOSITION. The special form select SYMOP=nijk selects a specific translation of atoms from the given crystallographic symmetry operation. Comparators <, <=, >, >=, and != can be used and only apply to the ijk part of the designation. The ijk are relative, not absolute. Thus, symop=2555 selects for atoms that have been transformed by symop=2 but not subjected to any further translation. select symop=1555 is identical to select not symmetry. All other ijk are relative to these selections for 555. If the model was loaded using load "filename.cif" {444 666 1}, where the 1 indicates that all symmetry-generated atoms are to be packed within cell 555 and then translated to fill the other 26 specified cells, then select symop=3555 is nearly the same as select symop=3 and cell=555. (The difference being that cell=555 selects for all atoms that are on any edge of the cell, while symop=3555 does not.) However, the situation is different if instead the model was loaded using load "filename.cif" {444 666 0}, where the 0 indicates that symmetry-generated atoms are to be placed exactly where their symmetry operator would put them (x,-y,z being different then from x, 1-y, z). In that case, select symop=3555 is for all atoms that have been generated using symmetry operation 3 but have not had any additional translations applied to the x,y,z expression found in the CIF file. If, for example, symmetry operation 3 is -x,-y,-z, then load "filename.cif" {444 666 0} will place an atom originally at {1/2, 1/2, 1/2} at positions {-1/2, -1/2, -1/2} (symop=3555) and {-3/2, -3/2, -3/2} (symop=3444) and 24 other sites.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},symmetry:{"@desc":'as "symmetry" or in a label as lower-case "o" gives list of crystallographic symmetry operators generating this atom with lattice designations,such as 3555; upper-case "%O" in a label gives a list without the lattice designations. See also symop, above.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},temperature:{"@desc":"yes  yes  temperature factor (B-factor)","@examples":["temperature >= 20"],regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.ammp("B_iso_or_equiv")},unitXyz:{"@desc":"unit cell XYZ coordinates","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},uX:{"@desc":"unit cell X coordinate normalized to [0,1)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},uY:{"@desc":"unit cell Y coordinate normalized to [0,1)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},uZ:{"@desc":"unit cell Z coordinate normalized to [0,1)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},valence:{"@desc":"the valence of an atom (sum of bonds, where double bond counts as 2 and triple bond counts as 3","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},vanderwaals:{"@desc":"van der Waals radius","@examples":["vanderwaals >2"],regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.acp("vdw")},vectorScale:{"@desc":"vibration vector scale","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},volume:{"@desc":"approximate van der Waals volume for this atom. Note, {*}.volume gives an average; use {*}.volume.sum to get total volume.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},vXyz:{"@desc":"vibration vector, or individual components as %vx %vy %vz. For atoms without vibration vectors, {xx}.vXyz is -1; in a label, %[vxyz] is blank.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"}
4126,vX:{"@desc":"vibration vector X coordinate; for atoms without vibration vector, {xx}.vX is NaN (same for vY and vZ)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},vY:{"@desc":"vibration vector Y coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},vZ:{"@desc":"vibration vector Z coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},xyz:{"@desc":"Cartesian XYZ coordinates; select xyz > 1.0 selects atoms more than one Angstrom from the origin.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"}},Dd}var Z1={},wG;function Zie(){if(wG)return Z1;wG=1,Object.defineProperty(Z1,"__esModule",{value:!0}),Z1.operators=void 0;const e=At,t=e.__importStar(uc()),r=e.__importStar(fs()),i=dr().MolScriptBuilder;return Z1.operators=[{"@desc":"Selects atoms that are not included in s1.","@examples":["not ARG"],name:"not",type:r.prefix,rule:t.MonadicParser.alt(t.MonadicParser.regex(/NOT/i).skip(t.MonadicParser.whitespace),t.MonadicParser.string("!").skip(t.MonadicParser.optWhitespace)),map:(c,o)=>r.invertExpr(o)},{"@desc":"Selects atoms included in both s1 and s2.","@examples":["ASP and .CA"],name:"and",type:r.binaryLeft,rule:r.infixOp(/AND|&/i),map:(c,o,s)=>i.struct.modifier.intersectBy({0:o,by:s})},{"@desc":"Selects atoms included in either s1 or s2.","@examples":["ASP or GLU"],name:"or",type:r.binaryLeft,rule:r.infixOp(/OR|\||,/i),map:(c,o,s)=>i.struct.combinator.merge([o,s])}],Z1}var J1={},VG;function Jie(){if(VG)return J1;VG=1,Object.defineProperty(J1,"__esModule",{value:!0}),J1.keywords=void 0;const e=At,r=dr().MolScriptBuilder,n=e.__importStar(fs()),i={acidic:["ASP","GLU"],aliphatic:["ALA","GLY","ILE","LEU","VAL"],amino:["ALA","ARG","ASN","ASP","CYS","GLN","GLU","GLY","HIS","ILE","LEU","LYS","MET","PHE","PRO","SER","THR","TRP","TYR","VAL","ASX","GLX","UNK"],aromatic:["HIS","PHE","TRP","TYR"],basic:["ARG","HIS","LYS"],buried:["ALA","CYS","ILE","LEU","MET","PHE","TRP","VAL"],cyclic:["HIS","PHE","PRO","TRP","TYR"],hydrophobic:["ALA","GLY","ILE","LEU","MET","PHE","PRO","TRP","TYR","VAL"],large:["ARG","GLU","GLN","HIS","ILE","LEU","LYS","MET","PHE","TRP","TYR"],medium:["ASN","ASP","CYS","PRO","THR","VAL"],small:["ALA","GLY","SER"],nucleic:["G","C","A","T","U","I","DG","DC","DA","DT","DU","DI","+G","+C","+A","+T","+U","+I"]},c={nucleic:["P","O3'","O5'","C5'","C4'","C3'","OP1","OP2","O3*","O5*","C5*","C4*","C3*","C2'","C1'","O4'","O2'"],protein:["C","N","CA"]};function o(){return r.struct.combinator.merge([r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.set(...i.nucleic),r.ammp("label_comp_id")])}),r.struct.filter.pick({0:r.struct.generator.atomGroups({"group-by":r.ammp("residueKey")}),test:r.core.logic.and([r.core.rel.eq([r.struct.atomSet.atomCount(),1]),r.core.rel.eq([r.ammp("label_atom_id"),r.atomName("P")])])}),r.struct.filter.pick({0:r.struct.generator.atomGroups({"group-by":r.ammp("residueKey")}),test:r.core.logic.or([r.core.set.isSubset([n.atomNameSet(["C1'","C2'","O3'","C3'","C4'","C5'","O5'"]),r.ammpSet("label_atom_id")]),r.core.set.isSubset([n.atomNameSet(["C1*","C2*","O3*","C3*","C4*","C5*","O5*"]),r.ammpSet("label_atom_id")])])})])}function s(){return r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.set(...i.amino),r.ammp("label_comp_id")])})}function h(){return r.struct.combinator.merge([r.struct.modifier.intersectBy({0:r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.amino),r.ammp("label_comp_id")])}),by:r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.core.type.set(c.protein),r.ammp("label_atom_id")])})}),r.struct.modifier.intersectBy({0:r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.nucleic),r.ammp("label_comp_id")])}),by:r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.core.type.set(c.nucleic),r.ammp("label_atom_id")])})})])}return J1.keywords={all:{"@desc":"all atoms; same as *",abbr:["*"],map:()=>r.struct.generator.all()},bonded:{"@desc":"covalently bonded",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.gr([r.struct.atomProperty.core.bondCount({flags:r.struct.type.bondFlags(["covalent","metallic","sulfide"])}),0])})},clickable:{"@desc":"actually visible -- having some visible aspect such as wireframe, spacefill, or a label showing, or the alpha-carbon or phosphorus atom in a biomolecule that is rendered with only cartoon, rocket, or other biomolecule-specific shape."},connected:{"@desc":"bonded in any way, including hydrogen bonds",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.gr([r.struct.atomProperty.core.bondCount({flags:r.struct.type.bondFlags()}),0])})},displayed:{"@desc":"displayed using the display or hide command; not necessarily visible"}
vendor: 6,120 bytes, line 4126
4126,hidden:{"@desc":"hidden using the display or hide command"},none:{"@desc":"no atoms",map:()=>r.struct.generator.empty()},selected:{"@desc":"atoms that have been selected; defaults to all when a file is first loaded"},thisModel:{"@desc":'atoms in the current frame set, as defined by frame, model, or animation commands. If more than one model is in this set, "thisModel" refers to all of them, regardless of atom displayed/hidden status.'},visible:{"@desc":"visible in any way, including PDB residue atoms for which a cartoon or other such rendering makes their group visible, even if they themselves are not visible."},subset:{"@desc":"the currently defined subset. Note that if a subset is currently defined, then select/display all is the same as select/display subset, restrict none is the same as restrict not subset. In addition, select not subset selects nothing."},specialPosition:{"@desc":"atoms in crystal structures that are at special positions - that is, for which there is more than one operator that leads to them."},unitcell:{"@desc":"atoms within the current unitcell, which may be offset. This includes atoms on the faces and at the vertices of the unitcell."},polyhedra:{"@desc":"all central atoms for which polyhedra have been created. See also polyhera(n), below. (Jmol 14.4)"},nonmetal:{"@desc":"_H,_He,_B,_C,_N,_O,_F,_Ne,_Si,_P,_S,_Cl,_Ar,_As,_Se,_Br,_Kr,_Te,_I,_Xe,_At,_Rn",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.set(...["H","He","B","C","N","O","F","Ne","Si","P","S","Cl","Ar","As","Se","Br","Kr","Te","I","Xe","At","Rn"].map(r.es)),r.acp("elementSymbol")])})},metal:{"@desc":"!nonmetal",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.logic.not([r.core.set.has([r.set(...["H","He","B","C","N","O","F","Ne","Si","P","S","Cl","Ar","As","Se","Br","Kr","Te","I","Xe","At","Rn"].map(r.es)),r.acp("elementSymbol")])])})},alkaliMetal:{"@desc":"_Li,_Na,_K,_Rb,_Cs,_Fr",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.set(...["Li","Na","K","Rb","Cs","Fr"].map(r.es)),r.acp("elementSymbol")])})},alkalineEarth:{"@desc":"_Be,_Mg,_Ca,_Sr,_Ba,_Ra",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.set(...["Be","Mg","Ca","Sr","Ba","Ra"].map(r.es)),r.acp("elementSymbol")])})},nobleGas:{"@desc":"_He,_Ne,_Ar,_Kr,_Xe,_Rn",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.set(...["He","Ne","Ar","Kr","Xe","Rn"].map(r.es)),r.acp("elementSymbol")])})},metalloid:{"@desc":"_B,_Si,_Ge,_As,_Sb,_Te",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.set(...["B","Si","Ge","As","Sb","Te"].map(r.es)),r.acp("elementSymbol")])})},transitionMetal:{"@desc":"(includes La and Ac) elemno>=21 and elemno<=30, elemno=57, elemno=89, elemno>=39 and elemno<=48, elemno>=72 and elemno<=80, elemno>=104 and elemno<=112",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.logic.or([r.core.rel.inRange([r.acp("atomicNumber"),21,30]),r.core.rel.inRange([r.acp("atomicNumber"),39,48]),r.core.rel.inRange([r.acp("atomicNumber"),72,80]),r.core.rel.inRange([r.acp("atomicNumber"),104,112]),r.core.set.has([r.set(57,89),r.acp("atomicNumber")])])})},lanthanide:{"@desc":"(does not include La) elemno>57 and elemno<=71",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.inRange([r.acp("atomicNumber"),57,71])})},actinide:{"@desc":"(does not include Ac) elemno>89 and elemno<=103",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.inRange([r.acp("atomicNumber"),89,103])})},isaromatic:{"@desc":"atoms connected with the AROMATIC, AROMATICSINGLE, or AROMATICDOUBLE bond types",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.gr([r.struct.atomProperty.core.bondCount({flags:r.struct.type.bondFlags(["aromatic"])}),0])})},carbohydrate:{"@desc":""},ions:{"@desc":'(specifically the PDB designations "PO4" and "SO4")'},ligand:{"@desc":'(originally "hetero and not solvent"; changed to "!(protein,nucleic,water,UREA)" for Jmol 12.2)'},nucleic:{"@desc":`any group that (a) has one of the following group names: G, C, A, T, U, I, DG, DC, DA, DT, DU, DI, +G, +C, +A, +T, +U, +I; or (b) can be identified as a group that is only one atom, with name "P"; or (c) has all of the following atoms (prime, ', can replace * here): C1*, C2*, C3*, O3*, C4*, C5*, and O5*.`,map:()=>o()},purine:{"@desc":"any nucleic group that (a) has one of the following group names: A, G, I, DA, DG, DI, +A, +G, or +I; or (b) also has atoms N7, C8, and N9.",map:()=>r.struct.modifier.intersectBy({0:o(),by:r.struct.combinator.merge([r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.set("A","G","I","DA","DG","DI","+A","+G","+I"),r.ammp("label_comp_id")])}),r.struct.filter.pick({0:r.struct.generator.atomGroups({"group-by":r.ammp("residueKey")}),test:r.core.set.isSubset([n.atomNameSet(["N7","C8","N9"]),r.ammpSet("label_atom_id")])})])})},pyrimidine:{"@desc":"any nucleic group that (a) has one of the following group names: C, T, U, DC, DT, DU, +C, +T, +U; or (b) also has atom O2.",map:()=>r.struct.modifier.intersectBy({0:o(),by:r.struct.combinator.merge([r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.set("C","T","U","DC","DT","DU","+C","+T","+U"),r.ammp("label_comp_id")])}),r.struct.filter.pick({0:r.struct.generator.atomGroups({"group-by":r.ammp("residueKey")}),test:r.core.logic.or([r.core.set.has([r.ammpSet("label_atom_id"),r.atomName("O2*")]),r.core.set.has([r.ammpSet("label_atom_id"),r.atomName("O2'")])])})])})},dna:{"@desc":"any nucleic group that (a) has one of the following group names: DG, DC, DA, DT, DU, DI, T, +G, +C, +A, +T; or (b) has neither atom O2* or O2'.",map:()=>r.struct.modifier.intersectBy({0:o(),by:r.struct.combinator.merge([r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.set("DG","DC","DA","DT","DU","DI","T","+G","+C","+A","+T"),r.ammp("label_comp_id")])}),r.struct.filter.pick({0:r.struct.generator.atomGroups({"group-by":r.ammp("residueKey")}),test:r.core.logic.not([r.core.logic.or([r.core.set.has([r.ammpSet("label_atom_id"),r.atomName("O2*")]),r.core.set.has([r.ammpSet("label_atom_id"),r.atomName("O2'")])])])})])})}
4126,rna:{"@desc":"any nucleic group that (a) has one of the following group names: G, C, A, U, I, +U, +I; or (b) has atom O2* or O2'.",map:()=>r.struct.modifier.intersectBy({0:o(),by:r.struct.combinator.merge([r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.set("G","C","A","U","I","+U","+I"),r.ammp("label_comp_id")])}),r.struct.filter.pick({0:r.struct.generator.atomGroups({"group-by":r.ammp("residueKey")}),test:r.core.logic.or([r.core.set.has([r.ammpSet("label_atom_id"),r.atomName("O2*")]),r.core.set.has([r.ammpSet("label_atom_id"),r.atomName("O2'")])])})])})},protein:{"@desc":'defined as a group that (a) has one of the following group names: ALA, ARG, ASN, ASP, CYS, GLN, GLU, GLY, HIS, ILE, LEU, LYS, MET, PHE, PRO, SER, THR, TRP, TYR, VAL, ASX, GLX, or UNK; or (b) contains PDB atom designations [C, O, CA, and N] bonded correctly; or (c) does not contain "O" but contains [C, CA, and N] bonded correctly; or (d) has only one atom, which has name CA and does not have the group name CA (indicating a calcium atom).',map:()=>s()},acidic:{"@desc":"ASP GLU",map:()=>n.resnameExpr(i.acidic)},acyclic:{"@desc":"amino and not cyclic",map:()=>r.struct.modifier.intersectBy({0:n.resnameExpr(i.amino),by:n.invertExpr(n.resnameExpr(i.cyclic))})},aliphatic:{"@desc":"ALA GLY ILE LEU VAL",map:()=>n.resnameExpr(i.aliphatic)},amino:{"@desc":"all twenty standard amino acids, plus ASX, GLX, UNK",map:()=>n.resnameExpr(i.amino)},aromatic:{"@desc":'HIS PHE TRP TYR (see also "isaromatic" for aromatic bonds)',map:()=>n.resnameExpr(i.aromatic)},basic:{"@desc":"ARG HIS LYS",map:()=>n.resnameExpr(i.basic)},buried:{"@desc":"ALA CYS ILE LEU MET PHE TRP VAL",map:()=>n.resnameExpr(i.buried)},charged:{"@desc":"same as acidic or basic -- ASP GLU, ARG HIS LYS",map:()=>n.resnameExpr(i.acidic.concat(i.basic))},cyclic:{"@desc":"HIS PHE PRO TRP TYR",map:()=>n.resnameExpr(i.cyclic)},helix:{"@desc":"secondary structure-related.",map:()=>r.struct.generator.atomGroups({"residue-test":r.core.flags.hasAny([r.struct.type.secondaryStructureFlags(["helix"]),r.ammp("secondaryStructureFlags")])})},helixalpha:{"@desc":"secondary structure-related.",map:()=>r.struct.generator.atomGroups({"residue-test":r.core.flags.hasAny([r.struct.type.secondaryStructureFlags(["alpha"]),r.ammp("secondaryStructureFlags")])})},helix310:{"@desc":"secondary structure-related.",map:()=>r.struct.generator.atomGroups({"residue-test":r.core.flags.hasAny([r.struct.type.secondaryStructureFlags(["3-10"]),r.ammp("secondaryStructureFlags")])})},helixpi:{"@desc":"secondary structure-related.",map:()=>r.struct.generator.atomGroups({"residue-test":r.core.flags.hasAny([r.struct.type.secondaryStructureFlags(["pi"]),r.ammp("secondaryStructureFlags")])})},hetero:{"@desc":"PDB atoms designated as HETATM",map:()=>r.struct.generator.atomGroups({"atom-test":r.ammp("isHet")})},hydrophobic:{"@desc":"ALA GLY ILE LEU MET PHE PRO TRP TYR VAL",map:()=>n.resnameExpr(i.hydrophobic)},large:{"@desc":"ARG GLU GLN HIS ILE LEU LYS MET PHE TRP TYR",map:()=>n.resnameExpr(i.large)},medium:{"@desc":"ASN ASP CYS PRO THR VAL",map:()=>n.resnameExpr(i.medium)},negative:{"@desc":"same as acidic -- ASP GLU",map:()=>n.resnameExpr(i.acidic)},neutral:{"@desc":"amino and not (acidic or basic)",map:()=>r.struct.modifier.intersectBy({0:n.resnameExpr(i.amino),by:n.invertExpr(n.resnameExpr(i.acidic.concat(i.basic)))})},polar:{"@desc":"amino and not hydrophobic",map:()=>r.struct.modifier.intersectBy({0:n.resnameExpr(i.amino),by:n.invertExpr(n.resnameExpr(i.hydrophobic))})},positive:{"@desc":"same as basic -- ARG HIS LYS",map:()=>n.resnameExpr(i.basic)},sheet:{"@desc":"secondary structure-related",map:()=>r.struct.generator.atomGroups({"residue-test":r.core.flags.hasAny([r.struct.type.secondaryStructureFlags(["sheet"]),r.ammp("secondaryStructureFlags")])})},small:{"@desc":"ALA GLY SER",map:()=>n.resnameExpr(i.small)},surface:{"@desc":"amino and not buried",map:()=>r.struct.modifier.intersectBy({0:n.resnameExpr(i.amino),by:n.invertExpr(n.resnameExpr(i.buried))})},turn:{"@desc":"secondary structure-related",map:()=>
4126r.struct.generator.atomGroups({"residue-test":r.core.flags.hasAny([r.struct.type.secondaryStructureFlags(["turn"]),r.ammp("secondaryStructureFlags")])})},alpha:{"@desc":"(*.CA)",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.eq([r.atomName("CA"),r.ammp("label_atom_id")])})},base:{"@desc":"(nucleic bases)"},backbone:{"@desc":"(*.C, *.CA, *.N, and all nucleic other than the bases themselves)",abbr:["mainchain"],map:()=>h()},sidechain:{"@desc":"((protein or nucleic) and not backbone)"},spine:{"@desc":"(*.CA, *.N, *.C for proteins; *.P, *.O3', *.O5', *.C3', *.C4', *.C5 for nucleic acids)"},leadatom:{"@desc":"(*.CA, *.P, and terminal *.O5')"},solvent:{"@desc":'PDB "HOH", water, also the connected set of H-O-H in any model'}},J1}var EG;function eae(){if(EG)return Q1;EG=1,Object.defineProperty(Q1,"__esModule",{value:!0}),Q1.transpiler=void 0;const e=At,t=e.__importStar(uc()),r=e.__importStar(fs()),i=dr().MolScriptBuilder,c=Qie(),o=Zie(),s=Jie(),h=[{"@desc":"value comparisons","@examples":[],name:"=",abbr:["=="],type:r.binaryLeft,rule:t.MonadicParser.regexp(/\s*(LIKE|>=|<=|=|!=|>|<)\s*/i,1),map:(g,a,d)=>{let p;if(a==="structure"?p=i.core.flags.hasAny([i.ammp("secondaryStructureFlags"),(0,c.structureMap)(d)]):d==="structure"?p=i.core.flags.hasAny([i.ammp("secondaryStructureFlags"),(0,c.structureMap)(a)]):a.head!==void 0?a.head.name==="core.type.regex"&&(p=i.core.str.match([a,i.core.type.str([d])])):d.head!==void 0?d.head.name==="core.type.regex"&&(p=i.core.str.match([d,i.core.type.str([a])])):g.toUpperCase()==="LIKE"&&(a.head?p=i.core.str.match([i.core.type.regex([`^${d}$`,"i"]),i.core.type.str([a])]):p=i.core.str.match([i.core.type.regex([`^${a}$`,"i"]),i.core.type.str([d])])),!p)switch(a.head&&(d=r.wrapValue(a,d)),d.head&&(a=r.wrapValue(d,a)),g){case"=":p=i.core.rel.eq([a,d]);break;case"!=":p=i.core.rel.neq([a,d]);break;case">":p=i.core.rel.gr([a,d]);break;case"<":p=i.core.rel.lt([a,d]);break;case">=":p=i.core.rel.gre([a,d]);break;case"<=":p=i.core.rel.lte([a,d]);break;default:throw new Error(`value operator '${g}' not supported`)}return i.struct.generator.atomGroups({"atom-test":p})}}];function f(g){const[a,d,p,u,m,v,b]=g[1],P={};m&&(P["chain-test"]=i.core.rel.eq([i.ammp("auth_asym_id"),m]));const C=[];a&&C.push(i.core.rel.eq([i.ammp("label_comp_id"),a])),d&&C.push(i.core.logic.and([i.core.rel.gre([i.ammp("auth_seq_id"),d[0]]),i.core.rel.lte([i.ammp("auth_seq_id"),d[1]])])),p&&C.push(i.core.rel.eq([i.ammp("auth_seq_id"),p])),u&&C.push(i.core.rel.eq([i.ammp("pdbx_PDB_ins_code"),u])),C.length&&(P["residue-test"]=r.andExpr(C));const l=[];return v&&l.push(i.core.rel.eq([i.ammp("auth_atom_id"),v])),b&&l.push(i.core.rel.eq([i.ammp("label_alt_id"),b])),l.length&&(P["atom-test"]=r.andExpr(l)),i.struct.generator.atomGroups(P)}const y=t.MonadicParser.createLanguage({Integer:()=>t.MonadicParser.regexp(/-?[0-9]+/).map(Number).desc("integer"),Parens:function(g){return t.MonadicParser.alt(g.Parens,g.Operator,g.Expression).wrap(t.MonadicParser.regexp(/\(\s*/),t.MonadicParser.regexp(/\s*\)/))},Expression:function(g){return t.MonadicParser.alt(g.Keywords,g.AtomExpression.map(f),g.Within.map(a=>i.struct.modifier.includeSurroundings({0:a[1],radius:a[0]})),g.ValueQuery,g.Element.map(a=>i.struct.generator.atomGroups({"atom-test":i.core.rel.eq([i.acp("elementSymbol"),i.struct.type.elementSymbol(a)])})),g.Resname.map(a=>i.struct.generator.atomGroups({"residue-test":i.core.rel.eq([i.ammp("label_comp_id"),a])})))},Operator:function(g){return r.combineOperators(o.operators,t.MonadicParser.alt(g.Parens,g.Expression))},AtomExpression:function(g){return t.MonadicParser.seq(t.MonadicParser.lookahead(g.AtomPrefix),t.MonadicParser.seq(g.BracketedResname.or(t.MonadicParser.of(null)),g.ResnoRange.or(t.MonadicParser.of(null)),g.Resno.or(t.MonadicParser.of(null)),g.Inscode.or(t.MonadicParser.of(null)),g.Chainname.or(t.MonadicParser.of(null)),g.Atomname.or(t.MonadicParser.of(null)),g.Altloc.or(t.MonadicParser.of(null)),g.Model.or(t.MonadicParser.of(null)))).desc("expression")},AtomPrefix:()=>t.MonadicParser.regexp(/[\[0-9:^%/.-]/).desc("atom-prefix"),Chainname:()=>t.MonadicParser.regexp(/:([A-Za-z]{1,3})/,1).desc("chainname"),Model:()=>t.MonadicParser.regexp(/\/([0-9]+)/,1).map(Number).desc("model"),Element:()=>t.MonadicParser.regexp(/_([A-Za-z]{1,3})/,1).desc("element"),Atomname:()=>t.MonadicParser.regexp(/\.([a-zA-Z0-9]{1,4})/,1).map(i.atomName).desc("atomname"),Resname:()=>t.MonadicParser.regexp(/[a-zA-Z0-9]{1,4}/).desc("resname"),Resno:g=>g.Integer.desc("resno"),Altloc:()=>t.MonadicParser.regexp(/%([a-zA-Z0-9])/,1).desc("altloc"),Inscode:()=>t.MonadicParser.regexp(/\^([a-zA-Z0-9])/,1).desc("inscode"),BracketedResname:()=>t.MonadicParser.regexp(/\[([a-zA-Z0-9]{1,4})\]/,1).desc("bracketed-resname"),ResnoRange:g=>
4126t.MonadicParser.seq(g.Integer.skip(t.MonadicParser.seq(t.MonadicParser.optWhitespace,t.MonadicParser.string("-"),t.MonadicParser.optWhitespace)),g.Integer).desc("resno-range"),Within:g=>t.MonadicParser.regexp(/within/i).skip(t.MonadicParser.regexp(/\s*\(\s*/)).then(t.MonadicParser.seq(g.Integer.skip(t.MonadicParser.regexp(/\s*,\s*/)),g.Query)).skip(t.MonadicParser.regexp(/\)/)),Keywords:()=>t.MonadicParser.alt(...r.getKeywordRules(s.keywords)).desc("keyword"),Query:function(g){return t.MonadicParser.alt(g.Operator,g.Parens,g.Expression).trim(t.MonadicParser.optWhitespace)},Number:function(){return t.MonadicParser.regexp(/-?(0|[1-9][0-9]*)([.][0-9]+)?([eE][+-]?[0-9]+)?/).map(Number).desc("number")},String:function(){const g=r.getReservedWords(c.properties,s.keywords,o.operators).sort(r.strLenSortFn).map(r.escapeRegExp).join("|");return t.MonadicParser.alt(t.MonadicParser.regexp(new RegExp(`(?!(${g}))[A-Z0-9_]+`,"i")),t.MonadicParser.regexp(/'((?:[^"\\]|\\.)*)'/,1),t.MonadicParser.regexp(/"((?:[^"\\]|\\.)*)"/,1).map(a=>i.core.type.regex([`^${a}$`,"i"]))).desc("string")},Value:function(g){return t.MonadicParser.alt(g.Number,g.String)},ValueParens:function(g){return t.MonadicParser.alt(g.ValueParens,g.ValueOperator,g.ValueExpressions).wrap(t.MonadicParser.string("("),t.MonadicParser.string(")"))},ValuePropertyNames:function(){return t.MonadicParser.alt(...r.getPropertyNameRules(c.properties,/LIKE|>=|<=|=|!=|>|<|\)|\s/i))},ValueOperator:function(g){return r.combineOperators(h,t.MonadicParser.alt(g.ValueParens,g.ValueExpressions))},ValueExpressions:function(g){return t.MonadicParser.alt(g.Value,g.ValuePropertyNames)},ValueQuery:function(g){return t.MonadicParser.alt(g.ValueOperator.map(a=>{if(a.head){if(a.head.name.startsWith("structure-query.generator"))return a}else if(typeof a=="string"&&a.length<=4)return i.struct.generator.atomGroups({"residue-test":i.core.rel.eq([i.ammp("label_comp_id"),a])});throw new Error(`values must be part of an comparison, value '${a}'`)}))}}),_=g=>y.Query.tryParse(g);return Q1.transpiler=_,Q1}var ev={},tv={},BG;function tae(){if(BG)return tv;BG=1,Object.defineProperty(tv,"__esModule",{value:!0}),tv.properties=void 0;const t=dr().MolScriptBuilder,r=/[-+]?[0-9]*\.?[0-9]+/;function n(f){return f.split("+").map(t.atomName)}function i(f){return f.split("+").map(y=>y.replace(/^["']|["']$/g,""))}function c(f){if(f.includes("-")&&f.includes("+")){const y=f.split("+").map(g=>g.replace(/^["']|["']$/g,"")),_=[];return y.forEach(g=>{if(g.includes("-")&&!g.startsWith("-")){const[a,d]=g.split("-").map(p=>parseInt(p));for(let p=a;p<=d;p++)_.push(p)}else if(g.includes("-")&&g.startsWith("-")&&g.match(/[0-9]+-[-0-9]+/)){const a=-parseInt(g.split("-")[1]);let d;g.includes("--")?d=-parseInt(g.split("-")[3]):d=parseInt(g.split("-")[2]);for(let p=a;p<=d;p++)_.push(p)}else g.includes("-")&&g.startsWith("-")&&g.match(/[0-9]+-[-0-9]+/),_.push(parseInt(g))}),_}else if(f.includes("-")&&!f.includes("+")){const y=[];if(f.startsWith("-"))if(f.startsWith("-")&&f.match(/[0-9]+-[-0-9]+/)){const _=-parseInt(f.split("-")[1]);let g;f.includes("--")?g=-parseInt(f.split("-")[3]):g=parseInt(f.split("-")[2]);for(let a=_;a<=g;a++)y.push(a)}else f.startsWith("-")&&f.match(/[0-9]+-[-0-9]+/),y.push(parseInt(f));else{const[_,g]=f.split("-").map(a=>parseInt(a));for(let a=_;a<=g;a++)y.push(a)}return y}else return!f.includes("-")&&f.includes("+")?i(f).map(y=>parseInt(y)):[parseInt(f)]}function o(f){return f.split("+").map(t.struct.type.elementSymbol)}const s={H:"helix",S:"beta",L:"none"};function h(f){return{flags:t.struct.type.secondaryStructureFlags(f.toUpperCase().split("+").map(y=>s[y]||"none"))}}return tv.properties={symbol:{"@desc":"chemical-symbol-list: list of 1- or 2-letter chemical symbols from the periodic table","@examples":["symbol O+N"],abbr:["e."],regex:/[a-zA-Z'"+]+/,map:o,level:"atom-test",property:t.acp("elementSymbol")},name:{"@desc":"atom-name-list: list of up to 4-letter codes for atoms in proteins or nucleic acids","@examples":["name CA+CB+CG+CD"],abbr:["n."],regex:/[a-zA-Z0-9'"+]+/,map:n,level:"atom-test",property:t.ammp("label_atom_id")},resn:{"@desc":"residue-name-list: list of 3-letter codes for amino acids or list of up to 2-letter codes for nucleic acids","@examples":["resn ASP+GLU+ASN+GLN","resn A+G"],abbr:["resname","r."],regex:/[a-zA-Z0-9'"+]+/,map:i,level:"residue-test",property:t.ammp("label_comp_id")},resi:{"@desc":"residue-identifier-list list of up to 4-digit residue numbers or residue-identifier-range","@examples":["resi 1+10+100+1000","resi 1-10"],abbr:["resident","residue","resid","i."],regex:/[0-9+-]+/,map:c,level:"residue-test",property:t.ammp("auth_seq_id")},alt:{"@desc":"alternate-conformation-identifier-list list of single letters","@examples":["alt A+B",'alt ""','alt ""+A'],abbr:[],regex:/[a-zA-Z0-9'"+]+/,map:i,level:"atom-test",property:t.ammp("label_alt_id")},chain:{"@desc":"chain-identifier-list list of single letters or sometimes numbers","@examples":["chain A"],abbr:["c."],regex:/[a-zA-Z0-9'"+]+/,map:i,level:"chain-test",property:t.ammp("auth_asym_id")}
4126,segi:{"@desc":"segment-identifier-list list of up to 4 letter identifiers","@examples":["segi lig"],abbr:["segid","s."],regex:/[a-zA-Z0-9'"+]+/,map:i,level:"chain-test",property:t.ammp("label_asym_id")},flag:{"@desc":"flag-number a single integer from 0 to 31","@examples":["flag 0"],isUnsupported:!0,abbr:["f."],regex:/[0-9]+/,map:f=>parseInt(f),level:"atom-test"},numeric_type:{"@desc":"type-number a single integer","@examples":["nt. 5"],isUnsupported:!0,abbr:["nt."],regex:/[0-9]+/,map:f=>parseInt(f),level:"atom-test"},text_type:{"@desc":"type-string a list of up to 4 letter codes","@examples":["text_type HA+HC"],isUnsupported:!0,abbr:["tt."],regex:/[a-zA-Z0-9'"+]+/,map:i,level:"atom-test"},id:{"@desc":"external-index-number a single integer","@examples":["id 23"],regex:/[0-9+-]+/,map:c,level:"atom-test",property:t.ammp("id")},index:{"@desc":"internal-index-number a single integer","@examples":["index 11"],regex:/[0-9+-]+/,map:c,level:"atom-test",property:t.ammp("id")},ss:{"@desc":"secondary-structure-type list of single letters. Helical regions should be assigned H and sheet regions S. Loop regions can either be assigned L or be blank.","@examples":["ss H+S+L",'ss S+""'],abbr:[],regex:/[a-zA-Z'"+]+/,map:h,level:"residue-test",property:t.ammp("secondaryStructureFlags")},b:{"@desc":"comparison-operator b-factor-value a real number","@examples":["b > 10"],isNumeric:!0,abbr:[],regex:r,map:f=>parseFloat(f),level:"atom-test",property:t.ammp("B_iso_or_equiv")},q:{"@desc":"comparison-operator occupancy-value a real number","@examples":["q <0.50"],isNumeric:!0,abbr:[],regex:r,map:f=>parseFloat(f),level:"atom-test",property:t.ammp("occupancy")},formal_charge:{"@desc":"comparison-operator formal charge-value an integer","@examples":["fc. = -1"],isNumeric:!0,abbr:["fc."],regex:r,map:f=>parseFloat(f),level:"atom-test",property:t.ammp("pdbx_formal_charge")},partial_charge:{"@desc":"comparison-operator partial charge-value a real number","@examples":["pc. > 1"],isUnsupported:!0,isNumeric:!0,abbr:["pc."],regex:r,map:f=>parseFloat(f),level:"atom-test"},elem:{"@desc":'str  atomic element symbol string ("X" if undefined)',"@examples":["elem N"],regex:/[a-zA-Z0-9]{1,3}/,map:f=>t.es(f),level:"atom-test",property:t.acp("elementSymbol")}},tv}var rv={},RG;function rae(){if(RG)return rv;RG=1,Object.defineProperty(rv,"__esModule",{value:!0}),rv.operators=void 0;const e=At,t=e.__importStar(uc()),r=e.__importStar(fs()),i=dr().MolScriptBuilder;return rv.operators=[{"@desc":"Selects atoms that are not included in s1.","@examples":["NOT resn ALA","not (resi 42 or chain A)","!resi 42 or chain A"],name:"not",type:r.prefix,rule:t.MonadicParser.alt(t.MonadicParser.regexp(/NOT/i).skip(t.MonadicParser.whitespace),t.MonadicParser.string("!").skip(t.MonadicParser.optWhitespace)),map:(c,o)=>r.invertExpr(o)},{"@desc":"Selects atoms included in both s1 and s2.","@examples":["chain A AND name CA"],name:"and",type:r.binaryLeft,rule:r.infixOp(/AND|&/i),map:(c,o,s)=>i.struct.modifier.intersectBy({0:o,by:s})},{"@desc":"Selects atoms included in either s1 or s2.","@examples":["chain A OR chain B"],name:"or",type:r.binaryLeft,rule:r.infixOp(/OR|\|/i),map:(c,o,s)=>i.struct.combinator.merge([o,s])},{"@desc":"Selects atoms in s1 whose identifiers name, resi, resn, chain and segi all match atoms in s2.","@examples":["chain A IN chain B"],name:"in",type:r.binaryLeft,rule:r.infixOp(/IN/i),map:(c,o,s)=>i.struct.filter.withSameAtomProperties({0:o,source:s,property:i.core.type.compositeKey([i.ammp("label_atom_id"),i.ammp("label_seq_id"),i.ammp("label_comp_id"),i.ammp("auth_asym_id"),i.ammp("label_asym_id")])})},{"@desc":"Selects atoms in s1 whose identifiers name and resi match atoms in s2.","@examples":["chain A LIKE chain B"],name:"like",type:r.binaryLeft,rule:r.infixOp(/LIKE|l\./i),map:(c,o,s)=>i.struct.filter.withSameAtomProperties({0:o,source:s,property:i.core.type.compositeKey([i.ammp("label_atom_id"),i.ammp("label_seq_id")])})},{"@desc":"Selects all atoms whose van der Waals radii are separated from the van der Waals radii of s1 by a minimum of X Angstroms.","@examples":["solvent GAP 2"],name:"gap",type:r.postfix,rule:r.postfixOp(/GAP\s+([-+]?[0-9]*\.?[0-9]+)/i,1).map(c=>parseFloat(c)),map:(c,o)=>i.struct.filter.within({0:i.struct.generator.all(),target:o,"atom-radius":i.acp("vdw"),"max-radius":c,invert:!0})},{"@desc":"Selects atoms with centers within X Angstroms of the center of any atom in s1.","@examples":["resname LIG AROUND 1"],name:"around",abbr:["a."],type:r.postfix,rule:r.postfixOp(/(AROUND|a\.)\s+([-+]?[0-9]*\.?[0-9]+)/i,2).map(c=>parseFloat(c)),map:(c,o)=>i.struct.modifier.exceptBy({0:i.struct.filter.within({0:i.struct.generator.all(),target:o,"max-radius":c}),by:o})},{"@desc":"Expands s1 by all atoms within X Angstroms of the center of any atom in s1.","@examples":["chain A EXPAND 3"],name:"expand",abbr:["x."],type:r.postfix,rule:r.postfixOp(/(EXPAND|x\.)\s+([-+]?[0-9]*\.?[0-9]+)/i,2).map(c=>parseFloat(c)),map:(c,o)=>i.struct.modifier.includeSurroundings({0:o,radius:c})},{"@desc":"Selects atoms in s1 that are within X Angstroms of any atom in s2.","@examples":["chain A WITHIN 3 OF chain B"],name:"within",abbr:["w."],type:r.binaryLeft,rule:r.ofOp("WITHIN","w."),map:(c,o,s)=>i.struct.filter.within({0:o,target:s,"max-radius":c})},{"@desc":"Same as within, but excludes s2 from the selection (and thus is identical to s1 and s2 around X).","@examples":["chain A NEAR_TO 3 OF chain B"],name:"near_to",abbr:["nto."],type:r.binaryLeft,rule:r.ofOp("NEAR_TO","nto."),map:(c,o,s)=>i.struct.modifier.exceptBy({0:i.struct.filter.within({0:o,target:s,"max-radius":c}),by:s})},{"@desc":"Selects atoms in s1 that are at least X Anstroms away from s2.","@examples":["solvent BEYOND 2 OF chain A"],name:"beyond",abbr:["be."],t
4126ype:r.binaryLeft,rule:r.ofOp("BEYOND","be."),map:(c,o,s)=>i.struct.modifier.exceptBy({0:i.struct.filter.within({0:o,target:s,"max-radius":c,invert:!0}),by:s})},{"@desc":"Expands selection to complete residues.","@examples":["BYRESIDUE name N"],name:"byresidue",abbr:["byresi","byres","br."],type:r.prefix,rule:r.prefixOp(/BYRESIDUE|byresi|byres|br\./i),map:(c,o)=>r.asAtoms(i.struct.modifier.expandProperty({0:i.struct.modifier.union({0:o}),property:i.ammp("residueKey")}))},{"@desc":"Completely selects all alpha carbons in all residues covered by a selection.","@examples":["BYCALPHA chain A"],name:"bycalpha",abbr:["bca."],type:r.prefix,rule:r.prefixOp(/BYCALPHA|bca\./i),map:(c,o)=>i.struct.generator.queryInSelection({0:i.struct.modifier.expandProperty({0:i.struct.modifier.union({0:o}),property:i.ammp("residueKey")}),query:i.struct.generator.atomGroups({"atom-test":i.core.rel.eq([i.atomName("CA"),i.ammp("label_atom_id")])})})},{"@desc":"Expands selection to complete molecules.","@examples":["BYMOLECULE resi 20-30"],name:"bymolecule",isUnsupported:!0,abbr:["bymol","bm."],type:r.prefix,rule:r.prefixOp(/BYMOLECULE|bymol|bm\./i),map:(c,o)=>r.asAtoms(i.struct.modifier.expandProperty({0:i.struct.modifier.union({0:o}),property:i.atp("connectedComponentKey")}))},{"@desc":"Expands selection to complete fragments.","@examples":["BYFRAGMENT resi 10"],name:"byfragment",abbr:["byfrag","bf."],isUnsupported:!0,type:r.prefix,rule:r.prefixOp(/BYFRAGMENT|byfrag|bf\./i),map:(c,o)=>[c,o]},{"@desc":"Expands selection to complete segments.","@examples":["BYSEGMENT resn CYS"],name:"bysegment",abbr:["bysegi","byseg","bs."],type:r.prefix,rule:r.prefixOp(/BYSEGMENT|bysegi|byseg|bs\./i),map:(c,o)=>r.asAtoms(i.struct.modifier.expandProperty({0:i.struct.modifier.union({0:o}),property:i.ammp("chainKey")}))},{"@desc":"Expands selection to complete objects.","@examples":["BYOBJECT chain A"],name:"byobject",abbr:["byobj","bo."],isUnsupported:!0,type:r.prefix,rule:r.prefixOp(/BYOBJECT|byobj|bo\./i),map:(c,o)=>[c,o]},{"@desc":"Expands selection to unit cell.","@examples":["BYCELL chain A"],name:"bycell",isUnsupported:!0,type:r.prefix,rule:r.prefixOp(/BYCELL/i),map:(c,o)=>[c,o]},{"@desc":"All rings of size ≤ 7 which have at least one atom in s1.","@examples":["BYRING resn HEM"],name:"byring",type:r.prefix,rule:r.prefixOp(/BYRING/i),map:(c,o)=>r.asAtoms(i.struct.modifier.intersectBy({0:i.struct.filter.pick({0:i.struct.generator.rings(),test:i.core.logic.and([i.core.rel.lte([i.struct.atomSet.atomCount(),7]),i.core.rel.gr([i.struct.atomSet.countQuery([o]),1])])}),by:o}))},{"@desc":"Selects atoms directly bonded to s1, excludes s1.","@examples":["NEIGHBOR resn CYS"],name:"neighbor",type:r.prefix,abbr:["nbr."],rule:r.prefixOp(/NEIGHBOR|nbr\./i),map:(c,o)=>i.struct.modifier.exceptBy({0:r.asAtoms(i.struct.modifier.includeConnected({0:i.struct.modifier.union({0:o}),"bond-test":!0})),by:o})},{"@desc":"Selects atoms directly bonded to s1, may include s1.","@examples":["BOUND_TO name CA"],name:"bound_to",abbr:["bto."],type:r.prefix,rule:r.prefixOp(/BOUND_TO|bto\./i),map:(c,o)=>r.asAtoms(i.struct.modifier.includeConnected({0:i.struct.modifier.union({0:o})}))},{"@desc":"Extends s1 by X bonds connected to atoms in s1.","@examples":["resname LIG EXTEND 3"],name:"extend",abbr:["xt."],type:r.postfix,rule:r.postfixOp(/(EXTEND|xt\.)\s+([0-9]+)/i,2).map(c=>parseInt(c)),map:(c,o)=>r.asAtoms(i.struct.modifier.includeConnected({0:i.struct.modifier.union({0:o}),"bond-test":!0,"layer-count":c}))}],rv}var nv={},OG;function nae(){if(OG)return nv;OG=1,Object.defineProperty(nv,"__esModule",{value:!0}),nv.keywords=void 0;const e=At,r=dr().MolScriptBuilder,n=e.__importStar(fs()),i={nucleic:["A","C","T","G","U","DA","DC","DT","DG","DU"],protein:["ALA","ARG","ASN","ASP","CYS","CYX","GLN","GLU","GLY","HIS","HID","HIE","HIP","ILE","LEU","LYS","MET","MSE","PHE","PRO","SER","THR","TRP","TYR","VAL"],solvent:["HOH","WAT","H20","TIP","SOL"]},c={nucleic:["P","O3'","O5'","C5'","C4'","C3'","OP1","OP2","O3*","O5*","C5*","C4*","C3*","C2'","C1'","O4'","O2'"],protein:["C","N","CA","O"]};function o(){return r.struct.combinator.merge([r.struct.modifier.intersectBy({0:r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.protein),r.ammp("label_comp_id")])}),by:r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.core.type.set(c.protein),r.ammp("label_atom_id")])})}),r.struct.modifier.intersectBy({0:r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.nucleic),r.ammp("label_comp_id")])}),by:r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.core.type.set(c.nucleic),r.ammp("label_atom_id")])})})])}return nv.keywords={all:{"@desc":"All atoms currently loaded into PyMOL",abbr:["*"],map:()=>r.struct.generator.all()},none:{"@desc":"No atoms (empty selection)",map:()=>r.struct.generator.empty()},hydrogens:{"@desc":"All hydrogen atoms currently loaded into PyMOL",abbr:["hydro","h."],map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.eq([r.acp("elementSymbol"),r.es("H")])})},hetatm:{"@desc":"All atoms loaded from Protein Data Bank HETATM records",abbr:["het"],map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.eq([r.ammp("isHet"),!0])})},visible:{"@desc":"All atoms in enabled objects with at least one visible representation",abbr:["v."]},polymer:{"@desc":"All atoms on the polymer (not het). Finds atoms with residue identifiers matching a known polymer, such a peptide and DNA.",abbr:["pol."],map:()=>r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.nucleic.concat(i.protein)),r.ammp("label_comp_id")])})},sidechain:{"@desc":"Polymer non-backbone atoms (new in PyMOL 1.6.1)",abbr:["sc."],map:()=>r.struct.modifier.exceptBy({0:r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.nucleic.concat(i.protein)),r.ammp("label_comp_id")])}),by:o()})},present:{"@desc":"All atoms with defined coordinates in the current state (used in creating movies)",abbr:["pr."]},center:{"@desc":"Pseudo-atom at the center of the scene"},origin:{"@desc":"Pseudo-atom at the origin of rotation"},enabled:{"@desc":"All enabled objects or selections from the object list."},masked:{"@desc":"All masked atoms.",abbr:["msk."]},protected:{"@desc":"All protected atoms.",abbr:["pr."]},bonded:{"@desc":"All bonded atoms",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.gr([r.struct.atomProperty.core.bondCount({flags:r.struct.type.bondFlags(["covalent","metallic","sulfide"])}),0])})},donors:{"@desc":"All hydrogen bond donor atoms.",abbr:["don."]},acceptors:{"@desc":"All hydrogen bond acceptor atoms.",abbr:["acc."]},fixed:{"@desc":"All fixed atoms.",abbr:["fxd."]},restrained:{"@desc":"All restrained atoms.",abbr:["rst."]},organic:{"@desc":"All atoms in non-polymer organic compounds (e.g. ligands, buffers). Finds carbon-containing molecules that do not match known polymers.",abbr:["org."],map:()=>n.asAtoms(r.struct.modifier.expandProperty({0:r.struct.modifier.union([r.struct.generator.queryInSelection({0:r.struct.generator.atomGroups({"residue-test":r.core.logic.not([r.core.set.has([r.core.type.set(i.nucleic.concat(i.protein)),r.ammp("label_comp_id")])])}),query:r.struct.generator.atomGroups({"atom-test":r.core.rel.eq([r.es("C"),r.acp("elementSymbol")])})})]),property:r.ammp("residueKey")}))},inorganic:{"@desc":"All non-polymer inorganic atoms/ions. Finds atoms in molecules that do not contain carbon and do not match any known solvent residues.",abbr:["ino."],map:()=>n.asAtoms(r.struct.modifier.expandProperty({0:r.struct.modifier.union([r.struct.filter.pick({0:r.struct.generator.atomGroups({"residue-test":r.core.logic.not([r.core.set.has([r.core.type.set(i.nucleic.concat(i.protein).concat(i.solvent)),r.ammp("label_comp_id")])]),"group-by":r.ammp("residueKey")}),test:r.core.logic.not([r.core.set.has([r.struct.atomSet.propertySet([r.acp("elementSymbol")]),r.es("C")])])})]),property:r.ammp("residueKey")}))},solvent:{"@desc":"All water molecules. The hardcoded solvent residue identifiers are currently: HOH, WAT, H20, TIP, SOL.",abbr:["sol."],map:()=>r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.solvent),r.ammp("label_comp_id")])})},guide:{"@desc":"All protein CA and nucleic acid C4*/C4",map:()=>r.struct.combinator.merge([r.struct.generator.atomGroups({"atom-test":r.core.rel.eq([r.atomName("CA"),r.ammp("label_atom_id")]),"residue-test":r.core.set.has([r.core.type.set(i.protein),r.ammp("label_comp_id")])}),r.struct.generator.atomGroups({"atom-test":r.core.set.has([n.atomNameSet(["C4*","C4'"]),r.ammp("label_atom_id")]),"residue-test":r.core.set.has([r.core.type.set(i.nucleic),r.ammp("label_comp_id")])})])}
4126,metals:{"@desc":"All metal atoms (new in PyMOL 1.6.1)"},backbone:{"@desc":"Polymer backbone atoms (new in PyMOL 1.6.1)",abbr:["bb."],map:()=>o()},"polymer.protein":{"@desc":"Protein (New in PyMOL 2.1)",abbr:["polymer.protein"],map:()=>r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.protein),r.ammp("label_comp_id")])})},"polymer.nucleic":{"@desc":"Nucleic Acid (New in PyMOL 2.1)",abbr:["polymer.nucleic"],map:()=>r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.nucleic),r.ammp("label_comp_id")])})}},nv}var kG;function iae(){if(kG)return ev;kG=1,Object.defineProperty(ev,"__esModule",{value:!0}),ev.transpiler=void 0;const e=At,t=e.__importStar(uc()),r=e.__importStar(fs()),i=dr().MolScriptBuilder,c=tae(),o=rae(),s=nae(),h=r.getPropertyRules(c.properties),f=t.MonadicParser.string("/");function y(d){return d.or(t.MonadicParser.of(null))}function _(d){const p={},u={};for(const m in d){const v=c.properties[m];if(!v)throw new Error(`property '${m}' not supported, value '${d[m]}'`);d[m]!==null&&(u[v.level]||(u[v.level]=[]),u[v.level].push(d[m]))}for(const m in u)p[m]=r.andExpr(u[m]);return i.struct.generator.atomGroups(p)}const g=t.MonadicParser.createLanguage({Parens:function(d){return t.MonadicParser.alt(d.Parens,d.Operator,d.Expression).wrap(t.MonadicParser.string("("),t.MonadicParser.string(")"))},Expression:function(d){return t.MonadicParser.alt(d.Keywords,d.AtomSelectionMacro.map(_),d.NamedAtomProperties,d.Pepseq,d.Rep,d.Object)},AtomSelectionMacro:function(d){return t.MonadicParser.alt(f.then(t.MonadicParser.alt(t.MonadicParser.seq(y(d.ObjectProperty).skip(f),y(h.segi).skip(f),y(h.chain).skip(f),y(h.resi).skip(f),y(h.name)).map(p=>({object:p[0],segi:p[1],chain:p[2],resi:p[3],name:p[4]})),t.MonadicParser.seq(y(d.ObjectProperty).skip(f),y(h.segi).skip(f),y(h.chain).skip(f),y(h.resi)).map(p=>({object:p[0],segi:p[1],chain:p[2],resi:p[3]})),t.MonadicParser.seq(y(d.ObjectProperty).skip(f),y(h.segi).skip(f),y(h.chain)).map(p=>({object:p[0],segi:p[1],chain:p[2]})),t.MonadicParser.seq(y(d.ObjectProperty).skip(f),y(h.segi)).map(p=>({object:p[0],segi:p[1]})),t.MonadicParser.seq(y(d.ObjectProperty)).map(p=>({object:p[0]})))),t.MonadicParser.alt(t.MonadicParser.seq(y(d.ObjectProperty).skip(f),y(h.segi).skip(f),y(h.chain).skip(f),y(h.resi).skip(f),y(h.name)).map(p=>({object:p[0],segi:p[1],chain:p[2],resi:p[3],name:p[4]})),t.MonadicParser.seq(y(h.segi).skip(f),y(h.chain).skip(f),y(h.resi).skip(f),y(h.name)).map(p=>({segi:p[0],chain:p[1],resi:p[2],name:p[3]})),t.MonadicParser.seq(y(h.chain).skip(f),y(h.resi).skip(f),y(h.name)).map(p=>({chain:p[0],resi:p[1],name:p[2]})),t.MonadicParser.seq(y(h.resi).skip(f),y(h.name)).map(p=>({resi:p[0],name:p[1]}))))},NamedAtomProperties:function(){return t.MonadicParser.alt(...r.getNamedPropertyRules(c.properties))},Keywords:()=>t.MonadicParser.alt(...r.getKeywordRules(s.keywords)),ObjectProperty:()=>{const d=r.getReservedWords(c.properties,s.keywords,o.operators).sort(r.strLenSortFn).map(r.escapeRegExp).join("|");return t.MonadicParser.regexp(new RegExp(`(?!(${d}))[A-Z0-9_]+`,"i"))},Object:d=>d.ObjectProperty.notFollowedBy(f).map(p=>{throw new Error(`property 'object' not supported, value '${p}'`)}),Pepseq:()=>t.MonadicParser.regexp(/(PEPSEQ|ps\.)\s+([a-z]+)/i,2).map(r.makeError("operator 'pepseq' not supported")),Rep:()=>t.MonadicParser.regexp(/REP\s+(lines|spheres|mesh|ribbon|cartoon|sticks|dots|surface|labels|extent|nonbonded|nb_spheres|slice|extent|slice|dashes|angles|dihedrals|cgo|cell|callback|everything)/i,1).map(r.makeError("operator 'rep' not supported")),Operator:function(d){return r.combineOperators(o.operators,t.MonadicParser.alt(d.Parens,d.Expression,d.Operator))},Query:function(d){return t.MonadicParser.alt(d.Operator,d.Parens,d.Expression).trim(t.MonadicParser.optWhitespace)}}),a=d=>g.Query.tryParse(d);return ev.transpiler=a,ev}var iv={},aA={},FG;function kQ(){return FG||(FG=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.properties=e.sstrucDict=void 0,e.sstrucMap=s;const r=dr().MolScriptBuilder,n=/[-+]?[0-9]*\.?[0-9]+/,i=/[+]?[0-9]+/,c=/[-+]?[0-9]+/;function o(h){return h}
4126e.sstrucDict={T:"turn",E:"sheet",B:"strand",H:"alpha",G:"3-10",I:"pi",C:"none"};function s(h){return r.struct.type.secondaryStructureFlags([e.sstrucDict[h.toUpperCase()]||"none"])}e.properties={name:{"@desc":"str    atom name","@examples":["name CA"],regex:/[a-zA-Z0-9]+/,map:r.atomName,level:"atom-test",property:r.ammp("label_atom_id")},type:{"@desc":"str    atom type","@examples":["type C3"],isUnsupported:!0,regex:/[a-zA-Z0-9]+/,map:o,level:"atom-test"},index:{"@desc":"num    the atom number, starting at 0","@examples":["index 10"],isNumeric:!0,regex:i,map:h=>parseInt(h)-1,level:"atom-test",property:r.ammp("id")},serial:{"@desc":"num    the atom number, starting at 1","@examples":["serial 11"],isNumeric:!0,regex:i,map:h=>parseInt(h),level:"atom-test",property:r.ammp("id")},atomicnumber:{"@desc":"num    atomic number (0 if undefined)","@examples":["atomicnumber 13"],isNumeric:!0,regex:i,map:h=>parseInt(h),level:"atom-test",property:r.acp("atomicNumber")},element:{"@desc":'str  atomic element symbol string ("X" if undefined)',"@examples":["element N"],regex:/[a-zA-Z0-9]{1,3}/,map:h=>r.es(h),level:"atom-test",property:r.acp("elementSymbol")},altloc:{"@desc":"str  alternate location/conformation identifier","@examples":["altloc C"],regex:/[a-zA-Z0-9]+/,map:o,level:"atom-test",property:r.ammp("label_alt_id")},chain:{"@desc":"str  the one-character chain identifier","@examples":["chain A"],regex:/[a-zA-Z0-9]+/,map:o,level:"residue-test",property:r.ammp("auth_asym_id")},residue:{"@desc":"num  a set of connected atoms with the same residue number","@examples":["residue < 11","residue 11"],isNumeric:!0,regex:c,map:h=>parseInt(h),level:"residue-test",property:r.ammp("auth_seq_id")},fragment:{"@desc":"num  a set of connected residues","@examples":["fragment 42"],isUnsupported:!0,isNumeric:!0,regex:c,map:h=>parseInt(h),level:"residue-test"},pfrag:{"@desc":"num  a set of connected protein residues","@examples":["pfrag 42"],isUnsupported:!0,isNumeric:!0,regex:c,map:h=>parseInt(h),level:"residue-test"},nfrag:{"@desc":"num  a set of connected nucleic residues","@examples":["nfrag 42"],isUnsupported:!0,isNumeric:!0,regex:c,map:h=>parseInt(h),level:"residue-test"},sequence:{"@desc":"str  a sequence given by one letter names","@examples":["sequence PGATTACA"],isUnsupported:!0,regex:/[a-zA-Z0-9]+/,map:o,level:"residue-test"},numbonds:{"@desc":"num  number of bonds","@examples":["numbonds = 2","numbonds >= 3"],isNumeric:!0,regex:i,map:h=>parseInt(h),level:"atom-test",property:r.acp("bondCount")},resname:{"@desc":"str  residue name","@examples":["resname ALA"],regex:/[a-zA-Z0-9]+/,map:o,level:"residue-test",property:r.ammp("auth_comp_id")},resid:{"@desc":"num  residue id","@examples":["resid 42"],isNumeric:!0,regex:c,map:h=>parseInt(h),level:"residue-test",property:r.ammp("auth_seq_id")},segname:{"@desc":"str  segment name","@examples":["segname B"],regex:/[a-zA-Z0-9]+/,map:o,level:"residue-test",property:r.ammp("label_asym_id")},x:{"@desc":"float  x coordinate","@examples":["x 42"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.acp("x")},y:{"@desc":"float  y coordinate","@examples":["y > 1.7"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.acp("y")},z:{"@desc":"float  z coordinate","@examples":["z < 11","z > -21"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.acp("z")}
4126,radius:{"@desc":"float  atomic radius","@examples":["radius > 1.3"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.acp("vdw")},mass:{"@desc":"float  atomic mass","@examples":["mass > 2"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.acp("mass")},charge:{"@desc":"float  atomic charge","@examples":["charge > 0","charge 1"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.ammp("pdbx_formal_charge")},beta:{"@desc":"float  temperature factor","@examples":["beta < 20","beta > 35"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.ammp("B_iso_or_equiv")},occupancy:{"@desc":"float  occupancy","@examples":["occupancy 1","occupancy < 1"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.ammp("occupancy")},user:{"@desc":"float  time-varying user-specified value","@examples":["user < 0.1"],isUnsupported:!0,isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test"},rasmol:{"@desc":"str  translates Rasmol selection string to VMD","@examples":["rasmol 'all'"],isUnsupported:!0,regex:/[^']*/,map:o,level:"atom-test"},structure:{"@desc":"str  single letter name for the secondary structure","@examples":["structure H","structure H E"],regex:/T|E|B|H|G|I|C/i,map:s,level:"atom-test",property:r.ammp("secondaryStructureFlags")},phi:{"@desc":"float  phi backbone conformational angles","@examples":["phi < 160"],isUnsupported:!0,isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"residue-test"},psi:{"@desc":"float  psi backbone conformational angles","@examples":["psi < 160"],isUnsupported:!0,isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"residue-test"},ufx:{"@desc":"num  force to apply in the x coordinate","@examples":["ufx 1"],isUnsupported:!0,isNumeric:!0,regex:n,map:h=>parseInt(h),level:"atom-test"},ufy:{"@desc":"num  force to apply in the y coordinate","@examples":["ufy 1"],isUnsupported:!0,isNumeric:!0,regex:n,map:h=>parseInt(h),level:"atom-test"},ufz:{"@desc":"num  force to apply in the z coordinate","@examples":["ufz 1"],isUnsupported:!0,isNumeric:!0,regex:n,map:h=>parseInt(h),level:"atom-test"}}})(aA)),aA}var av={},LG;function aae(){if(LG)return av;LG=1,Object.defineProperty(av,"__esModule",{value:!0}),av.operators=void 0;const e=At,t=e.__importStar(uc()),r=e.__importStar(fs()),i=dr().MolScriptBuilder,c=kQ(),o=Object.keys(c.properties).sort(r.strLenSortFn).filter(s=>!c.properties[s].isUnsupported).join("|");return av.operators=[{"@desc":"Selects atoms that are not included in s1.","@examples":["not protein"],name:"not",type:r.prefix,rule:t.MonadicParser.regexp(/NOT/i).skip(t.MonadicParser.whitespace),map:(s,h)=>r.invertExpr(h)},{"@desc":"Selects atoms within a specified distance of a selection","@examples":["within 5 of name FE"],name:"within",type:r.prefix,rule:r.prefixOp(/WITHIN\s+([-+]?[0-9]*\.?[0-9]+)\s+OF/i,1).map(s=>parseFloat(s)),map:(s,h)=>i.struct.modifier.includeSurroundings({0:h,radius:s})},{"@desc":"Exclusive within, equivalent to (within 3 of X) and not X","@examples":["exwithin 10 of resname HEM"],name:"exwithin",type:r.prefix,rule:r.prefixOp(/EXWITHIN\s+([-+]?[0-9]*\.?[0-9]+)\s+OF/i,1).map(s=>parseFloat(s)),map:(s,h)=>i.struct.modifier.exceptBy({0:i.struct.modifier.includeSurroundings({0:h,radius:s}),by:h})},{"@desc":"Selects atoms which have the same keyword as the atoms in a given selection","@examples":["same resid as name FE"],name:"same",type:r.prefix,rule:r.prefixOp(new RegExp(`SAME\\s+(${o})\\s+AS`,"i"),1).map(s=>c.properties[s].property),map:(s,h)=>i.struct.filter.withSameAtomProperties({0:i.struct.generator.all(),source:h,property:s})},{"@desc":"Selects atoms included in both s1 and s2.","@examples":["backbone and protein"],name:"and",type:r.binaryLeft,rule:t.MonadicParser.alt(r.infixOp(/AND/i),t.MonadicParser.whitespace),map:(s,h,f)=>i.struct.modifier.intersectBy({0:h,by:f})},{"@desc":"Selects atoms included in either s1 or s2.","@examples":["water or protein"],name:"or",type:r.binaryLeft,rule:r.infixOp(/OR/i),map:(s,h,f)=>i.struct.combinator.merge([h,f])}],av}var ov={},NG;function oae(){if(NG)return ov;
4126NG=1,Object.defineProperty(ov,"__esModule",{value:!0}),ov.keywords=void 0;const t=At.__importStar(fs()),n=dr().MolScriptBuilder;function i(){return n.struct.filter.pick({0:n.struct.generator.atomGroups({"group-by":n.ammp("residueKey")}),test:n.core.set.isSubset([t.atomNameSet(["C","N","CA","O"]),n.ammpSet("label_atom_id")])})}function c(){return n.struct.filter.pick({0:n.struct.generator.atomGroups({"group-by":n.ammp("residueKey")}),test:n.core.logic.and([n.core.set.isSubset([t.atomNameSet(["P"]),n.ammpSet("label_atom_id")]),n.core.logic.or([n.core.set.isSubset([t.atomNameSet(["O3'","C3'","C4'","C5'","O5'"]),n.ammpSet("label_atom_id")]),n.core.set.isSubset([t.atomNameSet(["O3*","C3*","C4*","C5*","O5*"]),n.ammpSet("label_atom_id")])])])})}function o(){return n.struct.combinator.merge([n.struct.generator.queryInSelection({0:i(),query:n.struct.generator.atomGroups({"atom-test":n.core.set.has([t.atomNameSet(h.protein),n.ammp("label_atom_id")])})}),n.struct.generator.queryInSelection({0:c(),query:n.struct.generator.atomGroups({"atom-test":n.core.set.has([t.atomNameSet(h.nucleic),n.ammp("label_atom_id")])})})])}function s(y){return n.struct.generator.atomGroups({"residue-test":n.core.flags.hasAll([n.ammp("secondaryStructureFlags"),n.struct.type.secondaryStructureFlags(y)])})}const h={nucleic:["P","O3'","O5'","C5'","C4'","C3'","OP1","OP2","O3*","O5*","C5*","C4*","C3*"],protein:["C","N","CA","O"]},f={acidic:["ASP","GLU"],aliphatic:["ALA","GLY","ILE","LEU","VAL"],aromatic:["HIS","PHE","TRP","TYR"],at:["ADA","A","THY","T"],basic:["ARG","HIS","LYS"],buried:["ALA","LEU","VAL","ILE","PHE","CYS","MET","TRP"],cg:["CYT","C","GUA","G"],cyclic:["HIS","PHE","PRO","TRP","TYR"],hydrophobic:["ALA","LEU","VAL","ILE","PRO","PHE","MET","TRP"],medium:["VAL","THR","ASP","ASN","PRO","CYS","ASX","PCA","HYP"],neutral:["VAL","PHE","GLN","TYR","HIS","CYS","MET","TRP","ASX","GLX","PCA","HYP"],purine:["ADE","A","GUA","G"],pyrimidine:["CYT","C","THY","T","URI","U"],small:["ALA","GLY","SER"],water:["H2O","HH0","OHH","HOH","OH2","SOL","WAT","TIP","TIP2","TIP3","TIP4"]};return ov.keywords={all:{"@desc":"everything",map:()=>n.struct.generator.all()},none:{"@desc":"nothing",map:()=>n.struct.generator.empty()},protein:{"@desc":"a residue with atoms named C, N, CA, and O",map:()=>i()},nucleic:{"@desc":"a residue with atoms named P, O1P, O2P and either O3', C3', C4', C5', O5' or O3*, C3*, C4*, C5*, O5*. This definition assumes that the base is phosphorylated, an assumption which will be corrected in the future.",map:()=>c()},backbone:{"@desc":"the C, N, CA, and O atoms of a protein and the equivalent atoms in a nucleic acid.",map:()=>o()},sidechain:{"@desc":"non-backbone atoms and bonds",map:()=>t.invertExpr(o())},water:{"@desc":"all atoms with the resname H2O, HH0, OHH, HOH, OH2, SOL, WAT, TIP, TIP2, TIP3 or TIP4",abbr:["waters"],map:()=>t.resnameExpr(f.water)},at:{"@desc":"residues named ADA A THY T",map:()=>t.resnameExpr(f.at)},acidic:{"@desc":"residues named ASP GLU",map:()=>t.resnameExpr(f.acidic)},acyclic:{"@desc":'"protein and not cyclic"',map:()=>n.struct.modifier.intersectBy({0:i(),by:t.invertExpr(t.resnameExpr(f.cyclic))})},aliphatic:{"@desc":"residues named ALA GLY ILE LEU VAL",map:()=>t.resnameExpr(f.aliphatic)},alpha:{"@desc":"atom's residue is an alpha helix",map:()=>s(["alpha"])},amino:{"@desc":"a residue with atoms named C, N, CA, and O",map:()=>i()},aromatic:{"@desc":"residues named HIS PHE TRP TYR",map:()=>t.resnameExpr(f.aromatic)},basic:{"@desc":"residues named ARG HIS LYS",map:()=>t.resnameExpr(f.basic)},bonded:{"@desc":"atoms for which numbonds > 0",map:()=>t.asAtoms(n.struct.filter.pick({0:n.struct.modifier.includeConnected({0:n.struct.generator.all(),"bond-test":n.core.flags.hasAny([n.struct.bondProperty.flags(),n.struct.type.bondFlags(["covalent","metallic","sulfide"])])}),test:n.core.rel.gr([n.struct.atomSet.atomCount(),1])}))},buried:{"@desc":"residues named ALA LEU VAL ILE PHE CYS MET TRP",map:()=>t.resnameExpr(f.buried)},cg:{"@desc":"residues named CYT C GUA G",map:()=>t.resnameExpr(f.cg)},charged:{"@desc":'"basic or acidic"',map:()=>t.resnameExpr(f.basic.concat(f.acidic))},cyclic:{"@desc":"residues named HIS PHE PRO TRP TYR",map:()=>t.resnameExpr(f.cyclic)},hetero:{"@desc":'"not (protein or nucleic)"',map:()=>t.invertExpr(n.struct.combinator.merge([i(),c()]))},hydrogen:{"@desc":'name "[0-9]?H.*"',map:()=>n.struct.generator.atomGroups({"atom-test":n.core.str.match([n.core.type.regex(["^[0-9]?[H].*$","i"]),n.core.type.str([n.ammp("label_atom_id")])])})},large:{"@desc":'"protein and not (small or medium)"',map:()=>n.struct.modifier.intersectBy({0:i(),by:t.invertExpr(t.resnameExpr(f.small.concat(f.medium)))})},medium:{"@desc":"residues named VAL THR ASP ASN PRO CYS ASX PCA HYP",map:()=>t.resnameExpr(f.medium)},neutral:{"@desc":"residues named VAL PHE GLN TYR HIS CYS MET TRP ASX GLX PCA HYP",map:()=>t.resnameExpr(f.neutral)},hydrophobic:{"@desc":"hydrophobic resname ALA LEU VAL ILE PRO PHE MET TRP",map:()=>t.resnameExpr(f.hydrophobic)},polar:{"@desc":'"protein and not hydrophobic"',map:()=>n.struct.modifier.intersectBy({0:i(),by:t.invertExpr(t.resnameExpr(f.hydrophobic))})},purine:{"@desc":"residues named ADE A GUA G",map:()=>t.resnameExpr(f.purine)},pyrimidine:{"@desc":"residues named CYT C THY T URI U",map:()=>t.resnameExpr(f.pyrimidine)},small:{"@desc":"residues named ALA GLY SER",map:()=>t.resnameExpr(f.small)},surface:{"@desc":'"protein and not buried"',map:()=>n.struct.modifier.intersectBy({0:i(),by:t.invertExpr(t.resnameExpr(f.buried))})}
4126,alpha_helix:{"@desc":"atom's residue is in an alpha helix",map:()=>s(["alpha"])},pi_helix:{"@desc":"atom's residue is in a pi helix",map:()=>s(["pi"])},helix_3_10:{"@desc":"atom's residue is in a 3-10 helix",map:()=>s(["3-10"])},helix:{"@desc":"atom's residue is in an alpha or pi or 3-10 helix",map:()=>s(["helix"])},extended_beta:{"@desc":"atom's residue is a beta sheet",map:()=>s(["sheet"])},bridge_beta:{"@desc":"atom's residue is a beta sheet",map:()=>s(["strand"])},sheet:{"@desc":"atom's residue is a beta sheet",map:()=>s(["beta"])},turn:{"@desc":"atom's residue is in a turn conformation",map:()=>s(["turn"])},coil:{"@desc":"atom's residue is in a coil conformation",map:()=>n.struct.modifier.intersectBy({0:i(),by:s(["none"])})}},ov}var sv={},qG;function sae(){if(qG)return sv;qG=1,Object.defineProperty(sv,"__esModule",{value:!0}),sv.functions=void 0;const t=dr().MolScriptBuilder;return sv.functions={sqr:{"@desc":"square of x","@examples":["sqr(2)"],map:r=>t.core.math.pow([r,2])},sqrt:{"@desc":"square root of x","@examples":["sqrt(2)"],map:r=>t.core.math.sqrt([r])},abs:{"@desc":"absolute value of x","@examples":["abs(2)"],map:r=>t.core.math.abs([r])},floor:{"@desc":"largest integer not greater than x","@examples":["floor(2)"],map:r=>t.core.math.floor([r])},ceil:{"@desc":"smallest integer not less than x","@examples":["ceil(2)"],map:r=>t.core.math.ceil([r])},sin:{"@desc":"sine of x","@examples":["sin(2)"],map:r=>t.core.math.sin([r])},cos:{"@desc":"cosine of x","@examples":["cos(2)"],map:r=>t.core.math.cos([r])},tan:{"@desc":"tangent of x","@examples":["tan(2)"],map:r=>t.core.math.tan([r])},atan:{"@desc":"arctangent of x","@examples":["atan(2)"],map:r=>t.core.math.atan([r])},asin:{"@desc":"arcsin of x","@examples":["asin(2)"],map:r=>t.core.math.asin([r])},acos:{"@desc":"arccos of x","@examples":["acos(2)"],map:r=>t.core.math.acos([r])},sinh:{"@desc":"hyperbolic sine of x","@examples":["sinh(2)"],map:r=>t.core.math.sinh([r])},cosh:{"@desc":"hyperbolic cosine of x","@examples":["cosh(2)"],map:r=>t.core.math.cosh([r])},tanh:{"@desc":"hyperbolic tangent of x","@examples":["tanh(2)"],map:r=>t.core.math.tanh([r])},exp:{"@desc":"e to the power x","@examples":["exp(2)"],map:r=>t.core.math.exp([r])},log:{"@desc":"natural log of x","@examples":["log(2)"],map:r=>t.core.math.log([r])},log10:{"@desc":"log base 10 of x","@examples":["log10(2)"],map:r=>t.core.math.log10([r])}},sv}var UG;function cae(){if(UG)return iv;UG=1,Object.defineProperty(iv,"__esModule",{value:!0}),iv.transpiler=void 0;const e=At,t=e.__importStar(uc()),r=e.__importStar(fs()),i=dr().MolScriptBuilder,c=kQ(),o=aae(),s=oae(),h=sae(),f=[{"@desc":"multiplication, division","@examples":[],name:"mul-div",type:r.binaryLeft,rule:t.MonadicParser.regexp(/\s*(\*|\/)\s*/,1),map:(g,a,d)=>{switch(g){case"*":return i.core.math.mult([a,d]);case"/":return i.core.math.div([a,d]);default:throw new Error(`value operator '${g}' not supported`)}}},{"@desc":"addition, substraction","@examples":[],name:"add-sub",type:r.binaryLeft,rule:t.MonadicParser.regexp(/\s*(-|\+)\s*/,1),map:(g,a,d)=>{switch(g){case"-":return i.core.math.sub([a,d]);case"+":return i.core.math.add([a,d]);default:throw new Error(`value operator '${g}' not supported`)}}},{"@desc":"value comparisons","@examples":[],name:"comparison",type:r.binaryLeft,rule:t.MonadicParser.alt(t.MonadicParser.regexp(/\s*(=~|==|>=|<=|=|!=|>|<)\s*/,1),t.MonadicParser.whitespace.result("=")),map:(g,a,d)=>{let p;if(a.head!==void 0?(a.head.name==="structure-query.atom-property.macromolecular.secondary-structure-flags"&&(p=i.core.flags.hasAny([a,(0,c.sstrucMap)(d)])),a.head.name==="core.type.regex"&&(p=i.core.str.match([a,i.core.type.str([d])]))):d.head!==void 0?(d.head.name==="structure-query.atom-property.macromolecular.secondary-structure-flags"&&(p=i.core.flags.hasAny([d,(0,c.sstrucMap)(a)])),d.head.name==="core.type.regex"&&(p=i.core.str.match([d,i.core.type.str([a])]))):g==="=~"&&(a.head?p=i.core.str.match([i.core.type.regex([`^${d}$`,"i"]),i.core.type.str([a])]):p=i.core.str.match([i.core.type.regex([`^${a}$`,"i"]),i.core.type.str([d])])),!p)switch(a.head&&(d=r.wrapValue(a,d)),d.head&&(a=r.wrapValue(d,a)),g){case"=":case"==":p=i.
4126core.rel.eq([a,d]);break;case"!=":p=i.core.rel.neq([a,d]);break;case">":p=i.core.rel.gr([a,d]);break;case"<":p=i.core.rel.lt([a,d]);break;case">=":p=i.core.rel.gre([a,d]);break;case"<=":p=i.core.rel.lte([a,d]);break;default:throw new Error(`value operator '${g}' not supported`)}return i.struct.generator.atomGroups({"atom-test":p})}}],y=t.MonadicParser.createLanguage({Parens:function(g){return t.MonadicParser.alt(g.Parens,g.Operator,g.Expression).wrap(t.MonadicParser.string("("),t.MonadicParser.string(")"))},Expression:function(g){return t.MonadicParser.alt(g.RangeListProperty,g.ValueQuery,g.Keywords)},NamedAtomProperties:function(){return t.MonadicParser.alt(...r.getNamedPropertyRules(c.properties))},Keywords:()=>t.MonadicParser.alt(...r.getKeywordRules(s.keywords)),ValueRange:function(g){return t.MonadicParser.seq(g.Value.skip(t.MonadicParser.regexp(/\s+TO\s+/i)),g.Value).map(a=>({range:a}))},RangeListProperty:function(g){return t.MonadicParser.seq(t.MonadicParser.alt(...r.getPropertyNameRules(c.properties,/\s/)).skip(t.MonadicParser.whitespace),t.MonadicParser.alt(g.ValueRange,g.Value).sepBy1(t.MonadicParser.whitespace)).map(a=>{const[d,p]=a,u=[],m=[];p.forEach(C=>{C.range?m.push(i.core.rel.inRange([d,C.range[0],C.range[1]])):u.push(r.wrapValue(d,C,c.sstrucDict))});const v=r.orExpr(m),b=r.valuesTest(d,u);let P;return v&&b?P=i.core.logic.or([v,b]):P=v||b,i.struct.generator.atomGroups({[r.testLevel(d)]:P})})},Operator:function(g){return r.combineOperators(o.operators,t.MonadicParser.alt(g.Parens,g.Expression,g.ValueQuery))},Query:function(g){return t.MonadicParser.alt(g.Operator,g.Parens,g.Expression).trim(t.MonadicParser.optWhitespace)},Number:function(){return t.MonadicParser.regexp(/-?(0|[1-9][0-9]*)([.][0-9]+)?([eE][+-]?[0-9]+)?/).map(Number).desc("number")},String:function(){const g=r.getReservedWords(c.properties,s.keywords,o.operators).sort(r.strLenSortFn).map(r.escapeRegExp).join("|");return t.MonadicParser.alt(t.MonadicParser.regexp(new RegExp(`(?!(${g}))[A-Z0-9_]+`,"i")),t.MonadicParser.regexp(/'((?:[^"\\]|\\.)*)'/,1),t.MonadicParser.regexp(/"((?:[^"\\]|\\.)*)"/,1).map(a=>i.core.type.regex([`^${a}$`,"i"]))).desc("string")},Value:function(g){return t.MonadicParser.alt(g.Number,g.String)},ValueParens:function(g){return t.MonadicParser.alt(g.ValueParens,g.ValueOperator,g.ValueExpressions).wrap(t.MonadicParser.string("("),t.MonadicParser.string(")"))},ValuePropertyNames:function(){return t.MonadicParser.alt(...r.getPropertyNameRules(c.properties,/=~|==|>=|<=|=|!=|>|<|\)|\s|\+|-|\*|\//i))},ValueOperator:function(g){return r.combineOperators(f,t.MonadicParser.alt(g.ValueParens,g.ValueExpressions))},ValueExpressions:function(g){return t.MonadicParser.alt(g.ValueFunctions,g.Value,g.ValuePropertyNames)},ValueFunctions:function(g){return t.MonadicParser.alt(...r.getFunctionRules(h.functions,g.ValueOperator))},ValueQuery:function(g){return t.MonadicParser.alt(g.ValueOperator.map(a=>{if(!a.head.name||!a.head.name.startsWith("structure-query.generator"))throw new Error(`values must be part of an comparison, value '${a}'`);return a}))}}),_=g=>y.Query.tryParse(g);return iv.transpiler=_,iv}var jG;function uae(){if(jG)return Y1;jG=1,Object.defineProperty(Y1,"__esModule",{value:!0}),Y1._transpiler=void 0;const e=eae(),t=iae(),r=cae();return Y1._transpiler={pymol:t.transpiler,vmd:r.transpiler,jmol:e.transpiler},Y1}var GG;function lae(){if(GG)return AP;GG=1,Object.defineProperty(AP,"__esModule",{value:!0}),AP.parse=r;const t=uae()._transpiler;function r(n,i){try{return t[n](i)}catch(c){throw console.error(c.message),c}}return AP}var zG;function va(){if(zG)return K1;zG=1,Object.defineProperty(K1,"__esModule",{value:!0}),K1.Script=s;const e=Kie(),t=Yie(),r=lae(),n=Ke(),i=LS(),c=dr(),o=Gt();function s(h,f){return{expression:h,language:f}}return(function(h){h.Info={"mol-script":"Mol-Script",pymol:"PyMOL",vmd:"VMD",jmol:"Jmol"};function f(p){return!!p&&typeof p.expression=="string"&&!!p.language}h.is=f;function y(p,u){return p.language===u.language&&p.expression===u.expression}h.areEqual=y;function _(p){switch(p.language){case"mol-script":const u=(0,t.parseMolScript)(p.expression);if(u.length===0)throw new Error("No query");return(0,e.transpileMolScript)(u[0]);
4126case"pymol":case"jmol":case"vmd":return(0,r.parse)(p.language,p.expression);default:(0,o.assertUnreachable)(p.language)}}h.toExpression=_;function g(p){const u=_(p);return(0,i.compile)(u)}h.toQuery=g;function a(p,u){const v=g(p)(new n.QueryContext(u));return n.StructureSelection.toLociWithSourceUnits(v)}h.toLoci=a;function d(p,u,m){const v=typeof p=="function"?p(c.MolScriptBuilder):p;return(0,i.compile)(v)(new n.QueryContext(u,m))}h.getStructureSelection=d})(s||(K1.Script=s={})),K1}var cv={},HG;function Dw(){if(HG)return cv;HG=1,Object.defineProperty(cv,"__esModule",{value:!0}),cv.RootStructureDefinition=void 0;const e=Ke(),t=ui(),r=rt(),n=Ne(),i=Ge(),c=tI(),o=jt(),s=Qn(),h=Gt(),f={dynamicBonds:n.ParamDefinition.Optional(n.ParamDefinition.Boolean(!1,{description:"Ensure bonds are recalculated upon model changes. Also enables calculation of inter-unit bonds in water molecules and ions."}))};var y;return(function(_){function g(b,P){const C=b&&s.ModelSymmetry.Provider.get(b),l=C?C.assemblies.map(D=>[D.id,`${D.id}: ${(0,t.stringToWords)(D.details)}`]):[],S=C?!r.SpacegroupCell.isZero(C.spacegroup.cell):!0,T=[];if(C){const{operators:D}=C.spacegroup;for(let V=0,R=D.length;V<R;V++)T.push([V,`${V+1}: ${r.Spacegroup.getOperatorXyz(D[V])}`])}const A=[];b&&b.properties.structAsymMap.forEach(D=>{const V=D.id===D.auth_id?D.id:`${D.id} [auth ${D.auth_id}]`;A.push([D.id,V])});const x={auto:n.ParamDefinition.Group(f),model:n.ParamDefinition.Group(f),assembly:n.ParamDefinition.Group({id:n.ParamDefinition.Optional(b?n.ParamDefinition.Select(l.length?l[0][0]:"",l,{label:"Asm Id",description:"Assembly Id"}):n.ParamDefinition.Text("",{label:"Asm Id",description:"Assembly Id (use empty for the 1st assembly)"})),...f},{isFlat:!0}),"symmetry-mates":n.ParamDefinition.Group({radius:n.ParamDefinition.Numeric(5,{min:0,max:50,step:1}),...f},{isFlat:!0}),symmetry:n.ParamDefinition.Group({ijkMin:n.ParamDefinition.Vec3(i.Vec3.create(-1,-1,-1),{step:1},{label:"Min IJK",fieldLabels:{x:"I",y:"J",z:"K"}}),ijkMax:n.ParamDefinition.Vec3(i.Vec3.create(1,1,1),{step:1},{label:"Max IJK",fieldLabels:{x:"I",y:"J",z:"K"}}),...f},{isFlat:!0}),"symmetry-assembly":n.ParamDefinition.Group({generators:n.ParamDefinition.ObjectList({operators:n.ParamDefinition.ObjectList({index:n.ParamDefinition.Select(0,T),shift:n.ParamDefinition.Vec3((0,i.Vec3)(),{step:1},{label:"IJK",fieldLabels:{x:"I",y:"J",z:"K"}})},D=>`${D.index+1}_${D.shift.map(V=>V+5).join("")}`,{defaultValue:[]}),asymIds:n.ParamDefinition.MultiSelect([],A)},D=>`${D.asymIds.length} asym ids, ${D.operators.length} operators`,{defaultValue:[]}),...f},{isFlat:!0})},M=[];return P==="auto"&&M.push(["auto","Auto"]),M.push(["model","Model"]),l.length>0&&M.push(["assembly","Assembly"]),S&&(M.push(["symmetry-mates","Symmetry Mates"]),M.push(["symmetry","Symmetry (indices)"]),M.push(["symmetry-assembly","Symmetry (assembly)"])),{type:n.ParamDefinition.MappedStatic(P||"model",x,{options:M})}}_.getParams=g;function a(b,P){return!(P.name==="symmetry-assembly"||P.name==="symmetry"&&b.name==="symmetry")}_.canAutoUpdate=a;async function d(b,P,C,l,S){let T;const A=s.ModelSymmetry.Provider.get(C);!l&&A&&A.assemblies.length!==0&&(l=A.assemblies[0].id),!A||A.assemblies.length===0?b.log.warn(`Model '${C.entryId}' has no assembly, returning model structure.`):(T=c.Symmetry.findAssembly(C,l||""),T||b.log.warn(`Model '${C.entryId}' has no assembly called '${l}', returning model structure.`));const x=e.Structure.ofModel(C,S);if(!T){const V={label:"Model",description:e.Structure.elementDescription(x)};return new o.PluginStateObject.Molecule.Structure(x,V)}l=T.id;const M=await e.StructureSymmetry.buildAssembly(x,l).runInContext(P),D={label:`Assembly ${l}`,description:e.Structure.elementDescription(M)};return new o.PluginStateObject.Molecule.Structure(M,D)}async function p(b,P,C,l,S){const T=e.Structure.ofModel(P,S),A=await e.StructureSymmetry.buildSymmetryRange(T,C,l).runInContext(b),x={label:`Symmetry [${C}] to [${l}]`,description:e.Structure.elementDescription(A)};return new o.PluginStateObject.Molecule.Structure(A,x)}async function u(b,P,C,l){const S=e.Structure.ofModel(P,l),T=await e.StructureSymmetry.builderSymmetryMates(S,C).runInContext(b),A={label:"Symmetry Mates",description:e.Structure.elementDescription(T)};return new o.PluginStateObject.Molecule.Structure(T,A)}async function m(b,P,C,l,S){const T=e.Structure.ofModel(P,S),A=await e.StructureSymmetry.buildSymmetryAssembly(T,C,l).runInContext(b),x={label:"Symmetry Assembly",description:e.Structure.elementDescription(A)};return new o.PluginStateObject.Molecule.Structure(A,x)}async function v(b,P,C,l){const S=l?.params,T=s.ModelSymmetry.Provider.get(C);if(!T||!l||l.name==="model"){const A=e.Structure.ofModel(C,S);return new o.PluginStateObject.Molecule.Structure(A,{label:"Model",description:e.Structure.elementDescription(A)})}if(l.name==="auto")if(T.assemblies.length===0){const A=e.Structure.ofModel(C,S);return new o.PluginStateObject.Molecule.Structure(A,{label:"Model",description:e.Structure.elementDescription(A)})}else return d(b,P,C,void 0,S);if(l.name==="assembly")return d(b,P,C,l.params.id,S);if(l.name==="symmetry")return p(P,C,l.params.ijkMin,l.params.ijkMax,S);if(l.name==="symmetry-mates")return u(P,C,l.params.radius,S);if(l.name==="symmetry-assembly")return m(P,C,l.params.generators,T,S);(0,h.assertUnreachable)(l)}_.create=v})(y||(cv.RootStructureDefinition=y={})),cv}var Ho={},uv={},WG;function FQ(){if(WG)return uv;
4126WG=1,Object.defineProperty(uv,"__esModule",{value:!0}),uv.StructureQueryHelper=void 0;const e=Ke(),t=va(),r=LS();var n;return(function(i){function c(_,g,a){return _.currentStructure!==a?!1:t.Script.is(g)?!!_.script&&t.Script.areEqual(_.script,g):_.expression===g}i.isUnchanged=c;function o(_,g){const a=t.Script.is(g)?g:void 0,d=t.Script.is(g)?t.Script.toExpression(g):g,p=(0,r.compile)(d);return{script:a,expression:d,compiled:p,originalStructure:_,currentStructure:_}}i.create=o;function s(_,g){return _.compiled(new e.QueryContext(g))}i.run=s;function h(_,g){const a=o(_,g);return{entry:a,selection:s(a,_)}}i.createAndRun=h;function f(_,g){return _.currentStructure=g,_.compiled(new e.QueryContext(g))}i.updateStructure=f;function y(_,g,a){const d=e.StructureSelection.unionStructure(g);_.label=`${a||"Selection"}`,_.description=e.Structure.elementDescription(d),_.data=d}i.updateStructureObject=y})(n||(uv.StructureQueryHelper=n={})),uv}var $G;function dae(){if($G)return Ho;$G=1,Object.defineProperty(Ho,"__esModule",{value:!0}),Ho.StructureComponentParams=Ho.StaticStructureComponentTypes=void 0,Ho.createStructureComponent=y,Ho.updateStructureComponent=_;const e=Ne(),t=dr(),r=Ke(),n=FQ(),i=jt(),c=jl(),o=Et(),s=va(),h=Gt();Ho.StaticStructureComponentTypes=["all","polymer","protein","nucleic","water","ion","lipid","branched","ligand","non-standard","coarse"];const f=()=>({type:e.ParamDefinition.MappedStatic("static",{static:e.ParamDefinition.Text("polymer"),expression:e.ParamDefinition.Value(t.MolScriptBuilder.struct.generator.all),bundle:e.ParamDefinition.Value(r.StructureElement.Bundle.Empty),script:e.ParamDefinition.Script({language:"mol-script",expression:"(sel.atom.all)"})},{isHidden:!0}),nullIfEmpty:e.ParamDefinition.Optional(e.ParamDefinition.Boolean(!0,{isHidden:!0})),label:e.ParamDefinition.Text("",{isHidden:!0})});Ho.StructureComponentParams=f;function y(g,a,d){d.source=g;let p=r.Structure.Empty,u;switch(a.type.name){case"static":{let v;switch(a.type.params){case"all":v=c.StructureSelectionQueries.all.query,u="All";break;case"polymer":v=c.StructureSelectionQueries.polymer.query,u="Polymer";break;case"protein":v=c.StructureSelectionQueries.protein.query,u="Protein";break;case"nucleic":v=c.StructureSelectionQueries.nucleic.query,u="Nucleic";break;case"water":v=r.Queries.internal.water(),u="Water";break;case"ion":v=c.StructureSelectionQueries.ion.query,u="Ion";break;case"lipid":v=c.StructureSelectionQueries.lipid.query,u="Lipid";break;case"branched":v=c.StructureSelectionQueries.branchedPlusConnected.query,u="Branched";break;case"ligand":v=c.StructureSelectionQueries.ligandPlusConnected.query,u="Ligand";break;case"non-standard":v=c.StructureSelectionQueries.nonStandardPolymer.query,u="Non-standard";break;case"coarse":v=c.StructureSelectionQueries.coarse.query,u="Coarse";break;default:(0,h.assertUnreachable)(a.type)}const b=v(new r.QueryContext(g));p=r.StructureSelection.unionStructure(b);break}case"script":case"expression":{const{selection:v,entry:b}=n.StructureQueryHelper.createAndRun(g,a.type.params);d.entry=b,p=r.StructureSelection.unionStructure(v);break}case"bundle":{if(a.type.params.hash!==g.hashCode)break;p=r.StructureElement.Bundle.toStructure(a.type.params,g);break}}if(a.nullIfEmpty&&p.elementCount===0)return o.StateObject.Null;const m={label:`${a.label||u||"Component"}`,description:r.Structure.elementDescription(p)};return new i.PluginStateObject.Molecule.Structure(p,m)}function _(g,a,d,p,u){if(d.type.name!==p.type.name)return o.StateTransformer.UpdateResult.Recreate;let m=!1;switch(p.type.name){case"static":return d.type.params!==p.type.params||!r.Structure.areEquivalent(g,u.source)?o.StateTransformer.UpdateResult.Recreate:a.data.model===g.model||!a.data.model?o.StateTransformer.UpdateResult.Unchanged:r.Model.areHierarchiesEqual(g.model,a.data.model)?(a.data=a.data.remapModel(g.model),o.StateTransformer.UpdateResult.Updated):o.StateTransformer.UpdateResult.Recreate;case"script":if(!s.Script.areEqual(d.type.params,p.type.params))return o.StateTransformer.UpdateResult.Recreate;case"expression":{if(d.type.params!==p.type.params)return o.StateTransformer.Upd
4126ateResult.Recreate;if(g===u.source)break;const v=u.entry,b=n.StructureQueryHelper.updateStructure(v,g);u.source=g,a.data=r.StructureSelection.unionStructure(b),n.StructureQueryHelper.updateStructureObject(a,b,p.label),m=!0;break}case"bundle":{if(g===u.source&&r.StructureElement.Bundle.areEqual(d.type.params,p.type.params))break;u.source=g,p.type.params.hash!==g.hashCode?(m=a.data.elementCount!==0,a.data=a.data.elementCount===0?a.data:r.Structure.Empty):(m=!0,a.data=r.StructureElement.Bundle.toStructure(p.type.params,g));break}}if(m){if(p.nullIfEmpty&&a.data.elementCount===0)return o.StateTransformer.UpdateResult.Null;a.description=r.Structure.elementDescription(a.data)}return d.label!==p.label&&(m=!0,a.label=`${p.label||a.label}`),m?o.StateTransformer.UpdateResult.Updated:o.StateTransformer.UpdateResult.Unchanged}return Ho}var Wo={},XG;function Iw(){if(XG)return Wo;XG=1,Object.defineProperty(Wo,"__esModule",{value:!0}),Wo.formalChargeMapper=c,Wo.handleAtoms=o,Wo.handleBonds=s,Wo.handleFormalCharges=h,Wo.handlePropertiesBlock=y,Wo.parseMol=g;const e=lt(),t=nt(),r=Wi(),n=Or(),i=Tr();function c(a){switch(a){case 7:return-3;case 6:return-2;case 5:return-1;case 0:return 0;case 3:return 1;case 2:return 2;case 1:return 3;case 4:return 0;default:return console.error(`Value ${a} is outside the 0-7 range, defaulting to 0.`),0}}function o(a,d){const p=n.TokenBuilder.create(a.data,d*2),u=n.TokenBuilder.create(a.data,d*2),m=n.TokenBuilder.create(a.data,d*2),v=n.TokenBuilder.create(a.data,d*2),b=n.TokenBuilder.create(a.data,d*2);for(let P=0;P<d;++P){n.Tokenizer.markLine(a);const{tokenStart:C,position:l}=a;n.Tokenizer.trim(a,C,C+10),n.TokenBuilder.addUnchecked(p,a.tokenStart,a.tokenEnd),n.Tokenizer.trim(a,C+10,C+20),n.TokenBuilder.addUnchecked(u,a.tokenStart,a.tokenEnd),n.Tokenizer.trim(a,C+20,C+30),n.TokenBuilder.addUnchecked(m,a.tokenStart,a.tokenEnd),n.Tokenizer.trim(a,C+31,C+34),n.TokenBuilder.addUnchecked(v,a.tokenStart,a.tokenEnd),n.Tokenizer.trim(a,C+36,C+39),n.TokenBuilder.addUnchecked(b,a.tokenStart,a.tokenEnd),a.position=l}return{count:d,x:(0,r.TokenColumnProvider)(p)(e.Column.Schema.float),y:(0,r.TokenColumnProvider)(u)(e.Column.Schema.float),z:(0,r.TokenColumnProvider)(m)(e.Column.Schema.float),type_symbol:(0,r.TokenColumnProvider)(v)(e.Column.Schema.str),formal_charge:(0,r.TokenColumnProvider)(b)(e.Column.Schema.int)}}function s(a,d){const p=n.TokenBuilder.create(a.data,d*2),u=n.TokenBuilder.create(a.data,d*2),m=n.TokenBuilder.create(a.data,d*2);for(let v=0;v<d;++v){n.Tokenizer.markLine(a);const{tokenStart:b,position:P}=a;n.Tokenizer.trim(a,b,b+3),n.TokenBuilder.addUnchecked(p,a.tokenStart,a.tokenEnd),n.Tokenizer.trim(a,b+3,b+6),n.TokenBuilder.addUnchecked(u,a.tokenStart,a.tokenEnd),n.Tokenizer.trim(a,b+6,b+9),n.TokenBuilder.addUnchecked(m,a.tokenStart,a.tokenEnd),a.position=P}return{count:d,atomIdxA:(0,r.TokenColumnProvider)(p)(e.Column.Schema.int),atomIdxB:(0,r.TokenColumnProvider)(u)(e.Column.Schema.int),order:(0,r.TokenColumnProvider)(m)(e.Column.Schema.int)}}function h(a,d,p){n.Tokenizer.trim(a,d+6,d+9);const u=parseInt(n.Tokenizer.getTokenString(a));for(let m=0;m<u;++m){const v=9+m*8;n.Tokenizer.trim(a,d+v,d+v+4);const b=n.Tokenizer.getTokenString(a);p.atomIdx.push(+b),n.Tokenizer.trim(a,d+v+4,d+v+8);const P=n.Tokenizer.getTokenString(a);p.charge.push(+P)}n.Tokenizer.eatLine(a)}function f(a){const d=a.trim().split(/\s+/g),p=[];for(let u=1;u<d.length;u+=2){const m=+d[u],v=+d[u+1]||0;p.push({atomIdx:m,kind:v})}return p}function y(a){const u={atomIdx:[],charge:[]};let m;for(;a.position<a.length;){const{position:b}=a;n.Tokenizer.trim(a,b+3,b+6);const P=n.Tokenizer.getTokenString(a);if(P==="END")break;switch(n.Tokenizer.eatLine(a),P){case"CHG":h(a,b,u);break;case"APO":m=f(n.Tokenizer.getTokenString(a).substring(3));break}}return{formalCharges:{atomIdx:e.Column.ofIntArray(u.atomIdx),charge:e.Column.ofIntArray(u.charge)},attachmentPoints:m}}function _(a){const d=(0,n.Tokenizer)(a),p=n.Tokenizer.readLine(d).trim(),u=n.Tokenizer.readLine(d).trim(),m=n.Tokenizer.readLine(d).trim(),v=n.Tokenizer.readLine(d),b=+v.substr(0,3),P=+v.substr(3,3),C=o(d,b),l=s(d,P),S={title:p,program:u,comment:m,atoms:C,bonds:l,...y(d)};return i.ReaderResult.success(S)}
4126function g(a){return t.Task.create("Parse Mol",async()=>_(a))}return Wo}var Vu={},KG;function LQ(){if(KG)return Vu;KG=1,Object.defineProperty(Vu,"__esModule",{value:!0}),Vu.MolFormat=void 0,Vu.getMolModels=f,Vu.trajectoryFromMol=_;const e=lt(),t=Iw(),r=dt(),n=nt(),i=ga(),c=vn(),o=Ai(),s=xi(),h=Ua();async function f(g,a,d){const{atoms:p,bonds:u,formalCharges:m}=g,v=e.Column.ofConst("MOL",g.atoms.count,e.Column.Schema.str),b=e.Column.ofConst("A",g.atoms.count,e.Column.Schema.str),P=e.Column.asArrayColumn(p.type_symbol),C=e.Column.ofConst(1,p.count,e.Column.Schema.int),l=new Int32Array(g.atoms.count);if(m.atomIdx.rowCount>0)for(let D=0;D<m.atomIdx.rowCount;D++)l[m.atomIdx.value(D)-1]=m.charge.value(D);else for(let D=0;D<g.atoms.count;D++)l[D]=(0,t.formalChargeMapper)(p.formal_charge.value(D));const S=e.Table.ofPartialColumns(c.BasicSchema.atom_site,{auth_asym_id:b,auth_atom_id:P,auth_comp_id:v,auth_seq_id:C,Cartn_x:e.Column.asArrayColumn(p.x,Float32Array),Cartn_y:e.Column.asArrayColumn(p.y,Float32Array),Cartn_z:e.Column.asArrayColumn(p.z,Float32Array),id:e.Column.range(1,p.count),label_asym_id:b,label_atom_id:P,label_comp_id:v,label_seq_id:C,label_entity_id:e.Column.ofConst("1",p.count,e.Column.Schema.str),occupancy:e.Column.ofConst(1,p.count,e.Column.Schema.float),type_symbol:P,pdbx_PDB_model_num:e.Column.ofConst(1,p.count,e.Column.Schema.int),pdbx_formal_charge:e.Column.ofIntArray(l)},p.count),T=new s.EntityBuilder;T.setNames([["MOL","Unknown Entity"]]),T.getEntityId("MOL",r.MoleculeType.Unknown,"A");const A=new o.ComponentBuilder(C,P);A.setNames([["MOL","Unknown Molecule"]]),A.add("MOL",0);const x=(0,c.createBasic)({entity:T.getEntityTable(),chem_comp:A.getChemCompTable(),atom_site:S}),M=await(0,i.createModels)(x,a??y.create(g),d);if(M.frameCount>0){const D=e.Column.ofIntArray(e.Column.mapToArray(u.atomIdxA,I=>I-1,Int32Array)),V=e.Column.ofIntArray(e.Column.mapToArray(u.atomIdxB,I=>I-1,Int32Array)),R=e.Column.asArrayColumn(u.order,Int32Array),E=h.IndexPairBonds.fromData({pairs:{indexA:D,indexB:V,order:R},count:p.count},{maxDistance:1/0});h.IndexPairBonds.Provider.set(M.representative,E)}return M}var y;(function(g){function a(p){return p?.kind==="mol"}g.is=a;function d(p){return{kind:"mol",name:p.title,data:p}}g.create=d})(y||(Vu.MolFormat=y={}));function _(g){return n.Task.create("Parse MOL",a=>f(g,void 0,a))}return Vu}var Id={},YG;function fae(){if(YG)return Id;YG=1,Object.defineProperty(Id,"__esModule",{value:!0}),Id.CifCoreFormat=void 0,Id.trajectoryFromCifCore=C;const e=lt(),t=dt(),r=nt(),n=ga(),i=vn(),c=Ai(),o=xi(),s=Ti(),h=rt(),f=Ge(),y=Qn(),_=Ua(),g=FT(),a=cc(),d=_t();function p(l){const S=l.it_number.value(0),T=l["name_h-m_full"].isDefined?l["name_h-m_full"]:l["name_h-m_alt"],A=T.value(0).replace("_"," ");return l.it_number.isDefined?(T.isDefined,S):A}function u(l){const{cell:S,space_group:T}=l,A=p(T),x=h.SpacegroupCell.create(A,f.Vec3.create(S.length_a.value(0),S.length_b.value(0),S.length_c.value(0)),f.Vec3.scale((0,f.Vec3)(),f.Vec3.create(S.angle_alpha.value(0),S.angle_beta.value(0),S.angle_gamma.value(0)),Math.PI/180));return{spacegroup:h.Spacegroup.create(x),assemblies:[],isNonStandardCrystalFrame:!1,ncsOperators:[]}}async function m(l,S,T){var A;const x=l.atom_site._rowCount,M=e.Column.ofConst("MOL",x,e.Column.Schema.str),D=e.Column.ofConst("A",x,e.Column.Schema.str),V=e.Column.ofConst(1,x,e.Column.Schema.int),R=u(l),E=R.spacegroup.cell.fromFractional,{fract_x:I,fract_y:B,fract_z:w}=l.atom_site,O=new Float32Array(x),F=new Float32Array(x),L=new Float32Array(x),U=(0,f.Vec3)();for(let K=0;K<x;++K)f.Vec3.set(U,I.value(K),B.value(K),w.value(K)),f.Vec3.transformMat4(U,U,E),O[K]=U[0],F[K]=U[1],L[K]=U[2];const{type_symbol:q,label:N}=l.atom_site;let k,j;if(q.isDefined){const K=new Array(x),Q=new Int8Array(x);for(let J=0;J<x;++J){const ae=q.value(J),te=ae.length;if(ae[te-1]==="+"){const ne=ae.charCodeAt(te-2);te>=2&&ne>=49&&ne<=57?(K[J]=ae.substring(0,te-2),Q[J]=ne-48):(K[J]=ae.substring(0,te-1),Q[J]=1)}else if(te>=2&&ae[te-2]==="+")K[J]=ae.substring(0,te-2),Q[J]=ae.charCodeAt(te-1)-48;else if(ae[te-1]==="-"){const ne=ae.charCodeAt(te-2);te>=2&&ne>=48&&ne<=57?(K[J]=ae.substring(0,te-2),Q[J]=-(ne-48)):(K[J]=ae.substring(0,te-1),Q[J]=-1)}else te>=2&&ae[te-2]==="-"?(K[J]=ae.substring(0,te-2),Q[J]=-(ae.charCodeAt(te-1)-48)):(K[J]=ae,Q[J]=0)}k=e.Column.ofStringArray(K),j=e.Column.ofIntArray(Q)}else{const K=new Array(x);for(let Q=0;Q<x;++Q)K[Q]=(0,a.guessElementSymbolString)(N.value(Q),"");
4126k=e.Column.ofStringArray(K),j=e.Column.Undefined(x,e.Column.Schema.int)}const H=e.Table.ofPartialColumns(i.BasicSchema.atom_site,{auth_asym_id:D,auth_atom_id:N,auth_comp_id:M,auth_seq_id:V,Cartn_x:e.Column.ofFloatArray(O),Cartn_y:e.Column.ofFloatArray(F),Cartn_z:e.Column.ofFloatArray(L),id:e.Column.range(0,x-1),label_asym_id:D,label_atom_id:N,label_comp_id:M,label_seq_id:V,label_entity_id:e.Column.ofConst("1",x,e.Column.Schema.str),occupancy:l.atom_site.occupancy.isDefined?l.atom_site.occupancy:e.Column.ofConst(1,x,e.Column.Schema.float),type_symbol:k,pdbx_formal_charge:j,pdbx_PDB_model_num:e.Column.ofConst(1,x,e.Column.Schema.int),B_iso_or_equiv:l.atom_site.u_iso_or_equiv},x),G=l.chemical.name_common.value(0)||l.chemical.name_systematic.value(0)||l.chemical_formula.sum.value(0),z=new o.EntityBuilder;z.setNames([["MOL",G||"Unknown Entity"]]),z.getEntityId("MOL",t.MoleculeType.Unknown,"A");const W=new c.ComponentBuilder(V,l.atom_site.type_symbol);W.setNames([["MOL",G||"Unknown Molecule"]]),W.add("MOL",0);const X=(0,i.createBasic)({entity:z.getEntityTable(),chem_comp:W.getChemCompTable(),atom_site:H}),Y=await(0,n.createModels)(X,S,T);if(Y.frameCount>0){const K=Y.representative;y.ModelSymmetry.Provider.set(K,R);const Q=l.geom_bond._rowCount;if(Q>0){const J={},{label:ae}=l.atom_site;for(let de=0,ge=ae.rowCount;de<ge;++de)J[ae.value(de)]=de;const te=(A=S.data.frame.categories.ccdc_geom_bond_type)===null||A===void 0?void 0:A.getField(""),ne=[],$=[],ie=[],Z=[],re=[],oe=new Set;let ce=0;const{atom_site_label_1:ue,atom_site_label_2:pe,valence:he,distance:fe}=l.geom_bond;for(let de=0;de<Q;++de){const ge=J[ue.value(de)],Ce=J[pe.value(de)],ve=ge<Ce?(0,d.cantorPairing)(ge,Ce):(0,d.cantorPairing)(Ce,ge);if(!oe.has(ve)){if(oe.add(ve),ne[ce]=ge,$[ce]=Ce,Z[ce]=fe.value(de)||-1,te){const le=te.str(de);le==="D"?(ie[ce]=2,re[ce]=t.BondType.Flag.Covalent):le==="A"?(ie[ce]=1,re[ce]=t.BondType.Flag.Covalent|t.BondType.Flag.Aromatic):(ie[ce]=1,re[ce]=t.BondType.Flag.Covalent)}else re[ce]=t.BondType.Flag.Covalent,ie[ce]=he.isDefined?he.value(de):1;ce+=1}}_.IndexPairBonds.Provider.set(K,_.IndexPairBonds.fromData({pairs:{indexA:e.Column.ofIntArray(ne),indexB:e.Column.ofIntArray($),order:e.Column.ofIntArray(ie),distance:e.Column.ofFloatArray(Z),flag:e.Column.ofIntArray(re)},count:x}))}}return Y}function v(l){if(!P.is(l.sourceData))return;const{atom_site:S,atom_site_aniso:T}=l.sourceData.data.db,A=e.Table.ofPartialColumns(g.AtomSiteAnisotrop.Schema,{U:T.u},T._rowCount),x=g.AtomSiteAnisotrop.getElementToAnsiotropFromLabel(S.label,T.label);return{data:A,elementToAnsiotrop:x}}function b(l){return P.is(l.sourceData)?l.sourceData.data.db.atom_site_aniso.u.isDefined:!1}g.AtomSiteAnisotrop.Provider.formatRegistry.add("cifCore",v,b);var P;(function(l){function S(A){return A?.kind==="cifCore"}l.is=S;function T(A,x){return x||(x=s.CIF.schema.cifCore(A)),{kind:"cifCore",name:x.database_code.depnum_ccdc_archive.value(0)||x.database_code.depnum_ccdc_fiz.value(0)||x.database_code.icsd.value(0)||x.database_code.mdf.value(0)||x.database_code.nbs.value(0)||x.database_code.csd.value(0)||x.database_code.cod.value(0)||x._name,data:{db:x,frame:A}}}l.fromFrame=T})(P||(Id.CifCoreFormat=P={}));function C(l){const S=P.fromFrame(l);return r.Task.create("Parse CIF Core",T=>m(S.data.db,S,T))}return Id}var wd={},QG;function mae(){if(QG)return wd;QG=1,Object.defineProperty(wd,"__esModule",{value:!0}),wd.CubeFormat=void 0,wd.trajectoryFromCube=f;const e=lt(),t=dt(),r=nt(),n=ga(),i=vn(),c=Ai(),o=xi();async function s(y,_){const{atoms:g}=y,a=e.Column.ofConst("MOL",y.atoms.count,e.Column.Schema.str),d=e.Column.ofConst("A",y.atoms.count,e.Column.Schema.str),p=e.Column.ofArray({array:e.Column.mapToArray(g.number,C=>(0,t.getElementFromAtomicNumber)(C)),schema:e.Column.Schema.Aliased(e.Column.Schema.str)}),u=e.Column.ofConst(1,g.count,e.Column.Schema.int),m=e.Table.ofPartialColumns(i.BasicSchema.atom_site,{auth_asym_id:d,auth_atom_id:p,auth_comp_id:a,auth_seq_id:u,Cartn_x:e.Column.asArrayColumn(g.x,Float32Array),Cartn_y:e.Column.asArrayColumn(g.y,Float32Array),Cartn_z:e.Column.asArrayColumn(g.z,Float32Array),id:e.Column.range(0,g.count-1),label_asym_id:d,label_atom_id:p,label_comp_id:a,label_seq_id:u,label_entity_id:e.Column.ofConst("1",g.count,e.Column.Schema.str),occupancy:e.Column.ofConst(1,g.count,e.Column.Schema.float),t
4126ype_symbol:p,pdbx_PDB_model_num:e.Column.ofConst(1,g.count,e.Column.Schema.int)},g.count),v=new o.EntityBuilder;v.setNames([["MOL","Unknown Entity"]]),v.getEntityId("MOL",t.MoleculeType.Unknown,"A");const b=new c.ComponentBuilder(u,p);b.setNames([["MOL","Unknown Molecule"]]),b.add("MOL",0);const P=(0,i.createBasic)({entity:v.getEntityTable(),chem_comp:b.getChemCompTable(),atom_site:m});return await(0,n.createModels)(P,h.create(y),_)}var h;(function(y){function _(a){return a?.kind==="cube"}y.is=_;function g(a){return{kind:"cube",name:a.header.comment1,data:a}}y.create=g})(h||(wd.CubeFormat=h={}));function f(y){return r.Task.create("Parse Cube",_=>s(y,_))}return wd}var MP={},ZG;function pae(){if(ZG)return MP;ZG=1,Object.defineProperty(MP,"__esModule",{value:!0}),MP.parseMol2=P;const e=lt(),t=Or(),r=Wi(),n=Tr(),i=nt(),{skipWhitespace:c,eatValue:o,markLine:s,getTokenString:h,skipStrictWhitespace:f}=t.Tokenizer;function y(){return{mol_name:"",num_atoms:0,num_bonds:0,num_subst:0,num_feat:0,num_sets:0,mol_type:"",charge_type:"",status_bits:"",mol_comment:""}}function _(C,l){return{tokenizer:C,molecule:y(),runtimeCtx:l}}const g=/\s+/g;function a(C){const{tokenizer:l,molecule:S}=C;for(;h(l)!=="@<TRIPOS>MOLECULE"&&l.position<l.data.length;)s(l);s(l),S.mol_name=h(l),s(l);const T=h(l).trim().split(g);S.num_atoms=parseInt(T[0]),S.num_bonds=parseInt(T[1]),S.num_subst=parseInt(T[2]),S.num_feat=parseInt(T[3]),S.num_sets=parseInt(T[4]),s(l);const A=h(l);if(A.startsWith("@<TRIPOS>"))return;S.mol_type=A,s(l);const x=h(l);if(x.startsWith("@<TRIPOS>"))return;S.charge_type=x,s(l);const M=h(l);if(M.startsWith("@<TRIPOS>"))return;S.status_bits=M,s(l);const D=h(l);D.startsWith("@<TRIPOS>")||(S.mol_comment=D)}function d(C,l,S){let T=0;for(let A=0;A<C;A++){let x=0;for(c(S);f(S),S.tokenStart=S.position,o(S),S.tokenStart!==S.tokenEnd;){const M=l[x++];M&&t.TokenBuilder.addUnchecked(M,S.tokenStart,S.tokenEnd)}x>T&&(T=x);for(let M=x;M<l.length;M++)t.TokenBuilder.addUnchecked(l[M],0,0)}return T+1}async function p(C){const{tokenizer:l,molecule:S}=C;for(;h(l)!=="@<TRIPOS>ATOM"&&l.position<l.data.length;)s(l);const T=l.position,A=l.lineNumber,x=t.TokenBuilder.create(l.data,S.num_atoms*2),M=t.TokenBuilder.create(l.data,S.num_atoms*2),D=t.TokenBuilder.create(l.data,S.num_atoms*2),V=t.TokenBuilder.create(l.data,S.num_atoms*2),R=t.TokenBuilder.create(l.data,S.num_atoms*2),E=t.TokenBuilder.create(l.data,S.num_atoms*2),I=t.TokenBuilder.create(l.data,S.num_atoms*2),B=t.TokenBuilder.create(l.data,S.num_atoms*2),w=t.TokenBuilder.create(l.data,S.num_atoms*2),O=t.TokenBuilder.create(l.data,S.num_atoms*2),F=e.Column.Undefined(S.num_atoms,e.Column.Schema.float),L=e.Column.Undefined(S.num_atoms,e.Column.Schema.int),U=e.Column.Undefined(S.num_atoms,e.Column.Schema.str);l.position=T,l.lineNumber=A;let q=0;const N=[x,M,D,V,R,E,I,B,w,O],{length:k}=l;let j=0;return await(0,i.chunkedSubtask)(C.runtimeCtx,1e5,void 0,G=>{const z=Math.min(S.num_atoms-j,G);return q=Math.max(q,d(z,N,l)),j+=z,z},G=>G.update({message:"Parsing...",current:l.position,max:k})),{count:S.num_atoms,atom_id:(0,r.TokenColumnProvider)(x)(e.Column.Schema.int),atom_name:(0,r.TokenColumnProvider)(M)(e.Column.Schema.str),x:(0,r.TokenColumnProvider)(D)(e.Column.Schema.float),y:(0,r.TokenColumnProvider)(V)(e.Column.Schema.float),z:(0,r.TokenColumnProvider)(R)(e.Column.Schema.float),atom_type:q>5?(0,r.TokenColumnProvider)(E)(e.Column.Schema.str):U,subst_id:q>6?(0,r.TokenColumnProvider)(I)(e.Column.Schema.int):L,subst_name:q>7?(0,r.TokenColumnProvider)(B)(e.Column.Schema.str):U,charge:q>8?(0,r.TokenColumnProvider)(w)(e.Column.Schema.float):F,status_bits:q>9?(0,r.TokenColumnProvider)(O)(e.Column.Schema.str):U}}async function u(C){const{tokenizer:l,molecule:S}=C;for(;h(l)!=="@<TRIPOS>BOND"&&l.position<l.data.length;)s(l);const T=l.position,A=l.lineNumber,x=t.TokenBuilder.create(l.data,S.num_bonds*2),M=t.TokenBuilder.create(l.data,S.num_bonds*2),D=t.TokenBuilder.create(l.data,S.num_bonds*2),V=t.TokenBuilder.create(l.data,S.num_bonds*2),R=t.TokenBuilder.create(l.data,S.num_bonds*2),E=e.Column.Undefined(S.num_bonds,e.Column.Schema.str);l.position=T,l.lineNumber=A;let I=0;const B=[x,M,D,V,R],{length:w}=l;let O=0;return await(0,i.chunkedSubtask)(C.runtimeCtx,1e5,void 0,L=>{const U=Math.min(S.num_bonds-O,L);return I=Math.max(I,d(U,B,l)),O+=U,U},L=>L.update({message:"Parsing...",current:l.position,max:w}
4126)),{count:S.num_bonds,bond_id:(0,r.TokenColumnProvider)(x)(e.Column.Schema.int),origin_atom_id:(0,r.TokenColumnProvider)(M)(e.Column.Schema.int),target_atom_id:(0,r.TokenColumnProvider)(D)(e.Column.Schema.int),bond_type:(0,r.TokenColumnProvider)(V)(e.Column.Schema.str),status_bits:I>4?(0,r.TokenColumnProvider)(R)(e.Column.Schema.str):E}}async function m(C){const{tokenizer:l,molecule:S}=C;if(S.num_subst===0)return;for(;h(l)!=="@<TRIPOS>SUBSTRUCTURE"&&l.position<l.data.length;)s(l);const T=l.position,A=l.lineNumber,x=t.TokenBuilder.create(l.data,S.num_subst*2),M=t.TokenBuilder.create(l.data,S.num_subst*2),D=t.TokenBuilder.create(l.data,S.num_subst*2),V=t.TokenBuilder.create(l.data,S.num_subst*2),R=t.TokenBuilder.create(l.data,S.num_subst*2),E=t.TokenBuilder.create(l.data,S.num_subst*2),I=t.TokenBuilder.create(l.data,S.num_subst*2),B=t.TokenBuilder.create(l.data,S.num_subst*2),w=t.TokenBuilder.create(l.data,S.num_subst*2),O=e.Column.Undefined(S.num_subst,e.Column.Schema.int),F=e.Column.Undefined(S.num_subst,e.Column.Schema.str);l.position=T,l.lineNumber=A;let L=0;const U=[x,M,D,V,R,E,I,B,w],{length:q}=l;let N=0;return await(0,i.chunkedSubtask)(C.runtimeCtx,1e5,void 0,j=>{const H=Math.min(S.num_subst-N,j);return L=Math.max(L,d(H,U,l)),N+=H,H},j=>j.update({message:"Parsing...",current:l.position,max:q})),{count:S.num_subst,subst_id:(0,r.TokenColumnProvider)(x)(e.Column.Schema.int),subst_name:(0,r.TokenColumnProvider)(M)(e.Column.Schema.str),root_atom:(0,r.TokenColumnProvider)(D)(e.Column.Schema.int),subst_type:L>3?(0,r.TokenColumnProvider)(V)(e.Column.Schema.str):F,dict_type:L>4?(0,r.TokenColumnProvider)(R)(e.Column.Schema.str):F,chain:L>
41265?(0,r.TokenColumnProvider)(E)(e.Column.Schema.str):F,sub_type:L>6?(0,r.TokenColumnProvider)(I)(e.Column.Schema.str):F,inter_bonds:L>7?(0,r.TokenColumnProvider)(B)(e.Column.Schema.int):O,status_bits:L>8?(0,r.TokenColumnProvider)(w)(e.Column.Schema.str):F}}function v(C){const{tokenizer:l}=C;for(;l.position<l.data.length;){const T=h(l);if(T==="@<TRIPOS>MOLECULE")return;if(T==="@<TRIPOS>CRYSIN")break;s(l)}if(l.position>=l.data.length)return;s(l);const S=h(l).trim().split(g);return{a:parseFloat(S[0]),b:parseFloat(S[1]),c:parseFloat(S[2]),alpha:parseFloat(S[3]),beta:parseFloat(S[4]),gamma:parseFloat(S[5]),spaceGroup:parseInt(S[6],10),setting:parseInt(S[7],10)}}async function b(C,l,S){const T=(0,t.Tokenizer)(l);C.update({message:"Parsing...",current:0,max:l.length});const A=[];for(;T.position<l.length;){const M=_(T,C);a(M);const D=await p(M),V=await u(M),R=await m(M),E=v(M);for(A.push({molecule:M.molecule,atoms:D,bonds:V,substructures:R,crysin:E}),c(T);h(T)!=="@<TRIPOS>MOLECULE"&&T.position<T.data.length;)s(T)}const x={name:S,structures:A};return n.ReaderResult.success(x)}function P(C,l){return i.Task.create("Parse MOL2",async S=>await b(S,C,l))}return MP}var Vd={},JG;function hae(){if(JG)return Vd;JG=1,Object.defineProperty(Vd,"__esModule",{value:!0}),Vd.Mol2Format=void 0,Vd.trajectoryFromMol2=v;const e=lt(),t=dt(),r=nt(),n=ga(),i=vn(),c=Ai(),o=xi(),s=Ua(),h=c2(),f=Ke(),y=cc(),_=Qn(),g=rt(),a=Ge(),d=qS();async function p(b,P){const C=[];for(let l=0,S=b.structures.length;l<S;++l){const{molecule:T,atoms:A,bonds:x,substructures:M,crysin:D}=b.structures[l],V=new Array(A.count),R=new Array(A.count),E=new Array(A.count),I=new Array(A.count),B=new Array(A.count);let w=!1;for(let te=0;te<A.count;++te)if(A.atom_type.value(te).includes(".")){w=!0;break}const O=new Map;if(M)for(let te=0;te<M.count;++te){const ne=M.root_atom.value(te),$=M.chain.value(te),ie=M.sub_type.value(te);O.set(ne,{chain:$,subType:ie})}const F=new o.EntityBuilder,L=new c.ComponentBuilder(A.subst_id,A.atom_name);let U,q="",N=0,k="",j=t.MoleculeType.Unknown,H=-1;for(let te=0;te<A.count;++te){const ne=A.subst_name.value(te),$=A.subst_id.value(te);let ie=ne.replace(/\d+$/,"")||"MOL";const Z=ne.match(/(\d+)$/);B[te]=Z?parseInt(Z[1]):$;const re=O.get(A.atom_id.value(te));if(re&&(U=re),U&&U.subType&&U.subType!=="UNK"&&(ie=U.subType),E[te]=w?A.atom_type.value(te).split(".")[0].toUpperCase():(0,y.guessElementSymbolString)(A.atom_name.value(te),ie),I[te]=ie,$!==H){const oe=(0,t.getMoleculeType)(L.add(ie,te).type,ie);U?.chain?k=U.chain:(oe!==j||$!==H+1)&&(k=(0,d.getChainId)(N),N+=1),q=F.getEntityId(ie,oe,k),H=$,j=oe}V[te]=q,R[te]=k}const G=e.Column.ofStringArray(E),z=e.Column.ofStringArray(I),W=e.Column.ofStringArray(V),X=e.Column.ofStringArray(R),Y=e.Column.asArrayColumn(A.atom_name),K=e.Column.ofIntArray(B),Q=e.Table.ofPartialColumns(i.BasicSchema.atom_site,{auth_asym_id:X,auth_atom_id:Y,auth_comp_id:z,auth_seq_id:K,Cartn_x:e.Column.asArrayColumn(A.x,Float32Array),Cartn_y:e.Column.asArrayColumn(A.y,Float32Array),Cartn_z:e.Column.asArrayColumn(A.z,Float32Array),id:e.Column.asArrayColumn(A.atom_id),label_asym_id:X,label_atom_id:Y,label_comp_id:z,label_seq_id:A.subst_id,label_entity_id:W,occupancy:e.Column.ofConst(1,A.count,e.Column.Schema.float),type_symbol:G,pdbx_PDB_model_num:e.Column.ofConst(l,A.count,e.Column.Schema.int)},A.count),J=(0,i.createBasic)({entity:F.getEntityTable(),chem_comp:L.getChemCompTable(),atom_site:Q}),ae=await(0,n.createModels)(J,m.create(b),P);if(ae.frameCount>0){const te=e.Column.ofIntArray(e.Column.mapToArray(x.origin_atom_id,ce=>ce-1,Int32Array)),ne=e.Column.ofIntArray(e.Column.mapToArray(x.target_atom_id,ce=>ce-1,Int32Array)),$=x.bond_id,ie=e.Column.ofIntArray(e.Column.mapToArray(x.bond_type,ce=>{switch(ce){case"ar":case"am":case"un":return 1;case"du":case"nc":return 0;default:return parseInt(ce)}},Int8Array)),Z=e.Column.ofIntArray(e.Column.mapToArray(x.bond_type,ce=>{switch(ce){case"ar":case"am":return t.BondType.Flag.Aromatic|t.BondType.Flag.Covalent;case"du":case"nc":return t.BondType.Flag.None;default:return t.BondType.Flag.Covalent}},Int8Array)),re=s.IndexPairBonds.fromData({pairs:{key:$,indexA:te,indexB:ne,order:ie,flag:Z},count:A.count},{maxDistance:D?-1:1/0}),oe=ae.representative;if(s.IndexPairBonds.Provider.set(oe,re),h.AtomPartialCharge.Provider.set(oe,{data:A.charge,type:T.charge_type}),D){const ce=u(D);ce&&_.ModelSymmetry.Provider.set(oe,ce)}C.push(oe)}}return new f.ArrayTrajectory(C)}function u(b){if(b.setting!==1)return;const P=g.SpacegroupCell.create(b.spaceGroup,a.Vec3.create(b.a,b.b,b.c),a.Vec3.scale((0,a.Vec3)(),a.Vec3.create(b.alpha,b.beta,b.gamma),Math.PI/180)
4126);return{spacegroup:g.Spacegroup.create(P),assemblies:[],isNonStandardCrystalFrame:!1,ncsOperators:[]}}var m;(function(b){function P(l){return l?.kind==="mol2"}b.is=P;function C(l){return{kind:"mol2",name:l.name,data:l}}b.create=C})(m||(Vd.Mol2Format=m={}));function v(b){return r.Task.create("Parse MOL2",P=>p(b,P))}return Vd}var DP={},ez;function gae(){if(ez)return DP;ez=1,Object.defineProperty(DP,"__esModule",{value:!0}),DP.parseXtc=s;const e=nt(),t=Tr(),r=new Uint32Array([0,0,0,0,0,0,0,0,0,8,10,12,16,20,25,32,40,50,64,80,101,128,161,203,256,322,406,512,645,812,1024,1290,1625,2048,2580,3250,4096,5060,6501,8192,10321,13003,16384,20642,26007,32768,41285,52015,65536,82570,104031,131072,165140,208063,262144,330280,416127,524287,660561,832255,1048576,1321122,1664510,2097152,2642245,3329021,4194304,5284491,6658042,8388607,10568983,13316085,16777216]),n=9;var i;(function(h){function f(v){let b=1,P=0;for(;v>=b&&P<32;)P++,b<<=1;return P}h.sizeOfInt=f;const y=new Uint8Array(32);function _(v,b){let P=1,C=0;y[0]=1;for(let S=0;S<v;S++){let T,A=0;for(T=0;T<P;T++)A+=y[T]*b[S],y[T]=A&255,A>>=8;for(;A!==0;)y[T++]=A&255,A>>=8;P=T}let l=1;for(P--;y[P]>=l;)C++,l*=2;return C+P*8}h.sizeOfInts=_;const g=new ArrayBuffer(24);h.buf=new Int32Array(g);const a=new Uint32Array(g);function d(v,b,P){let C=P;const l=(1<<C)-1;let S=a[1],T=a[2],A=h.buf[0],x=0;for(;C>=8;)T=T<<8|v[b+A++],x|=T>>S<<C-8,C-=8;return C>0&&(S<C&&(S+=8,T=T<<8|v[b+A++]),S-=C,x|=T>>S&(1<<C)-1),x&=l,h.buf[0]=A,h.buf[1]=S,h.buf[2]=T,x}h.decodeBits=d;function p(v,b){let P=a[2];const C=h.buf[0];return P=P<<8|v[b+C],h.buf[0]=C+1,h.buf[2]=P,P>>a[1]&255}const u=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function m(v,b,P,C,l){let S=P,T=0;for(u[0]=0,u[1]=0,u[2]=0,u[3]=0;S>8;)u[T++]=p(v,b),S-=8;S>0&&(u[T++]=d(v,b,S));for(let A=2;A>0;A--){let x=0;const M=C[A];for(let D=T-1;D>=0;D--){x=x<<8|u[D];const V=x/M|0;u[D]=V,x=x-V*M}l[A]=x}l[0]=u[0]|u[1]<<8|u[2]<<16|u[3]<<24}h.decodeInts=m})(i||(i={}));function c(){throw new Error("(xdrfile error) Undefined error.")}async function o(h,f){const y=new DataView(f.buffer,f.byteOffset),_={frames:[],boxes:[],times:[],timeOffset:0,deltaTime:0},g=_.frames,a=_.boxes,d=_.times,p=[0,0,0,0,0,0],u=[0,0,0],m=[0,0,0],v=[0,0,0],b=[.1,.1,.1],P=[.1,.1,.1];let C=0;const l=i.buf;for(;;){let S;const T=y.getInt32(C+4);C+=12,d.push(y.getFloat32(C)),C+=4;const A=new Float32Array(9);for(let x=0;x<9;++x)A[x]=y.getFloat32(C)*10,C+=4;if(a.push(A),T<=9){S={count:T,x:new Float32Array(T),y:new Float32Array(T),z:new Float32Array(T)},C+=4;for(let x=0;x<T;++x)S.x[x]=y.getFloat32(C),S.y[x]=y.getFloat32(C+4),S.z[x]=y.getFloat32(C+8),C+=12}else{l[0]=l[1]=l[2]=0,u[0]=u[1]=u[2]=0,v[0]=v[1]=v[2]=0,m[0]=m[1]=m[2]=0,b[0]=b[1]=b[2]=0,P[0]=P[1]=P[2]=0,S={count:T,x:new Float32Array(T),y:new Float32Array(T),z:new Float32Array(T)};let x=0;const M=y.getInt32(C);C+=4;const D=y.getFloat32(C);C+=4,p[0]=y.getInt32(C),p[1]=y.getInt32(C+4),p[2]=y.getInt32(C+8),p[3]=y.getInt32(C+12),p[4]=y.getInt32(C+16),p[5]=y.getInt32(C+20),u[0]=p[3]-p[0]+1,u[1]=p[4]-p[1]+1,u[2]=p[5]-p[2]+1,C+=24;let V;(u[0]|u[1]|u[2])>16777215?(m[0]=i.sizeOfInt(u[0]),m[1]=i.sizeOfInt(u[1]),m[2]=i.sizeOfInt(u[2]),V=0):V=i.sizeOfInts(3,u);let R=y.getInt32(C);C+=4;let E=R-1;E=n>E?n:E;let I=r[E]/2|0,B=r[R]/2|0;v[0]=v[1]=v[2]=r[R];const w=Math.ceil(y.getInt32(C)/4)*4;C+=4;const O=1/D;let F=0,L=0;for(b[0]=b[1]=b[2]=0;L<M;){V===0?(b[0]=i.decodeBits(f,C,m[0]),b[1]=i.decodeBits(f,C,m[1]),b[2]=i.decodeBits(f,C,m[2])):i.decodeInts(f,C,V,u,b),L++,b[0]+=p[0],b[1]+=p[1],b[2]+=p[2],P[0]=b[0],P[1]=b[1],P[2]=b[2];const U=i.decodeBits(f,C,1);let q=0;if(U===1&&(F=i.decodeBits(f,C,5),q=F%3,F-=q,q--),F>0){b[0]=b[1]=b[2]=0;for(let N=0;N<F;N+=3){if(i.decodeInts(f,C,R,v,b),L++,b[0]+=P[0]-B,b[1]+=P[1]-B,b[2]+=P[2]-B,N===0){let k=b[0];b[0]=P[0],P[0]=k,k=b[1],b[1]=P[1],P[1]=k,k=b[2],b[2]=P[2],P[2]=k,S.x[x]=P[0]*O,S.y[x]=P[1]*O,S.z[x]=P[2]*O,x++}else P[0]=b[0],P[1]=b[1],P[2]=b[2];S.x[x]=b[0]*O,S.y[x]=b[1]*O,S.z[x]=b[2]*O,x++}}else S.x[x]=b[0]*O,S.y[x]=b[1]*O,S.z[x]=b[2]*O,x++;R+=q,q<0?(B=I,R>n?I=r[R-1]/2|0:I=0):q>0&&(I=B,B=r[R]/2|0),v[0]=v[1]=v[2]=r[R],(v[0]===0||v[1]===0||v[2]===0)&&c()}C+=w}for(let x=0;x<T;x++)S.x[x]*=10,S.y[x]*=10,S.z[x]*=10;if(g.push(S),h.shouldUpdate&&await h.update({current:C,max:f.length}),C>=f.length)break}return d.length>=1&&(_.timeOffset=d[0]),d.length>=2&&(_.deltaTime=d[1]-d[0]),_}function s(h){return e.Task.create("Parse XTC",async f=>{try{f.update({canAbort:!0,message:"Parsing trajectory..."});const y=await o(f,h);return t.ReaderResult.success(y)}catch(y){return t.ReaderResult.error(""+y)}})}return DP}var IP={},tz;function yae(){if(tz)return IP;
4126tz=1,Object.defineProperty(IP,"__esModule",{value:!0}),IP.coordinatesFromXtc=i;const e=nt(),t=vl(),r=d2(),n=Ge();function i(c){return e.Task.create("Parse XTC",async o=>{await o.update("Converting to coordinates");const s=(0,t.Time)(c.deltaTime,"step"),h=(0,t.Time)(c.timeOffset,s.unit),f=[];for(let y=0,_=c.frames.length;y<_;++y){const g=c.boxes[y],a=n.Vec3.fromArray((0,n.Vec3)(),g,0),d=n.Vec3.fromArray((0,n.Vec3)(),g,3),p=n.Vec3.fromArray((0,n.Vec3)(),g,6);f.push({elementCount:c.frames[y].count,cell:r.Cell.fromBasis(a,d,p),x:c.frames[y].x,y:c.frames[y].y,z:c.frames[y].z,xyzOrdering:{isIdentity:!0},time:(0,t.Time)(h.value+s.value*y,s.unit)})}return t.Coordinates.create(f,s,h)})}return IP}var wP={},rz;function vae(){if(rz)return wP;rz=1,Object.defineProperty(wP,"__esModule",{value:!0}),wP.parseXyz=o;const e=lt(),t=nt(),r=Or(),n=Tr();function i(s){let h=s.position>=s.data.length-1?0:+r.Tokenizer.readLine(s);isNaN(h)&&(h=0);const f=r.Tokenizer.readLine(s),y=new Float64Array(h),_=new Float64Array(h),g=new Float64Array(h),a=new Array(h);for(let d=0;d<h;++d){const u=r.Tokenizer.readLineTrim(s).split(/\s+/g);a[d]=u[0],y[d]=+u[1],_[d]=+u[2],g[d]=+u[3]}return{count:h,comment:f,x:e.Column.ofFloatArray(y),y:e.Column.ofFloatArray(_),z:e.Column.ofFloatArray(g),type_symbol:e.Column.ofStringArray(a)}}function c(s){const h=(0,r.Tokenizer)(s),f=[];for(;;){const _=i(h);if(_.count===0)break;f.push(_)}const y={molecules:f};return n.ReaderResult.success(y)}function o(s){return t.Task.create("Parse Mol",async()=>c(s))}return wP}var Ed={},nz;function bae(){if(nz)return Ed;nz=1,Object.defineProperty(Ed,"__esModule",{value:!0}),Ed.XyzFormat=void 0,Ed.trajectoryFromXyz=f;const e=lt(),t=dt(),r=nt(),n=ga(),i=vn(),c=Ai(),o=xi();function s(y,_){const{molecules:g}=y;let a=0;for(const V of g)a+=V.count;const d=new Array(a),p=new Int32Array(a),u=new Float32Array(a),m=new Float32Array(a),v=new Float32Array(a),b=new Int32Array(a);let P=0;for(let V=0;V<g.length;V++){const R=g[V];for(let E=0;E<R.count;E++)d[P]=R.type_symbol.value(E),u[P]=R.x.value(E),m[P]=R.y.value(E),v[P]=R.z.value(E),p[P]=E,b[P]=V,P++}const C=e.Column.ofConst("MOL",a,e.Column.Schema.str),l=e.Column.ofConst("A",a,e.Column.Schema.str),S=e.Column.ofConst(1,a,e.Column.Schema.int),T=e.Column.ofStringArray(d),A=e.Table.ofPartialColumns(i.BasicSchema.atom_site,{auth_asym_id:l,auth_atom_id:T,auth_comp_id:C,auth_seq_id:S,Cartn_x:e.Column.ofFloatArray(u),Cartn_y:e.Column.ofFloatArray(m),Cartn_z:e.Column.ofFloatArray(v),id:e.Column.ofIntArray(p),label_asym_id:l,label_atom_id:T,label_comp_id:C,label_seq_id:S,label_entity_id:e.Column.ofConst("1",a,e.Column.Schema.str),occupancy:e.Column.ofConst(1,a,e.Column.Schema.float),type_symbol:T,pdbx_PDB_model_num:e.Column.ofIntArray(b)},a),x=new o.EntityBuilder;x.setNames([["MOL","Unknown Entity"]]),x.getEntityId("MOL",t.MoleculeType.Unknown,"A");const M=new c.ComponentBuilder(S,T);M.setNames([["MOL","Unknown Molecule"]]),M.add("MOL",0);const D=(0,i.createBasic)({entity:x.getEntityTable(),chem_comp:M.getChemCompTable(),atom_site:A});return(0,n.createModels)(D,h.create(y),_)}var h;(function(y){function _(a){return a?.kind==="xyz"}y.is=_;function g(a){return{kind:"xyz",name:"xyz",data:a}}y.create=g})(h||(Ed.XyzFormat=h={}));function f(y){return r.Task.create("Parse XYZ",_=>s(y,_))}return Ed}var Eu={},iz;function ww(){return iz||(iz=1,Object.defineProperty(Eu,"__esModule",{value:!0}),Eu.UnitStyles=Eu.lammpsUnitStyles=void 0,Eu.lammpsUnitStyles={lj:{mass:"unitless",distance:"unitless",time:"unitless",energy:"unitless",velocity:"unitless",force:"unitless",torque:"unitless",temperature:"unitless",pressure:"unitless",viscosity:"unitless",charge:"unitless",density:"unitless",scale:1},real:{mass:"grams/mole",distance:"Angstroms",time:"femtoseconds",energy:"Kcal/mol",velocity:"Angstroms/femtosecond",force:"Kcal/mol-Angstrom",torque:"Kcal/mol",temperature:"Kelvin",pressure:"atmospheres",viscosity:"Poise",charge:"multiple of electron charge",dipole:"charge*Angstroms",electricField:"volts/Angstrom",density:"g/cm^3",scale:1},metal:{mass:"grams/mole",distance:"Angstroms",time:"picoseconds",energy:"eV",velocity:"Angstroms/picosecond",force:"eV/Angstrom",torque:"eV",temperature:"Kelvin",pressure:"bars",viscosity:"Poise",charge:"multiple of electron charge",di
4126pole:"charge*Angstroms",electricField:"volts/Angstrom",density:"g/cm^3",scale:1},si:{mass:"kilograms",distance:"meters",time:"seconds",energy:"Joules",velocity:"meters/second",force:"Newtons",torque:"Newton-meters",temperature:"Kelvin",pressure:"Pascals",viscosity:"Pascal*second",charge:"Coulombs",dipole:"Coulombs*meters",electricField:"volts/meter",density:"kg/m^3",scale:1},cgs:{mass:"grams",distance:"centimeters",time:"seconds",energy:"ergs",velocity:"centimeters/second",force:"dynes",torque:"dyne-centimeters",temperature:"Kelvin",pressure:"dyne/cm^2",viscosity:"Poise",charge:"statcoulombs",dipole:"statcoul-cm",electricField:"statvolt/cm",density:"g/cm^3",scale:1},electron:{mass:"atomic mass units",distance:"Bohr",time:"femtoseconds",energy:"Hartrees",velocity:"Bohr/atomic time units",force:"Hartrees/Bohr",temperature:"Kelvin",pressure:"Pascals",charge:"multiple of electron charge",dipole:"Debye",electricField:"volts/cm",density:"unitless",torque:"",viscosity:"",scale:.529177},micro:{mass:"picograms",distance:"micrometers",time:"microseconds",energy:"picogram-micrometer^2/microsecond^2",velocity:"micrometers/microsecond",force:"picogram-micrometer/microsecond^2",torque:"picogram-micrometer^2/microsecond^2",temperature:"Kelvin",pressure:"picogram/(micrometer-microsecond^2)",viscosity:"picogram/(micrometer-microsecond)",charge:"picocoulombs",dipole:"picocoulomb-micrometer",electricField:"volt/micrometer",density:"pg/μm^3",scale:1},nano:{mass:"attograms",distance:"nanometers",time:"nanoseconds",energy:"attogram-nanometer^2/nanosecond^2",velocity:"nanometers/nanosecond",force:"attogram-nanometer/nanosecond^2",torque:"attogram-nanometer^2/nanosecond^2",temperature:"Kelvin",pressure:"attogram/(nanometer-nanosecond^2)",viscosity:"attogram/(nanometer-nanosecond)",charge:"multiple of electron charge",dipole:"charge-nanometer",electricField:"volt/nanometer",density:"ag/nm^3",scale:10}},Eu.UnitStyles=["real","metal","si","cgs","electron","micro","nano","lj"]),Eu}var VP={},az;function _ae(){if(az)return VP;az=1,Object.defineProperty(VP,"__esModule",{value:!0}),VP.parseLammpsData=u;const e=nt(),t=Or(),r=Tr(),n=Wi(),i=lt(),{readLine:c,skipWhitespace:o,eatValue:s,eatLine:h,markStart:f}=t.Tokenizer,y=/\s+/;function _(m,v){return{tokenizer:m,runtimeCtx:v}}async function g(m,v,b){const{tokenizer:P}=m,C=t.TokenBuilder.create(P.data,v*2),l=t.TokenBuilder.create(P.data,v*2),S=t.TokenBuilder.create(P.data,v*2),T=t.TokenBuilder.create(P.data,v*2),A=t.TokenBuilder.create(P.data,v*2),x=t.TokenBuilder.create(P.data,v*2),M=t.TokenBuilder.create(P.data,v*2),D={full:[C,l,S,T,A,x,M],atomic:[C,S,A,x,M],bond:[C,l,S,A,x,M]},V=D[b].length,{position:R}=P;c(P).trim(),P.position=R;const{length:E}=P;let I=0;return await(0,e.chunkedSubtask)(m.runtimeCtx,1e5,void 0,B=>{const w=Math.min(v-I,B);for(let O=0;O<w;++O){for(let F=0;F<V;++F){o(P),f(P),s(P);const L=D[b][F];L&&t.TokenBuilder.addUnchecked(L,P.tokenStart,P.tokenEnd)}h(P),f(P)}return I+=w,w},B=>B.update({message:"Parsing...",current:P.position,max:E})),{count:v,atomId:(0,n.TokenColumnProvider)(C)(i.Column.Schema.int),moleculeId:(0,n.TokenColumnProvider)(l)(i.Column.Schema.int),atomType:(0,n.TokenColumnProvider)(S)(i.Column.Schema.int),charge:(0,n.TokenColumnProvider)(T)(i.Column.Schema.float),x:(0,n.TokenColumnProvider)(A)(i.Column.Schema.float),y:(0,n.TokenColumnProvider)(x)(i.Column.Schema.float),z:(0,n.TokenColumnProvider)(M)(i.Column.Schema.float)}}async function a(m,v){const{tokenizer:b}=m,P=t.TokenBuilder.create(b.data,v*2),C=t.TokenBuilder.create(b.data,v*2),l=t.TokenBuilder.create(b.data,v*2),S=t.TokenBuilder.create(b.data,v*2),{length:T}=b;let A=0;return await(0,e.chunkedSubtask)(m.runtimeCtx,10,void 0,x=>{const M=Math.min(v-A,x);for(let D=0;D<M;++D)for(let V=0;V<4;++V)switch(o(b),f(b),s(b),V){case 0:t.TokenBuilder.addUnchecked(P,b.tokenStart,b.tokenEnd);break;case 1:t.TokenBuilder.addUnchecked(C,b.tokenStart,b.tokenEnd);break;case 2:t.TokenBuilder.addUnchecked(l,b.tokenStart,b.tokenEnd);break;case 3:t.TokenBuilder.addUnchecked(S,b.tokenStart,b.tokenEnd);break}return A+=M,M},x=>x.update({message:"Parsing...",current:b.position,max:T}
4126)),{count:v,bondId:(0,n.TokenColumnProvider)(P)(i.Column.Schema.int),bondType:(0,n.TokenColumnProvider)(C)(i.Column.Schema.int),atomIdA:(0,n.TokenColumnProvider)(l)(i.Column.Schema.int),atomIdB:(0,n.TokenColumnProvider)(S)(i.Column.Schema.int)}}const d=["full","atomic","bond"];async function p(m,v){const b=(0,t.Tokenizer)(m),P=_(b,v);let C,l,S=0,T=0,A="full",x=NaN,M=NaN,D=NaN,V=NaN,R=NaN,E=NaN;for(;b.tokenEnd<b.length;){const w=c(P.tokenizer).trim();if(w.includes("atoms"))S=parseInt(w.split(y)[0]);else if(w.includes("bonds"))T=parseInt(w.split(y)[0]);else if(w.includes("xlo xhi")){const O=w.split(y);x=parseFloat(O[0]),M=parseFloat(O[1])}else if(w.includes("ylo yhi")){const O=w.split(y);D=parseFloat(O[0]),V=parseFloat(O[1])}else if(w.includes("zlo zhi")){const O=w.split(y);R=parseFloat(O[0]),E=parseFloat(O[1])}else if(!w.includes("Masses"))if(w.includes("Atoms")){const O=w.split("#");if(O.length>1){const F=O[1].trim();d.includes(F)?A=F:console.warn(`Unknown atom style: ${F}`)}C=await g(P,S,A)}else w.includes("Bonds")&&(l=await a(P,T))}if(C===void 0)return r.ReaderResult.error("no atoms data");l===void 0&&(l={count:0,bondId:i.Column.ofIntArray([]),bondType:i.Column.ofIntArray([]),atomIdA:i.Column.ofIntArray([]),atomIdB:i.Column.ofIntArray([])});const I=!isNaN(x)&&!isNaN(M)&&!isNaN(D)&&!isNaN(V)&&!isNaN(R)&&!isNaN(E)?{lower:[x,D,R],length:[M-x,V-D,E-R],periodicity:["p","p","p"]}:void 0,B={atoms:C,bonds:l,box:I};return r.ReaderResult.success(B)}function u(m){return e.Task.create("Parse LammpsData",async v=>await p(m,v))}return VP}var Bd={},oz;function Sae(){if(oz)return Bd;oz=1,Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.LammpsDataFormat=void 0,Bd.trajectoryFromLammpsData=p;const e=lt(),t=Ge(),r=ww(),n=Ke(),i=dt(),c=nt(),o=ga(),s=vn(),h=Ai(),f=xi(),y=Ua(),_=c2(),g=Qn();async function a(u,m,v="real"){const{atoms:b,bonds:P}=u,C=[],l=b.count,S=r.lammpsUnitStyles[v].scale,T=new Array(l),A=new Float32Array(l),x=new Float32Array(l),M=new Float32Array(l);let D=0;for(let q=0;q<l;q++){const N=b.atomId.value(q);T[q]=b.atomType.value(q).toString(),A[q]=b.x.value(q)*S,x[q]=b.y.value(q)*S,M[q]=b.z.value(q)*S,N>D&&(D=N)}const V=new Int32Array(D+1).fill(-1);for(let q=0;q<l;q++)V[b.atomId.value(q)]=q;const R=e.Column.ofConst("MOL",l,e.Column.Schema.str),E=e.Column.ofLambda({value:q=>b.moleculeId.value(q).toString(),rowCount:l,schema:e.Column.Schema.str}),I=e.Column.ofConst(1,l,e.Column.Schema.int),B=e.Column.ofStringArray(T),w=e.Table.ofPartialColumns(s.BasicSchema.atom_site,{auth_asym_id:E,auth_atom_id:B,auth_comp_id:R,auth_seq_id:I,Cartn_x:e.Column.ofFloatArray(A),Cartn_y:e.Column.ofFloatArray(x),Cartn_z:e.Column.ofFloatArray(M),id:b.atomId,label_asym_id:E,label_atom_id:B,label_comp_id:R,label_seq_id:I,label_entity_id:e.Column.ofConst("1",l,e.Column.Schema.str),occupancy:e.Column.ofConst(1,l,e.Column.Schema.float),type_symbol:B,pdbx_PDB_model_num:e.Column.ofConst(0,l,e.Column.Schema.int)},l),O=new f.EntityBuilder;O.setNames([["MOL","Unknown Entity"]]),O.getEntityId("MOL",i.MoleculeType.Unknown,"A");const F=new h.ComponentBuilder(I,B);F.setNames([["MOL","Unknown Molecule"]]),F.add("MOL",0);const L=(0,s.createBasic)({entity:O.getEntityTable(),chem_comp:F.getChemCompTable(),atom_site:w}),U=await(0,o.createModels)(L,d.create(u),m);if(U.frameCount>0){const q=U.representative;if(P.count!==0){const N=[],k=[],j=[];for(let K=0;K<P.count;K++){const Q=P.atomIdA.value(K),J=P.atomIdB.value(K);if(Q>D||J>D)continue;const ae=V[Q],te=V[J];ae<0||te<0||(N.push(ae),k.push(te),j.push(P.bondId.value(K)))}const H=e.Column.ofIntArray(new Int32Array(N)),G=e.Column.ofIntArray(new Int32Array(k)),z=e.Column.ofIntArray(new Int32Array(j)),W=e.Column.ofConst(1,N.length,e.Column.Schema.int),X=e.Column.ofConst(i.BondType.Flag.Covalent,N.length,e.Column.Schema.int),Y=y.IndexPairBonds.fromData({pairs:{key:z,indexA:H,indexB:G,order:W,flag:X},count:b.count},{maxDistance:1/0});y.IndexPairBonds.Provider.set(q,Y)}if(_.AtomPartialCharge.Provider.set(q,{data:b.charge,type:"NO_CHARGES"}),u.box){const[N,k,j]=u.box.length,H=g.ModelSymmetry.fromCell(t.Vec3.create(N*S,k*S,j*S),t.Vec3.create(Math.PI/2,Math.PI/2,Math.PI/2));g.ModelSymmetry.Provider.set(q,H)}C.push(q)}return new n.ArrayTrajectory(C)}var d;(function(u){function m(b){return b?.kind==="data"}u.is=m;function v(b){return{kind:"data",name:"data",data:b}}u.create=v})(d||(Bd.LammpsDataFormat=d={}));function p(u,m){return m===void 0&&(m="real"),c.Task.create("Parse Lammps Data",v=>a(u,v,m))}return Bd}var EP={},sz;function Cae(){if(sz)return EP;
4126sz=1,Object.defineProperty(EP,"__esModule",{value:!0}),EP.parseLammpsTrajectory=a;const e=nt(),t=Or(),r=Tr(),n=Wi(),i=lt(),{readLine:c,skipWhitespace:o,eatValue:s,eatLine:h,markStart:f}=t.Tokenizer;function y(d,p){return{tokenizer:d,runtimeCtx:p}}async function _(d,p,u){const{tokenizer:m}=d,v=Object.fromEntries(u.map((B,w)=>[B,w])),b=u.findIndex(B=>B[0]==="x"),P=u.findIndex(B=>B[0]==="y"),C=u.findIndex(B=>B[0]==="z"),l=u[b],S=t.TokenBuilder.create(m.data,p*2),T=t.TokenBuilder.create(m.data,p*2),A=t.TokenBuilder.create(m.data,p*2),x=t.TokenBuilder.create(m.data,p*2),M=t.TokenBuilder.create(m.data,p*2),D=t.TokenBuilder.create(m.data,p*2),{position:V}=m;m.position=V;const R=u.length,{length:E}=m;let I=0;return await(0,e.chunkedSubtask)(d.runtimeCtx,1e5,void 0,B=>{const w=Math.min(p-I,B);for(let O=0;O<w;++O){for(let F=0;F<R;++F)switch(o(m),f(m),s(m),F){case v.id:t.TokenBuilder.addUnchecked(S,m.tokenStart,m.tokenEnd);break;case v.mol:t.TokenBuilder.addUnchecked(T,m.tokenStart,m.tokenEnd);break;case v.type:t.TokenBuilder.addUnchecked(A,m.tokenStart,m.tokenEnd);break;case b:t.TokenBuilder.addUnchecked(x,m.tokenStart,m.tokenEnd);break;case P:t.TokenBuilder.addUnchecked(M,m.tokenStart,m.tokenEnd);break;case C:t.TokenBuilder.addUnchecked(D,m.tokenStart,m.tokenEnd);break}h(m),f(m)}return I+=w,w},B=>B.update({message:"Parsing...",current:m.position,max:E})),{count:p,atomMode:l,atomId:(0,n.TokenColumnProvider)(S)(i.Column.Schema.int),moleculeId:(0,n.TokenColumnProvider)(T)(i.Column.Schema.int),atomType:(0,n.TokenColumnProvider)(A)(i.Column.Schema.int),x:(0,n.TokenColumnProvider)(x)(i.Column.Schema.float),y:(0,n.TokenColumnProvider)(M)(i.Column.Schema.float),z:(0,n.TokenColumnProvider)(D)(i.Column.Schema.float)}}async function g(d,p){const u=(0,t.Tokenizer)(d),m=y(u,p),v={frames:[],times:[],bounds:[],timeOffset:0,deltaTime:0},b=v.frames;let P=0,C=0;for(;u.tokenEnd<u.length;){const l=c(m.tokenizer).trim();if(l.includes("ITEM: TIMESTEP"))C=parseInt(c(m.tokenizer).trim()),v.times.push(C);else if(l.includes("ITEM: NUMBER OF ATOMS"))P=parseInt(c(m.tokenizer).trim());else if(l.includes("ITEM: ATOMS")){const S=l.split(" ").slice(2),T=await _(m,P,S);b.push(T)}else if(l.includes("ITEM: BOX BOUNDS")){const S=l.split("ITEM: BOX BOUNDS ")[1].split(" "),T=S[0],A=S[1],x=S[2],M=c(m.tokenizer).trim().split(" "),D=c(m.tokenizer).trim().split(" "),V=c(m.tokenizer).trim().split(" "),R=parseFloat(M[0]),E=parseFloat(M[1]),I=parseFloat(D[0]),B=parseFloat(D[1]),w=parseFloat(V[0]),O=parseFloat(V[1]);
4126v.bounds.push({lower:[R,I,w],length:[E-R,B-I,O-w],periodicity:[T,A,x]})}}return v.times.length>=1&&(v.timeOffset=v.times[0]),v.times.length>=2&&(v.deltaTime=v.times[1]-v.times[0]),r.ReaderResult.success(v)}function a(d){return e.Task.create("Parse Lammp Trajectory",async p=>await g(d,p))}return EP}var Os={},cz;function Pae(){if(cz)return Os;cz=1,Object.defineProperty(Os,"__esModule",{value:!0}),Os.LammpsTrajectoryFormat=void 0,Os.getCanonicalOrder=g,Os.coordinatesFromLammpsTrajectory=a,Os.trajectoryFromLammpsTrajectory=u;const e=vl(),t=ww(),r=Al(),n=nt(),i=lt(),c=Ge(),o=vn(),s=Ai(),h=xi(),f=ga(),y=dt(),_=Qn();function g(m){const{count:v,atomId:b}=m;let P,C;for(let l=0;l<v;l++){const S=b.value(l)-1;if(S<0||S>=v)return;if(!P){if(S===l)continue;if(S<l)return;P=new Int32Array(v),C=new Uint8Array(v);for(let T=0;T<l;T++)P[T]=T,C[T]=1}if(C[S])return;C[S]=1,P[l]=S}return P}function a(m,v="real"){return n.Task.create("Parse Lammps Trajectory",async b=>{await b.update("Converting to coordinates");const P=t.lammpsUnitStyles[v].scale,C=(0,e.Time)(m.deltaTime,"step"),l=(0,e.Time)(m.timeOffset,C.unit),S={x:0,y:0,z:0},T={x:1,y:1,z:1},x=m.frames[0].atomMode.includes("s"),M=[];for(let D=0,V=m.frames.length;D<V;++D){const R=m.bounds[D];x&&(T.x=R.length[0],T.y=R.length[1],T.z=R.length[2],S.x=R.lower[0],S.y=R.lower[1],S.z=R.lower[2]);const E=m.frames[D],I=E.count,B=g(E),w=new Float32Array(I),O=new Float32Array(I),F=new Float32Array(I),L=T.x*P,U=T.y*P,q=T.z*P,N=S.x*P,k=S.y*P,j=S.z*P;for(let H=0;H<I;H++){const G=B?B[H]:H;w[G]=E.x.value(H)*L+N,O[G]=E.y.value(H)*U+k,F[G]=E.z.value(H)*q+j}M.push({elementCount:I,x:w,y:O,z:F,xyzOrdering:{isIdentity:!0},time:(0,e.Time)(l.value+C.value*D,C.unit)})}return e.Coordinates.create(M,C,l)})}async function d(m,v,b="real"){const P=m.frames[0],C=P.count,l=P.atomMode,S=m.bounds[0],T={x:0,y:0,z:0},A={x:1,y:1,z:1},x=t.lammpsUnitStyles[b].scale;l.includes("s")&&(A.x=S.length[0],A.y=S.length[1],A.z=S.length[2],T.x=S.lower[0],T.y=S.lower[1],T.z=S.lower[2]);const M=new Array(C),D=new Array(C),V=new Int32Array(C),R=new Float32Array(C),E=new Float32Array(C),I=new Float32Array(C),B=A.x*x,w=A.y*x,O=A.z*x,F=T.x*x,L=T.y*x,U=T.z*x,q=g(P);for(let J=0;J<C;J++){const ae=q?q[J]:J;M[ae]=P.atomType.value(J).toString(),D[ae]=P.moleculeId.value(J).toString(),R[ae]=P.x.value(J)*B+F,E[ae]=P.y.value(J)*w+L,I[ae]=P.z.value(J)*O+U,V[ae]=P.atomId.value(J)}const N=i.Column.ofConst("MOL",C,i.Column.Schema.str),k=i.Column.ofStringArray(D),j=i.Column.ofConst(1,C,i.Column.Schema.int),H=i.Column.ofStringArray(M),G=i.Table.ofPartialColumns(o.BasicSchema.atom_site,{auth_asym_id:k,auth_atom_id:H,auth_comp_id:N,auth_seq_id:j,Cartn_x:i.Column.ofFloatArray(R),Cartn_y:i.Column.ofFloatArray(E),Cartn_z:i.Column.ofFloatArray(I),id:i.Column.ofIntArray(V),label_asym_id:k,label_atom_id:H,label_comp_id:N,label_seq_id:j,label_entity_id:i.Column.ofConst("1",C,i.Column.Schema.str),occupancy:i.Column.ofConst(1,C,i.Column.Schema.float),type_symbol:H,pdbx_PDB_model_num:i.Column.ofConst(0,C,i.Column.Schema.int)},C),z=new h.EntityBuilder;z.setNames([["MOL","Unknown Entity"]]),z.getEntityId("MOL",y.MoleculeType.Unknown,"A");const W=new s.ComponentBuilder(j,H);W.setNames([["MOL","Unknown Molecule"]]),W.add("MOL",0);const X=(0,o.createBasic)({entity:z.getEntityTable(),chem_comp:W.getChemCompTable(),atom_site:G}),K=(await(0,f.createModels)(X,p.create(m),v)).representative;if(m.bounds.length>0){const J=m.bounds[0],[ae,te,ne]=J.length,$=_.ModelSymmetry.fromCell(c.Vec3.create(ae*x,te*x,ne*x),c.Vec3.create(Math.PI/2,Math.PI/2,Math.PI/2));_.ModelSymmetry.Provider.set(K,$)}const Q=await a(m,b).runInContext(v);return r.Model.trajectoryFromModelAndCoordinates(K,Q)}var p;(function(m){function v(P){return P?.kind==="lammpstrj"}m.is=v;function b(P){return{kind:"lammpstrj",name:"lammpstrj",data:P}}m.create=b})(p||(Os.LammpsTrajectoryFormat=p={}));function u(m,v){return v===void 0&&(v="real"),n.Task.create("Parse Lammps Traj Data",b=>d(m,b,v))}return Os}var BP={},Bu={},uz;function Tae(){if(uz)return Bu;uz=1,Object.defineProperty(Bu,"__esModule",{value:!0}),Bu.isV3=n,Bu.handleCountsV3=i,Bu.handleAtomsV3=c,Bu.handleBondsV3=o;const e=lt(),t=Or(),r=Wi();function n(f){return f.trim().endsWith("V3000")}function i(f){const y=t.TokenBuilder.create(f.data,1),_=t.TokenBuilder.create(f.data,1);return t.Tokenizer.eatLine(f),s(f),s(f),s(f),h(f,y),h(f,_),t.Tokenizer.eatLine(f),{atomCount:(0,r.TokenColumnProvi
4126der)(y)(e.Column.Schema.int).value(0),bondCount:(0,r.TokenColumnProvider)(_)(e.Column.Schema.int).value(0)}}function c(f,y){const _=t.TokenBuilder.create(f.data,y*2),g=t.TokenBuilder.create(f.data,y*2),a=t.TokenBuilder.create(f.data,y*2),d=t.TokenBuilder.create(f.data,y*2);for(let p=0;p<y;++p){t.Tokenizer.markLine(f),s(f),s(f),s(f);const{position:u}=f;h(f,d),h(f,_),h(f,g),h(f,a),f.position=u}return t.Tokenizer.eatLine(f),t.Tokenizer.eatLine(f),{count:y,x:(0,r.TokenColumnProvider)(_)(e.Column.Schema.float),y:(0,r.TokenColumnProvider)(g)(e.Column.Schema.float),z:(0,r.TokenColumnProvider)(a)(e.Column.Schema.float),type_symbol:(0,r.TokenColumnProvider)(d)(e.Column.Schema.str),formal_charge:e.Column.ofConst(0,y,e.Column.Schema.int)}}function o(f,y){const _=t.TokenBuilder.create(f.data,y*2),g=t.TokenBuilder.create(f.data,y*2),a=t.TokenBuilder.create(f.data,y*2);for(let d=0;d<y;++d){t.Tokenizer.markLine(f),s(f),s(f),s(f);const{position:p}=f;h(f,a),h(f,_),h(f,g),f.position=p}return t.Tokenizer.eatLine(f),t.Tokenizer.eatLine(f),{count:y,atomIdxA:(0,r.TokenColumnProvider)(_)(e.Column.Schema.float),atomIdxB:(0,r.TokenColumnProvider)(g)(e.Column.Schema.float),order:(0,r.TokenColumnProvider)(a)(e.Column.Schema.float)}}function s(f){t.Tokenizer.skipWhitespace(f),t.Tokenizer.eatValue(f)}function h(f,y){const{position:_}=f;t.Tokenizer.skipWhitespace(f),t.Tokenizer.eatValue(f),t.Tokenizer.trim(f,_,f.position),t.TokenBuilder.addUnchecked(y,f.tokenStart,f.tokenEnd)}return Bu}var lz;
4126function xae(){if(lz)return BP;lz=1,Object.defineProperty(BP,"__esModule",{value:!0}),BP.parseSdf=g;const e=lt(),t=Iw(),r=nt(),n=Tr(),i=Or(),c=Wi(),o=Tae(),s="$$$$";function h(a){const d=i.TokenBuilder.create(a.data,32),p=i.TokenBuilder.create(a.data,32);for(;a.position<a.length;){const u=i.Tokenizer.readLine(a);if(u.startsWith(s))break;if(u&&u.startsWith("> ")){i.TokenBuilder.add(d,a.tokenStart+2,a.tokenEnd),i.Tokenizer.markLine(a);const m=a.tokenStart;let v=a.tokenEnd,b=!1;for(;a.position<a.length;){const P=i.Tokenizer.readLine(a);if(!P||P.startsWith(s)||P.startsWith("> ")){i.TokenBuilder.add(p,m,v),b=!0;break}v=a.tokenEnd}b||i.TokenBuilder.add(p,m,v)}}return{dataHeader:(0,c.TokenColumnProvider)(d)(e.Column.Schema.str),data:(0,c.TokenColumnProvider)(p)(e.Column.Schema.str)}}function f(a){return{atomCount:+a.substr(0,3),bondCount:+a.substr(3,3)}}function y(a){const d=i.Tokenizer.readLine(a).trim(),p=i.Tokenizer.readLine(a).trim(),u=i.Tokenizer.readLine(a).trim(),m=i.Tokenizer.readLine(a),v=(0,o.isV3)(m),{atomCount:b,bondCount:P}=v?(0,o.handleCountsV3)(a):f(m);if(Number.isNaN(b)||Number.isNaN(P)){for(;a.position<a.length&&!i.Tokenizer.readLine(a).startsWith(s););return}const C={atomIdx:e.Column.ofConst(0,b,e.Column.Schema.int),charge:e.Column.ofConst(0,b,e.Column.Schema.int)},l=v?(0,o.handleAtomsV3)(a,b):(0,t.handleAtoms)(a,b),S=v?(0,o.handleBondsV3)(a,P):(0,t.handleBonds)(a,P),T=v?{formalCharges:C}:(0,t.handlePropertiesBlock)(a),A=h(a);return{molFile:{title:d,program:p,comment:u,atoms:l,bonds:S,...T},dataItems:A}}function _(a){const d=(0,i.Tokenizer)(a),p=[];for(;d.position<d.length;){const u=y(d);u&&p.push(u)}return n.ReaderResult.success({compounds:p})}function g(a){return r.Task.create("Parse Sdf",async()=>_(a))}return BP}var Rd={},dz;function Aae(){if(dz)return Rd;dz=1,Object.defineProperty(Rd,"__esModule",{value:!0}),Rd.SdfFormat=void 0,Rd.trajectoryFromSdf=n;const e=nt(),t=LQ();var r;(function(i){function c(s){return s?.kind==="sdf"}i.is=c;function o(s){return{kind:"sdf",name:s.molFile.title,data:s}}i.create=o})(r||(Rd.SdfFormat=r={}));function n(i){return e.Task.create("Parse SDF",c=>(0,t.getMolModels)(i.molFile,r.create(i),c))}return Rd}var RP={},fz;function Mae(){if(fz)return RP;fz=1,Object.defineProperty(RP,"__esModule",{value:!0}),RP.parseTrr=n;const e=nt(),t=Tr();async function r(i){const c=new DataView(i.buffer),o={frames:[],boxes:[],times:[],timeOffset:0,deltaTime:0},s=o.frames,h=o.boxes,f=o.times;let y=0;for(;;){y+=8;const _=c.getInt32(y);y+=4,y+=_;const g=c.getInt32(y+8),a=c.getInt32(y+12),d=c.getInt32(y+16),p=c.getInt32(y+28),u=c.getInt32(y+32),m=c.getInt32(y+36),v=c.getInt32(y+40);y+=52;const b=g/9,P=v*3;if(b===8?f.push(c.getFloat64(y)):f.push(c.getFloat32(y)),y+=2*b,g){const C=new Float32Array(9);if(b===8)for(let l=0;l<9;++l)C[l]=c.getFloat64(y)*10,y+=8;else for(let l=0;l<9;++l)C[l]=c.getFloat32(y)*10,y+=4;h.push(C)}if(y+=a,y+=d,p){const C=new Float32Array(v),l=new Float32Array(v),S=new Float32Array(v);if(b===8)for(let T=0;T<v;++T)C[T]=c.getFloat64(y)*10,l[T]=c.getFloat64(y+8)*10,S[T]=c.getFloat64(y+16)*10,y+=24;else{const T=new Uint32Array(i.buffer,y,P);for(let x=0;x<P;++x){const M=T[x];T[x]=(M&255)<<24|(M&65280)<<8|M>>8&65280|M>>24&255}const A=new Float32Array(i.buffer,y,P);for(let x=0;x<v;++x)C[x]=A[x*3]*10,l[x]=A[x*3+1]*10,S[x]=A[x*3+2]*10,y+=12}s.push({count:v,x:C,y:l,z:S})}if(y+=u,y+=m,y>=i.byteLength)break}return f.length>=1&&(o.timeOffset=f[0]),f.length>=2&&(o.deltaTime=f[1]-f[0]),o}function n(i){return e.Task.create("Parse TRR",async c=>{try{c.update({canAbort:!0,message:"Parsing trajectory..."});const o=await r(i);return t.ReaderResult.success(o)}catch(o){return t.ReaderResult.error(""+o)}})}return RP}var OP={},mz;function Dae(){if(mz)return OP;mz=1,Object.defineProperty(OP,"__esModule",{value:!0}),OP.coordinatesFromTrr=i;const e=nt(),t=vl(),r=d2(),n=Ge();function i(c){return e.Task.create("Parse TRR",async o=>{await o.update("Converting to coordinates");const s=(0,t.Time)(c.deltaTime,"step"),h=(0,t.Time)(c.timeOffset,s.unit),f=[];for(let y=0,_=c.frames.length;y<_;++y){const g=c.boxes[y],a=n.Vec3.fromArray((0,n.Vec3)(),g,0),d=n.Vec3.fromArray((0,n.Vec3)(),g,3),p=n.Vec3.fromArray((0,n.Vec3)(),g,6);f.push({elementCount:c.frames[y].count,cell:r.Cell.fromBasis(a,d,p),x:c.frames[y].x,y:c.frames[y].y,z:c.frames[y].z,xyzOrdering:{isIdentity:!0},time:(0,t.Time)(h.value+s.value*y,s.unit)})}return t.Coordinates.create(f,s,h)})}return OP}var kP={},lv={},dv={},pz;
4126function Iae(){if(pz)return dv;pz=1,Object.defineProperty(dv,"__esModule",{value:!0}),dv.IOBuffer=void 0;const e=1024*8,t=[];class r{constructor(i,c={}){this._mark=0,this._marks=[],this.offset=0,this.littleEndian=!0;let o=!1;i===void 0&&(i=e),typeof i=="number"?i=new ArrayBuffer(i):o=!0;const s=c.offset?c.offset>>>0:0,h=i.byteLength-s;let f=s;!(i instanceof ArrayBuffer)&&!(i instanceof SharedArrayBuffer)&&(i.byteLength!==i.buffer.byteLength&&(f=i.byteOffset+s),i=i.buffer),o?this._lastWrittenByte=h:this._lastWrittenByte=0,this.buffer=i,this.length=h,this.byteLength=h,this.byteOffset=f,this._data=new DataView(this.buffer,f,h)}available(i=1){return this.offset+i<=this.length}isLittleEndian(){return this.littleEndian}setLittleEndian(){return this.littleEndian=!0,this}isBigEndian(){return!this.littleEndian}setBigEndian(){return this.littleEndian=!1,this}skip(i){return i===void 0&&(i=1),this.offset+=i,this}seek(i){return this.offset=i,this}mark(){return this._mark=this.offset,this}reset(){return this.offset=this._mark,this}pushMark(){return this._marks.push(this.offset),this}popMark(){const i=this._marks.pop();if(i===void 0)throw new Error("Mark stack empty");return this.seek(i),this}rewind(){return this.offset=0,this}ensureAvailable(i){if(i===void 0&&(i=1),!this.available(i)){const o=(this.offset+i)*2,s=new Uint8Array(o);s.set(new Uint8Array(this.buffer)),this.buffer=s.buffer,this.length=this.byteLength=o,this._data=new DataView(this.buffer)}return this}readBoolean(){return this.readUint8()!==0}readInt8(){return this._data.getInt8(this.offset++)}readUint8(){return this._data.getUint8(this.offset++)}readByte(){return this.readUint8()}readBytes(i){i===void 0&&(i=1);const c=new Uint8Array(i);for(let o=0;o<i;o++)c[o]=this.readByte();return c}readInt16(){const i=this._data.getInt16(this.offset,this.littleEndian);return this.offset+=2,i}readUint16(){const i=this._data.getUint16(this.offset,this.littleEndian);return this.offset+=2,i}readInt32(){const i=this._data.getInt32(this.offset,this.littleEndian);return this.offset+=4,i}readUint32(){const i=this._data.getUint32(this.offset,this.littleEndian);return this.offset+=4,i}readFloat32(){const i=this._data.getFloat32(this.offset,this.littleEndian);return this.offset+=4,i}readFloat64(){const i=this._data.getFloat64(this.offset,this.littleEndian);return this.offset+=8,i}readChar(){return String.fromCharCode(this.readInt8())}readChars(i=1){t.length=i;for(let c=0;c<i;c++)t[c]=this.readChar();return t.join("")}writeBoolean(i=!1){return this.writeUint8(i?255:0),this}writeInt8(i){return this.ensureAvailable(1),this._data.setInt8(this.offset++,i),this._updateLastWrittenByte(),this}writeUint8(i){return this.ensureAvailable(1),this._data.setUint8(this.offset++,i),this._updateLastWrittenByte(),this}writeByte(i){return this.writeUint8(i)}writeBytes(i){this.ensureAvailable(i.length);for(let c=0;c<i.length;c++)this._data.setUint8(this.offset++,i[c]);return this._updateLastWrittenByte(),this}writeInt16(i){return this.ensureAvailable(2),this._data.setInt16(this.offset,i,this.littleEndian),this.offset+=2,this._updateLastWrittenByte(),this}writeUint16(i){return this.ensureAvailable(2),this._data.setUint16(this.offset,i,this.littleEndian),this.offset+=2,this._updateLastWrittenByte(),this}writeInt32(i){return this.ensureAvailable(4),this._data.setInt32(this.offset,i,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeUint32(i){return this.ensureAvailable(4),this._data.setUint32(this.offset,i,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeFloat32(i){return this.ensureAvailable(4),this._data.setFloat32(this.offset,i,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeFloat64(i){return this.ensureAvailable(8),this._data.setFloat64(this.offset,i,this.littleEndian),this.offset+=8,this._updateLastWrittenByte(),this}writeChar(i){return this.writeUint8(i.charCodeAt(0))}writeChars(i){for(let c=0;c<i.length;c++)this.writeUint8(i.charCodeAt(c));return this}toArray(){return new Uint8Array(this.buffer,this.byteOffset,this._lastWrittenByte)}_updateLastWrittenByte(){this.offset>this._lastWrittenByte&&(this._lastWrittenByte=this.offset)}}return dv.IOBuffer=r,dv}var hz;function wae(){if(hz)return lv;
4126hz=1,Object.defineProperty(lv,"__esModule",{value:!0}),lv.NetcdfReader=void 0;const e=Iae();function t(l,S){if(l)throw new TypeError("Not a valid NetCDF v3.x file: "+S)}function r(l){l.offset%4!==0&&l.skip(4-l.offset%4)}function n(l){const S=l.readUint32(),T=l.readChars(S);return r(l),T}const i={BYTE:1,CHAR:2,SHORT:3,INT:4,FLOAT:5,DOUBLE:6};function c(l){switch(Number(l)){case i.BYTE:return"byte";case i.CHAR:return"char";case i.SHORT:return"short";case i.INT:return"int";case i.FLOAT:return"float";case i.DOUBLE:return"double";default:return"undefined"}}function o(l){switch(Number(l)){case i.BYTE:return 1;case i.CHAR:return 1;case i.SHORT:return 2;case i.INT:return 4;case i.FLOAT:return 4;case i.DOUBLE:return 8;default:return-1}}function s(l){switch(String(l)){case"byte":return i.BYTE;case"char":return i.CHAR;case"short":return i.SHORT;case"int":return i.INT;case"float":return i.FLOAT;case"double":return i.DOUBLE;default:return-1}}function h(l,S){if(l!==1){const T=new Array(l);for(let A=0;A<l;A++)T[A]=S();return T}else return S()}function f(l,S,T){switch(S){case i.BYTE:return l.readBytes(T);case i.CHAR:return y(l.readChars(T));case i.SHORT:return h(T,l.readInt16.bind(l));case i.INT:return h(T,l.readInt32.bind(l));case i.FLOAT:return h(T,l.readFloat32.bind(l));case i.DOUBLE:return h(T,l.readFloat64.bind(l));default:t(!0,"non valid type "+S);return}}function y(l){return l.charCodeAt(l.length-1)===0?l.substring(0,l.length-1):l}function _(l,S){const T=s(S.type),A=S.size/o(T),x=new Array(A);for(let M=0;M<A;M++)x[M]=f(l,T,1);return x}function g(l,S,T){const A=s(S.type),x=S.size?S.size/o(A):1,M=T.length,D=new Array(M),V=T.recordStep;for(let R=0;R<M;R++){const E=l.offset;D[R]=f(l,A,x),l.seek(E+V)}return D}const a=0,d=10,p=11,u=12;function m(l,S){const T={recordDimension:{length:l.readUint32()}};T.version=S;const A=v(l);T.recordDimension.id=A.recordId,T.recordDimension.name=A.recordName,T.dimensions=A.dimensions,T.globalAttributes=b(l);const x=P(l,A.recordId,S);return T.variables=x.variables,T.recordDimension.recordStep=x.recordStep,T}function v(l){let S,T,A;const x=l.readUint32();if(x===a)return t(l.readUint32()!==a,"wrong empty tag for list of dimensions"),[];{t(x!==d,"wrong tag for list of dimensions");const M=l.readUint32();S=new Array(M);for(let D=0;D<M;D++){const V=n(l),R=l.readUint32();R===0&&(T=D,A=V),S[D]={name:V,size:R}}return{dimensions:S,recordId:T,recordName:A}}}function b(l){let S;const T=l.readUint32();if(T===a)return t(l.readUint32()!==a,"wrong empty tag for list of attributes"),[];{t(T!==u,"wrong tag for list of attributes");const A=l.readUint32();S=new Array(A);for(let x=0;x<A;x++){const M=n(l),D=l.readUint32();t(D<1||D>6,"non valid type "+D);const V=l.readUint32(),R=f(l,D,V);r(l),S[x]={name:M,type:c(D),value:R}}}return S}function P(l,S,T){const A=l.readUint32();let x=0,M;if(A===a)return t(l.readUint32()!==a,"wrong empty tag for list of variables"),[];{t(A!==p,"wrong tag for list of variables");const D=l.readUint32();M=new Array(D);for(let V=0;V<D;V++){const R=n(l),E=l.readUint32(),I=new Array(E);for(let L=0;L<E;L++)I[L]=l.readUint32();const B=b(l),w=l.readUint32();t(w<1&&w>6,"non valid type "+w);const O=l.readUint32();let F=l.readUint32();T===2&&(t(F>0,"offsets larger than 4GB not supported"),F=l.readUint32()),I[0]===S&&(x+=O),M[V]={name:R,dimensions:I,attributes:B,type:c(w),size:O,offset:F,record:I[0]===S}}}return{variables:M,recordStep:x}}class C{constructor(S){const T=new e.IOBuffer(S);T.setBigEndian(),t(T.readChars(3)!=="CDF","should start with CDF");const A=T.readByte();t(A>2,"unknown version"),this.header=m(T,A),this.buffer=T}get version(){return this.header.version===1?"classic format":"64-bit offset format"}get recordDimension(){return this.header.recordDimension}get dimensions(){return this.header.dimensions}get globalAttributes(){return this.header.globalAttributes}get variables(){return this.header.variables}hasDataVariable(S){return this.header.variables&&this.header.variables.findIndex(T=>T.name===S)!==-1}getDataVariable(S){var T;let A;if(typeof S=="string"?A=(T=this.header.variables)===null||T===void 0?void 0:T.find(x=>x.name===S):A=S,A===void 0)throw new Error("variable not found");return this.buffer.seek(A.offset),A.record?g(this.buffer,A,this.header.recordDimension):_(this.buffer,A)}}return lv.NetcdfReader=C,lv}var gz;function Vae(){if(gz)return kP;
4126gz=1,Object.defineProperty(kP,"__esModule",{value:!0}),kP.parseNctraj=i;const e=nt(),t=wae(),r=Tr();async function n(c){const o=new t.NetcdfReader(c.buffer),s={coordinates:[],time:[],timeOffset:0,deltaTime:1};for(const h of o.getDataVariable("coordinates"))s.coordinates.push(h);if(o.hasDataVariable("velocities")){const h=[];for(const f of o.getDataVariable("velocities"))h.push(f);s.velocities=h}if(o.hasDataVariable("forces")){const h=[];for(const f of o.getDataVariable("forces"))h.push(f);s.forces=h}if(o.hasDataVariable("cell_lengths")){const h=[];for(const f of o.getDataVariable("cell_lengths"))h.push(f);s.cell_lengths=h}if(o.hasDataVariable("cell_angles")){const h=[];for(const f of o.getDataVariable("cell_angles"))h.push(f);s.cell_angles=h}if(o.hasDataVariable("time")){const h=[];for(const f of o.getDataVariable("time"))h.push(f);s.time=h}return s.time&&(s.time.length>=1&&(s.timeOffset=s.time[0]),s.time.length>=2&&(s.deltaTime=s.time[1]-s.time[0])),s}function i(c){return e.Task.create("Parse NCTRAJ",async o=>{try{o.update({canAbort:!0,message:"Parsing trajectory..."});const s=await n(c);return r.ReaderResult.success(s)}catch(s){return r.ReaderResult.error(""+s)}})}return kP}var FP={},yz;function Eae(){if(yz)return FP;yz=1,Object.defineProperty(FP,"__esModule",{value:!0}),FP.coordinatesFromNctraj=i;const e=nt(),t=vl(),r=d2(),n=Ge();function i(c){return e.Task.create("Parse NCTRAJ",async o=>{await o.update("Converting to coordinates");const s=(0,t.Time)(c.deltaTime,"step"),h=(0,t.Time)(c.timeOffset,s.unit),f=[];for(let y=0,_=c.coordinates.length;y<_;++y){const g=c.coordinates[y],a=g.length/3,d=new Float32Array(a),p=new Float32Array(a),u=new Float32Array(a);for(let v=0,b=g.length;v<b;v+=3)d[v/3]=g[v],p[v/3]=g[v+1],u[v/3]=g[v+2];const m={elementCount:a,x:d,y:p,z:u,xyzOrdering:{isIdentity:!0},time:(0,t.Time)(h.value+s.value*y,s.unit)};if(c.cell_lengths){const v=c.cell_lengths[y],b=n.Vec3.scale((0,n.Vec3)(),n.Vec3.unitX,v[0]),P=n.Vec3.scale((0,n.Vec3)(),n.Vec3.unitY,v[1]),C=n.Vec3.scale((0,n.Vec3)(),n.Vec3.unitZ,v[2]);m.cell=r.Cell.fromBasis(b,P,C)}f.push(m)}return t.Coordinates.create(f,s,h)})}return FP}var Od={},vz;function Bae(){if(vz)return Od;vz=1,Object.defineProperty(Od,"__esModule",{value:!0}),Od.PrmtopFormat=void 0,Od.topologyFromPrmtop=_;const e=lt(),t=dt(),r=yT(),n=nt(),i=vn(),c=Ai(),o=xi(),s=qS(),h=cc();function f(g){const{pointers:a,residuePointer:d,residueLabel:p,atomName:u}=g,m=a.NATOM,v=a.NRES,b=new Uint32Array(m),P=[],C=(k,j,H)=>{const G=p.value(k);for(let z=j,W=H;z<W;++z)b[z]=k+1,P[z]=G};for(let k=0,j=v-1;k<j;++k)C(k,d.value(k)-1,d.value(k+1)-1);C(v-1,d.value(v-1)-1,m);const l=e.Column.ofIntArray(b),S=e.Column.ofStringArray(P),T=new Array(m),A=new Array(m),x=new Uint32Array(m),M=new Uint32Array(m),D=new o.EntityBuilder,V=new c.ComponentBuilder(l,u);let R="",E=0,I="",B=0,w=t.MoleculeType.Unknown,O=-1;for(let k=0,j=m;k<j;++k){const H=l.value(k);if(H!==O){const G=S.value(k),z=(0,t.getMoleculeType)(V.add(G,k).type,G);z!==w&&(I=(0,s.getChainId)(E),E+=1,B=0),R=D.getEntityId(G,z,I),B+=1,O=H,w=z}T[k]=R,A[k]=I,x[k]=B,M[k]=k}const F=e.Column.ofIntArray(M),L=e.Column.ofStringArray(A),U=new Array(m);for(let k=0;k<m;++k)U[k]=(0,h.guessElementSymbolString)(u.value(k),S.value(k));const q=e.Table.ofPartialColumns(i.BasicSchema.atom_site,{auth_asym_id:L,auth_atom_id:e.Column.asArrayColumn(u),auth_comp_id:S,auth_seq_id:l,id:e.Column.asArrayColumn(F),label_asym_id:L,label_atom_id:e.Column.asArrayColumn(u),label_comp_id:S,label_seq_id:e.Column.ofIntArray(x),label_entity_id:e.Column.ofStringArray(T),occupancy:e.Column.ofConst(1,m,e.Column.Schema.float),type_symbol:e.Column.ofStringArray(U),pdbx_PDB_model_num:e.Column.ofConst(1,m,e.Column.Schema.int)},m);return(0,i.createBasic)({entity:D.getEntityTable(),chem_comp:V.getChemCompTable(),atom_site:q})}var y;(function(g){function a(p){return p?.kind==="prmtop"}g.is=a;function d(p){return{kind:"prmtop",name:p.title.join(" ")||"PRMTOP",data:p}}g.fromPrmtop=d})(y||(Od.PrmtopFormat=y={}));function _(g){return n.Task.create("Parse PRMTOP",async a=>{const d=y.fromPrmtop(g),p=f(g),{pointers:{NBONH:u,NBONA:m},bondsIncHydrogen:v,bondsWithoutHydrogen:b}=g,P=u+m,C={indexA:e.Column.ofLambda({value:l=>l<u?v.value(l*3)/3:b.value((l-u)*3)/3,rowCount:P,schema:e.Column.Schema.int}),indexB:e.Column.ofLambda({value:l=>l<u?v.value(l*3+1)/3:b.value((l-u)*3+1)/3,rowCount:P,schema:e.Column.Schema.int}),order:e.Column.ofConst(1,P,e.Column.Schema.int)};return r.Topology.create(g.title.join(" ")||"PRMTOP",p,C,d)})}return Od}var kd={},bz;
4126function Rae(){if(bz)return kd;bz=1,Object.defineProperty(kd,"__esModule",{value:!0}),kd.TopFormat=void 0,kd.topologyFromTop=g;const e=lt(),t=dt(),r=yT(),n=nt(),i=vn(),c=Ai(),o=xi(),s=qS(),h=cc();function f(a){const{molecules:d,compounds:p}=a,u={};let m=0;for(let j=0,H=d._rowCount;j<H;++j){const G=d.compound.value(j),z=d.molCount.value(j),{atoms:W}=p[G];e.Column.asArrayColumn(W.atom),e.Column.asArrayColumn(W.resnr),e.Column.asArrayColumn(W.residu),m+=z*W._rowCount;let X=W.resnr.value(0);u[G]=!0;for(let Y=1,K=W._rowCount;Y<K;++Y){const Q=W.resnr.value(Y);if(Q!==X){u[G]=!1;break}X=Q}}const v=new Array(m),b=new Uint32Array(m),P=new Array(m);let C=0;for(let j=0,H=d._rowCount;j<H;++j){const G=d.compound.value(j),z=d.molCount.value(j),{atoms:W}=p[G],X=u[G];for(let Y=0;Y<z;++Y)for(let K=0,Q=W._rowCount;K<Q;++K)v[C]=W.atom.value(K),b[C]=W.resnr.value(K),P[C]=W.residu.value(K),X&&(b[C]+=Y),C+=1}const l=e.Column.ofStringArray(v),S=e.Column.ofIntArray(b),T=e.Column.ofStringArray(P),A=new Array(m),x=new Array(m),M=new Uint32Array(m),D=new Uint32Array(m),V=new o.EntityBuilder,R=new c.ComponentBuilder(S,l);let E="",I=0,B="",w=0,O=t.MoleculeType.Unknown,F=-1;for(let j=0,H=m;j<H;++j){const G=S.value(j);if(G!==F){const z=T.value(j),W=(0,t.getMoleculeType)(R.add(z,j).type,z);W!==O&&(B=(0,s.getChainId)(I),I+=1,w=0),E=V.getEntityId(z,W,B),w+=1,F=G,O=W}A[j]=E,x[j]=B,M[j]=w,D[j]=j}const L=e.Column.ofIntArray(D),U=e.Column.ofStringArray(x),q=new Array(m);for(let j=0;j<m;++j)q[j]=(0,h.guessElementSymbolString)(l.value(j),T.value(j));const N=e.Table.ofPartialColumns(i.BasicSchema.atom_site,{auth_asym_id:U,auth_atom_id:e.Column.asArrayColumn(l),auth_comp_id:T,auth_seq_id:S,id:e.Column.asArrayColumn(L),label_asym_id:U,label_atom_id:e.Column.asArrayColumn(l),label_comp_id:T,label_seq_id:e.Column.ofIntArray(M),label_entity_id:e.Column.ofStringArray(A),occupancy:e.Column.ofConst(1,m,e.Column.Schema.float),type_symbol:e.Column.ofStringArray(q),pdbx_PDB_model_num:e.Column.ofConst(1,m,e.Column.Schema.int)},m);return(0,i.createBasic)({entity:V.getEntityTable(),chem_comp:R.getChemCompTable(),atom_site:N})}function y(a){const{molecules:d,compounds:p}=a,u=[],m=[];let v=0;for(let b=0,P=d._rowCount;b<P;++b){const C=d.compound.value(b),l=d.molCount.value(b),{atoms:S,bonds:T}=p[C];if(T)for(let A=0;A<l;++A){for(let x=0,M=T._rowCount;x<M;++x)u.push(T.ai.value(x)-1+v),m.push(T.aj.value(x)-1+v);v+=S._rowCount}else if(C==="TIP3")for(let A=0;A<l;++A)u.push(0+v),m.push(1+v),u.push(0+v),m.push(2+v),v+=S._rowCount;else v+=l*S._rowCount}return{indexA:e.Column.ofIntArray(u),indexB:e.Column.ofIntArray(m),order:e.Column.ofConst(1,u.length,e.Column.Schema.int)}}var _;(function(a){function d(u){return u?.kind==="top"}a.is=d;function p(u){return{kind:"top",name:u.system||"TOP",data:u}}a.fromTop=p})(_||(kd.TopFormat=_={}));function g(a){return n.Task.create("Parse TOP",async d=>{const p=_.fromTop(a),u=f(a),m=y(a);return r.Topology.create(a.system||"TOP",u,m,p)})}return kd}var yi={},_z;function Vw(){if(_z)return yi;_z=1,Object.defineProperty(yi,"__esModule",{value:!0}),yi.TransformParam=void 0,yi.getDistanceDataFromStructureSelections=r,yi.getAngleDataFromStructureSelections=n,yi.getDihedralDataFromStructureSelections=i,yi.getLabelDataFromStructureSelections=c,yi.getOrientationDataFromStructureSelections=o,yi.getPlaneDataFromStructureSelections=s,yi.transformParamsNeedCentroid=f,yi.getTransformFromParams=y;const e=Ne(),t=Ge();function r(_){const g=_[0].loci,a=_[1].loci;return{pairs:[{loci:[g,a]}]}}function n(_){const g=_[0].loci,a=_[1].loci,d=_[2].loci;return{triples:[{loci:[g,a,d]}]}}function i(_){const g=_[0].loci,a=_[1].loci,d=_[2].loci,p=_[3].loci;return{quads:[{loci:[g,a,d,p]}]}}function c(_){return{infos:[{loci:_[0].loci}]}}function o(_){return{locis:_.map(g=>g.loci)}}function s(_){return{locis:_.map(g=>g.loci)}}const h={center:(0,t.Vec3)(),rotation:(0,t.Mat4)(),translationToCenter:(0,t.Mat4)(),translationFromCenter:(0,t.Mat4)(),translation:(0,t.Mat4)(),local:(0,t.Mat4)()};function f(_){var g;return _.name==="components"&&((g=_.params.rotationCenter)===null||g===void 0?void 0:g.name)==="centroid"}function y(_,g){var a,d;if(_.name==="matrix"){const p=(0,t.Mat4)();return t.Mat4.copy(p,_.params.data),_.params.transpose&&t.Mat4.transpose(p,p),p}else{((a=_.params.rotationCenter)===null||a===void 0?void 0:a.name)==="centroid"?t.Vec3.copy(h.center,g):((d=_.params.rotationCenter)===null||d===void 0?void 0:d.name)==="point"?t.Vec3.copy(h.center,_.params.rotationCenter.params.point):t.Vec3.set(h.center,0,0,0),t.Mat4.fromTranslation(h.translationToCenter,h.center),t.Mat4.fromRotation(h.rotation,_.params.angle*Math.PI/180,_.params.axis),t.Mat4.fromTranslation(h.translationFromCenter,t.Vec3.negate(h.center,h.center));const p=t.Mat4.mul3((0,t.Mat4)(),h.translationToCenter,h.rotation,h.translationFromCenter);return t.Mat4.fromTranslation(h.translation,_.params.translation),t.Mat4.mul(p,h.translation,p),p}}return yi.TransformParam=e.ParamDefinition.MappedStatic("matrix",{matrix:e.ParamDefinition.Group({data:e.ParamDefinition.Mat4(t.Mat4.identity()),transpose:e.ParamDefinition.Boolean(!1)},{isFlat:!0}),components:e.ParamDefinition.Group({translation:e.ParamDefinition.Vec3(t.Vec3.create(0,0,0)),axis:e.ParamDefinition.Vec3(t.Vec3.create(1,0,0)),angle:e.ParamDefinition.Numeric(0,{min:-360,max:360,step:1},{description:"Angle in Degrees"}),rotationCenter:e.ParamDefinition.MappedStatic("point",{point:e.ParamDefinition.Group({point:e.ParamDefinition.Vec3(t.Vec3.create(0,0,0))},{isFlat:!0}),centroid:e.ParamDefinition.Group({})})},{isFlat:!0})},{label:"Kind"}),yi}var Sz;function NQ(){return Sz||(Sz=1,(function(e){Object.defineProperty(e,"__esMo
4126dule",{value:!0}),e.StructureComplexElementTypes=e.CustomStructureProperties=e.CustomModelProperties=e.StructureComponent=e.StructureComplexElement=e.StructureSelectionFromBundle=e.StructureSelectionFromScript=e.MultiStructureSelectionFromBundle=e.MultiStructureSelectionFromExpression=e.StructureSelectionFromExpression=e.StructureInstances=e.TransformStructureConformation=e.StructureFromModel=e.StructureFromTrajectory=e.ModelWithCoordinates=e.ModelFromTrajectory=e.TrajectoryFromCifCore=e.TrajectoryFromCube=e.TrajectoryFromMOL2=e.TrajectoryFromSDF=e.TrajectoryFromMOL=e.TrajectoryFromLammpsTrajData=e.TrajectoryFromLammpsData=e.TrajectoryFromXYZ=e.TrajectoryFromGRO=e.TrajectoryFromPDB=e.TrajectoryFromMmCif=e.TrajectoryFromBlob=e.TrajectoryFromModelAndCoordinates=e.TopologyFromTop=e.TopologyFromPrmtop=e.TopologyFromPsf=e.CoordinatesFromLammpstraj=e.CoordinatesFromNctraj=e.CoordinatesFromTrr=e.CoordinatesFromXtc=e.CoordinatesFromDcd=void 0,e.getTrajectory=$;const t=wie(),r=Eie(),n=Bie(),i=Ge(),c=Rie(),o=Oie(),s=Mi(),h=Wie(),f=$ie(),y=Ke(),_=dr(),g=va(),a=Et(),d=nt(),p=et(),u=Ne(),m=Dw(),v=dae(),b=FQ(),P=jl(),C=jt(),l=Iw(),S=LQ(),T=fae(),A=mae(),x=pae(),M=hae(),D=gae(),V=yae(),R=vae(),E=bae(),I=ww(),B=_ae(),w=Sae(),O=Cae(),F=Pae(),L=xae(),U=Aae(),q=Gt(),N=Mae(),k=Dae(),j=Vae(),H=Eae(),G=Bae(),z=Rae(),W=Vw(),X=C.PluginStateTransform.BuiltIn({name:"coordinates-from-dcd",display:{name:"Parse DCD",description:"Parse DCD binary data."},from:[C.PluginStateObject.Data.Binary],to:C.PluginStateObject.Molecule.Coordinates})({apply({a:De}){return d.Task.create("Parse DCD",async Oe=>{const Fe=await(0,t.parseDcd)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,c.coordinatesFromDcd)(Fe.result).runInContext(Oe);return new C.PluginStateObject.Molecule.Coordinates(Le,{label:De.label,description:"Coordinates"})})}});e.CoordinatesFromDcd=X;const Y=C.PluginStateTransform.BuiltIn({name:"coordinates-from-xtc",display:{name:"Parse XTC",description:"Parse XTC binary data."},from:[C.PluginStateObject.Data.Binary],to:C.PluginStateObject.Molecule.Coordinates})({apply({a:De}){return d.Task.create("Parse XTC",async Oe=>{const Fe=await(0,D.parseXtc)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,V.coordinatesFromXtc)(Fe.result).runInContext(Oe);return new C.PluginStateObject.Molecule.Coordinates(Le,{label:De.label,description:"Coordinates"})})}});e.CoordinatesFromXtc=Y;const K=C.PluginStateTransform.BuiltIn({name:"coordinates-from-trr",display:{name:"Parse TRR",description:"Parse TRR binary data."},from:[C.PluginStateObject.Data.Binary],to:C.PluginStateObject.Molecule.Coordinates})({apply({a:De}){return d.Task.create("Parse TRR",async Oe=>{const Fe=await(0,N.parseTrr)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,k.coordinatesFromTrr)(Fe.result).runInContext(Oe);return new C.PluginStateObject.Molecule.Coordinates(Le,{label:De.label,description:"Coordinates"})})}});e.CoordinatesFromTrr=K;const Q=C.PluginStateTransform.BuiltIn({name:"coordinates-from-nctraj",display:{name:"Parse NCTRAJ",description:"Parse NCTRAJ binary data."},from:[C.PluginStateObject.Data.Binary],to:C.PluginStateObject.Molecule.Coordinates})({apply({a:De}){return d.Task.create("Parse NCTRAJ",async Oe=>{const Fe=await(0,j.parseNctraj)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,H.coordinatesFromNctraj)(Fe.result).runInContext(Oe);return new C.PluginStateObject.Molecule.Coordinates(Le,{label:De.label,description:"Coordinates"})})}});e.CoordinatesFromNctraj=Q;const J=C.PluginStateTransform.BuiltIn({name:"coordinates-from-lammpstraj",display:{name:"Parse LAMMPSTRAJ",description:"Parse LAMMPSTRAJ data."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Coordinates})({apply({a:De}){return d.Task.create("Parse LAMMPSTRAJ",async Oe=>{const Fe=await(0,O.parseLammpsTrajectory)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,F.coordinatesFromLammpsTrajectory)(Fe.result).runInContext(Oe);return new C.PluginStateObject.Molecule.Coordinates(Le,{label:De.label,description:"Coordinates"})})}});e.CoordinatesFromLammpstraj=J;const ae=C.PluginStateTransform.BuiltIn({name:"topology-from-psf",display:{name:"PSF Topology",description:"Create topology from PSF."},from:[C.PluginStateObject.Format.Psf],to:C.PluginStateObject.Molecule.Topology})({apply({a:De}
4126){return d.Task.create("Create Topology",async Oe=>{const Fe=await(0,f.topologyFromPsf)(De.data).runInContext(Oe);return new C.PluginStateObject.Molecule.Topology(Fe,{label:Fe.label||De.label,description:"Topology"})})}});e.TopologyFromPsf=ae;const te=C.PluginStateTransform.BuiltIn({name:"topology-from-prmtop",display:{name:"PRMTOP Topology",description:"Create topology from PRMTOP."},from:[C.PluginStateObject.Format.Prmtop],to:C.PluginStateObject.Molecule.Topology})({apply({a:De}){return d.Task.create("Create Topology",async Oe=>{const Fe=await(0,G.topologyFromPrmtop)(De.data).runInContext(Oe);return new C.PluginStateObject.Molecule.Topology(Fe,{label:Fe.label||De.label,description:"Topology"})})}});e.TopologyFromPrmtop=te;const ne=C.PluginStateTransform.BuiltIn({name:"topology-from-top",display:{name:"TOP Topology",description:"Create topology from TOP."},from:[C.PluginStateObject.Format.Top],to:C.PluginStateObject.Molecule.Topology})({apply({a:De}){return d.Task.create("Create Topology",async Oe=>{const Fe=await(0,z.topologyFromTop)(De.data).runInContext(Oe);return new C.PluginStateObject.Molecule.Topology(Fe,{label:Fe.label||De.label,description:"Topology"})})}});e.TopologyFromTop=ne;async function $(De,Oe,Fe){if(Oe.type===C.PluginStateObject.Molecule.Topology.type){const Le=Oe.data;return await y.Model.trajectoryFromTopologyAndCoordinates(Le,Fe).runInContext(De)}else if(Oe.type===C.PluginStateObject.Molecule.Model.type){const Le=Oe.data;return y.Model.trajectoryFromModelAndCoordinates(Le,Fe)}throw new Error("no model/topology found")}const ie=C.PluginStateTransform.BuiltIn({name:"trajectory-from-model-and-coordinates",display:{name:"Trajectory from Topology & Coordinates",description:"Create a trajectory from existing model/topology and coordinates."},from:C.PluginStateObject.Root,to:C.PluginStateObject.Molecule.Trajectory,params:{modelRef:u.ParamDefinition.Text("",{isHidden:!0}),coordinatesRef:u.ParamDefinition.Text("",{isHidden:!0})}})({getDependencies:({modelRef:De,coordinatesRef:Oe})=>{const Fe=[];return De&&Fe.push(De),Oe&&Fe.push(Oe),Fe},apply({params:De,dependencies:Oe}){return d.Task.create("Create trajectory from model/topology and coordinates",async Fe=>{const Le=Oe[De.coordinatesRef].data,He=await $(Fe,Oe[De.modelRef],Le),Pe={label:"Trajectory",description:`${He.frameCount} model${He.frameCount===1?"":"s"}`};return new C.PluginStateObject.Molecule.Trajectory(He,Pe)})}});e.TrajectoryFromModelAndCoordinates=ie;const Z=C.PluginStateTransform.BuiltIn({name:"trajectory-from-blob",display:{name:"Parse Blob",description:"Parse format blob into a single trajectory."},from:C.PluginStateObject.Format.Blob,to:C.PluginStateObject.Molecule.Trajectory})({apply({a:De}){return d.Task.create("Parse Format Blob",async Oe=>{const Fe=[];for(const He of De.data){if(He.kind!=="cif")continue;const Pe=He.data.blocks[0],Ie=await(0,s.trajectoryFromMmCIF)(Pe).runInContext(Oe);if(Ie.frameCount===0)throw new Error("No models found.");for(let Ee=0;Ee<Ie.frameCount;Ee++){const Ue=await d.Task.resolveInContext(Ie.getFrameAtIndex(Ee),Oe);Fe.push(Ue)}}for(let He=0;He<Fe.length;He++)y.Model.TrajectoryInfo.set(Fe[He],{index:He,size:Fe.length});const Le={label:"Trajectory",description:`${Fe.length} model${Fe.length===1?"":"s"}`};return new C.PluginStateObject.Molecule.Trajectory(new y.ArrayTrajectory(Fe),Le)})}});e.TrajectoryFromBlob=Z;function re(De){return{label:`${De.representative.entry}`,description:`${De.frameCount} model${De.frameCount===1?"":"s"}`}}const oe=C.PluginStateTransform.BuiltIn({name:"trajectory-from-mmcif",display:{name:"Trajectory from mmCIF",description:"Identify and create all separate models in the specified CIF data block"},from:C.PluginStateObject.Format.Cif,to:C.PluginStateObject.Molecule.Trajectory,params(De){if(!De)return{loadAllBlocks:u.ParamDefinition.Optional(u.ParamDefinition.Boolean(!1,{description:"If True, ignore Block Header and Block Index parameters and parse all datablocks into a single trajectory."})),blockHeader:u.ParamDefinition.Optional(u.ParamDefinition.Text(void 0,{description:"Header of the block to parse. If not specifed, Block Index parameter applies.",hideIf:Le=>Le.loadAllBlocks===!0})),blockIndex:u.ParamDefinition.Optional(u.ParamDefinition.Numeric(0,{min:0,step:1},{description:"Zero-based index of the block to parse. Only applies when Block Header parameter is not specified.",hideIf:Le=>Le.loadAllBlocks===!0||Le.blockHeader}))};const{blocks:Oe}=De.data,Fe=Oe.map(Le=>[Le.header,Le.header]);return Fe.push(["","[Use Block Index]"]),{loadAllBlocks:u.ParamDefinition.Optional(u.ParamDefinition.Boolean(!1,{description:"If True, ignore Block Header and Block Index parameters and parse all data blocks into a single trajectory."})),blockHeader:u.ParamDefinition.Optional(u.ParamDefinition.Select(Oe[0]&&Oe[0].header,Fe,{description:"Header of the block to parse. If not specifed, Block Index parameter applies.",hideIf:Le=>Le.loadAllBlocks===!0})),blockIndex:u.ParamDefinition.Optional(u.ParamDefinition.Numeric(0,{min:0,step:1,max:Oe.length-1},{description:"Zero-based index of the block to parse. Only applies when Block Header parameter is not specified.",hideIf:Le=>Le.loadAllBlocks===!0||Le.blockHeader}))}}})({isApplicable:De=>De.data.blocks.length>0,apply({a:De,params:Oe}){return d.Task.create("Parse mmCIF",async Fe=>{var Le;let He;if(Oe.loadAllBlocks){const Ie=[];for(const Ee of De.data.blocks){Fe.shouldUpdate&&await Fe.update(`Parsing ${Ee.header}...`);const Ue=await(0,s.trajectoryFromMmCIF)(Ee).runInContext(Fe);for(let $e=0;$e<Ue.frameCount;$e++)Ie.push(await d.Task.resolveInContext(Ue.getFrameAtIndex($e),Fe))}He=new y.ArrayTrajectory(Ie)}else{const Ie=Oe.blockHeader||De.data.blocks[(Le=Oe.blockIndex)!==null&&Le!==void 0?Le:0].header,Ee=De.data.blocks.find($e=>$e.header===Ie);if(!Ee)throw new Error(`Data block '${[Ie]}' not found.`);He=Ee.categoryNames.includes("chem_comp_atom")&&!Ee.categoryNames.includes("atom_site")&&!Ee.categoryNames.includes("ihm_sphere_obj_site")&&!Ee.categoryNames.includes("ihm_gaussian_obj_site")?await(0,s.trajectoryFromCCD)(Ee).runInContext(Fe):await(0,s.trajectoryFromMmCIF)(Ee,De.data).runInContext(Fe)}if(He.frameCount===0)throw new Error("No models found.");const Pe=re(He);return new C.PluginStateObject.Molecule.Trajectory(He,Pe)})}});e.TrajectoryFromMmCif=oe;const ce=C.PluginStateTransform.BuiltIn({name:"trajectory-from-pdb",display:{name:"Parse PDB",description:"Parse PDB string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory,params:{variant:u.ParamDefinition.Select("pdb",u.ParamDefinition.arrayToOptions(["pdb","pdbqt","pqr"]))}})({apply({a:De,params:Oe}){return d.Task.create("Parse PDB",async Fe=>{const Le=await(0,n.parsePDB)(De.data,De.label,Oe.variant).runInContext(Fe);if(Le.isError)throw new Error(Le.message);const He=await(0,h.trajectoryFromPDB)(Le.result).runInContext(Fe),Pe=re(He);return new C.PluginStateObject.Molecule.Trajectory(He,Pe)})}});e.TrajectoryFromPDB=ce;const ue=C.PluginStateTransform.BuiltIn({name:"trajectory-from-gro",display:{name:"Parse GRO",description:"Parse GRO string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory})({apply({a:De}){return d.Task.create("Parse GRO",async Oe=>{const Fe=await(0,r.parseGRO)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,o.trajectoryFromGRO)(Fe.result).runInContext(Oe),He=re(Le);return new C.PluginStateObject.Molecule.Trajectory(Le,He)})}});e.TrajectoryFromGRO=ue;const pe=C.PluginStateTransform.BuiltIn({name:"trajectory-from-xyz",display:{name:"Parse XYZ",description:"Parse XYZ string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory})({apply({a:De}){return d.Task.create("Parse XYZ",async Oe=>{const Fe=await(0,R.parseXyz)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,E.trajectoryFromXyz)(Fe.result).runInContext(Oe),He=re(Le);return new C.PluginStateObject.Molecule.Trajectory(Le,He)})}});e.TrajectoryFromXYZ=pe;const he=C.PluginStateTransform.BuiltIn({name:"trajectory-from-lammps-data",display:{name:"Parse Lammps Data",description:"Parse Lammps Data from string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory,params:{unitsStyle:u.ParamDefinition.Select("real",u.ParamDefinition.arrayToOptions(I.UnitStyles))}})({apply({a:De,params:Oe}){return d.Task.create("Parse Lammps Data",async Fe=>{const Le=await(0,B.parseLammpsData)(De.data).runInContext(Fe);if(Le.isError)throw new Error(Le.message);const He=await(0,w.trajectoryFromLammpsData)(Le.result,Oe.unitsStyle).runInContext(Fe),Pe=re(He);return new C.PluginStateObject.Molecule.Trajectory(He,Pe)})}});e.TrajectoryFromLammpsData=he;const fe=C.PluginStateTransform.BuiltIn({name:"trajectory-from-lammps-traj-data",display:{name:"Parse Lammps traj Data",description:"Parse Lammps Traj Data string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory,params:{unitsStyle:u.ParamDefinition.Select("real",u.ParamDefinition.arrayToOptions(I.UnitStyles))}})({apply({a:De,params:Oe}){return d.Task.create("Parse Lammps Data",async Fe=>{const Le=await(0,O.parseLammpsTrajectory)(De.data).runInContext(Fe);if(Le.isError)throw new Error(Le.message);const He=await(0,F.trajectoryFromLammpsTrajectory)(Le.result,Oe.unitsStyle).runInContext(Fe),Pe=re(He);return new C.PluginStateObject.Molecule.Trajectory(He,Pe)})}});e.TrajectoryFromLammpsTrajData=fe;const de=C.PluginStateTransform.BuiltIn({name:"trajectory-from-mol",display:{name:"Parse MOL",description:"Parse MOL string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory})({apply({a:De}){return d.Task.create("Parse MOL",async Oe=>{const Fe=await(0,l.parseMol)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,S.trajectoryFromMol)(Fe.result).runInContext(Oe),He=re(Le);return new C.PluginStateObject.Molecule.Trajectory(Le,He)})}});e.TrajectoryFromMOL=de;const ge=C.PluginStateTransform.BuiltIn({name:"trajectory-from-sdf",display:{name:"Parse SDF",description:"Parse SDF string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory})({apply({a:De}){return d.Task.create("Parse SDF",async Oe=>{const Fe=await(0,L.parseSdf)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=[];for(const Ie of Fe.result.compounds){const Ee=await(0,U.trajectoryFromSdf)(Ie).runInContext(Oe);for(let Ue=0;Ue<Ee.frameCount;Ue++)Le.push(await d.Task.resolveInContext(Ee.getFrameAtIndex(Ue),Oe))}const He=new y.ArrayTrajectory(Le),Pe=re(He);return new C.PluginStateObject.Molecule.Trajectory(He,Pe)})}});e.TrajectoryFromSDF=ge;const Ce=C.PluginStateTransform.BuiltIn({name:"trajectory-from-mol2",display:{name:"Parse MOL2",description:"Parse MOL2 string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory})({apply({a:De}){return d.Task.create("Parse MOL2",async Oe=>{const Fe=await(0,x.parseMol2)(De.data,De.label).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,M.trajectoryFromMol2)(Fe.result).runInContext(Oe),He=re(Le);return new C.PluginStateObject.Molecule.Trajectory(Le,He)})}});e.TrajectoryFromMOL2=Ce;const ve=C.PluginStateTransform.BuiltIn({name:"trajectory-from-cube",display:{name:"Parse Cube",description:"Parse Cube file to create a trajectory."},from:C.PluginStateObject.Format.Cube,to:C.PluginStateObject.Molecule.Trajectory})({apply({a:De}){return d.Task.create("Parse MOL",async Oe=>{const Fe=await(0,A.trajectoryFromCube)(De.data).runInContext(Oe),Le=re(Fe);return new C.PluginStateObject.Molecule.Trajectory(Fe,Le)})}});e.TrajectoryFromCube=ve;const le=C.PluginStateTransform.BuiltIn({name:"trajectory-from-cif-core",display:{name:"Parse CIF Core",description:"Identify and create all separate models in the specified CIF data block"},from:C.PluginStateObject.Format.Cif,to:C.PluginStateObject.Molecule.Trajectory,params(De){if(!De)return{blockHeader:u.ParamDefinition.Optional(u.ParamDefinition.Text(void 0,{description:"Header of the block to parse. If none is specifed, the 1st data block in the file is used."}))};const{blocks:Oe}=De.data;return{blockHeader:u.ParamDefinition.Optional(u.ParamDefinition.Select(Oe[0]&&Oe[0].header,Oe.map(Fe=>[Fe.header,Fe.header]),{description:"Header of the block to parse"}))}}})({apply({a:De,params:Oe}){return d.Task.create("Parse CIF Core",async Fe=>{const Le=Oe.blockHeader||De.data.blocks[0].header,He=De.data.blocks.find(Ee=>Ee.header===Le);if(!He)throw new Error(`Data block '${[Le]}' not found.`);const Pe=await(0,T.trajectoryFromCifCore)(He).runInContext(Fe);if(Pe.frameCount===0)throw new Error("No models found.");const Ie=re(Pe);return new C.PluginStateObject.Molecule.Trajectory(Pe,Ie)})}});e.TrajectoryFromCifCore=le;const me=De=>De+1,ee=De=>De-1,se=C.PluginStateTransform.BuiltIn({name:"model-from-trajectory",display:{name:"Molecular Model",description:"Create a molecular model from specified index in a trajectory."},from:C.PluginStateObject.Molecule.Trajectory,to:C.PluginStateObject.Molecule.Model,params:De=>De?{modelIndex:u.ParamDefinition.Converted(me,ee,u.ParamDefinition.Numeric(1,{min:1,max:De.data.frameCount,step:1},{description:"Model Index",immediateUpdate:!0}))}:{modelIndex:u.ParamDefinition.Numeric(0,{},{description:"Zero-based index of the model",immediateUpdate:!0})}})({isApplicable:De=>De.data.frameCount>0,apply({a:De,params:Oe}){return d.Task.create("Model from Trajectory",async Fe=>{let Le=Math.round(Oe.modelIndex)%De.data.frameCount;Le<0&&(Le+=De.data.frameCount);const He=await d.Task.resolveInContext(De.data.getFrameAtIndex(Le),Fe),Pe=`Model ${Le+1}`,Ie=De.data.frameCount===1?void 0:`of ${De.data.frameCount}`;return new C.PluginStateObject.Molecule.Model(He,{label:Pe,description:Ie})})},interpolate(De,Oe,Fe){return{modelIndex:Fe>=1?Oe.modelIndex:De.modelIndex+Math.floor((Oe.modelIndex-De.modelIndex+1)*Fe)}},dispose({b:De}){De?.data.customProperties.dispose()}});e.ModelFromTrajectory=se;const ye=C.PluginStateTransform.BuiltIn({name:"structure-from-trajectory",display:{name:"Structure from Trajectory",description:"Create a molecular structure from a trajectory."},from:C.PluginStateObject.Molecule.Trajectory,to:C.PluginStateObject.Molecule.Structure})({apply({a:De}){return d.Task.create("Build Structure",async Oe=>{const Fe=await y.Structure.ofTrajectory(De.data,Oe),Le={label:"Ensemble",description:y.Structure.elementDescription(Fe)};return new C.PluginStateObject.Molecule.Structure(Fe,Le)}
4126)},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureFromTrajectory=ye;const Se=C.PluginStateTransform.BuiltIn({name:"structure-from-model",display:{name:"Structure",description:"Create a molecular structure (model, assembly, or symmetry) from the specified model."},from:C.PluginStateObject.Molecule.Model,to:C.PluginStateObject.Molecule.Structure,params(De){return m.RootStructureDefinition.getParams(De&&De.data)}})({canAutoUpdate({oldParams:De,newParams:Oe}){return m.RootStructureDefinition.canAutoUpdate(De.type,Oe.type)},apply({a:De,params:Oe},Fe){return d.Task.create("Build Structure",async Le=>m.RootStructureDefinition.create(Fe,Le,De.data,Oe&&Oe.type))},update:({a:De,b:Oe,oldParams:Fe,newParams:Le})=>(0,p.deepEqual)(Fe,Le)?Oe.data.model===De.data?a.StateTransformer.UpdateResult.Unchanged:y.Model.areHierarchiesEqual(De.data,Oe.data.model)?(Oe.data=Oe.data.remapModel(De.data),a.StateTransformer.UpdateResult.Updated):a.StateTransformer.UpdateResult.Recreate:a.StateTransformer.UpdateResult.Recreate,dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureFromModel=Se;const Ae=C.PluginStateTransform.BuiltIn({name:"transform-structure-conformation",display:{name:"Transform Conformation"},isDecorator:!0,from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:{transform:W.TransformParam}})({canAutoUpdate({newParams:De}){return De.transform.name!=="matrix"},apply({a:De,params:Oe}){const Fe=(0,W.transformParamsNeedCentroid)(Oe.transform)?De.data.boundary.sphere.center:i.Vec3.unit,Le=(0,W.getTransformFromParams)(Oe.transform,Fe),He=y.Structure.transform(De.data,Le);return new C.PluginStateObject.Molecule.Structure(He,{label:De.label,description:`${De.description} [Transformed]`})},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.TransformStructureConformation=Ae;const _e=C.PluginStateTransform.BuiltIn({name:"structure-instances",display:{name:"Structure Instances"},isDecorator:!0,from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:{transforms:u.ParamDefinition.ObjectList({transform:W.TransformParam},()=>"Transform")}})({canAutoUpdate(){return!0},apply({a:De,params:Oe}){const Fe=Oe.transforms.some(Pe=>(0,W.transformParamsNeedCentroid)(Pe.transform))?De.data.boundary.sphere.center:i.Vec3.unit,Le=Oe.transforms.map(Pe=>(0,W.getTransformFromParams)(Pe.transform,Fe));if(!Le.length)return De;const He=y.Structure.instances(De.data,Le);return new C.PluginStateObject.Molecule.Structure(He,{label:De.label,description:`${De.description} [Instanced]`})},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureInstances=_e;const be=C.PluginStateTransform.BuiltIn({name:"model-with-coordinates",display:{name:"Model With Coordinates",description:"Updates the current model with provided coordinate frame"},from:C.PluginStateObject.Molecule.Model,to:C.PluginStateObject.Molecule.Model,params:{frameIndex:u.ParamDefinition.Optional(u.ParamDefinition.Numeric(0,void 0,{isHidden:!0})),frameCount:u.ParamDefinition.Optional(u.ParamDefinition.Numeric(1,void 0,{isHidden:!0})),atomicCoordinateFrame:u.ParamDefinition.Optional(u.ParamDefinition.Value(void 0,{isHidden:!0}))},isDecorator:!0})({apply({a:De,params:Oe}){var Fe,Le;if(!Oe.atomicCoordinateFrame)return De;const He={...De.data,atomicConformation:y.Model.getAtomicConformationFromFrame(De.data,Oe.atomicCoordinateFrame)};return y.Model.TrajectoryInfo.set(He,{index:(Fe=Oe.frameIndex)!==null&&Fe!==void 0?Fe:0,size:(Le=Oe.frameCount)!==null&&Le!==void 0?Le:1}),new C.PluginStateObject.Molecule.Model(He,{label:De.label,description:De.description})},update:({a:De,b:Oe,oldParams:Fe,newParams:Le})=>{var He,Pe;return Fe.atomicCoordinateFrame===Le.atomicCoordinateFrame?a.StateTransformer.UpdateResult.Unchanged:(Le.atomicCoordinateFrame?Oe.data={...Oe.data,atomicConformation:y.Model.getAtomicConformationFromFrame(Oe.data,Le.atomicCoordinateFrame)}:Oe.data=De.data,y.Model.TrajectoryInfo.set(Oe.data,{index:(He=Le.frameIndex)!==null&&He!==void 0?He:0,size:(Pe=Le.frameCount)!==null&&Pe!==void 0?Pe:1}
4126),a.StateTransformer.UpdateResult.Updated)}});e.ModelWithCoordinates=be;const xe=C.PluginStateTransform.BuiltIn({name:"structure-selection-from-expression",display:{name:"Selection",description:"Create a molecular structure from the specified expression."},from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:()=>({expression:u.ParamDefinition.Value(_.MolScriptBuilder.struct.generator.all,{isHidden:!0}),label:u.ParamDefinition.Optional(u.ParamDefinition.Text("",{isHidden:!0}))})})({apply({a:De,params:Oe,cache:Fe}){const{selection:Le,entry:He}=b.StructureQueryHelper.createAndRun(De.data,Oe.expression);if(Fe.entry=He,y.StructureSelection.isEmpty(Le))return a.StateObject.Null;const Pe=y.StructureSelection.unionStructure(Le),Ie={label:`${Oe.label||"Selection"}`,description:y.Structure.elementDescription(Pe)};return new C.PluginStateObject.Molecule.Structure(Pe,Ie)},update:({a:De,b:Oe,oldParams:Fe,newParams:Le,cache:He})=>{if(Fe.expression!==Le.expression)return a.StateTransformer.UpdateResult.Recreate;const Pe=He.entry;if(Pe.currentStructure===De.data)return a.StateTransformer.UpdateResult.Unchanged;const Ie=b.StructureQueryHelper.updateStructure(Pe,De.data);return y.StructureSelection.isEmpty(Ie)?a.StateTransformer.UpdateResult.Null:(b.StructureQueryHelper.updateStructureObject(Oe,Ie,Le.label),a.StateTransformer.UpdateResult.Updated)},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureSelectionFromExpression=xe;const we=C.PluginStateTransform.BuiltIn({name:"structure-multi-selection-from-expression",display:{name:"Multi-structure Measurement Selection",description:"Create selection object from multiple structures."},from:C.PluginStateObject.Root,to:C.PluginStateObject.Molecule.Structure.Selections,params:()=>({selections:u.ParamDefinition.ObjectList({key:u.ParamDefinition.Text(void 0,{description:"A unique key."}),ref:u.ParamDefinition.Text(),groupId:u.ParamDefinition.Optional(u.ParamDefinition.Text()),expression:u.ParamDefinition.Value(_.MolScriptBuilder.struct.generator.empty)},De=>De.ref,{isHidden:!0}),isTransitive:u.ParamDefinition.Optional(u.ParamDefinition.Boolean(!1,{isHidden:!0,description:"Remap the selections from the original structure if structurally equivalent."})),label:u.ParamDefinition.Optional(u.ParamDefinition.Text("",{isHidden:!0}))})})({apply({params:De,cache:Oe,dependencies:Fe}){const Le=new Map,He=[];let Pe=0;for(const Ee of De.selections){const{selection:Ue,entry:$e}=b.StructureQueryHelper.createAndRun(Fe[Ee.ref].data,Ee.expression);Le.set(Ee.key,$e);const Ye=y.StructureSelection.toLociWithSourceUnits(Ue);He.push({key:Ee.key,structureRef:Ee.ref,loci:Ye,groupId:Ee.groupId}),Pe+=y.StructureElement.Loci.size(Ye)}Oe.entries=Le;const Ie={label:`${De.label||"Multi-selection"}`,description:`${De.selections.length} source(s), ${Pe} element(s) total`};return new C.PluginStateObject.Molecule.Structure.Selections(He,Ie)},update:({b:De,oldParams:Oe,newParams:Fe,cache:Le,dependencies:He})=>{if(!!Oe.isTransitive!=!!Fe.isTransitive)return a.StateTransformer.UpdateResult.Recreate;const Pe=Le.entries,Ie=new Map,Ee=new Map;for(const Qe of De.data)Ee.set(Qe.key,Qe);let Ue=!1,$e=0;const Ye=[];for(const Qe of Fe.selections){const it=He[Qe.ref].data;let ht=!1;if(Pe.has(Qe.key)){const mt=Pe.get(Qe.key);if(b.StructureQueryHelper.isUnchanged(mt,Qe.expression,it)&&Ee.has(Qe.key)){const St=Ee.get(Qe.key);St.groupId!==Qe.groupId&&(St.groupId=Qe.groupId,Ue=!0),Ie.set(Qe.key,mt),Ye.push(St),$e+=y.StructureElement.Loci.size(St.loci);continue}if(mt.expression!==Qe.expression)ht=!0;else{let St=!1;if(Fe.isTransitive)if(y.Structure.areUnitIdsAndIndicesEqual(mt.originalStructure,it)){const Bt=b.StructureQueryHelper.run(mt,mt.originalStructure);mt.currentStructure=it,Ie.set(Qe.key,mt);const Ot=y.StructureElement.Loci.remap(y.StructureSelection.toLociWithSourceUnits(Bt),it);Ye.push({key:Qe.key,structureRef:Qe.ref,loci:Ot,groupId:Qe.groupId}),$e+=y.StructureElement.Loci.size(Ot),Ue=!0}else St=!0;else St=!0;if(St){Ue=!0;const Bt=b.StructureQueryHelper.updateStructure(mt,it);Ie.set(Qe.key,mt);const Ot=y.StructureSelection.toLociWithSourceUnits(Bt);Ye.push({key:Qe.key,structureRef:Qe.ref,loci:Ot,groupId:Qe.groupId}),$e+=y.StructureElement.Loci.size(Ot)}}}else ht=!0;if(ht){Ue=!0;const{selection:mt,entry:St}=b.StructureQueryHelper.createAndRun(it,Qe.expression);Ie.set(Qe.key,St);const Bt=y.StructureSelection.toLociWithSourceUnits(mt);Ye.push({key:Qe.key,structureRef:Qe.ref,loci:Bt,groupId:Qe.groupId}),$e+=y.StructureElement.Loci.size(Bt)}}return Ue?(Le.entries=Ie,De.data=Ye,De.label=`${Fe.label||"Multi-selection"}`,De.description=`${Ye.length} source(s), ${$e}
4126 element(s) total`,a.StateTransformer.UpdateResult.Updated):a.StateTransformer.UpdateResult.Unchanged}});e.MultiStructureSelectionFromExpression=we;const Be=C.PluginStateTransform.BuiltIn({name:"structure-multi-selection-from-bundle",display:{name:"Multi-structure Measurement Selection",description:"Create selection object from multiple structures."},from:C.PluginStateObject.Root,to:C.PluginStateObject.Molecule.Structure.Selections,params:()=>({selections:u.ParamDefinition.ObjectList({key:u.ParamDefinition.Text(void 0,{description:"A unique key."}),ref:u.ParamDefinition.Text(),groupId:u.ParamDefinition.Optional(u.ParamDefinition.Text()),bundle:u.ParamDefinition.Value(y.StructureElement.Bundle.Empty)},De=>De.ref,{isHidden:!0}),isTransitive:u.ParamDefinition.Optional(u.ParamDefinition.Boolean(!1,{isHidden:!0,description:"Remap the selections from the original structure if structurally equivalent."})),label:u.ParamDefinition.Optional(u.ParamDefinition.Text("",{isHidden:!0}))})})({apply({params:De,cache:Oe,dependencies:Fe}){const Le=new Map,He=[];let Pe=0;for(const Ee of De.selections){const Ue=Fe[Ee.ref].data,$e=y.StructureElement.Bundle.toLoci(Ee.bundle,Ue);He.push({key:Ee.key,structureRef:Ee.ref,loci:$e,groupId:Ee.groupId}),Pe+=y.StructureElement.Loci.size($e),Le.set(Ee.key,{source:Ue})}Oe.entries=Le;const Ie={label:`${De.label||"Multi-selection"}`,description:`${De.selections.length} source(s), ${Pe} element(s) total`};return new C.PluginStateObject.Molecule.Structure.Selections(He,Ie)},update:({b:De,oldParams:Oe,newParams:Fe,cache:Le,dependencies:He})=>{if(!!Oe.isTransitive!=!!Fe.isTransitive)return a.StateTransformer.UpdateResult.Recreate;const Pe=Le.entries,Ie=new Map,Ee=new Map;for(const it of Oe.selections)Ee.set(it.key,it.bundle);const Ue=new Map;for(const it of De.data)Ue.set(it.key,it);let $e=!1,Ye=0;const Qe=[];for(const it of Fe.selections){let ht=!1;if(Pe.has(it.key)){const mt=He[it.ref].data,St=Pe.get(it.key),Bt=Ee.get(it.key);if(Bt&&mt===St.source&&it.bundle.hash===St.source.hashCode&&y.StructureElement.Bundle.areEqual(it.bundle,Bt)){const Ot=Ue.get(it.key);Ot.groupId!==it.groupId&&(Ot.groupId=it.groupId,$e=!0),Ie.set(it.key,St),Qe.push(Ot),Ye+=y.StructureElement.Loci.size(Ot.loci);continue}ht=!0}else ht=!0;if(ht){$e=!0;const mt=He[it.ref].data,St=y.StructureElement.Bundle.toLoci(it.bundle,mt);Qe.push({key:it.key,structureRef:it.ref,loci:St,groupId:it.groupId}),Ye+=y.StructureElement.Loci.size(St),Ie.set(it.key,{source:mt})}}return $e?(Le.entries=Ie,De.data=Qe,De.label=`${Fe.label||"Multi-selection"}`,De.description=`${Qe.length} source(s), ${Ye} element(s) total`,a.StateTransformer.UpdateResult.Updated):a.StateTransformer.UpdateResult.Unchanged}});e.MultiStructureSelectionFromBundle=Be;const Me=C.PluginStateTransform.BuiltIn({name:"structure-selection-from-script",display:{name:"Selection",description:"Create a molecular structure from the specified script."},from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:()=>({script:u.ParamDefinition.Script({language:"mol-script",expression:"(sel.atom.atom-groups :residue-test (= atom.resname ALA))"}),label:u.ParamDefinition.Optional(u.ParamDefinition.Text(""))})})({apply({a:De,params:Oe,cache:Fe}){const{selection:Le,entry:He}=b.StructureQueryHelper.createAndRun(De.data,Oe.script);Fe.entry=He;const Pe=y.StructureSelection.unionStructure(Le),Ie={label:`${Oe.label||"Selection"}`,description:y.Structure.elementDescription(Pe)};return new C.PluginStateObject.Molecule.Structure(Pe,Ie)},update:({a:De,b:Oe,oldParams:Fe,newParams:Le,cache:He})=>{if(!g.Script.areEqual(Fe.script,Le.script))return a.StateTransformer.UpdateResult.Recreate;const Pe=He.entry;if(Pe.currentStructure===De.data)return a.StateTransformer.UpdateResult.Unchanged;const Ie=b.StructureQueryHelper.updateStructure(Pe,De.data);return b.StructureQueryHelper.updateStructureObject(Oe,Ie,Le.label),a.StateTransformer.UpdateResult.Updated},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureSelectionFromScript=Me;const Re=C.PluginStateTransform.BuiltIn({name:"structure-selection-from-bundle",display:{name:"Selection",description:"Create a molecular structure from the specified structure-element bundle."},from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:()=>({bundle:u.ParamDefinition.Value(y.StructureElement.Bundle.Empty,{isHidden:!0}),label:u.ParamDefinition.Optional(u.ParamDefinition.Text("",{isHidden:!0}))})})({apply({a:De,params:Oe,cache:Fe}){if(Oe.bundle.hash!==De.data.hashCode)return a.StateObject.Null;Fe.source=De.data;const Le=y.StructureElement.Bundle.toStructure(Oe.bundle,De.data);if(Le.elementCount===0)return a.StateObject.Null;const He={label:`${Oe.label||"Selection"}`,description:y.Structure.elementDescription(Le)};return new C.PluginStateObject.Molecule.Structure(Le,He)},update:({a:De,b:Oe,oldParams:Fe,newParams:Le,cache:He})=>
4126{if(!y.StructureElement.Bundle.areEqual(Fe.bundle,Le.bundle))return a.StateTransformer.UpdateResult.Recreate;if(Le.bundle.hash!==De.data.hashCode)return a.StateTransformer.UpdateResult.Null;if(He.source===De.data)return a.StateTransformer.UpdateResult.Unchanged;He.source=De.data;const Pe=y.StructureElement.Bundle.toStructure(Le.bundle,De.data);return Pe.elementCount===0?a.StateTransformer.UpdateResult.Null:(Oe.label=`${Le.label||"Selection"}`,Oe.description=y.Structure.elementDescription(Pe),Oe.data=Pe,a.StateTransformer.UpdateResult.Updated)},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureSelectionFromBundle=Re,e.StructureComplexElementTypes={polymer:"polymer",protein:"protein",nucleic:"nucleic",water:"water",branched:"branched",ligand:"ligand","non-standard":"non-standard",coarse:"coarse","atomic-sequence":"atomic-sequence","atomic-het":"atomic-het",spheres:"spheres"};const Te=u.ParamDefinition.objectToOptions(e.StructureComplexElementTypes),Ve=C.PluginStateTransform.BuiltIn({name:"structure-complex-element",display:{name:"Complex Element",description:"Create a molecular structure from the specified model."},from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:{type:u.ParamDefinition.Select("atomic-sequence",Te,{isHidden:!0})}})({apply({a:De,params:Oe}){let Fe,Le;switch(Oe.type){case"polymer":Fe=P.StructureSelectionQueries.polymer.query,Le="Polymer";break;case"protein":Fe=P.StructureSelectionQueries.protein.query,Le="Protein";break;case"nucleic":Fe=P.StructureSelectionQueries.nucleic.query,Le="Nucleic";break;case"water":Fe=y.Queries.internal.water(),Le="Water";break;case"branched":Fe=P.StructureSelectionQueries.branchedPlusConnected.query,Le="Branched";break;case"ligand":Fe=P.StructureSelectionQueries.ligandPlusConnected.query,Le="Ligand";break;case"non-standard":Fe=P.StructureSelectionQueries.nonStandardPolymer.query,Le="Non-standard";break;case"coarse":Fe=P.StructureSelectionQueries.coarse.query,Le="Coarse";break;case"atomic-sequence":Fe=y.Queries.internal.atomicSequence(),Le="Sequence";break;case"atomic-het":Fe=y.Queries.internal.atomicHet(),Le="HET Groups/Ligands";break;case"spheres":Fe=y.Queries.internal.spheres(),Le="Coarse Spheres";break;default:(0,q.assertUnreachable)(Oe.type)}const He=Fe(new y.QueryContext(De.data)),Pe=y.StructureSelection.unionStructure(He);return Pe.elementCount===0?a.StateObject.Null:new C.PluginStateObject.Molecule.Structure(Pe,{label:Le,description:y.Structure.elementDescription(Pe)})},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureComplexElement=Ve;const qe=C.PluginStateTransform.BuiltIn({name:"structure-component",display:{name:"Component",description:"A molecular structure component."},from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:v.StructureComponentParams})({apply({a:De,params:Oe,cache:Fe}){return(0,v.createStructureComponent)(De.data,Oe,Fe)},update:({a:De,b:Oe,oldParams:Fe,newParams:Le,cache:He})=>(0,v.updateStructureComponent)(De.data,Oe,Fe,Le,He),dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureComponent=qe;const ke=C.PluginStateTransform.BuiltIn({name:"custom-model-properties",display:{name:"Custom Model Properties"},isDecorator:!0,from:C.PluginStateObject.Molecule.Model,to:C.PluginStateObject.Molecule.Model,params:(De,Oe)=>Oe.customModelProperties.getParams(De?.data)})({apply({a:De,params:Oe},Fe){return d.Task.create("Custom Props",async Le=>(await ze(De.data,Fe,Le,Oe),new C.PluginStateObject.Molecule.Model(De.data,{label:De.label,description:De.description})))},update({a:De,b:Oe,oldParams:Fe,newParams:Le},He){return d.Task.create("Custom Props",async Pe=>{Oe.data=De.data,Oe.label=De.label,Oe.description=De.description;for(const Ie of Fe.autoAttach){const Ee=He.customModelProperties.get(Ie);Ee&&De.data.customProperties.reference(Ee.descriptor,!1)}return await ze(De.data,He,Pe,Le),a.StateTransformer.UpdateResult.Updated})},dispose({b:De}){De?.data.customProperties.dispose()}});e.CustomModelProperties=ke;async function ze(De,Oe,Fe,Le){const He={runtime:Fe,assetManager:Oe.managers.asset,errorContext:Oe.errorContext},{autoAttach:Pe,properties:Ie}=Le;for(const Ee of Object.keys(Ie)){const Ue=Oe.customModelProperties.get(Ee),$e=Ie[Ee];if(Pe.includes(Ee)||Ue.isHidden)try{await Ue.attach(He,De,$e,!0)}catch(Ye){Oe.log.warn(`Error attaching model prop '${Ee}': ${Ye}`)}else Ue.set(De,$e)}}const We=C.PluginStateTransform.BuiltIn({name:"custom-structure-properties",display:{name:"Custom Structure Properties"},isDecorator:!0,from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:(De,Oe)=>Oe.customStructureProperties.getParams(De?.data.root)})({apply({a:De,params:Oe},Fe){return d.Task.create("Custom Props",async Le=>(await Je(De.data.root,Fe,Le,Oe),new C.PluginStateObject.Molecule.Structure(De.data,{label:De.label,description:De.description})))},update({a:De,b:Oe,oldParams:Fe,newParams:Le}
4126,He){return De.data!==Oe.data?a.StateTransformer.UpdateResult.Recreate:d.Task.create("Custom Props",async Pe=>{Oe.data=De.data,Oe.label=De.label,Oe.description=De.description;for(const Ie of Fe.autoAttach){const Ee=He.customStructureProperties.get(Ie);Ee&&De.data.customPropertyDescriptors.reference(Ee.descriptor,!1)}return await Je(De.data.root,He,Pe,Le),a.StateTransformer.UpdateResult.Updated})},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.CustomStructureProperties=We;async function Je(De,Oe,Fe,Le){const He={runtime:Fe,assetManager:Oe.managers.asset,errorContext:Oe.errorContext},{autoAttach:Pe,properties:Ie}=Le;for(const Ee of Object.keys(Ie)){const Ue=Oe.customStructureProperties.get(Ee),$e=Ie[Ee];if(Pe.includes(Ee)||Ue.isHidden)try{await Ue.attach(He,De,$e,!0)}catch(Ye){Oe.log.warn(`Error attaching structure prop '${Ee}': ${Ye}`)}else Ue.set(De,$e)}}})(rA)),rA}var sr={},ks={},Cz;function Oae(){if(Cz)return ks;Cz=1,Object.defineProperty(ks,"__esModule",{value:!0}),ks.Ccp4Format=void 0,ks.getCcp4Origin=h,ks.getCcp4Size=f,ks.volumeFromCcp4=_;const e=nt(),t=rt(),r=Ge(),n=er(),i=RQ(),c=BQ(),o=Vt(),s=Pr();function h(a){return a.originX===0&&a.originY===0&&a.originZ===0?r.Vec3.create(a.NCSTART,a.NRSTART,a.NSSTART):r.Vec3.create(a.originX/(a.xLength/a.NX),a.originY/(a.yLength/a.NY),a.originZ/(a.zLength/a.NZ))}function f(a){return a.xLength===0&&a.yLength===0&&a.zLength===0?r.Vec3.create(a.NX,a.NY,a.NZ):r.Vec3.create(a.xLength,a.yLength,a.zLength)}function y(a){const d=(0,i.getCcp4ValueType)(a);switch(d){case c.TypedArrayValueType.Float32:return Float32Array;case c.TypedArrayValueType.Int8:return Int8Array;case c.TypedArrayValueType.Int16:return Int16Array;case c.TypedArrayValueType.Uint16:return Uint16Array}throw Error(`${d} is not a supported value format.`)}function _(a,d){return e.Task.create("Create Volume",async p=>{const{header:u,values:m}=a,v=f(u);d&&d.voxelSize&&r.Vec3.mul(v,v,d.voxelSize);const b=r.Vec3.create((0,n.degToRad)(u.alpha),(0,n.degToRad)(u.beta),(0,n.degToRad)(u.gamma)),P=u.ISPG>65536?0:u.ISPG,C=t.SpacegroupCell.create(P||"P 1",v,b),l=r.Vec3.create(u.MAPC-1,u.MAPR-1,u.MAPS-1),S=r.Tensor.convertToCanonicalAxisIndicesFastToSlow(l),T=[u.NX,u.NY,u.NZ],A=S([u.NC,u.NR,u.NS]),x=h(u);d?.offset&&r.Vec3.add(x,x,d.offset);const M=S(x),D=r.Vec3.create(M[0]/T[0],M[1]/T[1],M[2]/T[2]),V=r.Vec3.create(A[0]/T[0],A[1]/T[1],A[2]/T[2]),R=r.Tensor.Space(A,r.Tensor.invertAxisOrder(l),y(u)),E=r.Tensor.create(R,r.Tensor.Data1(m)),I=u.AMIN===0&&u.AMAX===0&&u.AMEAN===0&&u.ARMS===0,B={transform:{kind:"spacegroup",cell:C,fractionalBox:t.Box3D.create(D,r.Vec3.add((0,r.Vec3)(),D,V))},cells:E,stats:{min:Number.isNaN(u.AMIN)||I?(0,o.arrayMin)(m):u.AMIN,max:Number.isNaN(u.AMAX)||I?(0,o.arrayMax)(m):u.AMAX,mean:Number.isNaN(u.AMEAN)||I?(0,o.arrayMean)(m):u.AMEAN,sigma:Number.isNaN(u.ARMS)||u.ARMS===0?(0,o.arrayRms)(m):u.ARMS},periodicity:r.Vec3.isInteger(V)?"xyz":"none"};return{label:d?.label,entryId:d?.entryId,grid:B,instances:[{transform:r.Mat4.identity()}],sourceData:g.create(a),customProperties:new s.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)}})}var g;return(function(a){function d(u){return u?.kind==="ccp4"}a.is=d;function p(u){return{kind:"ccp4",name:u.name,data:u}}a.create=p})(g||(ks.Ccp4Format=g={})),ks}var Fd={},Pz;function kae(){if(Pz)return Fd;Pz=1,Object.defineProperty(Fd,"__esModule",{value:!0}),Fd.Dsn6Format=void 0,Fd.volumeFromDsn6=o;const e=nt(),t=rt(),r=Ge(),n=er(),i=Vt(),c=Pr();function o(h,f){return e.Task.create("Create Volume",async y=>{const{header:_,values:g}=h,a=r.Vec3.create(_.xlen,_.ylen,_.zlen);f&&f.voxelSize&&r.Vec3.mul(a,a,f.voxelSize);const d=r.Vec3.create((0,n.degToRad)(_.alpha),(0,n.degToRad)(_.beta),(0,n.degToRad)(_.gamma)),p=t.SpacegroupCell.create("P 1",a,d),u=[_.xRate,_.yRate,_.zRate],m=[_.xExtent,_.yExtent,_.zExtent],v=[_.xStart,_.yStart,_.zStart],b=r.Vec3.create(v[0]/u[0],v[1]/u[1],v[2]/u[2]),P=r.Vec3.create(m[0]/u[0],m[1]/u[1],m[2]/u[2]),C=r.Tensor.Space(m,[0,1,2],Float32Array),l=r.Tensor.create(C,r.Tensor.Data1(g));return{label:f?.label,entryId:f?.entryId,grid:{transform:{kind:"spacegroup",cell:p,fractionalBox:t.Box3D.create(b,r.Vec3.add(r.Vec3.zero(),b,P))},cells:l,stats:{min:(0,i.arrayMin)(g),max:(0,i.arrayMax)(g),mean:(0,i.arrayMean)(g),sigma:_.sigma!==void 0?_.sigma:(0,i.arrayRms)(g)},periodicity:r.Vec3.isInteger(P)?"xyz":"none"},instances:[{transform:r.Mat4.identity()}],sourceData:s.create(h),customProperties:new c.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)}})}var s;return(function(h){function f(_){return _?.kind==="dsn6"}h.is=f;
4126function y(_){return{kind:"dsn6",name:_.name,data:_}}h.create=y})(s||(Fd.Dsn6Format=s={})),Fd}var Ld={},Tz;function Fae(){if(Tz)return Ld;Tz=1,Object.defineProperty(Ld,"__esModule",{value:!0}),Ld.DxFormat=void 0,Ld.volumeFromDx=i;const e=Ge(),t=nt(),r=Vt(),n=Pr();function i(o,s){return t.Task.create("Create Volume",async()=>{const{header:h,values:f}=o,y=e.Tensor.Space(h.dim,[0,1,2],Float64Array),_=e.Tensor.create(y,e.Tensor.Data1(f)),g=e.Mat4.fromTranslation((0,e.Mat4)(),h.min),a=e.Mat4.fromScaling((0,e.Mat4)(),h.h);return e.Mat4.mul(g,g,a),{label:s?.label,entryId:s?.entryId,grid:{transform:{kind:"matrix",matrix:g},cells:_,stats:{min:(0,r.arrayMin)(f),max:(0,r.arrayMax)(f),mean:(0,r.arrayMean)(f),sigma:(0,r.arrayRms)(f)}},instances:[{transform:e.Mat4.identity()}],sourceData:c.create(o),customProperties:new n.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)}})}var c;return(function(o){function s(f){return f?.kind==="dx"}o.is=s;function h(f){return{kind:"dx",name:f.name,data:f}}o.create=h})(c||(Ld.DxFormat=c={})),Ld}var Nd={},xz;function Lae(){if(xz)return Nd;xz=1,Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.SegcifFormat=void 0,Nd.volumeFromSegmentationData=o;const e=sn(),t=nt(),r=rt(),n=Ge(),i=Pr(),c=vr();function o(h,f){return t.Task.create("Create Segmentation Volume",async y=>{var _;const{volume_data_3d_info:g,segmentation_data_3d:a}=h,d=r.SpacegroupCell.create(g.spacegroup_number.value(0)||"P 1",n.Vec3.ofArray(g.spacegroup_cell_size.value(0)),n.Vec3.scale((0,n.Vec3)(),n.Vec3.ofArray(g.spacegroup_cell_angles.value(0)),Math.PI/180)),p=g.axis_order.value(0),u=n.Tensor.convertToCanonicalAxisIndicesFastToSlow(p),m=u(g.sample_count.value(0)),v=n.Tensor.Space(m,n.Tensor.invertAxisOrder(p),Float32Array),b=n.Tensor.create(v,n.Tensor.Data1(a.values.toArray({array:Float32Array}))),P=n.Vec3.ofArray(u(g.origin.value(0))),C=n.Vec3.ofArray(u(g.dimensions.value(0))),l={label:f?.label,entryId:void 0,grid:{transform:{kind:"spacegroup",cell:d,fractionalBox:r.Box3D.create(P,n.Vec3.add((0,n.Vec3)(),P,C))},cells:b,stats:{min:0,max:1,mean:0,sigma:1}},instances:[{transform:n.Mat4.identity()}],sourceData:s.create(h),customProperties:new i.CustomProperties,_propertyData:{ownerId:f?.ownerId},_localPropertyData:Object.create(null)};e.Volume.PickingGranularity.set(l,"object");const S=new Map,T=new Map,{segment_id:A,set_id:x}=h.segmentation_data_table;for(let U=0,q=A.rowCount;U<q;++U){const N=A.value(U),k=x.value(U);k===0||N===0||(T.has(k)||T.set(k,new Set),T.get(k).add(N))}T.forEach((U,q)=>{U.forEach(N=>{S.has(N)||S.set(N,new Set),S.get(N).add(q)})});const M=[0,0,0],D=b.space.getCoords,V=b.data,[R,E,I]=l.grid.cells.space.dimensions,B=R-1,w=E-1,O=I-1,F={};T.forEach((U,q)=>{F[q]=[B,w,O,-1,-1,-1]});for(let U=0,q=V.length;U<q;++U){const N=V[U];if(N===0)continue;D(U,M);const k=F[N];M[0]<k[0]&&(k[0]=M[0]),M[1]<k[1]&&(k[1]=M[1]),M[2]<k[2]&&(k[2]=M[2]),M[0]>k[3]&&(k[3]=M[0]),M[1]>k[4]&&(k[4]=M[1]),M[2]>k[5]&&(k[5]=M[2])}const L={};return S.forEach((U,q)=>{L[q]=r.Box3D.create(n.Vec3.create(B,w,O),n.Vec3.create(-1,-1,-1))}),(0,c.objectForEach)(F,(U,q)=>{T.get(parseInt(q)).forEach(N=>{const k=L[N];U[0]<k.min[0]&&(k.min[0]=U[0]),U[1]<k.min[1]&&(k.min[1]=U[1]),U[2]<k.min[2]&&(k.min[2]=U[2]),U[3]>k.max[0]&&(k.max[0]=U[3]),U[4]>k.max[1]&&(k.max[1]=U[4]),U[5]>k.max[2]&&(k.max[2]=U[5])})}),e.Volume.Segmentation.set(l,{segments:S,sets:T,bounds:L,labels:(_=f?.segmentLabels)!==null&&_!==void 0?_:{}}),l})}var s;return(function(h){function f(_){return _?.kind==="segcif"}h.is=f;function y(_){return{kind:"segcif",name:_._name,data:_}}h.create=y})(s||(Nd.SegcifFormat=s={})),Nd}var qd={},LP={},Ru={},Az;function Nae(){if(Az)return Ru;Az=1,Object.defineProperty(Ru,"__esModule",{value:!0}),Ru.nextPow2=e,Ru.fft1d=h,Ru.fft3d=d,Ru.fft3dHermitian=p;function e(u){if(u<=1)return 1;let m=1;for(;m<u;)m<<=1;return m}const t=new Map;function r(u){let m=t.get(u);if(!m){const v=new Float64Array(u),b=new Float64Array(u);for(let l=0;l<u;l++){const S=-2*Math.PI*l/u;v[l]=Math.cos(S),b[l]=Math.sin(S)}const P=new Uint32Array(u);let C=0;for(let l=1;l<u;l++){let S=u>>1;for(;C&S;S>>=1)C^=S;C^=S,P[l]=C}m=[v,b,P],t.set(u,m)}return m}let n=new Float32Array(0),i=new Float32Array(0),c=new Float64Array(0),o=new Float64Array(0);function s(u,m){return m instanceof Float32Array?(n.length<u&&(n=new Float32Array(u),i=new Float32Array(u)),[n,i]):(c.length<u&&(c=new Float64Array(u),o=new Float64Array(u)),[c,o])}function h(u,m,v,b,P){const[C,l,S]=r(b);for(let x=1;x<b;x++){const M=S[x];if(x<M){const D=v+x*P,V=v+M*P;let R=u[D];u[D]=u[V],u[V]=R,R=m[D],m[D]=m[V],m[V]=R}}let T=0;for(let x=b;x>1;x>>=1)T++;let A=1;if((T&1)===1){for(let x=0;x<b;x+=2){const M=v+x*P,D=v+(x+1)*P,V=u[M],R=m[M],E=u[D],I=m[D];u[M]=V+E,m[M]=R+I,u[D]=V-E,m[D]=R-I}A=2}for(;A<b;A<<=2){const x=A<<2,M=b/x|0,D=M<<1,V=D+M;for(let R=0;R<b;R+=x){let E=0,I=0,B=0;for(let w=0;w<A;w++){const O=v+(R+w)*P,F=O+A*P,L=F+A*P,U=L+A*P,q=u[O],N=m[O],k=u[F],j=m[F],H=u[L],G=m[L],z=u[U],W=m[U],X=C[E],Y=l[E],K=C[I],Q=l[I],J=C[B],ae=l[B],te=k*K-j*Q,ne=k*Q+j*K,$=H*X-G*Y,ie=H*Y+G*X,Z=z*J-W*ae,re=z*ae+W*J,oe=q+te,ce=N+ne,ue=q-te,pe=N-ne,he=$+Z,fe=ie+re,de=$-Z,ge=ie-re;u[O]=oe+he,m[O]=ce+fe,u[L]=oe-he,m[L]=ce-fe,u[F]=ue+ge,m[F]=pe-de,u[U]=ue-ge,m[U]=pe+de,E+=M,I+=D,B+=V}}}}const f=16;function y(u,m,v,b,P,C,l,S){const T=f;for(let A=0;A<P;A+=T){const x=A+T<P?A+T:P;for(let M=0;M<C;M+=T){const D=M+T<C?M+T:C;for(let V=A;V<x;V++){const R=l+V*C;for(let E=M;E<D;E++){const I=R+E,B=S+E*P+V;v[B]=u[I],b[B]=m[I]}}}}}function _(u,m,v,b,P,C,l){const S=C*l;for(let T=0;T<P;T++)y(u,m,v,b,C,l,T*S,T*S)}function g(u,m,v,b,P,C,l){y(u,m,v,b,P,C*l,0,0)}function a(u,m,v,b,P,C,l){y(u,m,v,b,C*l,P,0,0)}function d(u,m,v,b,P){const[C,l]=s(v*b*P,u);for(let S=0;S<v;S++)for(let T=0;T<b;T++)h(u,m,S*b*P+T*P,P,1);_(u,m,C,l,v,b,P);for(let S=0;S<v;S++)for(let T=0;T<P;T++)h(C,l,S*P*b+T*b,b,1);_(C,l,u,m,v,P,b),g(u,m,C,l,v,b,P);for(let S=0;S<b;S++)for(let T=0;T<P;T++)h(C,l,S*P*v+T*v,v,1);a(C,l,u,m,v,b,P)}function p(u,m,v,b,P,C){const l=P>>1,S=l+1,T=v*b,[A,x]=s(T*S,u);_(u,m,A,x,v,b,S);for(let R=0;R<v;R++)for(let E=0;E<S;E++)h(A,x,R*S*b+E*b,b,1);_(A,x,u,m,v,S,b),g(u,m,A,x,v,b,S);for(let R=0;R<b;R++)for(let E=0;E<S;E++)h(A,x,R*S*v+E*v,v,1);a(A,x,u,m,v,b,S);const M=u instanceof Float32Array?new Float32Array(P):new Float64Array(P),D=u instanceof Float32Array?new Float32Array(P):new Float64Array(P);let V=0;for(;V+1<T;V+=2){const R=V*S,E=(V+1)*S;M[0]=u[R]-m[E],D[0]=m[R]+u[E];for(let w=1;w<l;w++){const O=u[R+w],F=m[R+w],L=u[E+w],U=m[E+w];M[w]=O-U,D[w]=F+L;const q=P-w;M[q]=O+U,D[q]=L-F}M[l]=u[R+l]-m[E+l],D[l]=m[R+l]+u[E+l],h(M,D,0,P,1);const I=V*P,B=(V+1)*P;for(let w=0;w<P;w++)C[I+w]=M[w],C[B+w]=D[w]}if(V<T){const R=V*S;M[0]=u[R],D[0]=m[R];for(let I=1;I<l;I++){const B=u[R+I],w=m[R+I];M[I]=B,D[I]=w;const O=P-I;M[O]=B,D[O]=-w}M[l]=u[R+l],D[l]=m[R+l],h(M,D,0,P,1);const E=V*P;for(let I=0;I<P;I++)C[E+I]=M[I]}}return Ru}var Mz;function qQ(){if(Mz)return LP;
4126Mz=1,Object.defineProperty(LP,"__esModule",{value:!0}),LP.computeElectronDensityFromReflections=t;const e=Nae();async function t(r,n,i,c,o,s,h){const f=r.length,y=s.operators;let _=0,g=0,a=0;for(let x=0;x<f;x++){const M=r[x],D=n[x],V=i[x],R=c[x],E=o[x];if(!(!isFinite(R)||!isFinite(E)))for(let I=0;I<y.length;I++){const B=y[I],w=Math.round(B[0]*M+B[1]*D+B[2]*V),O=Math.round(B[4]*M+B[5]*D+B[6]*V),F=Math.round(B[8]*M+B[9]*D+B[10]*V),L=Math.abs(w),U=Math.abs(O),q=Math.abs(F);L>_&&(_=L),U>g&&(g=U),q>a&&(a=q)}}const d=(0,e.nextPow2)(2*_+2),p=(0,e.nextPow2)(2*g+2),u=(0,e.nextPow2)(2*a+2);await h.update({message:"Expanding structure factors..."});const m=d*p*u,v=u>>1,b=v+1,P=d*p*b,C=new Float32Array(P),l=new Float32Array(P),S=new Uint8Array(P),T=(x,M,D,V,R)=>{let E=(x%d+d)%d,I=(M%p+p)%p,B=(D%u+u)%u,w=R*(Math.PI/180);B>v&&(E=(d-E)%d,I=(p-I)%p,B=u-B,w=-w);const O=E*p*b+I*b+B;S[O]||(C[O]=V*Math.cos(w),l[O]=V*Math.sin(w),S[O]=1)};for(let x=0;x<f;x++){const M=r[x],D=n[x],V=i[x],R=c[x],E=o[x];if(!(!isFinite(R)||!isFinite(E)))for(let I=0;I<y.length;I++){const B=y[I],w=Math.round(B[0]*M+B[1]*D+B[2]*V),O=Math.round(B[4]*M+B[5]*D+B[6]*V),F=Math.round(B[8]*M+B[9]*D+B[10]*V),L=360*(M*B[12]+D*B[13]+V*B[14]),U=E+L;T(w,O,F,R,U),T(-w,-O,-F,R,-U)}}await h.update({message:"Computing Fourier transform..."});const A=new Float32Array(m);return(0,e.fft3dHermitian)(C,l,d,p,u,A),{density:A,N0:d,N1:p,N2:u}}return LP}var Dz;function qae(){if(Dz)return qd;Dz=1,Object.defineProperty(qd,"__esModule",{value:!0}),qd.SfFormat=void 0,qd.volumeFromStructureFactors=o;const e=nt(),t=rt(),r=Ge(),n=Pr(),i=er(),c=qQ();function o(h,f){return e.Task.create("Compute Structure Factor Map",async y=>{var _;const g=(_=f?.mapType)!==null&&_!==void 0?_:"2fo-fc",{cell:a,symmetry:d,refln:p}=h,u=d.Int_Tables_number.value(0)||d["space_group_name_H-M"].value(0)||"P 1",m=r.Vec3.create(a.length_a.value(0),a.length_b.value(0),a.length_c.value(0)),v=r.Vec3.create((0,i.degToRad)(a.angle_alpha.value(0)),(0,i.degToRad)(a.angle_beta.value(0)),(0,i.degToRad)(a.angle_gamma.value(0))),b=t.SpacegroupCell.create(u,m,v),P=t.Spacegroup.create(b);if(await y.update({message:"Reading reflections..."}),p.index_h.rowCount===0)throw new Error("No reflection data found in the _refln category.");const l=p.index_h.toArray({array:Int16Array}),S=p.index_k.toArray({array:Int16Array}),T=p.index_l.toArray({array:Int16Array}),A=g==="2fo-fc"?p.pdbx_FWT:p.pdbx_DELFWT,x=g==="2fo-fc"?p.pdbx_PHWT:p.pdbx_DELPHWT;if(!A.isDefined||!x.isDefined){const j=g==="2fo-fc"?"pdbx_FWT":"pdbx_DELFWT",H=g==="2fo-fc"?"pdbx_PHWT":"pdbx_DELPHWT";throw new Error(`Structure factor CIF is missing required _refln.${j}/_refln.${H} map coefficients.`)}const M=A.toArray({array:Float32Array}),D=x.toArray({array:Float32Array}),{density:V,N0:R,N1:E,N2:I}=await(0,c.computeElectronDensityFromReflections)(l,S,T,M,D,P,y);await y.update({message:"Finalizing volume..."});const B=R*E*I;let w=1/0,O=-1/0,F=0,L=0;for(let j=0;j<B;j++){const H=V[j];H<w&&(w=H),H>O&&(O=H),F+=H,L+=H*H}const U=F/B,q=Math.sqrt(Math.max(0,L/B-U*U)),N=r.Tensor.Space([R,E,I],[0,1,2],Float32Array),k=r.Tensor.create(N,r.Tensor.Data1(V));return{label:f?.label,entryId:f?.entryId,grid:{transform:{kind:"spacegroup",cell:b,fractionalBox:t.Box3D.create(r.Vec3.zero(),r.Vec3.create(1,1,1))},cells:k,stats:{min:w,max:O,mean:U,sigma:q},periodicity:"xyz"},instances:[{transform:r.Mat4.identity()}],sourceData:s.create(h),customProperties:new n.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)}})}var s;return(function(h){function f(_){return _?.kind==="sf"}h.is=f;function y(_){return{kind:"sf",name:_._name,data:_}}h.create=y})(s||(qd.SfFormat=s={})),qd}var Ou={},Iz;function UQ(){if(Iz)return Ou;Iz=1,Object.defineProperty(Ou,"__esModule",{value:!0}),Ou.MtzFormat=void 0,Ou.detectMtzColumnPairs=s,Ou.volumeFromMtz=h;const e=nt(),t=rt(),r=Ge(),n=Pr(),i=er(),c=qQ(),o=[{label:"2fo-fc",amp:"FWT",phi:"PHWT"},{label:"fo-fc",amp:"DELFWT",phi:"DELPHWT"},{label:"fo-fc",amp:"DELFWT",phi:"PHDELWT"},{label:"2fo-fc",amp:"2FOFCWT",phi:"PH2FOFCWT"},{label:"fo-fc",amp:"FOFCWT",phi:"PHFOFCWT"},{label:"2fo-fc",amp:"FWT",phi:"PHIC"}];function s(y){const _=new Set(y.columns.map(d=>d.label)),g=[],a=new Set;for(const d of o)if(_.has(d.amp)&&_.has(d.phi)){const p=`${d.amp}|${d.phi}`;a.has(p)||(a.add(p),g.push({label:d.label,ampLabel:d.amp,phiLabel:d.phi}))}return g}function h(y,_){return e.Task.create("Compute MTZ Map",async g=>{var a,d;const p=(a=_?.ampLabel)!==null&&a!==void 0?a:"FWT",u=(d=_?.phiLabel)!==null&&d!==void 0?d:"PHWT",{header:m,data:v}=y;let b=m.cell;for(const le of m.datasets)if(le.id>0&&le.cell){b=le.cell;break}const[P,C,l,S,T,A]=b,x=r.Vec3.create(P,C,l),M=r.Vec3.create((0,i.degToRad)(S),(0,i.degToRad)(T),(0,i.degToRad)(A)),D=m.spaceGroupNumber||m.spaceGroupName||"P 1",V=t.SpacegroupCell.create(D,x,M),R=t.Spacegroup.create(V);await g.update({message:"Locating MTZ columns..."});const E=m.columns.find(le=>le.type==="H"&&le.label==="H"),I=m.columns.find(le=>le.type==="H"&&le.label==="K"),B=m.columns.find(le=>le.type==="H"&&le.label==="L"),w=m.columns.find(le=>le.label===p),O=m.columns.find(le=>le.label===u);
4126if(!E||!I||!B)throw new Error("MTZ file does not contain H, K, L index columns.");if(!w)throw new Error(`MTZ amplitude column '${p}' not found.`);if(!O)throw new Error(`MTZ phase column '${u}' not found.`);const F=E.index,L=I.index,U=B.index,q=w.index,N=O.index,k=m.nColumns,j=m.nReflections,H=m.missingNumber,G=le=>isNaN(H)?!isFinite(le):le===H||!isFinite(le);await g.update({message:"Extracting MTZ reflections..."});const z=new Int16Array(j),W=new Int16Array(j),X=new Int16Array(j),Y=new Float32Array(j),K=new Float32Array(j);let Q=0;for(let le=0;le<j;le++){const me=le*k,ee=v[me+q],se=v[me+N];G(ee)||G(se)||(z[Q]=Math.round(v[me+F]),W[Q]=Math.round(v[me+L]),X[Q]=Math.round(v[me+U]),Y[Q]=ee,K[Q]=se,Q++)}if(Q===0)throw new Error(`MTZ file contains no valid reflections for columns '${p}' and '${u}'.`);const J=z.subarray(0,Q),ae=W.subarray(0,Q),te=X.subarray(0,Q),ne=Y.subarray(0,Q),$=K.subarray(0,Q),{density:ie,N0:Z,N1:re,N2:oe}=await(0,c.computeElectronDensityFromReflections)(J,ae,te,ne,$,R,g);await g.update({message:"Finalizing volume..."});const ce=Z*re*oe;let ue=1/0,pe=-1/0,he=0,fe=0;for(let le=0;le<ce;le++){const me=ie[le];me<ue&&(ue=me),me>pe&&(pe=me),he+=me,fe+=me*me}const de=he/ce,ge=Math.sqrt(Math.max(0,fe/ce-de*de)),Ce=r.Tensor.Space([Z,re,oe],[0,1,2],Float32Array),ve=r.Tensor.create(Ce,r.Tensor.Data1(ie));return{label:_?.label,entryId:_?.entryId,grid:{transform:{kind:"spacegroup",cell:V,fractionalBox:t.Box3D.create(r.Vec3.zero(),r.Vec3.create(1,1,1))},cells:ve,stats:{min:ue,max:pe,mean:de,sigma:ge},periodicity:"xyz"},instances:[{transform:r.Mat4.identity()}],sourceData:f.create(y),customProperties:new n.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)}})}var f;return(function(y){function _(a){return a?.kind==="mtz"}y.is=_;function g(a){return{kind:"mtz",name:a.name,data:a}}y.create=g})(f||(Ou.MtzFormat=f={})),Ou}var wz;function Uae(){if(wz)return sr;wz=1,Object.defineProperty(sr,"__esModule",{value:!0}),sr.CustomVolumeProperties=sr.VolumeInstances=sr.VolumeTransform=sr.VolumeFromMtz=sr.VolumeFromStructureFactorsCif=sr.VolumeFromSegmentationCif=sr.VolumeFromDensityServerCif=sr.AssignColorVolume=sr.VolumeFromDx=sr.VolumeFromCube=sr.VolumeFromDsn6=sr.VolumeFromCcp4=void 0;const e=Ti(),t=Ge(),r=Oae(),n=Tw(),i=kae(),c=nt(),o=Ne(),s=jt(),h=bQ(),f=Fae(),y=sn(),_=Et(),g=Lae(),a=qae(),d=UQ(),p=Vw(),u=s.PluginStateTransform.BuiltIn({name:"volume-from-ccp4",display:{name:"Volume from CCP4/MRC/MAP",description:"Create Volume from CCP4/MRC/MAP data"},from:s.PluginStateObject.Format.Ccp4,to:s.PluginStateObject.Volume.Data,params(V){return{voxelSize:o.ParamDefinition.Vec3(t.Vec3.create(1,1,1)),offset:o.ParamDefinition.Vec3(t.Vec3.create(0,0,0)),entryId:o.ParamDefinition.Text("")}}})({apply({a:V,params:R}){return c.Task.create("Create volume from CCP4/MRC/MAP",async E=>{const I=await(0,r.volumeFromCcp4)(V.data,{...R,label:V.data.name||V.label}).runInContext(E),B={label:I.label||"Volume",description:`Volume ${V.data.header.NX}×${V.data.header.NX}×${V.data.header.NX}`};return new s.PluginStateObject.Volume.Data(I,B)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromCcp4=u;const m=s.PluginStateTransform.BuiltIn({name:"volume-from-dsn6",display:{name:"Volume from DSN6/BRIX",description:"Create Volume from DSN6/BRIX data"},from:s.PluginStateObject.Format.Dsn6,to:s.PluginStateObject.Volume.Data,params(V){return{voxelSize:o.ParamDefinition.Vec3(t.Vec3.create(1,1,1)),entryId:o.ParamDefinition.Text("")}}})({apply({a:V,params:R}){return c.Task.create("Create volume from DSN6/BRIX",async E=>{const I=await(0,i.volumeFromDsn6)(V.data,{...R,label:V.data.name||V.label}).runInContext(E),B={label:I.label||"Volume",description:`Volume ${V.data.header.xExtent}×${V.data.header.yExtent}×${V.data.header.zExtent}`};return new s.PluginStateObject.Volume.Data(I,B)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromDsn6=m;const v=s.PluginStateTransform.BuiltIn({name:"volume-from-cube",display:{name:"Volume from Cube",description:"Create Volume from Cube data"},from:s.PluginStateObject.Format.Cube,to:s.PluginStateObject.Volume.Data,params(V){return{dataIndex:V?o.ParamDefinition.Select(0,V.data.header.dataSetIds.map((E,I)=>[I,`${E}`])):o.ParamDefinition.Numeric(0),entryId:o.ParamDefinition.Text("")}}})({apply({a:V,params:R}){return c.Task.create("Create volume from Cube",async E=>{const I=await(0,h.volumeFromCube)(V.data,{...R,label:V.data.name||V.label}).runInContext(E),B={label:I.label||"Volume",description:`Volume ${V.data.header.dim[0]}×${V.data.header.dim[1]}×${V.data.header.dim[2]}`};return new s.PluginStateObject.Volume.Data(I,B)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromCube=v;const b=s.PluginStateTransform.BuiltIn({name:"volume-from-dx",display:{name:"Parse DX",description:"Create volume from DX data."},from:s.PluginStateObject.Format.Dx,to:s.PluginStateObject.Volume.Data})({apply({a:V}){return c.Task.create("Parse DX",async R=>{const E=await(0,f.volumeFromDx)(V.data,{label:V.data.name||V.label}).runInContext(R),I={label:E.label||"Volume",description:`Volume ${V.data.header.dim[0]}×${V.data.header.dim[1]}×${V.data.header.dim[2]}`};return new s.PluginStateObject.Volume.Data(E,I)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromDx=b;const P=s.PluginStateTransform.BuiltIn({name:"volume-from-density-server-cif",display:{name:"Volume from density-server CIF",description:"Identify and create all separate models in the specified CIF data block"},from:s.PluginStateObject.Format.Cif,to:s.PluginStateObject.Volume.Data,params(V){if(!V)return{blockHeader:o.ParamDefinition.Optional(o.ParamDefinition.Text(void 0,{description:"Header of the block to parse. If none is specifed, the 1st data block in the file is used."})),entryId:o.ParamDefinition.Text("")};const R=V.data.blocks.slice(1);return{blockHeader:o.ParamDefinition.Optional(o.ParamDefinition.Select(R[0]&&R[0].header,R.map(E=>[E.header,E.header]),{description:"Header of the block to parse"})),entryId:o.ParamDefinition.Text("")}}})({isApplicable:V=>V.data.blocks.length>0,apply({a:V,params:R}){return c.Task.create("Parse density-server CIF",async E=>{var I;const B=R.blockHeader||V.data.blocks[1].header,w=V.data.blocks.find(k=>k.header===B);if(!w)throw new Error(`Data block '${[B]}' not found.`);const O=e.CIF.schema.densityServer(w),F=await(0,n.volumeFromDensityServerData)(O,{entryId:R.entryId}).runInContext(E),[L,U,q]=F.grid.cells.space.dimensions,N={label:(I=R.entryId)!==null&&I!==void 0?I:O.volume_data_3d_info.name.value(0),description:`Volume ${L}×${U}×${q}`};return new s.PluginStateObject.Volume.Data(F,N)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromDensityServerCif=P;const C=s.PluginStateTransform.BuiltIn({name:"volume-from-segmentation-cif",display:{name:"Volume from Segmentation CIF"},from:s.PluginStateObject.Format.Cif,to:s.PluginStateObject.Volume.Data,params(V){const R=V?.data.blocks.slice(1);return{blockHeader:R?o.ParamDefinition.Optional(o.ParamDefinition.Select(R[0]&&R[0].header,R.map(I=>[I.header,I.header]),{description:"Header of the block to parse"})):o.ParamDefinition.Optional(o.ParamDefinition.Text(void 0,{description:"Header of the block to parse. If none is specifed, the 1st data block in the file is used."})),segmentLabels:o.ParamDefinition.ObjectList({id:o.ParamDefinition.Numeric(-1),label:o.ParamDefinition.Text("")},I=>`${I.id} = ${I.label}`,{description:"Mapping of segment IDs to segment labels"}),ownerId:o.ParamDefinition.Text("",{isHidden:!0,description:"Reference to the object which manages this volume"})}}})({isApplicable:V=>V.data.blocks.length>0,apply({a:V,params:R}){return c.Task.create("Parse segmentation CIF",async E=>{const I=R.blockHeader||V.data.blocks[1].header,B=V.data.blocks.find(k=>k.header===I);if(!B)throw new Error(`Data block '${[I]}' not found.`);
4126const w=e.CIF.schema.segmentation(B),O={};for(const k of R.segmentLabels)O[k.id]=k.label;const F=await(0,g.volumeFromSegmentationData)(w,{segmentLabels:O,ownerId:R.ownerId}).runInContext(E),[L,U,q]=F.grid.cells.space.dimensions,N={label:w.volume_data_3d_info.name.value(0),description:`Segmentation ${L}×${U}×${q}`};return new s.PluginStateObject.Volume.Data(F,N)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromSegmentationCif=C;const l=s.PluginStateTransform.BuiltIn({name:"volume-from-structure-factors-cif",display:{name:"Volume from Structure Factors CIF",description:"Compute electron density map from structure factor reflection data (pdbx_FWT/pdbx_PHWT or pdbx_DELFWT/pdbx_DELPHWT)"},from:s.PluginStateObject.Format.Cif,to:s.PluginStateObject.Volume.Data,params(V){const R=V?V.data.blocks.map(E=>[E.header,E.header]):[];return{blockHeader:o.ParamDefinition.Optional(R.length>0?o.ParamDefinition.Select(R[0][0],R,{description:"Header of the data block to use"}):o.ParamDefinition.Text(void 0,{description:"Header of the block to parse. Defaults to first block."})),entryId:o.ParamDefinition.Text(""),mapType:o.ParamDefinition.Select("2fo-fc",[["2fo-fc","2Fo-Fc (pdbx_FWT/PHWT)"],["fo-fc","Fo-Fc (pdbx_DELFWT/DELPHWT)"]])}}})({isApplicable:V=>V.data.blocks.length>0,apply({a:V,params:R}){return c.Task.create("Parse structure factors CIF",async E=>{const I=R.blockHeader||V.data.blocks[0].header,B=V.data.blocks.find(j=>j.header===I);if(!B)throw new Error(`Data block '${I}' not found.`);const w=e.CIF.schema.SF(B),O=await(0,a.volumeFromStructureFactors)(w,{entryId:R.entryId,mapType:R.mapType}).runInContext(E),[F,L,U]=O.grid.cells.space.dimensions,q=R.entryId||I,N=R.mapType==="fo-fc"?"Fo-Fc":"2Fo-Fc",k={label:q,description:`${N} Volume ${F}×${L}×${U}`};return new s.PluginStateObject.Volume.Data(O,k)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromStructureFactorsCif=l;const S=s.PluginStateTransform.BuiltIn({name:"volume-from-mtz",display:{name:"Volume from MTZ",description:"Compute electron density map from MTZ reflection data"},from:s.PluginStateObject.Format.Mtz,to:s.PluginStateObject.Volume.Data,params(V){if(!V)return{ampLabel:o.ParamDefinition.Text("FWT",{description:"Column label of the structure-factor amplitude (type F)"}),phiLabel:o.ParamDefinition.Text("PHWT",{description:"Column label of the phase in degrees (type P)"}),entryId:o.ParamDefinition.Text("")};const R=V.data.header.columns.filter(I=>I.type==="F").map(I=>[I.label,I.label]),E=V.data.header.columns.filter(I=>I.type==="P").map(I=>[I.label,I.label]);return{ampLabel:R.length>0?o.ParamDefinition.Select(R[0][0],R,{description:"Structure-factor amplitude column (type F)"}):o.ParamDefinition.Text("FWT",{description:"Structure-factor amplitude column label (type F)"}),phiLabel:E.length>0?o.ParamDefinition.Select(E[0][0],E,{description:"Phase column in degrees (type P)"}):o.ParamDefinition.Text("PHWT",{description:"Phase column label in degrees (type P)"}),entryId:o.ParamDefinition.Text("")}}})({apply({a:V,params:R}){return c.Task.create("Compute volume from MTZ",async E=>{const I=await(0,d.volumeFromMtz)(V.data,{ampLabel:R.ampLabel,phiLabel:R.phiLabel,entryId:R.entryId||void 0,label:R.entryId||V.data.name||void 0}).runInContext(E),[B,w,O]=I.grid.cells.space.dimensions,L={label:R.entryId||V.data.name||"Volume",description:`Volume ${B}×${w}×${O}`};return new s.PluginStateObject.Volume.Data(I,L)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromMtz=S;const T=s.PluginStateTransform.BuiltIn({name:"assign-color-volume",display:{name:"Assign Color Volume",description:"Assigns another volume to be available for coloring."},from:s.PluginStateObject.Volume.Data,to:s.PluginStateObject.Volume.Data,isDecorator:!0,params(V,R){if(!V)return{ref:o.ParamDefinition.Text()};const E=R.state.data.select(_.StateSelection.Generators.root.subtree().ofType(s.PluginStateObject.Volume.Data).filter(I=>{var B;return!!I.obj&&!(!((B=I.obj)===null||B===void 0)&&B.data.colorVolume)&&I.obj!==V}));return E.length===0?{ref:o.ParamDefinition.Text("",{isHidden:!0})}:{ref:o.ParamDefinition.Select(E[0].transform.ref,E.map(I=>[I.transform.ref,I.obj.label]))}}})({apply({a:V,params:R,dependencies:E}){return c.Task.create("Assign Color Volume",async I=>{if(!E||!E[R.ref])throw new Error("Dependency not available.");const B=E[R.ref].data,w={...V.data,colorVolume:B,_localPropertyData:Object.create(null)},O={label:V.label,description:"Volume + Colors"};return new s.PluginStateObject.Volume.Data(w,O)})},getDependencies:({ref:V})=>V?[V]:[]});sr.AssignColorVolume=T;const A=s.PluginStateTransform.BuiltIn({name:"volume-transform",display:{name:"Transform Volume"},isDecorator:!0,from:s.PluginStateObject.Volume.Data,to:s.PluginStateObject.Volume.Data,params:{transform:p.TransformParam}})({canAutoUpdate(){return!1},apply({a:V,params:R}){const E=(0,p.transformParamsNeedCentroid)(R.transform)?y.Grid.getBoundingSphere(V.data.grid).center:t.Vec3.unit,I=(0,p.getTransformFromParams)(R.transform,E),B={kind:"matrix",matrix:t.Mat4.mul((0,t.Mat4)(),I,y.Grid.getGridToCartesianTransform(V.data.grid))};return new s.PluginStateObject.Volume.Data({...V.data,grid:{...V.data.grid,transform:B},_localPropertyData:Object.create(null)},{label:V.label,description:`${V.description} [Transformed]`})}});sr.VolumeTransform=A;const x=s.PluginStateTransform.BuiltIn({name:"volume-instances",display:{name:"Volume Instances"},isDecorator:!0,from:s.PluginStateObject.Volume.Data,to:s.PluginStateObject.Volume.Data,params:{mode:o.ParamDefinition.Select("transforms",o.ParamDefinition.arrayToOptions(["transforms","periodicRange"])),transforms:o.ParamDefinition.ObjectList({transform:p.TransformParam},()=>"Transform",{hideIf:V=>V.mode!=="transforms"}),periodicRange:o.ParamDefinition.Group({min:o.ParamDefinition.Vec3(t.Vec3.create(0,0,0),{min:-10,max:10,step:1},{label:"Min",description:"Inclusive lower bound of the translation range (x, y, z)"}),max:o.ParamDefinition.Vec3(t.Vec3.create(1,1,1),{min:-10,max:10,step:1},{label:"Max",description:"Exclusive upper bound of the translation range (x, y, z)"})},{hideIf:V=>V.mode!=="periodicRange",isFlat:!0})}})({canAutoUpdate(){return!0},apply({a:V,params:R}){let E=[];if(R.mode==="transforms"){const I=R.transforms.some(B=>(0,p.transformParamsNeedCentroid)(B.transform))?y.Grid.getBoundingSphere(V.data.grid).center:t.Vec3.unit;E=R.transforms.map(B=>({transform:(0,p.getTransformFromParams)(B.transform,I)}))}else if(R.mode==="periodicRange"&&y.Volume.isPeriodic(V.data)){const I=V.data.grid.cells.space.dimensions,B=y.Grid.getGridToCartesianTransform(V.data.grid),{min:w,max:O}=R.periodicRange,[F,L,U]=w,[q,N,k]=O,j=(0,t.Vec3)();for(let H=F;H<q;H++)for(let G=L;G<N;G++)for(let z=U;z<k;z++)t.Vec3.set(j,I[0]*H,I[1]*G,I[2]*z),t.Vec3.transformMat4(j,j,B),E.push({transform:t.Mat4.fromTranslation((0,t.Mat4)(),j)})}return E.length?new s.PluginStateObject.Volume.Data({...V.data,instances:E,_localPropertyData:Object.create(null)},{label:V.label,description:`${V.description} [Instanced]`}):V}});sr.VolumeInstances=x;const M=s.PluginStateTransform.BuiltIn({name:"custom-volume-properties",display:{name:"Custom Volume Properties"},isDecorator:!0,from:s.PluginStateObject.Volume.Data,to:s.PluginStateObject.Volume.Data,params:(V,R)=>R.customVolumeProperties.getParams(V?.data)})({apply({a:V,params:R},E){return c.Task.create("Custom Volume Props",async I=>(await D(V.data,E,I,R),new s.PluginStateObject.Volume.Data(V.data,{label:V.label,description:V.description})))},update({a:V,b:R,oldParams:E,newParams:I},B){return c.Task.create("Custom Volume Props",async w=>{R.data=V.data,R.label=V.label,R.description=V.description;for(const O of E.autoAttach){const F=B.customVolumeProperties.get(O);F&&V.data.customProperties.reference(F.descriptor,!1)}
4126return await D(V.data,B,w,I),_.StateTransformer.UpdateResult.Updated})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.CustomVolumeProperties=M;async function D(V,R,E,I){const B={runtime:E,assetManager:R.managers.asset,errorContext:R.errorContext},{autoAttach:w,properties:O}=I;for(const F of Object.keys(O)){const L=R.customVolumeProperties.get(F),U=O[F];if(w.includes(F)||L.isHidden)try{await L.attach(B,V,U,!0)}catch(q){R.log.warn(`Error attaching volume prop '${F}': ${q}`)}else L.set(V,U)}}return sr}var yt={},NP={},oA={},Ud={},Vz;function Ew(){if(Vz)return Ud;Vz=1,Object.defineProperty(Ud,"__esModule",{value:!0}),Ud.isMobileBrowser=e,Ud.is_iOS=t,Ud.isStandaloneHmd=r;function e(){if(typeof navigator>"u"||typeof window>"u")return!1;let n=!1;return(function(i){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(i)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(i.substr(0,4)))&&(n=!0)})(navigator.userAgent||navigator.vendor||window.opera),n}function t(){if(typeof navigator>"u"||typeof window>"u")return!1;const n=/iPad|iPhone|iPod/.test(navigator.userAgent),i=navigator.userAgent.includes("Macintosh"),c=navigator.maxTouchPoints>=4;return!window.MSStream&&(n||i&&c)}function r(){if(typeof navigator>"u"||!("xr"in navigator))return!1;const n=navigator.userAgent||"";return/OculusBrowser\//.test(n)||/PicoBrowser\//.test(n)}return Ud}var Ez;function ql(){return Ez||(Ez=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultQualityThresholds=e.VisualUpdateState=void 0,e.getStructureQuality=y,e.getQualityProps=g;const t=et(),r=Ke(),n=rt(),i=Qn(),c=sn(),o=Ew();var s;(function(a){function d(){return{updateTransform:!1,updateMatrix:!1,updateColor:!1,updateSize:!1,updateLocation:!1,createGeometry:!1,createNew:!1,info:{}}}a.create=d;function p(u){u.updateTransform=!1,u.updateMatrix=!1,u.updateColor=!1,u.updateSize=!1,u.updateLocation=!1,u.createGeometry=!1,u.createNew=!1}a.reset=p})(s||(e.VisualUpdateState=s={})),e.DefaultQualityThresholds={lowestElementCount:1e6,lowerElementCount:5e5,lowElementCount:1e5,mediumElementCount:2e4,highElementCount:2e3,coarseGrainedFactor:10,elementCountFactor:1};var h;(function(a){a[a.Lowest=0]="Lowest",a[a.Lower=1]="Lower",a[a.Low=2]="Low",a[a.Medium=3]="Medium",a[a.High=4]="High",a[a.Higher=5]="Higher",a[a.Highest=6]="Highe
4126st"})(h||(h={}));function f(a){switch(a){case"lowest":return h.Lowest;case"lower":return h.Lower;case"low":return h.Low;case"medium":return h.Medium;case"high":return h.High;case"higher":return h.Higher;case"highest":return h.Highest}}function y(a,d={}){const p={...e.DefaultQualityThresholds,...d};let u=a.elementCount*p.elementCountFactor;return(a.isCoarseGrained||a.isCoarse)&&(u*=p.coarseGrainedFactor),u>p.lowestElementCount?"lowest":u>p.lowerElementCount?"lower":u>p.lowElementCount?"low":u>p.mediumElementCount?"medium":u>p.highElementCount?"high":"higher"}function _(a){if(a.root.models.length===1){const d=i.ModelSymmetry.Provider.get(a.root.model);if(d&&d.spacegroup.name==="P 1"&&!n.SpacegroupCell.isZero(d.spacegroup.cell))return d.spacegroup.cell.volume}return n.Box3D.volume(a.root.boundary.box)}function g(a,d){let p=(0,t.defaults)(a.quality,"auto"),u=(0,t.defaults)(a.detail,1),m=(0,t.defaults)(a.radialSegments,12),v=(0,t.defaults)(a.linearSegments,8),b=(0,t.defaults)(a.resolution,2),P=(0,t.defaults)(a.imageResolution,1),C=(0,t.defaults)(a.probePositions,12),l=(0,t.defaults)(a.doubleSided,!0),S=0;if(p==="auto"){if(d instanceof r.Structure)p=y(d.root),S=_(d);else if(c.Volume.is(d)){const[T,A,x]=d.grid.cells.space.dimensions;S=T*A*x,p=S<1e7?"medium":"low"}}if(p!=="custom"&&p!=="auto"){let T=f(p);switch((0,o.isStandaloneHmd)()&&(T=Math.max(T-1,h.Lowest)),T){case h.Highest:u=3,m=36,v=18,b=.1,P=.01,C=72,l=!0;break;case h.Higher:u=3,m=28,v=14,b=.3,P=.05,C=48,l=!0;break;case h.High:u=2,m=20,v=10,b=.5,P=.1,C=36,l=!0;break;case h.Medium:u=1,m=12,v=8,b=.8,P=.2,C=24,l=!0;break;case h.Low:u=0,m=8,v=3,b=1.3,P=.4,C=24,l=!1;break;case h.Lower:u=0,m=4,v=2,b=3,P=.7,C=12,l=!1;break;case h.Lowest:u=0,m=2,v=1,b=8,P=1,C=12,l=!1;break}}return S>0&&(b=Math.max(b,S/3e8),b=Math.min(b,20)),a.transparentBackfaces==="off"&&(a.alpha!==void 0&&a.alpha<1||a.xrayShaded)&&(l=!1),{detail:u,radialSegments:m,linearSegments:v,resolution:b,imageResolution:P,probePositions:C,doubleSided:l}}})(oA)),oA}var Ni={},Bz;function cn(){if(Bz)return Ni;Bz=1,Object.defineProperty(Ni,"__esModule",{value:!0}),Ni.MarkerActions=Ni.MarkerAction=void 0,Ni.setMarkerValue=c,Ni.applyMarkerActionAtPosition=o,Ni.applyMarkerAction=s,Ni.getMarkerInfo=h,Ni.getPartialMarkerAverage=f;const e=In(),t=Y_(),r=Gt();var n;(function(y){y[y.None=0]="None",y[y.Highlight=1]="Highlight",y[y.RemoveHighlight=2]="RemoveHighlight",y[y.Select=4]="Select",y[y.Deselect=8]="Deselect",y[y.Toggle=16]="Toggle",y[y.Clear=32]="Clear"})(n||(Ni.MarkerAction=n={}));var i;(function(y){y.is=t.BitFlags.has,y.All=n.Highlight|n.RemoveHighlight|n.Select|n.Deselect|n.Toggle|n.Clear,y.Highlighting=n.Highlight|n.RemoveHighlight|n.Clear,y.Selecting=n.Select|n.Deselect|n.Toggle|n.Clear;function _(g,a){return g===n.Highlight&&a===n.RemoveHighlight||g===n.RemoveHighlight&&a===n.Highlight||g===n.Select&&a===n.Deselect||g===n.Deselect&&a===n.Select||g===n.Toggle&&a===n.Toggle}y.isReverse=_})(i||(Ni.MarkerActions=i={}));function c(y,_,g){y.fill(_,0,g)}function o(y,_,g){switch(g){case n.Highlight:y[_]|=1;break;case n.RemoveHighlight:y[_]&=-2;break;case n.Select:y[_]|=2;break;case n.Deselect:y[_]&=-3;break;case n.Toggle:y[_]^=2;break;case n.Clear:y[_]=0;break}}function s(y,_,g){if(g===n.None)return!1;if(e.Interval.is(_)){const a=e.Interval.start(_),d=e.Interval.end(_),p=a+3>>2,u=p+(d-4*p>>2);if(u<=p){for(let l=a;l<d;++l)o(y,l,g);return!0}const m=new Uint32Array(y.buffer,0,y.buffer.byteLength>>2),v=a,b=Math.min(4*p,d),P=Math.max(a,4*u),C=d;switch(g){case n.Highlight:for(let l=p;l<u;++l)m[l]|=16843009;break;case n.RemoveHighlight:for(let l=p;l<u;++l)m[l]&=-16843010;break;case n.Select:for(let l=p;l<u;++l)m[l]|=33686018;break;case n.Deselect:for(let l=p;l<u;++l)m[l]&=-33686019;break;case n.Toggle:for(let l=p;l<u;++l)m[l]^=33686018;break;case n.Clear:for(let l=p;l<u;++l)m[l]=0;break;default:(0,r.assertUnreachable)(g)}for(let l=v;l<b;++l)o(y,l,g);for(let l=P;l<C;++l)o(y,l,g)}else switch(g){case n.Highlight:for(let a=0,d=_.length;a<d;++a)y[_[a]]|=1;break;case n.RemoveHighlight:for(let a=0,d=_.length;a<d;++a)y[_[a]]&=-2;break;case n.Select:for(let a=0,d=_.length;a<d;++a)y[_[a]]|=2;break;case n.Deselect:for(let a=0,d=_.length;a<d;++a)y[_[a]]&=-3;break;case n.Toggle:for(let a=0,d=_.length;a<d;++a)y[_[a]]^=2;break;case n.Clear:for(let a=0,d=_.length;a<d;++a)y[_[a]]=0;break;default:(0,r.assertUnreachable)(g)}return!0}function h(y,_){let g=-1,a=-1;switch(y){case n.Highlight:_===0||_===1?(g=1,a=1):_===2||_===3?(g=1,a=3):g=1;break;case n.RemoveHighlight:_===0||_===1?(g=0,a=0):(_===2||_===3)&&(g=1,a=2);break;
4126case n.Select:_===1||_===3?(g=1,a=3):_===0||_===2?(g=1,a=2):g=1;break;case n.Deselect:_===1||_===3?(g=1,a=1):(_===0||_===2)&&(g=0,a=0);break;case n.Toggle:_===1?(g=1,a=3):_===2?(g=0,a=0):_===3?(g=1,a=1):_===0&&(g=1,a=2);break;case n.Clear:g=0,a=0;break}return{average:g,status:a}}function f(y,_){switch(y){case n.Highlight:return .5;case n.RemoveHighlight:return _===0?0:_===2||_===3?.5:-1;case n.Select:return .5;case n.Deselect:return _===1||_===3?.5:_===0?0:-1;case n.Toggle:return _===-1?-1:.5;case n.Clear:return _===-1?-1:_===0?0:.5;case n.None:return-1;default:(0,r.assertUnreachable)(y)}}return Ni}var Gn={},Rz;function gt(){if(Rz)return Gn;Rz=1,Object.defineProperty(Gn,"__esModule",{value:!0}),Gn.Loci=Gn.EmptyLoci=Gn.EveryLoci=void 0,Gn.isEveryLoci=g,Gn.isEmptyLoci=a,Gn.isDataLoci=d,Gn.areDataLociEqual=p,Gn.isDataLociEmpty=u,Gn.DataLoci=m;const e=Ke(),t=IT(),r=pn(),n=rt(),i=Ge(),c=jr(),o=Ne(),s=et(),h=Ki(),f=ui(),y=oc(),_=at();Gn.EveryLoci={kind:"every-loci"};function g(b){return!!b&&b.kind==="every-loci"}Gn.EmptyLoci={kind:"empty-loci"};function a(b){return!!b&&b.kind==="empty-loci"}function d(b){return!!b&&b.kind==="data-loci"}function p(b,P){if(!(0,s.shallowEqual)(b.data,P.data)||b.tag!==P.tag||b.elements.length!==P.elements.length)return!1;for(let C=0,l=b.elements.length;C<l;++C)if(!(0,s.shallowEqual)(b.elements[C],P.elements[C]))return!1;return!0}function u(b){return b.elements.length===0}function m(b,P,C,l,S){return{kind:"data-loci",tag:b,data:P,elements:C,getBoundingSphere:l,getLabel:S}}var v;return(function(b){const P=new h.BoundaryHelper("98");function C(w){const O=w.loci.map(F=>x(F)).filter(F=>!!F);P.reset();for(const F of O)P.includePositionRadius(F.center,F.radius);P.finishedIncludeStep();for(const F of O)P.radiusPositionRadius(F.center,F.radius);return P.getSphere()}b.getBundleBoundingSphere=C;function l(w,O){return g(w)&&g(O)||a(w)&&a(O)?!0:d(w)&&d(O)?p(w,O):c.Structure.isLoci(w)&&c.Structure.isLoci(O)?c.Structure.areLociEqual(w,O):e.StructureElement.Loci.is(w)&&e.StructureElement.Loci.is(O)?e.StructureElement.Loci.areEqual(w,O):t.Bond.isLoci(w)&&t.Bond.isLoci(O)?t.Bond.areLociEqual(w,O):r.Shape.isLoci(w)&&r.Shape.isLoci(O)?r.Shape.areLociEqual(w,O):r.ShapeGroup.isLoci(w)&&r.ShapeGroup.isLoci(O)?r.ShapeGroup.areLociEqual(w,O):y.Volume.isLoci(w)&&y.Volume.isLoci(O)?y.Volume.areLociEqual(w,O):y.Volume.Isosurface.isLoci(w)&&y.Volume.Isosurface.isLoci(O)?y.Volume.Isosurface.areLociEqual(w,O):y.Volume.Cell.isLoci(w)&&y.Volume.Cell.isLoci(O)?y.Volume.Cell.areLociEqual(w,O):y.Volume.Segment.isLoci(w)&&y.Volume.Segment.isLoci(O)?y.Volume.Segment.areLociEqual(w,O):!1}b.areEqual=l;function S(w){return!!w&&w.kind==="every-loci"}b.isEvery=S;function T(w){return g(w)?!1:a(w)?!0:d(w)?u(w):c.Structure.isLoci(w)?c.Structure.isLociEmpty(w):e.StructureElement.Loci.is(w)?e.StructureElement.Loci.isEmpty(w):t.Bond.isLoci(w)?t.Bond.isLociEmpty(w):r.Shape.isLoci(w)?r.Shape.isLociEmpty(w):r.ShapeGroup.isLoci(w)?r.ShapeGroup.isLociEmpty(w):y.Volume.isLoci(w)?y.Volume.isLociEmpty(w):y.Volume.Isosurface.isLoci(w)?y.Volume.Isosurface.isLociEmpty(w):y.Volume.Cell.isLoci(w)?y.Volume.Cell.isLociEmpty(w):y.Volume.Segment.isLoci(w)?y.Volume.Segment.isLociEmpty(w):!1}b.isEmpty=T;function A(w,O){return O instanceof c.Structure&&(e.StructureElement.Loci.is(w)?w=e.StructureElement.Loci.remap(w,O):c.Structure.isLoci(w)?w=c.Structure.remapLoci(w,O):t.Bond.isLoci(w)&&(w=t.Bond.remapLoci(w,O))),w}b.remap=A;function x(w,O){var F;if(!(w.kind==="every-loci"||w.kind==="empty-loci")){if(O||(O=(0,n.Sphere3D)()),w.kind==="structure-loci")return n.Sphere3D.copy(O,w.structure.boundary.sphere);if(w.kind==="element-loci")return e.StructureElement.Loci.getBoundingSphere(w,O);if(w.kind==="bond-loci")return t.Bond.getBoundingSphere(w,O);if(w.kind==="shape-loci")return n.Sphere3D.copy(O,w.shape.geometry.boundingSphere);if(w.kind==="group-loci")return r.ShapeGroup.getBoundingSphere(w,O);if(w.kind==="data-loci")return(F=w.getBoundingSphere)===null||F===void 0?void 0:F.call(w,O);if(w.kind==="volume-loci")return y.Volume.getBoundingSphere(w.volume,w.instances,O);if(w.kind==="isosurface-loci")return y.Volume.Isosurface.getBoundingSphere(w.volume,w.isoValue,w.instances,O);if(w.kind==="cell-loci")return y.Volume.Cell.getBoundingSphere(w.volume,w.elements,O);if(w.kind==="segment-loci")return y.Volume.Segment.getBoundingSphere(w.volume,w.elements,O)}}b.getBoundingSphere=x;const M=n.Sphere3D.zero();function D(w,O){const F=x(w,M);return F?i.Vec3.copy(O||(0,i.Vec3)(),F.center):void 0}b.getCenter=D;
4126function V(w){if(!(w.kind==="every-loci"||w.kind==="empty-loci")){if(w.kind==="structure-loci")return e.StructureElement.Loci.getPrincipalAxes(c.Structure.toStructureElementLoci(w.structure));if(w.kind==="element-loci")return e.StructureElement.Loci.getPrincipalAxes(w);if(w.kind==="bond-loci")return;if(w.kind==="shape-loci")return;if(w.kind==="group-loci")return;if(w.kind==="data-loci")return;if(w.kind==="volume-loci")return;if(w.kind==="isosurface-loci")return;if(w.kind==="cell-loci")return;if(w.kind==="segment-loci")return}}b.getPrincipalAxes=V;const R={element:w=>w,residue:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToWholeResidues(w,!0):w,chain:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToWholeChains(w):w,entity:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToWholeEntities(w):w,model:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToWholeModels(w):w,operator:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToWholeOperators(w):w,structure:w=>e.StructureElement.Loci.is(w)?c.Structure.toStructureElementLoci(w.structure):r.ShapeGroup.isLoci(w)?r.Shape.Loci(w.shape):y.Volume.Cell.isLoci(w)||y.Volume.Isosurface.isLoci(w)?y.Volume.Loci(w.volume,_.Interval.ofLength(w.volume.instances.length)):w,elementInstances:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToAllInstances(w):w,residueInstances:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToAllInstances(e.StructureElement.Loci.extendToWholeResidues(w,!0)):w,chainInstances:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToAllInstances(e.StructureElement.Loci.extendToWholeChains(w)):w};b.GranularityOptions=o.ParamDefinition.objectToOptions(R,w=>{switch(w){case"element":return"Atom/Coarse Element";case"elementInstances":return["Atom/Coarse Element Instances","With Symmetry"];case"structure":return"Structure/Shape";default:return w.indexOf("Instances")?[(0,f.stringToWords)(w),"With Symmetry"]:(0,f.stringToWords)(w)}});function E(w){return w.replace("Instances","")}b.simpleGranularity=E;function I(w,O){return R[O](w)}b.applyGranularity=I;function B(w,O,F=!1){return(O!=="element"||F)&&t.Bond.isLoci(w)&&(w=t.Bond.toStructureElementLoci(w)),c.Structure.isLoci(w)&&(w=c.Structure.toStructureElementLoci(w.structure)),e.StructureElement.Loci.is(w)&&(w=e.StructureElement.Loci.remap(w,w.structure.root)),O&&(w=I(w,O)),w}b.normalize=B})(v||(Gn.Loci=v={})),Gn}var fv={},Oz;function _n(){if(Oz)return fv;Oz=1,Object.defineProperty(fv,"__esModule",{value:!0}),fv.PickingId=void 0;var e;return(function(t){t.Null=16777214;function r(n,i){return n.objectId===i.objectId&&n.instanceId===i.instanceId&&n.groupId===i.groupId}t.areSame=r})(e||(fv.PickingId=e={})),fv}var mv={},wa={},vi={},pv={},kz;function jae(){if(kz)return pv;kz=1,Object.defineProperty(pv,"__esModule",{value:!0}),pv.toHalfFloat=n,pv.fromHalfFloat=i;const e=ir(),t=r();function r(){const c=new ArrayBuffer(4),o=new Float32Array(c),s=new Uint32Array(c),h=new Uint32Array(512),f=new Uint32Array(512);for(let a=0;a<256;++a){const d=a-127;d<-27?(h[a]=0,h[a|256]=32768,f[a]=24,f[a|256]=24):d<-14?(h[a]=1024>>-d-14,h[a|256]=1024>>-d-14|32768,f[a]=-d-1,f[a|256]=-d-1):d<=15?(h[a]=d+15<<10,h[a|256]=d+15<<10|32768,f[a]=13,f[a|256]=13):d<128?(h[a]=31744,h[a|256]=64512,f[a]=24,f[a|256]=24):(h[a]=31744,h[a|256]=64512,f[a]=13,f[a|256]=13)}const y=new Uint32Array(2048),_=new Uint32Array(64),g=new Uint32Array(64);for(let a=1;a<1024;++a){let d=a<<13,p=0;for(;(d&8388608)===0;)d<<=1,p-=8388608;d&=-8388609,p+=947912704,y[a]=d|p}for(let a=1024;a<2048;++a)y[a]=939524096+(a-1024<<13);for(let a=1;a<31;++a)_[a]=a<<23;_[31]=1199570944,_[32]=2147483648;for(let a=33;a<63;++a)_[a]=2147483648+(a-32<<23);_[63]=3347054592;for(let a=1;a<64;++a)a!==32&&(g[a]=1024);return{floatView:o,uint32View:s,baseTable:h,shiftTable:f,mantissaTable:y,exponentTable:_,offsetTable:g}}function n(c){c=(0,e.clamp)(c,-65504,65504),t.floatView[0]=c;const o=t.uint32View[0],s=o>>23&511;return t.baseTable[s]+((o&8388607)>>t.shiftTable[s])}function i(c){const o=c>>10;return t.uint32View[0]=t.mantissaTable[t.offsetTable[o]+(c&1023)]+t.exponentTable[o],t.floatView[0]}return pv}var Fz;function $f(){if(Fz)return vi;Fz=1,Object.defineProperty(vi,"__esModule",{value:!0}
4126),vi.eachVolumeLoci=v,vi.createVolumeCellLocationIterator=b,vi.createVolumeSliceCellLocationIterator=P,vi.getVolumeTexture2dLayout=C,vi.createVolumeTexture2d=l,vi.createVolumeTexture3d=S,vi.createSegmentTexture2d=T,vi.createWrappedTensor=A,vi.createWrappedVolume=x,vi.createPeriodicVolume=M;const e=sn(),t=rn(),r=wt(),n=nc(),i=Hi(),c=rt(),o=jae(),s=ir(),h=zt(),f=In(),y=nn(),_=Xr(),g=r.Vec3.set,a=r.Vec3.normalize,d=r.Vec3.sub,p=r.Vec3.addScalar,u=r.Vec3.scale,m=r.Vec3.toArray;function v(D,V,R,E){let I=!1;const B=V.grid.cells.data.length;if(e.Volume.isLoci(D)){if(!e.Volume.areEquivalent(D.volume,V))return!1;if(f.Interval.is(D.instances)){const w=f.Interval.start(D.instances)*B,O=f.Interval.end(D.instances)*B;E(f.Interval.ofBounds(w,O))&&(I=!0)}else for(let w=0,O=D.instances.length;w<O;++w){const F=D.instances[w]*B;E(f.Interval.ofBounds(F,F+B))&&(I=!0)}}else if(e.Volume.Isosurface.isLoci(D)){if(!e.Volume.areEquivalent(D.volume,V))return!1;if(R?.isoValue){if(!e.Volume.IsoValue.areSame(D.isoValue,R.isoValue,V.grid.stats))return!1;if(f.Interval.is(D.instances)){const w=f.Interval.start(D.instances)*B,O=f.Interval.end(D.instances)*B;E(f.Interval.ofBounds(w,O))&&(I=!0)}else for(let w=0,O=D.instances.length;w<O;++w){const F=D.instances[w]*B;E(f.Interval.ofBounds(F,F+B))&&(I=!0)}}else{const{stats:w,cells:{data:O}}=V.grid,F=w.sigma,L=e.Volume.IsoValue.toAbsolute(D.isoValue,w).absoluteValue;for(let U=0,q=O.length;U<q;++U)(0,t.equalEps)(L,O[U],F)&&y.OrderedSet.forEach(D.instances,N=>{const k=N*B;E(f.Interval.ofSingleton(k+U))&&(I=!0)})}}else if(e.Volume.Cell.isLoci(D)){if(!e.Volume.areEquivalent(D.volume,V))return!1;for(const{indices:w,instances:O}of D.elements)f.Interval.is(w)?y.OrderedSet.forEach(O,F=>{const L=F*B;E(f.Interval.offset(w,L))&&(I=!0)}):y.OrderedSet.forEach(w,F=>{y.OrderedSet.forEach(O,L=>{const U=L*B;E(f.Interval.ofSingleton(U+F))&&(I=!0)})})}else if(e.Volume.Segment.isLoci(D)){if(!e.Volume.areEquivalent(D.volume,V))return!1;if(R?.segments)for(const{segments:w,instances:O}of D.elements)y.OrderedSet.areIntersecting(w,R.segments)&&y.OrderedSet.forEach(O,F=>{const L=F*B;E(f.Interval.ofBounds(L,L+B))&&(I=!0)});else{const w=e.Volume.Segmentation.get(V);if(w){const O=new Set;for(const{segments:F,instances:L}of D.elements){for(let N=0,k=y.OrderedSet.size(F);N<k;N++){const j=y.OrderedSet.getAt(F,N);i.SetUtils.add(O,w.segments.get(j))}const U=Array.from(O.values()),q=V.grid.cells.data;for(let N=0,k=q.length;N<k;++N)if(U.includes(q[N]))for(let j=0,H=y.OrderedSet.size(L);j<H;j++){const G=j*B;E(f.Interval.ofSingleton(N+G))&&(I=!0)}}}}}return I}function b(D,V){const[R,E,I]=D.grid.cells.space.dimensions,B=R*E*I,w=D.instances.length,O=e.Volume.Cell.Location(D),F=(L,U)=>(O.cell=L,O.instance=U,O);return(0,h.LocationIterator)(B,w,1,F)}function P(D,V,R){const E=R.meta.mapping;if(!E)return b(D);const I=E.cell.length,B=e.Volume.isPeriodic(D)?1:D.instances.length,w=e.Volume.Cell.Location(D),O=(L,U)=>(w.cell=L,w.instance=U,w),F=e.Volume.isPeriodic(D);return(0,h.LocationIterator)(I,B,1,O,F)}function C(D,V=0){const R=D[0]*D[1]*D[2],E=Math.sqrt(R),I=Math.pow(2,Math.ceil(Math.log(E)/Math.log(2)));let B=D[0]+V,w=D[1]+V,O=1,F=B;return I<B*D[2]?(F=Math.floor(I/B),O=Math.ceil(D[2]/F),B*=F,w*=O):B*=D[2],{width:B,height:w,columns:F,rows:O,powerOfTwoSize:w<I?I:I*2}}function l(D,V,R=0,E="byte"){const{cells:{space:I,data:B},stats:{max:w,min:O}}=D.grid,F=I.dimensions,{dataOffset:L}=I,{width:U,height:q}=C(F,R),N=V==="data"?1:4,k=E==="byte"?new Uint8Array(U*q*N):E==="halfFloat"?new Uint16Array(U*q*N):new Float32Array(U*q*N),j={array:k,width:U,height:q},H=w-O,[G,z,W]=F,X=G+R,Y=z+R,K=(0,r.Vec3)(),Q=(0,r.Vec3)(),J=G-1,ae=z-1,te=W-1;for(let ne=0;ne<W;++ne)for(let $=0;$<z;++$)for(let ie=0;ie<G;++ie){const Z=Math.floor(ne*X%U/X),re=Math.floor(ne*X/U),oe=Z*X+ie,ce=N*(re*Y*U+$*U+oe),ue=L(ie,$,ne);let pe;if(E==="byte"?pe=Math.round((B[ue]-O)/H*255):E==="halfFloat"?pe=(0,o.toHalfFloat)((B[ue]-O)/H):pe=(B[ue]-O)/H,V==="data")k[ce]=pe;else{if(V==="groups")if(E==="halfFloat"){let he=(0,s.clamp)(Math.round(ue),0,16777215)+1;k[ce+2]=(0,o.toHalfFloat)(he%256),he=Math.floor(he/256),k[ce+1]=(0,o.toHalfFloat)(he%256),he=Math.floor(he/256),k[ce]=(0,o.toHalfFloat)(he%256)}else(0,n.packIntToRGBArray)(ue,k,ce);else g(K,B[L(Math.max(0,ie-1),$,ne)],B[L(ie,Math.max(0,$-1),ne)],B[L(ie,$,Math.max(0,ne-1))]),g(Q,B[L(Math.min(J,ie+1),$,ne)],B[L(ie,Math.min(ae,$+1),ne)],B[L(ie,$,Math.min(te,ne+1))]),a(K,d(K,K,Q)),p(K,u(K,K,.5),.5),E==="byte"?m(u(K,K,255),k,ce):E==="halfFloat"?(k[ce]=(0,o.toHalfFloat)(K[0]),k[ce+1]=(0,o.toHalfFloat)(K[1]),k[ce+2]=(0,o.toHalfFloat)(K[2])):m(K,k,ce);k[ce+3]=pe}}return j}function S(D,V="byte"){const{cells:{space:R,data:E},stats:{max:I,min:B}}=D.grid,[w,O,F]=R.dimensions,{dataOffset:L}=R,U=V==="byte"?new Uint8Array(w*O*F*4):V==="halfFloat"?new Uint16Array(w*O*F*4):new Float32Array(w*O*F*4),q={array:U,width:w,height:O,depth:F},N=I-B,k=(0,r.Vec3)(),j=(0,r.Vec3)(),H=w-1,G=O-1,z=F-1;let W=0;for(let X=0;X<F;++X)for(let Y=0;Y<O;++Y)for(let K=0;K<w;++K){const Q=L(K,Y,X);g(k,E[L(Math.max(0,K-1),Y,X)],E[L(K,Math.max(0,Y-1),X)],E[L(K,Y,Math.max(0,X-1))]),g(j,E[L(Math.min(H,K+1),Y,X)],E[L(K,Math.min(G,Y+1),X
4126)],E[L(K,Y,Math.min(z,X+1))]),a(k,d(k,k,j)),p(k,u(k,k,.5),.5),V==="byte"?(m(u(k,k,255),U,W),U[W+3]=Math.round((E[Q]-B)/N*255)):V==="halfFloat"?(U[W]=(0,o.toHalfFloat)(k[0]),U[W+1]=(0,o.toHalfFloat)(k[1]),U[W+2]=(0,o.toHalfFloat)(k[2]),U[W+3]=(0,o.toHalfFloat)((E[Q]-B)/N)):(m(k,U,W),U[W+3]=(E[Q]-B)/N),W+=4}return q}function T(D,V,R,E=0){const I=D.grid.cells.data,B=c.Box3D.size((0,r.Vec3)(),R),w=D.grid.cells.space.dataOffset,{width:O,height:F}=C(B,E),L=1,U=new Uint8Array(O*F*L),q={array:U,width:O,height:F},[N,k,j]=B,H=N-1,G=k-1,z=j-1,W=N+E,X=k+E,[Y,K,Q]=R.min,[J,ae,te]=R.max;for(let ne=0;ne<j;++ne)for(let $=0;$<k;++$)for(let ie=0;ie<N;++ie){const Z=Math.floor(ne*W%O/W),re=Math.floor(ne*W/O),oe=Z*W+ie,ce=L*(re*X*O+$*O+oe),ue=V.includes(I[w(ie+Y,$+K,ne+Q)])?255:0,pe=V.includes(I[w(Math.min(H+J,ie+1+Y),$+K,ne+Q)])?255:0,he=V.includes(I[w(Math.max(0,ie-1+Y),$+K,ne+Q)])?255:0,fe=V.includes(I[w(ie+Y,Math.min(G+ae,$+1+K),ne+Q)])?255:0,de=V.includes(I[w(ie+Y,Math.max(0,$-1+K),ne+Q)])?255:0,ge=V.includes(I[w(ie+Y,$+K,Math.min(z+te,ne+1+Q))])?255:0,Ce=V.includes(I[w(ie+Y,$+K,Math.max(0,ne-1+Q))])?255:0;U[ce]=Math.round((ue+ue+pe+he+fe+de+ge+Ce)/8)}return q}function A(D){const{space:V,data:R}=D,{get:E,set:I,add:B,dataOffset:w}=V,[O,F,L]=V.dimensions,U=r.Vec3.create(O+1,F+1,L+1),H={...V,dimensions:U,get:(G,z,W,X)=>E(G,z%O,W%F,X%L),set:(G,z,W,X,Y)=>I(G,z%O,W%F,X%L,Y),add:(G,z,W,X,Y)=>B(G,z%O,W%F,X%L,Y),dataOffset:(G,z,W)=>w(G%O,z%F,W%L)};return{data:R,space:H}}function x(D){const{grid:V}=D,R=e.Grid.getGridToCartesianTransform(V),E={...V,transform:{kind:"matrix",matrix:R},cells:A(V.cells)};return{...D,grid:E,parent:D}}function M(D,V,R){const{grid:E}=D,{space:I}=E.cells,{get:B,set:w,add:O,dataOffset:F}=I,[L,U,q]=I.dimensions,N=r.Vec3.sub((0,r.Vec3)(),R,V),k=r.Vec3.create(L*N[0],U*N[1],q*N[2]),W={...I,dimensions:k,get:(ae,te,ne,$)=>B(ae,te%L,ne%U,$%q),set:(ae,te,ne,$,ie)=>w(ae,te%L,ne%U,$%q,ie),add:(ae,te,ne,$,ie)=>O(ae,te%L,ne%U,$%q,ie),dataOffset:(ae,te,ne)=>F(ae%L,te%U,ne%q)},X=e.Grid.getGridToCartesianTransform(D.grid),Y=_.Mat4.getScaling((0,r.Vec3)(),X);r.Vec3.mul(Y,Y,I.dimensions);const K=r.Vec3.mul((0,r.Vec3)(),V,Y);_.Mat4.setTranslation(X,K);const J={...E,transform:{kind:"matrix",matrix:X},cells:{...E.cells,space:W}};return{...D,grid:J,parent:D,instances:[{transform:_.Mat4.identity()}]}}return vi}var Lz;function Bw(){if(Lz)return wa;Lz=1,Object.defineProperty(wa,"__esModule",{value:!0}),wa.calcMeshColorSmoothing=o,wa.getTrilinearlyInterpolated=s,wa.applyMeshColorSmoothing=f,wa.applyMeshOverpaintSmoothing=_,wa.applyMeshTransparencySmoothing=a,wa.applyMeshEmissiveSmoothing=p,wa.applyMeshSubstanceSmoothing=m;const e=kr(),t=rt(),r=ir(),n=Ge(),i=$f(),c=et();function o(v,b,P,C){const{colorType:l,vertexCount:S,groupCount:T,positionBuffer:A,instanceBuffer:x,transformBuffer:M,groupBuffer:D,itemSize:V}=v,{resolution:R,stride:E}=b,I=l.endsWith("Instance"),B=t.Box3D.fromSphere3D((0,t.Box3D)(),I?v.boundingSphere:v.invariantBoundingSphere),w=1+R,O=t.Box3D.expand((0,t.Box3D)(),B,n.Vec3.create(w,w,w)),F=1/R,L=t.Box3D.scale((0,t.Box3D)(),O,F),U=t.Box3D.size((0,n.Vec3)(),L);n.Vec3.ceil(U,U),n.Vec3.add(U,U,n.Vec3.create(2,2,2));const{min:q}=O,[N,k]=U,{width:j,height:H}=(0,i.getVolumeTexture2dLayout)(U),G=new Float32Array(j*H*V),z=new Float32Array(j*H),W=new Uint8Array(j*H*V),X={array:W,width:j,height:H,filter:"linear"},Y=I?v.instanceCount:1,K=v.colorData.array;function Q(oe,ce,ue){const pe=Math.floor(ue*N%j/N),he=Math.floor(ue*N/j),fe=pe*N+oe;return V*(he*k*j+ce*j+fe)}const J=2,[ae,te,ne]=U,$=(0,n.Vec3)();for(let oe=0;oe<Y;++oe){const ce=P&&I?x[oe]:oe;for(let ue=0;ue<S;ue+=E){n.Vec3.fromArray($,A,ue*3),I&&n.Vec3.transformMat4Offset($,$,M,0,0,oe*16),n.Vec3.sub($,$,q),n.Vec3.scale($,$,F);const[pe,he,fe]=$,de=Math.floor(pe),ge=Math.floor(he),Ce=Math.floor(fe),ve=(ce*T+D[ue])*V,le=Math.max(0,de-J),me=Math.max(0,ge-J),ee=Math.max(0,Ce-J),se=Math.min(ae,de+J+2),ye=Math.min(te,ge+J+2),Se=Math.min(ne,Ce+J+2);for(let Ae=le;Ae<se;++Ae){const _e=Ae-pe;for(let be=me;be<ye;++be){const xe=be-he;for(let we=ee;we<Se;++we){const Be=we-fe,Me=Math.sqrt(_e*_e+xe*xe+Be*Be);if(Me>J)continue;const Re=J-Me,Te=Q(Ae,be,we);for(let Ve=0;Ve<V;++Ve)G[Te+Ve]+=K[ve+Ve]*Re;z[Te/V]+=Re}}}}}for(let oe=0,ce=z.length;oe<ce;++oe){const ue=oe*V,pe=z[oe];for(let he=0;he<V;++he)W[ue+he]=Math.round(G[ue+he]/pe)}const ie=n.Vec2.create(j,H),Z=n.Vec4.create(q[0],q[1],q[2],F),re=I?"volumeInstance":"volume";if(P){if(!C){const oe=V===4?"rgba":V===3?"rgb":"alpha";C=P.resources.texture("image-uint8",oe,"ubyte","linear")}return C.load(X),{kind:"volume",texture:C,gridTexDim:ie,gridDim:U,gridTransform:Z,type:re}}else{const oe=s({vertexCount:S,instanceCount:Y,transformBuffer:M,positionBuffer:A,colorType:re,grid:W,gridDim:U,gridTexDim:ie,gridTransform:Z,vertexStride:3,colorStride:V,outputStride:V});
4126return{kind:"vertex",texture:oe,texDim:n.Vec2.create(oe.width,oe.height),type:I?"vertexInstance":"vertex"}}}function s(v){const{vertexCount:b,positionBuffer:P,transformBuffer:C,grid:l,gridDim:S,gridTexDim:T,gridTransform:A,vertexStride:x,colorStride:M}=v,D=v.itemOffset||0,V=v.outputStride;if(V+D>M)throw new Error("outputStride + itemOffset must NOT be larger than colorStride");const R=v.colorType.endsWith("Instance"),E=R?v.instanceCount:1,I=(0,e.createTextureImage)(Math.max(1,E*b),V,Uint8Array),{array:B}=I,[w,O]=S,F=T[0],L=n.Vec3.fromArray((0,n.Vec3)(),A,0),U=A[3];function q(G,z,W){const X=Math.floor(W*w%F/w),Y=Math.floor(W*w/F),K=X*w+G;return M*(Y*O*F+z*F+K)}const N=(0,n.Vec3)(),k=(0,n.Vec3)(),j=(0,n.Vec3)(),H=(0,n.Vec3)();for(let G=0;G<E;++G)for(let z=0;z<b;++z){n.Vec3.fromArray(N,P,z*x),R&&n.Vec3.transformMat4Offset(N,N,C,0,0,G*16),n.Vec3.sub(N,N,L),n.Vec3.scale(N,N,U),n.Vec3.floor(k,N),n.Vec3.ceil(j,N),n.Vec3.sub(H,N,k),n.Vec3.sub(N,j,k),n.Vec3.div(H,H,N);const[W,X,Y]=k,[K,Q,J]=j,[ae,te,ne]=H,$=q(W,X,Y)+D,ie=q(K,X,Y)+D,Z=q(W,X,J)+D,re=q(K,X,J)+D,oe=q(W,Q,Y)+D,ce=q(K,Q,Y)+D,ue=q(W,Q,J)+D,pe=q(K,Q,J)+D,he=(G*b+z)*V;for(let fe=0;fe<V;++fe){const de=l[$+fe],ge=l[ie+fe],Ce=l[Z+fe],ve=l[re+fe],le=l[oe+fe],me=l[ce+fe],ee=l[ue+fe],se=l[pe+fe],ye=(0,r.lerp)(de,ge,ae),Se=(0,r.lerp)(Ce,ve,ae),Ae=(0,r.lerp)(le,me,ae),_e=(0,r.lerp)(ee,se,ae),be=(0,r.lerp)(ye,Ae,te),xe=(0,r.lerp)(Se,_e,te);B[he+fe]=(0,r.lerp)(be,xe,ne)}}return I}function h(v){return v==="group"||v==="groupInstance"}function f(v,b,P,C){if(!h(v.dColorType.ref.value))return;const l=o({vertexCount:v.uVertexCount.ref.value,instanceCount:v.uInstanceCount.ref.value,groupCount:v.uGroupCount.ref.value,transformBuffer:v.aTransform.ref.value,instanceBuffer:v.aInstance.ref.value,positionBuffer:v.aPosition.ref.value,groupBuffer:v.aGroup.ref.value,colorData:v.tColor.ref.value,colorType:v.dColorType.ref.value,boundingSphere:v.boundingSphere.ref.value,invariantBoundingSphere:v.invariantBoundingSphere.ref.value,itemSize:3},b,P,C);l.kind==="volume"?(c.ValueCell.updateIfChanged(v.dColorType,l.type),c.ValueCell.update(v.tColorGrid,l.texture),c.ValueCell.update(v.uColorTexDim,l.gridTexDim),c.ValueCell.update(v.uColorGridDim,l.gridDim),c.ValueCell.update(v.uColorGridTransform,l.gridTransform)):l.kind==="vertex"&&(c.ValueCell.updateIfChanged(v.dColorType,l.type),c.ValueCell.update(v.tColor,l.texture),c.ValueCell.update(v.uColorTexDim,l.texDim))}function y(v){return v==="groupInstance"}function _(v,b,P,C){if(!y(v.dOverpaintType.ref.value))return;const l=o({vertexCount:v.uVertexCount.ref.value,instanceCount:v.uInstanceCount.ref.value,groupCount:v.uGroupCount.ref.value,transformBuffer:v.aTransform.ref.value,instanceBuffer:v.aInstance.ref.value,positionBuffer:v.aPosition.ref.value,groupBuffer:v.aGroup.ref.value,colorData:v.tOverpaint.ref.value,colorType:v.dOverpaintType.ref.value,boundingSphere:v.boundingSphere.ref.value,invariantBoundingSphere:v.invariantBoundingSphere.ref.value,itemSize:4},b,P,C);l.kind==="volume"?(c.ValueCell.updateIfChanged(v.dOverpaintType,l.type),c.ValueCell.update(v.tOverpaintGrid,l.texture),c.ValueCell.update(v.uOverpaintTexDim,l.gridTexDim),c.ValueCell.update(v.uOverpaintGridDim,l.gridDim),c.ValueCell.update(v.uOverpaintGridTransform,l.gridTransform)):l.kind==="vertex"&&(c.ValueCell.updateIfChanged(v.dOverpaintType,l.type),c.ValueCell.update(v.tOverpaint,l.texture),c.ValueCell.update(v.uOverpaintTexDim,l.texDim))}function g(v){return v==="groupInstance"}function a(v,b,P,C){if(!g(v.dTransparencyType.ref.value))return;const l=o({vertexCount:v.uVertexCount.ref.value,instanceCount:v.uInstanceCount.ref.value,groupCount:v.uGroupCount.ref.value,transformBuffer:v.aTransform.ref.value,instanceBuffer:v.aInstance.ref.value,positionBuffer:v.aPosition.ref.value,groupBuffer:v.aGroup.ref.value,colorData:v.tTransparency.ref.value,colorType:v.dTransparencyType.ref.value,boundingSphere:v.boundingSphere.ref.value,invariantBoundingSphere:v.invariantBoundingSphere.ref.value,itemSize:1},b,P,C);l.kind==="volume"?(c.ValueCell.updateIfChanged(v.dTransparencyType,l.type),c.ValueCell.update(v.tTransparencyGri
4126d,l.texture),c.ValueCell.update(v.uTransparencyTexDim,l.gridTexDim),c.ValueCell.update(v.uTransparencyGridDim,l.gridDim),c.ValueCell.update(v.uTransparencyGridTransform,l.gridTransform)):l.kind==="vertex"&&(c.ValueCell.updateIfChanged(v.dTransparencyType,l.type),c.ValueCell.update(v.tTransparency,l.texture),c.ValueCell.update(v.uTransparencyTexDim,l.texDim))}function d(v){return v==="groupInstance"}function p(v,b,P,C){if(!d(v.dEmissiveType.ref.value))return;const l=o({vertexCount:v.uVertexCount.ref.value,instanceCount:v.uInstanceCount.ref.value,groupCount:v.uGroupCount.ref.value,transformBuffer:v.aTransform.ref.value,instanceBuffer:v.aInstance.ref.value,positionBuffer:v.aPosition.ref.value,groupBuffer:v.aGroup.ref.value,colorData:v.tEmissive.ref.value,colorType:v.dEmissiveType.ref.value,boundingSphere:v.boundingSphere.ref.value,invariantBoundingSphere:v.invariantBoundingSphere.ref.value,itemSize:1},b,P,C);l.kind==="volume"?(c.ValueCell.updateIfChanged(v.dEmissiveType,l.type),c.ValueCell.update(v.tEmissiveGrid,l.texture),c.ValueCell.update(v.uEmissiveTexDim,l.gridTexDim),c.ValueCell.update(v.uEmissiveGridDim,l.gridDim),c.ValueCell.update(v.uEmissiveGridTransform,l.gridTransform)):l.kind==="vertex"&&(c.ValueCell.updateIfChanged(v.dEmissiveType,l.type),c.ValueCell.update(v.tEmissive,l.texture),c.ValueCell.update(v.uEmissiveTexDim,l.texDim))}function u(v){return v==="groupInstance"}function m(v,b,P,C){if(!u(v.dSubstanceType.ref.value))return;const l=o({vertexCount:v.uVertexCount.ref.value,instanceCount:v.uInstanceCount.ref.value,groupCount:v.uGroupCount.ref.value,transformBuffer:v.aTransform.ref.value,instanceBuffer:v.aInstance.ref.value,positionBuffer:v.aPosition.ref.value,groupBuffer:v.aGroup.ref.value,colorData:v.tSubstance.ref.value,colorType:v.dSubstanceType.ref.value,boundingSphere:v.boundingSphere.ref.value,invariantBoundingSphere:v.invariantBoundingSphere.ref.value,itemSize:4},b,P,C);l.kind==="volume"?(c.ValueCell.updateIfChanged(v.dSubstanceType,l.type),c.ValueCell.update(v.tSubstanceGrid,l.texture),c.ValueCell.update(v.uSubstanceTexDim,l.gridTexDim),c.ValueCell.update(v.uSubstanceGridDim,l.gridDim),c.ValueCell.update(v.uSubstanceGridTransform,l.gridTransform)):l.kind==="vertex"&&(c.ValueCell.updateIfChanged(v.dSubstanceType,l.type),c.ValueCell.update(v.tSubstance,l.texture),c.ValueCell.update(v.uSubstanceTexDim,l.texDim))}return wa}var sA={},hv={},Nz;function Gae(){return Nz||(Nz=1,Object.defineProperty(hv,"__esModule",{value:!0}),hv.normalize_frag=void 0,hv.normalize_frag=`
4127precision highp float;
4128precision highp sampler2D;
4129
4130uniform sampler2D tColor;
4131uniform sampler2D tCount;
4132uniform vec2 uTexSize;
4133
4134void main(void) {
4135    vec2 coords = gl_FragCoord.xy / uTexSize;
4136    vec4 color = texture2D(tColor, coords);
4137    float count = texture2D(tCount, coords).r;
4138
4139    gl_FragColor = color / count;
4140}
4141`),hv}var gv={},qz;function zae(){return qz||(qz=1,Object.defineProperty(gv,"__esModule",{value:!0}),gv.accumulate_frag=void 0,gv.accumulate_frag=`
4142precision highp float;
4143
4144varying vec3 vPosition;
4145varying vec4 vColor;
4146
4147uniform float uCurrentSlice;
4148uniform float uCurrentX;
4149uniform float uCurrentY;
4150uniform float uResolution;
4151
4152const float p = 2.0;
4153
4154void main() {
4155    vec2 v = gl_FragCoord.xy - vec2(uCurrentX, uCurrentY) - 0.5;
4156    vec3 fragPos = vec3(v.x, v.y, uCurrentSlice);
4157    float dist = distance(fragPos, vPosition);
4158    if (dist > p) discard;
4159
4160    float f = p - dist;
4161    gl_FragColor = vColor * f;
4162    gl_FragData[1] = vec4(f);
4163}
4164`),gv}var yv={},Uz;function Hae(){return Uz||(Uz=1,Object.defineProperty(yv,"__esModule",{value:!0}),yv.accumulate_vert=void 0,yv.accumulate_vert=`
4165precision highp float;
4166
4167#include common
4168#include read_from_texture
4169
4170uniform int uGroupCount;
4171
4172attribute float aSample;
4173#define SampleID int(aSample)
4174
4175attribute mat4 aTransform;
4176attribute float aInstance;
4177
4178uniform vec2 uGeoTexDim;
4179uniform sampler2D tPosition;
4180uniform sampler2D tGroup;
4181
4182uniform vec2 uColorTexDim;
4183uniform sampler2D tColor;
4184
4185varying vec3 vPosition;
4186varying vec4 vColor;
4187
4188uniform vec3 uBboxSize;
4189uniform vec3 uBboxMin;
4190uniform float uResolution;
4191
4192void main() {
4193    vec3 position = readFromTexture(tPosition, SampleID, uGeoTexDim).xyz;
4194    float group = unpackRGBToInt(readFromTexture(tGroup, SampleID, uGeoTexDim).rgb);
4195
4196    position = (aTransform * vec4(position, 1.0)).xyz;
4197    gl_PointSize = 7.0;
4198    vPosition = (position - uBboxMin) / uResolution;
4199    gl_Position = vec4(((position - uBboxMin) / uBboxSize) * 2.0 - 1.0, 1.0);
4200
4201    #if defined(dColorType_group)
4202        vColor = readFromTexture(tColor, group, uColorTexDim);
4203    #elif defined(dColorType_groupInstance)
4204        vColor = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim);
4205    #endif
4206}
4207`),yv}var jz;function jQ(){return jz||(jz=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ColorNormalizeSchema=e.ColorAccumulateSchema=void 0,e.calcTextureMeshColorSmoothing=M,e.applyTextureMeshColorSmoothing=I,e.applyTextureMeshOverpaintSmoothing=w,e.applyTextureMeshTransparencySmoothing=F,e.applyTextureMeshEmissiveSmoothing=U,e.applyTextureMeshSubstanceSmoothing=N;const t=et(),r=Jt(),n=bn(),i=Kt(),c=Zt(),o=Yt(),s=Gr(),h=Gae(),f=Mr(),y=Ge(),_=rt(),g=zae(),a=Hae(),d=on(),p=Ct();e.ColorAccumulateSchema={drawCount:(0,o.ValueSpec)("number"),instanceCount:(0,o.ValueSpec)("number"),stride:(0,o.ValueSpec)("number"),uGroupCount:(0,o.UniformSpec)("i","material"),aTransform:(0,o.AttributeSpec)("float32",16,1),aInstance:(0,o.AttributeSpec)("float32",1,1),aSample:(0,o.AttributeSpec)("float32",1,0),uGeoTexDim:(0,o.UniformSpec)("v2","material"),tPosition:(0,o.TextureSpec)("texture","rgba","float","nearest","material"),tGroup:(0,o.TextureSpec)("texture","rgba","float","nearest","material"),uColorTexDim:(0,o.UniformSpec)("v2","material"),tColor:(0,o.TextureSpec)("texture","rgba","ubyte","nearest","material"),dColorType:(0,o.DefineSpec)("string",["group","groupInstance","vertex","vertexInstance"]),uCurrentSlice:(0,o.UniformSpec)("f"),uCurrentX:(0,o.UniformSpec)("f"),uCurrentY:(0,o.UniformSpec)("f"),uBboxMin:(0,o.UniformSpec)("v3","material"),uBboxSize:(0,o.UniformSpec)("v3","material"),uResolution:(0,o.UniformSpec)("f","material")};const u="color-accumulate",m="color-count";function v(k,j){const H=new Float32Array(k);for(let G=0;G<k;++G)H[G]=G*j;return H}function b(k,j,H,G,z){if(k.namedComputeRenderables[u]){const W=y.Vec3.sub((0,y.Vec3)(),H.max,H.min),X=k.namedComputeRenderables[u].values,Y=Math.round(j.vertexCount/z);(Y>X.drawCount.ref.value||z!==X.stride.ref.value)&&t.ValueCell.update(X.aSample,v(Y,z)),t.ValueCell.updateIfChanged(X.drawCount,Y),t.ValueCell.updateIfChanged(X.instanceCount,j.instanceCount),t.ValueCell.updateIfChanged(X.stride,z),t.ValueCell.updateIfChanged(X.uGroupCount,j.groupCount),t.ValueCell.update(X.aTransform,j.transformBuffer),t.ValueCell.update(X.aInstance,j.instanceBuffer),t.ValueCell.update(X.uGeoTexDim,y.Vec2.set(X.uGeoTexDim.ref.value,j.positionTexture.getWidth(),j.positionTexture.getHeight())),t.ValueCell.update(X.tPosition,j.positionTexture),t.ValueCell.update(X.tGroup,j.groupTexture),t.ValueCell.update(X.uColorTexDim,y.Vec2.set(X.uColorTexDim.ref.value,j.colorData.getWidth(),j.colorData.getHeight())),t.ValueCell.update(X.tColor,j.colorData),t.ValueCell.updateIfChanged(X.dColorType,j.colorType),t.ValueCell.updateIfChanged(X.uCurrentSlice,0),t.ValueCell.updateIfChanged(X.uCurrentX,0),t.ValueCell.updateIfChanged(X.uCurrentY,0),t.ValueCell.update(X.uBboxMin,H.min),t.ValueCell.update(X.uBboxSize,W),t.ValueCell.updateIfChanged(X.uResolution,G),k.namedComputeRenderables[u].update()}else k.namedComputeRenderables[u]=P(k,j,H,G,z);return k.namedComputeRenderables[u]}function P(k,j,H,G,z){const W=y.Vec3.sub((0,y.Vec3)(),H.max,H.min),X=Math.round(j.vertexCount/z),Y={drawCount:t.ValueCell.create(X),instanceCount:t.ValueCell.create(j.instanceCount),stride:t.ValueCell.create(z),uGroupCount:t.ValueCell.create(j.groupCount),aTransform:t.ValueCell.create(j.transformBuffer),aInstance:t.ValueCell.create(j.instanceBuffer),aSample:t.ValueCell.create(v(X,z)),uGeoTexDim:t.ValueCell.create(y.Vec2.create(j.positionTexture.getWidth(),j.positionTexture.getHeight())),tPosition:t.ValueCell.create(j.positionTexture),tGroup:t.ValueCell.create(j.groupTexture),uColorTexDim:t.ValueCell.create(y.Vec2.create(j.colorData.getWidth(),j.colorData.getHeight())),tColor:t.ValueCell.create(j.colorData),dColorType:t.ValueCell.create(j.colorType),uCurrentSlice:t.ValueCell.create(0),uCurrentX:t.ValueCell.create(0),uCurrentY:t.ValueCell.create(0),uBboxMin:t.ValueCell.create(H.min),uBboxSize:t.ValueCell.create(W),uResolution:t.ValueCell.create(G)},K={...e.ColorAccumulateSchema},Q=(0,i.ShaderCode)("accumulate",a.accumulate_vert,g.accumulate_frag,{drawBuffers:"required"}),J=(0,c.createComputeRenderItem)(k,"points",Q,K,Y);return(0,r.createComputeRenderable)(J,Y)}function C(k){const{gl:j,state:H}=k;H.disable(j.CULL_FACE),H.enable(j.BLEND),H.disable(j.DEPTH_TEST),H.enable(j.SCISSOR_TEST),H.depthMask(!1),H.clearColor(0,0,0,0),H.blendFunc(j.ONE,j.ONE),H.blendEquation(j.FUNC_ADD)}e.ColorNormalizeSchema={...f.QuadSchema,tColor:(0,o.TextureSpec)("texture","rgba","float","nearest"),tCount:(0,o.TextureSpec)("texture","alpha","float","nearest"),uTexSize:(0,o.UniformSpec)("v2")};const l="color-normalize";function S(k,j,H){if(k.namedComputeRenderables[l]){const G=k.namedComputeRenderables[l].values;t.ValueCell.update(G.tColor,j),t.ValueCell.update(G.tCount,H),t.ValueCell.update(G.uTexSize,y.Vec2.set(G.uTexSize.ref.value,j.getWidth(),j.getHeight())),k.namedComputeRenderables[l].update()}else k.namedComputeRenderables[l]=T(k,j,H);return k.namedComputeRenderables[l]}function T(k,j,H){const G={...f.QuadValues,tColor:t.ValueCell.create(j),tCount:t.ValueCell.create(H),uTexSize:t.ValueCell.create(y.Vec2.create(j.getWidth(),j.getHeight()))},z={...e.ColorNormalizeSchema},W=(0,i.ShaderCode)("normalize",s.quad_vert,h.normalize_frag),X=(0,c.createComputeRenderItem)(k,"triangles",W,z,G);return(0,r.createComputeRenderable)(X,G)}function A(k){const{gl:j,state:H}=k;H.disable(j.CULL_FACE),H.enable(j.BLEND),H.disable(j.DEPTH_TEST),H.enable(j.SCISSOR_TEST),H.depthMask(!1),H.clearColor(0,0,0,0),H.blendFunc(j.ONE,j.ONE),H.blendEquation(j.FUNC_ADD)}function x(k){const j=k[0]*k[1]*k[2],H=Math.sqrt(j),G=Math.pow(2,Math.ceil(Math.log(H)/Math.log(2)));let z=0,W=k[1],X=1,Y=k[2];return G<k[0]*k[2]?(Y=Math.floor(G/k[0]),X=Math.ceil(k[2]/Y),z=Y*k[0],W*=X):z=k[0]*k[2],{texDimX:z,texDimY:W,texRows:X,texCols:Y,powerOfTwoSize:W<G?G:G*2}}function M(k,j,H,G){const{drawBuffers:z}=H.extensions;
4207if(!z)throw new Error("need WebGL draw buffers");p.isTimingMode&&H.timer.mark("calcTextureMeshColorSmoothing");const{gl:W,resources:X,state:Y,extensions:{colorBufferHalfFloat:K,textureHalfFloat:Q}}=H,{resolution:J,stride:ae}=j,te=k.colorType.endsWith("Instance"),ne=_.Box3D.fromSphere3D((0,_.Box3D)(),te?k.boundingSphere:k.invariantBoundingSphere),$=1+J,ie=_.Box3D.expand((0,_.Box3D)(),ne,y.Vec3.create($,$,$));te||(k.instanceCount=1,k.instanceBuffer=new Float32Array([0]),k.transformBuffer=new Float32Array(y.Mat4.id));const Z=1/J,re=_.Box3D.scale((0,_.Box3D)(),ie,Z),oe=_.Box3D.size((0,y.Vec3)(),re);y.Vec3.ceil(oe,oe),y.Vec3.add(oe,oe,y.Vec3.create(2,2,2));const{min:ce}=ie,[ue,pe,he]=oe,{texDimX:fe,texDimY:de,texCols:ge}=x(oe);H.namedFramebuffers[u]||(H.namedFramebuffers[u]=H.resources.framebuffer());const Ce=H.namedFramebuffers[u];(0,d.isWebGL2)(W)?(H.namedTextures[u]||(H.namedTextures[u]=K&&Q?X.texture("image-float16","rgba","fp16","nearest"):X.texture("image-float32","rgba","float","nearest")),H.namedTextures[m]||(H.namedTextures[m]=X.texture("image-float32","alpha","float","nearest"))):(H.namedTextures[u]||(H.namedTextures[u]=X.texture("image-float32","rgba","float","nearest")),H.namedTextures[m]||(H.namedTextures[m]=X.texture("image-float32","rgba","float","nearest")));const ve=H.namedTextures[u],le=H.namedTextures[m];ve.define(fe,de),le.define(fe,de),ve.attachFramebuffer(Ce,0),le.attachFramebuffer(Ce,1);const me=b(H,k,ie,J,ae);Y.currentRenderItemId=-1,Ce.bind(),z.drawBuffers([z.COLOR_ATTACHMENT0,z.COLOR_ATTACHMENT1]);const{uCurrentSlice:ee,uCurrentX:se,uCurrentY:ye}=me.values;p.isTimingMode&&H.timer.mark("ColorAccumulate.render"),C(H),Y.viewport(0,0,fe,de),Y.scissor(0,0,fe,de),W.clear(W.COLOR_BUFFER_BIT),t.ValueCell.update(ye,0);let Se=0,Ae=0,_e=0;for(let Be=0;Be<he;++Be)Se>=ge&&(Se-=ge,Ae+=pe,_e=0,t.ValueCell.update(ye,Ae)),t.ValueCell.update(se,_e),t.ValueCell.update(ee,Be),Y.viewport(_e,Ae,ue,pe),Y.scissor(_e,Ae,ue,pe),me.render(),++Se,_e+=ue;ve.detachFramebuffer(Ce,0),le.detachFramebuffer(Ce,1),z.drawBuffers([W.COLOR_ATTACHMENT0,W.NONE]),p.isTimingMode&&H.timer.markEnd("ColorAccumulate.render"),p.isTimingMode&&H.timer.mark("ColorNormalize.render"),(!G||(0,n.isNullTexture)(G))&&(G=X.texture("image-uint8","rgba","ubyte","linear")),G.define(fe,de);const be=S(H,ve,le);Y.currentRenderItemId=-1,A(H),G.attachFramebuffer(Ce,0),Y.viewport(0,0,fe,de),Y.scissor(0,0,fe,de),W.clear(W.COLOR_BUFFER_BIT),be.render(),p.isTimingMode&&H.timer.markEnd("ColorNormalize.render");const xe=y.Vec4.create(ce[0],ce[1],ce[2],Z),we=te?"volumeInstance":"volume";return p.isTimingMode&&H.timer.markEnd("calcTextureMeshColorSmoothing"),{texture:G,gridDim:oe,gridTexDim:y.Vec2.create(fe,de),gridTransform:xe,type:we}}const D="color-smoothing-rgb",V="color-smoothing-rgba",R="color-smoothing-alpha";function E(k){return k==="group"||k==="groupInstance"}function I(k,j,H,G){if(!E(k.dColorType.ref.value))return;j={...j,stride:j.stride*3},H.namedTextures[D]||(H.namedTextures[D]=H.resources.texture("image-uint8","rgb","ubyte","nearest"));const z=H.namedTextures[D];z.load(k.tColor.ref.value);const W=M({vertexCount:k.uVertexCount.ref.value,instanceCount:k.uInstanceCount.ref.value,groupCount:k.uGroupCount.ref.value,transformBuffer:k.aTransform.ref.value,instanceBuffer:k.aInstance.ref.value,positionTexture:k.tPosition.ref.value,groupTexture:k.tGroup.ref.value,colorData:z,colorType:k.dColorType.ref.value,boundingSphere:k.boundingSphere.ref.value,invariantBoundingSphere:k.invariantBoundingSphere.ref.value},j,H,G);t.ValueCell.updateIfChanged(k.dColorType,W.type),t.ValueCell.update(k.tColorGrid,W.texture),t.ValueCell.update(k.uColorTexDim,W.gridTexDim),t.ValueCell.update(k.uColorGridDim,W.gridDim),t.ValueCell.update(k.uColorGridTransform,W.gridTransform)}function B(k){return k==="groupInstance"}function w(k,j,H,G){if(!B(k.dOverpaintType.ref.value))return;j={...j,stride:j.stride*3},H.namedTextures[V]||(H.namedTextures[V]=H.resources.texture("image-uint8","rgba","ubyte","nearest"));const z=H.namedTextures[V];z.load(k.tOverpaint.ref.value);const W=M({vertexCount:k.uVertexCount.ref.value,instanceCount:k.uInstanceCount.ref.value,groupCount:k.uGroupCount.ref.value,transformBuffer:k.aTransform.ref.value,instanceBuffer:k.aInstance.ref.value,positionTexture:k.tPosition.ref.value,groupTexture:k.tGroup.ref.value,colorData:z,colorType:k.dOverpaintType.ref.value,boundingSphere:k.boundingSphere.ref.value,invariantBoundingSphere:k.invariantBoundingSphere.ref.value},j,H,G);t.ValueCell.updateIfChanged(k.dOverpaintType,W.type),t.ValueCell.update(k.tOverpaintGrid,W.texture),t.ValueCell.update(k.uOverpaintTexDim,W.gridTexDim),t.ValueCell.update(k.uOverpaintGridDim,W.gridDim),t.ValueCell.update(k.uOverpaintGridTransform,W.gridTransform)}function O(k){return k==="groupInstance"}function F(k,j,H,G){if(!O(k.dTransparencyType.ref.value))return;j={...j,stride:j.stride*3},H.namedTextures[R]||(H.namedTextures[R]=H.resources.texture("image-uint8","alpha","ubyte","nearest"));const z=H.namedTextures[R];z.load(k.tTransparency.ref.value);const W=M({vertexCount:k.uVertexCount.ref.value,instanceCount:k.uInstanceCount.ref.value,groupCount:k.uGroupCount.ref.value,transformBuffer:k.aTransform.ref.value,instanceBuffer:k.aInstance.ref.value,positionTexture:k.tPosition.ref.value,groupTexture:k.tGroup.ref.value,colorData:z,colorType:k.dTransparencyType.ref.value,boundingSphere:k.boundingSphere.ref.value,invariantBoundingSphere:k.invariantBoundingSphere.ref.value},j,H,G);t.ValueCell.updateIfChanged(k.dTransparencyType,W.type),t.ValueCell.update(k.tTransparencyGri
4207d,W.texture),t.ValueCell.update(k.uTransparencyTexDim,W.gridTexDim),t.ValueCell.update(k.uTransparencyGridDim,W.gridDim),t.ValueCell.update(k.uTransparencyGridTransform,W.gridTransform)}function L(k){return k==="groupInstance"}function U(k,j,H,G){if(!L(k.dEmissiveType.ref.value))return;j={...j,stride:j.stride*3},H.namedTextures[R]||(H.namedTextures[R]=H.resources.texture("image-uint8","alpha","ubyte","nearest"));const z=H.namedTextures[R];z.load(k.tEmissive.ref.value);const W=M({vertexCount:k.uVertexCount.ref.value,instanceCount:k.uInstanceCount.ref.value,groupCount:k.uGroupCount.ref.value,transformBuffer:k.aTransform.ref.value,instanceBuffer:k.aInstance.ref.value,positionTexture:k.tPosition.ref.value,groupTexture:k.tGroup.ref.value,colorData:z,colorType:k.dEmissiveType.ref.value,boundingSphere:k.boundingSphere.ref.value,invariantBoundingSphere:k.invariantBoundingSphere.ref.value},j,H,G);t.ValueCell.updateIfChanged(k.dEmissiveType,W.type),t.ValueCell.update(k.tEmissiveGrid,W.texture),t.ValueCell.update(k.uEmissiveTexDim,W.gridTexDim),t.ValueCell.update(k.uEmissiveGridDim,W.gridDim),t.ValueCell.update(k.uEmissiveGridTransform,W.gridTransform)}function q(k){return k==="groupInstance"}function N(k,j,H,G){if(!q(k.dSubstanceType.ref.value))return;j={...j,stride:j.stride*3},H.namedTextures[V]||(H.namedTextures[V]=H.resources.texture("image-uint8","rgba","ubyte","nearest"));const z=H.namedTextures[V];z.load(k.tSubstance.ref.value);const W=M({vertexCount:k.uVertexCount.ref.value,instanceCount:k.uInstanceCount.ref.value,groupCount:k.uGroupCount.ref.value,transformBuffer:k.aTransform.ref.value,instanceBuffer:k.aInstance.ref.value,positionTexture:k.tPosition.ref.value,groupTexture:k.tGroup.ref.value,colorData:z,colorType:k.dSubstanceType.ref.value,boundingSphere:k.boundingSphere.ref.value,invariantBoundingSphere:k.invariantBoundingSphere.ref.value},j,H,G);t.ValueCell.updateIfChanged(k.dSubstanceType,W.type),t.ValueCell.update(k.tSubstanceGrid,W.texture),t.ValueCell.update(k.uSubstanceTexDim,W.gridTexDim),t.ValueCell.update(k.uSubstanceGridDim,W.gridDim),t.ValueCell.update(k.uSubstanceGridTransform,W.gridTransform)}})(sA)),sA}var Gz;function Ul(){if(Gz)return mv;Gz=1,Object.defineProperty(mv,"__esModule",{value:!0}),mv.Visual=void 0;const e=gt(),t=cn(),r=Ge(),n=kl(),i=kr(),c=et(),o=Ka(),s=In(),h=Ya(),f=Qa(),y=li(),_=Tt(),g=Bw(),a=jQ(),d=Za(),p=Ja(),u=eo();var m;return(function(v){function b(I,B){I&&(I.state.visible=B)}v.setVisibility=b;function P(I,B){I&&(I.state.alphaFactor=B)}v.setAlphaFactor=P;function C(I,B){I&&(I.state.pickable=B)}v.setPickable=C;function l(I,B){I&&(I.state.colorOnly=B)}v.setColorOnly=l;function S(I,B,w,O,F){if(!I||(0,e.isEmptyLoci)(B))return!1;const{tMarker:L,uMarker:U,markerAverage:q,markerStatus:N,uGroupCount:k,instanceCount:j,instanceGranularity:H}=I.values,G=H.ref.value?j.ref.value:k.ref.value*j.ref.value,{array:z}=L.ref.value,W=N.ref.value;if(!(0,e.isEveryLoci)(B)){let Q=0;if(O(B,J=>(Q+=s.Interval.size(J),!0),!0),Q===0)return!1;Q===G&&(B=e.EveryLoci)}let X=!1,Y=-1,K=-1;if((0,e.isEveryLoci)(B)){const Q=(0,t.getMarkerInfo)(w,W);Q.status!==-1?(X=W!==Q.status,X&&(0,t.setMarkerValue)(z,Q.status,G)):X=(0,t.applyMarkerAction)(z,s.Interval.ofLength(G),w),Y=Q.average,K=Q.status}else X=O(B,Q=>(0,t.applyMarkerAction)(z,Q,w),!0),X&&(Y=(0,t.getPartialMarkerAverage)(w,W),F&&F.status!==-1&&Y===-1&&t.MarkerActions.isReverse(F.action,w)&&e.Loci.areEqual(B,F.loci)&&(K=F.status,Y=K===0?0:.5));return X&&(Y===-1&&(Y=(0,y.getMarkersAverage)(z,G),Y===0&&(K=0)),F&&(F.action=w,F.loci=B,F.status=W),c.ValueCell.updateIfChanged(U,K),K===-1&&c.ValueCell.update(L,L.ref.value),c.ValueCell.updateIfChanged(q,Y),c.ValueCell.updateIfChanged(N,K)),X}v.mark=S;function T(I,B,w,O,F){if(!I)return;const{tOverpaint:L,dOverpaintType:U,dOverpaint:q,uGroupCount:N,instanceCount:k,instanceGranularity:j}=I.values,H=j.ref.value?k.ref.value:N.ref.value*k.ref.value,G=j.ref.value?"instance":"groupInstance";(0,o.createOverpaint)(B.layers.length?H:0,G,I.values);const{array:z}=L.ref.value;O&&(0,o.clearOverpaint)(z,0,H);for(let W=0,X=B.layers.length;W<X;++W){const{loci:Y,color:K,clear:Q}=B.layers[W];
4207w(Y,ae=>{const te=s.Interval.start(ae),ne=s.Interval.end(ae);return Q?(0,o.clearOverpaint)(z,te,ne):(0,o.applyOverpaintColor)(z,te,ne,K)},!1)}if(c.ValueCell.update(L,L.ref.value),c.ValueCell.updateIfChanged(U,G),c.ValueCell.updateIfChanged(q,B.layers.length>0),B.layers.length!==0&&G!=="instance"&&F&&(0,_.hasColorSmoothingProp)(F.props)){const{geometry:W,props:X,webgl:Y}=F;if(W.kind==="mesh"){const{resolution:K,overpaintTexture:Q}=W.meta,J=(0,_.getColorSmoothingProps)(X.smoothColors,!0,K);J&&((0,g.applyMeshOverpaintSmoothing)(I.values,J,Y,Q),W.meta.overpaintTexture=I.values.tOverpaintGrid.ref.value)}else if(Y&&W.kind==="texture-mesh"){const{resolution:K,overpaintTexture:Q}=W.meta,J=(0,_.getColorSmoothingProps)(X.smoothColors,!0,K);J&&((0,a.applyTextureMeshOverpaintSmoothing)(I.values,J,Y,Q),W.meta.overpaintTexture=I.values.tOverpaintGrid.ref.value)}}}v.setOverpaint=T;function A(I,B,w,O,F){if(!I)return;const{tTransparency:L,dTransparencyType:U,transparencyAverage:q,transparencyMin:N,dTransparency:k,uGroupCount:j,instanceCount:H,instanceGranularity:G}=I.values,z=G.ref.value?H.ref.value:j.ref.value*H.ref.value,W=G.ref.value?"instance":"groupInstance";(0,h.createTransparency)(B.layers.length?z:0,W,I.values);const{array:X}=L.ref.value;
4207O&&(0,h.clearTransparency)(X,0,z);for(let Y=0,K=B.layers.length;Y<K;++Y){const{loci:Q,value:J}=B.layers[Y];w(Q,te=>{const ne=s.Interval.start(te),$=s.Interval.end(te);return(0,h.applyTransparencyValue)(X,ne,$,J)},!1)}if(c.ValueCell.update(L,L.ref.value),c.ValueCell.updateIfChanged(q,(0,h.getTransparencyAverage)(X,z)),c.ValueCell.updateIfChanged(N,(0,h.getTransparencyMin)(X,z)),c.ValueCell.updateIfChanged(U,W),c.ValueCell.updateIfChanged(k,B.layers.length>0),B.layers.length!==0&&W!=="instance"&&F&&(0,_.hasColorSmoothingProp)(F.props)){const{geometry:Y,props:K,webgl:Q}=F;if(Y.kind==="mesh"){const{resolution:J,transparencyTexture:ae}=Y.meta,te=(0,_.getColorSmoothingProps)(K.smoothColors,!0,J);te&&((0,g.applyMeshTransparencySmoothing)(I.values,te,Q,ae),Y.meta.transparencyTexture=I.values.tTransparencyGrid.ref.value)}else if(Q&&Y.kind==="texture-mesh"){const{resolution:J,transparencyTexture:ae}=Y.meta,te=(0,_.getColorSmoothingProps)(K.smoothColors,!0,J);te&&((0,a.applyTextureMeshTransparencySmoothing)(I.values,te,Q,ae),Y.meta.transparencyTexture=I.values.tTransparencyGrid.ref.value)}}}v.setTransparency=A;function x(I,B,w,O,F){if(!I)return;const{tEmissive:L,dEmissiveType:U,emissiveAverage:q,dEmissive:N,uGroupCount:k,instanceCount:j,instanceGranularity:H}=I.values,G=H.ref.value?j.ref.value:k.ref.value*j.ref.value,z=H.ref.value?"instance":"groupInstance";(0,p.createEmissive)(B.layers.length?G:0,z,I.values);const{array:W}=L.ref.value;O&&(0,p.clearEmissive)(W,0,G);for(let X=0,Y=B.layers.length;X<Y;++X){const{loci:K,value:Q}=B.layers[X];w(K,ae=>{const te=s.Interval.start(ae),ne=s.Interval.end(ae);return(0,p.applyEmissiveValue)(W,te,ne,Q)},!1)}if(c.ValueCell.update(L,L.ref.value),c.ValueCell.updateIfChanged(q,(0,p.getEmissiveAverage)(W,G)),c.ValueCell.updateIfChanged(U,z),c.ValueCell.updateIfChanged(N,B.layers.length>0),B.layers.length!==0&&z!=="instance"&&F&&(0,_.hasColorSmoothingProp)(F.props)){const{geometry:X,props:Y,webgl:K}=F;if(X.kind==="mesh"){const{resolution:Q,emissiveTexture:J}=X.meta,ae=(0,_.getColorSmoothingProps)(Y.smoothColors,!0,Q);ae&&((0,g.applyMeshEmissiveSmoothing)(I.values,ae,K,J),X.meta.emissiveTexture=I.values.tEmissiveGrid.ref.value)}else if(K&&X.kind==="texture-mesh"){const{resolution:Q,emissiveTexture:J}=X.meta,ae=(0,_.getColorSmoothingProps)(Y.smoothColors,!0,Q);ae&&((0,a.applyTextureMeshEmissiveSmoothing)(I.values,ae,K,J),X.meta.emissiveTexture=I.values.tEmissiveGrid.ref.value)}}}v.setEmissive=x;function M(I,B,w,O,F){if(!I)return;const{tSubstance:L,dSubstanceType:U,dSubstance:q,uGroupCount:N,instanceCount:k,instanceGranularity:j}=I.values,H=j.ref.value?k.ref.value:N.ref.value*k.ref.value,G=j.ref.value?"instance":"groupInstance";(0,d.createSubstance)(B.layers.length?H:0,G,I.values);const{array:z}=L.ref.value;O&&(0,d.clearSubstance)(z,0,H);for(let W=0,X=B.layers.length;W<X;++W){const{loci:Y,material:K,clear:Q}=B.layers[W];w(Y,ae=>{const te=s.Interval.start(ae),ne=s.Interval.end(ae);return Q?(0,d.clearSubstance)(z,te,ne):(0,d.applySubstanceMaterial)(z,te,ne,K)},!1)}if(c.ValueCell.update(L,L.ref.value),c.ValueCell.updateIfChanged(U,G),c.ValueCell.updateIfChanged(q,B.layers.length>0),B.layers.length!==0&&G!=="instance"&&F&&(0,_.hasColorSmoothingProp)(F.props)){const{geometry:W,props:X,webgl:Y}=F;if(W.kind==="mesh"){const{resolution:K,substanceTexture:Q}=W.meta,J=(0,_.getColorSmoothingProps)(X.smoothColors,!0,K);J&&((0,g.applyMeshSubstanceSmoothing)(I.values,J,Y,Q),W.meta.substanceTexture=I.values.tSubstanceGrid.ref.value)}else if(Y&&W.kind==="texture-mesh"){const{resolution:K,substanceTexture:Q}=W.meta,J=(0,_.getColorSmoothingProps)(X.smoothColors,!0,K);J&&((0,a.applyTextureMeshSubstanceSmoothing)(I.values,J,Y,Q),W.meta.substanceTexture=I.values.tSubstanceGrid.ref.value)}}}v.setSubstance=M;function D(I,B,w,O){if(!I)return;const{tClipping:F,dClippingType:L,dClipping:U,uGroupCount:q,instanceCount:N,instanceGranularity:k}=I.values,j=k.ref.value?N.ref.value:q.ref.value*N.ref.value,{layers:H}=B,G=k.ref.value?"instance":"groupInstance";(0,f.createClipping)(H.length?j:0,G,I.values);const{array:z}=F.ref.value;O&&(0,f.clearClipping)(z,0,j);for(let W=0,X=B.layers.length;W<X;++W){const{loci:Y,groups:K}=B.layers[W];
4207w(Y,J=>{const ae=s.Interval.start(J),te=s.Interval.end(J);return(0,f.applyClippingGroups)(z,ae,te,K)},!1)}c.ValueCell.update(F,F.ref.value),c.ValueCell.updateIfChanged(L,G),c.ValueCell.updateIfChanged(U,B.layers.length>0)}v.setClipping=D;function V(I,B,w,O){if(!I)return;const{tWiggle:F,dWiggleType:L,wiggleAverage:U,dWiggle:q,uGroupCount:N,instanceCount:k,instanceGranularity:j}=I.values,H=j.ref.value?k.ref.value:N.ref.value*k.ref.value,G=j.ref.value?"instance":"groupInstance";(0,u.createWiggle)(B.layers.length?H:0,G,I.values);const{array:z}=F.ref.value;O&&(0,u.clearWiggle)(z,0,H);for(let W=0,X=B.layers.length;W<X;++W){const{loci:Y,value:K}=B.layers[W];w(Y,J=>{const ae=s.Interval.start(J),te=s.Interval.end(J);return(0,u.applyWiggleValue)(z,ae,te,K)},!1)}c.ValueCell.update(F,F.ref.value),c.ValueCell.updateIfChanged(U,(0,u.getWiggleAverage)(z,H)),c.ValueCell.updateIfChanged(L,G),c.ValueCell.updateIfChanged(q,B.layers.length>0)}v.setWiggle=V;function R(I,B){I&&(c.ValueCell.updateIfChanged(I.values.uOverpaintStrength,B.overpaint),c.ValueCell.updateIfChanged(I.values.uTransparencyStrength,B.transparency),c.ValueCell.updateIfChanged(I.values.uEmissiveStrength,B.emissive),c.ValueCell.updateIfChanged(I.values.uSubstanceStrength,B.substance),c.ValueCell.updateIfChanged(I.values.uWiggleStrength,B.wiggle))}v.setThemeStrength=R;function E(I,B,w){if(!I||!B&&!w)return;const{values:O}=I;B&&(r.Mat4.copy(O.matrix.ref.value,B),c.ValueCell.update(O.matrix,O.matrix.ref.value)),w?(O.extraTransform.ref.value.set(w),c.ValueCell.update(O.extraTransform,O.extraTransform.ref.value),c.ValueCell.updateIfChanged(O.hasExtraTransform,!0)):w===null&&c.ValueCell.updateIfChanged(O.hasExtraTransform,!1),(0,n.updateTransformData)(O,O.invariantBoundingSphere.ref.value,O.instanceGrid.ref.value.cellSize,O.instanceGrid.ref.value.batchSize);const F=(0,i.calculateTransformBoundingSphere)(O.invariantBoundingSphere.ref.value,O.transform.ref.value,O.instanceCount.ref.value,0);c.ValueCell.update(O.boundingSphere,F)}v.setTransform=E})(m||(mv.Visual=m={})),mv}var zz;function lc(){if(zz)return NP;zz=1,Object.defineProperty(NP,"__esModule",{value:!0}),NP.ShapeRepresentation=P;const e=Ll(),t=Tt(),r=Lt(),n=pn(),i=Rn(),c=ds(),o=ea(),s=ql(),h=li(),f=cn(),y=et(),_=wi(),g=ls(),a=gt(),d=at(),p=_n(),u=Ul(),m=nt(),v=Ne(),b=Ct();function P(l,S,T={}){let A=0;const x=new i.Subject,M=r.Representation.createState(),D=(0,c.getNextMaterialId)(),V=[];let R,E,I=-1;const B=o.Theme.createEmpty(),w=S.Params;let O=v.ParamDefinition.getDefaultValues(w),F,L;T.modifyState&&r.Representation.updateState(M,T.modifyState(M));const U=s.VisualUpdateState.create();function q(H={},G){s.VisualUpdateState.reset(U),!(!G&&!E)&&(G&&!E?U.createNew=!0:G&&E&&G.id===E.id||(G&&E&&G.id!==E.id?(U.updateTransform=!0,U.createGeometry=!0):G&&console.warn("unexpected state")),H.instanceGranularity!==O.instanceGranularity&&(U.updateTransform=!0),U.updateTransform&&(U.updateColor=!0,U.updateSize=!0,U.updateMatrix=!0),U.createGeometry&&(U.updateColor=!0,U.updateSize=!0))}function N(H={},G){return T.modifyProps&&(H=T.modifyProps(H)),m.Task.create("ShapeRepresentation.create",async z=>{const W=Object.assign(O,H),X=G?await l(z,G,W,E):void 0;if(q(H,X),X&&(E=X,Object.assign(B,n.Shape.getTheme(E))),U.createNew){V.length=0,F=n.Shape.groupIterator(E);const Y=n.Shape.createTransform(E.transforms,E.geometry.boundingSphere,W.cellSize,W.batchSize),K=S.createValues(E.geometry,Y,F,B,W),Q=S.createRenderableState(W);T.modifyState&&Object.assign(Q,T.modifyState(Q)),r.Representation.updateState(M,Q),R=(0,c.createRenderObject)(E.geometry.kind,K,Q,D),R&&V.push(R),L=S.createPositionIterator(E.geometry,R.values)}else{if(!R)throw new Error("expected renderObject to be available");if(U.updateTransform){F=n.Shape.groupIterator(E);const{instanceCount:Y,groupCount:K}=F;(0,t.resolveInstanceGranularity)(W.instanceGranularity,K,Y)?(0,h.createMarkers)(Y,"instance",R.values):(0,h.createMarkers)(Y*K,"groupInstance",R.values)}U.updateMatrix&&(n.Shape.createTransform(E.transforms,E.geometry.boundingSphere,W.cellSize,W.batchSize,R.values),"lodLevels"in R.values&&y.ValueCell.update(R.values.lodLevels,R.values.lodLevels.ref.value)),U.createGeometry&&(y.ValueCell.updateIfChanged(R.values.drawCount,e.Geometry.getDrawCount(E.geometry)),y.ValueCell.updateIfChanged(R.values.uVertexCount,e.Geometry.getVertexCount(E.geometry)),y.ValueCell.updateIfChanged(R.values.uGroupCount,F.groupCount)),U.updateColor&&(0,_.createColors)(F,L,B.color,R.values),U.updateSize&&"uSize"in R.values&&(0,g.createSizes)(F,L,B.size,R.values),S.updateV
4207alues(R.values,W),S.updateRenderableState(R.state,W),(U.updateTransform||U.createGeometry)&&(S.updateBoundingSphere(R.values,E.geometry),L=S.createPositionIterator(E.geometry,R.values))}O=W,(U.createGeometry||U.createNew)&&(I+=1),x.next(A++)})}function k(H,G,z){let W=!1;if(!n.ShapeGroup.isLoci(H)||n.ShapeGroup.isLociEmpty(H)||H.shape!==G)return!1;for(const X of H.groups)z(d.Interval.ofSingleton(X.instance))&&(W=!0);return W}function j(H,G){const z=(0,t.resolveInstanceGranularity)(O.instanceGranularity,E.groupCount,E.transforms.length);return(0,a.isEveryLoci)(H)||n.Shape.isLoci(H)&&H.shape===E?G(z?d.Interval.ofBounds(0,E.transforms.length):d.Interval.ofBounds(0,E.groupCount*E.transforms.length)):z?k(H,E,G):C(H,E,G)}return{label:"Shape geometry",get groupCount(){return F?F.count:0},get props(){return O},get params(){return w},get state(){return M},get theme(){return B},renderObjects:V,get geometryVersion(){return I},updated:x,createOrUpdate:N,getLoci(H){const{objectId:G,groupId:z,instanceId:W}=H;if(R&&R.id===G){const X=(0,t.resolveInstanceGranularity)(O.instanceGranularity,E.groupCount,E.transforms.length);return z===p.PickingId.Null||X?n.Shape.Loci(E):n.ShapeGroup.Loci(E,[{ids:d.OrderedSet.ofSingleton(z),instance:W}])}return a.EmptyLoci},getAllLoci(){return[n.Shape.Loci(E)]},eachLocation:H=>{for(F.reset();F.hasNext;){const{location:G,isSecondary:z}=F.move();H(G,z)}},mark(H,G){if(!f.MarkerActions.is(M.markerActions,G))return!1;if(n.ShapeGroup.isLoci(H)||n.Shape.isLoci(H)){if(H.shape!==E)return!1}else if(!(0,a.isEveryLoci)(H))return!1;return u.Visual.mark(R,H,G,j)},setState(H){T.modifyState&&(H=T.modifyState(H)),R&&(H.visible!==void 0&&u.Visual.setVisibility(R,H.visible),H.alphaFactor!==void 0&&u.Visual.setAlphaFactor(R,H.alphaFactor),H.pickable!==void 0&&u.Visual.setPickable(R,H.pickable),H.colorOnly!==void 0&&u.Visual.setColorOnly(R,H.colorOnly),H.overpaint!==void 0&&u.Visual.setOverpaint(R,H.overpaint,j,!0),H.transparency!==void 0&&u.Visual.setTransparency(R,H.transparency,j,!0),H.substance!==void 0&&u.Visual.setSubstance(R,H.substance,j,!0),H.transform!==void 0&&u.Visual.setTransform(R,H.transform)),r.Representation.updateState(M,H)},setTheme(H){b.isDebugMode&&console.warn("The `ShapeRepresentation` theme is fixed to `ShapeGroupColorTheme` and `ShapeGroupSizeTheme`. Colors are taken from `Shape.getColor` and sizes from `Shape.getSize`")},destroy(){V.length=0,R&&(R.state.disposed=!0,R=void 0)}}}function C(l,S,T){if(!n.ShapeGroup.isLoci(l)||l.shape!==S)return!1;let A=!1;const{groupCount:x}=S,{groups:M}=l;for(const{ids:D,instance:V}of M)if(d.Interval.is(D)){const R=V*x+d.Interval.start(D),E=V*x+d.Interval.end(D);T(d.Interval.ofBounds(R,E))&&(A=!0)}else for(let R=0,E=D.length;R<E;R++){const I=V*x+D[R];T(d.Interval.ofSingleton(I))&&(A=!0)}return A}return NP}var vv={},Hz;function Wae(){if(Hz)return vv;
4207Hz=1,Object.defineProperty(vv,"__esModule",{value:!0}),vv.StructureUnitTransforms=void 0;const e=Ge(),t=at(),r=kl(),n=(0,e.Mat4)();class i{constructor(o){this.structure=o,this.groupUnitTransforms=[],this.unitOffsetMap=t.IntMap.Mutable(),this.groupIndexMap=new Map,this._isIdentity=void 0,this.version=0,this.unitTransforms=new Float32Array(o.units.length*16),this.size=o.units.length,this.reset();let s=0;for(let h=0,f=o.unitSymmetryGroups.length;h<f;++h){const y=o.unitSymmetryGroups[h];this.groupIndexMap.set(y,h);const _=this.unitTransforms.subarray(s,s+y.units.length*16);this.groupUnitTransforms.push(_);for(let g=0,a=y.units.length;g<a;++g)this.unitOffsetMap.set(y.units[g].id,s+g*16);s+=y.units.length*16}}reset(){this.version=0,(0,r.fillIdentityTransform)(this.unitTransforms,this.size),this._isIdentity=!0}get isIdentity(){if(this._isIdentity===void 0){this._isIdentity=!0;for(let o=0,s=this.size*16;o<s;o+=16)if(e.Mat4.fromArray(n,this.unitTransforms,o),!e.Mat4.isIdentity(n)){this._isIdentity=!1;break}}return this._isIdentity}setTransform(o,s){this.version=(this.version+1)%2147483647,e.Mat4.toArray(o,this.unitTransforms,this.unitOffsetMap.get(s.id)),this._isIdentity=void 0}getTransform(o,s){return e.Mat4.fromArray(o,this.unitTransforms,this.unitOffsetMap.get(s.id))}getSymmetryGroupTransforms(o){return this.groupUnitTransforms[this.groupIndexMap.get(o)]}}return vv.StructureUnitTransforms=i,vv}var $o={},Wz;function $ae(){if(Wz)return $o;Wz=1,Object.defineProperty($o,"__esModule",{value:!0}),$o.SpinStructureParams=void 0,$o.unwindStructureAssembly=c,$o.explodeStructure=f,$o.getSpinStructureAxisAndOrigin=y,$o.spinStructure=d;const e=Ne(),t=rt(),r=Ge(),n=Ke(),i=(0,r.Mat4)();function c(p,u,m){for(let v=0,b=p.units.length;v<b;v++){const P=p.units[v];t.SymmetryOperator.lerpFromIdentity(i,P.conformation.operator,m),u.setTransform(i,P)}}const o=(0,r.Vec3)(),s=(0,r.Vec3)(),h=(0,r.Mat4)();
4207function f(p,u,m,v){const b=v.radius*m;for(let P=0,C=p.units.length;P<C;P++){const l=p.units[P];r.Vec3.transformMat4(o,l.lookup3d.boundary.sphere.center,l.conformation.operator.matrix),r.Vec3.sub(s,o,v.center),r.Vec3.setMagnitude(s,s,b),r.Mat4.fromTranslation(h,s),u.setTransform(h,l)}}$o.SpinStructureParams={axis:e.ParamDefinition.MappedStatic("custom",{structure:e.ParamDefinition.Group({principalAxis:e.ParamDefinition.Select("dirA",[["dirA","A"],["dirB","B"],["dirC","C"]])}),custom:e.ParamDefinition.Group({vector:e.ParamDefinition.Vec3(r.Vec3.create(0,0,1))})}),origin:e.ParamDefinition.MappedStatic("structure",{structure:e.ParamDefinition.Group({}),custom:e.ParamDefinition.Group({vector:e.ParamDefinition.Vec3(r.Vec3.create(0,0,0))})})};function y(p,u){let m,v;return u.axis.name==="custom"?m=u.axis.params.vector:m=n.Structure.getPrincipalAxes(p).momentsAxes[u.axis.params.principalAxis],u.origin.name==="custom"?v=u.origin.params.vector:v=n.Structure.getPrincipalAxes(p).momentsAxes.origin,{axis:m,origin:v}}const _=(0,r.Mat4)(),g=(0,r.Mat4)(),a=(0,r.Mat4)();function d(p,u,m,v,b){for(let P=0,C=p.units.length;P<C;P++){const l=p.units[P];r.Vec3.negate(s,b),r.Mat4.fromTranslation(h,s),r.Mat4.fromRotation(_,Math.PI*m*2,v),r.Mat4.fromTranslation(g,b),r.Mat4.mul(a,_,h),r.Mat4.mul(a,g,a),u.setTransform(a,l)}}return $o}var bv={},$z;function US(){if($z)return bv;$z=1,Object.defineProperty(bv,"__esModule",{value:!0}),bv.Overpaint=i;const e=gt(),t=vt(),r=Ke(),n=va();function i(c,o){return{kind:c,layers:o}}return(function(c){c.Empty={kind:"empty-loci",layers:[]};function o(d,p){if(d.layers.length===0&&p.layers.length===0)return!0;if(d.layers.length!==p.layers.length)return!1;for(let u=0,m=d.layers.length;u<m;++u)if(d.layers[u].clear!==p.layers[u].clear||d.layers[u].color!==p.layers[u].color||!e.Loci.areEqual(d.layers[u].loci,p.layers[u].loci))return!1;return!0}c.areEqual=o;function s(d){return d.layers.length===0}c.isEmpty=s;function h(d,p){if(d.kind==="element-loci"){const u=[];for(const m of d.layers){let{loci:v,color:b,clear:P}=m;v=r.StructureElement.Loci.remap(v,p),r.StructureElement.Loci.isEmpty(v)||u.push({loci:v,color:b,clear:P})}return{kind:"element-loci",layers:u}}else return d}c.remap=h;function f(d){if(s(d))return d;if(d.kind==="element-loci"){const{structure:p}=d.layers[0].loci,u=new Map;let m=r.StructureElement.Loci.none(p);for(let b=0,P=d.layers.length;b<P;++b){let{loci:C,color:l,clear:S}=d.layers[P-b-1];if(C=r.StructureElement.Loci.subtract(C,m),m=r.StructureElement.Loci.union(C,m),!r.StructureElement.Loci.isEmpty(C)){const T=S?-1:l;u.has(T)&&(C=r.StructureElement.Loci.union(C,u.get(T))),u.set(T,C)}}const v=[];return u.forEach((b,P)=>{const C=P===-1,l=C?(0,t.Color)(0):P;v.push({loci:b,color:l,clear:C})}),{kind:"element-loci",layers:v}}else return d}c.merge=f;function y(d,p){if(s(d))return d;if(d.kind==="element-loci"){const{structure:u}=d.layers[0].loci,m=[];for(const v of d.layers){let{loci:b,color:P,clear:C}=v;const l=r.StructureElement.Loci.remap(b,p);b=r.StructureElement.Loci.remap(l,u),r.StructureElement.Loci.isEmpty(b)||m.push({loci:b,color:P,clear:C})}return{kind:"element-loci",layers:m}}else return d}c.filter=y;function _(d,p){const u=[];for(let m=0,v=d.length;m<v;++m){const{script:b,color:P,clear:C}=d[m],l=n.Script.toLoci(b,p);r.StructureElement.Loci.isEmpty(l)||u.push({loci:l,color:P,clear:C})}return{kind:"element-loci",layers:u}}c.ofScript=_;function g(d,p){const u=[];for(let m=0,v=d.length;m<v;++m){const{bundle:b,color:P,clear:C}=d[m],l=r.StructureElement.Bundle.toLoci(b,p.root);u.push({loci:l,color:P,clear:C})}return{kind:"element-loci",layers:u}}c.ofBundle=g;function a(d){const p=[];for(let u=0,m=d.layers.length;u<m;++u){const{loci:v,color:b,clear:P}=d.layers[u],C=r.StructureElement.Bundle.fromLoci(v);p.push({bundle:C,color:b,clear:P})}return{kind:"element-loci",layers:p}}c.toBundle=a})(i||(bv.Overpaint=i={})),bv}var _v={},Xz;function jS(){if(Xz)return _v;
4207Xz=1,Object.defineProperty(_v,"__esModule",{value:!0}),_v.Transparency=n;const e=gt(),t=Ke(),r=va();function n(i,c){return{kind:i,layers:c}}return(function(i){i.Empty={kind:"empty-loci",layers:[]};function c(a,d){if(a.layers.length===0&&d.layers.length===0)return!0;if(a.layers.length!==d.layers.length)return!1;for(let p=0,u=a.layers.length;p<u;++p)if(a.layers[p].value!==d.layers[p].value||!e.Loci.areEqual(a.layers[p].loci,d.layers[p].loci))return!1;return!0}i.areEqual=c;function o(a){return a.layers.length===0}i.isEmpty=o;function s(a,d){if(a.kind==="element-loci"){const p=[];for(const u of a.layers){const m=t.StructureElement.Loci.remap(u.loci,d);t.StructureElement.Loci.isEmpty(m)||p.push({loci:m,value:u.value})}return{kind:"element-loci",layers:p}}else return a}i.remap=s;function h(a){if(o(a))return a;if(a.kind==="element-loci"){const{structure:d}=a.layers[0].loci,p=new Map;let u=t.StructureElement.Loci.none(d);for(let v=0,b=a.layers.length;v<b;++v){let{loci:P,value:C}=a.layers[b-v-1];P=t.StructureElement.Loci.subtract(P,u),u=t.StructureElement.Loci.union(P,u),t.StructureElement.Loci.isEmpty(P)||(p.has(C)&&(P=t.StructureElement.Loci.union(P,p.get(C))),p.set(C,P))}const m=[];return p.forEach((v,b)=>{m.push({loci:v,value:b})}),{kind:"element-loci",layers:m}}else return a}i.merge=h;function f(a,d){if(o(a))return a;if(a.kind==="element-loci"){const{structure:p}=a.layers[0].loci,u=[];for(const m of a.layers){let{loci:v,value:b}=m;const P=t.StructureElement.Loci.remap(v,d);v=t.StructureElement.Loci.remap(P,p),t.StructureElement.Loci.isEmpty(v)||u.push({loci:v,value:b})}return{kind:"element-loci",layers:u}}else return a}i.filter=f;function y(a,d){const p=[];for(let u=0,m=a.length;u<m;++u){const{script:v,value:b}=a[u],P=r.Script.toLoci(v,d);t.StructureElement.Loci.isEmpty(P)||p.push({loci:P,value:b})}return{kind:"element-loci",layers:p}}i.ofScript=y;function _(a,d){const p=[];for(let u=0,m=a.length;u<m;++u){const{bundle:v,value:b}=a[u],P=t.StructureElement.Bundle.toLoci(v,d.root);p.push({loci:P,value:b})}return{kind:"element-loci",layers:p}}i.ofBundle=_;function g(a){const d=[];for(let p=0,u=a.layers.length;p<u;++p){const{loci:m,value:v}=a.layers[p],b=t.StructureElement.Bundle.fromLoci(m);d.push({bundle:b,value:v})}return{kind:"element-loci",layers:d}}i.toBundle=g})(n||(_v.Transparency=n={})),_v}var ku={},Sv={},Cv={},Pv={},cA={},Kz;function Xae(){return Kz||(Kz=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultPolyhedronProps=void 0,e.Polyhedron=n;
4207const t=Ge(),r=us();e.DefaultPolyhedronProps={radius:1,detail:0};function n(c,o,s){const{radius:h,detail:f}={...e.DefaultPolyhedronProps,...s},y=i(),{vertices:_,indices:g}=y;d(f),(0,r.appplyRadius)(_,h);const a=new Float32Array(_.length);return(0,r.computeIndexedVertexNormals)(_,g,a,_.length/3,g.length/3),{vertices:new Float32Array(_),normals:new Float32Array(a),indices:new Uint32Array(g)};function d(u){const m=(0,t.Vec3)(),v=(0,t.Vec3)(),b=(0,t.Vec3)();for(let P=0;P<o.length;P+=3)t.Vec3.fromArray(m,c,o[P+0]*3),t.Vec3.fromArray(v,c,o[P+1]*3),t.Vec3.fromArray(b,c,o[P+2]*3),p(m,v,b,u)}function p(u,m,v,b){const P=Math.pow(2,b),C=[];for(let l=0;l<=P;++l){C[l]=[];const S=(0,t.Vec3)();t.Vec3.lerp(S,u,v,l/P);const T=(0,t.Vec3)();t.Vec3.lerp(T,m,v,l/P);const A=P-l;for(let x=0;x<=A;++x)if(x===0&&l===P)C[l][x]=S;else{const M=(0,t.Vec3)();t.Vec3.lerp(M,S,T,x/A),C[l][x]=M}}for(let l=0;l<P;++l)for(let S=0;S<2*(P-l)-1;++S){const T=Math.floor(S/2);S%2===0?y.add(C[l][T+1],C[l+1][T],C[l][T]):y.add(C[l][T+1],C[l+1][T+1],C[l+1][T])}}}function i(){const c=[],o=[],s=new Map;function h(f){const y=`${f[0].toFixed(5)}|${f[1].toFixed(5)}|${f[2].toFixed(5)}`;let _=s.get(y);return _===void 0&&(_=c.length/3,s.set(y,_),c.push(...f)),_}return{vertices:c,indices:o,add:(f,y,_)=>{o.push(h(f),h(y),h(_))}}}})(cA)),cA}var Tv={},Yz;function Kae(){if(Yz)return Tv;Yz=1,Object.defineProperty(Tv,"__esModule",{value:!0}),Tv.Icosahedron=s,Tv.IcosahedronCage=f;const e=to(),t=Gf(),r=(1+Math.sqrt(5))/2,n=[-1,r,0,1,r,0,-1,-r,0,1,-r,0,0,-1,r,0,1,r,0,-1,-r,0,1,-r,r,0,-1,r,0,1,-r,0,-1,-r,0,1],i=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],c=[0,11,5,11,0,5,1,5,0,1,1,7,0,7,7,10,0,10,10,11,5,9,4,11,2,10,6,7,1,8,3,9,4,9,3,4,2,4,2,3,2,6,3,6,6,8,3,8,8,9,4,5,2,11,6,10,7,8,1,9];let o;function s(){return o||(o=(0,e.createPrimitive)(n,i)),o}const h=(0,t.createCage)(n,c);function f(){return h}return Tv}var Qz;function Xf(){if(Qz)return Pv;Qz=1,Object.defineProperty(Pv,"__esModule",{value:!0}),Pv.sphereVertexCount=i,Pv.Sphere=c;const e=Xae(),t=Kae(),{vertices:r,indices:n}=(0,t.Icosahedron)();function i(o){return 10*Math.pow(Math.pow(2,o),2)+2}function c(o){return(0,e.Polyhedron)(r,n,{detail:o,radius:1})}return Pv}var Zz;function Jn(){if(Zz)return Cv;Zz=1,Object.defineProperty(Cv,"__esModule",{value:!0}),Cv.getSphere=o,Cv.addSphere=s;const e=Ge(),t=$t(),r=Xf(),n=new Map,i=e.Mat4.identity();function c(h,f,y){return e.Mat4.scaleUniformly(h,e.Mat4.fromTranslation(h,f),y)}function o(h){let f=n.get(h);return f===void 0&&(f=(0,r.Sphere)(h),n.set(h,f)),f}function s(h,f,y,_){t.MeshBuilder.addPrimitive(h,c(i,f,y),o(_))}return Cv}var Fs={},uA={},Jz;function Yae(){return Jz||(Jz=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultCylinderProps=void 0,e.Cylinder=r;const t=Ge();e.DefaultCylinderProps={radiusTop:1,radiusBottom:1,height:1,radialSegments:8,heightSegments:1,topCap:!1,bottomCap:!1,thetaStart:0,thetaLength:Math.PI*2};function r(n){const{radiusTop:i,radiusBottom:c,height:o,radialSegments:s,heightSegments:h,topCap:f,bottomCap:y,thetaStart:_,thetaLength:g}={...e.DefaultCylinderProps,...n},a=[],d=[],p=[];let u=0;const m=[],v=o/2;return b(),f&&i>0&&P(!0),y&&c>0&&P(!1),{vertices:new Float32Array(d),normals:new Float32Array(p),indices:new Uint32Array(a)};function b(){const C=t.Vec3.zero(),l=(c-i)/o;for(let S=0;S<=h;++S){const T=[],A=S/h,x=A*(c-i)+i;for(let M=0;M<=s;++M){const V=M/s*g+_,R=Math.sin(V),E=Math.cos(V);d.push(x*R,-A*o+v,x*E),t.Vec3.normalize(C,t.Vec3.set(C,R,l,E)),p.push(...C),T.push(u++)}m.push(T)}for(let S=0;S<s;++S)for(let T=0;T<h;++T){const A=m[T][S],x=m[T+1][S],M=m[T+1][S+1],D=m[T][S+1];a.push(A,x,D),a.push(x,M,D)}}function P(C){const l=C===!0?i:c,S=C===!0?1:-1,T=u;for(let x=1;x<=s;++x)d.push(0,v*S,0),p.push(0,S,0),++u;const A=u;for(let x=0;x<=s;++x){const D=x/s*g+_,V=Math.cos(D),R=Math.sin(D);d.push(l*R,v*S,l*V),p.push(0,S,0),++u}for(let x=0;x<s;++x){const M=T+x,D=A+x;C===!0?a.push(D,D+1,M):a.push(D+1,D,M)}}}})(uA)),uA}var lA={},e6;function Rw(){return e6||(e6=1,(function(e){Object.defineProperty(e,"__esMo
4207dule",{value:!0}),e.DefaultPrismProps=void 0,e.Prism=y,e.DiamondPrism=g,e.PentagonalPrism=d,e.HexagonalPrism=u,e.ShiftedHexagonalPrism=v,e.HeptagonalPrism=P,e.PrismCage=C,e.DiamondPrismCage=S,e.PentagonalPrismCage=A,e.HexagonalPrismCage=M;const t=Ge(),r=to(),n=kS(),i=(0,t.Vec3)(),c=(0,t.Vec3)(),o=(0,t.Vec3)(),s=(0,t.Vec3)(),h=(0,t.Vec3)(),f=(0,t.Vec3)();e.DefaultPrismProps={height:1,topCap:!0,bottomCap:!0};function y(D,V){const R=D.length/3;if(R<3)throw new Error("need at least 3 points to build a prism");const{height:E,topCap:I,bottomCap:B}={...e.DefaultPrismProps,...V};let w=R*2,O=R*4;const F=(I?1:0)+(B?1:0);R===3?(w+=F,O+=F*3):R===4?(w+=F*2,O+=F*4):(w+=F*R,O+=F*R*3);const L=(0,r.PrimitiveBuilder)(w,O),U=E*.5;t.Vec3.set(i,0,0,-U),t.Vec3.set(c,0,0,U);for(let q=0;q<R;++q){const N=(q+1)%R;t.Vec3.set(o,D[q*3],D[q*3+1],-U),t.Vec3.set(s,D[N*3],D[N*3+1],-U),t.Vec3.set(h,D[N*3],D[N*3+1],U),t.Vec3.set(f,D[q*3],D[q*3+1],U),L.addQuad(o,s,h,f)}if(R===3)I&&(t.Vec3.set(o,D[0],D[1],-U),t.Vec3.set(s,D[3],D[4],-U),t.Vec3.set(h,D[6],D[7],-U),L.add(h,s,o)),B&&(t.Vec3.set(o,D[0],D[1],U),t.Vec3.set(s,D[3],D[4],U),t.Vec3.set(h,D[6],D[7],U),L.add(o,s,h));else if(R===4)I&&(t.Vec3.set(o,D[0],D[1],-U),t.Vec3.set(s,D[3],D[4],-U),t.Vec3.set(h,D[6],D[7],-U),t.Vec3.set(f,D[9],D[10],-U),L.addQuad(f,h,s,o)),B&&(t.Vec3.set(o,D[0],D[1],U),t.Vec3.set(s,D[3],D[4],U),t.Vec3.set(h,D[6],D[7],U),t.Vec3.set(f,D[9],D[10],U),L.addQuad(o,s,h,f));else for(let q=0;q<R;++q){const N=(q+1)%R;I&&(t.Vec3.set(o,D[q*3],D[q*3+1],-U),t.Vec3.set(s,D[N*3],D[N*3+1],-U),L.add(i,s,o)),B&&(t.Vec3.set(o,D[q*3],D[q*3+1],U),t.Vec3.set(s,D[N*3],D[N*3+1],U),L.add(o,s,c))}return L.getPrimitive()}let _;function g(){return _||(_=y((0,n.polygon)(4,!1))),_}let a;function d(){return a||(a=y((0,n.polygon)(5,!1))),a}let p;function u(){return p||(p=y((0,n.polygon)(6,!1))),p}let m;function v(){return m||(m=y((0,n.polygon)(6,!0))),m}let b;function P(){return b||(b=y((0,n.polygon)(7,!1))),b}function C(D,V=1){const R=D.length/3,E=[],I=[],B=V*.5;let w=0;for(let O=0;O<R;++O)E.push(D[O*3],D[O*3+1],-B,D[O*3],D[O*3+1],B),I.push(w,w+1),w+=2;for(let O=0;O<R;++O){const F=(O+1)%R;I.push(O*2,F*2,O*2+1,F*2+1)}return{vertices:E,edges:I}}let l;function S(){return l||(l=C((0,n.polygon)(4,!1))),l}let T;function A(){return T||(T=C((0,n.polygon)(5,!1))),T}let x;function M(){return x||(x=C((0,n.polygon)(6,!1))),x}})(lA)),lA}var t6;function ba(){if(t6)return Fs;t6=1,Object.defineProperty(Fs,"__esModule",{value:!0}),Fs.addSimpleCylinder=C,Fs.addCylinderFromRay3D=l,Fs.addCylinder=S,Fs.addDoubleCylinder=T,Fs.addFixedCountDashedCylinder=A;const e=Ge(),t=$t(),r=to(),n=Yae(),i=Rw(),c=kS(),o=_t(),s=new Map,h=e.Vec3.create(0,1,0),f=(0,e.Vec3)(),y=(0,e.Vec3)(),_=(0,e.Vec3)(),g=(0,e.Mat4)(),a=(0,e.Mat4)(),d=(0,e.Vec3)(),p=(0,e.Vec3)(),u=(0,e.Vec3)();function m(x,M,D,V,R){return e.Vec3.setMagnitude(y,D,V/2),e.Vec3.add(_,M,y),R?e.Vec3.matchDirection(u,h,y):e.Vec3.copy(u,h),e.Vec3.set(d,1,V,1),e.Vec3.makeRotation(a,u,y),e.Mat4.scale(x,a,d),e.Mat4.setTranslation(x,_)}const v=new Int32Array(9);function b(x){var M,D,V,R,E,I,B,w,O;return v[0]=Math.round(1e3*((M=x.radiusTop)!==null&&M!==void 0?M:n.DefaultCylinderProps.radiusTop)),v[1]=Math.round(1e3*((D=x.radiusBottom)!==null&&D!==void 0?D:n.DefaultCylinderProps.radiusBottom)),v[2]=Math.round(1e3*((V=x.height)!==null&&V!==void 0?V:n.DefaultCylinderProps.height)),v[3]=(R=x.radialSegments)!==null&&R!==void 0?R:n.DefaultCylinderProps.radialSegments,v[4]=(E=x.heightSegments)!==null&&E!==void 0?E:n.DefaultCylinderProps.heightSegments,v[5]=((I=x.topCap)!==null&&I!==void 0?I:n.DefaultCylinderProps.topCap)?1:0,v[6]=((B=x.bottomCap)!==null&&B!==void 0?B:n.DefaultCylinderProps.bottomCap)?1:0,v[7]=Math.round(1e3*((w=x.thetaStart)!==null&&w!==void 0?w:n.DefaultCylinderProps.thetaStart)),v[8]=Math.round(1e3*((O=x.thetaLength)!==null&&O!==void 0?O:n.DefaultCylinderProps.thetaLength)),(0,o.hashFnv32a)(v)}function P(x){const M=b(x);let D=s.get(M);if(D===void 0){if(x.radialSegments&&x.radialSegments<=4){const V=Math.max(3,x.radialSegments),R=(0,i.Prism)((0,c.polygon)(V,!0,x.radiusTop),x);D=(0,r.transformPrimitive)(R,e.Mat4.rotX90)}else D=(0,n.Cylinder)(x);s.set(M,D)}return D}function C(x,M,D,V){const R=e.Vec3.distance(M,D);e.Vec3.sub(f,D,M),m(g,M,f,R,!1),t.MeshBuilder.addPrimitive(x,g,P(V))}function l(x,M,D,V){m(g,M.origin,M.direction,D,!1),t.MeshBuilder.addPrimitive(x,g,P(V))}function S(x,M,D,V,R){const E=e.Vec3.distance(M,D)*V;e.Vec3.sub(f,D,M),m(g,M,f,E,!0),t.MeshBuilder.addPrimitive(x,g,P(R))}function T(x,M,D,V,R,E){const I=e.Vec3.distance(M,D)*V,B=P(E);e.Vec3.sub(f,D,M),e.Vec3.add(p,M,R),m(g,p,f,I,!0),t.MeshBuilder.addPrimitive(x,g,B),e.Vec3.sub(p,M,R),m(g,p,f,I,!0),t.MeshBuilder.addPrimitive(x,g,B)}function A(x,M,D,V,R,E,I){const B=e.Vec3.distance(M,D)*V,w=R%2!==0,O=Math.floor((R+1)/2);let F=B/(R+.5),L=P(I);e.Vec3.setMagnitude(f,e.Vec3.sub(f,D,M),F),e.Vec3.copy(p,M);for(let U=0;U<O;++U)e.Vec3.add(p,p,f),w&&U===O-1&&(!E&&I.topCap&&(I.topCap=!1,L=P(I)),F/=2),m(g,p,f,F,!1),t.MeshBuilder.addPrimitive(x,g,L),e.Vec3.add(p,p,f)}return Fs}var r6;function $t(){if(r6)return Sv;
4207r6=1,Object.defineProperty(Sv,"__esModule",{value:!0}),Sv.MeshBuilder=void 0;const e=Ge(),t=_t(),r=Rt(),n=Jn(),i=ba(),c=(0,e.Vec3)(),o=(0,e.Mat3)(),s=(0,e.Vec3)(),h=(0,e.Vec3)(),f=(0,e.Vec3)(),y=(0,e.Vec3)(),_=e.Vec3.fromArray,g=e.Vec3.triangleNormal,a=e.Vec3.copy,d=e.Vec3.transformMat4,p=e.Vec3.transformMat3,u=e.Mat3.directionTransform,m=t.ChunkedArray.add3,v=t.ChunkedArray.add;var b;return(function(P){function C(I=2048,B=1024,w){return{currentGroup:-1,vertices:t.ChunkedArray.create(Float32Array,3,B,w?w.vertexBuffer.ref.value:I),normals:t.ChunkedArray.create(Float32Array,3,B,w?w.normalBuffer.ref.value:I),indices:t.ChunkedArray.create(Uint32Array,3,B*3,w?w.indexBuffer.ref.value:I*3),groups:t.ChunkedArray.create(Float32Array,1,B,w?w.groupBuffer.ref.value:I),mesh:w}}P.createState=C;function l(I,B,w,O){const{vertices:F,normals:L,indices:U,groups:q,currentGroup:N}=I,k=F.elementCount;m(F,B[0],B[1],B[2]),m(F,w[0],w[1],w[2]),m(F,O[0],O[1],O[2]),g(c,B,w,O);for(let j=0;j<3;++j)m(L,c[0],c[1],c[2]),v(q,N);m(U,k,k+1,k+2)}P.addTriangle=l;function S(I,B,w,O,F){const{vertices:L,normals:U,indices:q,groups:N,currentGroup:k}=I,j=L.elementCount;m(L,B[0],B[1],B[2]),m(L,w[0],w[1],w[2]),m(L,O[0],O[1],O[2]);for(let H=0;H<3;++H)m(U,F[0],F[1],F[2]),v(N,k);m(q,j,j+1,j+2)}P.addTriangleWithNormal=S;function T(I,B,w){_(f,B,w[0]*3),_(y,B,w[1]*3);for(let O=2,F=w.length;O<F;O+=2)a(s,f),a(h,y),_(f,B,w[O]*3),_(y,B,w[O+1]*3),l(I,s,h,f),l(I,h,y,f)}P.addTriangleStrip=T;function A(I,B,w){_(s,B,w[0]*3);for(let O=2,F=w.length;O<F;++O)_(h,B,w[O-1]*3),_(f,B,w[O]*3),l(I,s,f,h)}P.addTriangleFan=A;function x(I,B,w,O){_(s,B,w[0]*3);for(let F=2,L=w.length;F<L;++F)_(h,B,w[F-1]*3),_(f,B,w[F]*3),S(I,s,f,h,O)}P.addTriangleFanWithNormal=x;function M(I,B,w){const{vertices:O,normals:F,indices:L}=w,{vertices:U,normals:q,indices:N,groups:k,currentGroup:j}=I,H=U.elementCount,G=u(o,B);for(let z=0,W=O.length;z<W;z+=3)d(c,_(c,O,z),B),m(U,c[0],c[1],c[2]),p(c,_(c,F,z),G),m(q,c[0],c[1],c[2]),v(k,j);for(let z=0,W=L.length;z<W;z+=3)m(N,L[z]+H,L[z+1]+H,L[z+2]+H)}P.addPrimitive=M;function D(I,B,w){const{vertices:O,normals:F,indices:L}=w,{vertices:U,normals:q,indices:N,groups:k,currentGroup:j}=I,H=U.elementCount,G=u(o,B);for(let z=0,W=O.length;z<W;z+=3)d(c,_(c,O,z),B),m(U,c[0],c[1],c[2]),p(c,_(c,F,z),G),m(q,-c[0],-c[1],-c[2]),v(k,j);for(let z=0,W=L.length;z<W;z+=3)m(N,L[z+2]+H,L[z+1]+H,L[z]+H)}P.addPrimitiveFlipped=D;function V(I,B,w,O,F,L){const{vertices:U,edges:q}=w,N={radiusTop:O,radiusBottom:O,radialSegments:L};for(let k=0,j=q.length;k<j;k+=2)_(s,U,q[k]*3),_(h,U,q[k+1]*3),d(s,s,B),d(h,h,B),(0,n.addSphere)(I,s,O,F),(0,n.addSphere)(I,h,O,F),(0,i.addCylinder)(I,s,h,1,N)}P.addCage=V;function R(I,B,w){M(I,B,{vertices:w.vertexBuffer.ref.value.subarray(0,w.vertexCount*3),normals:w.normalBuffer.ref.value.subarray(0,w.vertexCount*3),indices:w.indexBuffer.ref.value.subarray(0,w.triangleCount*3)})}P.addMesh=R;function E(I){const{vertices:B,normals:w,indices:O,groups:F,mesh:L}=I,U=t.ChunkedArray.compact(B,!0),q=t.ChunkedArray.compact(O,!0),N=t.ChunkedArray.compact(w,!0),k=t.ChunkedArray.compact(F,!0);return r.Mesh.create(U,q,N,k,I.vertices.elementCount,I.indices.elementCount,L)}P.getMesh=E})(b||(Sv.MeshBuilder=b={})),Sv}var n6;function Qae(){if(n6)return ku;n6=1,Object.defineProperty(ku,"__esModule",{value:!0}),ku.UnitcellParams=void 0,ku.getUnitcellData=l,ku.UnitcellRepresentation=S;const e=Ke(),t=lc(),r=pn(),n=Vr(),i=Ne(),c=Rt(),o=$t(),s=FS(),h=Ge(),f=Gf(),y=rt(),_=Lt(),g=h.Mat4.fromTranslation((0,h.Mat4)(),h.Vec3.create(.5,.5,.5)),a=(0,f.transformCage)((0,f.cloneCage)((0,s.BoxCage)()),g),d=(0,h.Vec3)(),p=(0,h.Mat4)(),u={origin:"Origin",model:"Model"},m={corner:"Corner",center:"Center"},v={...c.Mesh.Params,cellColor:i.ParamDefinition.Color(n.ColorNames.orange),cellScale:i.ParamDefinition.Numeric(2,{min:.1,max:5,step:.1}),ref:i.ParamDefinition.Select("model",i.ParamDefinition.objectToOptions(u),{isEssential:!0}),attachment:i.ParamDefinition.Select("corner",i.ParamDefinition.objectToOptions(m),{isEssential:!0})},b={mesh:(T,A)=>(0,t.ShapeRepresentation)(C,c.Mesh.Utils)};ku.UnitcellParams={...v};function P(T,A,x){const M=o.MeshBuilder.createState(256,128,x),{fromFractional:D}=T.symmetry.spacegroup.cell;h.Vec3.copy(d,T.ref),A.attachment==="center"?(h.Vec3.trunc(d,d),h.Vec3.subScalar(d,d,.5)):h.Vec3.floor(d,d),h.Mat4.fromTranslation(p,d);const V=(0,f.transformCage)((0,f.cloneCage)(a),p),R=Math.cbrt(T.symmetry.spacegroup.cell.volume)/300*A.cellScale;M.currentGroup=1,o.MeshBuilder.addCage(M,D,V,R,2,20);const E=y.Sphere3D.fromDimensionsAndTransform((0,y.Sphere3D)(),h.Vec3.unit,D);h.Vec3.transformMat4(d,d,D),y.Sphere3D.translate(E,E,d),y.Sphere3D.expand(E,E,R);const I=o.MeshBuilder.getMesh(M);return I.setBoundingSphere(E),I}function C(T,A,x,M){const D=P(A,x,M&&M.geometry),V=e.Symmetry.getUnitcellLabel(A.symmetry);return r.Shape.create(V,A,D,()=>x.cellColor,()=>1,()=>V)}function l(T,A,x){const M=(0,h.Vec3)();return x.ref==="model"&&h.Vec3.transformMat4(M,e.Model.getCenter(T),A.spacegroup.cell.toFractional),{symmetry:A,ref:M}}function S(T,A){return _.Representation.createMulti("Unit Cell",T,A,_.Representation.StateBuilder,b)}return ku}var jd={},xv={},i6;function Kf(){if(i6)return xv;
4207i6=1,Object.defineProperty(xv,"__esModule",{value:!0}),xv.TextBuilder=void 0;const e=Ne(),t=_t(),r=ya(),n=vQ(),i=Gt(),c=new Uint16Array([0,1,2,1,3,2]),o=t.ChunkedArray.add3,s=t.ChunkedArray.add2,h=t.ChunkedArray.add;var f;return(function(y){function _(g={},a=2048,d=1024,p){a*=2,d*=2;const u=t.ChunkedArray.create(Float32Array,3,d,p?p.centerBuffer.ref.value:a),m=t.ChunkedArray.create(Float32Array,2,d,p?p.mappingBuffer.ref.value:a),v=t.ChunkedArray.create(Float32Array,1,d,p?p.depthBuffer.ref.value:a),b=t.ChunkedArray.create(Uint32Array,3,d,p?p.indexBuffer.ref.value:a),P=t.ChunkedArray.create(Float32Array,1,d,p?p.groupBuffer.ref.value:a),C=t.ChunkedArray.create(Float32Array,2,d,p?p.tcoordBuffer.ref.value:a),l={...e.ParamDefinition.getDefaultValues(r.Text.Params),...g},{attachment:S,background:T,backgroundMargin:A,tether:x,tetherLength:M,tetherBaseWidth:D}=l,V=(0,n.getFontAtlas)(l),R=1/2.5*A,E=V.buffer/V.lineHeight,I=(B,w,O,F,L)=>{o(u,B,w,O),h(v,F),h(P,L)};return{add:(B,w,O,F,L,U,q)=>{let N=0;const k=B.length;for(let J=0;J<k;++J){const ae=V.get(B[J]);N+=ae.nw-2*E}const j=1/1.25;let H,G;if(S.startsWith("top")?H=j:S.startsWith("middle")?H=j/2:H=0,S.endsWith("right")?G=N:S.endsWith("center")?G=N/2:G=0,x)switch(S){case"bottom-left":G-=M/2+R+.1,H-=M/2+R;break;case"bottom-center":H-=M+R;break;case"bottom-right":G+=M/2+R+.1,H-=M/2+R;break;case"middle-left":G-=M+R+.1;break;case"middle-center":break;case"middle-right":G+=M+R+.1;break;case"top-left":G-=M/2+R+.1,H+=M/2+R;break;case"top-center":H+=M+R;break;case"top-right":G+=M/2+R+.1,H+=M/2+R;break}const z=(-G-R-.1)*U,W=(N-G+R+.1)*U,X=.5-H-E*.5,Y=(X+j/2+R)*U,K=(X-j/2-R)*U;if(T){s(m,z,Y),s(m,z,K),s(m,W,Y),s(m,W,K);const J=u.elementCount;for(let ae=0;ae<4;++ae)s(C,10,10),I(w,O,F,L,q);o(b,J+c[0],J+c[1],J+c[2]),o(b,J+c[3],J+c[4],J+c[5])}if(x){let J,ae,te,ne,$,ie,Z,re;const oe=M*U,ce=D*U;switch(S){case"bottom-left":J=z-oe/2,te=z+ce/2,$=z,Z=z,ae=K-oe/2,ne=K,ie=K+ce/2,re=K;break;case"bottom-center":J=0,te=ce/2,$=-ce/2,Z=0,ae=K-oe,ne=K,ie=K,re=K;break;case"bottom-right":J=W+oe/2,te=W,$=W-ce/2,Z=W,ae=K-oe/2,ne=K+ce/2,ie=K,re=K;break;case"middle-left":J=z-oe,te=z,$=z,Z=z,ae=0,ne=-ce/2,ie=ce/2,re=0;break;case"middle-center":J=0,te=0,$=0,Z=0,ae=0,ne=0,ie=0,re=0;break;case"middle-right":J=W+oe,te=W,$=W,Z=W,ae=0,ne=ce/2,ie=-ce/2,re=0;break;case"top-left":J=z-oe/2,te=z+ce/2,$=z,Z=z,ae=Y+oe/2,ne=Y,ie=Y-ce/2,re=Y;break;case"top-center":J=0,te=ce/2,$=-ce/2,Z=0,ae=Y+oe,ne=Y,ie=Y,re=Y;break;case"top-right":J=W+oe/2,te=W,$=W-ce/2,Z=W,ae=Y+oe/2,ne=Y-ce/2,ie=Y,re=Y;break;default:(0,i.assertUnreachable)(S)}s(m,J,ae),s(m,te,ne),s(m,$,ie),s(m,Z,re);const ue=u.elementCount;for(let pe=0;pe<4;++pe)s(C,10,10),I(w,O,F,L,q);o(b,ue,ue+1,ue+3),o(b,ue,ue+3,ue+2)}G+=E,H+=E;let Q=0;for(let J=0;J<k;++J){const ae=V.get(B[J]),te=(Q-G)*U,ne=(Q+ae.nw-G)*U,$=(ae.nh-H)*U,ie=-H*U;s(m,te,$),s(m,te,ie),s(m,ne,$),s(m,ne,ie);const Z=V.texture.width,re=V.texture.height;s(C,ae.x/Z,ae.y/re),s(C,ae.x/Z,(ae.y+ae.h)/re),s(C,(ae.x+ae.w)/Z,ae.y/re),s(C,(ae.x+ae.w)/Z,(ae.y+ae.h)/re),Q+=ae.nw-2*E;const oe=u.elementCount;for(let ce=0;ce<4;++ce)I(w,O,F,L,q);o(b,oe+c[0],oe+c[1],oe+c[2]),o(b,oe+c[3],oe+c[4],oe+c[5])}},getText:()=>{const B=V.texture,w=t.ChunkedArray.compact(u,!0),O=t.ChunkedArray.compact(m,!0),F=t.ChunkedArray.compact(v,!0),L=t.ChunkedArray.compact(b,!0),U=t.ChunkedArray.compact(P,!0),q=t.ChunkedArray.compact(C,!0);return r.Text.create(B,w,O,F,L,U,q,b.elementCount/2,p)}}}y.create=_})(f||(xv.TextBuilder=f={})),xv}var dA={},a6;function _a(){return a6||(a6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultLabelOptions=void 0,e.lociLabel=f,e.structureElementStatsLabel=a,e.structureElementLociLabelMany=d,e.bondLabel=u,e.bundleLabel=m,e._bundleLabel=v,e.elementLabel=b,e.distanceLabel=S,e.angleLabel=T,e.dihedralLabel=A;const t=Ke(),r=gt(),n=nn(),i=ui(),c=Z_(),o=Ge(),s=er(),h=sn();e.DefaultLabelOptions={granularity:"element",condensed:!1,reverse:!1,countsOnly:!1,hidePrefix:!1,htmlStyling:!0};function f(x,M={}){var D;switch(x.kind){case"structure-loci":return x.structure.models.map(q=>q.entry).filter(q=>!!q).join(", ");case"element-loci":return a(t.StructureElement.Stats.ofLoci(x),M);case"bond-loci":const V=x.bonds[0];return V?u(V,M):"";
4207case"shape-loci":return x.shape.name;case"group-loci":const R=x.groups[0];return R?x.shape.getLabel(n.OrderedSet.start(R.ids),R.instance):"";case"every-loci":return"Everything";case"empty-loci":return"Nothing";case"data-loci":return x.getLabel();case"volume-loci":return x.volume.label||"Volume";case"isosurface-loci":return[`${x.volume.label||"Volume"}`,`Isosurface at ${h.Volume.IsoValue.toString(x.isoValue)}`].join(" | ");case"cell-loci":const E=h.Volume.Cell.getLociSize(x),I=n.OrderedSet.start(x.elements[0].indices),B=h.Volume.IsoValue.absolute(x.volume.grid.cells.data[I]),w=h.Volume.IsoValue.toRelative(B,x.volume.grid.stats),O=[`${x.volume.label||"Volume"}`,`${E===1?`Cell #${I}`:`${E} Cells`}`];return E===1&&(x.volume.instances.length>1&&O.push(`Instance #${n.OrderedSet.start(x.elements[0].instances)+1}`),O.push(`${h.Volume.IsoValue.toString(B)} (${h.Volume.IsoValue.toString(w)})`)),O.join(" | ");case"segment-loci":const F=h.Volume.Segment.getLociSize(x),L=(D=h.Volume.Segmentation.get(x.volume))===null||D===void 0?void 0:D.labels,U=n.OrderedSet.start(x.elements[0].segments);if(L&&F===1){const q=L[U];if(q)return q}return[`${x.volume.label||"Volume"}`,`${F===1?`Segment ${U}`:`${F} Segments`}`].join(" | ")}}function y(x,M){return x===1?`1 ${M}`:`${x} ${M}s`}function _(x,M,D,V,R,E){return`${b(M,{granularity:D,hidePrefix:V,reverse:R,condensed:E})} <small>[+ ${y(x-1,`other ${(0,i.capitalize)(D)}`)}]</small>`}function g(x){const{elements:M,model:D}=x,{chainAtomSegments:V,residueAtomSegments:R}=D.atomicHierarchy,E=V.offsets[V.index[M[0]]],I=V.offsets[V.index[M[M.length-1]]+1]-1;return R.index[I]-R.index[E]+1}function a(x,M={}){const D={...e.DefaultLabelOptions,...M},V=p(x,D.countsOnly,D.hidePrefix,D.condensed,D.reverse);return D.htmlStyling?V:(0,i.stripTags)(V)}function d(x,M={}){const D=t.StructureElement.Stats.create();for(const V of x)t.StructureElement.Stats.add(D,D,t.StructureElement.Stats.ofLoci(V));return a(D,M)}function p(x,M=!1,D=!1,V=!1,R=!1){const{structureCount:E,chainCount:I,residueCount:B,conformationCount:w,elementCount:O}=x;if(!M&&O===1&&B===0&&I===0)return b(x.firstElementLoc,{hidePrefix:D,condensed:V,granularity:"element",reverse:R});if(!M&&O===0&&B===1&&I===0)return b(x.firstResidueLoc,{hidePrefix:D,condensed:V,granularity:"residue",reverse:R});if(!M&&O===0&&B===0&&I===1){const{unit:F}=x.firstChainLoc,L=t.Unit.isAtomic(F)&&g(F)===1||t.Unit.Traits.is(F.traits,t.Unit.Trait.MultiChain)?"residue":"chain";return b(x.firstChainLoc,{hidePrefix:D,condensed:V,granularity:L,reverse:R})}else if(M){const F=[];return E>0&&F.push(y(E,"Structure")),I>0&&F.push(y(I,"Chain")),B>0&&F.push(y(B,"Residue")),w>0&&F.push(y(w,"Conformation")),O>0&&F.push(y(O,"Element")),F.join("<small> + </small>")}else{const F=[];return E>0&&F.push(E===1?b(x.firstStructureLoc,{hidePrefix:D,condensed:V,granularity:"structure",reverse:R}):_(E,x.firstStructureLoc,"structure",D,R,V)),I>0&&(F.push(I===1?b(x.firstChainLoc,{condensed:V,granularity:"chain",hidePrefix:D,reverse:R}):_(I,x.firstChainLoc,"chain",D,R,V)),D=!0),B>0&&(F.push(B===1?b(x.firstResidueLoc,{condensed:V,granularity:"residue",hidePrefix:D,reverse:R}):_(B,x.firstResidueLoc,"residue",D,R,V)),D=!0),w>0&&(F.push(w===1?b(x.firstConformationLoc,{condensed:V,granularity:"conformation",hidePrefix:D,reverse:R}):_(w,x.firstConformationLoc,"conformation",D,R,V)),D=!0),O>0&&F.push(O===1?b(x.firstElementLoc,{condensed:V,granularity:"element",hidePrefix:D,reverse:R}):_(O,x.firstElementLoc,"element",D,R,V)),F.join("<small> + </small>")}}function u(x,M={}){return m({loci:[t.StructureElement.Loci(x.aStructure,[{unit:x.aUnit,indices:n.OrderedSet.ofSingleton(x.aIndex)}]),t.StructureElement.Loci(x.bStructure,[{unit:x.bUnit,indices:n.OrderedSet.ofSingleton(x.bIndex)}])]},M)}function m(x,M={}){const D={...e.DefaultLabelOptions,...M},V=v(x,D);return D.htmlStyling?V:(0,i.stripTags)(V)}function v(x,M){const{granularity:D,hidePrefix:V,reverse:R,condensed:E}=M;let I=!0;for(const B of x.loci)if(!t.StructureElement.Loci.is(B)||t.StructureElement.Loci.size(B)!==1){I=!1;break}if(I){const w=x.loci.map(F=>{const{unit:L,indices:U}=F.elements[0];return t.StructureElement.Location.create(F.structure,L,L.elements[n.OrderedSet.start(U)])}).map(F=>P(F,D,V,R||E));if(E)return w.map(F=>F[0].replace(/\[.*\]/g,"").trim()).filter(F=>!!F).join(" — ");let O=0;for(let F=0,L=Math.min(...w.map(U=>U.length))-1;F<L;++F){let U=!0;for(let q=1,N=w.length;q<N;++q)if(w[0][F]!==w[q][F]){U=!1;break}if(U)O+=1;else break}if(O>0){const F=[w[0].join(" | ")];for(let L=1,U=w.length;L<U;++L)F.push(w[L].slice(O).filter(q=>!!q).join(" | "));return F.join(" — ")}else return w.map(F=>F.filter(L=>!!L).join(" | ")).filter(F=>!!F).join("</br>")}else return x.loci.map(w=>f(w,M)).filter(w=>!!w).join(E?" — ":"</br>")}function b(x,M={}){var D,V;const R={...e.DefaultLabelOptions,...M},E=P(x,R.granularity,R.hidePrefix,R.reverse||R.condensed),I=R.condensed?(V=(D=E[0])===null||D===void 0?void 0:D.replace(/\[.*\]/g,"").trim())!==null&&V!==void 0?V:"":E.filter(
4207B=>!!B).join(" | ");return R.htmlStyling?I:(0,i.stripTags)(I)}function P(x,M="element",D=!1,V=!1){const R=[];if(!D){let E=x.unit.model.entry;E.length>30&&(E=E.substr(0,27)+"…"),R.push(`<small>${E}</small>`),M!=="structure"&&(R.push(`<small>Model ${x.unit.model.modelNum}</small>`),R.push(`<small>Instance ${x.unit.conformation.operator.instanceId}</small>`))}return t.Unit.isAtomic(x.unit)?R.push(...C(x,M,V)):t.Unit.isCoarse(x.unit)?R.push(...l(x,M)):R.push("Unknown"),V?R.reverse():R}function C(x,M,D=!1){const V=t.StructureElement.Location.residueIndex(x),R=t.StructureProperties.chain.label_asym_id(x),E=t.StructureProperties.chain.auth_asym_id(x),I=x.unit.model.atomicHierarchy.residues.label_seq_id.valueKind(V)===c.Column.ValueKinds.Present,B=t.StructureProperties.residue.label_seq_id(x),w=t.StructureProperties.residue.auth_seq_id(x),O=t.StructureProperties.residue.pdbx_PDB_ins_code(x),F=t.StructureProperties.atom.label_comp_id(x),L=t.StructureProperties.atom.label_atom_id(x),U=t.StructureProperties.atom.label_alt_id(x),q=t.StructureProperties.atom.occupancy(x),N=t.StructureProperties.atom.sourceIndex(x),k=t.StructureProperties.residue.microheterogeneityCompIds(x),j=M==="residue"&&k.length>1?`(${k.join("|")})`:F,H=[];switch(M){case"element":{const z=`<b>${L}</b>${U?`%${U}`:""}`,W=`<small style='margin-left: 4px'>[idx <b>${N+1}</b>]</small>`;H.push(`${z}${W}`)}case"conformation":M==="conformation"&&U&&H.push(`<small>Conformation</small> <b>${U}</b>`);case"residue":const G=B===w||!I?w:B;H.push(`<b>${j} ${G}</b>${G!==w?` <small>[auth</small> <b>${w}</b><small>]</small>`:""}<b>${O||""}</b>`);case"chain":R===E?H.push(`<b>${R}</b>`):M==="chain"&&t.Unit.Traits.is(x.unit.traits,t.Unit.Trait.MultiChain)?H.push(`<small>[auth</small> <b>${E}</b><small>]</small>`):H.push(`<b>${R}</b> <small>[auth</small> <b>${E}</b><small>]</small>`)}return H.length>0&&q!==1&&!D&&(H[0]=`${H[0]} <small>[occupancy</small> <b>${Math.round(100*q)/100}</b><small>]</small>`),H.reverse()}function l(x,M){const D=t.StructureProperties.coarse.asym_id(x),V=t.StructureProperties.coarse.seq_id_begin(x),R=t.StructureProperties.coarse.seq_id_end(x),E=[];switch(M){case"element":case"conformation":case"residue":if(V===R){const I=t.StructureProperties.coarse.entityKey(x),w=x.unit.model.sequence.byEntityKey[I].sequence.compId.value(V-1);E.push(`<b>${w} ${V}</b>`)}else E.push(`<b>${V}-${R}</b>`);case"chain":E.push(`<b>${D}</b>`)}return E.reverse()}function S(x,M={}){const D={...e.DefaultLabelOptions,measureOnly:!1,unitLabel:"Å",...M},[V,R]=x.loci.map(B=>r.Loci.getCenter(B)),E=`${o.Vec3.distance(V,R).toFixed(2)} ${D.unitLabel}`;if(D.measureOnly)return E;const I=m(x,D);return D.condensed?`${E} | ${I}`:`Distance ${E}</br>${I}`}function T(x,M={}){const D={...e.DefaultLabelOptions,measureOnly:!1,...M},[V,R,E]=x.loci.map(F=>r.Loci.getCenter(F)),I=o.Vec3.sub((0,o.Vec3)(),V,R),B=o.Vec3.sub((0,o.Vec3)(),E,R),w=`${(0,s.radToDeg)(o.Vec3.angle(I,B)).toFixed(2)}°`;if(D.measureOnly)return w;const O=m(x,D);return D.condensed?`${w} | ${O}`:`Angle ${w}</br>${O}`}function A(x,M={}){const D={...e.DefaultLabelOptions,measureOnly:!1,...M},[V,R,E,I]=x.loci.map(O=>r.Loci.getCenter(O)),B=`${(0,s.radToDeg)(o.Vec3.dihedralAngle(V,R,E,I)).toFixed(2)}°`;if(D.measureOnly)return B;const w=m(x,D);return D.condensed?`${B} | ${w}`:`Dihedral ${B}</br>${w}`}})(dA)),dA}var fA={},o6;function GS(){return o6||(o6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.LociLabelTextParams=e.MeasurementRepresentationCommonTextParams=void 0;const t=Ne(),r=Vr(),n=ya();e.MeasurementRepresentationCommonTextParams={customText:t.ParamDefinition.Text("",{label:"Text",description:"Override the label with custom value.",isEssential:!0}),textColor:t.ParamDefinition.Color(r.ColorNames.black,{isEssential:!0}),textSize:t.ParamDefinition.Numeric(.5,{min:.1,max:10,step:.1},{isEssential:!0})},e.LociLabelTextParams={...n.Text.Params,...e.MeasurementRepresentationCommonTextParams,borderWidth:t.ParamDefinition.Numeric(.2,{min:0,max:.5,step:.01})}})(fA)),fA}var s6;function Zae(){if(s6)return jd;s6=1,Object.defineProperty(jd,"__esModule",{value:!0}),jd.DistanceParams=void 0,jd.DistanceRepresentation=M;const e=gt(),t=kn(),r=ya(),n=Ne(),i=Vr(),c=lc(),o=Lt(),s=pn(),h=ac(),f=Kf(),y=Ge(),_=cn(),g=_a(),a=GS(),d=rt(),p={unitLabel:n.ParamDefinition.Text("Å",{isEssential:!0})},u={...t.Lines.Params,...p,lineSizeAttenuation:n.ParamDefinition.Boolean(!0),linesColor:n.ParamDefinition.Color(i.ColorNames.lightgreen,{isEssential:!0}),linesSize:n.ParamDefinition.Numeric(.075,{min:.01,max:5,step:.01}),dashLength:n.ParamDefinition.Numeric(.2,{min:.01,max:.2,step:.01})},m={...a.LociLabelTextParams,...p},v={lines:(D,V)=>(0,c.ShapeRepresentation)(T,t.Lines.Utils,{modifyState:R=>({...R,markerActions:_.MarkerActions.Highlighting})}),text:(D,V)=>(0,c.ShapeRepresentation)(x,r.Text.Utils,{modifyState:R=>({...R,markerActions:_.MarkerAction.None})})};jd.DistanceParams={...u,...m,visuals:n.ParamDefinition.MultiSelect(["lines","text"],n.ParamDefinition.objectToOptions(v))};function b(){return{sphereA:(0,d.Sphere3D)(),sphereB:(0,d.Sphere3D)(),center:(0,y.Vec3)(),distance:0}}function P(D,V){const{sphereA:R,sphereB:E,center:I}=V,[B,w]=D.loci;return e.Loci.getBoundingSphere(B,R),e.Loci.getBoundingSphere(w,E),y.Vec3.add(I,R.center,E.center),y.Vec3.scale(I,I,.5),V.distance=y.Vec3.distance(R.center,E.center),V}const C=b();function l(D,V){return D.pairs.length===1?`Distance ${(0,g.distanceLabel)(D.pairs[0],{unitLabel:V,measureOnly:!0})}`:`${D.pairs.length} Distances`}function S(D,V,R){const E=h.LinesBuilder.create(128,64,R);for(let I=0,B=D.pairs.length;I<B;++I)P(D.pairs[I],C),E.addFixedLengthDashes(C.sphereA.center,C.sphereB.center,V.dashLength,I);return E.getLines()}function T(D,V,R,E){const I=S(V,R,E&&E.geometry),B=l(V,R.unitLabel),w=O=>(0,g.distanceLabel)(V.pairs[O],R);return s.Shape.create(B,V,I,()=>R.linesColor,()=>R.linesSize,w)}function A(D,V,R){const E=f.TextBuilder.create(V,128,64,R);for(let I=0,B=D.pairs.length;I<B;++I){P(D.pairs[I],C);const{center:w,distance:O,sphereA:F,sphereB:L}=C,U=V.customText||`${O.toFixed(2)} ${V.unitLabel}`,N=Math.max(2,F.radius,L.radius)/2;E.add(U,w[0],w[1],w[2],1,N,I)}return E.getText()}function x(D,V,R,E){const I=A(V,R,E&&E.geometry),B=l(V,R.unitLabel),w=O=>(0,g.distanceLabel)(V.pairs[O],R);return s.Shape.create(B,V,I,()=>R.textColor,()=>R.textSize,w)}function M(D,V){return o.Representation.createMulti("Distance",D,V,o.Representation.StateBuilder,v)}return jd}var Gd={},c6;function Jae(){if(c6)return Gd;c6=1,Object.defineProperty(Gd,"__esModule",{value:!0}),Gd.LabelParams=void 0,Gd.LabelRepresentation=m;const e=gt(),t=ya(),r=Ne(),n=lc(),i=Lt(),c=pn(),o=Kf(),s=rt(),h=_a(),y={...GS().LociLabelTextParams},_={text:(v,b)=>(0,n.ShapeRepresentation)(u,t.Text.Utils)};Gd.LabelParams={...y,scaleByRadius:r.ParamDefinition.Boolean(!0),visuals:r.ParamDefinition.MultiSelect(["text"],r.ParamDefinition.objectToOptions(_)),snapshotKey:r.ParamDefinition.Text("",{isEssential:!0,disableInteractiveUpdates:!0,description:"Activate the snapshot with the provided key when clicking on the label"}),tooltip:r.ParamDefinition.Text("",{isEssential:!0,multiline:!0,disableInteractiveUpdates:!0,placeholder:"Tooltip",description:"Tooltip text to be displayed when hovering over the label"})};const g=(0,s.Sphere3D)();function a(v,b=!1){return v.label||(0,h.lociLabel)(v.loci,{hidePrefix:!0,htmlStyling:!1,condensed:b})}function d(v){return v.infos.length===1?a(v.infos[0]):`${v.infos.length} Labels`}function p(v,b,P){const C=o.TextBuilder.create(b,128,64,P),l=b.customText.trim();for(let S=0,T=v.infos.length;S<T;++S){const A=v.infos[S],x=e.Loci.getBoundingSphere(A.loci,g);
4207if(!x)continue;const{center:M,radius:D}=x,V=l||a(A,!0);C.add(V,M[0],M[1],M[2],b.scaleByRadius?D/.9:0,b.scaleByRadius?Math.max(1,D):1,S)}return C.getText()}function u(v,b,P,C){var l,S;const T=p(b,P,C&&C.geometry),A=d(b),x=(S=(l=P.tooltip)===null||l===void 0?void 0:l.trim())!==null&&S!==void 0?S:"",M=P.customText.trim();let D;return x?D=V=>x:M?D=V=>M:D=V=>a(b.infos[V]),c.Shape.create(A,b,T,()=>P.textColor,()=>P.textSize,D)}function m(v,b){return i.Representation.createMulti("Label",v,b,i.Representation.StateBuilder,_)}return Gd}var zd={},qP={},u6;function eoe(){if(u6)return qP;u6=1,Object.defineProperty(qP,"__esModule",{value:!0}),qP.addAxes=h;const e=Ge(),t=$t(),r=rt(),n=Gf(),i=(0,e.Vec3)(),c=e.Mat4.identity(),o=new Float32Array(18),s=new Uint8Array([0,1,2,3,4,5]);function h(f,y,_,g,a){const{origin:d,dirA:p,dirB:u,dirC:m}=y;e.Vec3.add(i,d,p),e.Vec3.toArray(e.Vec3.add(i,d,p),o,0),e.Vec3.toArray(e.Vec3.sub(i,d,p),o,3),e.Vec3.toArray(e.Vec3.add(i,d,u),o,6),e.Vec3.toArray(e.Vec3.sub(i,d,u),o,9),e.Vec3.toArray(e.Vec3.add(i,d,m),o,12),e.Vec3.toArray(e.Vec3.sub(i,d,m),o,15);const v=(0,n.createCage)(o,s),b=r.Axes3D.volume(y),P=Math.cbrt(b)/300*_;t.MeshBuilder.addCage(f,c,v,P,g,a)}return qP}var Av={},l6;function toe(){if(l6)return Av;l6=1,Object.defineProperty(Av,"__esModule",{value:!0}),Av.addBoundingBox=f,Av.addOrientedBox=m;const e=Ge(),t=rt(),r=$t(),n=ba(),i=Jn(),c=Gf(),o=e.Vec3.zero(),s=e.Vec3.zero(),h={};function f(v,b,P,C,l){const{min:S,max:T}=b;h.radiusTop=P,h.radiusBottom=P,h.radialSegments=l,e.Vec3.set(o,T[0],T[1],T[2]),(0,i.addSphere)(v,o,P,C),e.Vec3.set(s,T[0],T[1],S[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(s,T[0],S[1],T[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(s,S[0],T[1],T[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(o,S[0],S[1],S[2]),(0,i.addSphere)(v,o,P,C),e.Vec3.set(s,S[0],S[1],T[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(s,S[0],T[1],S[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(s,T[0],S[1],S[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(o,T[0],S[1],S[2]),(0,i.addSphere)(v,o,P,C),e.Vec3.set(s,T[0],S[1],T[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(s,T[0],T[1],S[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(o,S[0],S[1],T[2]),(0,i.addSphere)(v,o,P,C),e.Vec3.set(s,S[0],T[1],T[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(s,T[0],S[1],T[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(o,S[0],T[1],S[2]),(0,i.addSphere)(v,o,P,C),e.Vec3.set(s,T[0],T[1],S[2]),(0,i.addSphere)(v,s,P,C),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(s,S[0],T[1],T[2]),(0,i.addSphere)(v,s,P,C),(0,n.addCylinder)(v,o,s,1,h)}const y=(0,e.Vec3)(),_=(0,e.Vec3)(),g=(0,e.Vec3)(),a=(0,e.Vec3)(),d=e.Mat4.identity(),p=new Float32Array(24),u=new Uint8Array([0,1,0,3,0,6,1,2,1,7,2,3,2,4,3,5,4,5,4,7,5,6,6,7]);function m(v,b,P,C,l){const{origin:S,dirA:T,dirB:A,dirC:x}=b,M=e.Vec3.negate(_,T),D=e.Vec3.negate(g,A),V=e.Vec3.negate(a,x);let R=0;const E=function(O,F,L){e.Vec3.copy(y,S),e.Vec3.add(y,y,O),e.Vec3.add(y,y,F),e.Vec3.add(y,y,L),e.Vec3.toArray(y,p,R),R+=3};E(T,A,x),E(T,A,V),E(T,D,V),E(T,D,x),E(M,D,V),E(M,D,x),E(M,A,x),E(M,A,V);const I=(0,c.createCage)(p,u),B=t.Axes3D.volume(b),w=Math.cbrt(B)/300*P;r.MeshBuilder.addCage(v,d,I,w,C,l)}return Av}var UP={},d6;function Ow(){if(d6)return UP;d6=1,Object.defineProperty(UP,"__esModule",{value:!0}),UP.addEllipsoid=o;const e=Ge(),t=$t(),r=Jn(),n=e.Mat4.identity(),i=(0,e.Vec3)();function c(s,h,f,y,_){return e.Vec3.add(i,h,f),e.Mat4.targetTo(s,h,i,y),e.Mat4.setTranslation(s,h),e.Mat4.scale(s,s,_)}function o(s,h,f,y,_,g){t.MeshBuilder.addPrimitive(s,c(n,h,f,y,_),(0,r.getSphere)(g))}return UP}var f6;function roe(){if(f6)return zd;f6=1,Object.defineProperty(zd,"__esModule",{value:!0}),zd.OrientationParams=void 0,zd.OrientationRepresentation=V;const e=Ne(),t=Vr(),r=lc(),n=Lt(),i=pn(),c=Rt(),o=$t(),s=_a(),h=eoe(),f=toe(),y=Ow(),_=rt(),g=Ge(),a=cn(),d=Ke(),p={color:e.ParamDefinition.Color(t.ColorNames.orange),scaleFactor:e.ParamDefinition.Numeric(1,{min:.1,max:10,step:.1}),radiusScale:e.ParamDefinition.Numeric(2,{min:.1,max:10,step:.1})},u={...c.Mesh.Params,...p},m={...c.Mesh.Params,...p},v={...c.Mesh.Params,...p},b={axes:(R,E)=>(0,r.ShapeRepresentation)(l,c.Mesh.Utils),box:(R,E)=>(0,r.ShapeRepresentation)(A,c.Mesh.Utils),ellipsoid:(R,E)=>(0,r.ShapeRepresentation)(D,c.Mesh.Utils)};zd.OrientationParams={...u,...m,...v,visuals:e.ParamDefinition.MultiSelect(["box"],e.ParamDefinition.objectToOptions(b))};function P(R){return`Principal Axes of ${(0,s.structureElementLociLabelMany)(R,{countsOnly:!0})}`}function C(R,E,I){const B=o.MeshBuilder.createState(256,128,I),w=d.StructureElement.Loci.getPrincipalAxesMany(R.locis);return _.Axes3D.scale(w.momentsAxes,w.momentsAxes,E.scaleFactor),B.currentGroup=0,(0,h.addAxe
4207s)(B,w.momentsAxes,E.radiusScale,2,20),o.MeshBuilder.getMesh(B)}function l(R,E,I,B){const w=C(E,I,B&&B.geometry),O=P(E.locis);return i.Shape.create(O,E,w,()=>I.color,()=>1,()=>O)}function S(R){return`Oriented Box of ${(0,s.structureElementLociLabelMany)(R,{countsOnly:!0})}`}function T(R,E,I){const B=o.MeshBuilder.createState(256,128,I),w=d.StructureElement.Loci.getPrincipalAxesMany(R.locis);return _.Axes3D.scale(w.boxAxes,w.boxAxes,E.scaleFactor),B.currentGroup=0,(0,f.addOrientedBox)(B,w.boxAxes,E.radiusScale,2,20),o.MeshBuilder.getMesh(B)}function A(R,E,I,B){const w=T(E,I,B&&B.geometry),O=S(E.locis);return i.Shape.create(O,E,w,()=>I.color,()=>1,()=>O)}function x(R){return`Oriented Ellipsoid of ${(0,s.structureElementLociLabelMany)(R,{countsOnly:!0})}`}function M(R,E,I){const B=o.MeshBuilder.createState(256,128,I),O=d.StructureElement.Loci.getPrincipalAxesMany(R.locis).boxAxes,{origin:F,dirA:L,dirB:U}=O,q=_.Axes3D.size((0,g.Vec3)(),O);g.Vec3.scale(q,q,.5*E.scaleFactor);const N=g.Vec3.create(q[2],q[1],q[0]);return B.currentGroup=0,(0,y.addEllipsoid)(B,F,L,U,N,2),o.MeshBuilder.getMesh(B)}function D(R,E,I,B){const w=M(E,I,B&&B.geometry),O=x(E.locis);return i.Shape.create(O,E,w,()=>I.color,()=>1,()=>O)}function V(R,E){const I=n.Representation.createMulti("Orientation",R,E,n.Representation.StateBuilder,b);return I.setState({markerActions:a.MarkerActions.Highlighting}),I}return zd}var Hd={},mA={},m6;function kw(){return m6||(m6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultCircleProps=void 0,e.Circle=t,e.DefaultCircleProps={radius:1,segments:36,thetaStart:0,thetaLength:Math.PI*2};function t(r){const{radius:n,segments:i,thetaStart:c,thetaLength:o}={...e.DefaultCircleProps,...r},s=o===Math.PI*2,h=s?i+1:i+2,f=new Float32Array(h*3),y=new Float32Array(h*3),_=new Uint32Array(i*3);f[0]=0,f[1]=0,f[2]=0,y[0]=0,y[1]=1,y[2]=0;for(let g=0,a=3;g<i;++g,a+=3){const d=c+g/i*o;f[a]=n*Math.sin(d),f[a+1]=0,f[a+2]=n*Math.cos(d),y[a]=0,y[a+1]=1,y[a+2]=0}for(let g=1,a=0;g<i;++g,a+=3)_[a]=g,_[a+1]=g+1,_[a+2]=0;if(s){const g=(i-1)*3;_[g]=i,_[g+1]=1,_[g+2]=0}else{const g=c+o,a=(i+1)*3;f[a]=n*Math.sin(g),f[a+1]=0,f[a+2]=n*Math.cos(g),y[a]=0,y[a+1]=1,y[a+2]=0;const d=(i-1)*3;_[d]=i,_[d+1]=i+1,_[d+2]=0}return{vertices:f,normals:y,indices:_}}})(mA)),mA}var p6;function noe(){if(p6)return Hd;p6=1,Object.defineProperty(Hd,"__esModule",{value:!0}),Hd.AngleParams=void 0,Hd.AngleRepresentation=k;const e=gt(),t=kn(),r=ya(),n=Ne(),i=Vr(),c=lc(),o=Lt(),s=pn(),h=ac(),f=Kf(),y=Ge(),_=Rt(),g=$t(),a=er(),d=kw(),p=to(),u=cn(),m=_a(),v=rt(),b=GS(),P={color:n.ParamDefinition.Color(i.ColorNames.lightgreen),arcScale:n.ParamDefinition.Numeric(.7,{min:.01,max:1,step:.01})},C={...t.Lines.Params,...P,lineSizeAttenuation:n.ParamDefinition.Boolean(!0),linesSize:n.ParamDefinition.Numeric(.04,{min:.01,max:5,step:.01}),dashLength:n.ParamDefinition.Numeric(.04,{min:.01,max:.2,step:.01})},l={...C},S={...C},T={..._.Mesh.Params,...P,ignoreLight:n.ParamDefinition.Boolean(!0),sectorOpacity:n.ParamDefinition.Numeric(.75,{min:0,max:1,step:.01})},A={vectors:(j,H)=>(0,c.ShapeRepresentation)(w,t.Lines.Utils,{modifyState:G=>({...G,pickable:!1})}),arc:(j,H)=>(0,c.ShapeRepresentation)(F,t.Lines.Utils,{modifyState:G=>({...G,pickable:!1})}),sector:(j,H)=>(0,c.ShapeRepresentation)(U,_.Mesh.Utils,{modifyProps:G=>({...G,alpha:G.sectorOpacity}),modifyState:G=>({...G,markerActions:u.MarkerActions.Highlighting})}),text:(j,H)=>(0,c.ShapeRepresentation)(N,r.Text.Utils,{modifyState:G=>({...G,markerActions:u.MarkerAction.None})})};Hd.AngleParams={...l,...S,...T,...b.LociLabelTextParams,visuals:n.ParamDefinition.MultiSelect(["vectors","sector","text"],n.ParamDefinition.objectToOptions(A))};function x(){return{sphereA:(0,v.Sphere3D)(),sphereB:(0,v.Sphere3D)(),sphereC:(0,v.Sphere3D)(),arcDirA:(0,y.Vec3)(),arcDirC:(0,y.Vec3)(),arcNormal:(0,y.Vec3)(),radius:0,angle:0}}const M=(0,y.Vec3)(),D=(0,y.Mat4)();function V(j,H,G){const{sphereA:z,sphereB:W,sphereC:X}=H,{arcDirA:Y,arcDirC:K,arcNormal:Q}=H,[J,ae,te]=j.loci;e.Loci.getBoundingSphere(J,z),e.Loci.getBoundingSphere(ae,W),e.Loci.getBoundingSphere(te,X),y.Vec3.sub(Y,z.center,W.center),y.Vec3.sub(K,X.center,W.center),y.Vec3.cross(Q,Y,K);const $=Math.min(y.Vec3.magnitude(Y),y.Vec3.magnitude(K))*G;return H.radius=$,H.angle=y.Vec3.angle(Y,K),H}function R(j,H){const{radius:G,angle:z}=j,W=H?(0,a.arcLength)(z,G)/H:32;y.Mat4.targetTo(D,j.sphereB.center,j.sphereA.center,j.arcNormal),y.Mat4.setTranslation(D,j.sphereB.center),y.Mat4.mul(D,D,y.Mat4.rotY180);
4207const X=(0,d.Circle)({radius:G,thetaLength:z,segments:W});return(0,p.transformPrimitive)(X,D)}const E=x();function I(j){return j.triples.length===1?`Angle ${(0,m.angleLabel)(j.triples[0],{measureOnly:!0})}`:`${j.triples.length} Angles`}function B(j,H,G){const z=h.LinesBuilder.create(128,64,G);for(let W=0,X=j.triples.length;W<X;++W)V(j.triples[W],E,H.arcScale),z.addFixedLengthDashes(E.sphereB.center,E.sphereA.center,H.dashLength,W),z.addFixedLengthDashes(E.sphereB.center,E.sphereC.center,H.dashLength,W);return z.getLines()}function w(j,H,G,z){const W=B(H,G,z&&z.geometry),X=I(H);return s.Shape.create(X,H,W,()=>G.color,()=>G.linesSize,()=>"")}function O(j,H,G){const z=h.LinesBuilder.create(128,64,G);for(let W=0,X=j.triples.length;W<X;++W){V(j.triples[W],E,H.arcScale);const Y=R(E,H.dashLength),{indices:K,vertices:Q}=Y;for(let J=0,ae=K.length;J<ae;J+=3){if(J%2===1)continue;const te=K[J]*3,ne=K[J+1]*3,$=Q[te],ie=Q[te+1],Z=Q[te+2],re=Q[ne],oe=Q[ne+1],ce=Q[ne+2];z.add($,ie,Z,re,oe,ce,W)}}return z.getLines()}function F(j,H,G,z){const W=O(H,G,z&&z.geometry),X=I(H);return s.Shape.create(X,H,W,()=>G.color,()=>G.linesSize,()=>"")}function L(j,H,G){const z=g.MeshBuilder.createState(128,64,G);for(let W=0,X=j.triples.length;W<X;++W){V(j.triples[W],E,H.arcScale);const Y=R(E);z.currentGroup=W,g.MeshBuilder.addPrimitive(z,y.Mat4.id,Y),g.MeshBuilder.addPrimitiveFlipped(z,y.Mat4.id,Y)}return g.MeshBuilder.getMesh(z)}function U(j,H,G,z){const W=L(H,G,z&&z.geometry),X=I(H),Y=K=>(0,m.angleLabel)(H.triples[K]);return s.Shape.create(X,H,W,()=>G.color,()=>1,Y)}function q(j,H,G){const z=f.TextBuilder.create(H,128,64,G);for(let W=0,X=j.triples.length;W<X;++W){V(j.triples[W],E,H.arcScale),y.Vec3.add(M,E.arcDirA,E.arcDirC),y.Vec3.setMagnitude(M,M,E.radius),y.Vec3.add(M,E.sphereB.center,M);const Y=(0,a.radToDeg)(E.angle).toFixed(2),K=H.customText||`${Y}°`,J=Math.max(2,E.sphereA.radius,E.sphereB.radius,E.sphereC.radius)/2;z.add(K,M[0],M[1],M[2],.1,J,W)}return z.getText()}function N(j,H,G,z){const W=q(H,G,z&&z.geometry),X=I(H),Y=K=>(0,m.angleLabel)(H.triples[K]);return s.Shape.create(X,H,W,()=>G.textColor,()=>G.textSize,Y)}function k(j,H){return o.Representation.createMulti("Angle",j,H,o.Representation.StateBuilder,A)}return Hd}var Wd={},h6;function ioe(){if(h6)return Wd;h6=1,Object.defineProperty(Wd,"__esModule",{value:!0}),Wd.DihedralParams=void 0,Wd.DihedralRepresentation=K;const e=gt(),t=kn(),r=ya(),n=Ne(),i=Vr(),c=lc(),o=Lt(),s=pn(),h=ac(),f=Kf(),y=Ge(),_=Rt(),g=$t(),a=er(),d=kw(),p=to(),u=cn(),m=_a(),v=GS(),b=rt(),P={color:n.ParamDefinition.Color(i.ColorNames.lightgreen),arcScale:n.ParamDefinition.Numeric(.7,{min:.01,max:1,step:.01})},C={...t.Lines.Params,...P,lineSizeAttenuation:n.ParamDefinition.Boolean(!0),linesSize:n.ParamDefinition.Numeric(.04,{min:.01,max:5,step:.01}),dashLength:n.ParamDefinition.Numeric(.04,{min:.01,max:.2,step:.01})},l={...C},S={...C},T={...C},A={...C},x={..._.Mesh.Params,...P,ignoreLight:n.ParamDefinition.Boolean(!0),sectorOpacity:n.ParamDefinition.Numeric(.75,{min:0,max:1,step:.01})},M={vectors:(Q,J)=>(0,c.ShapeRepresentation)(F,t.Lines.Utils,{modifyState:ae=>({...ae,pickable:!1})}),extenders:(Q,J)=>(0,c.ShapeRepresentation)(j,t.Lines.Utils,{modifyState:ae=>({...ae,pickable:!1})}),connector:(Q,J)=>(0,c.ShapeRepresentation)(U,t.Lines.Utils,{modifyState:ae=>({...ae,pickable:!1})}),arms:(Q,J)=>(0,c.ShapeRepresentation)(N,t.Lines.Utils,{modifyState:ae=>({...ae,pickable:!1})}),arc:(Q,J)=>(0,c.ShapeRepresentation)(G,t.Lines.Utils,{modifyState:ae=>({...ae,pickable:!1})}),sector:(Q,J)=>(0,c.ShapeRepresentation)(W,_.Mesh.Utils,{modifyProps:ae=>({...ae,alpha:ae.sectorOpacity}),modifyState:ae=>({...ae,markerActions:u.MarkerActions.Highlighting})}),text:(Q,J)=>(0,c.ShapeRepresentation)(Y,r.Text.Utils,{modifyState:ae=>({...ae,markerActions:u.MarkerAction.None})})};Wd.DihedralParams={...l,...S,...T,...A,...x,...v.LociLabelTextParams,visuals:n.ParamDefinition.MultiSelect(["extenders","arms","sector","text"],n.ParamDefinition.objectToOptions(M))};function D(){return{sphereA:(0,b.Sphere3D)(),sphereB:(0,b.Sphere3D)(),sphereC:(0,b.Sphere3D)(),sphereD:(0,b.Sphere3D)(),dirBA:(0,y.Vec3)(),dirCD:(0,y.Vec3)(),projA:(0,y.Vec3)(),projD:(0,y.Vec3)(),arcPointA:(0,y.Vec3)(),arcPointD:(0,y.Vec3)(),arcDirA:(0,y.Vec3)(),arcDirD:(0,y.Vec3)(),arcCenter:(0,y.Vec3)(),arcNormal:(0,y.Vec3)(),radius:0,angle:0}}const V=(0,y.Vec3)(),R=(0,y.Mat4)();function E(Q,J,ae){const{sphereA:te,sphereB:ne,sphereC:$,sphereD:ie,dirBA:Z,dirCD:re,projA:oe,projD:ce}=J,{arcPointA:ue,arcPointD:pe,arcDirA:he,arcDirD:fe,arcCenter:de,arcNormal:ge}=J,[Ce,ve,le,me]=Q.loci;e.Loci.getBoundingSphere(Ce,te),e.Loci.getBoundingSphere(ve,ne),e.Loci.getBoundingSphere(le,$),e.Loci.getBoundingSphere(me,ie),y.Vec3.add(de,ne.center,$.center),y.Vec3.scale(de,de,.5),y.Vec3.sub(Z,te.center,ne.center),y.Vec3.sub(re,ie.center,$.center),y.Vec3.add(ue,de,Z),y.Vec3.add(pe,de,re),y.Vec3.sub(ge,$.center,ne.center),y.Vec3.orthogonalize(he,ge,Z),y.Vec3.orthogonalize(fe,ge,re),y.Vec3.projectPointOnVector(oe,ue,he,de),y.Vec3.projectPointOnVector(ce,pe,fe,de);const se=Math.min(y.Vec3.distance(oe,de),y.Vec3.distance(ce,de))*ae;y.Vec3.setMagnitude(he,he,se),y.Vec3.setMagnitude(fe,fe,se),y.Vec3.add(ue,de,he),y.Vec3.add(pe,de,fe),J.radius=se,J.angle=y.Vec3.dihedralAngle(te.center,ne.center,$.center,ie.center),y.Vec3.matchDirection(V,ge,y.Vec3.sub(V,ue,te.center));const ye=y.Vec3.angle(Z,V),Se=se/Math.cos(ye-a.halfPI);y.Vec3.add(oe,ne.center,y.Vec3.setMagnitude(V,Z,Se)),y.Vec3.matchDirection(V,ge,y.Vec3.sub(V,pe,ie.center));const Ae=y.Vec3.angle(re,V),_e=se/Math.cos(Ae-a.halfPI);return y.Vec3.add(ce,$.center,y.Vec3.setMagnitude(V,re,_e)),J}function I(Q,J){const{radius:ae,angle:te}=Q,ne=J?(0,a.arcLength)(te,ae)/J:32;y.Mat4.targetTo(R,Q.arcCenter,te<0?Q.arcPointD:Q.arcPointA,Q.arcNormal),y.Mat4.setTranslation(R,Q.arcCenter),y.Mat4.mul(R,R,y.Mat4.rotY180);
4207const $=(0,d.Circle)({radius:ae,thetaLength:Math.abs(te),segments:ne});return(0,p.transformPrimitive)($,R)}const B=D();function w(Q){return Q.quads.length===1?`Dihedral ${(0,m.dihedralLabel)(Q.quads[0],{measureOnly:!0})}`:`${Q.quads.length} Dihedrals`}function O(Q,J,ae){const te=h.LinesBuilder.create(128,64,ae);for(let ne=0,$=Q.quads.length;ne<$;++ne)E(Q.quads[ne],B,J.arcScale),te.addFixedLengthDashes(B.arcCenter,B.arcPointA,J.dashLength,ne),te.addFixedLengthDashes(B.arcCenter,B.arcPointD,J.dashLength,ne);return te.getLines()}function F(Q,J,ae,te){const ne=O(J,ae,te&&te.geometry),$=w(J);return s.Shape.create($,J,ne,()=>ae.color,()=>ae.linesSize,()=>"")}function L(Q,J,ae){const te=h.LinesBuilder.create(128,64,ae);for(let ne=0,$=Q.quads.length;ne<$;++ne)E(Q.quads[ne],B,J.arcScale),te.addFixedLengthDashes(B.sphereB.center,B.sphereC.center,J.dashLength,ne);return te.getLines()}function U(Q,J,ae,te){const ne=L(J,ae,te&&te.geometry),$=w(J);return s.Shape.create($,J,ne,()=>ae.color,()=>ae.linesSize,()=>"")}function q(Q,J,ae){const te=h.LinesBuilder.create(128,64,ae);for(let ne=0,$=Q.quads.length;ne<$;++ne)E(Q.quads[ne],B,J.arcScale),te.addFixedLengthDashes(B.sphereB.center,B.sphereA.center,J.dashLength,ne),te.addFixedLengthDashes(B.sphereC.center,B.sphereD.center,J.dashLength,ne);return te.getLines()}function N(Q,J,ae,te){const ne=q(J,ae,te&&te.geometry),$=w(J);return s.Shape.create($,J,ne,()=>ae.color,()=>ae.linesSize,()=>"")}function k(Q,J,ae){const te=h.LinesBuilder.create(128,64,ae);for(let ne=0,$=Q.quads.length;ne<$;++ne)E(Q.quads[ne],B,J.arcScale),te.addFixedLengthDashes(B.arcPointA,B.projA,J.dashLength,ne),te.addFixedLengthDashes(B.arcPointD,B.projD,J.dashLength,ne);return te.getLines()}function j(Q,J,ae,te){const ne=k(J,ae,te&&te.geometry),$=w(J);return s.Shape.create($,J,ne,()=>ae.color,()=>ae.linesSize,()=>"")}function H(Q,J,ae){const te=h.LinesBuilder.create(128,64,ae);for(let ne=0,$=Q.quads.length;ne<$;++ne){E(Q.quads[ne],B,J.arcScale);const ie=I(B,J.dashLength),{indices:Z,vertices:re}=ie;for(let oe=0,ce=Z.length;oe<ce;oe+=3){if(oe%2===1)continue;const ue=Z[oe]*3,pe=Z[oe+1]*3,he=re[ue],fe=re[ue+1],de=re[ue+2],ge=re[pe],Ce=re[pe+1],ve=re[pe+2];te.add(he,fe,de,ge,Ce,ve,ne)}}return te.getLines()}function G(Q,J,ae,te){const ne=H(J,ae,te&&te.geometry),$=w(J);return s.Shape.create($,J,ne,()=>ae.color,()=>ae.linesSize,()=>"")}function z(Q,J,ae){const te=g.MeshBuilder.createState(128,64,ae);for(let ne=0,$=Q.quads.length;ne<$;++ne){E(Q.quads[ne],B,J.arcScale);const ie=I(B);te.currentGroup=ne,g.MeshBuilder.addPrimitive(te,y.Mat4.id,ie),g.MeshBuilder.addPrimitiveFlipped(te,y.Mat4.id,ie)}return g.MeshBuilder.getMesh(te)}function W(Q,J,ae,te){const ne=z(J,ae,te&&te.geometry),$=w(J),ie=Z=>(0,m.dihedralLabel)(J.quads[Z]);return s.Shape.create($,J,ne,()=>ae.color,()=>1,ie)}function X(Q,J,ae){const te=f.TextBuilder.create(J,128,64,ae);for(let ne=0,$=Q.quads.length;ne<$;++ne){E(Q.quads[ne],B,J.arcScale),y.Vec3.add(V,B.arcDirA,B.arcDirD),y.Vec3.setMagnitude(V,V,B.radius),y.Vec3.add(V,B.arcCenter,V);let ie=(0,a.radToDeg)(B.angle).toFixed(2);ie==="-0.00"&&(ie="0.00");const Z=J.customText||`${ie}°`,oe=Math.max(2,B.sphereA.radius,B.sphereB.radius,B.sphereC.radius,B.sphereD.radius)/2;te.add(Z,V[0],V[1],V[2],.1,oe,ne)}return te.getText()}function Y(Q,J,ae,te){const ne=X(J,ae,te&&te.geometry),$=w(J),ie=Z=>(0,m.dihedralLabel)(J.quads[Z]);return s.Shape.create($,J,ne,()=>ae.textColor,()=>ae.textSize,ie)}function K(Q,J){return o.Representation.createMulti("Dihedral",Q,J,o.Representation.StateBuilder,M)}return Wd}var Mv={},g6;function Yf(){if(g6)return Mv;g6=1,Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.Clipping=i;const e=gt(),t=Ke(),r=va(),n=Y_();function i(c,o){return{kind:c,layers:o}}return(function(c){c.Empty={kind:"empty-loci",layers:[]},(function(d){d.is=n.BitFlags.has;let p;(function(C){C[C.None=0]="None",C[C.One=1]="One",C[C.Two=2]="Two",C[C.Three=4]="Three",C[C.Four=8]="Four",C[C.Five=16]="Five",C[C.Six=32]="Six"})(p=d.Flag||(d.Flag={}));function u(C){return n.BitFlags.create(C)}d.create=u,d.Names={one:p.One,two:p.Two,three:p.Three,four:p.Four,five:p.Five,six:p.Six};function m(C){return C in d.Names}d.isName=m;function v(C){switch(C){case"one":return p.One;case"two":return p.Two;case"three":return p.Three;
4207case"four":return p.Four;case"five":return p.Five;case"six":return p.Six}}d.fromName=v;function b(C){let l=p.None;for(let S=0,T=C.length;S<T;++S)l|=v(C[S]);return l}d.fromNames=b;function P(C){const l=[];return d.is(C,p.One)&&l.push("one"),d.is(C,p.Two)&&l.push("two"),d.is(C,p.Three)&&l.push("three"),d.is(C,p.Four)&&l.push("four"),d.is(C,p.Five)&&l.push("five"),d.is(C,p.Six)&&l.push("six"),l}d.toNames=P})(c.Groups||(c.Groups={}));function o(d,p){if(d.layers.length!==p.layers.length)return!1;for(let u=0,m=d.layers.length;u<m;++u)if(d.layers[u].groups!==p.layers[u].groups||!e.Loci.areEqual(d.layers[u].loci,p.layers[u].loci))return!1;return!0}c.areEqual=o;function s(d){return d.layers.length===0}c.isEmpty=s;function h(d,p){if(d.kind==="element-loci"){const u=[];for(const m of d.layers){let{loci:v,groups:b}=m;v=t.StructureElement.Loci.remap(v,p),t.StructureElement.Loci.isEmpty(v)||u.push({loci:v,groups:b})}return{kind:"element-loci",layers:u}}else return d}c.remap=h;function f(d){if(s(d))return d;if(d.kind==="element-loci"){const{structure:p}=d.layers[0].loci,u=new Map;let m=t.StructureElement.Loci.none(p);for(let b=0,P=d.layers.length;b<P;++b){let{loci:C,groups:l}=d.layers[P-b-1];C=t.StructureElement.Loci.subtract(C,m),m=t.StructureElement.Loci.union(C,m),t.StructureElement.Loci.isEmpty(C)||(u.has(l)&&(C=t.StructureElement.Loci.union(C,u.get(l))),u.set(l,C))}const v=[];return u.forEach((b,P)=>{v.push({loci:b,groups:P})}),{kind:"element-loci",layers:v}}else return d}c.merge=f;function y(d,p){if(s(d))return d;if(d.kind==="element-loci"){const{structure:u}=d.layers[0].loci,m=[];for(const v of d.layers){let{loci:b,groups:P}=v;const C=t.StructureElement.Loci.remap(b,p);b=t.StructureElement.Loci.remap(C,u),t.StructureElement.Loci.isEmpty(b)||m.push({loci:b,groups:P})}return{kind:"element-loci",layers:m}}else return d}c.filter=y;function _(d,p){const u=[];for(let m=0,v=d.length;m<v;++m){const{script:b,groups:P}=d[m],C=r.Script.toLoci(b,p);t.StructureElement.Loci.isEmpty(C)||u.push({loci:C,groups:P})}return{kind:"element-loci",layers:u}}c.ofScript=_;function g(d,p){const u=[];for(let m=0,v=d.length;m<v;++m){const{bundle:b,groups:P}=d[m],C=t.StructureElement.Bundle.toLoci(b,p.root);u.push({loci:C,groups:P})}return{kind:"element-loci",layers:u}}c.ofBundle=g;function a(d){const p=[];for(let u=0,m=d.layers.length;u<m;++u){const{loci:v,groups:b}=d.layers[u],P=t.StructureElement.Bundle.fromLoci(v);p.push({bundle:P,groups:b})}return{kind:"element-loci",layers:p}}c.toBundle=a})(i||(Mv.Clipping=i={})),Mv}var qi={},jP={},y6;function aoe(){if(y6)return jP;y6=1,Object.defineProperty(jP,"__esModule",{value:!0}),jP.parseMtl=t;const e=vt();function t(r){const n=new Map;let i=null,c=(0,e.Color)(8421504);const o=()=>{i!==null&&n.set(i,{Kd:c})},s=r.split(/\r?\n/);for(const h of s){const f=h.trim();if(!(f.length===0||f.charCodeAt(0)===35)){if(f.startsWith("newmtl"))o(),i=f.slice(6).trim(),c=(0,e.Color)(8421504);else if(f.startsWith("Kd")){const y=f.slice(2).trim().split(/\s+/);if(y.length>=3){const _=parseFloat(y[0]),g=parseFloat(y[1]),a=parseFloat(y[2]);c=e.Color.fromNormalizedRgb(_,g,a)}}}}return o(),n}return jP}var Fu={},v6;function ooe(){if(v6)return Fu;v6=1,Object.defineProperty(Fu,"__esModule",{value:!0}),Fu.ObjShapeParams=void 0,Fu.createObjShapeParams=_,Fu.shapeFromObj=P;const e=nt(),t=vt(),r=$t(),n=Rt(),i=pn(),c=_t(),o=Ne(),s=Vr(),h=dQ(),f=et(),y=Ct();function _(C,l){var S,T;const A=((S=C?.vertexColors.length)!==null&&S!==void 0?S:0)>0,x=(T=C?.materialNames)!==null&&T!==void 0?T:[],M=x.length>0,D=l!==void 0&&l.size>0&&M,V=x.length>1?(0,h.distinctColors)(x.length):x.length===1?[s.ColorNames.grey]:[],R={};for(let B=0;B<x.length;++B)R[x[B]]=o.ParamDefinition.Color(V[B]);const E={uniform:o.ParamDefinition.Group({color:o.ParamDefinition.Color(s.ColorNames.grey)},{isFlat:!0})};D&&(E.given=o.ParamDefinition.Group({},{isFlat:!0})),E.custom=o.ParamDefinition.Group(R,{isFlat:!1}),A&&(E.vertex=o.ParamDefinition.Group({},{isFlat:!0}));const I=A?"vertex":D?"given":M?"custom":"uniform";return{...n.Mesh.Params,coloring:o.ParamDefinition.MappedStatic(I,E)}}Fu.ObjShapeParams=_();function g(C,l,S){const{coloring:T}=l;if(T.name==="vertex")return[];const A=Math.max(1,C.length);if(T.name==="uniform")return Array(A).fill(T.params.color);
4207if(T.name==="given")return C.length===0?[s.ColorNames.grey]:C.map(x=>{var M,D;return(D=(M=S?.get(x))===null||M===void 0?void 0:M.Kd)!==null&&D!==void 0?D:s.ColorNames.grey});{if(C.length===0)return[s.ColorNames.grey];const x=T.params;return C.map(M=>{var D;return(D=x[M])!==null&&D!==void 0?D:s.ColorNames.grey})}}function a(C){const l=new Int32Array(C.positionCount);for(let S=0;S<C.triangleCount;++S){const T=S*3,A=C.faceGroups[S];for(let x=0;x<3;++x)l[C.positionIndices[T+x]]=A}return l}function d(C,l){const{positionIndices:S,normalIndices:T,faceGroups:A,positionCount:x,triangleCount:M}=C,D=C.normalCount>0;let V=l,R=null,E=null;if(!l){R=new Int32Array(x).fill(-1);let I=!1;e:for(let B=0;B<M;++B){const w=B*3,O=A[B];for(let F=0;F<3;++F){const L=S[w+F];if(R[L]===-1)R[L]=O;else if(R[L]!==O){I=!0;break e}}}I?y.isDebugMode&&console.warn("OBJ: position shared across face groups; falling back to vertex duplication"):V=!0}if(V&&D){E=new Int32Array(x).fill(-1);let I=!1;e:for(let B=0;B<M;++B){const w=B*3;for(let O=0;O<3;++O){const F=S[w+O],L=T[w+O];if(E[F]===-1)E[F]=L;else if(E[F]!==L){I=!0;break e}}}I&&(V=!1)}return{canUseIndexedPath:V,posGroups:R,posNormals:E}}async function p(C,l,S,T){const{positions:A,normals:x,positionIndices:M,triangleCount:D,positionCount:V}=l,R=l.normalCount>0,{posGroups:E,posNormals:I,usePositionGroups:B}=S,w=5e4,O=r.MeshBuilder.createState(V,D,T),{vertices:F,normals:L,indices:U,groups:q}=O;for(let k=0;k<V;++k){const j=k*3;if(c.ChunkedArray.add3(F,A[j],A[j+1],A[j+2]),I!==null&&I[k]>=0){const H=I[k]*3;c.ChunkedArray.add3(L,x[H],x[H+1],x[H+2])}else c.ChunkedArray.add3(L,0,0,0);c.ChunkedArray.add(q,B?k:Math.max(0,E[k])),k%w===0&&C.shouldUpdate&&await C.update({message:"Building OBJ mesh",current:k,max:V})}for(let k=0;k<D;++k){const j=k*3;c.ChunkedArray.add3(U,M[j],M[j+1],M[j+2])}const N=r.MeshBuilder.getMesh(O);return R||n.Mesh.computeNormals(N),f.ValueCell.updateIfChanged(N.varyingGroup,!0),N}async function u(C,l,S,T){const{positions:A,normals:x,positionIndices:M,normalIndices:D,triangleCount:V,faceGroups:R}=l,E=l.normalCount>0,I=5e4,B=r.MeshBuilder.createState(V*3,V,T),{vertices:w,normals:O,indices:F,groups:L}=B;for(let q=0;q<V;++q){const N=q*3,k=q*3;for(let j=0;j<3;++j){const H=M[N+j],G=H*3;c.ChunkedArray.add3(w,A[G],A[G+1],A[G+2]);const z=E?D[N+j]:-1;if(E&&z>=0){const W=z*3;c.ChunkedArray.add3(O,x[W],x[W+1],x[W+2])}else c.ChunkedArray.add3(O,0,0,0);c.ChunkedArray.add(L,S?H:R[q])}c.ChunkedArray.add3(F,k,k+1,k+2),q%I===0&&C.shouldUpdate&&await C.update({message:"Building OBJ mesh",current:q,max:V})}const U=r.MeshBuilder.getMesh(B);return E||n.Mesh.computeNormals(U),f.ValueCell.updateIfChanged(U.varyingGroup,!0),U}async function m(C,l,S,T){const{canUseIndexedPath:A,posGroups:x,posNormals:M}=d(l,S);return A?p(C,l,{posGroups:x,posNormals:M,usePositionGroups:S},T):u(C,l,S,T)}function v(C,l,S,T,A){var x;const{source:M,transforms:D}=C,{materialNames:V,vertexColors:R,positionCount:E}=M,I=R.length>0;let B;if(T==="vertex"&&I)B=F=>t.Color.fromNormalizedArray(R,F*3);else if(I&&A)if(T==="uniform"){const F=(x=S[0])!==null&&x!==void 0?x:s.ColorNames.grey;B=()=>F}else B=F=>S[Math.min(A[F],S.length-1)];else B=F=>S[Math.min(F,S.length-1)];let w;I&&A&&V.length>0?w=F=>{var L;return(L=V[A[F]])!==null&&L!==void 0?L:"OBJ Mesh"}:!I&&V.length>0?w=F=>{var L;return(L=V[F])!==null&&L!==void 0?L:"OBJ Mesh"}:w=()=>"OBJ Mesh";const O=I?E:S.length>0?S.length:void 0;return i.Shape.create("obj-mesh",M,l,F=>B(F),()=>1,F=>w(F),D,O)}function b(){let C,l,S,T,A,x=null;return async(D,V,R,E)=>{const I=!C||C!==V,B=R.coloring.name,w=g(V.source.materialNames,R,V.mtl),O=!l||S!==B||w.length!==l.length||w.some((F,L)=>F!==l[L]);if(I){l=w,S=B;const F=V.source.vertexColors.length>0;x=F?a(V.source):null,A=await m(D,V.source,F,E&&E.geometry),T=v(V,A,l,S,x)}else O&&(l=w,S=B,T=v(V,A,l,S,x));return C=V,T}}function P(C,l){return e.Task.create("Shape Provider",async S=>({label:"Mesh",data:{source:C,transforms:l?.transforms,mtl:l?.mtl},params:_(C,l?.mtl),getShape:b(),geometryUtils:n.Mesh.Utils}))}return Fu}var pA={},b6;function soe(){return b6||(b6=1,(function(e){Object.defineProperty(e,"__esMo
4207dule",{value:!0}),e.PlyShapeParams=void 0,e.shapeFromPly=S;const t=nt(),r=vt(),n=$t(),i=Rt(),c=pn(),o=_t(),s=Vt(),h=lt(),f=Ne(),y=Vr(),_=vr(),g=ui(),a=Kr();function d(T){const A=T&&T.getElement("vertex"),x=T&&T.getElement("material"),M={group:"",vRed:"",vGreen:"",vBlue:"",mRed:"",mGreen:"",mBlue:""},D=[["",""]],V=[["",""]];if(A){for(let I=0,B=A.propertyNames.length;I<B;++I){const w=A.propertyNames[I],O=A.propertyTypes[I];(O==="uchar"||O==="uint8"||O==="ushort"||O==="uint16"||O==="uint"||O==="uint32"||O==="int")&&D.push([w,w]),(O==="uchar"||O==="uint8")&&V.push([w,w])}A.propertyNames.includes("atomid")?M.group="atomid":A.propertyNames.includes("material_index")&&(M.group="material_index"),A.propertyNames.includes("red")&&(M.vRed="red"),A.propertyNames.includes("green")&&(M.vGreen="green"),A.propertyNames.includes("blue")&&(M.vBlue="blue")}const R=[["",""]];if(x){for(let I=0,B=x.propertyNames.length;I<B;++I){const w=x.propertyNames[I],O=x.propertyTypes[I];(O==="uchar"||O==="uint8")&&R.push([w,w])}x.propertyNames.includes("red")&&(M.mRed="red"),x.propertyNames.includes("green")&&(M.mGreen="green"),x.propertyNames.includes("blue")&&(M.mBlue="blue")}const E=M.vRed&&M.vGreen&&M.vBlue?"vertex":M.mRed&&M.mGreen&&M.mBlue?"material":"uniform";return{...i.Mesh.Params,coloring:f.ParamDefinition.MappedStatic(E,{vertex:f.ParamDefinition.Group({red:f.ParamDefinition.Select(M.vRed,V,{label:"Red Property"}),green:f.ParamDefinition.Select(M.vGreen,V,{label:"Green Property"}),blue:f.ParamDefinition.Select(M.vBlue,V,{label:"Blue Property"})},{isFlat:!0}),material:f.ParamDefinition.Group({red:f.ParamDefinition.Select(M.mRed,R,{label:"Red Property"}),green:f.ParamDefinition.Select(M.mGreen,R,{label:"Green Property"}),blue:f.ParamDefinition.Select(M.mBlue,R,{label:"Blue Property"})},{isFlat:!0}),uniform:f.ParamDefinition.Group({color:f.ParamDefinition.Color(y.ColorNames.grey),saturation:f.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),lightness:f.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1})},{isFlat:!0})}),grouping:f.ParamDefinition.MappedStatic(M.group?"vertex":"none",{vertex:f.ParamDefinition.Group({group:f.ParamDefinition.Select(M.group,D,{label:"Group Property"})},{isFlat:!0}),none:f.ParamDefinition.Group({})})}}e.PlyShapeParams=d();function p(T,A,x,M,D){const{vertices:V,normals:R,groups:E}=x,I=M.getProperty("x"),B=M.getProperty("y"),w=M.getProperty("z");if(!I||!B||!w)throw new Error("missing coordinate properties");const O=M.getProperty("nx"),F=M.getProperty("ny"),L=M.getProperty("nz"),U=!!O&&!!F&&!!L;for(let q=T;q<A;++q)o.ChunkedArray.add3(V,I.value(q),B.value(q),w.value(q)),U&&o.ChunkedArray.add3(R,O.value(q),F.value(q),L.value(q)),o.ChunkedArray.add(E,D[q])}function u(T,A,x,M){const{indices:D}=x;for(let V=T;V<A;++V){const{entries:R,count:E}=M.value(V);E===3?o.ChunkedArray.add3(D,R[0],R[1],R[2]):E===4&&(o.ChunkedArray.add3(D,R[2],R[1],R[0]),o.ChunkedArray.add3(D,R[2],R[0],R[3]))}}async function m(T,A,x,M,D){const V=n.MeshBuilder.createState(A.rowCount,A.rowCount/4,D),R=A.getProperty("x"),E=A.getProperty("y"),I=A.getProperty("z");if(!R||!E||!I)throw new Error("missing coordinate properties");const B=A.getProperty("nx"),w=A.getProperty("ny"),O=A.getProperty("nz"),F=!!B&&!!w&&!!O,L=1e5;for(let q=0,N=A.rowCount;q<N;q+=L)p(q,Math.min(q+L,N),V,A,M),T.shouldUpdate&&await T.update({message:"adding ply mesh vertices",current:q,max:N});for(let q=0,N=x.rowCount;q<N;q+=L)u(q,Math.min(q+L,N),V,x),T.shouldUpdate&&await T.update({message:"adding ply mesh faces",current:q,max:N});const U=n.MeshBuilder.getMesh(V);return F||i.Mesh.computeNormals(U),a.ValueCell.updateIfChanged(U.varyingGroup,!0),U}const v=h.Column.Schema.int;function b(T,A){const{grouping:x}=A,{rowCount:M}=T,D=x.name==="vertex"?T.getProperty(x.params.group):void 0,V=x.name==="vertex"?(0,g.stringToWords)(x.params.group):"Vertex",R=D?D.toArray({array:Uint32Array}):(0,s.fillSerial)(new Uint32Array(M)),E=D?(0,s.arrayMax)(R):M-1,I=new Uint32Array(E+1);for(let B=0,w=R.length;B<w;++B)I[R[B]]=B;return{ids:R,map:I,label:V}}function P(T,A,x){const{coloring:M}=x,{rowCount:D}=T;let V,R,E;if(M.name==="vertex")V=T.getProperty(M.params.red)||h.Column.ofConst(127,D,v),R=T.getProperty(M.params.green)||h.Column.ofConst(127,D,v),E=T.getProperty(M.params.blue)||h.Column.ofConst(127,D,v);else if(M.name==="material")V=A&&A.getProperty(M.params.red)||h.Column.ofConst(127,D,v),R=A&&A.getProperty(M.params.green)||h.Column.ofConst(127,D,v),E=A&&A.getProperty(M.params.blue)||h.Column.ofConst(127,D,v);else{let I=M.params.color;I=r.Color.saturate(I,M.params.saturation),I=r.Color.lighten(I,M.params.lightness);const[B,w,O]=r.Color.toRgb(I);V=h.Column.ofConst(B,D,v),R=h.Column.ofConst(w,D,v),E=h.Column.ofConst(O,D,v)}return{kind:M.name,red:V,green:R,blue:E}}function C(T,A,x,M){const{kind:D,red:V,green:R,blue:E}=x,{ids:I,map:B,label:w}=M,{source:O,transforms:F}=T,L=(0,s.arrayMax)(I)+1;return c.Shape.create("ply-mesh",O,A,U=>{const q=D==="material"?U:B[U];return r.Color.fromRgb(V.value(q),R.value(q),E.value(q))},()=>1,U=>`${w} ${I[U]}`,F,L)}function l(){let T,A,x,M,D,V;return async(E,I,B,w)=>{const O=I.source.getElement("vertex");if(!O)throw new Error("missing vertex element");const F=I.source.getElement("face");if(!F)throw new Error("missing face element");const L=I.source.getElement("material");let U=!1,q=!1;return(!T||T!==I)&&(U=!0),(!A||!f.ParamDefinition.isParamEqual(e.PlyShapeParams.grouping,A.grouping,B.grouping))&&(U=!0),(!A||!f.ParamDefinition.isParamEqual(e.PlyShapeParams.coloring,A.coloring,B.coloring))&&(q=!0),U?(D=P(O,L,B),V=b(O,B),M=await m(E,O,F,V.ids,w&&w.geometry),x=C(I,M,D,V)):q&&(D=P(O,L,B),x=C(I,M,D,V)),T=I,A=(0,_.deepClone)(B),x}}function S(T,A){return t.Task.create("Shape Provider",async x=>({label:"Mesh",data:{source:T,transforms:A?.transforms},params:d(T),getShape:l(),geometryUtils:i.Mesh.Utils}))}})(pA)),pA}var hA={},_6;function coe(){return _6||(_6=1,(function(e){Object.defineProperty(e,"__esMo
4207dule",{value:!0}),e.VtpShapeParams=void 0,e.createVtpShapeParams=b,e.shapeFromVtp=D;const t=nt(),r=$t(),n=Rt(),i=pn(),c=_t(),o=Ne(),s=Vr(),h=ND(),f=pa(),y=Kr(),_=vr(),g=Xr(),a=[g.Mat4.identity()];function d(V){if(!isFinite(V))return V.toString();const R=Math.abs(V);return R===0?"0":R<.001||R>=1e5?V.toExponential(2):V.toPrecision(3)}function p(V,R){let E,I=1,B="";if(R.startsWith("point:")){B=R.slice(6);const j=V.pointData.get(B);if(!j)return"";E=j.values.toArray(),I=j.numberOfComponents}else if(R.startsWith("cell:")){B=R.slice(5);const j=V.cellData.get(B);if(!j)return"";E=j.values.toArray(),I=j.numberOfComponents}if(!E)return"";const w=E.length/I;let O=1/0,F=-1/0,L=0,U=0;for(let j=0;j<w;j++){let H;if(I===1)H=E[j];else{let G=0;for(let z=0;z<I;z++)G+=E[j*I+z]**2;H=Math.sqrt(G)}H<O&&(O=H),H>F&&(F=H),L+=H,U+=H*H}const q=L/w,N=Math.sqrt(Math.max(0,U/w-q*q)),k=I>1?`${I}-comp magnitude`:"scalar";return`${B}  (${k}, n=${w})
4208min: ${d(O)}   max: ${d(F)}
4209mean: ${d(q)}   σ: ${d(N)}`}function u(V){if(!V)return[["","No attributes"]];const R=[];for(const[E,I]of V.pointData){const B=I.numberOfComponents;R.push([`point:${E}`,B>1?`Point: ${E} (mag)`:`Point: ${E}`])}for(const[E,I]of V.cellData){const B=I.numberOfComponents;R.push([`cell:${E}`,B>1?`Cell: ${E} (mag)`:`Cell: ${E}`])}return R.length>0?R:[["","No attributes"]]}function m(V){if(!V)return"";for(const[R,E]of V.cellData)if(E.numberOfComponents===1)return`cell:${R}`;for(const[R,E]of V.pointData)if(E.numberOfComponents===1)return`point:${R}`;return V.cellData.size>0?`cell:${V.cellData.keys().next().value}`:V.pointData.size>0?`point:${V.pointData.keys().next().value}`:""}function v(V){let R=1/0,E=-1/0;for(let I=0;I<V.length;I++)V[I]<R&&(R=V[I]),V[I]>E&&(E=V[I]);return[R===1/0?0:R,E===-1/0?1:E]}function b(V,R){var E,I;const B=u(V),w=m(V),O=V&&w?p(V,w):"",F=((E=V?.pointData.size)!==null&&E!==void 0?E:0)+((I=V?.cellData.size)!==null&&I!==void 0?I:0)>0;return{...n.Mesh.Params,doubleSided:{...n.Mesh.Params.doubleSided,defaultValue:!0},interior:{...n.Mesh.Params.interior,defaultValue:{...n.Mesh.Params.interior.defaultValue,colorStrength:0}},colorTheme:o.ParamDefinition.MappedStatic(F?"attribute":"uniform",{attribute:o.ParamDefinition.Group({name:o.ParamDefinition.Select(w,B,{help:()=>({description:R?R():O})}),colors:o.ParamDefinition.Select("viridis",f.ColorListOptionsScale),domain:o.ParamDefinition.MappedStatic("auto",{custom:o.ParamDefinition.Interval([-1,1],{step:.001}),auto:o.ParamDefinition.Group({symmetric:o.ParamDefinition.Boolean(!1,{description:"If true the automatic range is determined as [-|max|, |max|]."})})})}),uniform:o.ParamDefinition.Group({color:o.ParamDefinition.Color(s.ColorNames.grey,{label:"Uniform Color"})})},{isEssential:!0}),scale:o.ParamDefinition.Numeric(1,{min:.01,max:100,step:.01},{label:"Scale",isEssential:!0,description:"Uniform scale factor applied to the mesh."})}}e.VtpShapeParams=b();async function P(V,R,E){const{positions:I,connectivity:B,numberOfPoints:w,numberOfTriangles:O}=R,F=r.MeshBuilder.createState(w,O,E),{vertices:L,indices:U,groups:q}=F,N=5e4;for(let j=0,H=w;j<H;j+=N){const G=Math.min(j+N,H);for(let z=j;z<G;z++)c.ChunkedArray.add3(L,I[3*z],I[3*z+1],I[3*z+2]),c.ChunkedArray.add(q,z);V.shouldUpdate&&await V.update({message:"Building VTP mesh...",current:j,max:w+O})}for(let j=0,H=O;j<H;j+=N){const G=Math.min(j+N,H);for(let z=j;z<G;z++)c.ChunkedArray.add3(U,B[3*z],B[3*z+1],B[3*z+2]);V.shouldUpdate&&await V.update({message:"Building VTP mesh...",current:w+j,max:w+O})}const k=r.MeshBuilder.getMesh(F);return n.Mesh.computeNormals(k),y.ValueCell.updateIfChanged(k.varyingGroup,!0),k}
4209function C(V,R){const{connectivity:E,triangleCellIndex:I,numberOfPoints:B}=V,w=E.length/3,O=new Float64Array(B),F=new Uint32Array(B);for(let U=0;U<w;U++){const q=R[I[U]],N=E[3*U],k=E[3*U+1],j=E[3*U+2];O[N]+=q,F[N]++,O[k]+=q,F[k]++,O[j]+=q,F[j]++}const L=new Float64Array(B);for(let U=0;U<B;U++)L[U]=F[U]>0?O[U]/F[U]:0;return L}function l(V,R,E){const{connectivity:I,triangleCellIndex:B,numberOfPoints:w}=V,O=I.length/3,F=new Float64Array(w*E),L=new Uint32Array(w);for(let q=0;q<O;q++){const N=B[q],k=I[3*q],j=I[3*q+1],H=I[3*q+2];for(let G=0;G<E;G++){const z=R[N*E+G];F[k*E+G]+=z,F[j*E+G]+=z,F[H*E+G]+=z}L[k]++,L[j]++,L[H]++}const U=new Float64Array(w);for(let q=0;q<w;q++)if(L[q]>0){let N=0;for(let k=0;k<E;k++){const j=F[q*E+k]/L[q];N+=j*j}U[q]=Math.sqrt(N)}return U}function S(V,R,E){let I=0;for(let B=0;B<E;B++)I+=V[R+B]**2;return Math.sqrt(I)}function T(V,R){if(!R)return null;if(R.startsWith("cell:")){const E=V.cellData.get(R.slice(5));if(!E)return null;const I=E.numberOfComponents,B=E.values.toArray();return I===1?{values:C(V,B),isMagnitude:!1}:{values:l(V,B,I),isMagnitude:!0}}if(R.startsWith("point:")){const E=V.pointData.get(R.slice(6));if(!E)return null;const I=E.numberOfComponents,B=E.values.toArray();if(I===1)return{values:B,isMagnitude:!1};const w=B.length/I,O=new Float64Array(w);for(let F=0;F<w;F++)O[F]=S(B,F*I,I);return{values:O,isMagnitude:!0}}return null}function A(V,R){if(V.name==="uniform")return()=>V.params.color;if(!R)return()=>s.ColorNames.grey;const{values:E,isMagnitude:I}=R,{colors:B,domain:w}=V.params;let O,F;if(w.name==="custom")[O,F]=w.params;else if([O,F]=v(E),I&&F>0&&(F-O)/F<.01&&(O=0),w.params.symmetric){const U=Math.max(Math.abs(O),Math.abs(F));O=-U,F=U}F-O<1e-9&&(F=O+1e-9);const L=h.ColorScale.create({listOrName:B,domain:[O,F]});return U=>L.color(E[U])}function x(V,R,E,I){var B;const w=g.Mat4.fromUniformScaling((0,g.Mat4)(),I.scale),F=((B=V.transforms)!==null&&B!==void 0?B:a).map(U=>g.Mat4.mul((0,g.Mat4)(),U,w)),{numberOfPoints:L}=V.source;return i.Shape.create("vtp-mesh",V.source,R,E,()=>1,U=>U>=0?`Vertex ${U}`:"",F,L)}function M(){let V,R,E,I,B,w=null,O,F="";return{getShape:async(q,N,k,j)=>{const H=e.VtpShapeParams,G=!V||V.source!==N.source,z=k.colorTheme.name==="attribute"?k.colorTheme.params.name:null,W=R?R.colorTheme.name==="attribute"?R.colorTheme.params.name:null:void 0,X=G||z!==W,Y=!R||!o.ParamDefinition.isParamEqual(H.colorTheme,R.colorTheme,k.colorTheme),K=G||X||Y,Q=G||K||V?.transforms!==N.transforms||!R||R.scale!==k.scale;return G&&(I=await P(q,N.source,j?.geometry)),X&&(w=z?T(N.source,z):null,z&&z!==O?(F=p(N.source,z),O=z):z||(F="",O=void 0)),K&&(B=A(k.colorTheme,w)),Q&&(E=x(N,I,B,k)),V=N,(G||K||Q)&&(R=(0,_.deepClone)(k)),E},getStats:()=>({text:F,attr:O})}}function D(V,R){return t.Task.create("Shape Provider",async()=>{const E=M();return{label:"VTP Mesh",data:{source:V,transforms:R?.transforms},params:b(V,()=>E.getStats().text),getShape:E.getShape,geometryUtils:n.Mesh.Utils}})}})(hA)),hA}var S6;function GQ(){if(S6)return qi;S6=1,Object.defineProperty(qi,"__esModule",{value:!0}),qi.ShapeFromVtp=qi.ShapeFromObj=qi.ShapeFromPly=qi.BoxShape3D=void 0,qi.getBoxMesh=p;const e=Rt(),t=$t(),r=FS(),n=rt(),i=Ge(),c=aoe(),o=ooe(),s=soe(),h=coe(),f=pn(),y=nt(),_=Vr(),g=Ne(),a=jt(),d=a.PluginStateTransform.BuiltIn({name:"box-shape-3d",display:"Box Shape",from:a.PluginStateObject.Root,to:a.PluginStateObject.Shape.Provider,params:{bottomLeft:g.ParamDefinition.Vec3((0,i.Vec3)()),topRight:g.ParamDefinition.Vec3(i.Vec3.create(1,1,1)),radius:g.ParamDefinition.Numeric(.15,{min:.01,max:4,step:.01}),color:g.ParamDefinition.Color(_.ColorNames.red)}})({canAutoUpdate(){return!0},apply({params:P}){return y.Task.create("Shape Representation",async C=>new a.PluginStateObject.Shape.Provider({label:"Box",data:P,params:e.Mesh.Params,getShape:(l,S)=>{const T=p(n.Box3D.create(P.bottomLeft,P.topRight),P.radius);return f.Shape.create("Box",S,T,()=>S.color,()=>1,()=>"Box")},geometryUtils:e.Mesh.Utils},{label:"Box"}))}});qi.BoxShape3D=d;function p(P,C,l){const S=i.Vec3.sub((0,i.Vec3)(),P.max,P.min),T=i.Mat4.fromTranslation((0,i.Mat4)(),i.Vec3.create(.5,.5,.5)),A=i.Mat4.fromScaling((0,i.Mat4)(),S),x=i.Mat4.fromTranslation((0,i.Mat4)(),P.min),M=i.Mat4.mul3((0,i.Mat4)(),x,A,T),D=t.MeshBuilder.createState(256,128,l);D.currentGroup=1,t.MeshBuilder.addCage(D,M,(0,r.BoxCage)(),C,2,20);const V=t.MeshBuilder.getMesh(D),R=i.Vec3.scaleAndAdd((0,i.Vec3)(),P.min,S,.5),E=i.Vec3.distance(P.min,R);return V.setBoundingSphere(n.Sphere3D.create(R,E)),V}const u=a.PluginStateTransform.BuiltIn({name:"shape-from-ply",display:{name:"Shape from PLY",description:"Create Shape from PLY data"},from:a.PluginStateObject.Format.Ply,to:a.PluginStateObject.Shape.Provider,params(P){return{transforms:g.ParamDefinition.Optional(g.ParamDefinition.Value([i.Mat4.identity()],{isHidden:!0})),label:g.ParamDefinition.Optional(g.ParamDefinition.Text("",{isHidden:!0}))}}})({apply({a:P,params:C}){return y.Task.create("Create shape from PLY",async l=>{const S=await(0,s.shapeFromPly)(P.data,C).runInContext(l),T={label:C.label||"Shape"};return new a.PluginStateObject.Shape.Provider(S,T)})}});qi.ShapeFromPly=u;const m=a.PluginStateTransform.BuiltIn({name:"shape-from-obj",display:{name:"Shape from OBJ",description:"Create Shape from OBJ data"},from:a.PluginStateObject.Format.Obj,to:a.PluginStateObject.Shape.Provider,params(P){return{transforms:g.ParamDefinition.Optional(g.ParamDefinition.Value([i.Mat4.identity()],{isHidden:!0})),label:g.ParamDefinition.Optional(g.ParamDefinition.Text("",{isHidden:!0})),mtlFile:g.ParamDefinition.Optional(g.ParamDefinition.File({accept:".mtl",label:"MTL File"}))}}})({apply({a:P,params:C,cache:l},S){return y.Task.create("Create shape from OBJ",async T=>{let A;if(C.mtlFile){const D=await S.managers.asset.resolve(C.mtlFile,"string").runInContext(T);l.mtlAsset=D,A=(0,c.parseMtl)(D.data)}const x=await(0,o.shapeFromObj)(P.data,{...C,mtl:A}).runInContext(T),M={label:C.label||"Shape"};return new a.PluginStateObject.Shape.Provider(x,M)})},dispose({cache:P}){var C;(C=P?.mtlAsset)===null||C===void 0||C.dispose()}});qi.ShapeFromObj=m;const v=[i.Mat4.identity()],b=a.PluginStateTransform.BuiltIn({name:"shape-from-vtp",display:{name:"Shape from VTP",description:"Create Shape from VTP (VTK PolyData) file"},from:a.PluginStateObject.Format.Vtp,to:a.PluginStateObject.Shape.Provider,params(P){return{transforms:g.ParamDefinition.Optional(g.ParamDefinition.Value(v,{isHidden:!0})),label:g.ParamDefinition.Optional(g.ParamDefinition.Text("",{isHidden:!0}))}}})({apply({a:P,params:C}){return y.Task.create("Create shape from VTP",async l=>{const S=await(0,h.shapeFromVtp)(P.data,C).runInContext(l),T={label:C.label||"VTP Shape"};return new a.PluginStateObject.Shape.Provider(S,T)})}});return qi.ShapeFromVtp=b,qi}var $d={},Xd={},C6;function uoe(){if(C6)return Xd;C6=1,Object.defineProperty(Xd,"__esModule",{value:!0}),Xd.Plane=r,Xd.PlaneCage=n,Xd.SegmentedPlane=i;const e={vertices:new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]),normals:new Float32Array([0,0,1,0,0,1,0,0,1,0,0,1]),indices:new Uint32Array([0,2,1,1,2,3])},t={vertices:e.vertices,edges:new Uint32Array([0,1,2,3,3,1,2,0])};function r(){return e}function n(){return t}function i(c,o){const s=c+1,h=o+1,f=1/c,y=1/o,_=new Float32Array(s*h*3),g=new Float32Array(s*h*3),a=new Uint32Array(c*o*6);let d=0;for(let u=0;u<h;++u){const m=u*y-.5;for(let v=0;v<s;++v){const b=v*f-.5;_[d]=b,_[d+1]=-m,_[d+2]=0,g[d]=0,g[d+1]=0,g[d+2]=1,d+=3}}let p=0;for(let u=0;u<o;++u)for(let m=0;m<c;++m){const v=m+s*u,b=m+s*(u+1),P=m+1+s*(u+1),C=m+1+s*u;a[p]=v,a[p+1]=b,a[p+2]=C,a[p+3]=b,a[p+4]=P,a[p+5]=C,p+=6}return{vertices:_,normals:g,indices:a}}return Xd}var P6;function loe(){if(P6)return $d;P6=1,Object.defineProperty($d,"__esModule",{value:!0}),$d.PlaneParams=void 0,$d.PlaneRepresentation=C;const e=Ne(),t=Vr(),r=lc(),n=Lt(),i=pn(),c=Rt(),o=$t(),s=_a(),h=Ge(),f=cn(),y=uoe(),_=kw(),g=Ke(),a=rt(),d={...c.Mesh.Params,color:e.ParamDefinition.Color(t.ColorNames.orange),scaleFactor:e.ParamDefinition.Numeric(1,{min:.1,max:10,step:.1}),variant:e.ParamDefinition.Select("rectangle",e.ParamDefinition.arrayToOptions(["rectangle","circle"]),{label:"Shape"}),radialSegments:e.ParamDefinition.Numeric(64,{min:12,max:256,step:1},{hideIf:l=>l.variant!=="circle"})},p={plane:(l,S)=>(0,r.ShapeRepresentation)(P,c.Mesh.Utils)};
4209$d.PlaneParams={...d,visuals:e.ParamDefinition.MultiSelect(["plane"],e.ParamDefinition.objectToOptions(p))};function u(l){return`Best Fit Plane of ${(0,s.structureElementLociLabelMany)(l,{countsOnly:!0})}`}const m=(0,h.Mat4)(),v=(0,h.Vec3)();function b(l,S,T){const A=o.MeshBuilder.createState(256,128,T),M=g.StructureElement.Loci.getPrincipalAxesMany(l.locis).boxAxes;if(h.Vec3.add(v,M.origin,M.dirC),h.Mat4.targetTo(m,v,M.origin,M.dirB),A.currentGroup=0,S.variant==="circle"){h.Mat4.mul(m,m,h.Mat4.rotX90),h.Mat4.scaleUniformly(m,m,S.scaleFactor),h.Mat4.setTranslation(m,M.origin);const D=Math.max(h.Vec3.magnitude(M.dirA),h.Vec3.magnitude(M.dirB)),V=(0,_.Circle)({radius:D,segments:S.radialSegments});o.MeshBuilder.addPrimitive(A,m,V),o.MeshBuilder.addPrimitiveFlipped(A,m,V)}else{const D=(0,y.Plane)();h.Mat4.scale(m,m,a.Axes3D.size(v,M)),h.Mat4.scaleUniformly(m,m,S.scaleFactor),h.Mat4.setTranslation(m,M.origin),o.MeshBuilder.addPrimitive(A,m,D),o.MeshBuilder.addPrimitiveFlipped(A,m,D)}return o.MeshBuilder.getMesh(A)}function P(l,S,T,A){const x=b(S,T,A&&A.geometry),M=u(S.locis);return i.Shape.create(M,S,x,()=>T.color,()=>1,()=>M)}function C(l,S){const T=n.Representation.createMulti("Plane",l,S,n.Representation.StateBuilder,p);return T.setState({markerActions:f.MarkerActions.Highlighting}),T}return $d}var Dv={},T6;function zS(){if(T6)return Dv;T6=1,Object.defineProperty(Dv,"__esModule",{value:!0}),Dv.Substance=c;const e=gt(),t=Ke(),r=va(),n=tc(),i=vr();function c(o,s){return{kind:o,layers:s}}return(function(o){o.Empty={kind:"empty-loci",layers:[]};function s(p,u){if(p.layers.length===0&&u.layers.length===0)return!0;if(p.layers.length!==u.layers.length)return!1;for(let m=0,v=p.layers.length;m<v;++m)if(p.layers[m].clear!==u.layers[m].clear||!(0,i.shallowEqual)(p.layers[m].material,u.layers[m].material)||!e.Loci.areEqual(p.layers[m].loci,u.layers[m].loci))return!1;return!0}o.areEqual=s;function h(p){return p.layers.length===0}o.isEmpty=h;function f(p,u){if(p.kind==="element-loci"){const m=[];for(const v of p.layers){let{loci:b,material:P,clear:C}=v;b=t.StructureElement.Loci.remap(b,u),t.StructureElement.Loci.isEmpty(b)||m.push({loci:b,material:P,clear:C})}return{kind:"element-loci",layers:m}}else return p}o.remap=f;function y(p){if(h(p))return p;if(p.kind==="element-loci"){const{structure:u}=p.layers[0].loci;let m;const v=new Map;let b=t.StructureElement.Loci.none(u);for(let C=0,l=p.layers.length;C<l;++C){let{loci:S,material:T,clear:A}=p.layers[l-C-1];S=t.StructureElement.Loci.subtract(S,b),b=t.StructureElement.Loci.union(S,b),t.StructureElement.Loci.isEmpty(S)||(A?m=m?t.StructureElement.Loci.union(S,m):S:(v.has(T)&&(S=t.StructureElement.Loci.union(S,v.get(T))),v.set(T,S)))}const P=[];return m&&P.push({loci:m,material:(0,n.Material)(),clear:!0}),v.forEach((C,l)=>{P.push({loci:C,material:l,clear:!1})}),{kind:"element-loci",layers:P}}else return p}o.merge=y;function _(p,u){if(h(p))return p;if(p.kind==="element-loci"){const{structure:m}=p.layers[0].loci,v=[];for(const b of p.layers){let{loci:P,material:C,clear:l}=b;const S=t.StructureElement.Loci.remap(P,u);P=t.StructureElement.Loci.remap(S,m),t.StructureElement.Loci.isEmpty(P)||v.push({loci:P,material:C,clear:l})}return{kind:"element-loci",layers:v}}else return p}o.filter=_;function g(p,u){const m=[];for(let v=0,b=p.length;v<b;++v){const{script:P,material:C,clear:l}=p[v],S=r.Script.toLoci(P,u);t.StructureElement.Loci.isEmpty(S)||m.push({loci:S,material:C,clear:l})}return{kind:"element-loci",layers:m}}o.ofScript=g;function a(p,u){const m=[];for(let v=0,b=p.length;v<b;++v){const{bundle:P,material:C,clear:l}=p[v],S=t.StructureElement.Bundle.toLoci(P,u.root);m.push({loci:S,material:C,clear:l})}return{kind:"element-loci",layers:m}}o.ofBundle=a;function d(p){const u=[];for(let m=0,v=p.layers.length;m<v;++m){const{loci:b,material:P,clear:C}=p.layers[m],l=t.StructureElement.Bundle.fromLoci(b);u.push({bundle:l,material:P,clear:C})}return{kind:"element-loci",layers:u}}o.toBundle=d})(c||(Dv.Substance=c={})),Dv}var Iv={},x6;function HS(){if(x6)return Iv;x6=1,Object.defineProperty(Iv,"__esModule",{value:!0}),Iv.Emissive=n;const e=gt(),t=Ke(),r=va();function n(i,c){return{kind:i,layers:c}}return(function(i){i.Empty={kind:"empty-loci",layers:[]};function c(a,d){if(a.layers.length===0&&d.layers.length===0)return!0;
4209if(a.layers.length!==d.layers.length)return!1;for(let p=0,u=a.layers.length;p<u;++p)if(a.layers[p].value!==d.layers[p].value||!e.Loci.areEqual(a.layers[p].loci,d.layers[p].loci))return!1;return!0}i.areEqual=c;function o(a){return a.layers.length===0}i.isEmpty=o;function s(a,d){if(a.kind==="element-loci"){const p=[];for(const u of a.layers){let{loci:m,value:v}=u;m=t.StructureElement.Loci.remap(m,d),t.StructureElement.Loci.isEmpty(m)||p.push({loci:m,value:v})}return{kind:"element-loci",layers:p}}else return a}i.remap=s;function h(a){if(o(a))return a;if(a.kind==="element-loci"){const{structure:d}=a.layers[0].loci,p=new Map;let u=t.StructureElement.Loci.none(d);for(let v=0,b=a.layers.length;v<b;++v){let{loci:P,value:C}=a.layers[b-v-1];P=t.StructureElement.Loci.subtract(P,u),u=t.StructureElement.Loci.union(P,u),t.StructureElement.Loci.isEmpty(P)||(p.has(C)&&(P=t.StructureElement.Loci.union(P,p.get(C))),p.set(C,P))}const m=[];return p.forEach((v,b)=>{m.push({loci:v,value:b})}),{kind:"element-loci",layers:m}}else return a}i.merge=h;function f(a,d){if(o(a))return a;if(a.kind==="element-loci"){const{structure:p}=a.layers[0].loci,u=[];for(const m of a.layers){let{loci:v,value:b}=m;const P=t.StructureElement.Loci.remap(v,d);v=t.StructureElement.Loci.remap(P,p),t.StructureElement.Loci.isEmpty(v)||u.push({loci:v,value:b})}return{kind:"element-loci",layers:u}}else return a}i.filter=f;function y(a,d){const p=[];for(let u=0,m=a.length;u<m;++u){const{script:v,value:b}=a[u],P=r.Script.toLoci(v,d);t.StructureElement.Loci.isEmpty(P)||p.push({loci:P,value:b})}return{kind:"element-loci",layers:p}}i.ofScript=y;function _(a,d){const p=[];for(let u=0,m=a.length;u<m;++u){const{bundle:v,value:b}=a[u],P=t.StructureElement.Bundle.toLoci(v,d.root);p.push({loci:P,value:b})}return{kind:"element-loci",layers:p}}i.ofBundle=_;function g(a){const d=[];for(let p=0,u=a.layers.length;p<u;++p){const{loci:m,value:v}=a.layers[p],b=t.StructureElement.Bundle.fromLoci(m);d.push({bundle:b,value:v})}return{kind:"element-loci",layers:d}}i.toBundle=g})(n||(Iv.Emissive=n={})),Iv}var wv={},A6;function WS(){if(A6)return wv;A6=1,Object.defineProperty(wv,"__esModule",{value:!0}),wv.Wiggle=n;const e=gt(),t=Ke(),r=va();function n(i,c){return{kind:i,layers:c}}return(function(i){i.Empty={kind:"empty-loci",layers:[]};function c(a,d){if(a.layers.length===0&&d.layers.length===0)return!0;if(a.layers.length!==d.layers.length)return!1;for(let p=0,u=a.layers.length;p<u;++p)if(a.layers[p].value!==d.layers[p].value||!e.Loci.areEqual(a.layers[p].loci,d.layers[p].loci))return!1;return!0}i.areEqual=c;function o(a){return a.layers.length===0}i.isEmpty=o;function s(a,d){if(a.kind==="element-loci"){const p=[];for(const u of a.layers){let{loci:m,value:v}=u;m=t.StructureElement.Loci.remap(m,d),t.StructureElement.Loci.isEmpty(m)||p.push({loci:m,value:v})}return{kind:"element-loci",layers:p}}else return a}i.remap=s;function h(a){if(o(a))return a;if(a.kind==="element-loci"){const{structure:d}=a.layers[0].loci,p=new Map;let u=t.StructureElement.Loci.none(d);for(let v=0,b=a.layers.length;v<b;++v){let{loci:P,value:C}=a.layers[b-v-1];P=t.StructureElement.Loci.subtract(P,u),u=t.StructureElement.Loci.union(P,u),t.StructureElement.Loci.isEmpty(P)||(p.has(C)&&(P=t.StructureElement.Loci.union(P,p.get(C))),p.set(C,P))}const m=[];return p.forEach((v,b)=>{m.push({loci:v,value:b})}),{kind:"element-loci",layers:m}}else return a}i.merge=h;function f(a,d){if(o(a))return a;if(a.kind==="element-loci"){const{structure:p}=a.layers[0].loci,u=[];for(const m of a.layers){let{loci:v,value:b}=m;const P=t.StructureElement.Loci.remap(v,d);v=t.StructureElement.Loci.remap(P,p),t.StructureElement.Loci.isEmpty(v)||u.push({loci:v,value:b})}return{kind:"element-loci",layers:u}}else return a}i.filter=f;function y(a,d){const p=[];for(let u=0,m=a.length;u<m;++u){const{script:v,value:b}=a[u],P=r.Script.toLoci(v,d);t.StructureElement.Loci.isEmpty(P)||p.push({loci:P,value:b})}return{kind:"element-loci",layers:p}}i.ofScript=y;function _(a,d){const p=[];for(let u=0,m=a.length;u<m;++u){const{bundle:v,value:b}=a[u],P=t.StructureElement.Bundle.toLoci(v,d.root);p.push({loci:P,value:b})}return{kind:"element-loci",layers:p}}i.ofBundle=_;
4209function g(a){const d=[];for(let p=0,u=a.layers.length;p<u;++p){const{loci:m,value:v}=a.layers[p],b=t.StructureElement.Bundle.fromLoci(m);d.push({bundle:b,value:v})}return{kind:"element-loci",layers:d}}i.toBundle=g})(n||(wv.Wiggle=n={})),wv}var M6;function $S(){if(M6)return yt;M6=1,Object.defineProperty(yt,"__esModule",{value:!0}),yt.StructureSelectionsPlane3D=yt.StructureSelectionsOrientation3D=yt.StructureSelectionsLabel3D=yt.StructureSelectionsDihedral3D=yt.StructureSelectionsAngle3D=yt.StructureSelectionsDistance3D=yt.StructureBoundingBox3D=yt.ModelUnitcell3D=yt.ShapeRepresentation3D=yt.VolumeRepresentation3DHelpers=yt.VolumeRepresentation3D=yt.ThemeStrengthRepresentation3D=yt.WiggleStructureRepresentation3DFromBundle=yt.WiggleStructureRepresentation3DFromScript=yt.ClippingStructureRepresentation3DFromBundle=yt.ClippingStructureRepresentation3DFromScript=yt.SubstanceStructureRepresentation3DFromBundle=yt.SubstanceStructureRepresentation3DFromScript=yt.EmissiveStructureRepresentation3DFromBundle=yt.EmissiveStructureRepresentation3DFromScript=yt.TransparencyStructureRepresentation3DFromBundle=yt.TransparencyStructureRepresentation3DFromScript=yt.OverpaintStructureRepresentation3DFromBundle=yt.OverpaintStructureRepresentation3DFromScript=yt.UnwindStructureAssemblyRepresentation3D=yt.SpinStructureRepresentation3D=yt.ExplodeStructureRepresentation3D=yt.StructureRepresentation3D=void 0;const e=Ke(),t=sn(),r=Et(),n=nt(),i=ea(),c=Ne(),o=jt(),s=Vr(),h=lc(),f=Wae(),y=$ae(),_=vt(),g=US(),a=jS(),d=Tt(),p=va(),u=Qae(),m=Zae(),v=Vw(),b=Jae(),P=roe(),C=noe(),l=ioe(),S=Qn(),T=Yf(),A=Gt(),x=Rt(),M=GQ(),D=pn(),V=loe(),R=zS(),E=tc(),I=ir(),B=cn(),w=HS(),O=WS(),F=o.PluginStateTransform.BuiltIn({name:"structure-representation-3d",display:"3D Representation",from:o.PluginStateObject.Molecule.Structure,to:o.PluginStateObject.Molecule.Structure.Representation3D,params:(fe,de)=>{const{registry:ge,themes:Ce}=de.representation.structure,ve=ge.get(ge.default.name);if(!fe){const ee={help:se=>{const{name:ye,params:Se}=se,_e=Ce.colorThemeRegistry.get(ye).factory({},Se);return{description:_e.description,legend:_e.legend}}};return{type:c.ParamDefinition.Mapped(ge.default.name,ge.types,se=>c.ParamDefinition.Group(ge.get(se).getParams(Ce,e.Structure.Empty))),colorTheme:c.ParamDefinition.Mapped(ve.defaultColorTheme.name,Ce.colorThemeRegistry.types,se=>c.ParamDefinition.Group(Ce.colorThemeRegistry.get(se).getParams({structure:e.Structure.Empty})),ee),sizeTheme:c.ParamDefinition.Mapped(ve.defaultSizeTheme.name,Ce.sizeThemeRegistry.types,se=>c.ParamDefinition.Group(Ce.sizeThemeRegistry.get(se).getParams({structure:e.Structure.Empty})))}}const le={structure:fe.data},me={help:ee=>{const{name:se,params:ye}=ee,Ae=Ce.colorThemeRegistry.get(se).factory(le,ye);return{description:Ae.description,legend:Ae.legend}}};return{type:c.ParamDefinition.Mapped(ge.default.name,ge.getApplicableTypes(fe.data),ee=>c.ParamDefinition.Group(ge.get(ee).getParams(Ce,fe.data))),colorTheme:c.ParamDefinition.Mapped(ve.defaultColorTheme.name,Ce.colorThemeRegistry.getApplicableTypes(le),ee=>c.ParamDefinition.Group(Ce.colorThemeRegistry.get(ee).getParams(le)),me),sizeTheme:c.ParamDefinition.Mapped(ve.defaultSizeTheme.name,Ce.sizeThemeRegistry.getApplicableTypes(le),ee=>c.ParamDefinition.Group(Ce.sizeThemeRegistry.get(ee).getParams(le)))}}})({canAutoUpdate({a:fe,oldParams:de,newParams:ge}){return fe.data.elementCount<1e4||de.type.name===ge.type.name&&ge.type.params.quality!=="custom"},apply({a:fe,params:de,cache:ge},Ce){return n.Task.create("Structure Representation",async ve=>{var le,me;const ee={runtime:ve,assetManager:Ce.managers.asset,errorContext:Ce.errorContext},se=Ce.representation.structure.registry.get(de.type.name),ye=((le=se.getData)===null||le===void 0?void 0:le.call(se,fe.data,de.type.params))||fe.data;se.ensureCustomProperties&&await se.ensureCustomProperties.attach(ee,ye);const Se=se.factory({webgl:(me=Ce.canvas3d)===null||me===void 0?void 0:me.webgl,...Ce.representation.structure.themes},se.getParams);await i.Theme.ensureDependencies(ee,Ce.representation.structure.themes,{structure:ye},de),Se.setTheme(i.Theme.create(Ce.representation.structure.themes,{structure:ye},de));const Ae=de.type.params||{};return await Se.createOrUpdate(Ae,ye).runInContext(ve),new o.PluginStateObject.Molecule.Structure.Representation3D({repr:Se,sourceData:fe.data},{label:se.label})})}
4209,update({a:fe,b:de,oldParams:ge,newParams:Ce,cache:ve},le){return n.Task.create("Structure Representation",async me=>{var ee,se;if(Ce.type.name!==ge.type.name)return r.StateTransformer.UpdateResult.Recreate;const ye=le.representation.structure.registry.get(Ce.type.name);if(!((ee=ye.mustRecreate)===null||ee===void 0)&&ee.call(ye,ge.type.params,Ce.type.params))return r.StateTransformer.UpdateResult.Recreate;const Se=((se=ye.getData)===null||se===void 0?void 0:se.call(ye,fe.data,Ce.type.params))||fe.data,Ae={runtime:me,assetManager:le.managers.asset,errorContext:le.errorContext};ye.ensureCustomProperties&&await ye.ensureCustomProperties.attach(Ae,Se),i.Theme.releaseDependencies(le.representation.structure.themes,{structure:de.data.sourceData},ge),await i.Theme.ensureDependencies(Ae,le.representation.structure.themes,{structure:Se},Ce),de.data.repr.setTheme(i.Theme.create(le.representation.structure.themes,{structure:Se},Ce));const _e={...de.data.repr.props,...Ce.type.params};return await de.data.repr.createOrUpdate(_e,Se).runInContext(me),de.data.sourceData=fe.data,r.StateTransformer.UpdateResult.Updated})},dispose({b:fe,params:de},ge){if(!fe||!de)return;const Ce=fe.data.sourceData,ve=ge.representation.structure.registry.get(de.type.name);ve.ensureCustomProperties&&ve.ensureCustomProperties.detach(Ce),i.Theme.releaseDependencies(ge.representation.structure.themes,{structure:Ce},de)},interpolate(fe,de,ge){if(fe.colorTheme.name!=="uniform"||de.colorTheme.name!=="uniform")return ge<=.5?fe:de;const Ce=fe.colorTheme.params.value,ve=de.colorTheme.params.value,le=_.Color.interpolate(Ce,ve,ge);return{type:ge<=.5?fe.type:de.type,colorTheme:{name:"uniform",params:{value:le}},sizeTheme:ge<=.5?fe.sizeTheme:de.sizeTheme}}});yt.StructureRepresentation3D=F;const L=o.PluginStateTransform.BuiltIn({name:"unwind-structure-assembly-representation-3d",display:"Unwind Assembly 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:{t:c.ParamDefinition.Numeric(0,{min:0,max:1,step:.01})}})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=new f.StructureUnitTransforms(ge);return(0,y.unwindStructureAssembly)(ge,Ce,de.t),new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{unitTransforms:Ce},initialState:{unitTransforms:new f.StructureUnitTransforms(ge)},info:ge,repr:fe.data.repr},{label:`Unwind T = ${de.t.toFixed(2)}`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info;if(fe.data.sourceData!==ve||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;if(Ce.t===ge.t)return r.StateTransformer.UpdateResult.Unchanged;const le=de.data.state.unitTransforms;return(0,y.unwindStructureAssembly)(ve,le,ge.t),de.label=`Unwind T = ${ge.t.toFixed(2)}`,de.data.repr=fe.data.repr,r.StateTransformer.UpdateResult.Updated}});yt.UnwindStructureAssemblyRepresentation3D=L;const U=o.PluginStateTransform.BuiltIn({name:"explode-structure-representation-3d",display:"Explode 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:{t:c.ParamDefinition.Numeric(0,{min:0,max:1,step:.01})}})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=new f.StructureUnitTransforms(ge);return(0,y.explodeStructure)(ge,Ce,de.t,ge.root.boundary.sphere),new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{unitTransforms:Ce},initialState:{unitTransforms:new f.StructureUnitTransforms(ge)},info:ge,repr:fe.data.repr},{label:`Explode T = ${de.t.toFixed(2)}`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=fe.data.sourceData;if(de.data.info!==ve||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;if(Ce.t===ge.t)return r.StateTransformer.UpdateResult.Unchanged;const le=de.data.state.unitTransforms;return(0,y.explodeStructure)(ve,le,ge.t,ve.root.boundary.sphere),de.label=`Explode T = ${ge.t.toFixed(2)}
4209`,de.data.repr=fe.data.repr,r.StateTransformer.UpdateResult.Updated}});yt.ExplodeStructureRepresentation3D=U;const q=o.PluginStateTransform.BuiltIn({name:"spin-structure-representation-3d",display:"Spin 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:{t:c.ParamDefinition.Numeric(0,{min:0,max:1,step:.01}),...y.SpinStructureParams}})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=new f.StructureUnitTransforms(ge),{axis:ve,origin:le}=(0,y.getSpinStructureAxisAndOrigin)(ge.root,de);return(0,y.spinStructure)(ge,Ce,de.t,ve,le),new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{unitTransforms:Ce},initialState:{unitTransforms:new f.StructureUnitTransforms(ge)},info:ge,repr:fe.data.repr},{label:`Spin T = ${de.t.toFixed(2)}`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=fe.data.sourceData;if(de.data.info!==ve||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;if(Ce.t===ge.t&&Ce.axis===ge.axis&&Ce.origin===ge.origin)return r.StateTransformer.UpdateResult.Unchanged;const le=de.data.state.unitTransforms,{axis:me,origin:ee}=(0,y.getSpinStructureAxisAndOrigin)(ve.root,ge);return(0,y.spinStructure)(ve,le,ge.t,me,ee),de.label=`Spin T = ${ge.t.toFixed(2)}`,de.data.repr=fe.data.repr,r.StateTransformer.UpdateResult.Updated}});yt.SpinStructureRepresentation3D=q;const N=o.PluginStateTransform.BuiltIn({name:"overpaint-structure-representation-3d-from-script",display:"Overpaint 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({script:c.ParamDefinition.Script((0,p.Script)("(sel.atom.all)","mol-script")),color:c.ParamDefinition.Color(s.ColorNames.blueviolet),clear:c.ParamDefinition.Boolean(!1)},fe=>`${fe.clear?"Clear":_.Color.toRgbString(fe.color)}`,{defaultValue:[{script:(0,p.Script)("(sel.atom.all)","mol-script"),color:s.ColorNames.blueviolet,clear:!1}]})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=g.Overpaint.ofScript(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{overpaint:ve},initialState:{overpaint:g.Overpaint.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Overpaint (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.overpaint,se=g.Overpaint.ofScript(ge.layers,le);return g.Overpaint.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.overpaint=se,de.data.repr=fe.data.repr,de.label=`Overpaint (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.OverpaintStructureRepresentation3DFromScript=N;const k=o.PluginStateTransform.BuiltIn({name:"overpaint-structure-representation-3d-from-bundle",display:"Overpaint 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({bundle:c.ParamDefinition.Value(e.StructureElement.Bundle.Empty),color:c.ParamDefinition.Color(s.ColorNames.blueviolet),clear:c.ParamDefinition.Boolean(!1)},fe=>`${fe.clear?"Clear":_.Color.toRgbString(fe.color)}`,{defaultValue:[{bundle:e.StructureElement.Bundle.Empty,color:s.ColorNames.blueviolet,clear:!1}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=g.Overpaint.ofBundle(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{overpaint:ve},initialState:{overpaint:g.Overpaint.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Overpaint (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.Upd
4209ateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.overpaint,se=g.Overpaint.ofBundle(ge.layers,le);return g.Overpaint.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.overpaint=se,de.data.repr=fe.data.repr,de.label=`Overpaint (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.OverpaintStructureRepresentation3DFromBundle=k;const j=o.PluginStateTransform.BuiltIn({name:"transparency-structure-representation-3d-from-script",display:"Transparency 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({script:c.ParamDefinition.Script((0,p.Script)("(sel.atom.all)","mol-script")),value:c.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},{label:"Transparency"})},fe=>`Transparency (${fe.value})`,{defaultValue:[{script:(0,p.Script)("(sel.atom.all)","mol-script"),value:.5}]})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=a.Transparency.ofScript(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{transparency:ve},initialState:{transparency:a.Transparency.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Transparency (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.transparency,se=a.Transparency.ofScript(ge.layers,le);return a.Transparency.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.transparency=se,de.data.repr=fe.data.repr,de.label=`Transparency (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.TransparencyStructureRepresentation3DFromScript=j;const H=o.PluginStateTransform.BuiltIn({name:"transparency-structure-representation-3d-from-bundle",display:"Transparency 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({bundle:c.ParamDefinition.Value(e.StructureElement.Bundle.Empty),value:c.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},{label:"Transparency"})},fe=>`Transparency (${fe.value})`,{defaultValue:[{bundle:e.StructureElement.Bundle.Empty,value:.5}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=a.Transparency.ofBundle(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{transparency:ve},initialState:{transparency:a.Transparency.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Transparency (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.transparency,se=a.Transparency.ofBundle(ge.layers,le);return a.Transparency.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.transparency=se,de.data.repr=fe.data.repr,de.label=`Transparency (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.TransparencyStructureRepresentation3DFromBundle=H;const G=o.PluginStateTransform.BuiltIn({name:"emissive-structure-representation-3d-from-script",display:"Emissive 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({script:c.ParamDefinition.Script((0,p.Script)("(sel.atom.all)","mol-script")),value:c.ParamDefinition.Numeric(.5,{min:0,max:1,step:.
420901},{label:"Emissive"})},fe=>`Emissive (${fe.value})`,{defaultValue:[{script:(0,p.Script)("(sel.atom.all)","mol-script"),value:.5}]})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=w.Emissive.ofScript(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{emissive:ve},initialState:{emissive:w.Emissive.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Emissive (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.emissive,se=w.Emissive.ofScript(ge.layers,le);return w.Emissive.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.emissive=se,de.data.repr=fe.data.repr,de.label=`Emissive (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.EmissiveStructureRepresentation3DFromScript=G;const z=o.PluginStateTransform.BuiltIn({name:"emissive-structure-representation-3d-from-bundle",display:"Emissive 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({bundle:c.ParamDefinition.Value(e.StructureElement.Bundle.Empty),value:c.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},{label:"Emissive"})},fe=>`Emissive (${fe.value})`,{defaultValue:[{bundle:e.StructureElement.Bundle.Empty,value:.5}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=w.Emissive.ofBundle(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{emissive:ve},initialState:{emissive:w.Emissive.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Emissive (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.emissive,se=w.Emissive.ofBundle(ge.layers,le);return w.Emissive.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.emissive=se,de.data.repr=fe.data.repr,de.label=`Emissive (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.EmissiveStructureRepresentation3DFromBundle=z;const W=o.PluginStateTransform.BuiltIn({name:"substance-structure-representation-3d-from-script",display:"Substance 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({script:c.ParamDefinition.Script((0,p.Script)("(sel.atom.all)","mol-script")),material:E.Material.getParam(),clear:c.ParamDefinition.Boolean(!1)},fe=>`${fe.clear?"Clear":E.Material.toString(fe.material)}`,{defaultValue:[{script:(0,p.Script)("(sel.atom.all)","mol-script"),material:(0,E.Material)({roughness:1}),clear:!1}]})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=R.Substance.ofScript(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{substance:ve},initialState:{substance:R.Substance.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Substance (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.Upd
4209ateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.substance,se=R.Substance.ofScript(ge.layers,le);return R.Substance.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.substance=se,de.data.repr=fe.data.repr,de.label=`Substance (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.SubstanceStructureRepresentation3DFromScript=W;const X=o.PluginStateTransform.BuiltIn({name:"substance-structure-representation-3d-from-bundle",display:"Substance 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({bundle:c.ParamDefinition.Value(e.StructureElement.Bundle.Empty),material:E.Material.getParam(),clear:c.ParamDefinition.Boolean(!1)},fe=>`${fe.clear?"Clear":E.Material.toString(fe.material)}`,{defaultValue:[{bundle:e.StructureElement.Bundle.Empty,material:(0,E.Material)({roughness:1}),clear:!1}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=R.Substance.ofBundle(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{substance:ve},initialState:{substance:R.Substance.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Substance (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.substance,se=R.Substance.ofBundle(ge.layers,le);return R.Substance.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.substance=se,de.data.repr=fe.data.repr,de.label=`Substance (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.SubstanceStructureRepresentation3DFromBundle=X;const Y=o.PluginStateTransform.BuiltIn({name:"clipping-structure-representation-3d-from-script",display:"Clipping 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({script:c.ParamDefinition.Script((0,p.Script)("(sel.atom.all)","mol-script")),groups:c.ParamDefinition.Converted(fe=>T.Clipping.Groups.toNames(fe),fe=>T.Clipping.Groups.fromNames(fe),c.ParamDefinition.MultiSelect((0,A.ObjectKeys)(T.Clipping.Groups.Names),c.ParamDefinition.objectToOptions(T.Clipping.Groups.Names)))},fe=>`${T.Clipping.Groups.toNames(fe.groups).length} group(s)`,{defaultValue:[{script:(0,p.Script)("(sel.atom.all)","mol-script"),groups:T.Clipping.Groups.Flag.None}]})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=T.Clipping.ofScript(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{clipping:Ce},initialState:{clipping:T.Clipping.Empty},info:ge,repr:fe.data.repr},{label:`Clipping (${Ce.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info;if(fe.data.sourceData!==ve||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const le=de.data.state.clipping,me=T.Clipping.ofScript(ge.layers,ve);return T.Clipping.areEqual(le,me)?r.StateTransformer.UpdateResult.Unchanged:(de.data.state.clipping=me,de.data.repr=fe.data.repr,de.label=`Clipping (${me.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.ClippingStructureRepresentation3DFromScript=Y;const K=o.PluginStateTransform.BuiltIn({name:"clipping-structure-representation-3d-from-bundle",display:"Clipping 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({bundle:c.ParamDefinition.Value(e.StructureElement.Bundle.Empty),groups:c.ParamDefinition.Converted(fe=>T.Clipping.Groups.toNames(fe),fe=>
4209T.Clipping.Groups.fromNames(fe),c.ParamDefinition.MultiSelect((0,A.ObjectKeys)(T.Clipping.Groups.Names),c.ParamDefinition.objectToOptions(T.Clipping.Groups.Names)))},fe=>`${T.Clipping.Groups.toNames(fe.groups).length} group(s)`,{defaultValue:[{bundle:e.StructureElement.Bundle.Empty,groups:T.Clipping.Groups.Flag.None}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=T.Clipping.ofBundle(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{clipping:Ce},initialState:{clipping:T.Clipping.Empty},info:ge,repr:fe.data.repr},{label:`Clipping (${Ce.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info;if(fe.data.sourceData!==ve||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const le=de.data.state.clipping,me=T.Clipping.ofBundle(ge.layers,ve);return T.Clipping.areEqual(le,me)?r.StateTransformer.UpdateResult.Unchanged:(de.data.state.clipping=me,de.data.repr=fe.data.repr,de.label=`Clipping (${me.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.ClippingStructureRepresentation3DFromBundle=K;const Q=o.PluginStateTransform.BuiltIn({name:"wiggle-structure-representation-3d-from-script",display:"Wiggle 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({script:c.ParamDefinition.Script((0,p.Script)("(sel.atom.all)","mol-script")),value:c.ParamDefinition.Numeric(5,{min:0,max:1,step:.01},{label:"Wiggle"})},fe=>`Wiggle (${fe.value})`,{defaultValue:[{script:(0,p.Script)("(sel.atom.all)","mol-script"),value:1}]})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=O.Wiggle.ofScript(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{wiggle:ve},initialState:{wiggle:O.Wiggle.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Wiggle (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=de.data.state.wiggle,ee=O.Wiggle.ofScript(ge.layers,le);return O.Wiggle.areEqual(me,ee)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=fe.data.repr.geometryVersion,de.data.state.wiggle=ee,de.data.repr=fe.data.repr,de.label=`Wiggle (${ee.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.WiggleStructureRepresentation3DFromScript=Q;const J=o.PluginStateTransform.BuiltIn({name:"wiggle-structure-representation-3d-from-bundle",display:"Wiggle 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({bundle:c.ParamDefinition.Value(e.StructureElement.Bundle.Empty),value:c.ParamDefinition.Numeric(5,{min:0,max:1,step:.01},{label:"Wiggle"})},fe=>`Wiggle (${fe.value})`,{defaultValue:[{bundle:e.StructureElement.Bundle.Empty,value:1}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=O.Wiggle.ofBundle(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{wiggle:ve},initialState:{wiggle:O.Wiggle.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Wiggle (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=de.data.state.wiggle,ee=O.Wiggle.ofBundle(ge.layers,le);return O.Wiggle.areEqual(me,ee)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=fe.data.repr.geometryVersion,de.data.state.wiggle=ee,de.data.repr=fe.data.repr,de.label=`Wiggle (${ee.layers.length}
4209 Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.WiggleStructureRepresentation3DFromBundle=J;const ae=o.PluginStateTransform.BuiltIn({name:"theme-strength-representation-3d",display:"Theme Strength 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({overpaintStrength:c.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),transparencyStrength:c.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),emissiveStrength:c.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),substanceStrength:c.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),wiggleStrength:c.ParamDefinition.Numeric(1,{min:0,max:1,step:.01})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{themeStrength:{overpaint:de.overpaintStrength,transparency:de.transparencyStrength,emissive:de.emissiveStrength,substance:de.substanceStrength,wiggle:de.wiggleStrength}},initialState:{themeStrength:{overpaint:1,transparency:1,emissive:1,substance:1,wiggle:1}},info:{},repr:fe.data.repr},{label:"Theme Strength",description:`${de.overpaintStrength.toFixed(2)}, ${de.transparencyStrength.toFixed(2)}, ${de.emissiveStrength.toFixed(2)}, ${de.substanceStrength.toFixed(2)}, ${de.wiggleStrength.toFixed(2)}`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){var ve,le,me,ee,se;return ge.overpaintStrength===((ve=de.data.state.themeStrength)===null||ve===void 0?void 0:ve.overpaint)&&ge.transparencyStrength===((le=de.data.state.themeStrength)===null||le===void 0?void 0:le.transparency)&&ge.emissiveStrength===((me=de.data.state.themeStrength)===null||me===void 0?void 0:me.emissive)&&ge.substanceStrength===((ee=de.data.state.themeStrength)===null||ee===void 0?void 0:ee.substance)&&ge.wiggleStrength===((se=de.data.state.themeStrength)===null||se===void 0?void 0:se.wiggle)?r.StateTransformer.UpdateResult.Unchanged:(de.data.state.themeStrength={overpaint:ge.overpaintStrength,transparency:ge.transparencyStrength,emissive:ge.emissiveStrength,substance:ge.substanceStrength,wiggle:ge.wiggleStrength},de.data.repr=fe.data.repr,de.label="Theme Strength",de.description=`${ge.overpaintStrength.toFixed(2)}, ${ge.transparencyStrength.toFixed(2)}, ${ge.emissiveStrength.toFixed(2)}, ${ge.substanceStrength.toFixed(2)}, ${ge.wiggleStrength.toFixed(2)}`,r.StateTransformer.UpdateResult.Updated)},interpolate(fe,de,ge){return{overpaintStrength:(0,I.lerp)(fe.overpaintStrength,de.overpaintStrength,ge),transparencyStrength:(0,I.lerp)(fe.transparencyStrength,de.transparencyStrength,ge),emissiveStrength:(0,I.lerp)(fe.emissiveStrength,de.emissiveStrength,ge),substanceStrength:(0,I.lerp)(fe.substanceStrength,de.substanceStrength,ge),wiggleStrength:(0,I.lerp)(fe.wiggleStrength,de.wiggleStrength,ge)}}});yt.ThemeStrengthRepresentation3D=ae;var te;(function(fe){function de(ve,le,me,ee,se,ye,Se,Ae){const _e=ve.representation.volume.registry.get(le),be=ve.representation.volume.themes.colorThemeRegistry.get(se||_e.defaultColorTheme.name),xe=ve.representation.volume.themes.sizeThemeRegistry.get(Se||_e.defaultSizeTheme.name),we=c.ParamDefinition.getDefaultValues(_e.getParams(ve.representation.volume.themes,me));return{type:{name:le,params:ee?{...we,...ee}:we},colorTheme:{name:be.name,params:ye?{...be.defaultValues,...ye}:be.defaultValues},sizeTheme:{name:xe.name,params:Ae?{...xe.defaultValues,...Ae}:xe.defaultValues}}}fe.getDefaultParams=de;function ge(ve,le,me,ee,se,ye,Se){const Ae=ve.representation.volume.registry.get(le),_e=ve.representation.volume.themes.colorThemeRegistry.get(ee||Ae.defaultColorTheme.name),be=ve.representation.volume.themes.sizeThemeRegistry.get(ye||Ae.defaultSizeTheme.name);return{type:{name:le,params:me?{...Ae.defaultValues,...me}:Ae.defaultValues},colorTheme:{name:Ae.defaultColorTheme.name,params:se?{..._e.defaultValues,...se}:_e.defaultValues},sizeTheme:{name:Ae.defaultSizeTheme.name,params:Se?{...be.defaultValues,...Se}:be.defaultValues}}}fe.getDefaultParamsStatic=ge;function Ce(ve){var le,me,ee,se;if(ve.isoValue)return t.Volume.IsoValue.toString(ve.isoValue);if(!((me=(le=ve.renderMode)===null||le===void 0?void 0:le.params)===null||me===void 0)&&me.isoValue)return t.Volume.IsoValue.toString((se=(ee=ve.renderMode)===null||ee===void 0?void 0:ee.params)===null||se===void 0?void 0:se.isoValue)}fe.getDescription=Ce})(te||(yt.VolumeRepresentation3DHelpers=te={}));const ne=o.PluginStateTransform.BuiltIn({name:"volume-representation-3d",display:"3D Representation",from:o.PluginStateObject.Volume.Data,to:o.PluginStateObject.Volume.Representation3D,params:(fe,de)=>{const{registry:ge,themes:Ce}=de.representation.volume,ve=ge.get(ge.default.name);if(!fe)return{type:c.ParamDefinition.Mapped(ge.default.name,ge.types,me=>c.ParamDefinition.Group(ge.get(me).getParams(Ce,t.Volume.One))),c
4209olorTheme:c.ParamDefinition.Mapped(ve.defaultColorTheme.name,Ce.colorThemeRegistry.types,me=>c.ParamDefinition.Group(Ce.colorThemeRegistry.get(me).getParams({volume:t.Volume.One}))),sizeTheme:c.ParamDefinition.Mapped(ve.defaultSizeTheme.name,Ce.sizeThemeRegistry.types,me=>c.ParamDefinition.Group(Ce.sizeThemeRegistry.get(me).getParams({volume:t.Volume.One})))};const le={volume:fe.data};return{type:c.ParamDefinition.Mapped(ge.default.name,ge.types,me=>c.ParamDefinition.Group(ge.get(me).getParams(Ce,fe.data))),colorTheme:c.ParamDefinition.Mapped(ve.defaultColorTheme.name,Ce.colorThemeRegistry.getApplicableTypes(le),me=>c.ParamDefinition.Group(Ce.colorThemeRegistry.get(me).getParams(le))),sizeTheme:c.ParamDefinition.Mapped(ve.defaultSizeTheme.name,Ce.sizeThemeRegistry.getApplicableTypes(le),me=>c.ParamDefinition.Group(Ce.sizeThemeRegistry.get(me).getParams(le)))}}})({canAutoUpdate({oldParams:fe,newParams:de}){return fe.type.name===de.type.name},apply({a:fe,params:de},ge){return n.Task.create("Volume Representation",async Ce=>{var ve;const le={runtime:Ce,assetManager:ge.managers.asset,errorContext:ge.errorContext},me=ge.representation.volume.registry.get(de.type.name);me.ensureCustomProperties&&await me.ensureCustomProperties.attach(le,fe.data);const ee=me.factory({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.volume.themes},me.getParams);await i.Theme.ensureDependencies(le,ge.representation.volume.themes,{volume:fe.data},de),ee.setTheme(i.Theme.create(ge.representation.volume.themes,{volume:fe.data,locationKinds:me.locationKinds},de));const se=de.type.params||{};return await ee.createOrUpdate(se,fe.data).runInContext(Ce),new o.PluginStateObject.Volume.Representation3D({repr:ee,sourceData:fe.data},{label:me.label,description:te.getDescription(se)})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Volume Representation",async le=>{var me;if(Ce.type.name!==ge.type.name)return r.StateTransformer.UpdateResult.Recreate;const ee=ve.representation.volume.registry.get(Ce.type.name);if(!((me=ee.mustRecreate)===null||me===void 0)&&me.call(ee,ge.type.params,Ce.type.params))return r.StateTransformer.UpdateResult.Recreate;const se={runtime:le,assetManager:ve.managers.asset,errorContext:ve.errorContext};ee.ensureCustomProperties&&await ee.ensureCustomProperties.attach(se,fe.data),i.Theme.releaseDependencies(ve.representation.volume.themes,{volume:de.data.sourceData},ge),await i.Theme.ensureDependencies(se,ve.representation.volume.themes,{volume:fe.data},Ce),de.data.repr.setTheme(i.Theme.create(ve.representation.volume.themes,{volume:fe.data,locationKinds:ee.locationKinds},Ce));const ye={...de.data.repr.props,...Ce.type.params};return await de.data.repr.createOrUpdate(ye,fe.data).runInContext(le),de.data.sourceData=fe.data,de.description=te.getDescription(ye),r.StateTransformer.UpdateResult.Updated})},dispose({b:fe,params:de},ge){if(!fe||!de)return;const Ce=fe.data.sourceData,ve=ge.representation.volume.registry.get(de.type.name);ve.ensureCustomProperties&&ve.ensureCustomProperties.detach(Ce),i.Theme.releaseDependencies(ge.representation.volume.themes,{volume:Ce},de)}});yt.VolumeRepresentation3D=ne;const $=o.PluginStateTransform.BuiltIn({name:"shape-representation-3d",display:"3D Representation",from:o.PluginStateObject.Shape.Provider,to:o.PluginStateObject.Shape.Representation3D,params:(fe,de)=>fe?fe.data.params:d.BaseGeometry.Params})({canAutoUpdate(){return!0},apply({a:fe,params:de}){return n.Task.create("Shape Representation",async ge=>{const Ce={...c.ParamDefinition.getDefaultValues(fe.data.params),...de},ve=(0,h.ShapeRepresentation)(fe.data.getShape,fe.data.geometryUtils);return await ve.createOrUpdate(Ce,fe.data.data).runInContext(ge),new o.PluginStateObject.Shape.Representation3D({repr:ve,sourceData:fe.data},{label:fe.data.label})})},update({a:fe,b:de,newParams:ge}){return n.Task.create("Shape Representation",async Ce=>{const ve={...de.data.repr.props,...ge};return await de.data.repr.createOrUpdate(ve,fe.data.data).runInContext(Ce),de.data.sourceData=fe.data,r.StateTransformer.Upd
4209ateResult.Updated})}});yt.ShapeRepresentation3D=$;const ie=o.PluginStateTransform.BuiltIn({name:"model-unitcell-3d",display:"Model Unit Cell",from:o.PluginStateObject.Molecule.Model,to:o.PluginStateObject.Shape.Representation3D,params:()=>({...u.UnitcellParams})})({isApplicable:fe=>!!S.ModelSymmetry.Provider.get(fe.data),canAutoUpdate({oldParams:fe,newParams:de}){return!0},apply({a:fe,params:de},ge){return n.Task.create("Model Unit Cell",async Ce=>{var ve;const le=S.ModelSymmetry.Provider.get(fe.data);if(!le)return r.StateObject.Null;const me=(0,u.getUnitcellData)(fe.data,le,de),ee=(0,u.UnitcellRepresentation)({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.structure.themes},()=>u.UnitcellParams);return await ee.createOrUpdate(de,me).runInContext(Ce),new o.PluginStateObject.Shape.Representation3D({repr:ee,sourceData:me},{label:"Unit Cell",description:le.spacegroup.name})})},update({a:fe,b:de,newParams:ge}){return n.Task.create("Model Unit Cell",async Ce=>{const ve=S.ModelSymmetry.Provider.get(fe.data);if(!ve)return r.StateTransformer.UpdateResult.Null;const le={...de.data.repr.props,...ge},me=(0,u.getUnitcellData)(fe.data,ve,le);return await de.data.repr.createOrUpdate(le,me).runInContext(Ce),de.data.sourceData=me,r.StateTransformer.UpdateResult.Updated})}});yt.ModelUnitcell3D=ie;const Z=o.PluginStateTransform.BuiltIn({name:"structure-bounding-box-3d",display:"Bounding Box",from:o.PluginStateObject.Molecule.Structure,to:o.PluginStateObject.Shape.Representation3D,params:{radius:c.ParamDefinition.Numeric(.05,{min:.01,max:4,step:.01},{isEssential:!0}),color:c.ParamDefinition.Color(s.ColorNames.red,{isEssential:!0}),...x.Mesh.Params}})({canAutoUpdate(){return!0},apply({a:fe,params:de},ge){return n.Task.create("Bounding Box",async Ce=>{const ve=(0,h.ShapeRepresentation)((le,me,ee,se)=>{const ye=(0,M.getBoxMesh)(me.box,me.radius,se?.geometry);return D.Shape.create("Bouding Box",me,ye,()=>me.color,()=>1,()=>"Bounding Box")},x.Mesh.Utils);return await ve.createOrUpdate(de,{box:fe.data.boundary.box,radius:de.radius,color:de.color}).runInContext(Ce),new o.PluginStateObject.Shape.Representation3D({repr:ve,sourceData:fe.data},{label:"Bounding Box"})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Bounding Box",async le=>(await de.data.repr.createOrUpdate(Ce,{box:fe.data.boundary.box,radius:Ce.radius,color:Ce.color}).runInContext(le),de.data.sourceData=fe.data,r.StateTransformer.UpdateResult.Updated))}});yt.StructureBoundingBox3D=Z;const re=o.PluginStateTransform.BuiltIn({name:"structure-selections-distance-3d",display:"3D Distance",from:o.PluginStateObject.Molecule.Structure.Selections,to:o.PluginStateObject.Shape.Representation3D,params:()=>({...m.DistanceParams})})({canAutoUpdate({oldParams:fe,newParams:de}){return!0},apply({a:fe,params:de},ge){return n.Task.create("Structure Distance",async Ce=>{var ve;const le=(0,v.getDistanceDataFromStructureSelections)(fe.data),me=(0,m.DistanceRepresentation)({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.structure.themes},()=>m.DistanceParams);return await me.createOrUpdate(de,le).runInContext(Ce),new o.PluginStateObject.Shape.Representation3D({repr:me,sourceData:le},{label:"Distance"})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Structure Distance",async le=>{const me={...de.data.repr.props,...Ce},ee=(0,v.getDistanceDataFromStructureSelections)(fe.data);return await de.data.repr.createOrUpdate(me,ee).runInContext(le),de.data.sourceData=ee,r.StateTransformer.UpdateResult.Updated})}});yt.StructureSelectionsDistance3D=re;const oe=o.PluginStateTransform.BuiltIn({name:"structure-selections-angle-3d",display:"3D Angle",from:o.PluginStateObject.Molecule.Structure.Selections,to:o.PluginStateObject.Shape.Representation3D,params:()=>({...C.AngleParams})})({canAutoUpdate({oldParams:fe,newParams:de}){return!0},apply({a:fe,params:de},ge){return n.Task.create("Structure Angle",async Ce=>{var ve;const le=(0,v.getAngleDataFromStructureSelections)(fe.data),me=(0,C.AngleRepresentation)({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.structure.themes},()=>C.AngleParams);return await me.createOrUpdate(de,le).runInContext(Ce),new o.PluginStateObject.Shape.Representation3D({repr:me,sourceData:le},{label:"Angle"})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Structure Angle",async le=>{const me={...de.data.repr.props,...Ce},ee=(0,v.getAngleDataFromStructureSelections)(fe.data);return await de.data.repr.createOrUpdate(me,ee).runInContext(le),de.data.sourceData=ee,r.StateTransformer.Upd
4209ateResult.Updated})}});yt.StructureSelectionsAngle3D=oe;const ce=o.PluginStateTransform.BuiltIn({name:"structure-selections-dihedral-3d",display:"3D Dihedral",from:o.PluginStateObject.Molecule.Structure.Selections,to:o.PluginStateObject.Shape.Representation3D,params:()=>({...l.DihedralParams})})({canAutoUpdate({oldParams:fe,newParams:de}){return!0},apply({a:fe,params:de},ge){return n.Task.create("Structure Dihedral",async Ce=>{var ve;const le=(0,v.getDihedralDataFromStructureSelections)(fe.data),me=(0,l.DihedralRepresentation)({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.structure.themes},()=>l.DihedralParams);return await me.createOrUpdate(de,le).runInContext(Ce),new o.PluginStateObject.Shape.Representation3D({repr:me,sourceData:le},{label:"Dihedral"})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Structure Dihedral",async le=>{const me={...de.data.repr.props,...Ce},ee=(0,v.getDihedralDataFromStructureSelections)(fe.data);return await de.data.repr.createOrUpdate(me,ee).runInContext(le),de.data.sourceData=ee,r.StateTransformer.UpdateResult.Updated})}});yt.StructureSelectionsDihedral3D=ce;const ue=o.PluginStateTransform.BuiltIn({name:"structure-selections-label-3d",display:"3D Label",from:o.PluginStateObject.Molecule.Structure.Selections,to:o.PluginStateObject.Shape.Representation3D,params:()=>({...b.LabelParams})})({canAutoUpdate({oldParams:fe,newParams:de}){return!0},apply({a:fe,params:de},ge){return n.Task.create("Structure Label",async Ce=>{var ve,le,me;const ee=(0,v.getLabelDataFromStructureSelections)(fe.data),se=(0,b.LabelRepresentation)({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.structure.themes},()=>b.LabelParams);await se.createOrUpdate(de,ee).runInContext(Ce);const ye=!!(!((le=de.snapshotKey)===null||le===void 0)&&le.trim()||!((me=de.tooltip)===null||me===void 0)&&me.trim());return se.setState({pickable:ye,markerActions:ye?B.MarkerActions.Highlighting:B.MarkerAction.None}),new o.PluginStateObject.Shape.Representation3D({repr:se,sourceData:ee},{label:"Label"})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Structure Label",async le=>{var me,ee;const se={...de.data.repr.props,...Ce},ye=(0,v.getLabelDataFromStructureSelections)(fe.data);await de.data.repr.createOrUpdate(se,ye).runInContext(le),de.data.sourceData=ye;const Se=!!(!((me=Ce.snapshotKey)===null||me===void 0)&&me.trim()||!((ee=Ce.tooltip)===null||ee===void 0)&&ee.trim());return de.data.repr.setState({pickable:Se,markerActions:Se?B.MarkerActions.Highlighting:B.MarkerAction.None}),r.StateTransformer.UpdateResult.Updated})}});yt.StructureSelectionsLabel3D=ue;const pe=o.PluginStateTransform.BuiltIn({name:"structure-selections-orientation-3d",display:"3D Orientation",from:o.PluginStateObject.Molecule.Structure.Selections,to:o.PluginStateObject.Shape.Representation3D,params:()=>({...P.OrientationParams})})({canAutoUpdate({oldParams:fe,newParams:de}){return!0},apply({a:fe,params:de},ge){return n.Task.create("Structure Orientation",async Ce=>{var ve;const le=(0,v.getOrientationDataFromStructureSelections)(fe.data),me=(0,P.OrientationRepresentation)({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.structure.themes},()=>P.OrientationParams);return await me.createOrUpdate(de,le).runInContext(Ce),new o.PluginStateObject.Shape.Representation3D({repr:me,sourceData:le},{label:"Orientation"})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Structure Orientation",async le=>{const me={...de.data.repr.props,...Ce},ee=(0,v.getOrientationDataFromStructureSelections)(fe.data);return await de.data.repr.createOrUpdate(me,ee).runInContext(le),de.data.sourceData=ee,r.StateTransformer.UpdateResult.Updated})}});yt.StructureSelectionsOrientation3D=pe;const he=o.PluginStateTransform.BuiltIn({name:"structure-selections-plane-3d",display:"3D Plane",from:o.PluginStateObject.Molecule.Structure.Selections,to:o.PluginStateObject.Shape.Representation3D,params:()=>({...V.PlaneParams})})({canAutoUpdate({oldParams:fe,newParams:de}){return!0},apply({a:fe,params:de},ge){return n.Task.create("Structure Plane",async Ce=>{var ve;const le=(0,v.getPlaneDataFromStructureSelections)(fe.data),me=(0,V.PlaneRepresentation)({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.structure.themes},()=>V.PlaneParams);return await me.createOrUpdate(de,le).runInContext(Ce),new o.PluginStateObject.Shape.Representation3D({repr:me,sourceData:le},{label:"Plane"})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Structure Plane",async le=>{const me={...de.data.repr.props,...Ce},ee=(0,v.getPlaneDataFromStructureSelections)(fe.data);return await de.data.repr.createOrUpdate(me,ee).runInContext(le),de.data.sourceData=ee,r.StateTransformer.Upd
4209ateResult.Updated})}});return yt.StructureSelectionsPlane3D=he,yt}var D6;function Dr(){if(D6)return F1;D6=1,Object.defineProperty(F1,"__esModule",{value:!0}),F1.StateTransforms=void 0;const e=At,t=e.__importStar(OQ()),r=e.__importStar(Iie()),n=e.__importStar(NQ()),i=e.__importStar(Uae()),c=e.__importStar($S()),o=e.__importStar(GQ());return F1.StateTransforms={get Data(){return t},get Misc(){return r},get Model(){return n},get Volume(){return i},get Representation(){return c},get Shape(){return o}},F1}var I6;function jl(){return I6||(I6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureSelectionQueryRegistry=e.StructureSelectionQueries=e.StructureSelectionCategory=void 0,e.StructureSelectionQuery=y,e.ResidueQuery=J,e.ElementSymbolQuery=ae,e.EntityDescriptionQuery=te,e.getElementQueries=$,e.getNonStandardResidueQueries=ie,e.getPolymerAndBranchedEntityQueries=Z,e.applyBuiltInSelection=re;const t=Ke(),r=dt(),n=dr(),i=LS(),c=Hi(),o=Dr(),s=Xi(),h=Pl();var f;(function(ce){ce.Type="Type",ce.Structure="Structure Property",ce.Atom="Atom Property",ce.Bond="Bond Property",ce.Residue="Residue Property",ce.AminoAcid="Amino Acid",ce.NucleicBase="Nucleic Base",ce.Manipulate="Manipulate Selection",ce.Validation="Validation",ce.Misc="Miscellaneous",ce.Internal="Internal"})(f||(e.StructureSelectionCategory=f={}));function y(ce,ue,pe={}){var he;let fe;return{label:ce,expression:ue,description:pe.description||"",category:(he=pe.category)!==null&&he!==void 0?he:f.Misc,isHidden:!!pe.isHidden,priority:pe.priority||0,referencesCurrent:!!pe.referencesCurrent,get query(){return fe||(fe=(0,i.compile)(ue)),fe},ensureCustomProperties:pe.ensureCustomProperties,async getSelection(de,ge,Ce){const ve=de.managers.structure.selection.getStructure(Ce),le=ve?t.StructureSelection.Sequence(Ce,[ve]):t.StructureSelection.Empty(Ce);return pe.ensureCustomProperties&&await pe.ensureCustomProperties({runtime:ge,assetManager:de.managers.asset},Ce),fe||(fe=(0,i.compile)(ue)),fe(new t.QueryContext(Ce,{currentSelection:le}))}}}const _=y("All",n.MolScriptBuilder.struct.generator.all(),{category:"",priority:1e3}),g=y("Current Selection",n.MolScriptBuilder.internal.generator.current(),{category:"",referencesCurrent:!0}),a=y("Polymer",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.logic.and([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),n.MolScriptBuilder.core.str.match([n.MolScriptBuilder.re("(polypeptide|cyclic-pseudo-peptide|peptide-like|nucleotide|peptide nucleic acid)","i"),n.MolScriptBuilder.ammp("entitySubtype")])])})]),{category:f.Type}),d=y("Trace",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.combinator.merge([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),"chain-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("sphere","gaussian"),n.MolScriptBuilder.ammp("objectPrimitive")])})]),n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("CA","P"),n.MolScriptBuilder.ammp("label_atom_id")])})])])]),{category:f.Structure}),p=n.MolScriptBuilder.core.logic.and([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),n.MolScriptBuilder.core.str.match([n.MolScriptBuilder.re("(polypeptide|cyclic-pseudo-peptide|peptide-like)","i"),n.MolScriptBuilder.ammp("entitySubtype")])]),u=n.MolScriptBuilder.core.logic.and([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),n.MolScriptBuilder.core.str.match([n.MolScriptBuilder.re("(nucleotide|peptide nucleic acid)","i"),n.MolScriptBuilder.ammp("entitySubtype")])]),m=n.MolScriptBuilder.core.str.match([n.MolScriptBuilder.re("non-
4209polymer|(amino|carboxy) terminus|peptide-like","i"),n.MolScriptBuilder.ammp("chemCompType")]),v=y("Backbone",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.combinator.merge([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":p,"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.logic.not([m]),"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.ProteinBackboneAtoms)),n.MolScriptBuilder.ammp("label_atom_id")])})]),n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":u,"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.logic.not([m]),"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.NucleicBackboneAtoms)),n.MolScriptBuilder.ammp("label_atom_id")])})])])]),{category:f.Structure}),b=y("Sidechain",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.combinator.merge([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":p,"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.logic.not([m]),"atom-test":n.MolScriptBuilder.core.logic.or([n.MolScriptBuilder.core.logic.not([n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.ProteinBackboneAtoms)),n.MolScriptBuilder.ammp("label_atom_id")])])])})]),n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":u,"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.logic.not([m]),"atom-test":n.MolScriptBuilder.core.logic.or([n.MolScriptBuilder.core.logic.not([n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.NucleicBackboneAtoms)),n.MolScriptBuilder.ammp("label_atom_id")])])])})])])]),{category:f.Structure}),P=y("Sidechain with Trace",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.combinator.merge([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":p,"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.logic.not([m]),"atom-test":n.MolScriptBuilder.core.logic.or([n.MolScriptBuilder.core.logic.not([n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.ProteinBackboneAtoms)),n.MolScriptBuilder.ammp("label_atom_id")])]),n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("label_atom_id"),"CA"]),n.MolScriptBuilder.core.logic.and([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("auth_comp_id"),"PRO"]),n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("label_atom_id"),"N"])])])})]),n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":u,"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.logic.not([m]),"atom-test":n.MolScriptBuilder.core.logic.or([n.MolScriptBuilder.core.logic.not([n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.NucleicBackboneAtoms)),n.MolScriptBuilder.ammp("label_atom_id")])]),n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("label_atom_id"),"P"])])})])])]),{category:f.Structure}),C=y("Protein",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":p})]),{category:f.Type}),l=y("Nucleic",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":u})]),{category:f.Type}),S=y("Helix",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":p,"residue-test":n.MolScriptBuilder.core.flags.hasA
4209ny([n.MolScriptBuilder.ammp("secondaryStructureFlags"),n.MolScriptBuilder.core.type.bitflags([r.SecondaryStructureType.Flag.Helix])])})]),{category:f.Structure,ensureCustomProperties:(ce,ue)=>h.SecondaryStructureProvider.attach(ce,ue)}),T=y("Beta Strand/Sheet",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":p,"residue-test":n.MolScriptBuilder.core.flags.hasAny([n.MolScriptBuilder.ammp("secondaryStructureFlags"),n.MolScriptBuilder.core.type.bitflags([r.SecondaryStructureType.Flag.Beta])])})]),{category:f.Structure,ensureCustomProperties:(ce,ue)=>h.SecondaryStructureProvider.attach(ce,ue)}),A=y("Water",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"water"])})]),{category:f.Type}),x=y("Ion",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entitySubtype"),"ion"])})]),{category:f.Type}),M=y("Lipid",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entitySubtype"),"lipid"])})]),{category:f.Type}),D=y("Carbohydrate",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.logic.or([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"branched"]),n.MolScriptBuilder.core.logic.and([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"non-polymer"]),n.MolScriptBuilder.core.str.match([n.MolScriptBuilder.re("oligosaccharide","i"),n.MolScriptBuilder.ammp("entitySubtype")])])])})]),{category:f.Type}),V=y("Carbohydrate with Connected",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.includeConnected({0:D.expression,"layer-count":1,"as-whole-residues":!0})]),{category:f.Internal,isHidden:!0}),R=y("Connected to Carbohydrate",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.exceptBy({0:V.expression,by:D.expression})]),{category:f.Internal,isHidden:!0}),E=y("Ligand",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.exceptBy({0:n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.combinator.merge([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.logic.and([n.MolScriptBuilder.core.logic.or([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"non-polymer"]),n.MolScriptBuilder.core.rel.neq([n.MolScriptBuilder.ammp("entityPrdId"),""])]),n.MolScriptBuilder.core.logic.not([n.MolScriptBuilder.core.str.match([n.MolScriptBuilder.re("(oligosaccharide|lipid|ion)","i"),n.MolScriptBuilder.ammp("entitySubtype")])])]),"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.logic.not([n.MolScriptBuilder.core.str.match([n.MolScriptBuilder.re("saccharide","i"),n.MolScriptBuilder.ammp("chemCompType")])])})]),n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":m})])])]),by:n.MolScriptBuilder.struct.combinator.merge([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.PolymerNames)),n.MolScriptBuilder.ammp("label_comp_id")])})]),n.MolScriptBuilder.struct.generator.atomGroups({"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.CommonProteinCaps)),n.MolScriptBuilder.ammp("label_comp_id")])})])})]),{category:f.Type}),I=y("Ligand with Connected",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.exceptBy({0:n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.includeConnected({0:E.expression,"layer-count":1,"as-whole-residues":!0,"bond-test":n.MolScriptBuilder.core.flags.hasA
4209ny([n.MolScriptBuilder.struct.bondProperty.flags(),n.MolScriptBuilder.core.type.bitflags([r.BondType.Flag.Covalent|r.BondType.Flag.MetallicCoordination])])})]),by:D.expression})]),{category:f.Internal,isHidden:!0}),B=y("Connected to Ligand",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.exceptBy({0:I.expression,by:E.expression})]),{category:f.Internal,isHidden:!0}),w=y("Connected to Ligand or Carbohydrate",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.combinator.merge([R.expression,B.expression])]),{category:f.Internal,isHidden:!0}),O=y("Disulfide Bridges",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.combinator.merge([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.wholeResidues([n.MolScriptBuilder.struct.filter.isConnectedTo({0:n.MolScriptBuilder.struct.generator.atomGroups({"residue-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("CYS"),n.MolScriptBuilder.ammp("auth_comp_id")]),"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("SG"),n.MolScriptBuilder.ammp("label_atom_id")])}),target:n.MolScriptBuilder.struct.generator.atomGroups({"residue-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("CYS"),n.MolScriptBuilder.ammp("auth_comp_id")]),"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("SG"),n.MolScriptBuilder.ammp("label_atom_id")])}),"bond-test":!0})])]),n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.wholeResidues([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.bondedAtomicPairs({0:n.MolScriptBuilder.core.flags.hasAny([n.MolScriptBuilder.struct.bondProperty.flags(),n.MolScriptBuilder.core.type.bitflags([r.BondType.Flag.Disulfide])])})])])])])]),{category:f.Bond}),F=y("NOS Bridges",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.wholeResidues([n.MolScriptBuilder.struct.filter.isConnectedTo({0:n.MolScriptBuilder.struct.generator.atomGroups({"residue-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("CSO","LYS"),n.MolScriptBuilder.ammp("auth_comp_id")]),"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("OD","NZ"),n.MolScriptBuilder.ammp("label_atom_id")])}),target:n.MolScriptBuilder.struct.generator.atomGroups({"residue-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("CSO","LYS"),n.MolScriptBuilder.ammp("auth_comp_id")]),"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("OD","NZ"),n.MolScriptBuilder.ammp("label_atom_id")])}),"bond-test":!0})])]),{category:f.Bond}),L=y("Non-standard Residues in Polymers",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.ammp("isNonStandard")})]),{category:f.Residue}),U=y("Coarse Elements",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"chain-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("sphere","gaussian"),n.MolScriptBuilder.ammp("objectPrimitive")])})]),{category:f.Type}),q=y("Rings in Residues",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.rings()]),{category:f.Residue}),N=y("Aromatic Rings in Residues",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.rings({"only-aromatic":!0})]),{category:f.Residue}),k=y("Surrounding Residues (5 Å) of Selection",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.exceptBy({0:n.MolScriptBuilder.struct.modifier.includeSurroundings({0:n.MolScriptBuilder.internal.generator.current(),radius:5,"as-whole-residues":!0}),by:n.MolScriptBuilder.internal.generator.current()})]),{description:"Select residues within 5 Å of the current selection.",category:f.Manipulate,referencesCurrent:!0}),j=y("Surrounding Ligands (5 Å) of Selection",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.surroundingLigands({0:n.MolScriptBuilder.internal.generator.current(),radius:5,"include-water":!0})]),{description:"Select ligand components within 5 Å of the current selection.",category:f.Manipulate,referencesCurrent:!0}),H=y("Surrounding Atoms (5 Å) of Selection",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.exceptBy({0:n.MolScriptBuilder.struct.modifier.includeSurroundings({0:n.MolScriptBuilder.internal.generator.current(),radius:5,"as-whole-residues":!1}),by:n.MolScriptBuilder.internal.generator.current()})]),{description:"Select atoms within 5 Å of the current selection.",category:f.Manipulate,referencesCurrent:!0}),G=y("Inverse / Complement of Selection",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.exceptBy({0:n.MolScriptBuilder.struct.generator.all(),by:n.MolScriptBuilder.internal.generator.current()})]),{description:"Select everything not in the current selection.",category:f.Manipulate,referencesCurrent:!0}),z=y("Residues Covalently Bonded to Selection",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.includeConnected({0:n.MolScriptBuilder.internal.generator.current(),"layer-count":1,"as-whole-residues":!0})]),{description:"Select residues covalently bonded to current selection.",category:f.Manipulate,referencesCurrent:!0}),W=y("Covalently Bonded Component",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.includeConnected({0:n.MolScriptBuilder.internal.generator.current(),"fixed-point":!0})]),{description:"Select covalently bonded component based on current selection.",category:f.Manipulate,referencesCurrent:!0}),X=y("Residues with Cov. or Metallic Bond to Selection",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.includeConnected({0:n.MolScriptBuilder.internal.generator.current(),"layer-count":1,"as-whole-residues":!0,"bond-test":n.MolScriptBuilder.core.flags.hasA
4209ny([n.MolScriptBuilder.struct.bondProperty.flags(),n.MolScriptBuilder.core.type.bitflags([r.BondType.Flag.Covalent|r.BondType.Flag.MetallicCoordination])])})]),{description:"Select residues with covalent or metallic bond to current selection.",category:f.Manipulate,referencesCurrent:!0}),Y=y("Whole Residues of Selection",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.wholeResidues({0:n.MolScriptBuilder.internal.generator.current()})]),{description:"Expand current selection to whole residues.",category:f.Manipulate,referencesCurrent:!0}),K=[[["HIS"],"Histidine"],[["ARG"],"Arginine"],[["LYS"],"Lysine"],[["ILE"],"Isoleucine"],[["PHE"],"Phenylalanine"],[["LEU"],"Leucine"],[["TRP"],"Tryptophan"],[["ALA"],"Alanine"],[["MET"],"Methionine"],[["PRO"],"Proline"],[["CYS"],"Cysteine"],[["ASN"],"Asparagine"],[["VAL"],"Valine"],[["GLY"],"Glycine"],[["SER"],"Serine"],[["GLN"],"Glutamine"],[["TYR"],"Tyrosine"],[["ASP"],"Aspartic Acid"],[["GLU"],"Glutamic Acid"],[["THR"],"Threonine"],[["SEC"],"Selenocysteine"],[["PYL"],"Pyrrolysine"],[["UNK"],"Unknown"]].sort((ce,ue)=>ce[1]<ue[1]?-1:ce[1]>ue[1]?1:0),Q=[[["A","DA"],"Adenosine"],[["C","DC"],"Cytidine"],[["T","DT"],"Thymidine"],[["G","DG"],"Guanosine"],[["I","DI"],"Inosine"],[["U","DU"],"Uridine"],[["N","DN"],"Unknown"]].sort((ce,ue)=>ce[1]<ue[1]?-1:ce[1]>ue[1]?1:0);function J([ce,ue],pe,he=0){const fe=ce.length===1&&!ne.has(ce[0])?`[${ce[0]}] ${ue}`:`${ue} (${ce.join(", ")})`;return y(fe,n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"residue-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...ce),n.MolScriptBuilder.ammp("auth_comp_id")])})]),{category:pe,priority:he,description:fe})}function ae([ce,ue],pe,he){const fe=`${ue} (${ce.join(", ")})`;return y(fe,n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...ce),n.MolScriptBuilder.acp("elementSymbol")])})]),{category:pe,priority:he,description:fe})}function te([ce,ue],pe,he){const fe=`${ue}`;return y(`${ue}`,n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.list.equal([n.MolScriptBuilder.list(...ce),n.MolScriptBuilder.ammp("entityDescription")])})]),{category:pe,priority:he,description:fe})}const ne=c.SetUtils.unionMany(r.AminoAcidNamesL,r.RnaBaseNames,r.DnaBaseNames,r.WaterNames);function $(ce){const ue=new Set;for(const he of ce)he.uniqueElementSymbols.forEach(fe=>ue.add(fe));const pe=[];return ue.forEach(he=>{const fe=s.ElementNames[he]||he;pe.push(ae([[he],fe],"Element Symbol",0))}),pe}function ie(ce){const ue=new Map,pe=new Set;for(const fe of ce){fe.uniqueResidueNames.forEach(de=>pe.add(de));for(const de of fe.models)fe.uniqueResidueNames.forEach(ge=>{const Ce=de.properties.chemicalComponentMap.get(ge);Ce&&ue.set(ge,Ce.name)})}const he=[];return c.SetUtils.difference(pe,ne).forEach(fe=>{const de=ue.get(fe)||fe;he.push(J([[fe],de],"Ligand/Non-standard Residue",200))}),he}function Z(ce){const ue=new Map,pe=t.StructureElement.Location.create();for(const fe of ce){pe.structure=fe;for(const de of fe.unitSymmetryGroups){pe.unit=de.units[0],pe.element=de.elements[0];const ge=t.StructureProperties.entity.type(pe);if(ge==="polymer"||ge==="branched"){const Ce=t.StructureProperties.entity.pdbx_description(pe);ue.set(Ce.join(", "),Ce)}}}const he=[];return ue.forEach((fe,de)=>{he.push(te([fe,de],"Polymer/Carbohydrate Entities",300))}),he}function re(ce,ue,pe){return ce.apply(o.StateTransforms.Model.StructureSelectionFromExpression,{expression:e.StructureSelectionQueries[ue].expression,label:e.StructureSelectionQueries[ue].label},{tags:pe?[ue,pe]:[ue]})}e.StructureSelectionQueries={all:_,current:g,polymer:a,trace:d,backbone:v,sidechain:b,sidechainWithTrace:P,protein:C,nucleic:l,helix:S,beta:T,water:A,ion:x,lipid:M,branched:D,branchedPlusConnected:V,branchedConnectedOnly:R,ligand:E,ligandPlusConnected:I,ligandConnectedOnly:B,connectedOnly:w,disulfideBridges:O,nosBridges:F,nonStandardPolymer:L,coarse:U,ring:q,aromaticRing:N,surroundings:k,surroundingLigands:j,surroundingAtoms:H,complement:G,covalentlyBonded:z,covalentlyOrMetallicBonded:X,covalentlyBondedComponent:W,wholeResidues:Y};class oe{add(ue){this.list.push(ue),this.options.push([ue,ue.label,ue.category]),this.version+=1}remove(ue){const pe=this.list.indexOf(ue);pe!==-1&&(this.list.splice(pe,1),this.options.splice(pe,1),this.version+=1)}constructor(){this.list=[],this.options=[],this.version=1,this.list.push(...Object.values(e.StructureSelectionQueries),...
4209K.map(ue=>J(ue,f.AminoAcid)),...Q.map(ue=>J(ue,f.NucleicBase))),this.options.push(...this.list.map(ue=>[ue,ue.label,ue.category]))}}e.StructureSelectionQueryRegistry=oe})(Y3)),Y3}var w6;function doe(){return w6||(w6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ExternalStructureColorThemeProvider=e.ExternalStructureColorThemeParams=void 0,e.ExternalStructureColorTheme=P;const t=vt(),r=Ne(),n=zt(),i=Ut(),c=l2(),o=jt(),s=Ke(),h=Uf(),f=ES(),y=BS(),_=s2(),g=RS(),a=OS(),d=Gt(),p=VT(),u=jl(),m=wt(),v="Assigns a color based on structure property at a given vertex.";e.ExternalStructureColorThemeParams={structure:r.ParamDefinition.ValueRef(C=>C.state.data.select(c.StateSelection.Generators.rootsOfType(o.PluginStateObject.Molecule.Structure)).filter(S=>{var T;return(T=S.obj)===null||T===void 0?void 0:T.data}).map(S=>{var T,A;return[S.transform.ref,(A=(T=S.obj)===null||T===void 0?void 0:T.label)!==null&&A!==void 0?A:"<unknown>"]}),(C,l)=>l(C)),style:r.ParamDefinition.MappedStatic("chain-id",{"chain-id":r.ParamDefinition.Group(h.ChainIdColorThemeParams),"entity-id":r.ParamDefinition.Group(f.EntityIdColorThemeParams),"entity-source":r.ParamDefinition.Group(y.EntitySourceColorThemeParams),"molecule-type":r.ParamDefinition.Group(_.MoleculeTypeColorThemeParams),"model-index":r.ParamDefinition.Group(g.ModelIndexColorThemeParams),"structure-index":r.ParamDefinition.Group(a.StructureIndexColorThemeParams)}),defaultColor:r.ParamDefinition.Color((0,t.Color)(13421772)),maxDistance:r.ParamDefinition.Numeric(8,{min:.1,max:24,step:.1},{description:"Maximum distance to search for the nearest structure element. This is done only if the approximate search fails."}),approxMaxDistance:r.ParamDefinition.Numeric(4,{min:0,max:12,step:.1},{description:"Maximum distance to search for an approximately nearest structure element. This is done before the extact search."}),normalOffset:r.ParamDefinition.Numeric(0,{min:-10,max:20,step:.1},{description:"Offset vertex position along its normal by given amount."}),backboneOnly:r.ParamDefinition.Boolean(!1)};function b(C,l){switch(l.name){case"chain-id":return(0,h.ChainIdColorTheme)(C,l.params);case"entity-id":return(0,f.EntityIdColorTheme)(C,l.params);case"entity-source":return(0,y.EntitySourceColorTheme)(C,l.params);case"molecule-type":return(0,_.MoleculeTypeColorTheme)(C,l.params);case"model-index":return(0,g.ModelIndexColorTheme)(C,l.params);case"structure-index":return(0,a.StructureIndexColorTheme)(C,l.params);default:(0,d.assertUnreachable)(l)}}function P(C,l){let S;try{S=l.structure.getValue()}catch{}let T,A,x;const{maxDistance:M,approxMaxDistance:D,normalOffset:V,defaultColor:R,backboneOnly:E}=l;if(S){const I=b({...C,structure:S},l.style),B=(0,p.StructureLookup3DResultContext)(),w=(0,p.StructureLookup3DResultContext)();let O=S;E&&(O=s.StructureSelection.unionStructure(u.StructureSelectionQueries.backbone.query(new s.QueryContext(S))));const F=(0,m.Vec3)(),L=s.StructureElement.Location.create(O);T=(U,q)=>{if(!(0,n.isPositionLocation)(U))return R;V!==0?m.Vec3.scaleAndAdd(F,U.position,U.normal,V):m.Vec3.copy(F,U.position);const[N,k,j]=F;if(D>0){const G=O.lookup3d.approxNearest(N,k,j,D,B);if(G.count>0)return L.unit=G.units[0],L.element=L.unit.elements[G.indices[0]],I.color(L,q)}const H=O.lookup3d.find(N,k,j,M,w);if(H.count>0){let G=0,z=H.squaredDistances[0];for(let W=1;W<H.count;++W)H.squaredDistances[W]<z&&(z=H.squaredDistances[W],G=W);return L.unit=H.units[G],L.element=L.unit.elements[H.indices[G]],I.color(L,q)}return R},A=I.contextHash,x=I.legend}else T=()=>R;return{factory:P,granularity:"vertex",preferSmoothing:!0,color:T,props:l,contextHash:A,description:v,legend:x}}e.ExternalStructureColorThemeProvider={name:"external-structure",label:"External Structure",category:i.ColorThemeCategory.Misc,factory:P,getParams:()=>e.ExternalStructureColorThemeParams,defaultValues:r.ParamDefinition.getDefaultValues(e.ExternalStructureColorThemeParams),isApplicable:C=>!0}})(K3)),K3}var gA={},V6;function foe(){return V6||(V6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.VolumeInstanceColorThemeProvider=e.VolumeInstanceColorThemeParams=void 0,e.getVolumeInstanceColorThemeParams=y,e.VolumeInstanceColorTheme=_;const t=vt(),r=Ne(),n=On(),i=pa(),c=Ut(),o=oc(),s="dark-2",h=(0,t.Color)(13421772),f="Gives every volume instance a unique color based on the position (index) of the instance in the list of instances of the volume.";
4209e.VolumeInstanceColorThemeParams={...(0,n.getPaletteParams)({type:"colors",colorList:s})};function y(g){const a=r.ParamDefinition.clone(e.VolumeInstanceColorThemeParams);return g.volume&&g.volume.instances.length>i.ColorLists[s].list.length&&(a.palette.defaultValue.name="colors",a.palette.defaultValue.params={...a.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,i.getColorListFromName)(s).list}}),a}function _(g,a){let d,p;if(g.volume){const u=(0,n.getPalette)(g.volume.instances.length,a);p=u.legend;const m=o.Volume.Cell.isLocation;d=v=>m(v)?u.color(v.instance):h}else d=()=>h;return{factory:_,granularity:"instance",color:d,props:a,description:f,legend:p}}e.VolumeInstanceColorThemeProvider={name:"volume-instance",label:"Volume Instance",category:c.ColorThemeCategory.Misc,factory:_,getParams:y,defaultValues:r.ParamDefinition.getDefaultValues(e.VolumeInstanceColorThemeParams),isApplicable:g=>!!g.volume}})(gA)),gA}var E6;function ms(){if(E6)return hd;E6=1,Object.defineProperty(hd,"__esModule",{value:!0}),hd.ColorTheme=void 0,hd.ColorThemeProvider=j;const e=vt(),t=Lne(),r=wS(),n=et(),i=ea(),c=Uf(),o=Nne(),s=mQ(),h=s2(),f=qne(),y=Une(),_=pQ(),g=jne(),a=hQ(),d=gQ(),p=CQ(),u=fQ(),m=PQ(),v=BS(),b=nie(),P=TQ(),C=o2(),l=xQ(),S=a2(),T=iie(),A=AQ(),x=aie(),M=ES(),D=oie(),V=RS(),R=OS(),E=sie(),I=die(),B=Ut(),w=fie(),O=mie(),F=doe(),L=Df(),U=Na(),q=ir(),N=foe();var k;(function(H){H.Category=B.ColorThemeCategory;function G(Y,K,Q,J){const ae=[];if(Y.every(ne=>Array.isArray(ne))){let ne=0;for(const ue of Y)if(Array.isArray(ue)){const pe=(0,L.getPrecision)(ue[1]);pe>ne&&(ne=pe)}const $=Math.pow(10,ne),ie=[...Y];ie.sort((ue,pe)=>ue[1]-pe[1]);const Z=ie.map(ue=>ue[0]),re=U.SortedArray.ofSortedArray(ie.map(ue=>ue[1])),oe=[];for(let ue=0,pe=re.length-1;ue<pe;++ue)oe.push(re[ue]+(re[ue+1]-re[ue])/2);oe.push(re[re.length-1]);const ce=U.SortedArray.ofSortedArray(oe);for(let ue=0,pe=Math.max($,Y.length);ue<pe;++ue){const he=(0,q.normalize)(ue,0,$-1),fe=U.SortedArray.findPredecessorIndex(ce,he);ae[ue]=Z[fe]}}else for(const ne of Y)Array.isArray(ne)?ae.push(ne[0]):ae.push(ne);return{colors:ae,filter:K==="set"?"nearest":"linear",domain:Q,defaultColor:J}}H.Palette=G,H.PaletteScale=(1<<24)-2,H.EmptyFactory=()=>H.Empty;const z=(0,e.Color)(13421772);H.Empty={factory:H.EmptyFactory,granularity:"uniform",color:()=>z,props:{}};function W(Y,K){return Y.contextHash===K.contextHash&&Y.factory===K.factory&&(0,n.deepEqual)(Y.props,K.props)}H.areEqual=W,H.EmptyProvider={name:"",label:"",category:"",factory:H.EmptyFactory,getParams:()=>({}),defaultValues:{},isApplicable:()=>!0};function X(){return new i.ThemeRegistry(H.BuiltIn,H.EmptyProvider)}H.createRegistry=X,H.BuiltIn={"atom-id":x.AtomIdColorThemeProvider,"carbohydrate-symbol":t.CarbohydrateSymbolColorThemeProvider,cartoon:w.CartoonColorThemeProvider,"chain-id":c.ChainIdColorThemeProvider,"element-index":o.ElementIndexColorThemeProvider,"element-symbol":s.ElementSymbolColorThemeProvider,"entity-id":M.EntityIdColorThemeProvider,"entity-source":v.EntitySourceColorThemeProvider,"external-structure":F.ExternalStructureColorThemeProvider,"external-volume":I.ExternalVolumeColorThemeProvider,"formal-charge":O.FormalChargeColorThemeProvider,hydrophobicity:P.HydrophobicityColorThemeProvider,illustrative:b.IllustrativeColorThemeProvider,"model-index":V.ModelIndexColorThemeProvider,"molecule-type":h.MoleculeTypeColorThemeProvider,occupancy:l.OccupancyColorThemeProvider,"operator-hkl":T.OperatorHklColorThemeProvider,"operator-name":S.OperatorNameColorThemeProvider,"partial-charge":A.PartialChargeColorThemeProvider,"polymer-id":f.PolymerIdColorThemeProvider,"polymer-index":y.PolymerIndexColorThemeProvider,"residue-charge":g.ResidueChargeColorThemeProvider,"residue-name":_.ResidueNameColorThemeProvider,"secondary-structure":a.SecondaryStructureColorThemeProvider,"sequence-id":d.SequenceIdColorThemeProvider,"shape-group":p.ShapeGroupColorThemeProvider,"structure-index":R.StructureIndexColorThemeProvider,"trajectory-index":C.TrajectoryIndexColorThemeProvider,uncertainty:m.UncertaintyColorThemeProvider,"unit-index":u.UnitIndexColorThemeProvider,uniform:r.UniformColorThemeProvider,"volume-instance":N.VolumeInstanceColorThemeProvider,"volume-segment":E.
4209VolumeSegmentColorThemeProvider,"volume-value":D.VolumeValueColorThemeProvider}})(k||(hd.ColorTheme=k={}));function j(H){return H}return hd}var Vv={},yA={},B6;function moe(){return B6||(B6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PhysicalSizeThemeProvider=e.PhysicalSizeThemeParams=void 0,e.getPhysicalSizeThemeParams=o,e.getPhysicalRadius=s,e.PhysicalSizeTheme=h;const t=Ke(),r=ma(),n=Ne(),i=1,c="Assigns a physical size, i.e. vdW radius for atoms or given radius for coarse spheres.";e.PhysicalSizeThemeParams={scale:n.ParamDefinition.Numeric(1,{min:.1,max:5,step:.1})};function o(f){return e.PhysicalSizeThemeParams}function s(f,y){return t.Unit.isAtomic(f)?(0,r.VdwRadius)(f.model.atomicHierarchy.atoms.type_symbol.value(y)):t.Unit.isSpheres(f)?f.model.coarseConformation.spheres.radius[y]:0}function h(f,y){const _=y.scale===void 0?1:y.scale;function g(a){let d;return t.StructureElement.Location.is(a)?d=_*s(a.unit,a.element):t.Bond.isLocation(a)?d=_*Math.min(s(a.aUnit,a.aUnit.elements[a.aIndex]),s(a.bUnit,a.bUnit.elements[a.bIndex])):d=_*i,d}return{factory:h,granularity:"group",size:g,props:y,description:c}}e.PhysicalSizeThemeProvider={name:"physical",label:"Physical",category:"",factory:h,getParams:o,defaultValues:n.ParamDefinition.getDefaultValues(e.PhysicalSizeThemeParams),isApplicable:f=>!!f.structure}})(yA)),yA}var vA={},R6;function poe(){return R6||(R6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.UncertaintySizeThemeProvider=e.UncertaintySizeThemeParams=void 0,e.getUncertaintySizeThemeParams=i,e.getUncertainty=c,e.UncertaintySizeTheme=o;const t=Ke(),r=Ne(),n="Assigns a size reflecting the uncertainty or disorder of an element's position, e.g. B-factor or RMSF, depending on the data availability and experimental technique.";e.UncertaintySizeThemeParams={bfactorFactor:r.ParamDefinition.Numeric(.1,{min:0,max:1,step:.01}),rmsfFactor:r.ParamDefinition.Numeric(.05,{min:0,max:1,step:.01}),baseSize:r.ParamDefinition.Numeric(.2,{min:0,max:2,step:.1})};function i(s){return e.UncertaintySizeThemeParams}function c(s,h,f){return t.Unit.isAtomic(s)?s.model.atomicConformation.B_iso_or_equiv.value(h)*f.bfactorFactor:t.Unit.isSpheres(s)?s.model.coarseConformation.spheres.rmsf[h]*f.rmsfFactor:0}function o(s,h){function f(y){let _=h.baseSize;return t.StructureElement.Location.is(y)?_+=c(y.unit,y.element,h):t.Bond.isLocation(y)&&(_+=c(y.aUnit,y.aUnit.elements[y.aIndex],h)),_}return{factory:o,granularity:"group",size:f,props:h,description:n}}e.UncertaintySizeThemeProvider={name:"uncertainty",label:"Uncertainty/Disorder",category:"",factory:o,getParams:i,defaultValues:r.ParamDefinition.getDefaultValues(e.UncertaintySizeThemeParams),isApplicable:s=>!!s.structure&&s.structure.models.some(h=>h.atomicConformation.B_iso_or_equiv.isDefined||h.coarseHierarchy.isDefined)}})(vA)),vA}var bA={},O6;function hoe(){return O6||(O6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.VolumeValueSizeThemeProvider=e.VolumeValueSizeThemeParams=void 0,e.getVolumeValueSizeThemeParams=s,e.VolumeValueSizeTheme=h;const t=Ne(),r=oc(),n=zt(),i=zf(),c=ir(),o="Assign size based on the given value of a volume cell.";e.VolumeValueSizeThemeParams={scale:t.ParamDefinition.Numeric(1,{min:.01,max:10,step:.01}),transform:t.ParamDefinition.Select("linear",[["linear","Linear"],["quadratic","Quadratic"],["cubic","Cubic"]],{description:"Linear: value * scale, Quadratic: value * scale^2, Cubic: value * scale^3"}),domain:t.ParamDefinition.MappedStatic("auto",{custom:t.ParamDefinition.Interval([0,1],{step:.001,min:0}),auto:t.ParamDefinition.Group({})})};function s(f){return e.VolumeValueSizeThemeParams}function h(f,y){var _;if(f.volume){const{min:g,max:a}=f.volume.grid.stats,d=y.domain.name==="custom"?y.domain.params:[g,a],p=y.transform==="cubic"?y.scale**3:y.transform==="quadratic"?y.scale**2:y.scale;if(!((_=f.locationKinds)===null||_===void 0)&&_.includes("cell-location")){const{data:u}=f.volume.grid.cells,m=r.Volume.Cell.isLocation;return{factory:h,granularity:"group",size:b=>m(b)?(0,c.clamp)(Math.abs(u[b.cell]),d[0],d[1])*p:0,props:y,description:o}}
4209else{const u=i.Grid.makeGetTrilinearlyInterpolated(f.volume.grid,"none");return{factory:h,granularity:"vertex",size:v=>{if((0,n.isPositionLocation)(v)){const b=u(v.position);return Number.isNaN(b)?0:(0,c.clamp)(Math.abs(b),d[0],d[1])*p}else return 0},props:y,description:o}}}else return{factory:h,granularity:"uniform",size:()=>y.scale,props:y,description:o}}e.VolumeValueSizeThemeProvider={name:"volume-value",label:"Volume Value",category:"",factory:h,getParams:s,defaultValues:t.ParamDefinition.getDefaultValues(e.VolumeValueSizeThemeParams),isApplicable:f=>!!f.volume&&!r.Volume.Segmentation.get(f.volume)}})(bA)),bA}var k6;function ps(){if(k6)return Vv;k6=1,Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.SizeTheme=void 0;const e=yQ(),t=ea(),r=moe(),n=et(),i=_Q(),c=poe(),o=hoe();var s;return(function(h){h.EmptyFactory=()=>h.Empty,h.Empty={factory:h.EmptyFactory,granularity:"uniform",size:()=>1,props:{}};function f(_,g){return _.contextHash===g.contextHash&&_.factory===g.factory&&(0,n.deepEqual)(_.props,g.props)}h.areEqual=f,h.EmptyProvider={name:"",label:"",category:"",factory:h.EmptyFactory,getParams:()=>({}),defaultValues:{},isApplicable:()=>!0};function y(){return new t.ThemeRegistry(h.BuiltIn,h.EmptyProvider)}h.createRegistry=y,h.BuiltIn={physical:r.PhysicalSizeThemeProvider,"shape-group":i.ShapeGroupSizeThemeProvider,uncertainty:c.UncertaintySizeThemeProvider,uniform:e.UniformSizeThemeProvider,"volume-value":o.VolumeValueSizeThemeProvider}})(s||(Vv.SizeTheme=s={})),Vv}var F6;function ea(){if(F6)return gu;F6=1,Object.defineProperty(gu,"__esModule",{value:!0}),gu.ThemeRegistry=gu.Theme=void 0;const e=ms(),t=ps(),r=Ne(),n=vr();var i;(function(s){function h(g,a,d,p){p=p||f();const u=d.colorTheme,m=d.sizeTheme;return p.color=g.colorThemeRegistry.create(u.name,a,u.params),p.size=g.sizeThemeRegistry.create(m.name,a,m.params),p}s.create=h;function f(){return{color:e.ColorTheme.Empty,size:t.SizeTheme.Empty}}s.createEmpty=f;async function y(g,a,d,p){var u,m;await((u=a.colorThemeRegistry.get(p.colorTheme.name).ensureCustomProperties)===null||u===void 0?void 0:u.attach(g,d)),await((m=a.sizeThemeRegistry.get(p.sizeTheme.name).ensureCustomProperties)===null||m===void 0?void 0:m.attach(g,d))}s.ensureDependencies=y;function _(g,a,d){var p,u;(p=g.colorThemeRegistry.get(d.colorTheme.name).ensureCustomProperties)===null||p===void 0||p.detach(a),(u=g.sizeThemeRegistry.get(d.sizeTheme.name).ensureCustomProperties)===null||u===void 0||u.detach(a)}s.releaseDependencies=_})(i||(gu.Theme=i={}));function c(s){return s.map(h=>[h.name,h.provider.label,h.provider.category])}class o{get default(){return this._list[0]}get list(){return this._list}get types(){return c(this._list)}constructor(h,f){this.emptyProvider=f,this._list=[],this._map=new Map,this._name=new Map,(0,n.objectForEach)(h,(y,_)=>{if(y.name!==_)throw new Error(`Fix build in themes to have matching names. ${y.name} ${_}`);this.add(y)})}sort(){this._list.sort((h,f)=>h.provider.category===f.provider.category?h.provider.label<f.provider.label?-1:h.provider.label>f.provider.label?1:0:h.provider.category<f.provider.category?-1:1)}add(h){if(this._map.has(h.name))throw new Error(`${h.name} already registered.`);const f=h.name;this._list.push({name:f,provider:h}),this._map.set(f,h),this._name.set(h,f),this.sort()}remove(h){this._list.splice(this._list.findIndex(y=>y.name===h.name),1);const f=this._map.get(h.name);f&&(this._map.delete(h.name),this._name.delete(f))}has(h){return this._map.has(h.name)}get(h){return this._map.get(h)||this.emptyProvider}getName(h){if(!this._name.has(h))throw new Error(`'${h.label}' is not a registered theme provider.`);return this._name.get(h)}create(h,f,y={}){const _=this.get(h);return _.factory(f,{...r.ParamDefinition.getDefaultValues(_.getParams(f)),...y})}getApplicableList(h){return this._list.filter(f=>f.provider.isApplicable(h))}getApplicableTypes(h){return c(this.getApplicableList(h))}clear(){this._list.length=0,this._map.clear(),this._name.clear()}}return gu.ThemeRegistry=o,gu}var L6;function Lt(){return L6||(L6=1,(function(e){Object.defineProperty(e,"__esMo
4209dule",{value:!0}),e.Representation=e.RepresentationRegistry=e.EmptyRepresentationProvider=e.RepresentationProvider=void 0;const t=Ne(),r=ea(),n=Rn(),i=nt(),c=cn(),o=gt(),s=US(),h=jS(),f=Ge(),y=ql(),_=Tt(),g=Ul(),a=Yf(),d=Hi(),p=_t(),u=zS(),m=HS(),v=WS();var b;(function(T){function A(x,M,D){return t.ParamDefinition.getDefaultValues(x.getParams(M,D))}T.getDefaultParams=A})(b||(e.RepresentationProvider=b={})),e.EmptyRepresentationProvider={name:"",label:"",description:"",factory:()=>l.Empty,getParams:()=>({}),defaultValues:{},defaultColorTheme:{name:""},defaultSizeTheme:{name:""},isApplicable:()=>!0};function P(T){return T.map(A=>[A.name,A.provider.label])}class C{get default(){return this._list[0]}get types(){return P(this._list)}constructor(){this._list=[],this._map=new Map,this._name=new Map}add(A){if(this._map.has(A.name))throw new Error(`${A.name} already registered.`);this._list.push({name:A.name,provider:A}),this._map.set(A.name,A),this._name.set(A,A.name)}getName(A){if(!this._name.has(A))throw new Error(`'${A.label}' is not a registered represenatation provider.`);return this._name.get(A)}remove(A){const x=A.name;this._list.splice(this._list.findIndex(D=>D.name===x),1);const M=this._map.get(x);M&&(this._map.delete(x),this._name.delete(M))}get(A){return this._map.get(A)||e.EmptyRepresentationProvider}get list(){return this._list}getApplicableList(A){return this._list.filter(x=>x.provider.isApplicable(A))}getApplicableTypes(A){return P(this.getApplicableList(A))}clear(){this._list.length=0,this._map.clear(),this._name.clear()}}e.RepresentationRegistry=C;var l;(function(T){(function(E){function I(w,O){return w.repr===O.repr&&o.Loci.areEqual(w.loci,O.loci)}E.areEqual=I;function B(w){return o.Loci.isEmpty(w.loci)}E.isEmpty=B,E.Empty={loci:o.EmptyLoci}})(T.Loci||(T.Loci={}));function A(){return{visible:!0,alphaFactor:1,pickable:!0,colorOnly:!1,syncManually:!1,transform:f.Mat4.identity(),overpaint:s.Overpaint.Empty,transparency:h.Transparency.Empty,emissive:m.Emissive.Empty,substance:u.Substance.Empty,wiggle:v.Wiggle.Empty,clipping:a.Clipping.Empty,themeStrength:{overpaint:1,transparency:1,emissive:1,substance:1,wiggle:1},markerActions:c.MarkerActions.All}}T.createState=A;function x(E,I){I.visible!==void 0&&(E.visible=I.visible),I.alphaFactor!==void 0&&(E.alphaFactor=I.alphaFactor),I.pickable!==void 0&&(E.pickable=I.pickable),I.colorOnly!==void 0&&(E.colorOnly=I.colorOnly),I.overpaint!==void 0&&(E.overpaint=I.overpaint),I.transparency!==void 0&&(E.transparency=I.transparency),I.emissive!==void 0&&(E.emissive=I.emissive),I.substance!==void 0&&(E.substance=I.substance),I.wiggle!==void 0&&(E.wiggle=I.wiggle),I.clipping!==void 0&&(E.clipping=I.clipping),I.themeStrength!==void 0&&(E.themeStrength=I.themeStrength),I.syncManually!==void 0&&(E.syncManually=I.syncManually),I.transform!==void 0&&f.Mat4.copy(E.transform,I.transform),I.markerActions!==void 0&&(E.markerActions=I.markerActions)}T.updateState=x,T.StateBuilder={create:A,update:x};function M(){return{label:"",groupCount:0,renderObjects:[],geometryVersion:-1,props:{},params:{},updated:new n.Subject,state:A(),theme:r.Theme.createEmpty(),createOrUpdate:()=>i.Task.constant("",void 0),setState:()=>{},setTheme:()=>{},getLoci:()=>o.EmptyLoci,getAllLoci:()=>[],eachLocation:()=>{},mark:()=>!1,destroy:()=>{}}}T.createEmpty=M;class D{constructor(){this.curr=new Set,this.next=new Set,this._version=-1}get version(){return this._version}add(I,B){this.next.add((0,p.cantorPairing)(I,B))}snapshot(){d.SetUtils.areEqual(this.curr,this.next)||(this._version+=1),[this.curr,this.next]=[this.next,this.curr],this.next.clear()}}T.GeometryState=D;function V(E,I,B,w,O){let F=0;const L=new n.Subject,U=new D,q=w.create();let N=r.Theme.createEmpty(),k,j,H;const G={},z=Object.keys(O).map((W,X)=>{G[X]=W;const Y=O[W](I,B);return Y.setState(q),Y});return{label:E,updated:L,get groupCount(){let W=0;if(j){const{visuals:X}=j;for(let Y=0,K=z.length;Y<K;++Y)(!X||X.includes(G[Y]))&&(W+=z[Y].groupCount)}return W},get renderObjects(){const W=[];if(j){const{visuals:X}=j;for(let Y=0,K=z.length;Y<K;++Y)(!X||X.includes(G[Y]))&&W.push(...z[Y].renderObjects)}return W},get geometryVersion(){return U.version},get props(){return j},get params(){return k},createOrUpdate:(W={},X)=>
4209{X&&X!==H&&(k=B(I,X),H=X,j||(j=t.ParamDefinition.getDefaultValues(k)));const Y=(0,y.getQualityProps)(Object.assign({},j,W),H);Object.assign(j,W,Y);const{visuals:K}=j;return i.Task.create(`Creating or updating '${E}' representation`,async Q=>{for(let J=0,ae=z.length;J<ae;++J)(!K||K.includes(G[J]))&&await z[J].createOrUpdate(j,H).runInContext(Q),U.add(J,z[J].geometryVersion);U.snapshot(),L.next(F++)})},get state(){return q},get theme(){return N},getLoci:W=>{const{visuals:X}=j;for(let Y=0,K=z.length;Y<K;++Y)if(!X||X.includes(G[Y])){const Q=z[Y].getLoci(W);if(!(0,o.isEmptyLoci)(Q))return Q}return o.EmptyLoci},getAllLoci:()=>{const W=[],{visuals:X}=j;for(let Y=0,K=z.length;Y<K;++Y)(!X||X.includes(G[Y]))&&W.push(...z[Y].getAllLoci());return W},eachLocation:W=>{const{visuals:X}=j;for(let Y=0,K=z.length;Y<K;++Y)(!X||X.includes(G[Y]))&&z[Y].eachLocation(W)},mark:(W,X)=>{let Y=!1;for(let K=0,Q=z.length;K<Q;++K)Y=z[K].mark(W,X)||Y;return Y},setState:W=>{w.update(q,W);for(let X=0,Y=z.length;X<Y;++X)z[X].setState(W)},setTheme:W=>{N=W;for(let X=0,Y=z.length;X<Y;++X)z[X].setTheme(W)},destroy(){for(let W=0,X=z.length;W<X;++W)z[W].destroy()}}}T.createMulti=V;function R(E,I){let B=0;const w=new n.Subject,O=new D,F=T.createState(),L=r.Theme.createEmpty(),U=t.ParamDefinition.clone(_.BaseGeometry.Params),q=t.ParamDefinition.getDefaultValues(_.BaseGeometry.Params);return{label:E,updated:w,get groupCount(){return I.values.uGroupCount.ref.value},get renderObjects(){return[I]},get geometryVersion(){return O.version},get props(){return q},get params(){return U},createOrUpdate:(N={})=>{const k=(0,y.getQualityProps)(Object.assign({},q,N));return Object.assign(q,N,k),i.Task.create(`Updating '${E}' representation`,async j=>{O.add(0,I.id),O.snapshot(),w.next(B++)})},get state(){return F},get theme(){return L},getLoci:()=>o.EmptyLoci,getAllLoci:()=>[],eachLocation:()=>{},mark:(N,k)=>!1,setState:N=>{N.visible!==void 0&&g.Visual.setVisibility(I,N.visible),N.alphaFactor!==void 0&&g.Visual.setAlphaFactor(I,N.alphaFactor),N.pickable!==void 0&&g.Visual.setPickable(I,N.pickable),N.colorOnly!==void 0&&g.Visual.setColorOnly(I,N.colorOnly),N.overpaint,N.transparency,N.emissive,N.substance,N.wiggle,N.clipping,N.themeStrength!==void 0&&g.Visual.setThemeStrength(I,N.themeStrength),N.transform!==void 0&&g.Visual.setTransform(I,N.transform),T.updateState(F,N)},setTheme:()=>{},destroy(){}}}T.fromRenderObject=R})(l||(e.Representation=l={}));let S;Object.defineProperty(l,"Empty",{get:()=>S??(S=l.createEmpty())})})(Wx)),Wx}var Ev={},Bv={},N6;function goe(){if(N6)return Bv;N6=1,Object.defineProperty(Bv,"__esModule",{value:!0}),Bv.Object3D=void 0;const e=Xr(),t=wt();var r;return(function(n){function i(){return{view:e.Mat4.identity(),position:t.Vec3.create(0,0,0),direction:t.Vec3.create(0,0,-1),up:t.Vec3.create(0,1,0)}}n.create=i})(r||(Bv.Object3D=r={})),Bv}var Rv={},q6;function yoe(){if(q6)return Rv;q6=1,Object.defineProperty(Rv,"__esModule",{value:!0}),Rv.CommitQueue=void 0;const e=zD();class t{constructor(){this.removeList=(0,e.LinkedList)(),this.removeMap=new Map,this.addList=(0,e.LinkedList)(),this.addMap=new Map}get isEmpty(){return this.removeList.count===0&&this.addList.count===0}get size(){return this.removeMap.size+this.addMap.size}add(n){if(this.removeMap.has(n)){const c=this.removeMap.get(n);this.removeMap.delete(n),this.removeList.remove(c)}if(this.addMap.has(n))return;const i=this.addList.addLast(n);this.addMap.set(n,i)}remove(n){if(this.addMap.has(n)){const c=this.addMap.get(n);this.addMap.delete(n),this.addList.remove(c)}if(this.removeMap.has(n))return;const i=this.removeList.addLast(n);this.removeMap.set(n,i)}tryGetRemove(){const n=this.removeList.removeFirst();return n&&this.removeMap.delete(n),n}tryGetAdd(){const n=this.addList.removeFirst();return n&&this.addMap.delete(n),n}}return Rv.CommitQueue=t,Rv}var U6;function f2(){if(U6)return Ev;U6=1,Object.defineProperty(Ev,"__esModule",{value:!0}),Ev.Scene=void 0;const e=ds(),t=goe(),r=ja(),n=yoe(),i=ci(),c=Vt(),o=Ki(),s=_t(),h=ir(),f=Kr(),y=new o.BoundaryHelper("98");function _(d,p,u){y.reset();for(let m=0,v=d.length;m<v;++m){if(u&&!d[m].state.visible||!d[m].values.drawCount.ref.value)continue;const b=d[m].values.boundingSphere.ref.value;
4209b.radius&&y.includeSphere(b)}y.finishedIncludeStep();for(let m=0,v=d.length;m<v;++m){if(u&&!d[m].state.visible||!d[m].values.drawCount.ref.value)continue;const b=d[m].values.boundingSphere.ref.value;b.radius&&y.radiusSphere(b)}return y.getSphere(p)}function g(d,p){const u=d.getProgram("color").id,m=p.getProgram("color").id,v=d.materialId,b=p.materialId;return u!==m?u-m:v!==b?v-b:d.id-p.id}var a;return(function(d){function p(u,m="blended",v={dColorMarker:!0,dLightCount:1}){const b=new Map,P=[],C=(0,r.Sphere3D)(),l=(0,r.Sphere3D)(),S=[],T=[];let A=!0,x=!0,M=!0,D=!0,V=!0,R=!0,E=!0,I=!0,B=!0,w=0,O=0,F=0,L=0,U=0,q=!1,N=!1;const k=t.Object3D.create(),{view:j,position:H,direction:G,up:z}=k;function W(ue){if(b.has(ue))console.warn(`RenderObject with id '${ue.id}' already present`);else{const pe=(0,e.createRenderable)(u,ue,m,v);P.push(pe),ue.type==="direct-volume"?T.push(pe):S.push(pe),b.set(ue,pe),A=!0,x=!0}}function X(ue){const pe=b.get(ue);pe&&(pe.dispose(),(0,c.arraySetRemove)(P,pe),(0,c.arraySetRemove)(S,pe),(0,c.arraySetRemove)(T,pe),b.delete(ue),A=!0,x=!0)}const Y=100;function K(ue){const pe=(0,i.now)();let he=0;for(;;){const fe=Q.tryGetRemove();if(!fe)break;if(X(fe),++he%Y===0&&(0,i.now)()-pe>ue)return!1}for(;;){const fe=Q.tryGetAdd();if(!fe)break;if(W(fe),++he%Y===0&&(0,i.now)()-pe>ue)return!1}return P.sort(g),M=!0,D=!0,V=!0,R=!0,E=!0,I=!0,B=!0,!0}const Q=new n.CommitQueue;let J=-1;function ae(){let ue=23;for(let pe=0,he=P.length;pe<he;++pe)P[pe].state.visible&&(ue=31*ue+P[pe].id|0);return ue=(0,s.hash1)(ue),ue===-1&&(ue=0),ue}function te(){const ue=ae();return ue!==J?(x=!0,M=!0,D=!0,V=!0,R=!0,E=!0,I=!0,B=!0,J=ue,!0):!1}function ne(){if(S.length===0)return 0;let ue=0,pe=0;for(let he=0,fe=S.length;he<fe;++he)S[he].state.visible&&(pe+=S[he].values.markerAverage.ref.value,ue+=1);return ue>0?pe/ue:0}function $(){if(S.length===0)return 0;let ue=0,pe=0;for(let he=0,fe=S.length;he<fe;++he)S[he].state.visible&&(pe+=S[he].values.emissiveAverage.ref.value+S[he].values.uEmissive.ref.value,ue+=1);return ue>0?pe/ue:0}function ie(){if(S.length===0)return 0;let ue=0,pe=0;for(let he=0,fe=S.length;he<fe;++he)S[he].state.visible&&(pe+=S[he].values.wiggleAverage.ref.value,ue+=1);return ue>0?pe/ue:0}function Z(){var ue,pe,he;if(S.length===0)return 0;let fe=0,de=0;for(let ge=0,Ce=S.length;ge<Ce;++ge){const ve=S[ge];if(!ve.state.visible)continue;const le=(0,h.clamp)(ve.values.alpha.ref.value*ve.state.alphaFactor,0,1),me=((ue=ve.values.dXrayShaded)===null||ue===void 0?void 0:ue.ref.value)==="on"||((pe=ve.values.dXrayShaded)===null||pe===void 0?void 0:pe.ref.value)==="inverted"?.5:1,ee=((he=ve.values.dPointStyle)===null||he===void 0?void 0:he.ref.value)==="fuzzy"?.5:1,se=ve.values.dGeometryType.ref.value==="text"?.5:1,ye=ve.values.dGeometryType.ref.value==="image"?.5:1;de+=(1-ve.values.transparencyAverage.ref.value)*le*me*ee*se*ye,fe+=1}return fe>0?de/fe:0}function re(){var ue,pe,he;if(S.length===0)return 1;let fe=1;const de=[];for(let ge=0,Ce=S.length;ge<Ce;++ge){const ve=S[ge];if(!ve.state.visible)continue;de.length=0;const le=(0,h.clamp)(ve.values.alpha.ref.value*ve.state.alphaFactor,0,1);le<1&&de.push(1-le),(((ue=ve.values.dXrayShaded)===null||ue===void 0?void 0:ue.ref.value)==="on"||((pe=ve.values.dXrayShaded)===null||pe===void 0?void 0:pe.ref.value)==="inverted"||((he=ve.values.dPointStyle)===null||he===void 0?void 0:he.ref.value)==="fuzzy"||ve.values.dGeometryType.ref.value==="text"||ve.values.dGeometryType.ref.value==="image")&&de.push(.5),ve.values.transparencyMin.ref.value>0&&de.push(ve.values.transparencyMin.ref.value),fe=Math.min(fe,...de)}return fe}function oe(){var ue;if(S.length===0)return!1;for(let pe=0,he=S.length;pe<he;++pe){const fe=S[pe];if(fe.state.visible&&(fe.state.opaque||fe.state.alphaFactor===1&&fe.values.alpha.ref.value===1&&fe.values.transparencyAverage.ref.value!==1||((ue=fe.values.dTransparentBackfaces)===null||ue===void 0?void 0:ue.ref.value)==="opaque"))return!0}return!1}function ce(){var ue,pe,he,fe,de,ge;for(let Ce=0,ve=S.length;Ce<ve;++Ce){const le=S[Ce];if(le.state.visible&&((((ue=le.values.uWiggleAmplitude)===null||ue===void 0?void 0:ue.ref.value)>0||le.values.wiggleAverage.ref.value>
42090)&&((pe=le.values.uWiggleSpeed)===null||pe===void 0?void 0:pe.ref.value)>0&&((he=le.values.uWiggleFrequency)===null||he===void 0?void 0:he.ref.value)>0||((fe=le.values.uTumbleAmplitude)===null||fe===void 0?void 0:fe.ref.value)>0&&((de=le.values.uTumbleSpeed)===null||de===void 0?void 0:de.ref.value)>0&&((ge=le.values.uTumbleFrequency)===null||ge===void 0?void 0:ge.ref.value)>0))return!0}return!1}return{view:j,position:H,direction:G,up:z,renderables:P,primitives:{view:j,position:H,direction:G,up:z,renderables:S},volumes:{view:j,position:H,direction:G,up:z,renderables:T},syncVisibility:te,setTransparency:ue=>{m=ue;for(let pe=0,he=P.length;pe<he;++pe)P[pe].setTransparency(ue)},setGlobals:ue=>{v=ue;for(const pe of P)f.ValueCell.updateIfChanged(pe.values.dColorMarker,ue.dColorMarker),f.ValueCell.updateIfChanged(pe.values.dLightCount,ue.dLightCount),pe.update()},update(ue,pe){var he;if(ue)for(let fe=0,de=ue.length;fe<de;++fe)(he=b.get(ue[fe]))===null||he===void 0||he.update();else for(let fe=0,de=P.length;fe<de;++fe)P[fe].update();pe?te():(A=!0,x=!0),M=!0,D=!0,V=!0,R=!0,E=!0,I=!0,B=!0},add:ue=>Q.add(ue),remove:ue=>Q.remove(ue),commit:(ue=Number.MAX_VALUE)=>K(ue),get commitQueueSize(){return Q.size},get needsCommit(){return!Q.isEmpty},has:ue=>b.has(ue),clear:()=>{for(let ue=0,pe=P.length;ue<pe;++ue)P[ue].dispose();P.length=0,S.length=0,T.length=0,b.clear(),A=!0,x=!0},forEach:ue=>{b.forEach(ue)},get count(){return P.length},get boundingSphere(){return A&&(_(P,C,!1),A=!1),C},get boundingSphereVisible(){return x&&(_(P,l,!0),x=!1),l},get transparency(){return m},get markerAverage(){return M&&(w=ne(),M=!1),w},get emissiveAverage(){return D&&(O=$(),D=!1),O},get wiggleAverage(){return V&&(F=ie(),V=!1),F},get opacityAverage(){return R&&(L=Z(),R=!1),L},get transparencyMin(){return E&&(U=re(),E=!1),U},get hasOpaque(){return I&&(q=oe(),I=!1),q},get hasAnimation(){return B&&(N=ce(),B=!1),N}}}d.create=p})(a||(Ev.Scene=a={})),Ev}var Kd={},Yd={},_A={},j6;function voe(){return j6||(j6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.EasingFunctions=void 0,e.bounceIn=_,e.bounceOut=g,e.bounceInOut=a,e.circleIn=d,e.circleOut=p,e.circleInOut=u,e.cubicIn=m,e.cubicOut=v,e.cubicInOut=b,e.expIn=P,e.expOut=C,e.expInOut=l,e.quadIn=S,e.quadOut=T,e.quadInOut=A,e.sinIn=D,e.sinOut=V,e.sinInOut=R,e.getEasingFn=E;const t=4/11,r=6/11,n=8/11,i=3/4,c=9/11,o=10/11,s=15/16,h=21/22,f=63/64,y=1/t/t;function _(I){return 1-g(1-I)}function g(I){return(I=+I)<t?y*I*I:I<n?y*(I-=r)*I+i:I<o?y*(I-=c)*I+s:y*(I-=h)*I+f}function a(I){return((I*=2)<=1?1-g(1-I):g(I-1)+1)/2}function d(I){return 1-Math.sqrt(1-I*I)}function p(I){return Math.sqrt(1- --I*I)}function u(I){return((I*=2)<=1?1-Math.sqrt(1-I*I):Math.sqrt(1-(I-=2)*I)+1)/2}function m(I){return I*I*I}function v(I){return--I*I*I+1}function b(I){return((I*=2)<=1?I*I*I:(I-=2)*I*I+2)/2}function P(I){return Math.pow(2,10*I-10)}function C(I){return 1-Math.pow(2,-10*I)}function l(I){return((I*=2)<=1?Math.pow(2,10*I-10):2-Math.pow(2,10-10*I))/2}function S(I){return I*I}function T(I){return I*(2-I)}function A(I){return((I*=2)<=1?I*I:--I*(2-I)+1)/2}const x=Math.PI,M=x/2;function D(I){return 1-Math.cos(I*M)}function V(I){return Math.sin(I*M)}function R(I){return(1-Math.cos(x*I))/2}e.EasingFunctions={linear:I=>I,"bounce-in":_,"bounce-out":g,"bounce-in-out":a,"circle-in":d,"circle-out":p,"circle-in-out":u,"cubic-in":m,"cubic-out":v,"cubic-in-out":b,"exp-in":P,"exp-out":C,"exp-in-out":l,"quad-in":S,"quad-out":T,"quad-in-out":A,"sin-in":D,"sin-out":V,"sin-in-out":R};function E(I){var B;return I?typeof I=="function"?I:(B=e.EasingFunctions[I])!==null&&B!==void 0?B:e.EasingFunctions.linear:e.EasingFunctions.linear}})(_A)),_A}var G6;function boe(){if(G6)return Yd;G6=1,Object.defineProperty(Yd,"__esModule",{value:!0}),Yd.CameraTransitionManager=void 0;const e=ta(),t=ir(),r=rs(),n=wt(),i=voe();class c{get source(){return this._source}get target(){return this._target}apply(s,h=0,f,y){if((!this.inTransition||h>0)&&e.Camera.copySnapshot(this._source,this.camera.state),this.inTransition||e.Camera.copySnapshot(this._target,this.camera.state),e.Camera.copySnapshot(this._target,s),this._target.radiu
4209s>this._target.radiusMax&&(this._target.radius=this._target.radiusMax),this._target.radius<.01&&(this._target.radius=.01),this._target.radiusMax<.01&&(this._target.radiusMax=.01),!this.inTransition&&h<=0||typeof s.mode<"u"&&s.mode!==this.camera.state.mode){this.finish(this._target);return}this.inTransition=!0,this.func=f||c.defaultTransition,this._options=y,(!this.inTransition||h>0)&&(this.start=this.t,this.durationMs=h)}tick(s){this.t=s,this.update()}finish(s){e.Camera.copySnapshot(this.camera.state,s),this.inTransition=!1}update(){if(!this.inTransition)return;const s=Math.min((this.t-this.start)/this.durationMs,1);if(s===1){this.finish(this._target);return}this.func(this._current,s,this._source,this._target,this._options),e.Camera.copySnapshot(this.camera.state,this._current)}constructor(s){this.camera=s,this.t=0,this.func=c.defaultTransition,this.start=0,this.inTransition=!1,this.durationMs=0,this._source=e.Camera.createDefaultSnapshot(),this._target=e.Camera.createDefaultSnapshot(),this._options=void 0,this._current=e.Camera.createDefaultSnapshot()}}return Yd.CameraTransitionManager=c,(function(o){const s=r.Quat.identity(),h=r.Quat.identity(),f=(0,n.Vec3)(),y=(0,n.Vec3)();let _,g;function a(d,p,u,m,v){var b;let P=u,C=m,l=0,S=1,T=v?.easing;const A=v?.keyframes;if(A&&A.length>0){for(let B=0;B<A.length;B++){const w=A[B];if(p>=w.t){P=w.snapshot,l=w.t;break}}for(let B=0;B<A.length;B++){const w=A[B];if(w.t>=p){C=w.snapshot,S=w.t,T=(b=w.easing)!==null&&b!==void 0?b:T;break}}}const M=(0,i.getEasingFn)(T)((p-l)/(S-l));_||(_=e.Camera.createDefaultSnapshot()),g||(g=e.Camera.createDefaultSnapshot()),e.Camera.copySnapshot(_,u),e.Camera.copySnapshot(_,P),e.Camera.copySnapshot(g,m),e.Camera.copySnapshot(g,C);const D=_,V=g;e.Camera.copySnapshot(d,V),r.Quat.slerp(s,r.Quat.Identity,r.Quat.rotationTo(s,D.up,V.up),M),n.Vec3.transformQuat(d.up,D.up,s),n.Vec3.lerp(d.target,D.target,V.target,M);const R=n.Vec3.distance(D.target,D.position),E=n.Vec3.distance(V.target,V.position),I=(0,t.lerp)(R,E,M);n.Vec3.sub(f,D.position,D.target),n.Vec3.normalize(f,f),n.Vec3.sub(y,V.position,V.target),n.Vec3.normalize(y,y),r.Quat.rotationTo(h,f,y),r.Quat.slerp(h,r.Quat.Identity,h,M),n.Vec3.transformQuat(f,f,h),n.Vec3.scale(f,f,I),n.Vec3.add(d.position,d.target,f),d.radius=(0,t.lerp)(D.radius,V.radius,M),d.radiusMax=(0,t.lerp)(D.radiusMax,V.radiusMax,M),d.fov=(0,t.lerp)(D.fov,V.fov,M),d.fog=(0,t.lerp)(D.fog,V.fog,M)}o.defaultTransition=a})(c||(Yd.CameraTransitionManager=c={})),Yd}var Ov={},z6;function zQ(){if(z6)return Ov;z6=1,Object.defineProperty(Ov,"__esModule",{value:!0}),Ov.Euler=n;const e=Xr(),t=Gt(),r=ir();function n(){return n.zero()}return(function(i){function c(){const v=[.1,0,0];return v[0]=0,v}i.zero=c;function o(v,b,P){const C=c();return C[0]=v,C[1]=b,C[2]=P,C}i.create=o;function s(v,b,P,C){return v[0]=b,v[0]=P,v[0]=C,v}i.set=s;function h(v){const b=c();return b[0]=v[0],b[1]=v[1],b[2]=v[2],b}i.clone=h;function f(v,b){return v[0]=b[0],v[1]=b[1],v[2]=b[2],v}i.copy=f;function y(v){return Array.isArray(v)&&v.length===3}i.is=y;function _(v,b,P){const C=b[0],l=b[4],S=b[8],T=b[1],A=b[5],x=b[9],M=b[2],D=b[6],V=b[10];switch(P){case"XYZ":v[1]=Math.asin((0,r.clamp)(S,-1,1)),Math.abs(S)<.9999999?(v[0]=Math.atan2(-x,V),v[2]=Math.atan2(-l,C)):(v[0]=Math.atan2(D,A),v[2]=0);break;case"YXZ":v[0]=Math.asin(-(0,r.clamp)(x,-1,1)),Math.abs(x)<.9999999?(v[1]=Math.atan2(S,V),v[2]=Math.atan2(T,A)):(v[1]=Math.atan2(-M,C),v[2]=0);break;case"ZXY":v[0]=Math.asin((0,r.clamp)(D,-1,1)),Math.abs(D)<.9999999?(v[1]=Math.atan2(-M,V),v[2]=Math.atan2(-l,A)):(v[1]=0,v[2]=Math.atan2(T,C));break;case"ZYX":v[1]=Math.asin(-(0,r.clamp)(M,-1,1)),Math.abs(M)<.9999999?(v[0]=Math.atan2(D,V),v[2]=Math.atan2(T,C)):(v[0]=0,v[2]=Math.atan2(-l,A));break;case"YZX":v[2]=Math.asin((0,r.clamp)(T,-1,1)),Math.abs(T)<.9999999?(v[0]=Math.atan2(-x,A),v[1]=Math.atan2(-M,C)):(v[0]=0,v[1]=Math.atan2(S,V));break;case"XZY":v[2]=Math.asin(-(0,r.clamp)(l,-1,1)),Math.abs(l)<.9999999?(v[0]=Math.atan2(D,A),v[1]=Math.atan2(S,C)):(v[0]=Math.atan2(-x,V),v[1]=0);break;default:(0,t.assertUnreachable)(P)}return v}i.fromMat4=_;const g=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function a(v,b,P){return e.Mat4.fromQuat(g,b),_(v,g,P)}i.fromQuat=a;function d(v,b){return s(v,b[0],b[1],b[2])}i.fromVec3=d;function p(v,b){return v[0]===b[0]&&v[1]===b[1]&&v[2]===b[2]}i.exactEquals=p;function u(v,b,P){return v[0]=b[P+0],v[1]=b[P+1],v[2]=b[P+2],v}i.fromArray=u;function m(v,b,P){return b[P+0]=v[0],b[P+1]=v[1],b[P+2]=v[2],b}i.toArray=m})(n||(Ov.Euler=n={})),Ov}var H6;function ta(){if(H6)return Kd;H6=1,Object.defineProperty(Kd,"__esModule",{value:!0}),Kd.Camera=void 0;const e=Kn(),t=boe(),r=Rn(),n=Gt(),i=Xr(),c=Fa(),o=wt(),s=rn(),h=zQ(),f=(0,c.Vec4)(),y=(0,o.Vec3)(),_=(0,o.Vec3)(),g=(0,o.Vec3)(),a=(0,o.
4209Vec3)(),d=(0,o.Vec3)(),p=i.Mat4.identity();class u{get position(){return this.state.position}set position(T){o.Vec3.copy(this.state.position,T)}get up(){return this.state.up}set up(T){o.Vec3.copy(this.state.up,T)}get target(){return this.state.target}set target(T){o.Vec3.copy(this.state.target,T)}update(){const T=this.state;if(T.radiusMax===0)return!1;const A=o.Vec3.distance(T.position,T.target),x=this.minTargetDistance/this.scale;A<x&&(o.Vec3.sub(this.deltaDirection,T.target,T.position),o.Vec3.setMagnitude(this.deltaDirection,this.deltaDirection,x),o.Vec3.sub(T.position,T.target,this.deltaDirection));const M=2*Math.tan(T.fov/2)*o.Vec3.distance(T.position,T.target)*this.scale;switch(this.zoom=this.viewport.height/M,l(this),this.state.mode){case"orthographic":P(this);break;case"perspective":C(this);break;default:(0,n.assertUnreachable)(this.state.mode)}const D=!i.Mat4.areEqual(this.projection,this.prevProjection,s.EPSILON)||!i.Mat4.areEqual(this.view,this.prevView,s.EPSILON);if(D){if(i.Mat4.mul(this.projectionView,this.projection,this.view),!i.Mat4.tryInvert(this.inverseProjectionView,this.projectionView))return i.Mat4.copy(this.view,this.prevView),i.Mat4.copy(this.projection,this.prevProjection),i.Mat4.mul(this.projectionView,this.projection,this.view),!1;i.Mat4.copy(this.prevView,this.view),i.Mat4.copy(this.prevProjection,this.projection),this.changed.next()}return D}setState(T,A,x){this.transition.apply(T,A,void 0,x),this.stateChanged.next(T)}getSnapshot(){return u.copySnapshot(u.createDefaultSnapshot(),this.state)}getTargetDistance(T){return Math.max(this.minTargetDistance/this.scale,u.targetDistance(T,this.state.mode,this.state.fov,this.viewport.width,this.viewport.height))}getFocus(T,A,x,M,D){var V,R;const E=Math.max(A,.01),I=this.getTargetDistance(E);o.Vec3.sub(this.deltaDirection,(V=D?.target)!==null&&V!==void 0?V:this.target,(R=D?.position)!==null&&R!==void 0?R:this.position),M&&o.Vec3.matchDirection(this.deltaDirection,M,this.deltaDirection),o.Vec3.setMagnitude(this.deltaDirection,this.deltaDirection,I),o.Vec3.sub(this.newPosition,T,this.deltaDirection);const B=u.copySnapshot(u.createDefaultSnapshot(),this.state);return B.target=o.Vec3.clone(T),B.radius=E,B.position=o.Vec3.clone(this.newPosition),x&&o.Vec3.matchDirection(B.up,x,B.up),B}getCenter(T,A){o.Vec3.sub(this.deltaDirection,this.target,this.position),o.Vec3.sub(this.newPosition,T,this.deltaDirection);const x=u.copySnapshot(u.createDefaultSnapshot(),this.state);return x.target=o.Vec3.clone(T),x.position=o.Vec3.clone(this.newPosition),A&&(x.radius=Math.max(A,.01)),x}getInvariantFocus(T,A,x,M){const D=Math.max(A,.01),V=this.getTargetDistance(D);o.Vec3.copy(this.deltaDirection,M),o.Vec3.setMagnitude(this.deltaDirection,this.deltaDirection,V),o.Vec3.sub(this.newPosition,T,this.deltaDirection);const R=u.copySnapshot(u.createDefaultSnapshot(),this.state);return R.target=o.Vec3.clone(T),R.radius=D,R.position=o.Vec3.clone(this.newPosition),o.Vec3.copy(R.up,x),R}focus(T,A,x,M,D){A>0&&this.setState(this.getFocus(T,A,M,D),x)}center(T,A){this.setState(this.getCenter(T),A)}project(T,A){return(0,e.cameraProject)(T,A,this.viewport,this.projectionView)}unproject(T,A){return(0,e.cameraUnproject)(T,A,this.viewport,this.inverseProjectionView)}getPixelSize(T){this.project(f,T);const A=f[3],x=this.viewport.width,M=this.projection[0];return 2/A/(x*Math.abs(M))}getRay(T,A,x){return this.state.mode==="orthographic"?(o.Vec3.set(T.origin,A,x,0),this.unproject(T.origin,T.origin),o.Vec3.normalize(T.direction,o.Vec3.sub(T.direction,this.target,this.position)),o.Vec3.scaleAndAdd(T.origin,T.origin,T.direction,-this.near)):(o.Vec3.copy(T.origin,this.state.position),o.Vec3.scale(T.origin,T.origin,this.scale),o.Vec3.set(T.direction,A,x,.5),this.unproject(T.direction,T.direction),o.Vec3.normalize(T.direction,o.Vec3.sub(T.direction,T.direction,T.origin))),T}getRotation(T){const{position:A,target:x,up:M}=this.state;return o.Vec3.normalize(y,o.Vec3.sub(y,x,A)),o.Vec3.normalize(_,o.Vec3.cross(_,y,M)),o.Vec3.cross(g,_,y),i.Mat4.setIdentity(p),p[0]=_[0],p[1]=_[1],p[2]=_[2],p[4]=g[0],p[5]=g[1],p[6]=g[2],p[8]=-y[0],p[9]=-y[1],p[10]=-y[2],h.Euler.fromMat4(T,p,"ZYX")}setRotation(T,A){const x=this.state,M=o.Vec3.distance(x.position,x.target);i.Mat4.fromEuler(p,T,"ZYX"),o.Vec3.set(a,p[8],p[9],p[10]),o.Vec3.set(g,p[4],p[5],p[6]);const D=u.copySnapshot(u.createDefaultSnapshot(),x);o.Vec3.scaleAndAdd(D.position,x.target,a,M),o.Vec3.copy(D.up,g),this.setState(D,A)}getTranslation(T){return o.Vec3.copy(T,this.state.target)}setTranslation(T,A){const x=this.state;o.Vec3.sub(d,T,x.target);const M=u.copySnapshot(u.createDefaultSnapshot(),x);o.Vec3.add(M.position,x.position,d),o.Vec3.copy(M.target,T),this.setState(M,A)}constructor(T,A=e.Viewport.create(0,0,128,128)){this.view=i.Mat4.identity(),this.projection=i.Mat4.identity(),this.projectionView=i.Mat4.identity(),this.inverseProjectionView=i.Mat4.identity(),this.headRotation=i.Mat4.zero(),this.viewEye=i.Mat4.zero(),this.isAsymmetricProjection=!1,this.state=u.createDefaultSnapshot(),this.viewOffset=u.ViewOffset(),this.disabled=!1,this.near=1,this.far=1e4,this.fogNear=5e3,this.fogFar=1e4,this.zoom=1,this.forceFull=!1,this.scale=1,this.minTargetDistance=0,this.transition=new t.CameraTransitionManager(this),this.stateChanged=new r.BehaviorSubject(this.state),this.changed=new r.Subject,this.prevProjection=i.Mat4.identity(),this.prevView=i.Mat4.identity(),this.deltaDirection=(0,o.
4209Vec3)(),this.newPosition=(0,o.Vec3)(),this.viewport=A,u.copySnapshot(this.state,T)}}Kd.Camera=u,(function(S){function T(){return{enabled:!1,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}}S.ViewOffset=T;function A(E,I,B,w,O,F,L){E.fullWidth=I,E.fullHeight=B,E.offsetX=w,E.offsetY=O,E.width=F,E.height=L}S.setViewOffset=A;function x(E,I){E.enabled=I.enabled,E.fullWidth=I.fullWidth,E.fullHeight=I.fullHeight,E.offsetX=I.offsetX,E.offsetY=I.offsetY,E.width=I.width,E.height=I.height}S.copyViewOffset=x;function M(E,I,B,w,O){const F=Math.max(E,.01),L=w/O,U=O<w?1:L;return Math.abs(I==="orthographic"?F/U/Math.tan(B/2):F/U/Math.sin(B/2))}S.targetDistance=M;function D(){return{mode:"perspective",fov:Math.PI/4,position:o.Vec3.create(0,0,100),up:o.Vec3.create(0,1,0),target:o.Vec3.create(0,0,0),radius:0,radiusMax:10,fog:50,clipFar:!0,minNear:5,minFar:0}}S.createDefaultSnapshot=D;function V(E,I){return I&&(typeof I.mode<"u"&&(E.mode=I.mode),typeof I.fov<"u"&&(E.fov=I.fov),typeof I.position<"u"&&o.Vec3.copy(E.position,I.position),typeof I.up<"u"&&o.Vec3.copy(E.up,I.up),typeof I.target<"u"&&o.Vec3.copy(E.target,I.target),typeof I.radius<"u"&&(E.radius=I.radius),typeof I.radiusMax<"u"&&(E.radiusMax=I.radiusMax),typeof I.fog<"u"&&(E.fog=I.fog),typeof I.clipFar<"u"&&(E.clipFar=I.clipFar),typeof I.minNear<"u"&&(E.minNear=I.minNear),typeof I.minFar<"u"&&(E.minFar=I.minFar)),E}S.copySnapshot=V;function R(E,I){return E.mode===I.mode&&E.fov===I.fov&&E.radius===I.radius&&E.radiusMax===I.radiusMax&&E.fog===I.fog&&E.clipFar===I.clipFar&&E.minNear===I.minNear&&E.minFar===I.minFar&&o.Vec3.exactEquals(E.position,I.position)&&o.Vec3.exactEquals(E.up,I.up)&&o.Vec3.exactEquals(E.target,I.target)}S.areSnapshotsEqual=R})(u||(Kd.Camera=u={}));const m=(0,o.Vec3)(),v=(0,o.Vec3)();function b(S){S.scale===1?i.Mat4.lookAt(S.view,S.state.position,S.state.target,S.state.up):(o.Vec3.scale(m,S.state.position,S.scale),o.Vec3.scale(v,S.state.target,S.scale),i.Mat4.lookAt(S.view,m,v,S.state.up))}function P(S){const{viewport:T,zoom:A,near:x,far:M,viewOffset:D}=S,V=-T.width/2,R=T.width/2,E=T.height/2,I=-T.height/2,B=(R-V)/(2*A),w=(E-I)/(2*A),O=(R+V)/2,F=(E+I)/2;let L=O-B,U=O+B,q=F+w,N=F-w;if(D.enabled){const k=A/(D.width/D.fullWidth),j=A/(D.height/D.fullHeight),H=(R-V)/D.width,G=(E-I)/D.height;L+=H*(D.offsetX/k),U=L+H*(D.width/k),q-=G*(D.offsetY/j),N=q-G*(D.height/j)}i.Mat4.ortho(S.projection,L,U,q,N,x,M),b(S)}function C(S){const T=S.viewport.width/S.viewport.height,{near:A,far:x,viewOffset:M}=S;let D=A*Math.tan(.5*S.state.fov),V=2*D,R=T*V,E=-.5*R;M.enabled&&(E+=M.offsetX*R/M.fullWidth,D-=M.offsetY*V/M.fullHeight,R*=M.width/M.fullWidth,V*=M.height/M.fullHeight),i.Mat4.perspective(S.projection,E,E+R,D,D-V,A,x),b(S)}function l(S){const{forceFull:T,scale:A}=S;let{radius:x,radiusMax:M,mode:D,fog:V,clipFar:R,minNear:E,minFar:I}=S.state;M*=A,I*=A,E*=A,x*=A,T&&(x=M);const B=.01*A;x<B&&(x=B);const w=Math.max(R?x:M,I);o.Vec3.scale(v,S.state.target,A),o.Vec3.scale(m,S.state.position,A);const O=o.Vec3.distance(m,v);let F=T?.01:O-x,L=O+w;T&&(E=F),F=Math.max(Math.min(M,E),F),L=Math.max(E,L),F===L&&(L=F+.01*A);const U=-(50-V)/50,q=O-w*U,N=L;S.near=F,S.far=L,S.fogNear=q,S.fogFar=N}return Kd}var SA={},W6;function _oe(){return W6||(W6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Canvas3dInteractionHelper=e.Canvas3dInteractionHelperParams=void 0;const t=Lt(),r=cs(),n=Nl(),i=Ge(),c=Ne(),o=Ke(),s=CT(),h=(0,i.Vec3)(),f=(0,i.Vec3)(),y=(0,i.Vec3)();e.Canvas3dInteractionHelperParams={maxFps:c.ParamDefinition.Numeric(30,{min:10,max:60,step:10}),preferAtomPixelPadding:c.ParamDefinition.Numeric(3,{min:0,max:20,step:1},{description:"Number of extra pixels at which to prefer atoms over bonds."}),convertCoordsToRay:c.ParamDefinition.Boolean(!1,{description:"Convert screen coordinates to ray for picking."})};class _{setProps(a){Object.assign(this.props,a)}getTarget(){return this.ray?this.ray:this.props.convertCoordsToRay?this.camera.getRay((0,s.Ray3D)(),this.endX,this.input.height-this.endY):i.Vec2.create(this.endX,this.endY)}handleMove(){(this.startX!==this.endX||this.startY!==this.endY||this.input.pointerLock&&!this.controls.isMoving)&&(this.pickData=this.canvasAsyncIdentify(this.getTarget()),this.startX=this.endX,this.startY=this.endY)}handleClick(){const a=this.canvasIdentify(this.getTarget()),d=this.getLoci(a?.id,a?.position);this.events.click.next({current:d,buttons:this.buttons,button:this.button,modifiers:this.modifiers,page:i.Vec2.create(this.endX,this.endY),position:a?.position}),this.prevLoci=d}handleDrag(){(this.startX!==this.endX||this.startY!==this.endY||this.input.pointerLock&&!this.controls.isMoving)&&!this.outsideViewport(this.startX,this.startY,this.ray)&&(this.events.drag.next({current:this.prevLoci,buttons:this.buttons,button:this.button,modifiers:this.modifiers,pageStart:i.Vec2.create(this.startX,this.startY),pageEnd:i.Vec2.create(this.endX,this.endY)}),this.startX=this.endX,this.startY=this.endY)}
4209tick(a){if(this.inside){if(this.pickData){const d=this.pickData.tryGet();if(d!=="pending"){if(this.position=d?.position,this.inside){const p=this.getLoci(d?.id,d?.position);this.events.hover.next({current:p,buttons:this.buttons,button:this.button,modifiers:this.modifiers,page:i.Vec2.create(this.endX,this.endY),position:d?.position}),this.prevLoci=p}this.pickData=void 0}}a-this.prevT>1e3/this.props.maxFps&&(this.prevT=a,this.isInteracting?this.handleDrag():this.handleMove())}}leave(){this.inside=!1,t.Representation.Loci.isEmpty(this.prevLoci)||(this.prevLoci=t.Representation.Loci.Empty,this.events.hover.next({current:this.prevLoci,buttons:this.buttons,button:this.button,modifiers:this.modifiers}))}move(a,d,p,u,m,v){this.inside=!0,this.buttons=p,this.button=u,this.modifiers=m,this.ray=v,this.endX=a,this.endY=d}click(a,d,p,u,m,v){this.endX=a,this.endY=d,this.buttons=p,this.button=u,this.modifiers=m,this.ray=v,this.handleClick()}drag(a,d,p,u,m){this.endX=a,this.endY=d,this.buttons=p,this.button=u,this.modifiers=m,this.handleDrag()}modify(a){r.ModifiersKeys.areEqual(a,this.modifiers)||(this.modifiers=a,this.events.hover.next({current:this.prevLoci,buttons:this.buttons,button:this.button,modifiers:this.modifiers,page:i.Vec2.create(this.endX,this.endY),position:this.position}))}outsideViewport(a,d,p){if(p)return!1;const{input:u,camera:{viewport:m}}=this;return a*=u.pixelRatio,d*=u.pixelRatio,a>m.x+m.width||u.height-d>m.y+m.height||a<m.x||u.height-d<m.y}getLoci(a,d){var p;const{repr:u,loci:m}=this.lociGetter(a);if(d&&u&&o.Bond.isLoci(m)&&m.bonds.length===2){const{aUnit:v,aIndex:b}=m.bonds[0];v.conformation.position(v.elements[b],h),i.Vec3.sub(y,this.camera.state.position,this.camera.state.target),i.Vec3.projectPointOnPlane(f,d,y,h);const P=this.camera.getPixelSize(f);let C=u.theme.size.size(m.bonds[0])*((p=u.props.sizeFactor)!==null&&p!==void 0?p:1);if(u.props.lineSizeAttenuation===!1&&(C*=P/2),C+=this.props.preferAtomPixelPadding*P,i.Vec3.distance(f,h)<C)return{repr:u,loci:o.Bond.toFirstStructureElementLoci(m)}}return{repr:u,loci:m}}dispose(){this.ev.dispose()}constructor(a,d,p,u,m,v,b={}){this.canvasIdentify=a,this.canvasAsyncIdentify=d,this.lociGetter=p,this.input=u,this.camera=m,this.controls=v,this.ev=n.RxEventHelper.create(),this.events={hover:this.ev(),drag:this.ev(),click:this.ev()},this.startX=-1,this.startY=-1,this.endX=-1,this.endY=-1,this.ray=void 0,this.pickData=void 0,this.position=void 0,this.isInteracting=!1,this.prevLoci=t.Representation.Loci.Empty,this.prevT=0,this.inside=!1,this.buttons=r.ButtonsType.create(0),this.button=r.ButtonsType.create(0),this.modifiers=r.ModifiersKeys.None,this.props={...c.ParamDefinition.getDefaultValues(e.Canvas3dInteractionHelperParams),...b},u.drag.subscribe(({x:P,y:C,buttons:l,button:S,modifiers:T})=>{this.isInteracting=!0,this.drag(P,C,l,S,T)}),u.move.subscribe(({x:P,y:C,inside:l,buttons:S,button:T,modifiers:A,onElement:x,ray:M})=>{if(!(!l||this.isInteracting)){if(!x){this.leave();return}this.move(P,C,S,T,A,M)}}),u.leave.subscribe(()=>{this.leave()}),u.click.subscribe(({x:P,y:C,buttons:l,button:S,modifiers:T,ray:A})=>{this.outsideViewport(P,C,A)||this.click(P,C,l,S,T,A)}),u.interactionEnd.subscribe(()=>{this.isInteracting=!1}),u.modifiers.subscribe(P=>{this.modify(P)})}}e.Canvas3dInteractionHelper=_})(SA)),SA}var Xo={},kv={},$6;function Soe(){return $6||($6=1,Object.defineProperty(kv,"__esModule",{value:!0}),kv.postprocessing_frag=void 0,kv.postprocessing_frag=`
4210precision highp float;
4211precision highp int;
4212precision highp sampler2D;
4213
4214uniform sampler2D tSsaoDepth;
4215uniform sampler2D tSsaoDepthTransparent;
4216uniform sampler2D tColor;
4217uniform sampler2D tTransparentColor;
4218uniform sampler2D tDepthOpaque;
4219uniform sampler2D tDepthTransparent;
4220uniform sampler2D tShadows;
4221uniform sampler2D tOutlines;
4222uniform sampler2D tBloom;
4223uniform vec2 uTexSize;
4224
4225uniform float uNear;
4226uniform float uFar;
4227uniform float uFogNear;
4228uniform float uFogFar;
4229uniform vec3 uFogColor;
4230uniform vec3 uOutlineColor;
4231uniform vec3 uOcclusionColor;
4232uniform bool uTransparentBackground;
4233uniform vec2 uOcclusionOffset;
4234
4235#include common
4236
4237float getViewZ(const in float depth) {
4238    #if dOrthographic == 1
4239        return orthographicDepthToViewZ(depth, uNear, uFar);
4240    #else
4241        return perspectiveDepthToViewZ(depth, uNear, uFar);
4242    #endif
4243}
4244
4245float getDepthOpaque(const in vec2 coords) {
4246    #ifdef depthTextureSupport
4247        return texture2D(tDepthOpaque, coords).r;
4248    #else
4249        return unpackRGBAToDepth(texture2D(tDepthOpaque, coords));
4250    #endif
4251}
4252
4253float getDepthTransparent(const in vec2 coords) {
4254    return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords)).x;
4255}
4256
4257bool isBackground(const in float depth) {
4258    // (2^24 - 1) / 2^24, max of 24-bit packed depth; also passes raw fp32.
4259    return depth >= 0.99999994;
4260}
4261
4262int squaredOutlineScale = dOutlineScale * dOutlineScale;
4263void getOutline(const in vec2 coords, out bool hasOpaque, out bool hasTransparent, out float opaqueDepth, out float transparentDepth, out float alpha) {
4264    vec2 invTexSize = 1.0 / uTexSize;
4265
4266    hasOpaque = false;
4267    hasTransparent = false;
4268    opaqueDepth = 1.0;
4269    transparentDepth = 1.0;
4270    alpha = 0.0;
4271    for (int y = -dOutlineScale; y <= dOutlineScale; y++) {
4272        for (int x = -dOutlineScale; x <= dOutlineScale; x++) {
4273            if (x * x + y * y > squaredOutlineScale) {
4274                continue;
4275            }
4276
4277            vec2 sampleCoords = coords + vec2(float(x), float(y)) * invTexSize;
4278
4279            vec4 sampleOutlineCombined = texture2D(tOutlines, sampleCoords);
4280            float sampleOpaqueDepth = unpackRGToUnitInterval(sampleOutlineCombined.gb);
4281            float sampleTransparentDepth = sampleOutlineCombined.a;
4282            vec2 sampleFlagWithAlpha = unpack2x4(sampleOutlineCombined.r);
4283
4284            float sampleFlag = sampleFlagWithAlpha.x;
4285            float sampleAlpha = clamp(sampleFlagWithAlpha.y * 0.5, 0.01, 1.0);
4286
4287            if ((sampleFlag > 0.20 && sampleFlag < 0.30) || (sampleFlag > 0.70 && sampleFlag < 0.80)) { // transparent || both
4288                if (sampleOpaqueDepth < opaqueDepth) {
4289                    hasOpaque = true;
4290                    opaqueDepth = sampleOpaqueDepth;
4291                }
4292            }
4293
4294            if ((((sampleFlag > 0.45 && sampleFlag < 0.55) || (sampleFlag > 0.70 && sampleFlag < 0.80))) && sampleTransparentDepth < transparentDepth) { // transparent || both
4295                hasTransparent = true;
4296                transparentDepth = sampleTransparentDepth;
4297                alpha = sampleAlpha;
4298            }
4299        }
4300    }
4301}
4302
4303float getSsao(vec2 coords) {
4304    float rawSsao = unpackRGToUnitInterval(texture2D(tSsaoDepth, coords).xy);
4305    if (rawSsao > 0.999) {
4306        return 1.0;
4307    } else if (rawSsao > 0.001) {
4308        return rawSsao;
4309    }
4310    // treat values close to 0.0 as errors and return no occlusion
4311    return 1.0;
4312}
4313
4314float getSsaoTransparent(vec2 coords) {
4315    float rawSsao = unpackRGToUnitInterval(texture2D(tSsaoDepthTransparent, coords).xy);
4316    if (rawSsao > 0.999) {
4317        return 1.0;
4318    } else if (rawSsao > 0.001) {
4319        return rawSsao;
4320    }
4321    // treat values close to 0.0 as errors and return no occlusion
4322    return 1.0;
4323}
4324
4325void main(void) {
4326    vec2 coords = gl_FragCoord.xy / uTexSize;
4327    vec4 color = texture2D(tColor, coords);
4328
4329    float opaqueDepth = getDepthOpaque(coords);
4330    float transparentDepth = 1.0;
4331    #ifdef dBlendTransparency
4332        bool blendTransparency = true;
4333        vec4 transparentColor = texture2D(tTransparentColor, coords);
4334
4335        #if defined(dOutlineEnable) || defined(dOcclusionEnable) && defined(dOcclusionIncludeTransparency)
4336            transparentDepth = getDepthTransparent(coords);
4337        #endif
4338    #endif
4339
4340    #if defined(dOcclusionEnable) || defined(dShadowEnable)
4341        bool isOpaqueBackground = isBackground(opaqueDepth);
4342        float viewDist = abs(getViewZ(opaqueDepth));
4343        float fogFactor = smoothstep(uFogNear, uFogFar, viewDist);
4344    #endif
4345
4346    #if defined(dOcclusionEnable)
4347        if (!isOpaqueBackground) {
4348            float occlusionFactor = getSsao(coords + uOcclusionOffset);
4349
4350            if (!uTransparentBackground) {
4351                color.rgb = mix(mix(uOcclusionColor, uFogColor, fogFactor), color.rgb, occlusionFactor);
4352            } else {
4353                color.rgb = mix(uOcclusionColor * (1.0 - fogFactor), color.rgb, occlusionFactor);
4354            }
4355        }
4356        #if defined(dBlendTransparency) && defined(dOcclusionIncludeTransparency)
4357            if (!isBackground(transparentDepth)) {
4358                float viewDist = abs(getViewZ(transparentDepth));
4359                float fogFactor = smoothstep(uFogNear, uFogFar, viewDist);
4360                float occlusionFactor = getSsaoTransparent(coords + uOcclusionOffset);
4361                transparentColor.rgb = mix(uOcclusionColor * (1.0 - fogFactor), transparentColor.rgb, occlusionFactor);
4362            }
4363        #endif
4364    #endif
4365
4366    #ifdef dShadowEnable
4367        if (!isOpaqueBackground) {
4368            vec4 shadow = texture2D(tShadows, coords);
4369            if (!uTransparentBackground) {
4370                color.rgb = mix(mix(vec3(0), uFogColor, fogFactor), color.rgb, shadow.a);
4371            } else {
4372                color.rgb = mix(vec3(0) * (1.0 - fogFactor), color.rgb, shadow.a);
4373            }
4374        }
4375    #endif
4376
4377    // outline needs to be handled after occlusion and shadow to keep them clean
4378    #ifdef dOutlineEnable
4379        bool hasOpaque;
4380        bool hasTransparent;
4381        float outlineOpaqueDepth;
4382        float outlineTransparentDepth;
4383        float outlineAlpha;
4384        getOutline(coords, hasOpaque, hasTransparent, outlineOpaqueDepth, outlineTransparentDepth, outlineAlpha);
4385
4386        if (hasOpaque) {
4387            float viewDist = abs(getViewZ(outlineOpaqueDepth));
4388            float fogFactor = smoothstep(uFogNear, uFogFar, viewDist);
4389            if (!uTransparentBackground) {
4390                color.rgb = mix(uOutlineColor, uFogColor, fogFactor);
4391            } else {
4392                color.a = 1.0 - fogFactor;
4393                color.rgb = mix(uOutlineColor, vec3(0.0), fogFactor);
4394            }
4395        }
4396
4397        #ifdef dBlendTransparency
4398            if (hasTransparent) {
4399                if (hasOpaque && outlineOpaqueDepth < outlineTransparentDepth) {
4400                    blendTransparency = false;
4401                } else {
4402                    float finalOutlineAlpha = clamp(outlineAlpha * 2.0, 0.0, 1.0);
4403                    float viewDist = abs(getViewZ(outlineTransparentDepth));
4404                    float fogFactor = smoothstep(uFogNear, uFogFar, viewDist);
4405                    float finalAlpha = max(transparentColor.a, finalOutlineAlpha * (1.0 - fogFactor));
4406                    transparentColor.a = finalAlpha;
4407                    transparentColor.rgb = uOutlineColor * finalAlpha;
4408                }
4409            }
4410        #endif
4411    #endif
4412
4413    #ifdef dBlendTransparency
4414        if (blendTransparency) {
4415            float alpha = transparentColor.a;
4416            if (alpha != 0.0) {
4417                // blending
4418                color = transparentColor + color * (1.0 - alpha);
4419            }
4420        }
4421    #endif
4422
4423    #ifdef dBloomEnable
4424        vec4 bloom = texture2D(tBloom, coords);
4425        // additive glow over geometry and background alike; alpha just covers the premultiplied rgb
4426        color.rgb += bloom.rgb;
4427        color.a = min(max(color.a, max(color.r, max(color.g, color.b))), 1.0);
4428    #endif
4429
4430    gl_FragColor = color;
4431}
4432`),kv}var Lu={},Fv={},X6;function Coe(){return X6||(X6=1,Object.defineProperty(Fv,"__esModule",{value:!0}),Fv.fxaa_frag=void 0,Fv.fxaa_frag
vendor: 9,003 bytes, lines 4432-4660
4432=`
4433precision highp float;
4434precision highp int;
4435precision highp sampler2D;
4436
4437uniform sampler2D tColor;
4438uniform vec2 uTexSizeInv;
4439
4440// adapted from https://github.com/kosua20/Rendu
4441// MIT License Copyright (c) 2017 Simon Rodriguez
4442
4443#define QUALITY(q) ((q) < 5 ? 1.0 : ((q) > 5 ? ((q) < 10 ? 2.0 : ((q) < 11 ? 4.0 : 8.0)) : 1.5))
4444
4445float rgb2luma(vec3 rgb){
4446    return sqrt(dot(rgb, vec3(0.299, 0.587, 0.114)));
4447}
4448
4449float sampleLuma(vec2 uv) {
4450    return rgb2luma(texture2D(tColor, uv).rgb);
4451}
4452
4453float sampleLuma(vec2 uv, float uOffset, float vOffset) {
4454    uv += uTexSizeInv * vec2(uOffset, vOffset);
4455    return sampleLuma(uv);
4456}
4457
4458void main(void) {
4459    vec2 coords = gl_FragCoord.xy * uTexSizeInv;
4460    vec2 inverseScreenSize = uTexSizeInv;
4461
4462    vec4 colorCenter = texture2D(tColor, coords);
4463
4464    // Luma at the current fragment
4465    float lumaCenter = rgb2luma(colorCenter.rgb);
4466
4467    // Luma at the four direct neighbours of the current fragment.
4468    float lumaDown = sampleLuma(coords, 0.0, -1.0);
4469    float lumaUp = sampleLuma(coords, 0.0, 1.0);
4470    float lumaLeft = sampleLuma(coords, -1.0, 0.0);
4471    float lumaRight = sampleLuma(coords, 1.0, 0.0);
4472
4473    // Find the maximum and minimum luma around the current fragment.
4474    float lumaMin = min(lumaCenter, min(min(lumaDown, lumaUp), min(lumaLeft, lumaRight)));
4475    float lumaMax = max(lumaCenter, max(max(lumaDown, lumaUp), max(lumaLeft, lumaRight)));
4476
4477    // Compute the delta.
4478    float lumaRange = lumaMax - lumaMin;
4479
4480    // If the luma variation is lower that a threshold (or if we are in a really dark area),
4481    // we are not on an edge, don't perform any AA.
4482    if (lumaRange < max(dEdgeThresholdMin, lumaMax * dEdgeThresholdMax)) {
4483        gl_FragColor = colorCenter;
4484        return;
4485    }
4486
4487    // Query the 4 remaining corners lumas.
4488    float lumaDownLeft = sampleLuma(coords, -1.0, -1.0);
4489    float lumaUpRight = sampleLuma(coords, 1.0, 1.0);
4490    float lumaUpLeft = sampleLuma(coords, -1.0, 1.0);
4491    float lumaDownRight = sampleLuma(coords, 1.0, -1.0);
4492
4493    // Combine the four edges lumas (using intermediary variables for future computations
4494    // with the same values).
4495    float lumaDownUp = lumaDown + lumaUp;
4496    float lumaLeftRight = lumaLeft + lumaRight;
4497
4498    // Same for corners
4499    float lumaLeftCorners = lumaDownLeft + lumaUpLeft;
4500    float lumaDownCorners = lumaDownLeft + lumaDownRight;
4501    float lumaRightCorners = lumaDownRight + lumaUpRight;
4502    float lumaUpCorners = lumaUpRight + lumaUpLeft;
4503
4504    // Compute an estimation of the gradient along the horizontal and vertical axis.
4505    float edgeHorizontal = abs(-2.0 * lumaLeft + lumaLeftCorners) + abs(-2.0 * lumaCenter + lumaDownUp) * 2.0 + abs(-2.0 * lumaRight + lumaRightCorners);
4506    float edgeVertical = abs(-2.0 * lumaUp + lumaUpCorners) + abs(-2.0 * lumaCenter + lumaLeftRight) * 2.0 + abs(-2.0 * lumaDown + lumaDownCorners);
4507
4508    // Is the local edge horizontal or vertical ?
4509    bool isHorizontal = (edgeHorizontal >= edgeVertical);
4510
4511    // Choose the step size (one pixel) accordingly.
4512    float stepLength = isHorizontal ? inverseScreenSize.y : inverseScreenSize.x;
4513
4514    // Select the two neighboring texels lumas in the opposite direction to the local edge.
4515    float luma1 = isHorizontal ? lumaDown : lumaLeft;
4516    float luma2 = isHorizontal ? lumaUp : lumaRight;
4517    // Compute gradients in this direction.
4518    float gradient1 = luma1 - lumaCenter;
4519    float gradient2 = luma2 - lumaCenter;
4520
4521    // Which direction is the steepest ?
4522    bool is1Steepest = abs(gradient1) >= abs(gradient2);
4523
4524    // Gradient in the corresponding direction, normalized.
4525    float gradientScaled = 0.25 * max(abs(gradient1), abs(gradient2));
4526
4527    // Average luma in the correct direction.
4528    float lumaLocalAverage = 0.0;
4529    if(is1Steepest){
4530        // Switch the direction
4531        stepLength = -stepLength;
4532        lumaLocalAverage = 0.5 * (luma1 + lumaCenter);
4533    } else {
4534        lumaLocalAverage = 0.5 * (luma2 + lumaCenter);
4535    }
4536
4537    // Shift UV in the correct direction by half a pixel.
4538    vec2 currentUv = coords;
4539    if(isHorizontal){
4540        currentUv.y += stepLength * 0.5;
4541    } else {
4542        currentUv.x += stepLength * 0.5;
4543    }
4544
4545    // Compute offset (for each iteration step) in the right direction.
4546    vec2 offset = isHorizontal ? vec2(inverseScreenSize.x, 0.0) : vec2(0.0, inverseScreenSize.y);
4547    // Compute UVs to explore on each side of the edge, orthogonally.
4548    // The QUALITY allows us to step faster.
4549    vec2 uv1 = currentUv - offset * QUALITY(0);
4550    vec2 uv2 = currentUv + offset * QUALITY(0);
4551
4552    // Read the lumas at both current extremities of the exploration segment,
4553    // and compute the delta wrt to the local average luma.
4554    float lumaEnd1 = sampleLuma(uv1);
4555    float lumaEnd2 = sampleLuma(uv2);
4556    lumaEnd1 -= lumaLocalAverage;
4557    lumaEnd2 -= lumaLocalAverage;
4558
4559    // If the luma deltas at the current extremities is larger than the local gradient,
4560    // we have reached the side of the edge.
4561    bool reached1 = abs(lumaEnd1) >= gradientScaled;
4562    bool reached2 = abs(lumaEnd2) >= gradientScaled;
4563    bool reachedBoth = reached1 && reached2;
4564
4565    // If the side is not reached, we continue to explore in this direction.
4566    if(!reached1){
4567        uv1 -= offset * QUALITY(1);
4568    }
4569    if(!reached2){
4570        uv2 += offset * QUALITY(1);
4571    }
4572
4573    // If both sides have not been reached, continue to explore.
4574    if(!reachedBoth){
4575        for(int i = 2; i < dIterations; i++){
4576            // If needed, read luma in 1st direction, compute delta.
4577            if(!reached1){
4578                lumaEnd1 = sampleLuma(uv1);
4579                lumaEnd1 = lumaEnd1 - lumaLocalAverage;
4580            }
4581            // If needed, read luma in opposite direction, compute delta.
4582            if(!reached2){
4583                lumaEnd2 = sampleLuma(uv2);
4584                lumaEnd2 = lumaEnd2 - lumaLocalAverage;
4585            }
4586            // If the luma deltas at the current extremities is larger than the local gradient,
4587            // we have reached the side of the edge.
4588            reached1 = abs(lumaEnd1) >= gradientScaled;
4589            reached2 = abs(lumaEnd2) >= gradientScaled;
4590            reachedBoth = reached1 && reached2;
4591
4592            // If the side is not reached, we continue to explore in this direction,
4593            // with a variable quality.
4594            if(!reached1){
4595                uv1 -= offset * QUALITY(i);
4596            }
4597            if(!reached2){
4598                uv2 += offset * QUALITY(i);
4599            }
4600
4601            // If both sides have been reached, stop the exploration.
4602            if(reachedBoth){
4603                break;
4604            }
4605        }
4606    }
4607
4608    // Compute the distances to each side edge of the edge (!).
4609    float distance1 = isHorizontal ? (coords.x - uv1.x) : (coords.y - uv1.y);
4610    float distance2 = isHorizontal ? (uv2.x - coords.x) : (uv2.y - coords.y);
4611
4612    // In which direction is the side of the edge closer ?
4613    bool isDirection1 = distance1 < distance2;
4614    float distanceFinal = min(distance1, distance2);
4615
4616    // Thickness of the edge.
4617    float edgeThickness = (distance1 + distance2);
4618
4619    // Is the luma at center smaller than the local average ?
4620    bool isLumaCenterSmaller = lumaCenter < lumaLocalAverage;
4621
4622    // If the luma at center is smaller than at its neighbour,
4623    // the delta luma at each end should be positive (same variation).
4624    bool correctVariation1 = (lumaEnd1 < 0.0) != isLumaCenterSmaller;
4625    bool correctVariation2 = (lumaEnd2 < 0.0) != isLumaCenterSmaller;
4626
4627    // Only keep the result in the direction of the closer side of the edge.
4628    bool correctVariation = isDirection1 ? correctVariation1 : correctVariation2;
4629
4630    // UV offset: read in the direction of the closest side of the edge.
4631    float pixelOffset = - distanceFinal / edgeThickness + 0.5;
4632
4633    // If the luma variation is incorrect, do not offset.
4634    float finalOffset = correctVariation ? pixelOffset : 0.0;
4635
4636    // Sub-pixel shifting
4637    // Full weighted average of the luma over the 3x3 neighborhood.
4638    float lumaAverage = (1.0 / 12.0) * (2.0 * (lumaDownUp + lumaLeftRight) + lumaLeftCorners + lumaRightCorners);
4639    // Ratio of the delta between the global average and the center luma,
4640    // over the luma range in the 3x3 neighborhood.
4641    float subPixelOffset1 = clamp(abs(lumaAverage - lumaCenter) / lumaRange, 0.0, 1.0);
4642    float subPixelOffset2 = (-2.0 * subPixelOffset1 + 3.0) * subPixelOffset1 * subPixelOffset1;
4643    // Compute a sub-pixel offset based on this delta.
4644    float subPixelOffsetFinal = subPixelOffset2 * subPixelOffset2 * float(dSubpixelQuality);
4645
4646    // Pick the biggest of the two offsets.
4647    finalOffset = max(finalOffset, subPixelOffsetFinal);
4648
4649    // Compute the final UV coordinates.
4650    vec2 finalUv = coords;
4651    if(isHorizontal){
4652        finalUv.y += finalOffset * stepLength;
4653    } else {
4654        finalUv.x += finalOffset * stepLength;
4655    }
4656
4657    // Read the color at the new UV coordinates, and use it.
4658    gl_FragColor = texture2D(tColor, finalUv);
4659}
4660`
4660),Fv}var K6;function Poe(){if(K6)return Lu;K6=1,Object.defineProperty(Lu,"__esModule",{value:!0}),Lu.FxaaPass=Lu.FxaaParams=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=Ge(),o=et(),s=Ne(),h=Gr(),f=Coe(),y=Ct();Lu.FxaaParams={edgeThresholdMin:s.ParamDefinition.Numeric(.0312,{min:.0312,max:.0833,step:1e-4},{description:"Trims the algorithm from processing darks."}),edgeThresholdMax:s.ParamDefinition.Numeric(.063,{min:.063,max:.333,step:.001},{description:"The minimum amount of local contrast required to apply algorithm."}),iterations:s.ParamDefinition.Numeric(12,{min:0,max:16,step:1},{description:"Number of edge exploration steps."}),subpixelQuality:s.ParamDefinition.Numeric(.3,{min:0,max:1,step:.01},{description:"Choose the amount of sub-pixel aliasing removal."})};class _{constructor(u,m){this.webgl=u,this.renderable=d(u,m)}updateState(u){const{gl:m,state:v}=this.webgl;v.enable(m.SCISSOR_TEST),v.disable(m.BLEND),v.disable(m.DEPTH_TEST),v.depthMask(!1);const{x:b,y:P,width:C,height:l}=u;v.viewport(b,P,C,l),v.scissor(b,P,C,l),v.clearColor(0,0,0,1),m.clear(m.COLOR_BUFFER_BIT)}setSize(u,m){o.ValueCell.update(this.renderable.values.uTexSizeInv,c.Vec2.set(this.renderable.values.uTexSizeInv.ref.value,1/u,1/m))}update(u,m){const{values:v}=this.renderable,{edgeThresholdMin:b,edgeThresholdMax:P,iterations:C,subpixelQuality:l}=m;let S=!1;v.tColor.ref.value!==u&&(o.ValueCell.update(this.renderable.values.tColor,u),S=!0),v.dEdgeThresholdMin.ref.value!==b&&(S=!0),o.ValueCell.updateIfChanged(v.dEdgeThresholdMin,b),v.dEdgeThresholdMax.ref.value!==P&&(S=!0),o.ValueCell.updateIfChanged(v.dEdgeThresholdMax,P),v.dIterations.ref.value!==C&&(S=!0),o.ValueCell.updateIfChanged(v.dIterations,C),v.dSubpixelQuality.ref.value!==l&&(S=!0),o.ValueCell.updateIfChanged(v.dSubpixelQuality,l),S&&this.renderable.update()}render(u,m){y.isTimingMode&&this.webgl.timer.mark("FxaaPass.render"),m?m.bind():this.webgl.bindDrawingBuffer(),this.updateState(u),this.renderable.render(),y.isTimingMode&&this.webgl.timer.markEnd("FxaaPass.render")}}Lu.FxaaPass=_;const g={...e.QuadSchema,tColor:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),dEdgeThresholdMin:(0,r.DefineSpec)("number"),dEdgeThresholdMax:(0,r.DefineSpec)("number"),dIterations:(0,r.DefineSpec)("number"),dSubpixelQuality:(0,r.DefineSpec)("number")},a=(0,n.ShaderCode)("fxaa",h.quad_vert,f.fxaa_frag);function d(p,u){const m=u.getWidth(),v=u.getHeight(),b={...e.QuadValues,tColor:o.ValueCell.create(u),uTexSizeInv:o.ValueCell.create(c.Vec2.create(1/m,1/v)),dEdgeThresholdMin:o.ValueCell.create(.0312),dEdgeThresholdMax:o.ValueCell.create(.125),dIterations:o.ValueCell.create(12),dSubpixelQuality:o.ValueCell.create(.3)},P={...g},C=(0,i.createComputeRenderItem)(p,"triangles",a,P,b);return(0,t.createComputeRenderable)(C,b)}return Lu}var Nu={},Lv={},Y6;function Toe(){return Y6||(Y6=1,Object.defineProperty(Lv,"__esModule",{value:!0}),Lv.blend_vert=void 0,Lv.blend_vert=`
4661precision highp float;
4662
4663attribute vec2 aPosition;
4664uniform vec2 uQuadScale;
4665
4666uniform vec2 uTexSizeInv;
4667uniform vec4 uViewport;
4668
4669varying vec2 vUv;
4670varying vec4 vOffset[2];
4671
4672void SMAANeighborhoodBlendingVS(vec2 texCoord) {
4673    vOffset[0] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-1.0, 0.0, 0.0, 1.0); // WebGL port note: Changed sign in W component
4674    vOffset[1] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(1.0, 0.0, 0.0, -1.0); // WebGL port note: Changed sign in W component
4675}
4676
4677void main() {
4678    vec2 scale = uViewport.zw * uTexSizeInv;
4679    vec2 shift = uViewport.xy * uTexSizeInv;
4680    vUv = (aPosition + 1.0) * 0.5 * scale + shift;
4681    SMAANeighborhoodBlendingVS(vUv);
4682    vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale;
4683    gl_Position = vec4(position, 0.0, 1.0);
4684}
4685`),Lv}var Nv={},Q6;function xoe(){return Q6||(Q6=1,Object.defineProperty(Nv,"__esModule",{value:!0}),Nv.blend_frag=void 0,Nv.blend_frag=`
4686precision highp float;
4687precision highp int;
4688precision highp sampler2D;
4689
4690uniform sampler2D tWeights;
4691uniform sampler2D tColor;
4692uniform vec2 uTexSizeInv;
4693
4694varying vec2 vUv;
4695varying vec4 vOffset[2];
4696
4697vec4 SMAANeighborhoodBlendingPS(vec2 texCoord, vec4 offset[2], sampler2D colorTex, sampler2D blendTex) {
4698    // Fetch the blending weights for current pixel:
4699    vec4 a;
4700    a.xz = texture2D(blendTex, texCoord).xz;
4701    a.y = texture2D(blendTex, offset[1].zw).g;
4702    a.w = texture2D(blendTex, offset[1].xy).a;
4703
4704    // Is there any blending weight with a value greater than 0.0?
4705    if (dot(a, vec4(1.0, 1.0, 1.0, 1.0)) < 1e-5) {
4706        return texture2D(colorTex, texCoord, 0.0);
4707    } else {
4708        // Up to 4 lines can be crossing a pixel (one through each edge). We
4709        // favor blending by choosing the line with the maximum weight for each
4710        // direction:
4711        vec2 offset;
4712        offset.x = a.a > a.b ? a.a : -a.b; // left vs. right
4713        offset.y = a.g > a.r ? -a.g : a.r; // top vs. bottom // WebGL port note: Changed signs
4714
4715        // Then we go in the direction that has the maximum weight:
4716        if (abs(offset.x) > abs(offset.y)) { // horizontal vs. vertical
4717            offset.y = 0.0;
4718        } else {
4719            offset.x = 0.0;
4720        }
4721
4722        // Fetch the opposite color and lerp by hand:
4723        vec4 C = texture2D(colorTex, texCoord, 0.0);
4724        texCoord += sign(offset) * uTexSizeInv;
4725        vec4 Cop = texture2D(colorTex, texCoord, 0.0);
4726        float s = abs(offset.x) > abs(offset.y) ? abs(offset.x) : abs(offset.y);
4727
4728        // WebGL port note: Added gamma correction
4729        C.xyz = pow(C.xyz, vec3(2.2));
4730        Cop.xyz = pow(Cop.xyz, vec3(2.2));
4731        vec4 mixed = mix(C, Cop, s);
4732        mixed.xyz = pow(mixed.xyz, vec3(1.0 / 2.2));
4733
4734        return mixed;
4735    }
4736}
4737
4738void main() {
4739    gl_FragColor = SMAANeighborhoodBlendingPS(vUv, vOffset, tColor, tWeights);
4740}
4741`),Nv}var qv={},Z6;function Aoe(){return Z6||(Z6=1,Object.defineProperty(qv,"__esMo
4741dule",{value:!0}),qv.weights_vert=void 0,qv.weights_vert=`
4742precision highp float;
4743
4744attribute vec2 aPosition;
4745uniform vec2 uQuadScale;
4746
4747uniform vec2 uTexSizeInv;
4748uniform vec4 uViewport;
4749
4750varying vec2 vUv;
4751varying vec4 vOffset[3];
4752varying vec2 vPixCoord;
4753
4754void SMAABlendingWeightCalculationVS(vec2 texCoord) {
4755    vPixCoord = texCoord / uTexSizeInv;
4756
4757    // We will use these offsets for the searches later on (see @PSEUDO_GATHER4):
4758    vOffset[0] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-0.25, 0.125, 1.25, 0.125); // WebGL port note: Changed sign in Y and W components
4759    vOffset[1] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-0.125, 0.25, -0.125, -1.25); // WebGL port note: Changed sign in Y and W components
4760
4761    // And these for the searches, they indicate the ends of the loops:
4762    vOffset[2] = vec4(vOffset[0].xz, vOffset[1].yw) + vec4(-2.0, 2.0, -2.0, 2.0) * uTexSizeInv.xxyy * float(dMaxSearchSteps);
4763}
4764
4765void main() {
4766    vec2 scale = uViewport.zw * uTexSizeInv;
4767    vec2 shift = uViewport.xy * uTexSizeInv;
4768    vUv = (aPosition + 1.0) * 0.5 * scale + shift;
4769    SMAABlendingWeightCalculationVS(vUv);
4770    vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale;
4771    gl_Position = vec4(position, 0.0, 1.0);
4772}
4773`),qv}var Uv={},J6;function Moe(){return J6||(J6=1,Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.weights_frag=void 0,Uv.weights_frag=`
4774precision highp float;
4775precision highp int;
4776precision highp sampler2D;
4777
4778#define SMAASampleLevelZeroOffset(tex, coord, offset) texture2D(tex, coord + float(offset) * uTexSizeInv, 0.0)
4779
4780#define SMAA_AREATEX_MAX_DISTANCE 16
4781#define SMAA_AREATEX_PIXEL_SIZE (1.0 / vec2(160.0, 560.0))
4782#define SMAA_AREATEX_SUBTEX_SIZE (1.0 / 7.0)
4783
4784uniform sampler2D tEdges;
4785uniform sampler2D tArea;
4786uniform sampler2D tSearch;
4787uniform vec2 uTexSizeInv;
4788
4789varying vec2 vUv;
4790varying vec4 vOffset[3];
4791varying vec2 vPixCoord;
4792
4793#if __VERSION__ == 100
4794    vec2 round(vec2 x) {
4795        return sign(x) * floor(abs(x) + 0.5);
4796    }
4797#endif
4798
4799float SMAASearchLength(sampler2D searchTex, vec2 e, float bias, float scale) {
4800    // Not required if searchTex accesses are set to point:
4801    // float2 SEARCH_TEX_PIXEL_SIZE = 1.0 / float2(66.0, 33.0);
4802    // e = float2(bias, 0.0) + 0.5 * SEARCH_TEX_PIXEL_SIZE +
4803    //     e * float2(scale, 1.0) * float2(64.0, 32.0) * SEARCH_TEX_PIXEL_SIZE;
4804    e.r = bias + e.r * scale;
4805    return 255.0 * texture2D(searchTex, e, 0.0).r;
4806}
4807
4808float SMAASearchXLeft(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) {
4809    /**
4810     * @PSEUDO_GATHER4
4811     * This texCoord has been offset by (-0.25, -0.125) in the vertex shader to
4812     * sample between edge, thus fetching four edges in a row.
4813     * Sampling with different offsets in each direction allows to disambiguate
4814     * which edges are active from the four fetched ones.
4815     */
4816    vec2 e = vec2(0.0, 1.0);
4817
4818    for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for
4819        e = texture2D( edgesTex, texCoord, 0.0).rg;
4820        texCoord -= vec2(2.0, 0.0) * uTexSizeInv;
4821        if (!(texCoord.x > end && e.g > 0.8281 && e.r == 0.0)) break;
4822    }
4823
4824    // We correct the previous (-0.25, -0.125) offset we applied:
4825    texCoord.x += 0.25 * uTexSizeInv.x;
4826
4827    // The searches are bias by 1, so adjust the coords accordingly:
4828    texCoord.x += uTexSizeInv.x;
4829
4830    // Disambiguate the length added by the last step:
4831    texCoord.x += 2.0 * uTexSizeInv.x; // Undo last step
4832    texCoord.x -= uTexSizeInv.x * SMAASearchLength(searchTex, e, 0.0, 0.5);
4833
4834    return texCoord.x;
4835}
4836
4837float SMAASearchXRight(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) {
4838    vec2 e = vec2( 0.0, 1.0 );
4839
4840    for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for
4841        e = texture2D(edgesTex, texCoord, 0.0).rg;
4842        texCoord += vec2(2.0, 0.0) * uTexSizeInv;
4843        if (!(texCoord.x < end && e.g > 0.8281 && e.r == 0.0)) break;
4844    }
4845
4846    texCoord.x -= 0.25 * uTexSizeInv.x;
4847    texCoord.x -= uTexSizeInv.x;
4848    texCoord.x -= 2.0 * uTexSizeInv.x;
4849    texCoord.x += uTexSizeInv.x * SMAASearchLength( searchTex, e, 0.5, 0.5 );
4850
4851    return texCoord.x;
4852}
4853
4854float SMAASearchYUp(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) {
4855    vec2 e = vec2( 1.0, 0.0 );
4856
4857    for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for
4858        e = texture2D(edgesTex, texCoord, 0.0).rg;
4859        texCoord += vec2(0.0, 2.0) * uTexSizeInv; // WebGL port note: Changed sign
4860        if (!(texCoord.y > end && e.r > 0.8281 && e.g == 0.0)) break;
4861    }
4862
4863    texCoord.y -= 0.25 * uTexSizeInv.y; // WebGL port note: Changed sign
4864    texCoord.y -= uTexSizeInv.y; // WebGL port note: Changed sign
4865    texCoord.y -= 2.0 * uTexSizeInv.y; // WebGL port note: Changed sign
4866    texCoord.y += uTexSizeInv.y * SMAASearchLength(searchTex, e.gr, 0.0, 0.5); // WebGL port note: Changed sign
4867
4868    return texCoord.y;
4869}
4870
4871float SMAASearchYDown(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) {
4872    vec2 e = vec2( 1.0, 0.0 );
4873
4874    for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for
4875        e = texture2D(edgesTex, texCoord, 0.0).rg;
4876        texCoord -= vec2( 0.0, 2.0 ) * uTexSizeInv; // WebGL port note: Changed sign
4877        if (!(texCoord.y < end && e.r > 0.8281 && e.g == 0.0)) break;
4878    }
4879
4880    texCoord.y += 0.25 * uTexSizeInv.y; // WebGL port note: Changed sign
4881    texCoord.y += uTexSizeInv.y; // WebGL port note: Changed sign
4882    texCoord.y += 2.0 * uTexSizeInv.y; // WebGL port note: Changed sign
4883    texCoord.y -= uTexSizeInv.y * SMAASearchLength(searchTex, e.gr, 0.5, 0.5); // WebGL port note: Changed sign
4884
4885    return texCoord.y;
4886}
4887
4888vec2 SMAAArea(sampler2D areaTex, vec2 dist, float e1, float e2, float offset) {
4889    // Rounding prevents precision errors of bilinear filtering:
4890    vec2 texCoord = float(SMAA_AREATEX_MAX_DISTANCE) * round(4.0 * vec2(e1, e2)) + dist;
4891
4892    // We do a scale and bias for mapping to texel space:
4893    texCoord = SMAA_AREATEX_PIXEL_SIZE * texCoord + (0.5 * SMAA_AREATEX_PIXEL_SIZE);
4894
4895    // Move to proper place, according to the subpixel offset:
4896    texCoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset;
4897
4898    return texture2D(areaTex, texCoord, 0.0).rg;
4899}
4900
4901vec4 SMAABlendingWeightCalculationPS(vec2 texCoord, vec2 pixCoord, vec4 offset[3], sampler2D edgesTex, sampler2D areaTex, sampler2D searchTex, ivec4 subsampleIndices) {
4902    vec4 weights = vec4(0.0, 0.0, 0.0, 0.0);
4903
4904    vec2 e = texture2D(edgesTex, texCoord).rg;
4905
4906    if (e.g > 0.0) { // Edge at north
4907        vec2 d;
4908
4909        // Find the distance to the left:
4910        vec2 coords;
4911        coords.x = SMAASearchXLeft(edgesTex, searchTex, offset[0].xy, offset[2].x );
4912        coords.y = offset[1].y; // offset[1].y = texCoord.y - 0.25 * uTexSizeInv.y (@CROSSING_OFFSET)
4913        d.x = coords.x;
4914
4915        // Now fetch the left crossing edges, two at a time using bilinear
4916        // filtering. Sampling at -0.25 (see @CROSSING_OFFSET) enables to
4917        // discern what value each edge has:
4918        float e1 = texture2D(edgesTex, coords, 0.0).r;
4919
4920        // Find the distance to the right:
4921        coords.x = SMAASearchXRight(edgesTex, searchTex, offset[0].zw, offset[2].y);
4922        d.y = coords.x;
4923
4924        // We want the distances to be in pixel units (doing this here allow to
4925        // better interleave arithmetic and memory accesses):
4926        d = d / uTexSizeInv.x - pixCoord.x;
4927
4928        // SMAAArea below needs a sqrt, as the areas texture is compressed
4929        // quadratically:
4930        vec2 sqrt_d = sqrt(abs(d));
4931
4932        // Fetch the right crossing edges:
4933        coords.y -= 1.0 * uTexSizeInv.y; // WebGL port note: Added
4934        float e2 = SMAASampleLevelZeroOffset(edgesTex, coords, ivec2(1, 0)).r;
4935
4936        // Ok, we know how this pattern looks like, now it is time for getting
4937        // the actual area:
4938        weights.rg = SMAAArea(areaTex, sqrt_d, e1, e2, float(subsampleIndices.y));
4939    }
4940
4941    if (e.r > 0.0) { // Edge at west
4942        vec2 d;
4943
4944        // Find the distance to the top:
4945        vec2 coords;
4946
4947        coords.y = SMAASearchYUp(edgesTex, searchTex, offset[1].xy, offset[2].z );
4948        coords.x = offset[0].x; // offset[1].x = texCoord.x - 0.25 * uTexSizeInv.x;
4949        d.x = coords.y;
4950
4951        // Fetch the top crossing edges:
4952        float e1 = texture2D(edgesTex, coords, 0.0).g;
4953
4954        // Find the distance to the bottom:
4955        coords.y = SMAASearchYDown(edgesTex, searchTex, offset[1].zw, offset[2].w);
4956        d.y = coords.y;
4957
4958        // We want the distances to be in pixel units:
4959        d = d / uTexSizeInv.y - pixCoord.y;
4960
4961        // SMAAArea below needs a sqrt, as the areas texture is compressed
4962        // quadratically:
4963        vec2 sqrt_d = sqrt(abs(d));
4964
4965        // Fetch the bottom crossing edges:
4966        coords.y -= 1.0 * uTexSizeInv.y; // WebGL port note: Added
4967        float e2 = SMAASampleLevelZeroOffset(edgesTex, coords, ivec2(0, 1)).g;
4968
4969        // Get the area for this direction:
4970        weights.ba = SMAAArea(areaTex, sqrt_d, e1, e2, float(subsampleIndices.x));
4971    }
4972
4973    return weights;
4974}
4975
4976void main() {
4977    gl_FragColor = SMAABlendingWeightCalculationPS(vUv, vPixCoord, vOffset, tEdges, tArea, tSearch, ivec4(0.0));
4978}
4979`),Uv}var jv={},e8;function Doe(){return e8||(e8=1,Object.defineProperty(jv,"__esModule",{value:!0}),jv.edges_vert=void 0,jv.edges_vert=`
4980precision highp float;
4981
4982attribute vec2 aPosition;
4983uniform vec2 uQuadScale;
4984
4985uniform vec2 uTexSizeInv;
4986uniform vec4 uViewport;
4987
4988varying vec2 vUv;
4989varying vec4 vOffset[3];
4990
4991void SMAAEdgeDetectionVS(vec2 texCoord) {
4992    vOffset[0] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-1.0, 0.0, 0.0, 1.0); // WebGL port note: Changed sign in W component
4993    vOffset[1] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(1.0, 0.0, 0.0, -1.0); // WebGL port note: Changed sign in W component
4994    vOffset[2] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-2.0, 0.0, 0.0, 2.0); // WebGL port note: Changed sign in W component
4995}
4996
4997void main() {
4998    vec2 scale = uViewport.zw * uTexSizeInv;
4999    vec2 shift = uViewport.xy * uTexSizeInv;
5000    vUv = (aPosition + 1.0) * 0.5 * scale + shift;
5001    SMAAEdgeDetectionVS(vUv);
5002    vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale;
5003    gl_Position = vec4(position, 0.0, 1.0);
5004}
5005`),jv}var Gv={},t8;function Ioe(){return t8||(t8=1,Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.edges_frag=void 0,Gv.edges_frag=`
5006precision highp float;
5007precision highp int;
5008precision highp sampler2D;
5009
5010uniform sampler2D tColor;
5011uniform vec2 uTexSizeInv;
5012
5013varying vec2 vUv;
5014varying vec4 vOffset[3];
5015
5016vec4 SMAAColorEdgeDetectionPS(vec2 texcoord, vec4 offset[3], sampler2D colorTex) {
5017    vec2 threshold = vec2(dEdgeThreshold, dEdgeThreshold);
5018
5019    // Calculate color deltas:
5020    vec4 delta;
5021    vec3 C = texture2D(colorTex, texcoord).rgb;
5022
5023    vec3 Cleft = texture2D(colorTex, offset[0].xy).rgb;
5024    vec3 t = abs(C - Cleft);
5025    delta.x = max(max(t.r, t.g), t.b);
5026
5027    vec3 Ctop = texture2D(colorTex, offset[0].zw).rgb;
5028    t = abs(C - Ctop);
5029    delta.y = max(max(t.r, t.g), t.b);
5030
5031    // We do the usual threshold:
5032    vec2 edges = step(threshold, delta.xy);
5033
5034    // Then discard if there is no edge:
5035    if (dot(edges, vec2(1.0, 1.0 )) == 0.0)
5036        discard;
5037
5038    // Calculate right and bottom deltas:
5039    vec3 Cright = texture2D(colorTex, offset[1].xy).rgb;
5040    t = abs( C - Cright );
5041    delta.z = max(max(t.r, t.g), t.b);
5042
5043    vec3 Cbottom  = texture2D(colorTex, offset[1].zw).rgb;
5044    t = abs(C - Cbottom);
5045    delta.w = max(max(t.r, t.g), t.b);
5046
5047    // Calculate the maximum delta in the direct neighborhood:
5048    float maxDelta = max(max(max(delta.x, delta.y), delta.z), delta.w );
5049
5050    // Calculate left-left and top-top deltas:
5051    vec3 Cleftleft  = texture2D(colorTex, offset[2].xy).rgb;
5052    t = abs( C - Cleftleft );
5053    delta.z = max(max(t.r, t.g), t.b);
5054
5055    vec3 Ctoptop = texture2D(colorTex, offset[2].zw).rgb;
5056    t = abs(C - Ctoptop);
5057    delta.w = max(max(t.r, t.g), t.b);
5058
5059    // Calculate the final maximum delta:
5060    maxDelta = max(max(maxDelta, delta.z), delta.w);
5061
5062    // Local contrast adaptation in action:
5063    edges.xy *= step(0.5 * maxDelta, delta.xy);
5064
5065    return vec4(edges, 0.0, 0.0);
5066}
5067
5068void main() {
5069    gl_FragColor = SMAAColorEdgeDetectionPS(vUv, vOffset, tColor);
5070}
5071`),Gv}var r8;function woe(){if(r8)return Nu;
5071r8=1,Object.defineProperty(Nu,"__esModule",{value:!0}),Nu.SmaaPass=Nu.SmaaParams=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=bn(),o=Ge(),s=et(),h=Ne(),f=Toe(),y=xoe(),_=Aoe(),g=Moe(),a=Doe(),d=Ioe(),p=Kn(),u=Ct();Nu.SmaaParams={edgeThreshold:h.ParamDefinition.Numeric(.1,{min:.05,max:.15,step:.01}),maxSearchSteps:h.ParamDefinition.Numeric(16,{min:0,max:32,step:1})};class m{get supported(){return this._supported}constructor(R,E){if(this.webgl=R,this._supported=!1,typeof HTMLImageElement>"u"){u.isDebugMode&&console.log('Missing "HTMLImageElement" required for "SMAA"');return}const I=E.getWidth(),B=E.getHeight();this.edgesTarget=R.createRenderTarget(I,B,!1,"uint8","linear"),this.weightsTarget=R.createRenderTarget(I,B,!1,"uint8","linear"),this.edgesRenderable=P(R,E),this.weightsRenderable=S(R,this.edgesTarget.texture),this.blendRenderable=x(R,E,this.weightsTarget.texture),this._supported=!0}getByteCount(){return this.supported?this.edgesTarget.getByteCount()+this.weightsTarget.getByteCount():0}updateState(R){const{gl:E,state:I}=this.webgl;I.enable(E.SCISSOR_TEST),I.disable(E.BLEND),I.disable(E.DEPTH_TEST),I.depthMask(!1);const{x:B,y:w,width:O,height:F}=R;I.viewport(B,w,O,F),I.scissor(B,w,O,F),I.colorMask(!0,!0,!0,!0),I.clearColor(0,0,0,1),E.clear(E.COLOR_BUFFER_BIT),s.ValueCell.update(this.edgesRenderable.values.uViewport,p.Viewport.toVec4(this.edgesRenderable.values.uViewport.ref.value,R)),s.ValueCell.update(this.weightsRenderable.values.uViewport,p.Viewport.toVec4(this.weightsRenderable.values.uViewport.ref.value,R)),s.ValueCell.update(this.blendRenderable.values.uViewport,p.Viewport.toVec4(this.blendRenderable.values.uViewport.ref.value,R))}setSize(R,E){const I=this.edgesTarget.getWidth(),B=this.edgesTarget.getHeight();(R!==I||E!==B)&&(this.edgesTarget.setSize(R,E),this.weightsTarget.setSize(R,E),s.ValueCell.update(this.edgesRenderable.values.uTexSizeInv,o.Vec2.set(this.edgesRenderable.values.uTexSizeInv.ref.value,1/R,1/E)),s.ValueCell.update(this.weightsRenderable.values.uTexSizeInv,o.Vec2.set(this.weightsRenderable.values.uTexSizeInv.ref.value,1/R,1/E)),s.ValueCell.update(this.blendRenderable.values.uTexSizeInv,o.Vec2.set(this.blendRenderable.values.uTexSizeInv.ref.value,1/R,1/E)))}update(R,E){let I=!1;this.edgesRenderable.values.tColor.ref.value!==R&&(s.ValueCell.update(this.edgesRenderable.values.tColor,R),I=!0),this.edgesRenderable.values.dEdgeThreshold.ref.value!==E.edgeThreshold&&(s.ValueCell.update(this.edgesRenderable.values.dEdgeThreshold,E.edgeThreshold),I=!0),I&&this.edgesRenderable.update(),this.weightsRenderable.values.dMaxSearchSteps.ref.value!==E.maxSearchSteps&&(s.ValueCell.update(this.weightsRenderable.values.dMaxSearchSteps,E.maxSearchSteps),this.weightsRenderable.update()),this.blendRenderable.values.tColor.ref.value!==R&&(s.ValueCell.update(this.blendRenderable.values.tColor,R),this.blendRenderable.update())}render(R,E){u.isTimingMode&&this.webgl.timer.mark("SmaaPass.render"),this.edgesTarget.bind(),this.updateState(R),this.edgesRenderable.render(),this.weightsTarget.bind(),this.updateState(R),this.weightsRenderable.render(),E?E.bind():this.webgl.bindDrawingBuffer(),this.updateState(R),this.blendRenderable.render(),u.isTimingMode&&this.webgl.timer.markEnd("SmaaPass.render")}}Nu.SmaaPass=m;const v={...e.QuadSchema,tColor:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),uViewport:(0,r.UniformSpec)("v4"),dEdgeThreshold:(0,r.DefineSpec)("number")},b=(0,n.ShaderCode)("smaa-edges",a.edges_vert,d.edges_frag);function P(V,R){const E=R.getWidth(),I=R.getHeight(),B={...e.QuadValues,tColor:s.ValueCell.create(R),uTexSizeInv:s.ValueCell.create(o.Vec2.create(1/E,1/I)),uViewport:s.ValueCell.create((0,o.Vec4)()),dEdgeThreshold:s.ValueCell.create(.1)},w={...v},O=(0,i.createComputeRenderItem)(V,"triangles",b,w,B);return(0,t.createComputeRenderable)(O,B)}const C={...e.QuadSchema,tEdges:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tArea:(0,r.TextureSpec)("texture","rgb","ubyte","linear"),tSearch:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSizeInv:(0,r.UniformSpec)("v2"),uViewport:(0,r.UniformSpec)("v4"),dMaxSearchSteps:(0,r.DefineSpec)("number")},l=(0,n.ShaderCode)("smaa-weights",_.weights_vert,g.weights_frag);function S(V,R){const E=R.getWidth(),I=R.getHeight(),B=V.resources.texture("image-uint8","rgb","ubyte","linear"),w=V.resources.texture("image-uint8","rgba","ubyte","nearest"),O={...e.QuadValues,tEdges:s.ValueCell.create(R),tArea:s.ValueCell.create(B),tSearch:s.ValueCell.create(w),uTexSizeInv:s.ValueCell.create(o.Vec2.create(1/E,1/I)),uViewport:s.ValueCell.create((0,o.Vec4)()),dMaxSearchSteps:s.ValueCell.create(16)};(0,c.loadImageTexture)(M(),O.tArea,B),(0,c.loadImageTexture)(D(),O.tSearch,w);const F={...C},L=(0,i.createComputeRenderItem)(V,"triangles",l,F,O);return(0,t.createComputeRenderable)(L,O)}const T={...e.QuadSchema,tColor:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tWeights:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),uViewport:(0,r.UniformSpec)("v4")},A=(0,n.ShaderCode)("smaa-blend",f.blend_vert,y.blend_frag);function x(V,R,E){const I=R.getWidth(),B=R.getHeight(),w={...e.QuadValues,tColor:s.ValueCell.create(R),tWeights:s.ValueCell.create(E),uTexSizeInv:s.ValueCell.create(o.Vec2.create(1/I,1/B)),uViewport:s.ValueCell.create((0,o.Vec4)())},O={...T},F=(0,i.createComputeRenderItem)(V,"triangles",A,O,w);return(0,t.createComputeRenderable)(F,w)}function M
vendor: 44,315 bytes, line 5071
5071(){return"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAIwCAIAAACOVPcQAACBeklEQVR42u39W4xlWXrnh/3WWvuciIzMrKxrV8/0rWbY0+SQFKcb4owIkSIFCjY9AC1BT/LYBozRi+EX+cV+8IMsYAaCwRcBwjzMiw2jAWtgwC8WR5Q8mDFHZLNHTarZGrLJJllt1W2qKrsumZWZcTvn7L3W54e1vrXX3vuciLPPORFR1XE2EomorB0nVuz//r71re/y/1eMvb4Cb3N11xV/PP/2v4UBAwJG/7H8urx6/25/Gf8O5hypMQ0EEEQwAqLfoN/Z+97f/SW+/NvcgQk4sGBJK6H7N4PFVL+K+e0N11yNfkKvwUdwdlUAXPHHL38oa15f/i/46Ih6SuMSPmLAYAwyRKn7dfMGH97jaMFBYCJUgotIC2YAdu+LyW9vvubxAP8kAL8H/koAuOKP3+q6+xGnd5kdYCeECnGIJViwGJMAkQKfDvB3WZxjLKGh8VSCCzhwEWBpMc5/kBbjawT4HnwJfhr+pPBIu7uu+OOTo9vsmtQcniMBGkKFd4jDWMSCRUpLjJYNJkM+IRzQ+PQvIeAMTrBS2LEiaiR9b/5PuT6Ap/AcfAFO4Y3dA3DFH7/VS+M8k4baEAQfMI4QfbVDDGIRg7GKaIY52qAjTAgTvGBAPGIIghOCYAUrGFNgzA7Q3QhgCwfwAnwe5vDejgG44o/fbm1C5ZlYQvQDARPAIQGxCWBM+wWl37ZQESb4gImexGMDouhGLx1Cst0Saa4b4AqO4Hk4gxo+3DHAV/nx27p3JziPM2pVgoiia5MdEzCGULprIN7gEEeQ5IQxEBBBQnxhsDb5auGmAAYcHMA9eAAz8PBol8/xij9+C4Djlim4gJjWcwZBhCBgMIIYxGAVIkH3ZtcBuLdtRFMWsPGoY9rN+HoBji9VBYdwD2ZQg4cnO7OSq/z4rU5KKdwVbFAjNojCQzTlCLPFSxtamwh2jMUcEgg2Wm/6XgErIBhBckQtGN3CzbVacERgCnfgLswhnvqf7QyAq/z4rRZm1YglYE3affGITaZsdIe2FmMIpnOCap25I6jt2kCwCW0D1uAD9sZctNGXcQIHCkINDQgc78aCr+zjtw3BU/ijdpw3zhCwcaONwBvdeS2YZKkJNJsMPf2JKEvC28RXxxI0ASJyzQCjCEQrO4Q7sFArEzjZhaFc4cdv+/JFdKULM4px0DfUBI2hIsy06BqLhGTQEVdbfAIZXYMPesq6VoCHICzUyjwInO4Y411//LYLs6TDa9wvg2CC2rElgAnpTBziThxaL22MYhzfkghz6GAs2VHbbdM91VZu1MEEpupMMwKyVTb5ij9+u4VJG/5EgEMMmFF01cFai3isRbKbzb+YaU/MQbAm2XSMoUPAmvZzbuKYRIFApbtlrfFuUGd6vq2hXNnH78ZLh/iFhsQG3T4D1ib7k5CC6vY0DCbtrohgLEIClXiGtl10zc0CnEGIhhatLBva7NP58Tvw0qE8yWhARLQ8h4+AhQSP+I4F5xoU+VilGRJs6wnS7ruti/4KvAY/CfdgqjsMy4pf8fodQO8/gnuX3f/3xi3om1/h7THr+co3x93PP9+FBUfbNUjcjEmhcrkT+8K7ml7V10Jo05mpIEFy1NmCJWx9SIKKt+EjAL4Ez8EBVOB6havuT/rByPvHXK+9zUcfcbb254+9fydJknYnRr1oGfdaiAgpxu1Rx/Rek8KISftx3L+DfsLWAANn8Hvw0/AFeAGO9DFV3c6D+CcWbL8Dj9e7f+T1k8AZv/d7+PXWM/Z+VvdCrIvuAKO09RpEEQJM0Ci6+B4xhTWr4cZNOvhktabw0ta0rSJmqz3Yw5/AKXwenod7cAhTmBSPKf6JBdvH8IP17h95pXqw50/+BFnj88fev4NchyaK47OPhhtI8RFSvAfDSNh0Ck0p2gLxGkib5NJj/JWCr90EWQJvwBzO4AHcgztwAFN1evHPUVGwfXON+0debT1YeGON9Yy9/63X+OguiwmhIhQhD7l4sMqlG3D86Suc3qWZ4rWjI1X7u0Ytw6x3rIMeIOPDprfe2XzNgyj6PahhBjO4C3e6puDgXrdg+/5l948vF3bqwZetZ+z9Rx9zdIY5pInPK4Nk0t+l52xdK2B45Qd87nM8fsD5EfUhIcJcERw4RdqqH7Yde5V7m1vhNmtedkz6EDzUMF/2jJYWbC+4fzzA/Y+/8PPH3j9dcBAPIRP8JLXd5BpAu03aziOL3VVHZzz3CXWDPWd+SH2AnxIqQoTZpo9Ckc6HIrFbAbzNmlcg8Ag8NFDDAhbJvTBZXbC94P7t68EXfv6o+21gUtPETU7bbkLxvNKRFG2+KXzvtObonPP4rBvsgmaKj404DlshFole1Glfh02fE7bYR7dZ82oTewIBGn1Md6CG6YUF26X376oevOLzx95vhUmgblI6LBZwTCDY7vMq0op5WVXgsObOXJ+1x3qaBl9j1FeLxbhU9w1F+Wiba6s1X/TBz1LnUfuYDi4r2C69f1f14BWfP+p+W2GFKuC9phcELMYRRLur9DEZTUdEH+iEqWdaM7X4WOoPGI+ZYD2+wcQ+y+ioHUZ9dTDbArzxmi/bJI9BND0Ynd6lBdve/butBw8+f/T9D3ABa3AG8W3VPX4hBin+bj8dMMmSpp5pg7fJ6xrBFE2WQQEWnV8Qg3FbAWzYfM1rREEnmvkN2o1+acG2d/9u68GDzx91v3mAjb1zkpqT21OipPKO0b9TO5W0nTdOmAQm0TObts3aBKgwARtoPDiCT0gHgwnbArzxmtcLc08HgF1asN0C4Ms/fvD5I+7PhfqyXE/b7RbbrGyRQRT9ARZcwAUmgdoz0ehJ9Fn7QAhUjhDAQSw0bV3T3WbNa59jzmiP6GsWbGXDX2ytjy8+f9T97fiBPq9YeLdBmyuizZHaqXITnXiMUEEVcJ7K4j3BFPurtB4bixW8wTpweL8DC95szWMOqucFYGsWbGU7p3TxxxefP+r+oTVktxY0v5hbq3KiOKYnY8ddJVSBxuMMVffNbxwIOERShst73HZ78DZrHpmJmH3K6sGz0fe3UUj0eyRrSCGTTc+rjVNoGzNSv05srAxUBh8IhqChiQgVNIIBH3AVPnrsnXQZbLTm8ammv8eVXn/vWpaTem5IXRlt+U/LA21zhSb9cye6jcOfCnOwhIAYXAMVTUNV0QhVha9xjgA27ODJbLbmitt3tRN80lqG6N/khgot4ZVlOyO4WNg3OIMzhIZQpUEHieg2im6F91hB3I2tubql6BYNN9Hj5S7G0G2tahslBWKDnOiIvuAEDzakDQKDNFQT6gbn8E2y4BBubM230YIpBnDbMa+y3dx0n1S0BtuG62lCCXwcY0F72T1VRR3t2ONcsmDjbmzNt9RFs2LO2hQNyb022JisaI8rAWuw4HI3FuAIhZdOGIcdjLJvvObqlpqvWTJnnQbyi/1M9O8UxWhBs//H42I0q1Yb/XPGONzcmm+ri172mHKvZBpHkJaNJz6v9jxqiklDj3U4CA2ugpAaYMWqNXsdXbmJNd9egCnJEsphXNM+MnK3m0FCJ5S1kmJpa3DgPVbnQnPGWIDspW9ozbcO4K/9LkfaQO2KHuqlfFXSbdNzcEcwoqNEFE9zcIXu9/6n/ym/BC/C3aJLzEKPuYVlbFnfhZ8kcWxV3dbv4bKl28566wD+8C53aw49lTABp9PWbsB+knfc/Li3eVizf5vv/xmvnPKg5ihwKEwlrcHqucuVcVOxEv8aH37E3ZqpZypUulrHEtIWKUr+txHg+ojZDGlwnqmkGlzcVi1dLiNSJiHjfbRNOPwKpx9TVdTn3K05DBx4psIk4Ei8aCkJahRgffk4YnEXe07T4H2RR1u27E6wfQsBDofUgjFUFnwC2AiVtA+05J2zpiDK2Oa0c5fmAecN1iJzmpqFZxqYBCYhFTCsUNEmUnIcZ6aEA5rQVhEywG6w7HSW02XfOoBlQmjwulOFQAg66SvJblrTEX1YtJ3uG15T/BH1OfOQeuR8g/c0gdpT5fx2SKbs9EfHTKdM8A1GaJRHLVIwhcGyydZsbifAFVKl5EMKNU2Hryo+06BeTgqnxzYjThVySDikbtJPieco75lYfKAJOMEZBTjoITuWHXXZVhcUDIS2hpiXHV9Ku4u44bN5OYLDOkJo8w+xJSMbhBRHEdEs9JZUCkQrPMAvaHyLkxgkEHxiNkx/x2YB0mGsQ8EUWj/stW5YLhtS5SMu+/YBbNPDCkGTUybN8krRLBGPlZkVOA0j+a1+rkyQKWGaPHPLZOkJhioQYnVZ2hS3zVxMtgC46KuRwbJNd9nV2PHgb36F194ecf/Yeu2vAFe5nm/bRBFrnY4BauE8ERmZRFUn0k8hbftiVYSKMEme2dJCJSCGYAlNqh87bXOPdUkGy24P6d1ll21MBqqx48Fvv8ZHH8HZFY7j/uAq1xMJUFqCSUlJPmNbIiNsmwuMs/q9CMtsZsFO6SprzCS1Z7QL8xCQClEelpjTduDMsmWD8S1PT152BtvmIGvUeDA/yRn83u/x0/4qxoPHjx+PXY9pqX9bgMvh/Nz9kpP4pOe1/fYf3axUiMdHLlPpZCNjgtNFAhcHEDxTumNONhHrBduW+vOyY++70WWnPXj98eA4kOt/mj/5E05l9+O4o8ePx67HFqyC+qSSnyselqjZGaVK2TadbFLPWAQ4NBhHqDCCV7OTpo34AlSSylPtIdd2AJZlyzYQrDJ5lcWGNceD80CunPLGGzsfD+7wRb95NevJI5docQ3tgCyr5bGnyaPRlmwNsFELViOOx9loebGNq2moDOKpHLVP5al2cymWHbkfzGXL7kfRl44H9wZy33tvt+PB/Xnf93e+nh5ZlU18wCiRUa9m7kib9LYuOk+hudQNbxwm0AQqbfloimaB2lM5fChex+ylMwuTbfmXQtmWlenZljbdXTLuOxjI/fDDHY4Hjx8/Hrse0zXfPFxbUN1kKqSCCSk50m0Ajtx3ub9XHBKHXESb8iO6E+qGytF4nO0OG3SXzbJlhxBnKtKyl0NwybjvYCD30aMdjgePHz8eu56SVTBbgxJMliQ3Oauwg0QHxXE2Ez/EIReLdQj42Gzb4CLS0YJD9xUx7bsi0vJi5mUbW1QzL0h0PFk17rtiIPfJk52MB48fPx67npJJwyrBa2RCCQRTbGZSPCxTPOiND4G2pYyOQ4h4jINIJh5wFU1NFZt+IsZ59LSnDqBjZ2awbOku+yInunLcd8VA7rNnOxkPHj9+PGY9B0MWJJNozOJmlglvDMXDEozdhQWbgs/U6oBanGzLrdSNNnZFjOkmbi5bNt1lX7JLLhn3vXAg9/h4y/Hg8ePHI9dzQMEkWCgdRfYykYKnkP7D4rIujsujaKPBsB54vE2TS00ccvFY/Tth7JXeq1hz+qgVy04sAJawTsvOknHfCwdyT062HA8eP348Zj0vdoXF4pilKa2BROed+9fyw9rWRXeTFXESMOanvDZfJuJaSXouQdMdDJZtekZcLLvEeK04d8m474UDuaenW44Hjx8/Xns9YYqZpszGWB3AN/4VHw+k7WSFtJ3Qicuqb/NlVmgXWsxh570xg2UwxUw3WfO6B5nOuO8aA7lnZxuPB48fPx6znm1i4bsfcbaptF3zNT78eFPtwi1OaCNOqp1x3zUGcs/PN++AGD1+fMXrSVm2baTtPhPahbPhA71wIHd2bXzRa69nG+3CraTtPivahV/55tXWg8fyRY/9AdsY8VbSdp8V7cKrrgdfM//z6ILQFtJ2nxHtwmuoB4/kf74+gLeRtvvMaBdeSz34+vifx0YG20jbfTa0C6+tHrwe//NmOG0L8EbSdp8R7cLrrQe/996O+ai3ujQOskpTNULa7jOjXXj99eCd8lHvoFiwsbTdZ0a78PrrwTvlo966pLuRtB2fFe3Cm6oHP9kNH/W2FryxtN1nTLvwRurBO+Kj3pWXHidtx2dFu/Bm68Fb81HvykuPlrb7LGkX3mw9eGs+6h1Y8MbSdjegXcguQLjmevDpTQLMxtJ2N6NdyBZu9AbrwVvwUW+LbteULUpCdqm0HTelXbhNPe8G68Gb8lFvVfYfSNuxvrTdTWoXbozAzdaDZzfkorOj1oxVxlIMlpSIlpLrt8D4hrQL17z+c3h6hU/wv4Q/utps4+bm+6P/hIcf0JwQ5oQGPBL0eKPTYEXTW+eL/2DKn73J9BTXYANG57hz1cEMviVf/4tf5b/6C5pTQkMIWoAq7hTpOJjtAM4pxKu5vg5vXeUrtI09/Mo/5H+4z+Mp5xULh7cEm2QbRP2tFIKR7WM3fPf/jZ3SWCqLM2l4NxID5zB72HQXv3jj/8mLR5xXNA5v8EbFQEz7PpRfl1+MB/hlAN65qgDn3wTgH13hK7T59bmP+NIx1SHHU84nLOITt3iVz8mNO+lPrjGAnBFqmioNn1mTyk1ta47R6d4MrX7tjrnjYUpdUbv2rVr6YpVfsGG58AG8Ah9eyUN8CX4WfgV+G8LVWPDGb+Zd4cU584CtqSbMKxauxTg+dyn/LkVgA+IR8KHtejeFKRtTmLLpxN6mYVLjYxwXf5x2VofiZcp/lwKk4wGOpYDnoIZPdg/AAbwMfx0+ge9dgZvYjuqKe4HnGnykYo5TvJbG0Vj12JagRhwKa44H95ShkZa5RyLGGdfYvG7aw1TsF6iapPAS29mNS3NmsTQZCmgTzFwgL3upCTgtBTRwvGMAKrgLn4evwin8+afJRcff+8izUGUM63GOOuAs3tJkw7J4kyoNreqrpO6cYLQeFUd7TTpr5YOTLc9RUUogUOVJQ1GYJaFLAW0oTmKyYS46ZooP4S4EON3xQ5zC8/CX4CnM4c1PE8ApexpoYuzqlP3d4S3OJP8ZDK7cKWNaTlqmgDiiHwl1YsE41w1zT4iRTm3DBqxvOUsbMKKDa/EHxagtnta072ejc3DOIh5ojvh8l3tk1JF/AV6FU6jh3U8HwEazLgdCLYSQ+MYiAI2ltomkzttUb0gGHdSUUgsIYjTzLG3mObX4FBRaYtpDVNZrih9TgTeYOBxsEnN1gOCTM8Bsw/ieMc75w9kuAT6A+/AiHGvN/+Gn4KRkiuzpNNDYhDGFndWRpE6SVfm8U5bxnSgVV2jrg6JCKmneqey8VMFgq2+AM/i4L4RUbfSi27lNXZ7R7W9RTcq/q9fk4Xw3AMQd4I5ifAZz8FcVtm9SAom/dyN4lczJQW/kC42ZrHgcCoIf1oVMKkVItmMBi9cOeNHGLqOZk+QqQmrbc5YmYgxELUUN35z2iohstgfLIFmcMV7s4CFmI74L9+EFmGsi+tGnAOD4Yk9gIpo01Y4cA43BWGygMdr4YZekG3OBIUXXNukvJS8tqa06e+lSDCtnqqMFu6hWHXCF+WaYt64m9QBmNxi7Ioy7D+fa1yHw+FMAcPt7SysFLtoG4PXAk7JOA3aAxBRqUiAdU9Yp5lK3HLSRFtOim0sa8euEt08xvKjYjzeJ2GU7YawexrnKI9tmobInjFXCewpwriY9+RR4aaezFhMhGCppKwom0ChrgFlKzyPKkGlTW1YQrE9HJqu8hKGgMc6hVi5QRq0PZxNfrYNgE64utmRv6KKHRpxf6VDUaOvNP5jCEx5q185My/7RKz69UQu2im5k4/eownpxZxNLwiZ1AZTO2ZjWjkU9uaB2HFn6Q3u0JcsSx/qV9hTEApRzeBLDJQXxYmTnq7bdLa3+uqFrxLJ5w1TehnNHx5ECvCh2g2c3hHH5YsfdaSKddztfjQ6imKFGSyFwlLzxEGPp6r5IevVjk1AMx3wMqi1NxDVjLBiPs9tbsCkIY5we5/ML22zrCScFxnNtzsr9Wcc3CnD+pYO+4VXXiDE0oc/vQQ/fDK3oPESJMYXNmJa/DuloJZkcTpcYE8lIH8Dz8DJMiynNC86Mb2lNaaqP/+L7f2fcE/yP7/Lde8xfgSOdMxvOixZf/9p3+M4hT1+F+zApxg9XfUvYjc8qX2lfOOpK2gNRtB4flpFu9FTKCp2XJRgXnX6olp1zyYjTKJSkGmLE2NjUr1bxFM4AeAAHBUFIeSLqXR+NvH/M9fOnfHzOD2vCSyQJKzfgsCh+yi/Mmc35F2fUrw7miW33W9hBD1vpuUojFphIyvg7aTeoymDkIkeW3XLHmguMzbIAJejN6B5MDrhipE2y6SoFRO/AK/AcHHZHNIfiWrEe/C6cr3f/yOvrQKB+zMM55/GQdLDsR+ifr5Fiuu+/y+M78LzOE5dsNuXC3PYvYWd8NXvphLSkJIasrlD2/HOqQ+RjcRdjKTGWYhhVUm4yxlyiGPuMsZR7sMCHUBeTuNWA7if+ifXgc/hovftHXs/DV+Fvwe+f8shzMiMcweFgBly3//vwJfg5AN4450fn1Hd1Rm1aBLu22Dy3y3H2+OqMemkbGZ4jozcDjJf6596xOLpC0eMTHbKnxLxH27uZ/bMTGs2jOaMOY4m87CfQwF0dw53oa1k80JRuz/XgS+8fX3N9Af4qPIMfzKgCp4H5TDGe9GGeFPzSsZz80SlPTxXjgwJmC45njzgt2vbQ4b4OAdUK4/vWhO8d8v6EE8fMUsfakXbPpFJeLs2ubM/qdm/la3WP91uWhxXHjoWhyRUq2iJ/+5mA73zwIIo+LoZ/SgvIRjAd1IMvvn98PfgOvAJfhhm8scAKVWDuaRaK8aQ9f7vuPDH6Bj47ZXau7rqYJ66mTDwEDU6lLbCjCK0qTXyl5mnDoeNRxanj3FJbaksTk0faXxHxLrssgPkWB9LnA/MFleXcJozzjwsUvUG0X/QCve51qkMDXp9mtcyOy3rwBfdvVJK7D6/ACSzg3RoruIq5UDeESfEmVclDxnniU82vxMLtceD0hGZWzBNPMM/jSPne2OVatiTKUpY5vY7gc0LdUAWeWM5tH+O2I66AOWw9xT2BuyRVLGdoDHUsVRXOo/c+ZdRXvFfnxWyIV4upFLCl9eAL7h8Zv0QH8Ry8pA2cHzQpGesctVA37ZtklBTgHjyvdSeKY/RZw/kJMk0Y25cSNRWSigQtlULPTw+kzuJPeYEkXjQRpoGZobYsLF79pyd1dMRHInbgFTZqNLhDqiIsTNpoex2WLcy0/X6rHcdMMQvFSd5dWA++4P7xv89deACnmr36uGlL69bRCL6BSZsS6c0TU2TKK5gtWCzgAOOwQcurqk9j8whvziZSMLcq5hbuwBEsYjopUBkqw1yYBGpLA97SRElEmx5MCInBY5vgLk94iKqSWmhIGmkJ4Bi9m4L645J68LyY4wsFYBfUg5feP/6gWWm58IEmKQM89hq7KsZNaKtP5TxxrUZZVkNmMJtjbKrGxLNEbHPJxhqy7lAmbC32ZqeF6lTaknRWcYaFpfLUBh/rwaQycCCJmW15Kstv6jRHyJFry2C1ahkkIW0LO75s61+owxK1y3XqweX9m5YLM2DPFeOjn/iiqCKJ+yKXF8t5Yl/kNsqaSCryxPq5xWTFIaP8KSW0RYxqupaUf0RcTNSSdJZGcKYdYA6kdtrtmyBckfKXwqk0pHpUHlwWaffjNRBYFPUDWa8e3Lt/o0R0CdisKDM89cX0pvRHEfM8ca4t0s2Xx4kgo91MPQJ/0c9MQYq0co8MBh7bz1fio0UUHLR4aAIOvOmoYO6kwlEVODSSTliWtOtH6sPkrtctF9ZtJ9GIerBskvhdVS5cFNv9s1BU0AbdUgdK4FG+dRnjFmDTzniRMdZO1QhzMK355vigbdkpz9P6qjUGE5J2qAcXmwJ20cZUiAD0z+pGMx6xkzJkmEf40Hr4qZfVg2XzF9YOyoV5BjzVkUJngKf8lgNYwKECEHrCNDrWZzMlflS3yBhr/InyoUgBc/lKT4pxVrrC6g1YwcceK3BmNxZcAtz3j5EIpqguh9H6wc011YN75cKDLpFDxuwkrPQmUwW4KTbj9mZTwBwLq4aQMUZbHm1rylJ46dzR0dua2n3RYCWZsiHROeywyJGR7mXKlpryyCiouY56sFkBWEnkEB/raeh/Sw4162KeuAxMQpEkzy5alMY5wamMsWKKrtW2WpEWNnReZWONKWjrdsKZarpFjqCslq773PLmEhM448Pc3+FKr1+94vv/rfw4tEcu+lKTBe4kZSdijBrykwv9vbCMPcLQTygBjzVckSLPRVGslqdunwJ4oegtFOYb4SwxNgWLCmD7T9kVjTv5YDgpo0XBmN34Z/rEHp0sgyz7lngsrm4lvMm2Mr1zNOJYJ5cuxuQxwMGJq/TP5emlb8fsQBZviK4t8hFL+zbhtlpwaRSxQRWfeETjuauPsdGxsBVdO7nmP4xvzSoT29pRl7kGqz+k26B3Oy0YNV+SXbbQas1ctC/GarskRdFpKczVAF1ZXnLcpaMuzVe6lZ2g/1ndcvOVgRG3sdUAY1bKD6achijMPdMxV4muKVorSpiDHituH7rSTs7n/4y5DhRXo4FVBN4vO/zbAcxhENzGbHCzU/98Mcx5e7a31kWjw9FCe/zNeYyQjZsWb1uc7U33pN4Mji6hCLhivqfa9Ss6xLg031AgfesA/l99m9fgvnaF9JoE6bYKmkGNK3aPbHB96w3+DnxFm4hs0drLsk7U8kf/N/CvwQNtllna0rjq61sH8L80HAuvwH1tvBy2ChqWSCaYTaGN19sTvlfzFD6n+iKTbvtayfrfe9ueWh6GJFoxLdr7V72a5ZpvHcCPDzma0wTO4EgbLyedxstO81n57LYBOBzyfsOhUKsW1J1BB5vr/tz8RyqOFylQP9Tvst2JALsC5lsH8PyQ40DV4ANzYa4dedNiKNR1s+x2wwbR7q4/4cTxqEk4LWDebfisuo36JXLiWFjOtLrlNWh3K1rRS4xvHcDNlFnNmWBBAl5SWaL3oPOfnvbr5pdjVnEaeBJSYjuLEkyLLsWhKccadmOphZkOPgVdalj2QpSmfOsADhMWE2ZBu4+EEJI4wKTAuCoC4xwQbWXBltpxbjkXJtKxxabo9e7tyhlgb6gNlSbUpMh+l/FaqzVwewGu8BW1Zx7pTpQDJUjb8tsUTW6+GDXbMn3mLbXlXJiGdggxFAoUrtPS3wE4Nk02UZG2OOzlk7fRs7i95QCLo3E0jtrjnM7SR3uS1p4qtS2nJ5OwtQVHgOvArLBFijZUV9QtSl8dAY5d0E0hM0w3HS2DpIeB6m/A1+HfhJcGUq4sOxH+x3f5+VO+Ds9rYNI7zPXOYWPrtf8bYMx6fuOAX5jzNR0PdsuON+X1f7EERxMJJoU6GkTEWBvVolVlb5lh3tKCg6Wx1IbaMDdJ+9sUCc5KC46hKGCk3IVOS4TCqdBNfUs7Kd4iXf2RjnT/LLysJy3XDcHLh/vde3x8DoGvwgsa67vBk91G5Pe/HbOe7xwym0NXbtiuuDkGO2IJDh9oQvJ4cY4vdoqLDuoH9Zl2F/ofsekn8lkuhIlhQcffUtSjytFyp++p6NiE7Rqx/lodgKVoceEp/CP4FfjrquZaTtj2AvH5K/ywpn7M34K/SsoYDAdIN448I1/0/wveW289T1/lX5xBzc8N5IaHr0XMOQdHsIkDuJFifj20pBm5jzwUv9e2FhwRsvhAbalCIuIw3bhJihY3p6nTFFIZgiSYjfTf3aXuOjmeGn4bPoGvwl+CFzTRczBIuHBEeImHc37/lGfwZR0cXzVDOvaKfNHvwe+suZ771K/y/XcBlsoN996JpBhoE2toYxOznNEOS5TJc6Id5GEXLjrWo+LEWGNpPDU4WAwsIRROu+1vM+0oW37z/MBN9kqHnSArwPfgFJ7Cq/Ai3Ie7g7ncmI09v8sjzw9mzOAEXoIHxURueaAce5V80f/DOuuZwHM8vsMb5wBzOFWM7wymTXPAEvm4vcFpZ2ut0VZRjkiP2MlmLd6DIpbGSiHOjdnUHN90hRYmhTnmvhzp1iKDNj+b7t5hi79lWGwQ+HN9RsfFMy0FXbEwhfuczKgCbyxYwBmcFhhvo/7a44v+i3XWcwDP86PzpGQYdWh7csP5dBvZ1jNzdxC8pBGuxqSW5vw40nBpj5JhMwvOzN0RWqERHMr4Lv1kWX84xLR830G3j6yqZ1a8UstTlW+qJPOZ+sZ7xZPKTJLhiNOAFd6tk+jrTH31ncLOxid8+nzRb128HhUcru/y0Wn6iT254YPC6FtVSIMoW2sk727AhvTtrWKZTvgsmckfXYZWeNRXx/3YQ2OUxLDrbHtN11IwrgXT6c8dATDwLniYwxzO4RzuQqTKSC5gAofMZ1QBK3zQ4JWobFbcvJm87FK+6JXrKahLn54m3p+McXzzYtP8VF/QpJuh1OwieElEoI1pRxPS09FBrkq2tWCU59+HdhNtTIqKm8EBrw2RTOEDpG3IKo2Y7mFdLm3ZeVjYwVw11o/oznceMve4CgMfNym/utA/d/ILMR7gpXzRy9eDsgLcgbs8O2Va1L0zzIdwGGemTBuwROHeoMShkUc7P+ISY3KH5ZZeWqO8mFTxQYeXTNuzvvK5FGPdQfuu00DwYFY9dyhctEt+OJDdnucfpmyhzUJzfsJjr29l8S0bXBfwRS9ZT26tmMIdZucch5ZboMz3Nio3nIOsYHCGoDT4kUA9MiXEp9Xsui1S8th/kbWIrMBxDGLodWUQIWcvnXy+9M23xPiSMOiRPqM+YMXkUN3gXFrZJwXGzUaMpJfyRS9ZT0lPe8TpScuRlbMHeUmlaKDoNuy62iWNTWNFYjoxFzuJs8oR+RhRx7O4SVNSXpa0ZJQ0K1LAHDQ+D9IepkMXpcsq5EVCvClBUIzDhDoyKwDw1Lc59GbTeORivugw1IcuaEOaGWdNm+Ps5fQ7/tm0DjMegq3yM3vb5j12qUId5UZD2oxDSEWOZMSqFl/W+5oynWDa/aI04tJRQ2eTXusg86SQVu/nwSYwpW6wLjlqIzwLuxGIvoAvul0PS+ZNz0/akp/pniO/8JDnGyaCkzbhl6YcqmK/69prxPqtpx2+Km9al9sjL+rwMgHw4jE/C8/HQ3m1vBuL1fldbzd8mOueVJ92syqdEY4KJjSCde3mcRw2TA6szxedn+zwhZMps0XrqEsiUjnC1hw0TELC2Ek7uAAdzcheXv1BYLagspxpzSAoZZUsIzIq35MnFQ9DOrlNB30jq3L4pkhccKUAA8/ocvN1Rzx9QyOtERs4CVsJRK/DF71kPYrxYsGsm6RMh4cps5g1DOmM54Ly1ii0Hd3Y/BMk8VWFgBVmhqrkJCPBHAolwZaWzLR9Vb7bcWdX9NyUYE+uB2BKfuaeBUcjDljbYVY4DdtsVWvzRZdWnyUzDpjNl1Du3aloAjVJTNDpcIOVVhrHFF66lLfJL1zJr9PQ2nFJSBaKoDe+sAvLufZVHVzYh7W0h/c6AAZ+7Tvj6q9j68G/cTCS/3n1vLKHZwNi+P+pS0WkZNMBMUl+LDLuiE4omZy71r3UFMwNJV+VJ/GC5ixVUkBStsT4gGKh0Gm4Oy3qvq7Lbmq24nPdDuDR9deR11XzP4vFu3TYzfnIyiSVmgizUYGqkIXNdKTY9pgb9D2Ix5t0+NHkVzCdU03suWkkVZAoCONCn0T35gAeW38de43mf97sMOpSvj4aa1KYUm58USI7Wxxes03bAZdRzk6UtbzMaCQ6IxO0dy7X+XsjoD16hpsBeGz9dfzHj+R/Hp8nCxZRqkEDTaCKCSywjiaoMJ1TITE9eg7Jqnq8HL6gDwiZb0u0V0Rr/rmvqjxKuaLCX7ZWXTvAY+uvm3z8CP7nzVpngqrJpZKwWnCUjIviYVlirlGOzPLI3SMVyp/elvBUjjDkNhrtufFFErQ8pmdSlbK16toBHlt/HV8uHMX/vEGALkV3RJREiSlopxwdMXOZPLZ+ix+kAHpMKIk8UtE1ygtquttwxNhphrIZ1IBzjGF3IIGxGcBj6q8bHJBG8T9vdsoWrTFEuebEZuVxhhClH6P5Zo89OG9fwHNjtNQTpD0TG9PJLEYqvEY6Rlxy+ZZGfL0Aj62/bnQCXp//eeM4KzfQVJbgMQbUjlMFIm6TpcfWlZje7NBSV6IsEVmumWIbjiloUzQX9OzYdo8L1wjw2PrrpimONfmfNyzKklrgnEkSzT5QWYQW40YShyzqsRmMXbvVxKtGuYyMKaU1ugenLDm5Ily4iT14fP11Mx+xJv+zZ3MvnfdFqxU3a1W/FTB4m3Qfsyc1XUcdVhDeUDZXSFHHLQj/Y5jtC7ZqM0CXGwB4bP11i3LhOvzPGygYtiUBiwQV/4wFO0majijGsafHyRLu0yG6q35cL1rOpVxr2s5cM2jJYMCdc10Aj6q/blRpWJ//+dmm5psMl0KA2+AFRx9jMe2WbC4jQxnikd4DU8TwUjRVacgdlhmr3bpddzuJ9zXqr2xnxJfzP29RexdtjDVZqzkqa6PyvcojGrfkXiJ8SEtml/nYskicv0ivlxbqjemwUjMw5evdg8fUX9nOiC/lf94Q2i7MURk9nW1MSj5j8eAyV6y5CN2S6qbnw3vdA1Iwq+XOSCl663udN3IzLnrt+us25cI1+Z83SXQUldqQq0b5XOT17bGpLd6ssN1VMPf8c+jG8L3NeCnMdF+Ra3fRa9dft39/LuZ/3vwHoHrqGmQFafmiQw6eyzMxS05K4bL9uA+SKUQzCnSDkqOGokXyJvbgJ/BHI+qvY69//4rl20NsmK2ou2dTsyIALv/91/8n3P2Aao71WFGi8KKv1fRC5+J67Q/507/E/SOshqN5TsmYIjVt+kcjAx98iz/4SaojbIV1rexE7/C29HcYD/DX4a0rBOF5VTu7omsb11L/AWcVlcVZHSsqGuXLLp9ha8I//w3Mv+T4Ew7nTBsmgapoCrNFObIcN4pf/Ob/mrvHTGqqgAupL8qWjWPS9m/31jAe4DjA+4+uCoQoT/zOzlrNd3qd4SdphFxsUvYwGWbTWtISc3wNOWH+kHBMfc6kpmpwPgHWwqaSUG2ZWWheYOGQGaHB+eQ/kn6b3pOgLV+ODSn94wDvr8Bvb70/LLuiPPEr8OGVWfDmr45PZyccEmsVXZGe1pRNX9SU5+AVQkNTIVPCHF/jGmyDC9j4R9LfWcQvfiETmgMMUCMN1uNCakkweZsowdYobiMSlnKA93u7NzTXlSfe+SVbfnPQXmg9LpYAQxpwEtONyEyaueWM4FPjjyjG3uOaFmBTWDNgBXGEiQpsaWhnAqIijB07Dlsy3fUGeP989xbWkyf+FF2SNEtT1E0f4DYYVlxFlbaSMPIRMk/3iMU5pME2SIWJvjckciebkQuIRRyhUvkHg/iUljG5kzVog5hV7vIlCuBrmlhvgPfNHQM8lCf+FEGsYbMIBC0qC9a0uuy2wLXVbLBaP5kjHokCRxapkQyzI4QEcwgYHRZBp+XEFTqXFuNVzMtjXLJgX4gAid24Hjwc4N3dtVSe+NNiwTrzH4WVUOlDobUqr1FuAgYllc8pmzoVrELRHSIW8ViPxNy4xwjBpyR55I6J220qQTZYR4guvUICJiSpr9gFFle4RcF/OMB7BRiX8sSfhpNSO3lvEZCQfLUVTKT78Ek1LRLhWN+yLyTnp8qWUZ46b6vxdRGXfHVqx3eI75YaLa4iNNiK4NOW7wPW6lhbSOF9/M9qw8e/aoB3d156qTzxp8pXx5BKAsYSTOIIiPkp68GmTq7sZtvyzBQaRLNxIZ+paozHWoLFeExIhRBrWitHCAHrCF7/thhD8JhYz84wg93QRV88wLuLY8zF8sQ36qF1J455bOlgnELfshKVxYOXKVuKx0jaj22sczTQqPqtV/XDgpswmGTWWMSDw3ssyUunLLrVPGjYRsH5ggHeHSWiV8kT33ycFSfMgkoOK8apCye0J6VW6GOYvffgU9RWsukEi2kUV2nl4dOYUzRik9p7bcA4ggdJ53LxKcEe17B1R8eqAd7dOepV8sTXf5lhejoL85hUdhDdknPtKHFhljOT+bdq0hxbm35p2nc8+Ja1Iw+tJykgp0EWuAAZYwMVwac5KzYMslhvgHdHRrxKnvhTYcfKsxTxtTETkjHO7rr3zjoV25lAQHrqpV7bTiy2aXMmUhTBnKS91jhtR3GEoF0oLnWhWNnYgtcc4N0FxlcgT7yz3TgNIKkscx9jtV1ZKpWW+Ub1tc1eOv5ucdgpx+FJy9pgbLE7xDyXb/f+hLHVGeitHOi6A7ybo3sF8sS7w7cgdk0nJaOn3hLj3uyD0Zp5pazFIUXUpuTTU18d1EPkDoX8SkmWTnVIozEdbTcZjoqxhNHf1JrSS/AcvHjZ/SMHhL/7i5z+POsTUh/8BvNfYMTA8n+yU/MlTZxSJDRStqvEuLQKWwDctMTQogUDyQRoTQG5Kc6oQRE1yV1jCA7ri7jdZyK0sYTRjCR0Hnnd+y7nHxNgTULqw+8wj0mQKxpYvhjm9uSUxg+TTy7s2GtLUGcywhXSKZN275GsqlclX90J6bRI1aouxmgL7Q0Nen5ziM80SqMIo8cSOo+8XplT/5DHNWsSUr/6lLN/QQ3rDyzLruEW5enpf7KqZoShEduuSFOV7DLX7Ye+GmXb6/hnNNqKsVXuMDFpb9Y9eH3C6NGEzuOuI3gpMH/I6e+zDiH1fXi15t3vA1czsLws0TGEtmPEJdiiFPwlwKbgLHAFk4P6ZyPdymYYHGE0dutsChQBl2JcBFlrEkY/N5bQeXQ18gjunuMfMfsBlxJSx3niO485fwO4fGD5T/+3fPQqkneWVdwnw/3bMPkW9Wbqg+iC765Zk+xcT98ibKZc2EdgHcLoF8cSOo/Oc8fS+OyEULF4g4sJqXVcmfMfsc7A8v1/yfGXmL9I6Fn5pRwZhsPv0TxFNlAfZCvG+Oohi82UC5f/2IsJo0cTOm9YrDoKhFPEUr/LBYTUNht9zelHXDqwfPCIw4owp3mOcIQcLttWXFe3VZ/j5H3cIc0G6oPbCR+6Y2xF2EC5cGUm6wKC5tGEzhsWqw5hNidUiKX5gFWE1GXh4/Qplw4sVzOmx9QxU78g3EF6wnZlEN4FzJ1QPSLEZz1KfXC7vd8ssGdIbNUYpVx4UapyFUHzJoTOo1McSkeNn1M5MDQfs4qQuhhX5vQZFw8suwWTcyYTgioISk2YdmkhehG4PkE7w51inyAGGaU+uCXADabGzJR1fn3lwkty0asIo8cROm9Vy1g0yDxxtPvHDAmpu+PKnM8Ix1wwsGw91YJqhteaWgjYBmmQiebmSpwKKzE19hx7jkzSWOm66oPbzZ8Yj6kxVSpYjVAuvLzYMCRo3oTQecOOjjgi3NQ4l9K5/hOGhNTdcWVOTrlgYNkEXINbpCkBRyqhp+LdRB3g0OU6rMfW2HPCFFMV9nSp+uB2woepdbLBuJQyaw/ZFysXrlXwHxI0b0LovEkiOpXGA1Ijagf+KUNC6rKNa9bQnLFqYNkEnMc1uJrg2u64ELPBHpkgWbmwKpJoDhMwNbbGzAp7Yg31wS2T5rGtzit59PrKhesWG550CZpHEzpv2NGRaxlNjbMqpmEIzygJqQfjypycs2pg2cS2RY9r8HUqkqdEgKTWtWTKoRvOBPDYBltja2SO0RGjy9UHtxwRjA11ujbKF+ti5cIR9eCnxUg6owidtyoU5tK4NLji5Q3HCtiyF2IqLGYsHViOXTXOYxucDqG0HyttqYAKqYo3KTY1ekyDXRAm2AWh9JmsVh/ccg9WJ2E8YjG201sPq5ULxxX8n3XLXuMInbft2mk80rRGjCGctJ8/GFdmEQ9Ug4FlE1ll1Y7jtiraqm5Fe04VV8lvSVBL8hiPrfFVd8+7QH3Qbu2ipTVi8cvSGivc9cj8yvH11YMHdNSERtuOslM97feYFOPKzGcsI4zW0YGAbTAOaxCnxdfiYUmVWslxiIblCeAYr9VYR1gM7GmoPrilunSxxeT3DN/2eBQ9H11+nk1adn6VK71+5+Jfct4/el10/7KBZfNryUunWSCPxPECk1rdOv1WVSrQmpC+Tl46YD3ikQYcpunSQgzVB2VHFhxHVGKDgMEY5GLlQnP7FMDzw7IacAWnO6sBr12u+XanW2AO0wQ8pknnFhsL7KYIqhkEPmEXFkwaN5KQphbkUmG72wgw7WSm9RiL9QT925hkjiVIIhphFS9HKI6/8QAjlpXqg9W2C0apyaVDwKQwrwLY3j6ADR13ZyUNByQXHQu6RY09Hu6zMqXRaNZGS/KEJs0cJEe9VH1QdvBSJv9h09eiRmy0V2uJcqHcShcdvbSNg5fxkenkVprXM9rDVnX24/y9MVtncvbKY706anNl3ASll9a43UiacVquXGhvq4s2FP62NGKfQLIQYu9q1WmdMfmUrDGt8eDS0cXozH/fjmUH6Jruvm50hBDSaEU/2Ru2LEN/dl006TSc/g7tfJERxGMsgDUEr104pfWH9lQaN+M4KWQjwZbVc2rZVNHsyHal23wZtIs2JJqtIc/WLXXRFCpJkfE9jvWlfFbsNQ9pP5ZBS0zKh4R0aMFj1IjTcTnvi0Zz2rt7NdvQb2mgbju1plsH8MmbnEk7KbK0b+wC2iy3aX3szW8xeZvDwET6hWZYwqTXSSG+wMETKum0Dq/q+x62gt2ua2ppAo309TRk9TPazfV3qL9H8z7uhGqGqxNVg/FKx0HBl9OVUORn8Q8Jx9gFttGQUDr3tzcXX9xGgN0EpzN9mdZ3GATtPhL+CjxFDmkeEU6x56kqZRusLzALXVqkCN7zMEcqwjmywDQ6OhyUe0Xao1Qpyncrg6wKp9XfWDsaZplElvQ/b3sdweeghorwBDlHzgk1JmMc/wiERICVy2VJFdMjFuLQSp3S0W3+sngt2njwNgLssFGVQdJ0tu0KH4ky1LW4yrbkuaA6Iy9oz/qEMMXMMDWyIHhsAyFZc2peV9hc7kiKvfULxCl9iddfRK1f8kk9qvbdOoBtOg7ZkOZ5MsGrSHsokgLXUp9y88smniwWyuFSIRVmjplga3yD8Uij5QS1ZiM4U3Qw5QlSm2bXjFe6jzzBFtpg+/YBbLAWG7OPynNjlCw65fukGNdkJRf7yM1fOxVzbxOJVocFoYIaGwH22mIQkrvu1E2nGuebxIgW9U9TSiukPGU+Lt++c3DJPKhyhEEbXCQLUpae2exiKy6tMPe9mDRBFCEMTWrtwxN8qvuGnt6MoihKWS5NSyBhbH8StXoAz8PLOrRgLtOT/+4vcu+7vDLnqNvztOq7fmd8sMmY9Xzn1zj8Dq8+XVdu2Nv0IIySgEdQo3xVHps3Q5i3fLFsV4aiqzAiBhbgMDEd1uh8qZZ+lwhjkgokkOIv4xNJmyncdfUUzgB4oFMBtiu71Xumpz/P+cfUP+SlwFExwWW62r7b+LSPxqxn/gvMZ5z9C16t15UbNlq+jbGJtco7p8wbYlL4alSyfWdeuu0j7JA3JFNuVAwtst7F7FhWBbPFNKIUORndWtLraFLmMu7KFVDDOzqkeaiN33YAW/r76wR4XDN/yN1z7hejPau06EddkS/6XThfcz1fI/4K736fO48vlxt2PXJYFaeUkFS8U15XE3428xdtn2kc8GQlf1vkIaNRRnOMvLTWrZbElEHeLWi1o0dlKPAh1MVgbbVquPJ5+Cr8LU5/H/+I2QlHIU2ClXM9G8v7Rr7oc/hozfUUgsPnb3D+I+7WF8kNO92GY0SNvuxiE+2Bt8prVJTkzE64sfOstxuwfxUUoyk8VjcTlsqe2qITSFoSj6Epd4KsT6BZOWmtgE3hBfir8IzZDwgV4ZTZvD8VvPHERo8v+vL1DASHTz/i9OlKueHDjK5Rnx/JB1Vb1ioXdBra16dmt7dgik10yA/FwJSVY6XjA3oy4SqM2frqDPPSRMex9qs3XQtoWxMj7/Er8GWYsXgjaVz4OYumP2+9kbxvny/6kvWsEBw+fcb5bInc8APdhpOSs01tEqIkoiZjbAqKMruLbJYddHuHFRIyJcbdEdbl2sVLaySygunutBg96Y2/JjKRCdyHV+AEFtTvIpbKIXOamknYSiB6KV/0JetZITgcjjk5ZdaskBtWO86UF0ap6ozGXJk2WNiRUlCPFir66lzdm/SLSuK7EUdPz8f1z29Skq6F1fXg8+5UVR6bszncP4Tn4KUkkdJ8UFCY1zR1i8RmL/qQL3rlei4THG7OODlnKko4oI01kd3CaM08Ia18kC3GNoVaO9iDh+hWxSyTXFABXoau7Q6q9OxYg/OVEMw6jdbtSrJ9cBcewGmaZmg+bvkUnUUaGr+ZfnMH45Ivevl61hMcXsxYLFTu1hTm2zViCp7u0o5l+2PSUh9bDj6FgYypufBDhqK2+oXkiuHFHR3zfj+9PtA8oR0xnqX8qn+sx3bFODSbbF0X8EUvWQ8jBIcjo5bRmLOljDNtcqNtOe756h3l0VhKa9hDd2l1eqmsnh0MNMT/Cqnx6BInumhLT8luljzQ53RiJeA/0dxe5NK0o2fA1+GLXr6eNQWHNUOJssQaTRlGpLHKL9fD+IrQzTOMZS9fNQD4AnRNVxvTdjC+fJdcDDWQcyB00B0t9BDwTxXgaAfzDZ/DBXzRnfWMFRwuNqocOmX6OKNkY63h5n/fFcB28McVHqnXZVI27K0i4rDLNE9lDKV/rT+udVbD8dFFu2GGZ8mOt0kAXcoX3ZkIWVtw+MNf5NjR2FbivROHmhV1/pj2egv/fMGIOWTIWrV3Av8N9imV9IWml36H6cUjqEWNv9aNc+veb2sH46PRaHSuMBxvtW+twxctq0z+QsHhux8Q7rCY4Ct8lqsx7c6Sy0dl5T89rIeEuZKoVctIk1hNpfavER6yyH1Vvm3MbsUHy4ab4hWr/OZPcsRBphnaV65/ZcdYPNNwsjN/djlf9NqCw9U5ExCPcdhKxUgLSmfROpLp4WSUr8ojdwbncbvCf+a/YzRaEc6QOvXcGO256TXc5Lab9POvB+AWY7PigWYjzhifbovuunzRawsO24ZqQQAqguBtmpmPB7ysXJfyDDaV/aPGillgz1MdQg4u5MYaEtBNNHFjkRlSpd65lp4hd2AVPTfbV7FGpyIOfmNc/XVsPfg7vzaS/3nkvLL593ANLvMuRMGpQIhiF7kUEW9QDpAUbTWYBcbp4WpacHHY1aacqQyjGZS9HI3yCBT9kUZJhVOD+zUDvEH9ddR11fzPcTDQ5TlgB0KwqdXSavk9BC0pKp0WmcuowSw07VXmXC5guzSa4p0UvRw2lbDiYUx0ExJJRzWzi6Gm8cnEkfXXsdcG/M/jAJa0+bmCgdmQ9CYlNlSYZOKixmRsgiFxkrmW4l3KdFKv1DM8tk6WxPYJZhUUzcd8Kdtgrw/gkfXXDT7+avmfVak32qhtkg6NVdUS5wgkru1YzIkSduTW1FDwVWV3JQVJVuieTc0y4iDpFwc7/BvSalvKdQM8sv662cevz/+8sQVnjVAT0W2wLllw1JiMhJRxgDjCjLQsOzSFSgZqx7lAW1JW0e03yAD3asC+GD3NbQhbe+mN5GXH1F83KDOM4n/e5JIuH4NpdQARrFPBVptUNcjj4cVMcFSRTE2NpR1LEYbYMmfWpXgP9KejaPsLUhuvLCsVXznAG9dfx9SR1ud/3hZdCLHb1GMdPqRJgqDmm76mHbvOXDtiO2QPUcKo/TWkQ0i2JFXpBoo7vij1i1Lp3ADAo+qvG3V0rM//vFnnTE4hxd5Ka/Cor5YEdsLVJyKtDgVoHgtW11pWSjolPNMnrlrVj9Fv2Qn60twMwKPqr+N/wvr8z5tZcDsDrv06tkqyzESM85Ycv6XBWA2birlNCXrI6VbD2lx2L0vQO0QVTVVLH4SE67fgsfVXv8n7sz7/85Z7cMtbE6f088wSaR4kCkCm10s6pKbJhfqiUNGLq+0gLWC6eUAZFPnLjwqtKd8EwGvWX59t7iPW4X/eAN1svgRVSY990YZg06BD1ohLMtyFTI4pKTJsS9xREq9EOaPWiO2gpms7397x6nQJkbh+Fz2q/rqRROX6/M8bJrqlVW4l6JEptKeUFuMYUbtCQ7CIttpGc6MY93x1r1vgAnRXvY5cvwWPqb9uWQm+lP95QxdNMeWhOq1x0Db55C7GcUv2ZUuN6n8iKzsvOxibC//Yfs9Na8r2Rlz02vXXDT57FP/zJi66/EJSmsJKa8QxnoqW3VLQ+jZVUtJwJ8PNX1NQCwfNgdhhHD9on7PdRdrdGPF28rJr1F+3LBdeyv+8yYfLoMYet1vX4upNAjVvwOUWnlNXJXlkzk5Il6kqeoiL0C07qno+/CYBXq/+utlnsz7/Mzvy0tmI4zm4ag23PRN3t/CWryoUVJGm+5+K8RJ0V8Hc88/XHUX/HfiAq7t+BH+x6v8t438enWmdJwFA6ZINriLGKv/95f8lT9/FnyA1NMVEvQyaXuu+gz36f/DD73E4pwqpLcvm/o0Vle78n//+L/NPvoefp1pTJye6e4A/D082FERa5/opeH9zpvh13cNm19/4v/LDe5xMWTi8I0Ta0qKlK27AS/v3/r+/x/2GO9K2c7kVMonDpq7//jc5PKCxeNPpFVzaRr01wF8C4Pu76hXuX18H4LduTr79guuFD3n5BHfI+ZRFhY8w29TYhbbLi/bvBdqKE4fUgg1pBKnV3FEaCWOWyA+m3WpORZr/j+9TKJtW8yBTF2/ZEODI9/QavHkVdGFp/Pjn4Q+u5hXapsP5sOH+OXXA1LiKuqJxiMNbhTkbdJTCy4llEt6NnqRT4dhg1V3nbdrm6dYMecA1yTOL4PWTE9L5VzPFlLBCvlG58AhehnN4uHsAYinyJ+AZ/NkVvELbfOBUuOO5syBIEtiqHU1k9XeISX5bsimrkUUhnGDxourN8SgUsCZVtKyGbyGzHXdjOhsAvOAswSRyIBddRdEZWP6GZhNK/yjwew9ehBo+3jEADu7Ay2n8mDc+TS7awUHg0OMzR0LABhqLD4hJEh/BEGyBdGlSJoXYXtr+3HS4ijzVpgi0paWXtdruGTknXBz+11qT1Q2inxaTzQCO46P3lfLpyS4fou2PH/PupwZgCxNhGlj4IvUuWEsTkqMWm6i4xCSMc9N1RDQoCVcuGItJ/MRWefais+3synowi/dESgJjkilnWnBTGvRWmaw8oR15257t7CHmCf8HOn7cwI8+NQBXMBEmAa8PMRemrNCEhLGEhDQKcGZWS319BX9PFBEwGTbRBhLbDcaV3drFcDqk5kCTd2JF1Wp0HraqBx8U0wwBTnbpCadwBA/gTH/CDrcCs93LV8E0YlmmcyQRQnjBa8JESmGUfIjK/7fkaDJpmD2QptFNVJU1bbtIAjjWQizepOKptRjbzR9Kag6xZmMLLjHOtcLT3Tx9o/0EcTT1XN3E45u24AiwEypDJXihKjQxjLprEwcmRKclaDNZCVqr/V8mYWyFADbusiY5hvgFoU2vio49RgJLn5OsReRFN6tabeetiiy0V7KFHT3HyZLx491u95sn4K1QQSPKM9hNT0wMVvAWbzDSVdrKw4zRjZMyJIHkfq1VAVCDl/bUhNKlGq0zGr05+YAceXVPCttVk0oqjVwMPt+BBefx4yPtGVkUsqY3CHDPiCM5ngupUwCdbkpd8kbPrCWHhkmtIKLEetF2499eS1jZlIPGYnlcPXeM2KD9vLS0bW3ktYNqUllpKLn5ZrsxlIzxvDu5eHxzGLctkZLEY4PgSOg2IUVVcUONzUDBEpRaMoXNmUc0tFZrTZquiLyKxrSm3DvIW9Fil+AkhXu5PhEPx9mUNwqypDvZWdKlhIJQY7vn2OsnmBeOWnYZ0m1iwbbw1U60by5om47iHRV6fOgzjMf/DAZrlP40Z7syxpLK0lJ0gqaAK1c2KQKu7tabTXkLFz0sCftuwX++MyNeNn68k5Buq23YQhUh0SNTJa1ioQ0p4nUG2y0XilF1JqODqdImloPS4Bp111DEWT0jJjVv95uX9BBV7eB3bUWcu0acSVM23YZdd8R8UbQUxJ9wdu3oMuhdt929ME+mh6JXJ8di2RxbTi6TbrDquqV4aUKR2iwT6aZbyOwEXN3DUsWr8Hn4EhwNyHuXHh7/pdaUjtR7vnDh/d8c9xD/s5f501eQ1+CuDiCvGhk1AN/4Tf74RfxPwD3toLarR0zNtsnPzmS64KIRk861dMWCU8ArasG9T9H0ZBpsDGnjtAOM2+/LuIb2iIUGXNgl5ZmKD/Tw8TlaAuihaFP5yrw18v4x1898zIdP+DDAX1bM3GAMvPgRP/cJn3zCW013nrhHkrITyvYuwOUkcHuKlRSW5C6rzIdY4ppnF7J8aAJbQepgbJYBjCY9usGXDKQxq7RZfh9eg5d1UHMVATRaD/4BHK93/1iAgYZ/+jqPn8Dn4UExmWrpa3+ZOK6MvM3bjwfzxNWA2dhs8+51XHSPJiaAhGSpWevEs5xHLXcEGFXYiCONySH3fPWq93JIsBiSWvWyc3CAN+EcXoT7rCSANloPPoa31rt/5PUA/gp8Q/jDD3hyrjzlR8VkanfOvB1XPubt17vzxAfdSVbD1pzAnfgyF3ycadOTOTXhpEUoLC1HZyNGW3dtmjeXgr2r56JNmRwdNNWaQVBddd6rh4MhviEB9EFRD/7RGvePvCbwAL4Mx/D6M541hHO4D3e7g6PafdcZVw689z7NGTwo5om7A8sPhccT6qKcl9NJl9aM/9kX+e59Hh1yPqGuCCZxuITcsmNaJ5F7d0q6J3H48TO1/+M57085q2icdu2U+W36Ldllz9Agiv4YGljoEN908EzvDOrBF98/vtJwCC/BF2AG75xxEmjmMIcjxbjoaxqOK3/4hPOZzhMPBpYPG44CM0dTVm1LjLtUWWVz1Bcf8tEx0zs8O2A2YVHRxKYOiy/aOVoAaMu0i7ubu43njjmd4ibMHU1sIDHaQNKrZND/FZYdk54oCXetjq7E7IVl9eAL7t+oHnwXXtLx44czzoRFHBztYVwtH1d+NOMkupZ5MTM+gUmq90X+Bh9zjRlmaQ+m7YMqUL/veemcecAtOJ0yq1JnVlN27di2E0+Klp1tAJ4KRw1eMI7aJjsO3R8kPSI3fUFXnIOfdQe86sIIVtWDL7h//Ok6vj8vwDk08NEcI8zz7OhBy+WwalzZeZ4+0XniRfst9pAJqQHDGLzVQ2pheZnnv1OWhwO43/AgcvAEXEVVpa4db9sGvNK8wjaENHkfFQ4Ci5i7dqnQlPoLQrHXZDvO3BIXZbJOBrOaEbML6sFL798I4FhKihjHMsPjBUZYCMFr6nvaArxqXPn4lCa+cHfSa2cP27g3Z3ziYTRrcbQNGLQmGF3F3cBdzzzX7AILx0IB9rbwn9kx2G1FW3Inic+ZLIsVvKR8Zwfj0l1fkqo8LWY1M3IX14OX3r9RKTIO+d9XzAI8qRPGPn/4NC2n6o4rN8XJ82TOIvuVA8zLKUHRFgBCetlDZlqR1gLKjS39xoE7Bt8UvA6BxuEDjU3tFsEijgA+615tmZkXKqiEENrh41iLDDZNq4pKTWR3LZfnos81LOuNa15cD956vLMsJd1rqYp51gDUQqMYm2XsxnUhD2jg1DM7SeuJxxgrmpfISSXVIJIS5qJJSvJPEQ49DQTVIbYWJ9QWa/E2+c/oPK1drmC7WSfJRNKBO5Yjvcp7Gc3dmmI/Xh1kDTEuiSnWqQf37h+fTMhGnDf6dsS8SQfQWlqqwXXGlc/PEZ/SC5mtzIV0nAshlQdM/LvUtYutrEZ/Y+EAFtq1k28zQhOwLr1AIeANzhF8t9qzTdZf2qRKO6MWE9ohBYwibbOmrFtNmg3mcS+tB28xv2uKd/agYCvOP+GkSc+0lr7RXzyufL7QbkUpjLjEWFLqOIkAGu2B0tNlO9Eau2W1qcOUvVRgKzypKIQZ5KI3q0MLzqTNRYqiZOqmtqloIRlmkBHVpHmRYV6/HixbO6UC47KOFJnoMrVyr7wYz+SlW6GUaghYbY1I6kkxA2W1fSJokUdSh2LQ1GAimRGm0MT+uu57H5l7QgOWxERpO9moLRPgTtquWCfFlGlIjQaRly9odmzMOWY+IBO5tB4sW/0+VWGUh32qYk79EidWKrjWuiLpiVNGFWFRJVktyeXWmbgBBzVl8anPuXyNJlBJOlKLTgAbi/EYHVHxWiDaVR06GnHQNpJcWcK2jJtiCfG2sEHLzuI66sGrMK47nPIInPnu799935aOK2cvmvubrE38ZzZjrELCmXM2hM7UcpXD2oC3+ECVp7xtIuxptJ0jUr3sBmBS47TVxlvJ1Sqb/E0uLdvLj0lLr29ypdd/eMX3f6lrxGlKwKQxEGvw0qHbkbwrF3uHKwVENbIV2wZ13kNEF6zD+x24aLNMfDTCbDPnEikZFyTNttxWBXDaBuM8KtI2rmaMdUY7cXcUPstqTGvBGSrFWIpNMfbdea990bvAOC1YX0qbc6smDS1mPxSJoW4fwEXvjMmhlijDRq6qale6aJEuFGoppYDoBELQzLBuh/mZNx7jkinv0EtnUp50lO9hbNK57lZaMAWuWR5Yo9/kYwcYI0t4gWM47Umnl3YmpeBPqSyNp3K7s2DSAS/39KRuEN2bS4xvowV3dFRMx/VFcp2Yp8w2nTO9hCXtHG1kF1L4KlrJr2wKfyq77R7MKpFKzWlY9UkhYxyHWW6nBWPaudvEAl3CGcNpSXPZ6R9BbBtIl6cHL3gIBi+42CYXqCx1gfGWe7Ap0h3luyXdt1MKy4YUT9xSF01G16YEdWsouW9mgDHd3veyA97H+Ya47ZmEbqMY72oPztCGvK0onL44AvgC49saZKkWRz4veWljE1FHjbRJaWv6ZKKtl875h4CziFCZhG5rx7tefsl0aRT1bMHZjm8dwL/6u7wCRysaQblQoG5yAQN5zpatMNY/+yf8z+GLcH/Qn0iX2W2oEfXP4GvwQHuIL9AYGnaO3zqAX6946nkgqZNnUhx43DIdQtMFeOPrgy/y3Yd85HlJWwjLFkU3kFwq28xPnuPhMWeS+tDLV9Otllq7pQCf3uXJDN9wFDiUTgefHaiYbdfi3b3u8+iY6TnzhgehI1LTe8lcd7s1wJSzKbahCRxKKztTLXstGAiu3a6rPuQs5pk9TWAan5f0BZmGf7Ylxzzk/A7PAs4QPPPAHeFQ2hbFHszlgZuKZsJcUmbDC40sEU403cEjczstOEypa+YxevL4QBC8oRYqWdK6b7sK25tfE+oDZgtOQ2Jg8T41HGcBE6fTWHn4JtHcu9S7uYgU5KSCkl/mcnq+5/YBXOEr6lCUCwOTOM1taOI8mSxx1NsCXBEmLKbMAg5MkwbLmpBaFOPrNSlO2HnLiEqW3tHEwd8AeiQLmn+2gxjC3k6AxREqvKcJbTEzlpLiw4rNZK6oJdidbMMGX9FULKr0AkW+2qDEPBNNm5QAt2Ik2nftNWHetubosHLo2nG4vQA7GkcVCgVCgaDixHqo9UUn1A6OshapaNR/LPRYFV8siT1cCtJE0k/3WtaNSuUZYKPnsVIW0xXWnMUxq5+En4Kvw/MqQmVXnAXj9Z+9zM98zM/Agy7F/qqj2Nh67b8HjFnPP3iBn/tkpdzwEJX/whIcQUXOaikeliCRGUk7tiwF0rItwMEhjkZ309hikFoRAmLTpEXWuHS6y+am/KB/fM50aLEhGnSMwkpxzOov4H0AvgovwJ1iGzDLtJn/9BU+fAINfwUe6FHSLhu83viV/+/HrOePX+STT2B9uWGbrMHHLldRBlhS/CJQmcRxJFqZica01XixAZsYiH1uolZxLrR/SgxVIJjkpQP4PE9sE59LKLr7kltSBogS5tyszzH8Fvw8/AS8rNOg0xUS9fIaHwb+6et8Q/gyvKRjf5OusOzGx8evA/BP4IP11uN/grca5O0lcsPLJ5YjwI4QkJBOHa0WdMZYGxPbh2W2nR9v3WxEWqgp/G3+6VZbRLSAAZ3BhdhAaUL33VUSw9yjEsvbaQ9u4A/gGXwZXoEHOuU1GSj2chf+Mo+f8IcfcAxfIKVmyunRbYQVnoevwgfw3TXXcw++xNuP4fhyueEUNttEduRVaDttddoP0eSxLe2LENk6itYxlrxBNBYrNNKSQmeaLcm9c8UsaB5WyO6675yyQIAWSDpBVoA/gxmcwEvwoDv0m58UE7gHn+fJOa8/Ywan8EKRfjsopF83eCglX/Sfr7OeaRoQfvt1CGvIDccH5BCvw1sWIzRGC/66t0VTcLZQZtm6PlAasbOJ9iwWtUo7biktTSIPxnR24jxP1ZKaqq+2RcXM9OrBAm/AAs7hDJ5bNmGb+KIfwCs8a3jnjBrOFeMjHSCdbKr+2uOLfnOd9eiA8Hvvwwq54VbP2OqwkB48Ytc4YEOiH2vTXqodabfWEOzso4qxdbqD5L6tbtNPECqbhnA708DZH4QOJUXqScmUlks7Ot6FBuZw3n2mEbaUX7kDzxHOOQk8nKWMzAzu6ZZ8sOFw4RK+6PcuXo9tB4SbMz58ApfKDXf3szjNIIbGpD5TKTRxGkEMLjLl+K3wlWXBsCUxIDU+jbOiysESqAy1MGUJpXgwbTWzNOVEziIXZrJ+VIztl1PUBxTSo0dwn2bOmfDRPD3TRTGlfbCJvO9KvuhL1hMHhB9wPuPRLGHcdOWG2xc0U+5bQtAJT0nRTewXL1pgk2+rZAdeWmz3jxAqfNQQdzTlbF8uJ5ecEIWvTkevAHpwz7w78QujlD/Lr491bD8/1vhM2yrUQRrWXNQY4fGilfctMWYjL72UL/qS9eiA8EmN88nbNdour+PBbbAjOjIa4iBhfFg6rxeKdEGcL6p3EWR1Qq2Qkhs2DrnkRnmN9tG2EAqmgPw6hoL7Oza7B+3SCrR9tRftko+Lsf2F/mkTndN2LmzuMcKTuj/mX2+4Va3ki16+nnJY+S7MefpkidxwnV+4wkXH8TKnX0tsYzYp29DOOoSW1nf7nTh2akYiWmcJOuTidSaqESrTYpwjJJNVGQr+rLI7WsqerHW6Kp/oM2pKuV7T1QY9gjqlZp41/WfKpl56FV/0kvXQFRyeQ83xaTu5E8p5dNP3dUF34ihyI3GSpeCsywSh22ZJdWto9winhqifb7VRvgktxp13vyjrS0EjvrRfZ62uyqddSWaWYlwTPAtJZ2oZ3j/Sgi/mi+6vpzesfAcWNA0n8xVyw90GVFGuZjTXEQy+6GfLGLMLL523f5E0OmxVjDoOuRiH91RKU+vtoCtH7TgmvBLvtFXWLW15H9GTdVw8ow4IlRLeHECN9ym1e9K0I+Cbnhgv4Yu+aD2HaQJ80XDqOzSGAV4+4yCqBxrsJAX6ZTIoX36QnvzhhzzMfFW2dZVLOJfo0zbce5OvwXMFaZ81mOnlTVXpDZsQNuoYWveketKb5+6JOOsgX+NTm7H49fUTlx+WLuWL7qxnOFh4BxpmJx0p2gDzA/BUARuS6phR+pUsY7MMboAHx5xNsSVfVZcYSwqCKrqon7zM+8ecCkeS4nm3rINuaWvVNnMRI1IRpxTqx8PZUZ0Br/UEduo3B3hNvmgZfs9gQPj8vIOxd2kndir3awvJ6BLvoUuOfFWNYB0LR1OQJoUySKb9IlOBx74q1+ADC2G6rOdmFdJcD8BkfualA+BdjOOzP9uUhGUEX/TwhZsUduwRr8wNuXKurCixLBgpQI0mDbJr9dIqUuV+92ngkJZ7xduCk2yZKbfWrH1VBiTg9VdzsgRjW3CVXCvAwDd+c1z9dWw9+B+8MJL/eY15ZQ/HqvTwVdsZn5WQsgRRnMaWaecu3jFvMBEmgg+FJFZsnSl0zjB9OqPYaBD7qmoVyImFvzi41usesV0julaAR9dfR15Xzv9sEruRDyk1nb+QaLU67T885GTls6YgcY+UiMa25M/pwGrbCfzkvR3e0jjtuaFtnwuagHTSb5y7boBH119HXhvwP487jJLsLJ4XnUkHX5sLbS61dpiAXRoZSCrFJ+EjpeU3puVfitngYNo6PJrAigKktmwjyQdZpfq30mmtulaAx9Zfx15Xzv+cyeuiBFUs9zq8Kq+XB9a4PVvph3GV4E3y8HENJrN55H1X2p8VyqSKwVusJDKzXOZzplWdzBUFK9e+B4+uv468xvI/b5xtSAkBHQaPvtqWzllVvEOxPbuiE6+j2pvjcKsbvI7txnRErgfH7LdXqjq0IokKzga14GzQ23SSbCQvO6r+Or7SMIr/efOkkqSdMnj9mBx2DRsiY29Uj6+qK9ZrssCKaptR6HKURdwUYeUWA2kPzVKQO8ku2nU3Anhs/XWkBx3F/7wJtCTTTIKftthue1ty9xvNYLY/zo5KSbIuKbXpbEdSyeRyYdAIwKY2neyoc3+k1XUaufYga3T9daMUx/r8z1s10ITknIO0kuoMt+TB8jK0lpayqqjsJ2qtXAYwBU932zinimgmd6mTRDnQfr88q36NAI+tv24E8Pr8zxtasBqx0+xHH9HhlrwsxxNUfKOHQaZBITNf0uccj8GXiVmXAuPEAKSdN/4GLHhs/XWj92dN/uetNuBMnVR+XWDc25JLjo5Mg5IZIq226tmCsip2zZliL213YrTlL2hcFjpCduyim3M7/eB16q/blQsv5X/esDRbtJeabLIosWy3ycavwLhtxdWzbMmHiBTiVjJo6lCLjXZsi7p9PEPnsq6X6wd4bP11i0rD5fzPm/0A6brrIsllenZs0lCJlU4abakR59enZKrKe3BZihbTxlyZ2zl1+g0wvgmA166/bhwDrcn/7Ddz0eWZuJvfSESug6NzZsox3Z04FIxz0mUjMwVOOVTq1CQ0AhdbBGVdjG/CgsfUX7esJl3K/7ytWHRv683praW/8iDOCqWLLhpljDY1ZpzK75QiaZoOTpLKl60auHS/97oBXrv+umU9+FL+5+NtLFgjqVLCdbmj7pY5zPCPLOHNCwXGOcLquOhi8CmCWvbcuO73XmMUPab+ug3A6/A/78Bwe0bcS2+tgHn4J5pyS2WbOck0F51Vq3LcjhLvZ67p1ABbaL2H67bg78BfjKi/jr3+T/ABV3ilLmNXTI2SpvxWBtt6/Z//D0z/FXaGbSBgylzlsEGp+5//xrd4/ae4d8DUUjlslfIYS3t06HZpvfQtvv0N7AHWqtjP2pW08QD/FLy//da38vo8PNlKHf5y37Dxdfe/oj4kVIgFq3koLReSR76W/bx//n9k8jonZxzWTANVwEniDsg87sOSd/z7//PvMp3jQiptGVWFX2caezzAXwfgtzYUvbr0iozs32c3Uge7varH+CNE6cvEYmzbPZ9hMaYDdjK4V2iecf6EcEbdUDVUARda2KzO/JtCuDbNQB/iTeL0EG1JSO1jbXS+nLxtPMDPw1fh5+EPrgSEKE/8Gry5A73ui87AmxwdatyMEBCPNOCSKUeRZ2P6Myb5MRvgCHmA9ywsMifU+AYXcB6Xa5GibUC5TSyerxyh0j6QgLVpdyhfArRTTLqQjwe4HOD9s92D4Ap54odXAPBWLAwB02igG5Kkc+piN4lvODIFGAZgT+EO4Si1s7fjSR7vcQETUkRm9O+MXyo9OYhfe4xt9STQ2pcZRLayCV90b4D3jR0DYAfyxJ+eywg2IL7NTMXna7S/RpQ63JhWEM8U41ZyQGjwsVS0QBrEKLu8xwZsbi4wLcCT+OGidPIOCe1PiSc9Qt+go+vYqB7cG+B9d8cAD+WJPz0Am2gxXgU9IneOqDpAAXOsOltVuMzpdakJXrdPCzXiNVUpCeOos5cxnpQT39G+XVLhs1osQVvJKPZyNq8HDwd4d7pNDuWJPxVX7MSzqUDU6gfadKiNlUFTzLeFHHDlzO4kpa7aiKhBPGKwOqxsBAmYkOIpipyXcQSPlRTf+Tii0U3EJGaZsDER2qoB3h2hu0qe+NNwUooYU8y5mILbJe6OuX+2FTKy7bieTDAemaQyQ0CPthljSWO+xmFDIYiESjM5xKd6Ik5lvLq5GrQ3aCMLvmCA9wowLuWJb9xF59hVVP6O0CrBi3ZjZSNOvRy+I6klNVRJYRBaEzdN+imiUXQ8iVF8fsp+W4JXw7WISW7fDh7lptWkCwZ4d7QTXyBPfJMYK7SijjFppGnlIVJBJBYj7eUwtiP1IBXGI1XCsjNpbjENVpSAJ2hq2LTywEly3hUYazt31J8w2+aiLx3g3fohXixPfOMYm6zCGs9LVo9MoW3MCJE7R5u/WsOIjrqBoHUO0bJE9vxBpbhsd3+Nb4/vtPCZ4oZYCitNeYuC/8UDvDvy0qvkiW/cgqNqRyzqSZa/s0mqNGjtKOoTm14zZpUauiQgVfqtQiZjq7Q27JNaSK5ExRcrGCXO1FJYh6jR6CFqK7bZdQZ4t8g0rSlPfP1RdBtqaa9diqtzJkQ9duSryi2brQXbxDwbRUpFMBHjRj8+Nt7GDKgvph9okW7LX47gu0SpGnnFQ1S1lYldOsC7hYteR574ZuKs7Ei1lBsfdz7IZoxzzCVmmVqaSySzQbBVAWDek+N4jh9E/4VqZrJjPwiv9BC1XcvOWgO8275CVyBPvAtTVlDJfZkaZGU7NpqBogAj/xEHkeAuJihWYCxGN6e8+9JtSegFXF1TrhhLGP1fak3pebgPz192/8gB4d/6WT7+GdYnpH7hH/DJzzFiYPn/vjW0SgNpTNuPIZoAEZv8tlGw4+RLxy+ZjnKa5NdFoC7UaW0aduoYse6+bXg1DLg6UfRYwmhGEjqPvF75U558SANrElK/+MdpXvmqBpaXOa/MTZaa1DOcSiLaw9j0NNNst3c+63c7EKTpkvKHzu6bPbP0RkuHAVcbRY8ijP46MIbQeeT1mhA+5PV/inyDdQipf8LTvMXbwvoDy7IruDNVZKTfV4CTSRUYdybUCnGU7KUTDxLgCknqUm5aAW6/1p6eMsOYsphLzsHrE0Y/P5bQedx1F/4yPHnMB3/IOoTU9+BL8PhtjuFKBpZXnYNJxTuv+2XqolKR2UQgHhS5novuxVySJhBNRF3SoKK1XZbbXjVwWNyOjlqWJjrWJIy+P5bQedyldNScP+HZ61xKSK3jyrz+NiHG1hcOLL/+P+PDF2gOkekKGiNWKgJ+8Z/x8Iv4DdQHzcpZyF4v19I27w9/yPGDFQvmEpKtqv/TLiWMfn4sofMm9eAH8Ao0zzh7h4sJqYtxZd5/D7hkYPneDzl5idlzNHcIB0jVlQ+8ULzw/nc5/ojzl2juE0apD7LRnJxe04dMz2iOCFNtGFpTuXA5AhcTRo8mdN4kz30nVjEC4YTZQy4gpC7GlTlrePKhGsKKgeXpCYeO0MAd/GH7yKQUlXPLOasOH3FnSphjHuDvEu4gB8g66oNbtr6eMbFIA4fIBJkgayoXriw2XEDQPJrQeROAlY6aeYOcMf+IVYTU3XFlZufMHinGywaW3YLpObVBAsbjF4QJMsVUSayjk4voPsHJOQfPWDhCgDnmDl6XIRerD24HsGtw86RMHOLvVSHrKBdeVE26gKB5NKHzaIwLOmrqBWJYZDLhASG16c0Tn+CdRhWDgWXnqRZUTnPIHuMJTfLVpkoYy5CzylHVTGZMTwkGAo2HBlkQplrJX6U+uF1wZz2uwS1SQ12IqWaPuO4baZaEFBdukksJmkcTOm+YJSvoqPFzxFA/YUhIvWxcmSdPWTWwbAKVp6rxTtPFUZfKIwpzm4IoMfaYQLWgmlG5FME2gdBgm+J7J+rtS/XBbaVLsR7bpPQnpMFlo2doWaVceHk9+MkyguZNCJ1He+kuHTWyQAzNM5YSUg/GlTk9ZunAsg1qELVOhUSAK0LABIJHLKbqaEbHZLL1VA3VgqoiOKXYiS+HRyaEKgsfIqX64HYWbLRXy/qWoylIV9gudL1OWBNgBgTNmxA6b4txDT4gi3Ri7xFSLxtXpmmYnzAcWDZgY8d503LFogz5sbonDgkKcxGsWsE1OI+rcQtlgBBCSOKD1mtqYpIU8cTvBmAT0yZe+zUzeY92fYjTtGipXLhuR0ePoHk0ofNWBX+lo8Z7pAZDk8mEw5L7dVyZZoE/pTewbI6SNbiAL5xeygW4xPRuLCGbhcO4RIeTMFYHEJkYyEO9HmJfXMDEj/LaH781wHHZEtqSQ/69UnGpzH7LKIAZEDSPJnTesJTUa+rwTepI9dLJEawYV+ZkRn9g+QirD8vF8Mq0jFQ29js6kCS3E1+jZIhgPNanHdHFqFvPJLHqFwQqbIA4jhDxcNsOCCQLDomaL/dr5lyJaJU6FxPFjO3JOh3kVMcROo8u+C+jo05GjMF3P3/FuDLn5x2M04xXULPwaS6hBYki+MrMdZJSgPHlcB7nCR5bJ9Kr5ACUn9jk5kivdd8tk95SOGrtqu9lr2IhK65ZtEl7ZKrp7DrqwZfRUSN1el7+7NJxZbywOC8neNKTch5vsTEMNsoCCqHBCqIPRjIPkm0BjvFODGtto99rCl+d3wmHkW0FPdpZtC7MMcVtGFQjJLX5bdQ2+x9ypdc313uj8xlsrfuLgWXz1cRhZvJYX0iNVBRcVcmCXZs6aEf3RQF2WI/TcCbKmGU3IOoDJGDdDub0+hYckt6PlGu2BcxmhbTdj/klhccLGJMcqRjMJP1jW2ETqLSWJ/29MAoORluJ+6LPffBZbi5gqi5h6catQpmOT7/OFf5UorRpLzCqcMltBLhwd1are3kztrSzXO0LUbXRQcdLh/RdSZ+swRm819REDrtqzC4es6Gw4JCKlSnjYVpo0xeq33PrADbFLL3RuCmObVmPN+24kfa+AojDuM4umKe2QwCf6EN906HwjujaitDs5o0s1y+k3lgbT2W2i7FJdnwbLXhJUBq/9liTctSmFC/0OqUinb0QddTWamtjbHRFuWJJ6NpqZ8vO3fZJ37Db+2GkaPYLGHs7XTTdiFQJ68SkVJFVmY6McR5UycflNCsccHFaV9FNbR4NttLxw4pQ7wJd066Z0ohVbzihaxHVExd/ay04oxUKWt+AsdiQ9OUyZ2krzN19IZIwafSTFgIBnMV73ADj7V/K8u1MaY2sJp2HWm0f41tqwajEvdHWOJs510MaAqN4aoSiPCXtN2KSi46dUxHdaMquar82O1x5jqhDGvqmoE9LfxcY3zqA7/x3HA67r9ZG4O6Cuxu12/+TP+eLP+I+HErqDDCDVmBDO4larujNe7x8om2rMug0MX0rL1+IWwdwfR+p1TNTyNmVJ85ljWzbWuGv8/C7HD/izjkHNZNYlhZcUOKVzKFUxsxxN/kax+8zPWPSFKw80rJr9Tizyj3o1gEsdwgWGoxPezDdZ1TSENE1dLdNvuKL+I84nxKesZgxXVA1VA1OcL49dFlpFV5yJMhzyCmNQ+a4BqusPJ2bB+xo8V9u3x48VVIEPS/mc3DvAbXyoYr6VgDfh5do5hhHOCXMqBZUPhWYbWZECwVJljLgMUWOCB4MUuMaxGNUQDVI50TQ+S3kFgIcu2qKkNSHVoM0SHsgoZxP2d5HH8B9woOk4x5bPkKtAHucZsdykjxuIpbUrSILgrT8G7G5oCW+K0990o7E3T6AdW4TilH5kDjds+H64kS0mz24grtwlzDHBJqI8YJQExotPvoC4JBq0lEjjQkyBZ8oH2LnRsQ4Hu1QsgDTJbO8fQDnllitkxuVskoiKbRF9VwzMDvxHAdwB7mD9yCplhHFEyUWHx3WtwCbSMMTCUCcEmSGlg4gTXkHpZXWQ7kpznK3EmCHiXInqndkQjunG5kxTKEeGye7jWz9cyMR2mGiFQ15ENRBTbCp+Gh86vAyASdgmJq2MC6hoADQ3GosP0QHbnMHjyBQvQqfhy/BUbeHd5WY/G/9LK/8Ka8Jd7UFeNWEZvzPb458Dn8DGLOe3/wGL/4xP+HXlRt+M1PE2iLhR8t+lfgxsuh7AfO2AOf+owWhSZRYQbd622hbpKWKuU+XuvNzP0OseRDa+mObgDHJUSc/pKx31QdKffQ5OIJpt8GWjlgTwMc/w5MPCR/yl1XC2a2Yut54SvOtMev55Of45BOat9aWG27p2ZVORRvnEk1hqWMVUmqa7S2YtvlIpspuF1pt0syuZS2NV14mUidCSfzQzg+KqvIYCMljIx2YK2AO34fX4GWdu5xcIAb8MzTw+j/lyWM+Dw/gjs4GD6ehNgA48kX/AI7XXM/XAN4WHr+9ntywqoCakCqmKP0rmQrJJEErG2Upg1JObr01lKQy4jskWalKYfJ/EDLMpjNSHFEUAde2fltaDgmrNaWQ9+AAb8I5vKjz3L1n1LriB/BXkG/wwR9y/oRX4LlioHA4LzP2inzRx/DWmutRweFjeP3tNeSGlaE1Fde0OS11yOpmbIp2u/jF1n2RRZviJM0yBT3IZl2HWImKjQOxIyeU325b/qWyU9Moj1o07tS0G7qJDoGHg5m8yeCxMoEH8GU45tnrNM84D2l297DQ9t1YP7jki/7RmutRweEA77/HWXOh3HCxkRgldDQkAjNTMl2Iloc1qN5JfJeeTlyTRzxURTdn1Ixv2uKjs12AbdEWlBtmVdk2k7FFwj07PCZ9XAwW3dG+8xKzNFr4EnwBZpy9Qzhh3jDXebBpYcpuo4fQ44u+fD1dweEnHzI7v0xuuOALRUV8rXpFyfSTQYkhd7IHm07jpyhlkCmI0ALYqPTpUxXS+z4jgDj1Pflvmz5ecuItpIBxyTHpSTGWd9g1ApfD/bvwUhL4nT1EzqgX7cxfCcNmb3mPL/qi9SwTHJ49oj5ZLjccbTG3pRmlYi6JCG0mQrAt1+i2UXTZ2dv9IlQpN5naMYtviaXlTrFpoMsl3bOAFEa8sqPj2WCMrx3Yjx99qFwO59Aw/wgx+HlqNz8oZvA3exRDvuhL1jMQHPaOJ0+XyA3fp1OfM3qObEVdhxjvynxNMXQV4+GJyvOEFqeQBaIbbO7i63rpxCltdZShPFxkjM2FPVkn3TG+Rp9pO3l2RzFegGfxGDHIAh8SteR0C4HopXzRF61nheDw6TFN05Ebvq8M3VKKpGjjO6r7nhudTEGMtYM92HTDaR1FDMXJ1eThsbKfywyoWwrzRSXkc51flG3vIid62h29bIcFbTGhfV+faaB+ohj7dPN0C2e2lC96+XouFByen9AsunLDJZ9z7NExiUc0OuoYW6UZkIyx2YUR2z6/TiRjyKMx5GbbjLHvHuf7YmtKghf34LJfx63Yg8vrvN2zC7lY0x0tvKezo4HmGYDU+Gab6dFL+KI761lDcNifcjLrrr9LWZJctG1FfU1uwhoQE22ObjdfkSzY63CbU5hzs21WeTddH2BaL11Gi7lVdlxP1nkxqhnKhVY6knS3EPgVGg1JpN5cP/hivujOelhXcPj8HC/LyI6MkteVjlolBdMmF3a3DbsuAYhL44dxzthWSN065xxUd55Lmf0wRbOYOqH09/o9WbO2VtFdaMb4qBgtFJoT1SqoN8wPXMoXLb3p1PUEhxfnnLzGzBI0Ku7FxrKsNJj/8bn/H8fPIVOd3rfrklUB/DOeO+nkghgSPzrlPxluCMtOnDL4Yml6dK1r3vsgMxgtPOrMFUZbEUbTdIzii5beq72G4PD0DKnwjmBULUVFmy8t+k7fZ3pKc0Q4UC6jpVRqS9Umv8bxw35flZVOU1X7qkjnhZlsMbk24qQ6Hz7QcuL6sDC0iHHki96Uh2UdvmgZnjIvExy2TeJdMDZNSbdZyAHe/Yd1xsQhHiKzjh7GxQ4yqMPaywPkjMamvqrYpmO7Knad+ZQC5msCuAPWUoxrxVhrGv7a+KLXFhyONdTMrZ7ke23qiO40ZJUyzgYyX5XyL0mV7NiUzEs9mjtbMN0dERqwyAJpigad0B3/zRV7s4PIfXSu6YV/MK7+OrYe/JvfGMn/PHJe2fyUdtnFrKRNpXV0Y2559aWPt/G4BlvjTMtXlVIWCnNyA3YQBDmYIodFz41PvXPSa6rq9lWZawZ4dP115HXV/M/tnFkkrBOdzg6aP4pID+MZnTJ1SuuB6iZlyiox4HT2y3YBtkUKWooacBQUDTpjwaDt5poBHl1/HXltwP887lKKXxNUEyPqpGTyA699UqY/lt9yGdlUKra0fFWS+36iylVWrAyd7Uw0CZM0z7xKTOduznLIjG2Hx8cDPLb+OvK6Bv7n1DYci4CxUuRxrjBc0bb4vD3rN5Zz36ntLb83eVJIB8LiIzCmn6SMPjlX+yNlTjvIGjs+QzHPf60Aj62/jrzG8j9vYMFtm1VoRWCJdmw7z9N0t+c8cxZpPeK4aTRicS25QhrVtUp7U578chk4q04Wx4YoQSjFryUlpcQ1AbxZ/XVMknIU//OGl7Q6z9Zpxi0+3yFhSkjUDpnCIUhLWVX23KQ+L9vKvFKI0ZWFQgkDLvBoylrHNVmaw10zwCPrr5tlodfnf94EWnQ0lFRWy8pW9LbkLsyUVDc2NSTHGDtnD1uMtchjbCeb1mpxFP0YbcClhzdLu6lfO8Bj6q+bdT2sz/+8SZCV7VIxtt0DUn9L7r4cLYWDSXnseEpOGFuty0qbOVlS7NNzs5FOGJUqQpl2Q64/yBpZf90sxbE+//PGdZ02HSipCbmD6NItmQ4Lk5XUrGpDMkhbMm2ZVheNYV+VbUWTcv99+2NyX1VoafSuC+AN6q9bFIMv5X/eagNWXZxEa9JjlMwNWb00akGUkSoepp1/yRuuqHGbUn3UdBSTxBU6SEVklzWRUkPndVvw2PrrpjvxOvzPmwHc0hpmq82npi7GRro8dXp0KXnUQmhZbRL7NEVp1uuZmO45vuzKsHrktS3GLWXODVjw+vXXLYx4Hf7njRPd0i3aoAGX6W29GnaV5YdyDj9TFkakje7GHYzDoObfddHtOSpoi2SmzJHrB3hM/XUDDEbxP2/oosszcRlehWXUvzHv4TpBVktHqwenFo8uLVmy4DKLa5d3RtLrmrM3aMFr1183E4sewf+85VWeg1c5ag276NZrM9IJVNcmLEvDNaV62aq+14IAOGFsBt973Ra8Xv11YzXwNfmft7Jg2oS+XOyoC8/cwzi66Dhmgk38kUmP1CUiYWOX1bpD2zWXt2FCp7uq8703APAa9dfNdscR/M/bZLIyouVxqJfeWvG9Je+JVckHQ9+CI9NWxz+blX/KYYvO5n2tAP/vrlZ7+8/h9y+9qeB/Hnt967e5mevX10rALDWK//FaAT5MXdBXdP0C/BAes792c40H+AiAp1e1oH8HgH94g/Lttx1gp63op1eyoM/Bvw5/G/7xFbqJPcCXnmBiwDPb/YKO4FX4OjyCb289db2/Noqicw4i7N6TVtoz8tNwDH+8x/i6Ae7lmaQVENzJFb3Di/BFeAwz+Is9SjeQySpPqbLFlNmyz47z5a/AF+AYFvDmHqibSXTEzoT4Gc3OALaqAP4KPFUJ6n+1x+rGAM6Zd78bgJ0a8QN4GU614vxwD9e1Amy6CcskNrczLx1JIp6HE5UZD/DBHrFr2oNlgG4Odv226BodoryjGJ9q2T/AR3vQrsOCS0ctXZi3ruLlhpFDJYl4HmYtjQCP9rhdn4suySLKDt6wLcC52h8xPlcjju1fn+yhuw4LZsAGUuo2b4Fx2UwQu77uqRHXGtg92aN3tQCbFexc0uk93vhTXbct6y7MulLycoUljx8ngDMBg1tvJjAazpEmOtxlzclvj1vQf1Tx7QlPDpGpqgtdSKz/d9/hdy1vTfFHSmC9dGDZbLiezz7Ac801HirGZsWjydfZyPvHXL/Y8Mjzg8BxTZiuwKz4Eb8sBE9zznszmjvFwHKPIWUnwhqfVRcd4Ck0K6ate48m1oOfrX3/yOtvAsJ8zsPAM89sjnddmuLuDPjX9Bu/L7x7xpMzFk6nWtyQfPg278Gn4Aekz2ZgOmU9eJ37R14vwE/BL8G3aibCiWMWWDQ0ZtkPMnlcGeAu/Ag+8ZyecU5BPuy2ILD+sQqyZhAKmn7XZd+jIMTN9eBL7x95xVLSX4On8EcNlXDqmBlqS13jG4LpmGbkF/0CnOi3H8ETOIXzmnmtb0a16Tzxj1sUvQCBiXZGDtmB3KAefPH94xcUa/6vwRn80GOFyjEXFpba4A1e8KQfFF+259tx5XS4egYn8fQsLGrqGrHbztr+uByTahWuL1NUGbDpsnrwBfePPwHHIf9X4RnM4Z2ABWdxUBlqQ2PwhuDxoS0vvqB1JzS0P4h2nA/QgTrsJFn+Y3AOjs9JFC07CGWX1oNX3T/yHOzgDjwPn1PM3g9Jk9lZrMEpxnlPmBbjyo2+KFXRU52TJM/2ALcY57RUzjObbjqxVw++4P6RAOf58pcVsw9Daje3htriYrpDOonre3CudSe6bfkTEgHBHuDiyu5MCsc7BHhYDx7ePxLjqigXZsw+ijMHFhuwBmtoTPtOxOrTvYJDnC75dnUbhfwu/ZW9AgYd+peL68HD+0emKquiXHhWjJg/UrkJYzuiaL3E9aI/ytrCvAd4GcYZMCkSQxfUg3v3j8c4e90j5ZTPdvmJJGHnOCI2nHS8081X013pHuBlV1gB2MX1YNmWLHqqGN/TWmG0y6clJWthxNUl48q38Bi8vtMKyzzpFdSDhxZ5WBA5ZLt8Jv3895DduBlgbPYAj8C4B8hO68FDkoh5lydC4FiWvBOVqjYdqjiLv92t8yPDjrDaiHdUD15qkSURSGmXJwOMSxWAXYwr3zaAufJ66l+94vv3AO+vPcD7aw/w/toDvL/2AO+vPcD7aw/wHuD9tQd4f+0B3l97gPfXHuD9tQd4f+0B3l97gG8LwP8G/AL8O/A5OCq0Ys2KIdv/qOIXG/4mvFAMF16gZD+2Xvu/B8as5+8bfllWyg0zaNO5bfXj6vfhhwD86/Aq3NfRS9t9WPnhfnvCIw/CT8GLcFTMnpntdF/z9V+PWc/vWoIH+FL3Znv57PitcdGP4R/C34avw5fgRVUInCwbsn1yyA8C8zm/BH8NXoXnVE6wVPjdeCI38kX/3+Ct9dbz1pTmHFRu+Hm4O9Ch3clr99negxfwj+ER/DR8EV6B5+DuQOnTgUw5rnkY+FbNU3gNXh0o/JYTuWOvyBf9FvzX663HH/HejO8LwAl8Hl5YLTd8q7sqA3wbjuExfAFegQdwfyDoSkWY8swzEf6o4Qyewefg+cHNbqMQruSL/u/WWc+E5g7vnnEXgDmcDeSGb/F4cBcCgT+GGRzDU3hZYburAt9TEtHgbM6JoxJ+6NMzzTcf6c2bycv2+KK/f+l6LBzw5IwfqZJhA3M472pWT/ajKxnjv4AFnMEpnBTPND6s2J7qHbPAqcMK74T2mZ4VGB9uJA465It+/eL1WKhYOD7xHOkr1ajK7d0C4+ke4Hy9qXZwpgLr+Znm/uNFw8xQOSy8H9IzjUrd9+BIfenYaylf9FsXr8fBAadnPIEDna8IBcwlxnuA0/Wv6GAWPd7dDIKjMdSWueAsBj4M7TOd06qBbwDwKr7oleuxMOEcTuEZTHWvDYUO7aHqAe0Bbq+HEFRzOz7WVoTDQkVds7A4sIIxfCQdCefFRoIOF/NFL1mPab/nvOakSL/Q1aFtNpUb/nFOVX6gzyg/1nISyDfUhsokIzaBR9Kxm80s5mK+6P56il1jXic7nhQxsxSm3OwBHl4fFdLqi64nDQZvqE2at7cWAp/IVvrN6/BFL1mPhYrGMBfOi4PyjuSGf6wBBh7p/FZTghCNWGgMzlBbrNJoPJX2mW5mwZfyRffXo7OFi5pZcS4qZUrlViptrXtw+GQoyhDPS+ANjcGBNRiLCQDPZPMHuiZfdFpPSTcQwwKYdRNqpkjm7AFeeT0pJzALgo7g8YYGrMHS0iocy+YTm2vyRUvvpXCIpQ5pe666TJrcygnScUf/p0NDs/iAI/nqDHC8TmQT8x3NF91l76oDdQGwu61Z6E0ABv7uO1dbf/37Zlv+Zw/Pbh8f1s4Avur6657/+YYBvur6657/+YYBvur6657/+YYBvur6657/+aYBvuL6657/+VMA8FXWX/f8zzcN8BXXX/f8zzcNMFdbf93zP38KLPiK6697/uebtuArrr/u+Z9vGmCusP6653/+1FjwVdZf9/zPN7oHX339dc//fNMu+irrr3v+50+Bi+Zq6697/uebA/jz8Pudf9ht/fWv517J/XUzAP8C/BAeX9WCDrUpZ3/dEMBxgPcfbtTVvsYV5Yn32u03B3Ac4P3b8I+vxNBKeeL9dRMAlwO83959qGO78sT769oB7g3w/vGVYFzKE++v6wV4OMD7F7tckFkmT7y/rhHgpQO8b+4Y46XyxPvrugBeNcB7BRiX8sT767oAvmCA9woAHsoT76+rBJjLBnh3txOvkifeX1dswZcO8G6N7sXyxPvr6i340gHe3TnqVfLE++uKAb50gHcXLnrX8sR7gNdPRqwzwLu7Y/FO5Yn3AK9jXCMGeHdgxDuVJ75VAI8ljP7PAb3/RfjcZfePHBB+79dpfpH1CanN30d+mT1h9GqAxxJGM5LQeeQ1+Tb+EQJrElLb38VHQ94TRq900aMIo8cSOo+8Dp8QfsB8zpqE1NO3OI9Zrj1h9EV78PqE0WMJnUdeU6E+Jjyk/hbrEFIfeWbvId8H9oTRFwdZaxJGvziW0Hn0gqYB/wyZ0PwRlxJST+BOw9m77Amj14ii1yGM/txYQudN0qDzGe4EqfA/5GJCagsHcPaEPWH0esekSwmjRxM6b5JEcZ4ww50ilvAOFxBSx4yLW+A/YU8YvfY5+ALC6NGEzhtmyZoFZoarwBLeZxUhtY4rc3bKnjB6TKJjFUHzJoTOozF2YBpsjcyxDgzhQ1YRUse8+J4wenwmaylB82hC5w0zoRXUNXaRBmSMQUqiWSWkLsaVqc/ZE0aPTFUuJWgeTei8SfLZQeMxNaZSIzbII4aE1Nmr13P2hNHjc9E9guYNCZ032YlNwESMLcZiLQHkE4aE1BFg0yAR4z1h9AiAGRA0jyZ03tyIxWMajMPWBIsxYJCnlITU5ShiHYdZ94TR4wCmSxg9jtB5KyPGYzymAYexWEMwAPIsAdYdV6aObmNPGD0aYLoEzaMJnTc0Ygs+YDw0GAtqxBjkuP38bMRWCHn73xNGjz75P73WenCEJnhwyVe3AEe8TtKdJcYhBl97wuhNAObK66lvD/9J9NS75v17wuitAN5fe4D31x7g/bUHeH/tAd5fe4D3AO+vPcD7aw/w/toDvL/2AO+vPcD7aw/w/toDvAd4f/24ABzZ8o+KLsSLS+Pv/TqTb3P4hKlQrTGh+fbIBT0Axqznnb+L/V2mb3HkN5Mb/nEHeK7d4IcDld6lmDW/iH9E+AH1MdOw/Jlu2T1xNmY98sv4wHnD7D3uNHu54WUuOsBTbQuvBsPT/UfzNxGYzwkP8c+Yz3C+r/i6DcyRL/rZ+utRwWH5PmfvcvYEt9jLDS/bg0/B64DWKrQM8AL8FPwS9beQCe6EMKNZYJol37jBMy35otdaz0Bw2H/C2Smc7+WGB0HWDELBmOByA3r5QONo4V+DpzR/hFS4U8wMW1PXNB4TOqYz9urxRV++ntWCw/U59Ty9ebdWbrgfRS9AYKKN63ZokZVygr8GZ/gfIhZXIXPsAlNjPOLBby5c1eOLvmQ9lwkOy5x6QV1j5TYqpS05JtUgUHUp5toHGsVfn4NX4RnMCe+AxTpwmApTYxqMxwfCeJGjpXzRF61nbcHhUBPqWze9svwcHJ+S6NPscKrEjug78Dx8Lj3T8D4YxGIdxmJcwhi34fzZUr7olevZCw5vkOhoClq5zBPZAnygD/Tl9EzDh6kl3VhsHYcDEb+hCtJSvuiV69kLDm+WycrOTArHmB5/VYyP6jOVjwgGawk2zQOaTcc1L+aLXrKeveDwZqlKrw8U9Y1p66uK8dEzdYwBeUQAY7DbyYNezBfdWQ97weEtAKYQg2xJIkuveAT3dYeLGH+ShrWNwZgN0b2YL7qznr3g8JYAo5bQBziPjx7BPZ0d9RCQp4UZbnFdzBddor4XHN4KYMrB2qHFRIzzcLAHQZ5the5ovui94PCWAPefaYnxIdzRwdHCbuR4B+tbiy96Lzi8E4D7z7S0mEPd+eqO3cT53Z0Y8SV80XvB4Z0ADJi/f7X113f+7p7/+UYBvur6657/+YYBvur6657/+aYBvuL6657/+aYBvuL6657/+aYBvuL6657/+aYBvuL6657/+VMA8FXWX/f8z58OgK+y/rrnf75RgLna+uue//lTA/CV1V/3/M837aKvvv6653++UQvmauuve/7nTwfAV1N/3fM/fzr24Cuuv+75nz8FFnxl9dc9//MOr/8/glixwRuUfM4AAAAASUVORK5CYII="}function 
5071D(){return"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAhCAAAAABIXyLAAAAAOElEQVRIx2NgGAWjYBSMglEwEICREYRgFBZBqDCSLA2MGPUIVQETE9iNUAqLR5gIeoQKRgwXjwAAGn4AtaFeYLEAAAAASUVORK5CYII="}return Nu}var qu={},zv={},n8;function Voe(){return n8||(n8=1,Object.defineProperty(zv,"__esModule",{value:!0}),zv.background_frag=void 0,zv.background_frag=`
5072precision mediump float;
5073precision mediump samplerCube;
5074precision mediump sampler2D;
5075
5076#if defined(dVariant_skybox)
5077    uniform samplerCube tSkybox;
5078    uniform mat4 uViewDirectionProjectionInverse;
5079    uniform float uBlur;
5080    uniform float uOpacity;
5081    uniform float uSaturation;
5082    uniform float uLightness;
5083    uniform mat3 uRotation;
5084#elif defined(dVariant_image)
5085    uniform sampler2D tImage;
5086    uniform vec2 uImageScale;
5087    uniform vec2 uImageOffset;
5088    uniform float uBlur;
5089    uniform float uOpacity;
5090    uniform float uSaturation;
5091    uniform float uLightness;
5092#elif defined(dVariant_horizontalGradient) || defined(dVariant_radialGradient)
5093    uniform vec3 uGradientColorA;
5094    uniform vec3 uGradientColorB;
5095    uniform float uGradientRatio;
5096#endif
5097
5098uniform vec2 uTexSize;
5099uniform vec4 uViewport;
5100uniform bool uViewportAdjusted;
5101varying vec4 vPosition;
5102
5103// TODO: add as general pp option to remove banding?
5104// Iestyn's RGB dither from http://alex.vlachos.com/graphics/Alex_Vlachos_Advanced_VR_Rendering_GDC2015.pdf
5105vec3 ScreenSpaceDither(vec2 vScreenPos) {
5106    vec3 vDither = vec3(dot(vec2(171.0, 231.0), vScreenPos.xy));
5107    vDither.rgb = fract(vDither.rgb / vec3(103.0, 71.0, 97.0));
5108    return vDither.rgb / 255.0;
5109}
5110
5111vec3 saturateColor(vec3 c, float amount) {
5112    // https://www.w3.org/TR/WCAG21/#dfn-relative-luminance
5113    const vec3 W = vec3(0.2125, 0.7154, 0.0721);
5114    vec3 intensity = vec3(dot(c, W));
5115    return mix(intensity, c, 1.0 + amount);
5116}
5117
5118vec3 lightenColor(vec3 c, float amount) {
5119    return c + amount;
5120}
5121
5122void main() {
5123    #if defined(dVariant_skybox)
5124        vec4 t = uViewDirectionProjectionInverse * vPosition;
5125        #ifdef enabledShaderTextureLod
5126            gl_FragColor = textureCubeLodEXT(tSkybox, uRotation * normalize(t.xyz / t.w), uBlur * 8.0);
5127        #else
5128            gl_FragColor = textureCube(tSkybox, uRotation * normalize(t.xyz / t.w));
5129        #endif
5130        gl_FragColor.a = uOpacity;
5131        gl_FragColor.rgb = lightenColor(saturateColor(gl_FragColor.rgb, uSaturation), uLightness);
5132    #elif defined(dVariant_image)
5133        vec2 coords;
5134        if (uViewportAdjusted) {
5135            coords = ((gl_FragCoord.xy - uViewport.xy) * (uTexSize / uViewport.zw) / uImageScale) + uImageOffset;
5136        } else {
5137            coords = (gl_FragCoord.xy / uImageScale) + uImageOffset;
5138        }
5139        #ifdef enabledShaderTextureLod
5140            gl_FragColor = texture2DLodEXT(tImage, vec2(coords.x, 1.0 - coords.y), uBlur * 8.0);
5141        #else
5142            gl_FragColor = texture2D(tImage, vec2(coords.x, 1.0 - coords.y));
5143        #endif
5144        gl_FragColor.a = uOpacity;
5145        gl_FragColor.rgb = lightenColor(saturateColor(gl_FragColor.rgb, uSaturation), uLightness);
5146    #elif defined(dVariant_horizontalGradient)
5147        float d;
5148        if (uViewportAdjusted) {
5149            d = ((gl_FragCoord.y - uViewport.y) * (uTexSize.y / uViewport.w) / uTexSize.y) + 1.0 - (uGradientRatio * 2.0);
5150        } else {
5151            d = (gl_FragCoord.y / uTexSize.y) + 1.0 - (uGradientRatio * 2.0);
5152        }
5153        gl_FragColor = vec4(mix(uGradientColorB, uGradientColorA, clamp(d, 0.0, 1.0)), 1.0);
5154        gl_FragColor.rgb += ScreenSpaceDither(gl_FragCoord.xy);
5155    #elif defined(dVariant_radialGradient)
5156        float d;
5157        if (uViewportAdjusted) {
5158            d = distance(vec2(0.5), (gl_FragCoord.xy - uViewport.xy) * (uTexSize / uViewport.zw) / uTexSize) + uGradientRatio - 0.5;
5159        } else {
5160            d = distance(vec2(0.5), gl_FragCoord.xy / uTexSize) + uGradientRatio - 0.5;
5161        }
5162        gl_FragColor = vec4(mix(uGradientColorB, uGradientColorA, 1.0 - clamp(d, 0.0, 1.0)), 1.0);
5163        gl_FragColor.rgb += ScreenSpaceDither(gl_FragCoord.xy);
5164    #endif
5165}
5166`),zv}var Hv={},i8;function Eoe(){return i8||(i8=1,Object.defineProperty(Hv,"__esMo
5166dule",{value:!0}),Hv.background_vert=void 0,Hv.background_vert=`
5167precision mediump float;
5168
5169attribute vec2 aPosition;
5170
5171varying vec4 vPosition;
5172
5173void main() {
5174    vPosition = vec4(aPosition, 1.0, 1.0);
5175    gl_Position = vec4(aPosition, 1.0, 1.0);
5176}
5177`),Hv}var a8;function Boe(){if(a8)return qu;a8=1,Object.defineProperty(qu,"__esModule",{value:!0}),qu.BackgroundPass=qu.BackgroundParams=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Voe(),c=Eoe(),o=Zt(),s=bn(),h=Xr(),f=Kr(),y=Ne(),_=Ct(),g=ta(),a=wt(),d=ns(),p=vt(),u=Ha(),m=Fa(),v=er(),b=K_(),P=zQ(),C={opacity:y.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),saturation:y.ParamDefinition.Numeric(0,{min:-1,max:1,step:.01}),lightness:y.ParamDefinition.Numeric(0,{min:-1,max:1,step:.01})},l={faces:y.ParamDefinition.MappedStatic("urls",{urls:y.ParamDefinition.Group({nx:y.ParamDefinition.Text("",{label:"Negative X / Left"}),ny:y.ParamDefinition.Text("",{label:"Negative Y / Bottom"}),nz:y.ParamDefinition.Text("",{label:"Negative Z / Back"}),px:y.ParamDefinition.Text("",{label:"Positive X / Right"}),py:y.ParamDefinition.Text("",{label:"Positive Y / Top"}),pz:y.ParamDefinition.Text("",{label:"Positive Z / Front"})},{isExpanded:!0,label:"URLs"}),files:y.ParamDefinition.Group({nx:y.ParamDefinition.File({label:"Negative X / Left",accept:"image/*"}),ny:y.ParamDefinition.File({label:"Negative Y / Bottom",accept:"image/*"}),nz:y.ParamDefinition.File({label:"Negative Z / Back",accept:"image/*"}),px:y.ParamDefinition.File({label:"Positive X / Right",accept:"image/*"}),py:y.ParamDefinition.File({label:"Positive Y / Top",accept:"image/*"}),pz:y.ParamDefinition.File({label:"Positive Z / Front",accept:"image/*"})},{isExpanded:!0,label:"Files"})}),blur:y.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{description:'Note, this only works in WebGL2 or when "EXT_shader_texture_lod" is available.'}),rotation:y.ParamDefinition.Group({x:y.ParamDefinition.Numeric(0,{min:0,max:360,step:1},{immediateUpdate:!0}),y:y.ParamDefinition.Numeric(0,{min:0,max:360,step:1},{immediateUpdate:!0}),z:y.ParamDefinition.Numeric(0,{min:0,max:360,step:1},{immediateUpdate:!0})}),...C},S={source:y.ParamDefinition.MappedStatic("url",{url:y.ParamDefinition.Text(""),file:y.ParamDefinition.File({accept:"image/*"})}),blur:y.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{description:'Note, this only works in WebGL2 or with power-of-two images and when "EXT_shader_texture_lod" is available.'}),...C,coverage:y.ParamDefinition.Select("viewport",y.ParamDefinition.arrayToOptions(["viewport","canvas"]))},T={topColor:y.ParamDefinition.Color((0,p.Color)(14540253)),bottomColor:y.ParamDefinition.Color((0,p.Color)(15658734)),ratio:y.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01}),coverage:y.ParamDefinition.Select("viewport",y.ParamDefinition.arrayToOptions(["viewport","canvas"]))},A={centerColor:y.ParamDefinition.Color((0,p.Color)(14540253)),edgeColor:y.ParamDefinition.Color((0,p.Color)(15658734)),ratio:y.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01}),coverage:y.ParamDefinition.Select("viewport",y.ParamDefinition.arrayToOptions(["viewport","canvas"]))};qu.BackgroundParams={variant:y.ParamDefinition.MappedStatic("off",{off:y.ParamDefinition.EmptyGroup(),skybox:y.ParamDefinition.Group(l,{isExpanded:!0}),image:y.ParamDefinition.Group(S,{isExpanded:!0}),horizontalGradient:y.ParamDefinition.Group(T,{isExpanded:!0}),radialGradient:y.ParamDefinition.Group(A,{isExpanded:!0})},{label:"Environment"})};class x{constructor(k,j,H,G){this.webgl=k,this.assetManager=j,this.camera=new g.Camera,this.target=(0,a.Vec3)(),this.position=(0,a.Vec3)(),this.dir=(0,a.Vec3)(),this.bgColor=(0,a.Vec3)(),this.renderable=q(k,H,G)}setSize(k,j){const[H,G]=this.renderable.values.uTexSize.ref.value;(k!==H||j!==G)&&f.ValueCell.update(this.renderable.values.uTexSize,d.Vec2.set(this.renderable.values.uTexSize.ref.value,k,j))}clearSkybox(){this.skybox!==void 0&&(this.skybox.texture.destroy(),this.skybox.assets.forEach(k=>this.assetManager.release(k)),this.skybox=void 0)}updateSkybox(k,j,H){var G;const z=(G=this.skybox)===null||G===void 0?void 0:G.props.faces,W=j.faces.params;if(!W.nx||!W.ny||!W.nz||!W.px||!W.py||!W.pz){this.clearSkybox(),H?.(!1);return}
5177if(!this.skybox||!z||!E(j.faces,this.skybox.props.faces)){this.clearSkybox();const{texture:Q,assets:J}=I(this.webgl,this.assetManager,j.faces,ae=>{this.skybox&&(this.skybox.loaded=!ae),H?.(!0)});this.skybox={texture:Q,props:{...j},assets:J,loaded:!1},f.ValueCell.update(this.renderable.values.tSkybox,Q),this.renderable.update(
5177)}else H?.(!1);if(!this.skybox)return;let X=k;k.state.mode==="orthographic"&&(this.camera.setState({...k.state,mode:"perspective"}),this.camera.update(),X=this.camera);const Y=this.renderable.values.uViewDirectionProjectionInverse.ref.value;h.Mat4.isZero(k.headRotation)?(a.Vec3.sub(this.dir,X.state.position,X.state.target),a.Vec3.setMagnitude(this.dir,this.dir,.1),a.Vec3.copy(this.position,this.dir),h.Mat4.lookAt(Y,this.position,this.target,X.state.up)):h.Mat4.invert(Y,k.headRotation),h.Mat4.mul(Y,X.projection,Y),h.Mat4.invert(Y,Y),f.ValueCell.update(this.renderable.values.uViewDirectionProjectionInverse,Y);const K=this.renderable.values.uRotation.ref.value;b.Mat3.fromEuler(K,P.Euler.create((0,v.degToRad)(j.rotation.x),(0,v.degToRad)(j.rotation.y),(0,v.degToRad)(j.rotation.z)),"XYZ"),f.ValueCell.update(this.renderable.values.uRotation,K),f.ValueCell.updateIfChanged(this.renderable.values.uBlur,j.blur),f.ValueCell.updateIfChanged(this.renderable.values.uOpacity,j.opacity),f.ValueCell.updateIfChanged(this.renderable.values.uSaturation,j.saturation),f.ValueCell.updateIfChanged(this.renderable.values.uLightness,j.lightness),f.ValueCell.updateIfChanged(this.renderable.values.dVariant,"skybox"),this.renderable.update()}clearImage(){this.image!==void 0&&(this.image.texture.destroy(),this.assetManager.release(this.image.asset),this.image=void 0)}updateImage(k,j){if(!k.source.params){this.clearImage(),j?.(!1);return}if(!this.image||!this.image.props.source.params||!O(k.source,this.image.props.source)){this.clearImage();const{texture:H,asset:G}=F(this.webgl,this.assetManager,k.source,z=>{this.image&&(this.image.loaded=!z),j?.(!0)});this.image={texture:H,props:{...k},asset:G,loaded:!1},f.ValueCell.update(this.renderable.values.tImage,H),this.renderable.update()}else j?.(!1);this.image&&(f.ValueCell.updateIfChanged(this.renderable.values.uBlur,k.blur),f.ValueCell.updateIfChanged(this.renderable.values.uOpacity,k.opacity),f.ValueCell.updateIfChanged(this.renderable.values.uSaturation,k.saturation),f.ValueCell.updateIfChanged(this.renderable.values.uLightness,k.lightness),f.ValueCell.updateIfChanged(this.renderable.values.uViewportAdjusted,k.coverage==="viewport"),f.ValueCell.updateIfChanged(this.renderable.values.dVariant,"image"),this.renderable.update())}updateImageScaling(){var k,j;const H=this.renderable.values,[G,z]=H.uTexSize.ref.value,W=((k=this.image)===null||k===void 0?void 0:k.texture.getWidth())||0,X=((j=this.image)===null||j===void 0?void 0:j.texture.getHeight())||0,Y=G/z,K=W/X;Y<K?f.ValueCell.update(H.uImageScale,d.Vec2.set(H.uImageScale.ref.value,W*z/X,z)):f.ValueCell.update(H.uImageScale,d.Vec2.set(H.uImageScale.ref.value,G,X*G/W));const[Q,J]=H.uImageScale.ref.value,ae=Q/J;ae>Y?f.ValueCell.update(H.uImageOffset,d.Vec2.set(H.uImageOffset.ref.value,(1-Y/ae)/2,0)):f.ValueCell.update(H.uImageOffset,d.Vec2.set(H.uImageOffset.ref.value,0,(1-ae/Y)/2))}updateGradient(k,j,H,G,z){f.ValueCell.update(this.renderable.values.uGradientColorA,p.Color.toVec3Normalized(this.renderable.values.uGradientColorA.ref.value,k)),f.ValueCell.update(this.renderable.values.uGradientColorB,p.Color.toVec3Normalized(this.renderable.values.uGradientColorB.ref.value,j)),f.ValueCell.updateIfChanged(this.renderable.values.uGradientRatio,H),f.ValueCell.updateIfChanged(this.renderable.values.uViewportAdjusted,z),f.ValueCell.updateIfChanged(this.renderable.values.dVariant,G),this.renderable.update()}update(k,j,H){if(j.variant.name==="off"){this.clearSkybox(),this.clearImage(),H?.(!1);return}else j.variant.name==="skybox"?(this.clearImage(),this.updateSkybox(k,j.variant.params,H)):j.variant.name==="image"?(this.clearSkybox(),this.updateImage(j.variant.params,H)):j.variant.name==="horizontalGradient"?(this.clearSkybox(),this.clearImage(),this.updateGradient(j.variant.params.topColor,j.variant.params.bottomColor,j.variant.params.ratio,j.variant.name,j.variant.params.coverage==="viewport"),H?.(!1)):j.variant.name==="radialGradient"&&(this.clearSkybox(),this.clearImage(),this.updateGradient(j.variant.params.centerColor,j.variant.params.edgeColor,j.variant.params.ratio,j.variant.name,j.variant.params.coverage==="viewport"),H?.(!1));const{x:G,y:z,width:W,height:X}=k.viewport;f.ValueCell.update(this.renderable.values.uViewport,m.Vec4.set(this.renderable.values.uViewport.ref.value,G,z,W,X))}_isEnabled(k){return!!(this.skybox&&this.skybox.loaded||this.image&&this.image.loaded||k.variant.name==="horizontalGradient"||k.variant.name==="radialGradient")}isEnabled(k){return k.enabled&&this._isEnabled(k.background)}isReady(){return!!(this.skybox&&this.skybox.loaded||this.image&&this.image.loaded||this.renderable.values.dVariant.ref.value==="horizontalGradient"||this.renderable.values.dVariant.ref.value==="radialGradient")}clear(k,j,H){const{gl:G,state:z}=this.webgl;this._isEnabled(k)?(j?z.clearColor(0,0,0,0):(p.Color.toVec3Normalized(this.bgColor,H),z.clearColor(this.bgColor[0],this.bgColor[1],this.bgColor[2],1)),G.clear(G.COLOR_BUFFER_BIT),z.enable(G.BLEND),z.blendFuncSeparate(G.SRC_ALPHA,G.ONE_MINUS_SRC_ALPHA,G.ONE,G.ONE_MINUS_SRC_ALPHA)):(p.Color.toVec3Normalized(this.bgColor,H),z.clearColor(this.bgColor[0],this.bgColor[1],this.bgColor[2],1),G.clear(G.COLOR_BUFFER_BIT))}render(k){!this._isEnabled(k)||!this.isReady()||(this.renderable.values.dVariant.ref.value==="image"&&this.updateImageScaling(),_.isTimingMode&&this.webgl.timer.mark("Backgroun
5177dPass.render"),this.renderable.render(),_.isTimingMode&&this.webgl.timer.markEnd("BackgroundPass.render"))}dispose(){this.clearSkybox(),this.clearImage()}}qu.BackgroundPass=x;const M="background-skybox";function D(N,k){return k.name==="urls"?{nx:u.Asset.getUrlAsset(N,k.params.nx),ny:u.Asset.getUrlAsset(N,k.params.ny),nz:u.Asset.getUrlAsset(N,k.params.nz),px:u.Asset.getUrlAsset(N,k.params.px),py:u.Asset.getUrlAsset(N,k.params.py),pz:u.Asset.getUrlAsset(N,k.params.pz)}:{nx:k.params.nx,ny:k.params.ny,nz:k.params.nz,px:k.params.px,py:k.params.py,pz:k.params.pz}}function V(N,k){const j=H=>N.resolve(H,"binary").run().then(G=>new Blob([G.data]));return{nx:j(k.nx),ny:j(k.ny),nz:j(k.nz),px:j(k.px),py:j(k.py),pz:j(k.pz)}}function R(N){var k,j,H,G,z,W;return N.name==="urls"?`${M}_${N.params.nx}|${N.params.ny}|${N.params.nz}|${N.params.px}|${N.params.py}|${N.params.pz}`:`${M}_${(k=N.params.nx)===null||k===void 0?void 0:k.id}|${(j=N.params.ny)===null||j===void 0?void 0:j.id}|${(H=N.params.nz)===null||H===void 0?void 0:H.id}|${(G=N.params.px)===null||G===void 0?void 0:G.id}|${(z=N.params.py)===null||z===void 0?void 0:z.id}|${(W=N.params.pz)===null||W===void 0?void 0:W.id}`}function E(N,k){return R(N)===R(k)}function I(N,k,j,H){const G=D(k,j),z=V(k,G),W=[G.nx,G.ny,G.nz,G.px,G.py,G.pz];return typeof HTMLImageElement>"u"?(console.error('Missing "HTMLImageElement" required for background skybox'),H?.(!0),{texture:(0,s.createNullTexture)(),assets:W}):{texture:N.resources.cubeTexture(z,!0,H),assets:W}}const B="background-image";function w(N){var k;return N.name==="url"?`${B}_${N.params}`:`${B}_${(k=N.params)===null||k===void 0?void 0:k.id}`}function O(N,k){return w(N)===w(k)}function F(N,k,j,H){var G;const z=j.name==="url"?(G=k.tryFindFilename(j.params))!==null&&G!==void 0?G:u.Asset.getUrlAsset(k,j.params):j.params;if(typeof HTMLImageElement>"u")return console.error('Missing "HTMLImageElement" required for background image'),H?.(!0),{texture:(0,s.createNullTexture)(),asset:z};const W=N.resources.texture("image-uint8","rgba","ubyte","linear"),X=new Image;return X.onload=()=>{W.load(X),(N.isWebGL2||(0,v.isPowerOfTwo)(X.width)&&(0,v.isPowerOfTwo)(X.height))&&W.mipmap(),H?.()},X.onerror=()=>{H?.(!0)},k.resolve(z,"binary").run().then(Y=>{const K=new Blob([Y.data]);X.src=URL.createObjectURL(K)}),{texture:W,asset:z}}const L={drawCount:(0,r.ValueSpec)("number"),instanceCount:(0,r.ValueSpec)("number"),aPosition:(0,r.AttributeSpec)("float32",2,0),tSkybox:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tImage:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uImageScale:(0,r.UniformSpec)("v2"),uImageOffset:(0,r.UniformSpec)("v2"),uTexSize:(0,r.UniformSpec)("v2"),uViewport:(0,r.UniformSpec)("v4"),uViewportAdjusted:(0,r.UniformSpec)("b"),uViewDirectionProjectionInverse:(0,r.UniformSpec)("m4"),uGradientColorA:(0,r.UniformSpec)("v3"),uGradientColorB:(0,r.UniformSpec)("v3"),uGradientRatio:(0,r.UniformSpec)("f"),uBlur:(0,r.UniformSpec)("f"),uOpacity:(0,r.UniformSpec)("f"),uSaturation:(0,r.UniformSpec)("f"),uLightness:(0,r.UniformSpec)("f"),uRotation:(0,r.UniformSpec)("m3"),dVariant:(0,r.DefineSpec)("string",["skybox","image","verticalGradient","horizontalGradient","radialGradient"])},U=(0,n.ShaderCode)("background",c.background_vert,i.background_frag,{shaderTextureLod:"optional"});function q(N,k,j){const H={drawCount:f.ValueCell.create(6),instanceCount:f.ValueCell.create(1),aPosition:f.ValueCell.create(e.QuadPositions),tSkybox:f.ValueCell.create((0,s.createNullTexture)()),tImage:f.ValueCell.create((0,s.createNullTexture)()),uImageScale:f.ValueCell.create((0,d.Vec2)()),uImageOffset:f.ValueCell.create((0,d.Vec2)()),uTexSize:f.ValueCell.create(d.Vec2.create(k,j)),uViewport:f.ValueCell.create((0,m.Vec4)()),uViewportAdjusted:f.ValueCell.create(!0),uViewDirectionProjectionInverse:f.ValueCell.create((0,h.Mat4)()),uGradientColorA:f.ValueCell.create((0,a.Vec3)()),uGradientColorB:f.ValueCell.create((0,a.Vec3)()),uGradientRatio:f.ValueCell.create(.5),uBlur:f.ValueCell.create(0),uOpacity:f.ValueCell.create(1),uSaturation:f.ValueCell.create(0),uLightness:f.ValueCell.create(0),uRotation:f.ValueCell.create(b.Mat3.identity()),dVariant:f.ValueCell.create("skybox")},G={...L},z=(0,o.createComputeRenderItem)(N,"triangles",U,G,H);return(0,t.createComputeRenderable)(z,H)}return qu}var Uu={},Wv={},o8;function Roe(){return o8||(o8=1,Object.defineProperty(Wv,"__esMo
5177dule",{value:!0}),Wv.cas_frag=void 0,Wv.cas_frag=`
5178precision mediump float;
5179precision mediump sampler2D;
5180
5181uniform sampler2D tColor;
5182uniform vec2 uTexSizeInv;
5183
5184uniform float uSharpness;
5185
5186// adapted from https://www.shadertoy.com/view/stXSWB
5187
5188/*
5189* FidelityFX Super Resolution scales up a low resolution
5190* image, while adding fine detail.
5191*
5192* MIT Open License
5193*
5194* https://gpuopen.com/fsr
5195*
5196* Left: FSR processed
5197* Right: Original texture, bilinear interpolation
5198*
5199* Mouse at top: Sharpness 0 stops (maximum)
5200* Mouse at bottom: Sharpness 2 stops (minimum)
5201*
5202* It works in two passes-
5203*   EASU upsamples the image with a clamped Lanczos kernel.
5204*   RCAS sharpens the image at the target resolution.
5205*
5206* I needed to make a few changes to improve readability and
5207* WebGL compatibility in an algorithm I don't fully understand.
5208* Expect bugs.
5209*
5210* Shader not currently running for WebGL1 targets (eg. mobile Safari)
5211*
5212* There is kind of no point to using FSR in Shadertoy, as it renders buffers
5213* at full target resolution. But this might be useful for WebGL based demos
5214* running smaller-than-target render buffers.
5215*
5216* For sharpening with a full resolution render buffer,
5217* FidelityFX CAS is a better option.
5218* https://www.shadertoy.com/view/ftsXzM
5219*
5220* For readability and compatibility, these optimisations have been removed:
5221*   * Fast approximate inverse and inversesqrt
5222*   * textureGather fetches (not WebGL compatible)
5223*   * Multiplying by reciprocal instead of division
5224*
5225* Apologies to AMD for the numerous slowdowns and errors I have introduced.
5226*
5227*/
5228
5229/***** RCAS *****/
5230#define FSR_RCAS_LIMIT (0.25-(1.0/16.0))
5231
5232// Input callback prototypes that need to be implemented by calling shader
5233vec4 FsrRcasLoadF(vec2 p);
5234//------------------------------------------------------------------------------------------------------------------------------
5235void FsrRcasCon(
5236    out float con,
5237    // The scale is {0.0 := maximum, to N>0, where N is the number of stops (halving) of the reduction of sharpness}.
5238    float sharpness
5239) {
5240    // Transform from stops to linear value.
5241    con = exp2(-sharpness);
5242}
5243
5244vec3 FsrRcasF(
5245    vec2 ip, // Integer pixel position in output.
5246    float con
5247) {
5248    // Constant generated by RcasSetup().
5249    // Algorithm uses minimal 3x3 pixel neighborhood.
5250    //    b
5251    //  d e f
5252    //    h
5253    vec2 sp = vec2(ip);
5254    vec3 b = FsrRcasLoadF(sp + vec2( 0,-1)).rgb;
5255    vec3 d = FsrRcasLoadF(sp + vec2(-1, 0)).rgb;
5256    vec3 e = FsrRcasLoadF(sp).rgb;
5257    vec3 f = FsrRcasLoadF(sp + vec2( 1, 0)).rgb;
5258    vec3 h = FsrRcasLoadF(sp + vec2( 0, 1)).rgb;
5259
5260    // Luma times 2.
5261    float bL = b.g + .5 * (b.b + b.r);
5262    float dL = d.g + .5 * (d.b + d.r);
5263    float eL = e.g + .5 * (e.b + e.r);
5264    float fL = f.g + .5 * (f.b + f.r);
5265    float hL = h.g + .5 * (h.b + h.r);
5266
5267    // Noise detection.
5268    #ifdef dDenoise
5269        float nz = .25 * (bL + dL + fL + hL) - eL;
5270        nz=clamp(
5271            abs(nz)
5272            /(
5273                max(max(bL,dL),max(eL,max(fL,hL)))
5274                -min(min(bL,dL),min(eL,min(fL,hL)))
5275            ),
5276            0., 1.
5277        );
5278        nz=1.-.5*nz;
5279    #endif
5280
5281    // Min and max of ring.
5282    vec3 mn4 = min(b, min(f, h));
5283    vec3 mx4 = max(b, max(f, h));
5284
5285    // Immediate constants for peak range.
5286    vec2 peakC = vec2(1., -4.);
5287
5288    // Limiters, these need to be high precision RCPs.
5289    vec3 hitMin = mn4 / (4. * mx4);
5290    vec3 hitMax = (peakC.x - mx4) / (4.* mn4 + peakC.y);
5291    vec3 lobeRGB = max(-hitMin, hitMax);
5292    float lobe = max(
5293        -FSR_RCAS_LIMIT,
5294        min(max(lobeRGB.r, max(lobeRGB.g, lobeRGB.b)), 0.)
5295    )*con;
5296
5297    // Apply noise removal.
5298    #ifdef dDenoise
5299        lobe *= nz;
5300    #endif
5301
5302    // Resolve, which needs the medium precision rcp approximation to avoid visible tonality changes.
5303    return (lobe * (b + d + h + f) + e) / (4. * lobe + 1.);
5304}
5305
5306
5307vec4 FsrRcasLoadF(vec2 p) {
5308    return texture2D(tColor, p * uTexSizeInv);
5309}
5310
5311void main() {
5312    // Set up constants
5313    float con;
5314    FsrRcasCon(con, uSharpness);
5315
5316    // Perform RCAS pass
5317    vec3 col = FsrRcasF(gl_FragCoord.xy, con);
5318
5319    gl_FragColor = vec4(col, FsrRcasLoadF(gl_FragCoord.xy).a);
5320}
5321`),Wv}var s8;function Ooe(){if(s8)return Uu;
5321s8=1,Object.defineProperty(Uu,"__esModule",{value:!0}),Uu.CasPass=Uu.CasParams=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=Ge(),o=et(),s=Ne(),h=Gr(),f=Ct(),y=Roe();Uu.CasParams={sharpness:s.ParamDefinition.Numeric(.5,{min:0,max:1,step:.05}),denoise:s.ParamDefinition.Boolean(!0)};class _{constructor(u,m){this.webgl=u,this.renderable=d(u,m)}updateState(u){const{gl:m,state:v}=this.webgl;v.enable(m.SCISSOR_TEST),v.disable(m.BLEND),v.disable(m.DEPTH_TEST),v.depthMask(!1);const{x:b,y:P,width:C,height:l}=u;v.viewport(b,P,C,l),v.scissor(b,P,C,l),v.clearColor(0,0,0,1),m.clear(m.COLOR_BUFFER_BIT)}setSize(u,m){o.ValueCell.update(this.renderable.values.uTexSizeInv,c.Vec2.set(this.renderable.values.uTexSizeInv.ref.value,1/u,1/m))}update(u,m){const{values:v}=this.renderable,{sharpness:b,denoise:P}=m;let C=!1;v.tColor.ref.value!==u&&(o.ValueCell.update(this.renderable.values.tColor,u),C=!0),o.ValueCell.updateIfChanged(v.uSharpness,2-2*Math.pow(b,.25)),v.dDenoise.ref.value!==P&&(C=!0),o.ValueCell.updateIfChanged(v.dDenoise,P),C&&this.renderable.update()}render(u,m){f.isTimingMode&&this.webgl.timer.mark("CasPass.render"),m?m.bind():this.webgl.bindDrawingBuffer(),this.updateState(u),this.renderable.render(),f.isTimingMode&&this.webgl.timer.markEnd("CasPass.render")}}Uu.CasPass=_;const g={...e.QuadSchema,tColor:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),uSharpness:(0,r.UniformSpec)("f"),dDenoise:(0,r.DefineSpec)("boolean")},a=(0,n.ShaderCode)("cas",h.quad_vert,y.cas_frag);function d(p,u){const m=u.getWidth(),v=u.getHeight(),b={...e.QuadValues,tColor:o.ValueCell.create(u),uTexSizeInv:o.ValueCell.create(c.Vec2.create(1/m,1/v)),uSharpness:o.ValueCell.create(.5),dDenoise:o.ValueCell.create(!0)},P={...g},C=(0,i.createComputeRenderItem)(p,"triangles",a,P,b);return(0,t.createComputeRenderable)(C,b)}return Uu}var ju={},$v={},c8;function koe(){return c8||(c8=1,Object.defineProperty($v,"__esModule",{value:!0}),$v.dof_frag=void 0,$v.dof_frag=`
5322precision highp float;
5323precision highp int;
5324precision highp sampler2D;
5325
5326#include common
5327
5328uniform sampler2D tColor;
5329uniform sampler2D tDepthOpaque;
5330uniform sampler2D tDepthTransparent;
5331
5332uniform vec2 uTexSize;
5333uniform vec4 uBounds;
5334
5335uniform float uBlurSpread;
5336uniform float uInFocus;
5337uniform float uPPM;
5338
5339uniform float uNear; // Near plane
5340uniform float uFar;  // Far plane
5341
5342uniform mat4 uInvProjection; // Inverse projection
5343uniform mat4 uProjection; // projection
5344
5345uniform int uMode; // 0-planar, 1-spherical
5346uniform vec3 uCenter; // Center of focus sphere in view space
5347
5348// Function to convert depth value from depth buffer to view space Z
5349float getViewZ(const in float depth) {
5350    #if dOrthographic == 1
5351        return orthographicDepthToViewZ(depth, uNear, uFar);
5352    #else
5353        return perspectiveDepthToViewZ(depth, uNear, uFar);
5354    #endif
5355}
5356
5357// Retrieve depth from opaque depth texture
5358float getDepthOpaque(const in vec2 coords) {
5359    #ifdef depthTextureSupport
5360        return texture2D(tDepthOpaque, coords).r;
5361    #else
5362        return unpackRGBAToDepth(texture2D(tDepthOpaque, coords));
5363    #endif
5364}
5365
5366// Retrieve depth from transparent depth texture
5367float getDepthTransparent(const in vec2 coords) {
5368    return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords)).x;
5369}
5370
5371bool isBackground(const in float depth) {
5372    return depth == 1.0;
5373}
5374
5375float getDepth(const in vec2 coords) {
5376    return min(getDepthOpaque(coords), getDepthTransparent(coords));
5377}
5378
5379float getCOC(vec2 uv) {
5380    float depth = getDepth(uv);
5381    float viewDist = getViewZ(depth);
5382    vec3 aposition = screenSpaceToViewSpace(vec3(uv.xy, depth), uInvProjection);
5383    float focusDist = length(aposition - uCenter);
5384    float coc = 0.0;  // Circle of Confusion
5385    if (uMode == 0) { // planar Depth of field
5386        coc = (abs(viewDist) - uInFocus) / uPPM;  //focus distance, focus range
5387    } else if(uMode == 1) { // spherical Depth of field
5388        coc = focusDist / uPPM ;
5389    }
5390    coc = clamp(coc, -1.0, 1.0);
5391    return coc;
5392}
5393
5394// Simple box blur for blurring the image
5395vec3 getBlurredImage(vec2 coords) {
5396    vec4 blurColor = vec4(0);
5397    vec2 texelSize = vec2(1.0 / uTexSize.x, 1.0 / uTexSize.y);
5398    float count = 0.0;
5399    for (int x = 0; x < int(dBlurSize); x++) {
5400        for (int y = 0; y < int(dBlurSize); y++) {
5401            vec2 offset = vec2(float(x) - float(dBlurSize) / 2.0, float(y) - float(dBlurSize) / 2.0);
5402            vec2 uvPixel = coords.xy + offset * texelSize * uBlurSpread;
5403            float coc = getCOC(uvPixel);
5404            coc = smoothstep(0.0, 1.0, abs(coc));
5405            // mix blurColor with new color with weight coc
5406            blurColor.rgb = blurColor.rgb + texture2D(tColor, uvPixel).xyz * coc;
5407            count+=coc;
5408        }
5409    }
5410    blurColor = blurColor / count;
5411    return blurColor.rgb;
5412}
5413
5414// simplification from https://catlikecoding.com/unity/tutorials/advanced-rendering/depth-of-field/
5415void main() {
5416    vec2 uv = gl_FragCoord.xy / uTexSize;
5417    vec4 color = texture2D(tColor, uv);
5418    float depth = getDepth(uv);
5419
5420    float viewDist = getViewZ(depth);
5421
5422    vec3 aposition = screenSpaceToViewSpace(vec3(uv.xy, depth), uInvProjection);
5423    float focusDist = length(aposition - uCenter);
5424    vec3 blurColor = getBlurredImage(uv);
5425
5426    float coc = getCOC(uv); // Circle of Confusion
5427
5428    // for debugging the coc
5429    // color.rgb = (coc < 0.0) ? (1.0 - abs(coc)) * vec3(1.0,0.0,0.0) : vec3(0.0, 1.0 - coc, 0.0) ;//mix(color.rgb, blurColor.rgb, abs(coc));
5430    color.rgb = mix(color.rgb, blurColor, smoothstep(0.0, 1.0, abs(coc))); // Smooth blending based on CoC
5431    gl_FragColor = color;
5432}
5433`),$v}var u8;function Fw(){if(u8)return ju;
5433u8=1,Object.defineProperty(ju,"__esModule",{value:!0}),ju.DofPass=ju.DofParams=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=bn(),o=Ge(),s=et(),h=Ne(),f=Gr(),y=koe(),_=Ct();ju.DofParams={blurSize:h.ParamDefinition.Numeric(9,{min:1,max:32,step:1}),blurSpread:h.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),inFocus:h.ParamDefinition.Numeric(0,{min:-5e3,max:5e3,step:1},{description:"Distance from the scene center that will be in focus"}),PPM:h.ParamDefinition.Numeric(20,{min:0,max:5e3,step:.1},{description:"Size of the area that will be in focus"}),center:h.ParamDefinition.Select("camera-target",h.ParamDefinition.arrayToOptions(["scene-center","camera-target"])),mode:h.ParamDefinition.Select("plane",h.ParamDefinition.arrayToOptions(["plane","sphere"]))};class g{static isEnabled(m){return m.enabled&&m.dof.name!=="off"}constructor(m,v,b){this.webgl=m,this.target=m.createRenderTarget(v,b,!1);const P=(0,c.createNullTexture)();this.renderable=p(m,P,P,P)}getByteCount(){return this.target.getByteCount()}updateState(m){const{gl:v,state:b}=this.webgl;b.enable(v.SCISSOR_TEST),b.disable(v.BLEND),b.disable(v.DEPTH_TEST),b.depthMask(!1);const{x:P,y:C,width:l,height:S}=m;b.viewport(P,C,l,S),b.scissor(P,C,l,S),b.clearColor(0,0,0,1),v.clear(v.COLOR_BUFFER_BIT)}setSize(m,v){const b=this.target.texture.getWidth(),P=this.target.texture.getHeight();(m!==b||v!==P)&&(this.target.setSize(m,v),s.ValueCell.update(this.renderable.values.uTexSize,o.Vec2.set(this.renderable.values.uTexSize.ref.value,m,v)))}update(m,v,b,P,C,l){let S=!1;this.renderable.values.tColor.ref.value!==v&&(s.ValueCell.update(this.renderable.values.tColor,v),S=!0),this.renderable.values.tDepthOpaque.ref.value!==b&&(s.ValueCell.update(this.renderable.values.tDepthOpaque,b),S=!0),this.renderable.values.tDepthTransparent.ref.value!==P&&(s.ValueCell.update(this.renderable.values.tDepthTransparent,P),S=!0);const T=m.state.mode==="orthographic"?1:0,A=this.renderable.values.uInvProjection.ref.value;o.Mat4.invert(A,m.projection);const[x,M]=this.renderable.values.uTexSize.ref.value,D=m.viewport;s.ValueCell.update(this.renderable.values.uProjection,m.projection),s.ValueCell.update(this.renderable.values.uInvProjection,A),s.ValueCell.update(this.renderable.values.uMode,C.mode==="sphere"?1:0),o.Vec4.set(this.renderable.values.uBounds.ref.value,D.x/x,D.y/M,(D.x+D.width)/x,(D.y+D.height)/M),s.ValueCell.update(this.renderable.values.uBounds,this.renderable.values.uBounds.ref.value),s.ValueCell.updateIfChanged(this.renderable.values.uNear,m.near),s.ValueCell.updateIfChanged(this.renderable.values.uFar,m.far),s.ValueCell.updateIfChanged(this.renderable.values.dOrthographic,T);const V=Math.round(C.blurSize*this.webgl.pixelRatio);this.renderable.values.dBlurSize.ref.value!==V&&(s.ValueCell.update(this.renderable.values.dBlurSize,V),S=!0);const R=C.center==="scene-center"?l.center:m.state.target,I=o.Vec3.distance(m.state.position,R)+C.inFocus;s.ValueCell.updateIfChanged(this.renderable.values.uInFocus,I*m.scale);const B=this.renderable.values.uCenter.ref.value;o.Vec3.transformMat4(B,R,m.view),s.ValueCell.update(this.renderable.values.uCenter,B),s.ValueCell.updateIfChanged(this.renderable.values.uBlurSpread,C.blurSpread),s.ValueCell.updateIfChanged(this.renderable.values.uPPM,C.PPM*m.scale),S&&this.renderable.update()}render(m,v){_.isTimingMode&&this.webgl.timer.mark("DofPass.render"),v?v.bind():this.webgl.bindDrawingBuffer(),this.updateState(m),this.renderable.render(),_.isTimingMode&&this.webgl.timer.markEnd("DofPass.render")}}ju.DofPass=g;const a={...e.QuadSchema,tDepthOpaque:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),tDepthTransparent:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),tColor:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,r.UniformSpec)("v2"),uProjection:(0,r.UniformSpec)("m4"),uInvProjection:(0,r.UniformSpec)("m4"),uBounds:(0,r.UniformSpec)("v4"),uCenter:(0,r.UniformSpec)("v3"),uMode:(0,r.UniformSpec)("i"),dOrthographic:(0,r.DefineSpec)("number"),uNear:(0,r.UniformSpec)("f"),uFar:(0,r.UniformSpec)("f"),dBlurSize:(0,r.DefineSpec)("number"),uBlurSpread:(0,r.UniformSpec)("f"),uInFocus:(0,r.UniformSpec)("f"),uPPM:(0,r.UniformSpec)("f")},d=(0,n.ShaderCode)("dof",f.quad_vert,y.dof_frag);function p(u,m,v,b){const P=m.getWidth(),C=m.getHeight(),l={...e.QuadValues,tDepthOpaque:s.ValueCell.create(v),tDepthTransparent:s.ValueCell.create(b),tColor:s.ValueCell.create(m),uTexSize:s.ValueCell.create(o.Vec2.create(P,C)),uProjection:s.ValueCell.create(o.Mat4.identity()),uInvProjection:s.ValueCell.create(o.Mat4.identity()),uBounds:s.ValueCell.create((0,o.Vec4)()),uCenter:s.ValueCell.create((0,o.Vec3)()),uMode:s.ValueCell.create(0),dOrthographic:s.ValueCell.create(0),uNear:s.ValueCell.create(1),uFar:s.ValueCell.create(1e4),dBlurSize:s.ValueCell.create(5),uBlurSpread:s.ValueCell.create(300),uInFocus:s.ValueCell.create(20),uPPM:s.ValueCell.create(20)},S={...a},T=(0,i.createComputeRenderItem)(u,"triangles",d,S,l);return(0,t.createComputeRenderable)(T,l)}return ju}var Gu={},Xv={},l8;function Foe(){return l8||(l8=1,Object.defineProperty(Xv,"__esMo
5433dule",{value:!0}),Xv.composite_frag=void 0,Xv.composite_frag=`
5434precision highp float;
5435precision highp int;
5436precision highp sampler2D;
5437
5438uniform vec2 uTexSizeInv;
5439
5440uniform sampler2D tBlur1;
5441uniform sampler2D tBlur2;
5442uniform sampler2D tBlur3;
5443uniform sampler2D tBlur4;
5444uniform sampler2D tBlur5;
5445uniform float uBloomStrength;
5446uniform float uBloomRadius;
5447uniform float uBloomFactors[5];
5448uniform vec3 uBloomTints[5];
5449
5450float lerpBloomFactor(const in float factor) {
5451    float mirrorFactor = 1.2 - factor;
5452    return mix(factor, mirrorFactor, uBloomRadius);
5453}
5454
5455void main(void) {
5456    vec2 coords = gl_FragCoord.xy * uTexSizeInv;
5457
5458    gl_FragColor = uBloomStrength * (
5459        lerpBloomFactor(uBloomFactors[0]) * vec4(uBloomTints[0], 1.0) * texture2D(tBlur1, coords) +
5460        lerpBloomFactor(uBloomFactors[1]) * vec4(uBloomTints[1], 1.0) * texture2D(tBlur2, coords) +
5461        lerpBloomFactor(uBloomFactors[2]) * vec4(uBloomTints[2], 1.0) * texture2D(tBlur3, coords) +
5462        lerpBloomFactor(uBloomFactors[3]) * vec4(uBloomTints[3], 1.0) * texture2D(tBlur4, coords) +
5463        lerpBloomFactor(uBloomFactors[4]) * vec4(uBloomTints[4], 1.0) * texture2D(tBlur5, coords)
5464    );
5465}
5466`),Xv}var Kv={},d8;function Loe(){return d8||(d8=1,Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.luminosity_frag=void 0,Kv.luminosity_frag=`
5467precision highp float;
5468precision highp int;
5469precision highp sampler2D;
5470
5471uniform sampler2D tColorOpaque;
5472uniform sampler2D tColorTransparent;
5473uniform sampler2D tEmissive;
5474uniform sampler2D tDepthOpaque;
5475uniform sampler2D tDepthTransparent;
5476uniform vec2 uTexSizeInv;
5477
5478uniform vec3 uDefaultColor;
5479uniform float uDefaultOpacity;
5480uniform float uLuminosityThreshold;
5481uniform float uSmoothWidth;
5482
5483uniform float uNear;
5484uniform float uFar;
5485uniform float uIsOrtho;
5486uniform float uFogNear;
5487uniform float uFogFar;
5488uniform bool uOpaqueFogged;
5489
5490#include common
5491
5492float getDepthOpaque(const in vec2 coords) {
5493    #ifdef depthTextureSupport
5494        return texture2D(tDepthOpaque, coords).r;
5495    #else
5496        return unpackRGBAToDepth(texture2D(tDepthOpaque, coords));
5497    #endif
5498}
5499
5500float getDepthTransparent(const in vec2 coords) {
5501    return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords)).x;
5502}
5503
5504float getDepth(const in vec2 coords) {
5505    return min(getDepthOpaque(coords), getDepthTransparent(coords));
5506}
5507
5508bool isBackground(const in float depth) {
5509    // (2^24 - 1) / 2^24, max of 24-bit packed depth; also passes raw fp32.
5510    return depth >= 0.99999994;
5511}
5512
5513void main(void) {
5514    vec2 coords = gl_FragCoord.xy * uTexSizeInv;
5515    vec4 opaqueTexel = texture2D(tColorOpaque, coords);
5516    vec4 transparentTexel = texture2D(tColorTransparent, coords);
5517    // fog illumination's un-fogged opaque seed by the opaque depth, matching standard's per-layer fog
5518    if (!uOpaqueFogged) {
5519        opaqueTexel.rgb *= 1.0 - smoothstep(uFogNear, uFogFar, abs(depthToViewZ(uIsOrtho, getDepthOpaque(coords), uNear, uFar)));
5520    }
5521    // PMA OVER composite, matches postprocessing's final transparency blend.
5522    vec4 texel = transparentTexel + opaqueTexel * (1.0 - transparentTexel.a);
5523    float emissive = texture2D(tEmissive, coords).a;
5524    float depth = getDepth(coords);
5525
5526    if (isBackground(depth)) {
5527        gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
5528        return;
5529    }
5530
5531    vec4 outputColor = vec4(uDefaultColor.rgb, uDefaultOpacity);
5532
5533    #if defined(dMode_luminosity)
5534        vec3 luma = vec3(0.299, 0.587, 0.114);
5535        float v = dot(texel.xyz, luma);
5536        float alpha = smoothstep(uLuminosityThreshold, uLuminosityThreshold + uSmoothWidth, v);
5537
5538        gl_FragColor = mix(outputColor, texel, alpha);
5539    #elif defined(dMode_emissive)
5540        // the prepass already holds the fogged emissive color, free of lighting/exposure
5541        gl_FragColor = texture2D(tEmissive, coords);
5542    #endif
5543}
5544`),Kv}var Yv={},f8;function Noe(){return f8||(f8=1,Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.blur_frag=void 0,Yv.blur_frag=`
5545precision highp float;
5546precision highp int;
5547precision highp sampler2D;
5548
5549uniform sampler2D tInput;
5550uniform vec2 uTexSizeInv;
5551
5552uniform vec2 uDirection;
5553uniform float uGaussianCoefficients[dKernelRadius];
5554
5555void main(void) {
5556    vec2 coords = gl_FragCoord.xy * uTexSizeInv;
5557    float weightSum = uGaussianCoefficients[0];
5558    vec4 diffuseSum = texture2D(tInput, coords) * weightSum;
5559
5560    for(int i = 1; i < dKernelRadius; ++i) {
5561        float x = float(i);
5562        float w = uGaussianCoefficients[i];
5563        vec2 offset = uDirection * uTexSizeInv * x;
5564        vec4 sample1 = texture2D(tInput, coords + offset);
5565        vec4 sample2 = texture2D(tInput, coords - offset);
5566        diffuseSum += (sample1 + sample2) * w;
5567        weightSum += 2.0 * w;
5568    }
5569
5570    gl_FragColor = diffuseSum / weightSum;
5571}
5572`),Yv}var m8;
5572function m2(){if(m8)return Gu;m8=1,Object.defineProperty(Gu,"__esModule",{value:!0}),Gu.BloomPass=Gu.BloomParams=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=bn(),o=Ge(),s=et(),h=Ne(),f=Gr(),y=Ct(),_=Foe(),g=Loe(),a=Noe(),d=Af(),p=5;Gu.BloomParams={strength:h.ParamDefinition.Numeric(1,{min:0,max:3,step:.1}),radius:h.ParamDefinition.Numeric(0,{min:0,max:1,step:.01}),threshold:h.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{description:"Luminosity threshold",hideIf:E=>E.mode==="emissive"}),mode:h.ParamDefinition.Select("emissive",[["luminosity","Luminosity"],["emissive","Emissive"]]),transparency:h.ParamDefinition.Boolean(!0,{description:"Include transparent objects in emissive bloom",hideIf:E=>E.mode!=="emissive"})};class u{static isEnabled(I){return I.enabled&&I.bloom.name==="on"}constructor(I,B,w){this.webgl=I,this.horizontalBlurTargets=[],this.verticalBlurTargets=[],this.emissiveTarget=I.createRenderTarget(B,w,!0,"uint8","linear","rgba"),this.luminosityTarget=I.createRenderTarget(B,w,!1,"uint8","linear"),this.compositeTarget=I.createRenderTarget(B,w,!1,"uint8","linear");let O=Math.round(B/2),F=Math.round(w/2);for(let U=0;U<p;++U)this.horizontalBlurTargets[U]=I.createRenderTarget(O,F,!1,"uint8","linear"),this.verticalBlurTargets[U]=I.createRenderTarget(O,F,!1,"uint8","linear"),O=Math.round(O/2),F=Math.round(F/2);const L=(0,c.createNullTexture)();this.luminosityRenderable=b(I,L,L,L,L,L),this.blurRenderable=M(I,L),this.compositeRenderable=R(I,B,w,this.verticalBlurTargets[0].texture,this.verticalBlurTargets[1].texture,this.verticalBlurTargets[2].texture,this.verticalBlurTargets[3].texture,this.verticalBlurTargets[4].texture)}getByteCount(){return this.emissiveTarget.getByteCount()+this.luminosityTarget.getByteCount()+this.compositeTarget.getByteCount()+this.horizontalBlurTargets.reduce((I,B)=>I+B.getByteCount(),0)+this.verticalBlurTargets.reduce((I,B)=>I+B.getByteCount(),0)}setSize(I,B){const w=this.luminosityTarget.getWidth(),O=this.luminosityTarget.getHeight();if(I!==w||B!==O){this.emissiveTarget.setSize(I,B),this.luminosityTarget.setSize(I,B),this.compositeTarget.setSize(I,B);let F=Math.round(I/2),L=Math.round(B/2);for(let U=0;U<p;++U)this.horizontalBlurTargets[U].setSize(F,L),this.verticalBlurTargets[U].setSize(F,L),F=Math.round(F/2),L=Math.round(L/2);s.ValueCell.update(this.luminosityRenderable.values.uTexSizeInv,o.Vec2.set(this.luminosityRenderable.values.uTexSizeInv.ref.value,1/I,1/B)),s.ValueCell.update(this.compositeRenderable.values.uTexSizeInv,o.Vec2.set(this.compositeRenderable.values.uTexSizeInv.ref.value,1/I,1/B))}}update(I,B,w,O,F,L,U,q){let N=!1;this.luminosityRenderable.values.tColorOpaque.ref.value!==I&&(s.ValueCell.update(this.luminosityRenderable.values.tColorOpaque,I),N=!0),this.luminosityRenderable.values.tColorTransparent.ref.value!==B&&(s.ValueCell.update(this.luminosityRenderable.values.tColorTransparent,B),N=!0),this.luminosityRenderable.values.tEmissive.ref.value!==w&&(s.ValueCell.update(this.luminosityRenderable.values.tEmissive,w),N=!0),this.luminosityRenderable.values.tDepthOpaque.ref.value!==O&&(s.ValueCell.update(this.luminosityRenderable.values.tDepthOpaque,O),N=!0),this.luminosityRenderable.values.tDepthTransparent.ref.value!==F&&(s.ValueCell.update(this.luminosityRenderable.values.tDepthTransparent,F),N=!0),this.luminosityRenderable.values.dMode.ref.value!==L.mode&&(s.ValueCell.update(this.luminosityRenderable.values.dMode,L.mode),N=!0),s.ValueCell.updateIfChanged(this.luminosityRenderable.values.uLuminosityThreshold,L.threshold),s.ValueCell.updateIfChanged(this.luminosityRenderable.values.uNear,U.near),s.ValueCell.updateIfChanged(this.luminosityRenderable.values.uFar,U.far),s.ValueCell.updateIfChanged(this.luminosityRenderable.values.uIsOrtho,U.state.mode==="orthographic"?1:0),s.ValueCell.updateIfChanged(this.luminosityRenderable.values.uFogNear,U.fogNear),s.ValueCell.updateIfChanged(this.luminosityRenderable.values.uFogFar,U.fogFar),s.ValueCell.updateIfChanged(this.luminosityRenderable.values.uOpaqueFogged,q),N&&this.luminosityRenderable.update(),s.ValueCell.updateIfChanged(this.compositeRenderable.values.uBloomRadius,L.radius),s.ValueCell.updateIfChanged(this.compositeRenderable.values.uBloomStrength,L.strength)}render(I){y.isTimingMode&&this.webgl.timer.mark("BloomPass.render");const{gl:B,state:w}=this.webgl,{x:O,y:F,width:L,height:U}=I;w.viewport(O,F,L,U),w.scissor(O,F,L,U),w.enable(B.SCISSOR_TEST),w.disable(B.BLEND),w.disable(B.DEPTH_TEST),w.depthMask(!1),this.luminosityTarget.bind(),this.luminosityRenderable.render();for(let q=0;q<p;++q){const N=this.horizontalBlurTargets[q].getWidth(),k=this.horizontalBlurTargets[q].getHeight();w.viewport(0,0,N,k),w.scissor(0,0,N,k),s.ValueCell.update(this.blurRenderable.values.dKernelRadius,l[q]),s.ValueCell.update(this.blurRenderable.values.uGaussianCoefficients,C(l[q])),s.V
5572alueCell.update(this.blurRenderable.values.uTexSizeInv,o.Vec2.set(this.blurRenderable.values.uTexSizeInv.ref.value,1/N,1/k)),this.horizontalBlurTargets[q].bind(),s.ValueCell.update(this.blurRenderable.values.tInput,q===0?this.luminosityTarget.texture:this.verticalBlurTargets[q-1].texture),s.ValueCell.update(this.blurRenderable.values.uDirection,S),this.blurRenderable.update(),this.blurRenderable.render(),this.verticalBlurTargets[q].bind(),s.ValueCell.update(this.blurRenderable.values.tInput,this.horizontalBlurTargets[q].texture),s.ValueCell.update(this.blurRenderable.values.uDirection,T),this.blurRenderable.update(),this.blurRenderable.render()}w.viewport(O,F,L,U),w.scissor(O,F,L,U),this.compositeTarget.bind(),this.compositeRenderable.update(),this.compositeRenderable.render(),y.isTimingMode&&this.webgl.timer.markEnd("BloomPass.render")}}Gu.BloomPass=u;const m={...e.QuadSchema,tColorOpaque:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tColorTransparent:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tEmissive:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tDepthOpaque:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),tDepthTransparent:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSizeInv:(0,r.UniformSpec)("v2"),uDefaultColor:(0,r.UniformSpec)("v3"),uDefaultOpacity:(0,r.UniformSpec)("f"),uLuminosityThreshold:(0,r.UniformSpec)("f"),uSmoothWidth:(0,r.UniformSpec)("f"),uNear:(0,r.UniformSpec)("f"),uFar:(0,r.UniformSpec)("f"),uIsOrtho:(0,r.UniformSpec)("f"),uFogNear:(0,r.UniformSpec)("f"),uFogFar:(0,r.UniformSpec)("f"),uOpaqueFogged:(0,r.UniformSpec)("b"),dMode:(0,r.DefineSpec)("string",["luminosity","emissive"])},v=(0,n.ShaderCode)("Bloom Luminosity",f.quad_vert,g.luminosity_frag);function b(E,I,B,w,O,F){const L=I.getWidth(),U=I.getHeight(),q={...e.QuadValues,tColorOpaque:s.ValueCell.create(I),tColorTransparent:s.ValueCell.create(B),tEmissive:s.ValueCell.create(w),tDepthOpaque:s.ValueCell.create(O),tDepthTransparent:s.ValueCell.create(F),uTexSizeInv:s.ValueCell.create(o.Vec2.create(1/L,1/U)),uDefaultColor:s.ValueCell.create((0,o.Vec3)()),uDefaultOpacity:s.ValueCell.create(0),uLuminosityThreshold:s.ValueCell.create(0),uSmoothWidth:s.ValueCell.create(1),uNear:s.ValueCell.create(1),uFar:s.ValueCell.create(1e4),uIsOrtho:s.ValueCell.create(0),uFogNear:s.ValueCell.create(1e4),uFogFar:s.ValueCell.create(1e4),uOpaqueFogged:s.ValueCell.create(!0),dMode:s.ValueCell.create("emissive")},N={...m},k=(0,i.createComputeRenderItem)(E,"triangles",v,N,q);return(0,t.createComputeRenderable)(k,q)}function P(E){const I=[];for(let B=0;B<E;++B)I.push(.39894*Math.exp(-.5*B*B/(E*E))/E);return I}const C=(0,d.memoize1)(P),l=[3,5,7,9,11],S=o.Vec2.create(1,0),T=o.Vec2.create(0,1),A={...e.QuadSchema,tInput:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),uDirection:(0,r.UniformSpec)("v2"),uGaussianCoefficients:(0,r.UniformSpec)("f[]"),dKernelRadius:(0,r.DefineSpec)("number")},x=(0,n.ShaderCode)("Bloom Blur",f.quad_vert,a.blur_frag);function M(E,I){const B=I.getWidth(),w=I.getHeight(),O={...e.QuadValues,tInput:s.ValueCell.create(I),uTexSizeInv:s.ValueCell.create(o.Vec2.create(1/B,1/w)),uDirection:s.ValueCell.create((0,o.Vec2)()),uGaussianCoefficients:s.ValueCell.create([]),dKernelRadius:s.ValueCell.create(l[0])},F={...A},L=(0,i.createComputeRenderItem)(E,"triangles",x,F,O);return(0,t.createComputeRenderable)(L,O)}const D={...e.QuadSchema,tBlur1:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tBlur2:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tBlur3:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tBlur4:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tBlur5:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),uBloomStrength:(0,r.UniformSpec)("f"),uBloomRadius:(0,r.UniformSpec)("f"),uBloomFactors:(0,r.UniformSpec)("f[]"),uBloomTints:(0,r.UniformSpec)("v3[]")},V=(0,n.ShaderCode)("Bloom Composite",f.quad_vert,_.composite_frag);function R(E,I,B,w,O,F,L,U){const q={...e.QuadValues,uTexSizeInv:s.ValueCell.create(o.Vec2.create(1/I,1/B)),tBlur1:s.ValueCell.create(w),tBlur2:s.ValueCell.create(O),tBlur3:s.ValueCell.create(F),tBlur4:s.ValueCell.create(L),tBlur5:s.ValueCell.create(U),uBloomStrength:s.ValueCell.create(1),uBloomRadius:s.ValueCell.create(0),uBloomFactors:s.ValueCell.create([1,.8,.6,.4,.2]),uBloomTints:s.ValueCell.create(new Array(15).fill(1))},N={...D},k=(0,i.createComputeRenderItem)(E,"triangles",V,N,q);return(0,t.createComputeRenderable)(k,q)}return Gu}var CA={},Qv={},p8;function qoe(){return p8||(p8=1,Object.defineProperty(Qv,"__esMo
5572dule",{value:!0}),Qv.outlines_frag=void 0,Qv.outlines_frag=`
5573precision highp float;
5574precision highp int;
5575precision highp sampler2D;
5576
5577uniform sampler2D tDepthOpaque;
5578uniform sampler2D tDepthTransparent;
5579uniform vec2 uTexSize;
5580
5581uniform float uNear;
5582uniform float uFar;
5583uniform mat4 uInvProjection;
5584
5585uniform float uOutlineThreshold;
5586
5587#include common
5588
5589float getViewZ(const in float depth) {
5590    #if dOrthographic == 1
5591        return orthographicDepthToViewZ(depth, uNear, uFar);
5592    #else
5593        return perspectiveDepthToViewZ(depth, uNear, uFar);
5594    #endif
5595}
5596
5597float getDepthOpaque(const in vec2 coords) {
5598    #ifdef depthTextureSupport
5599        return texture2D(tDepthOpaque, coords).r;
5600    #else
5601        return unpackRGBAToDepth(texture2D(tDepthOpaque, coords));
5602    #endif
5603}
5604
5605vec2 getDepthTransparentWithAlpha(const in vec2 coords) {
5606    #ifdef dTransparentOutline
5607        return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords));
5608    #else
5609        return vec2(1.0, 0.0);
5610    #endif
5611}
5612
5613bool isBackground(const in float depth) {
5614    return depth == 1.0;
5615}
5616
5617float getPixelSize(const in vec2 coords, const in float depth) {
5618    vec3 viewPos0 = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection);
5619    vec3 viewPos1 = screenSpaceToViewSpace(vec3(coords + vec2(1.0, 0.0) / uTexSize, depth), uInvProjection);
5620    return distance(viewPos0, viewPos1);
5621}
5622
5623void main(void) {
5624    float backgroundViewZ = 2.0 * uFar;
5625
5626    vec2 coords = gl_FragCoord.xy / uTexSize;
5627    vec2 invTexSize = 1.0 / uTexSize;
5628
5629    float selfDepthOpaque = getDepthOpaque(coords);
5630    float selfViewZOpaque = isBackground(selfDepthOpaque) ? backgroundViewZ : getViewZ(selfDepthOpaque);
5631    float pixelSizeOpaque = getPixelSize(coords, selfDepthOpaque) * uOutlineThreshold;
5632
5633    vec2 selfDepthTransparentWithAlpha = getDepthTransparentWithAlpha(coords);
5634    float selfDepthTransparent = selfDepthTransparentWithAlpha.x;
5635    float selfViewZTransparent = isBackground(selfDepthTransparent) ? backgroundViewZ : getViewZ(selfDepthTransparent);
5636    float pixelSizeTransparent = getPixelSize(coords, selfDepthTransparent) * uOutlineThreshold;
5637
5638    float bestOpaqueDepth = 1.0;
5639    float bestTransparentDepth = 1.0;
5640    float bestTransparentAlpha = 0.0;
5641
5642    float opaqueOutlineFlag = 0.0;
5643    float transparentOutlineFlag = 0.0;
5644
5645    for (int y = -1; y <= 1; y++) {
5646        for (int x = -1; x <= 1; x++) {
5647            vec2 sampleCoords = coords + vec2(float(x), float(y)) * invTexSize;
5648
5649            // Opaque
5650            float sampleDepthOpaque = getDepthOpaque(sampleCoords);
5651            float sampleViewZOpaque = isBackground(sampleDepthOpaque) ? backgroundViewZ : getViewZ(sampleDepthOpaque);
5652            if (abs(selfViewZOpaque - sampleViewZOpaque) > pixelSizeOpaque && selfDepthOpaque > sampleDepthOpaque && sampleDepthOpaque <= bestOpaqueDepth) {
5653                bestOpaqueDepth = sampleDepthOpaque;
5654                opaqueOutlineFlag = 1.0;
5655            }
5656
5657            // Transparent
5658            vec2 sampleDepthTransparentWithAlpha = getDepthTransparentWithAlpha(sampleCoords);
5659            float sampleDepthTransparent = sampleDepthTransparentWithAlpha.x;
5660            float sampleAlphaTransparent = sampleDepthTransparentWithAlpha.y;
5661            float sampleViewZTransparent = isBackground(sampleDepthTransparent) ? backgroundViewZ : getViewZ(sampleDepthTransparent);
5662            if (abs(selfViewZTransparent - sampleViewZTransparent) > pixelSizeTransparent && selfDepthTransparent > sampleDepthTransparent && sampleDepthTransparent <= bestTransparentDepth) {
5663                bestTransparentDepth = sampleDepthTransparent;
5664                bestTransparentAlpha = sampleAlphaTransparent;
5665                transparentOutlineFlag = 1.0;
5666            }
5667        }
5668    }
5669
5670    if (transparentOutlineFlag > 0.0 && abs(selfViewZOpaque - getViewZ(bestTransparentDepth)) < pixelSizeOpaque) { // Disable transparent outline close to opaque elements
5671        transparentOutlineFlag = 0.0;
5672    }
5673
5674    // lazy curvature veto: only compute if an outline was found and center is not background
5675    const float kCurvatureGate = 0.75;
5676    vec2 dx = vec2(invTexSize.x, 0.0);
5677    vec2 dy = vec2(0.0, invTexSize.y);
5678
5679    if (opaqueOutlineFlag > 0.0 && !isBackground(selfDepthOpaque)) {
5680        float dL = getDepthOpaque(coords - dx);
5681        float dR = getDepthOpaque(coords + dx);
5682        float dU = getDepthOpaque(coords + dy);
5683        float dD = getDepthOpaque(coords - dy);
5684
5685        float vzL = isBackground(dL) ? backgroundViewZ : getViewZ(dL);
5686        float vzR = isBackground(dR) ? backgroundViewZ : getViewZ(dR);
5687        float vzU = isBackground(dU) ? backgroundViewZ : getViewZ(dU);
5688        float vzD = isBackground(dD) ? backgroundViewZ : getViewZ(dD);
5689
5690        float ddx = abs(vzL + vzR - 2.0 * selfViewZOpaque);
5691        float ddy = abs(vzU + vzD - 2.0 * selfViewZOpaque);
5692        float curvOpaque = max(ddx, ddy);
5693
5694        if (curvOpaque < pixelSizeOpaque * kCurvatureGate) {
5695            opaqueOutlineFlag = 0.0;
5696            bestOpaqueDepth = 1.0;
5697        }
5698    }
5699
5700    if (transparentOutlineFlag > 0.0 && !isBackground(selfDepthTransparent)) {
5701        vec2 daL = getDepthTransparentWithAlpha(coords - dx);
5702        vec2 daR = getDepthTransparentWithAlpha(coords + dx);
5703        vec2 daU = getDepthTransparentWithAlpha(coords + dy);
5704        vec2 daD = getDepthTransparentWithAlpha(coords - dy);
5705
5706        float dL = daL.x;
5707        float dR = daR.x;
5708        float dU = daU.x;
5709        float dD = daD.x;
5710
5711        float vzL = isBackground(dL) ? backgroundViewZ : getViewZ(dL);
5712        float vzR = isBackground(dR) ? backgroundViewZ : getViewZ(dR);
5713        float vzU = isBackground(dU) ? backgroundViewZ : getViewZ(dU);
5714        float vzD = isBackground(dD) ? backgroundViewZ : getViewZ(dD);
5715
5716        float ddx = abs(vzL + vzR - 2.0 * selfViewZTransparent);
5717        float ddy = abs(vzU + vzD - 2.0 * selfViewZTransparent);
5718        float curvTransparent = max(ddx, ddy);
5719
5720        if (curvTransparent < pixelSizeTransparent * kCurvatureGate) {
5721            transparentOutlineFlag = 0.0;
5722            bestTransparentDepth = 1.0;
5723            bestTransparentAlpha = 0.0;
5724        }
5725    }
5726
5727    vec2 depthPacked; // Pack depth in G/B channels
5728    float outlineTypeFlag = 0.0;
5729    if (opaqueOutlineFlag > 0.0 && transparentOutlineFlag > 0.0) {
5730        outlineTypeFlag = 0.75; // Both
5731        depthPacked = packUnitIntervalToRG(bestOpaqueDepth);
5732    } else if (transparentOutlineFlag > 0.0) {
5733        outlineTypeFlag = 0.5;  // Transparent only
5734        depthPacked = packUnitIntervalToRG(bestTransparentDepth);
5735    } else if (opaqueOutlineFlag > 0.0) {
5736        outlineTypeFlag = 0.25; // Opaque only
5737        depthPacked = packUnitIntervalToRG(bestOpaqueDepth);
5738    }
5739
5740    float alpha = clamp(bestTransparentAlpha, 0.0, 0.5) * 2.0; // limiting to range [0.0, 0.5] to improve alpha precision since we don't need a wider range
5741    float packedFlagWithAlpha = pack2x4(vec2(outlineTypeFlag, alpha)); // pack outlineType with alpha
5742    gl_FragColor = vec4(packedFlagWithAlpha, depthPacked.x, depthPacked.y, bestTransparentDepth);
5743}
5744`),Qv}var h8;function HQ(){return h8||(h8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.OutlinesSchema=e.OutlinePass=e.OutlineParams=void 0,e.getOutlinesRenderable=d;const t=Mr(),r=Yt(),n=Kt(),i=et(),c=Zt(),o=Jt(),s=Ge(),h=Ne(),f=Gr(),y=qoe(),_=Ct(),g=vt();e.OutlineParams={scale:h.ParamDefinition.Numeric(1,{min:1,max:5,step:1}),threshold:h.ParamDefinition.Numeric(.33,{min:.01,max:1,step:.01}),color:h.ParamDefinition.Color((0,g.Color)(0)),includeTransparent:h.ParamDefinition.Boolean(!0,{description:"Whether to show outline for transparent objects"})};class a{static isEnabled(u){return u.enabled&&u.outline.name!=="off"}constructor(u,m,v,b,P){this.webgl=u,this.target=u.createRenderTarget(m,v,!1),this.renderable=d(u,P,b,!0)}getByteCount(){return this.target.getByteCount()}setSize(u,m){const[v,b]=this.renderable.values.uTexSize.ref.value;(u!==v||m!==b)&&(this.target.setSize(u,m),i.ValueCell.update(this.renderable.values.uTexSize,s.Vec2.set(this.renderable.values.uTexSize.ref.value,u,m)))}update(u,m,v,b){var P;let C=!1;const l=u.state.mode==="orthographic"?1:0,S=this.renderable.values.uInvProjection.ref.value;s.Mat4.invert(S,u.projection);const T=(P=m.includeTransparent)!==null&&P!==void 0?P:!0,A=Math.max(1,Math.round(m.scale*this.webgl.pixelRatio))-1,x=50*m.threshold*this.webgl.pixelRatio;return i.ValueCell.updateIfChanged(this.renderable.values.uNear,u.near),i.ValueCell.updateIfChanged(this.renderable.values.uFar,u.far),i.ValueCell.update(this.renderable.values.uInvProjection,S),this.renderable.values.dTransparentOutline.ref.value!==T&&(C=!0,i.ValueCell.update(this.renderable.values.dTransparentOutline,T)),this.renderable.values.dOrthographic.ref.value!==l&&(C=!0,i.ValueCell.update(this.renderable.values.dOrthographic,l)),i.V
5744alueCell.updateIfChanged(this.renderable.values.uOutlineThreshold,x),this.renderable.values.tDepthTransparent.ref.value!==v&&(C=!0,i.ValueCell.update(this.renderable.values.tDepthTransparent,v)),this.renderable.values.tDepthOpaque.ref.value!==b&&(C=!0,i.ValueCell.update(this.renderable.values.tDepthOpaque,b)),C&&this.renderable.update(),{transparentOutline:T,outlineScale:A}}render(){_.isTimingMode&&this.webgl.timer.mark("OutlinePass.render"),this.target.bind(),this.renderable.render(),_.isTimingMode&&this.webgl.timer.markEnd("OutlinePass.render")}}e.OutlinePass=a,e.OutlinesSchema={...t.QuadSchema,tDepthOpaque:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),tDepthTransparent:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,r.UniformSpec)("v2"),dOrthographic:(0,r.DefineSpec)("number"),uNear:(0,r.UniformSpec)("f"),uFar:(0,r.UniformSpec)("f"),uInvProjection:(0,r.UniformSpec)("m4"),uOutlineThreshold:(0,r.UniformSpec)("f"),dTransparentOutline:(0,r.DefineSpec)("boolean")};function d(p,u,m,v){const b=u.getWidth(),P=u.getHeight(),C={...t.QuadValues,tDepthOpaque:i.ValueCell.create(u),tDepthTransparent:i.ValueCell.create(m),uTexSize:i.ValueCell.create(s.Vec2.create(b,P)),dOrthographic:i.ValueCell.create(0),uNear:i.ValueCell.create(1),uFar:i.ValueCell.create(1e4),uInvProjection:i.ValueCell.create(s.Mat4.identity()),uOutlineThreshold:i.ValueCell.create(.33),dTransparentOutline:i.ValueCell.create(v)},l={...e.OutlinesSchema},S=(0,n.ShaderCode)("outlines",f.quad_vert,y.outlines_frag),T=(0,c.createComputeRenderItem)(p,"triangles",S,l,C);return(0,o.createComputeRenderable)(T,C)}})(CA)),CA}var zu={},Zv={},g8;function Uoe(){return g8||(g8=1,Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.shadows_frag=void 0,Zv.shadows_frag=`
5745precision highp float;
5746precision highp int;
5747precision highp sampler2D;
5748
5749#include common
5750
5751uniform sampler2D tDepth;
5752uniform vec2 uTexSize;
5753uniform vec4 uBounds;
5754
5755uniform float uNear;
5756uniform float uFar;
5757
5758#if dLightCount != 0
5759    uniform vec3 uLightDirection[dLightCount];
5760    uniform vec3 uLightColor[dLightCount];
5761#endif
5762
5763uniform vec3 uAmbientColor;
5764
5765uniform mat4 uProjection;
5766uniform mat4 uInvProjection;
5767
5768uniform float uMaxDistance;
5769uniform float uTolerance;
5770
5771// Map full [0,1] coords -> bounds [0,1] coords
5772vec2 fullCoordsToBoundsCoords(vec2 fullCoords) {
5773    return (fullCoords - uBounds.xy) / (uBounds.zw - uBounds.xy);
5774}
5775
5776// Map bounds [0,1] coords -> full [0,1] coords
5777vec2 boundsCoordsToFullCoords(vec2 boundsCoords) {
5778    return uBounds.xy + (uBounds.zw - uBounds.xy) * boundsCoords;
5779}
5780
5781bool isBackground(const in float depth) {
5782    return depth == 1.0;
5783}
5784
5785bool outsideBounds(const in vec2 p) {
5786    return p.x < uBounds.x || p.y < uBounds.y || p.x > uBounds.z || p.y > uBounds.w;
5787}
5788
5789float getViewZ(const in float depth) {
5790    #if dOrthographic == 1
5791        return orthographicDepthToViewZ(depth, uNear, uFar);
5792    #else
5793        return perspectiveDepthToViewZ(depth, uNear, uFar);
5794    #endif
5795}
5796
5797float getDepth(const in vec2 coords) {
5798    #ifdef depthTextureSupport
5799        return texture2D(tDepth, coords).r;
5800    #else
5801        return unpackRGBAToDepth(texture2D(tDepth, coords));
5802    #endif
5803}
5804
5805float screenFade(const in vec2 coords) {
5806    vec2 c = (coords - uBounds.xy) / (uBounds.zw - uBounds.xy);
5807    vec2 fade = max(12.0 * abs(c - 0.5) - 5.0, vec2(0.0));
5808    return saturate(1.0 - dot(fade, fade));
5809}
5810
5811// based on https://panoskarabelas.com/posts/screen_space_shadows/
5812vec3 screenSpaceShadow(const in vec3 position, const in vec3 lightDirection, const in vec3 lightColor, const in float stepLength) {
5813    // Ray position and direction (in view-space)
5814    vec3 rayPos = position;
5815    vec3 rayDir = -lightDirection;
5816
5817    // Compute ray step
5818    vec3 rayStep = rayDir * stepLength;
5819
5820    // Ray march towards the light
5821    vec4 rayCoords = vec4(0.0);
5822    for (int i = 0; i < dSteps; ++i) {
5823        // Step the ray
5824        rayPos += rayStep;
5825
5826        rayCoords = uProjection * vec4(rayPos, 1.0);
5827        rayCoords.xyz = (rayCoords.xyz / rayCoords.w) * 0.5 + 0.5;
5828        rayCoords.xy = boundsCoordsToFullCoords(rayCoords.xy);
5829
5830        if (outsideBounds(rayCoords.xy)) {
5831            return lightColor;
5832        }
5833
5834        // Compute the difference between the ray's and the camera's depth
5835        float depth = getDepth(rayCoords.xy);
5836        float viewZ = getViewZ(depth);
5837        float zDelta = rayPos.z - viewZ;
5838
5839        if (zDelta < uTolerance) {
5840            // Fade out as we approach the edges of the screen
5841            return mix(vec3(0.0), lightColor, 1.0 - screenFade(rayCoords.xy));
5842        }
5843    }
5844
5845    return lightColor;
5846}
5847
5848void main(void) {
5849    vec2 invTexSize = 1.0 / uTexSize;
5850    vec2 selfCoords = gl_FragCoord.xy * invTexSize;
5851    float selfDepth = getDepth(selfCoords);
5852
5853    if (isBackground(selfDepth)) {
5854        gl_FragColor = vec4(0.0);
5855        return;
5856    }
5857
5858    vec2 selfBoundsCoords = fullCoordsToBoundsCoords(selfCoords);
5859    if (any(lessThan(selfBoundsCoords, vec2(0.0))) || any(greaterThan(selfBoundsCoords, vec2(1.0)))) {
5860        gl_FragColor = vec4(0.0);
5861        return;
5862    }
5863
5864    vec3 selfViewPos = screenSpaceToViewSpace(vec3(selfBoundsCoords, selfDepth), uInvProjection);
5865    float stepLength = uMaxDistance / float(dSteps);
5866
5867    float l = length(uAmbientColor);
5868    float a = l;
5869    #if dLightCount != 0
5870        vec3 s;
5871        #pragma unroll_loop_start
5872        for (int i = 0; i < dLightCount; ++i) {
5873            s = screenSpaceShadow(selfViewPos, uLightDirection[i], uLightColor[i], stepLength);
5874            l += length(s);
5875            a += length(uLightColor[i]);
5876        }
5877        #pragma unroll_loop_end
5878    #endif
5879
5880    gl_FragColor = vec4(l / a);
5881}
5882`),Zv}var y8;function joe(){if(y8)return zu;y8=1,Object.defineProperty(zu,"__esModule",{value:!0}),zu.ShadowPass=zu.ShadowParams=void 0;const e=Mr(),t=Yt(),r=Kt(),n=et(),i=Zt(),c=Jt(),o=Ge(),s=Ne(),h=Gr(),f=Ct(),y=i2(),_=Uoe();zu.ShadowParams={steps:s.ParamDefinition.Numeric(1,{min:1,max:64,step:1}),maxDistance:s.ParamDefinition.Numeric(3,{min:0,max:256,step:1}),tolerance:s.ParamDefinition.Numeric(1,{min:0,max:10,step:.1})};class g{static isEnabled(u){return u.enabled&&u.shadow.name!=="off"}constructor(u,m,v,b){this.webgl=u,this.invProjection=o.Mat4.identity(),this.invHeadRotation=o.Mat4.identity(),this.target=u.createRenderTarget(m,v,!1),this.renderable=d(u,b)}getByteCount(){return this.target.getByteCount()}setSize(u,m){const[v,b]=this.renderable.values.uTexSize.ref.value;(u!==v||m!==b)&&(this.target.setSize(u,m),n.ValueCell.update(this.renderable.values.uTexSize,o.Vec2.set(this.renderable.values.uTexSize.ref.value,u,m)))}update(u,m,v,b){let P=!1;const C=u.state.mode==="orthographic"?1:0,[l,S]=this.renderable.values.uTexSize.ref.value,T=u.viewport;n.ValueCell.update(this.renderable.values.uProjection,u.projection),n.ValueCell.update(this.renderable.values.uInvProjection,o.Mat4.invert(this.invProjection,u.projection)),o.Vec4.set(this.renderable.values.uBounds.ref.value,T.x/l,T.y/S,(T.x+T.width)/l,(T.y+T.height)/S),n.ValueCell.update(this.renderable.values.uBounds,this.renderable.values.uBounds.ref.value),n.ValueCell.updateIfChanged(this.renderable.values.uNear,u.near),n.ValueCell.updateIfChanged(this.renderable.values.uFar,u.far),this.renderable.values.dOrthographic.ref.value!==C&&(n.ValueCell.update(this.renderable.values.dOrthographic,C),P=!0),n.ValueCell.updateIfChanged(this.renderable.values.uMaxDistance,b.maxDistance*u.scale),n.ValueCell.updateIfChanged(this.renderable.values.uTolerance,b.tolerance*u.scale),this.renderable.values.dSteps.ref.value!==b.steps&&(n.ValueCell.update(this.renderable.values.dSteps,b.steps),P=!0),!o.Mat4.isZero(u.headRotation)?n.ValueCell.update(this.renderable.values.uLightDirection,(0,y.getTransformedLightDirection)(m,o.Mat4.invert(this.invHeadRotation,u.headRotation))):n.ValueCell.update(this.renderable.values.uLightDirection,m.direction),n.ValueCell.update(this.renderable.values.uLightColor,m.color),this.renderable.values.dLightCount.ref.value!==m.count&&(n.ValueCell.update(this.renderable.values.dLightCount,m.count),P=!0),n.ValueCell.update(this.renderable.values.uAmbientColor,v),P&&this.renderable.update()}render(){f.isTimingMode&&this.webgl.timer.mark("ShadowPass.render"),this.target.bind(),this.renderable.render(),f.isTimingMode&&this.webgl.timer.markEnd("ShadowPass.render")}}zu.ShadowPass=g;const a={...e.QuadSchema,tDepth:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,t.UniformSpec)("v2"),uProjection:(0,t.UniformSpec)("m4"),uInvProjection:(0,t.UniformSpec)("m4"),uBounds:(0,t.UniformSpec)("v4"),dOrthographic:(0,t.DefineSpec)("number"),uNear:(0,t.UniformSpec)("f"),uFar:(0,t.UniformSpec)("f"),dSteps:(0,t.DefineSpec)("number"),uMaxDistance:(0,t.UniformSpec)("f"),uTolerance:(0,t.UniformSpec)("f"),uLightDirection:(0,t.UniformSpec)("v3[]"),uLightColor:(0,t.UniformSpec)("v3[]"),dLightCount:(0,t.DefineSpec)("number"),uAmbientColor:(0,t.UniformSpec)("v3")};function d(p,u){const m=u.getWidth(),v=u.getHeight(),b={...e.QuadValues,tDepth:n.ValueCell.create(u),uTexSize:n.ValueCell.create(o.Vec2.create(m,v)),uProjection:n.ValueCell.create(o.Mat4.identity()),uInvProjection:n.ValueCell.create(o.Mat4.identity()),uBounds:n.ValueCell.create((0,o.Vec4)()),dOrthographic:n.ValueCell.create(0),uNear:n.ValueCell.create(1),uFar:n.ValueCell.create(1e4),dSteps:n.ValueCell.create(1),uMaxDistance:n.ValueCell.create(3),uTolerance:n.ValueCell.create(1),uLightDirection:n.ValueCell.create([]),uLightColor:n.ValueCell.create([]),dLightCount:n.ValueCell.create(0),uAmbientColor:n.ValueCell.create((0,o.Vec3)())},P={...a},C=(0,r.ShaderCode)("shadows",h.quad_vert,_.shadows_frag),l=(0,i.createComputeRenderItem)(p,"triangles",C,P,b);return(0,c.createComputeRenderable)(l,b)}return zu}var Hu={},Jv={},v8;function Goe(){return v8||(v8=1,Object.defineProperty(Jv,"__esMo
5882dule",{value:!0}),Jv.ssao_frag=void 0,Jv.ssao_frag
vendor: 12,051 bytes, lines 5882-6180
5882=`
5883precision highp float;
5884precision highp int;
5885precision highp sampler2D;
5886
5887#include common
5888
5889
5890uniform sampler2D tDepth;
5891uniform sampler2D tDepthHalf;
5892uniform sampler2D tDepthQuarter;
5893
5894#if defined(dIncludeTransparent)
5895    uniform sampler2D tDepthTransparent;
5896    uniform sampler2D tDepthHalfTransparent;
5897    uniform sampler2D tDepthQuarterTransparent;
5898#endif
5899
5900uniform int uTransparencyFlag;
5901
5902uniform vec2 uTexSize;
5903uniform vec4 uBounds;
5904
5905uniform vec3 uSamples[dNSamples];
5906
5907uniform mat4 uProjection;
5908uniform mat4 uInvProjection;
5909
5910#ifdef dMultiScale
5911    uniform float uLevelRadius[dLevels];
5912    uniform float uLevelBias[dLevels];
5913    uniform float uNearThreshold;
5914    uniform float uFarThreshold;
5915#else
5916    uniform float uRadius;
5917#endif
5918uniform float uBias;
5919
5920float smootherstep(float edge0, float edge1, float x) {
5921    x = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
5922    return x * x * x * (x * (x * 6.0 - 15.0) + 10.0);
5923}
5924
5925float noise(const in vec2 coords) {
5926    float a = 12.9898;
5927    float b = 78.233;
5928    float c = 43758.5453;
5929    float dt = dot(coords, vec2(a,b));
5930    float sn = mod(dt, PI);
5931    return abs(fract(sin(sn) * c)); // is abs necessary?
5932}
5933
5934vec2 getNoiseVec2(const in vec2 coords) {
5935    return vec2(noise(coords), noise(coords + vec2(PI, 2.71828)));
5936}
5937
5938bool isBackground(const in float depth) {
5939    return depth == 1.0;
5940}
5941
5942bool isOutsideBounds(const in vec2 coords) {
5943    return coords.x < uBounds.x || coords.x > uBounds.z || coords.y < uBounds.y || coords.y > uBounds.w;
5944}
5945
5946float getDepth(const in vec2 coords, const in int transparentFlag) {
5947    if (transparentFlag == 1){
5948        #if defined(dIncludeTransparent)
5949            return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords)).x;
5950        #else
5951            return 1.0;
5952        #endif
5953    } else {
5954        #ifdef depthTextureSupport
5955            return texture2D(tDepth, coords).r;
5956        #else
5957            return unpackRGBAToDepth(texture2D(tDepth, coords));
5958        #endif
5959    }
5960}
5961
5962#if defined(dIncludeTransparent)
5963    vec2 getDepthTransparentWithAlpha(const in vec2 coords){
5964        return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords));
5965    }
5966#endif
5967
5968#define dQuarterThreshold 0.1
5969#define dHalfThreshold 0.05
5970
5971float getMappedDepth(const in vec2 coords, const in vec2 selfCoords) {
5972    float d = distance(coords, selfCoords);
5973    #ifdef depthTextureSupport
5974        if (d > dQuarterThreshold) {
5975            return texture2D(tDepthQuarter, coords).r;
5976        } else if (d > dHalfThreshold) {
5977            return texture2D(tDepthHalf, coords).r;
5978        } else {
5979            return texture2D(tDepth, coords).r;
5980        }
5981    #else
5982        if (d > dQuarterThreshold) {
5983            return unpackRGBAToDepth(texture2D(tDepthQuarter, coords));
5984        } else if (d > dHalfThreshold) {
5985            return unpackRGBAToDepth(texture2D(tDepthHalf, coords));
5986        } else {
5987            return unpackRGBAToDepth(texture2D(tDepth, coords));
5988        }
5989    #endif
5990}
5991
5992#if defined(dIncludeTransparent)
5993    vec2 getMappedDepthTransparentWithAlpha(const in vec2 coords, const in vec2 selfCoords) {
5994        float d = distance(coords, selfCoords);
5995        if (d > dQuarterThreshold) {
5996            return unpackRGBAToDepthWithAlpha(texture2D(tDepthQuarterTransparent, coords));
5997        } else if (d > dHalfThreshold) {
5998            return unpackRGBAToDepthWithAlpha(texture2D(tDepthHalfTransparent, coords));
5999        } else {
6000            return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords));
6001        }
6002    }
6003#endif
6004
6005// adapted from https://gist.github.com/bgolus/a07ed65602c009d5e2f753826e8078a0
6006vec3 viewNormalAtPixelPositionAccurate(const in vec2 vpos, const in int transparentFlag) {
6007    // current pixel's depth
6008    float c = getDepth(vpos, transparentFlag);
6009
6010    // get current pixel's view space position
6011    vec3 viewSpacePos_c = screenSpaceToViewSpace(vec3(vpos, c), uInvProjection);
6012
6013    // get view space position at 1 pixel offsets in each major direction
6014    vec3 viewSpacePos_l = screenSpaceToViewSpace(vec3(vpos + vec2(-1.0, 0.0) / uTexSize, getDepth(vpos + vec2(-1.0, 0.0) / uTexSize, transparentFlag)), uInvProjection);
6015    vec3 viewSpacePos_r = screenSpaceToViewSpace(vec3(vpos + vec2( 1.0, 0.0) / uTexSize, getDepth(vpos + vec2( 1.0, 0.0) / uTexSize, transparentFlag)), uInvProjection);
6016    vec3 viewSpacePos_d = screenSpaceToViewSpace(vec3(vpos + vec2( 0.0,-1.0) / uTexSize, getDepth(vpos + vec2( 0.0,-1.0) / uTexSize, transparentFlag)), uInvProjection);
6017    vec3 viewSpacePos_u = screenSpaceToViewSpace(vec3(vpos + vec2( 0.0, 1.0) / uTexSize, getDepth(vpos + vec2( 0.0, 1.0) / uTexSize, transparentFlag)), uInvProjection);
6018
6019    // get the difference between the current and each offset position
6020    vec3 l = viewSpacePos_c - viewSpacePos_l;
6021    vec3 r = viewSpacePos_r - viewSpacePos_c;
6022    vec3 d = viewSpacePos_c - viewSpacePos_d;
6023    vec3 u = viewSpacePos_u - viewSpacePos_c;
6024
6025    // get depth values at 1 & 2 pixels offsets from current along the horizontal axis
6026    vec4 H = vec4(
6027        getDepth(vpos + vec2(-1.0, 0.0) / uTexSize, transparentFlag),
6028        getDepth(vpos + vec2( 1.0, 0.0) / uTexSize, transparentFlag),
6029        getDepth(vpos + vec2(-2.0, 0.0) / uTexSize, transparentFlag),
6030        getDepth(vpos + vec2( 2.0, 0.0) / uTexSize, transparentFlag)
6031    );
6032
6033    // get depth values at 1 & 2 pixels offsets from current along the vertical axis
6034    vec4 V = vec4(
6035        getDepth(vpos + vec2(0.0,-1.0) / uTexSize, transparentFlag),
6036        getDepth(vpos + vec2(0.0, 1.0) / uTexSize, transparentFlag),
6037        getDepth(vpos + vec2(0.0,-2.0) / uTexSize, transparentFlag),
6038        getDepth(vpos + vec2(0.0, 2.0) / uTexSize, transparentFlag)
6039    );
6040
6041    // current pixel's depth difference from slope of offset depth samples
6042    // differs from original article because we're using non-linear depth values
6043    // see article's comments
6044    vec2 he = abs((2.0 * H.xy - H.zw) - c);
6045    vec2 ve = abs((2.0 * V.xy - V.zw) - c);
6046
6047    // pick horizontal and vertical diff with the smallest depth difference from slopes
6048    vec3 hDeriv = he.x < he.y ? l : r;
6049    vec3 vDeriv = ve.x < ve.y ? d : u;
6050
6051    // get view space normal from the cross product of the best derivatives
6052    vec3 viewNormal = normalize(cross(hDeriv, vDeriv));
6053
6054    return viewNormal;
6055}
6056
6057float getPixelSize(const in vec2 coords, const in float depth) {
6058    vec3 viewPos0 = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection);
6059    vec3 viewPos1 = screenSpaceToViewSpace(vec3(coords + vec2(1.0, 0.0) / uTexSize, depth), uInvProjection);
6060    return distance(viewPos0, viewPos1);
6061}
6062
6063// StarCraft II Ambient Occlusion by [Filion and McNaughton 2008]
6064void main(void) {
6065    vec2 invTexSize = 1.0 / uTexSize;
6066    vec2 selfCoords = gl_FragCoord.xy * invTexSize;
6067    float selfDepth = getDepth(selfCoords, uTransparencyFlag);
6068    vec2 selfPackedDepth = packUnitIntervalToRG(selfDepth);
6069
6070    if (isBackground(selfDepth)) {
6071        gl_FragColor = vec4(packUnitIntervalToRG(1.0), selfPackedDepth);
6072        return;
6073    }
6074
6075    vec3 selfViewNormal = viewNormalAtPixelPositionAccurate(selfCoords, uTransparencyFlag);
6076    vec3 selfViewPos = screenSpaceToViewSpace(vec3(selfCoords, selfDepth), uInvProjection);
6077
6078    vec3 randomVec = normalize(vec3(getNoiseVec2(selfCoords) * 2.0 - 1.0, 0.0));
6079    vec3 tangent = normalize(randomVec - selfViewNormal * dot(randomVec, selfViewNormal));
6080    vec3 bitangent = cross(selfViewNormal, tangent);
6081    mat3 TBN = mat3(tangent, bitangent, selfViewNormal);
6082
6083    float occlusion = 0.0;
6084    #ifdef dMultiScale
6085        float pixelSize = getPixelSize(selfCoords, selfDepth);
6086
6087        for(int l = 0; l < dLevels; l++) {
6088            // TODO: smooth transition
6089            if (pixelSize * uNearThreshold > uLevelRadius[l]) continue;
6090            if (pixelSize * uFarThreshold < uLevelRadius[l]) continue;
6091
6092            float nSamples = float(dNSamples);
6093            float levelOcclusion = 0.0;
6094            for(int i = 0; i < dNSamples; i++) {
6095                // get sample position:
6096                vec3 sampleViewPos = TBN * uSamples[i];
6097                sampleViewPos = selfViewPos + sampleViewPos * uLevelRadius[l];
6098
6099                // project sample position:
6100                vec4 offset = vec4(sampleViewPos, 1.0);
6101                offset = uProjection * offset;
6102                offset.xyz = (offset.xyz / offset.w) * 0.5 + 0.5;
6103                if (isOutsideBounds(offset.xy)) {
6104                    nSamples -= 1.0;
6105                    continue;
6106                }
6107
6108                // get sample depth:
6109                float sampleOcc = 0.0;
6110                #ifdef dIllumination
6111                    if (uTransparencyFlag == 1) {
6112                #endif
6113                        float sampleDepth = getMappedDepth(offset.xy, selfCoords);
6114                        if (!isBackground(sampleDepth)) {
6115                            float sampleViewZ = screenSpaceToViewSpace(vec3(offset.xy, sampleDepth), uInvProjection).z;
6116                            sampleOcc = step(sampleViewPos.z + 0.025, sampleViewZ) * smootherstep(0.0, 1.0, uLevelRadius[l] / abs(selfViewPos.z - sampleViewZ)) * uLevelBias[l];
6117                        }
6118                #ifdef dIllumination
6119                    }
6120                #endif
6121                #if defined(dIncludeTransparent)
6122                    vec2 sampleDepthWithAlpha = getMappedDepthTransparentWithAlpha(offset.xy, selfCoords);
6123                    if (!isBackground(sampleDepthWithAlpha.x))  {
6124                        float sampleViewZWithAlpha = screenSpaceToViewSpace(vec3(offset.xy, sampleDepthWithAlpha.x), uInvProjection).z;
6125                        sampleOcc = max(sampleOcc, step(sampleViewPos.z + 0.025, sampleViewZWithAlpha) * smootherstep(0.0, 1.0, uLevelRadius[l] / abs(selfViewPos.z - sampleViewZWithAlpha)) * uLevelBias[l] * sampleDepthWithAlpha.y);
6126                    }
6127                #endif
6128
6129                levelOcclusion += sampleOcc;
6130            }
6131            levelOcclusion /= nSamples;
6132            occlusion = max(occlusion, levelOcclusion);
6133        }
6134    #else
6135        float nSamples = float(dNSamples);
6136        for(int i = 0; i < dNSamples; i++) {
6137            vec3 sampleViewPos = TBN * uSamples[i];
6138            sampleViewPos = selfViewPos + sampleViewPos * uRadius;
6139
6140            vec4 offset = vec4(sampleViewPos, 1.0);
6141            offset = uProjection * offset;
6142            offset.xyz = (offset.xyz / offset.w) * 0.5 + 0.5;
6143            if (isOutsideBounds(offset.xy)) {
6144                nSamples -= 1.0;
6145                continue;
6146            }
6147
6148            float sampleOcc = 0.0;
6149            #ifdef dIllumination
6150                if (uTransparencyFlag == 1) {
6151            #endif
6152                    // NOTE: using getMappedDepth here causes issues on some mobile devices
6153                    float sampleDepth = getDepth(offset.xy, 0);
6154                    if (!isBackground(sampleDepth)) {
6155                        float sampleViewZ = screenSpaceToViewSpace(vec3(offset.xy, sampleDepth), uInvProjection).z;
6156                        sampleOcc = step(sampleViewPos.z + 0.025, sampleViewZ) * smootherstep(0.0, 1.0, uRadius / abs(selfViewPos.z - sampleViewZ));
6157                    }
6158            #ifdef dIllumination
6159                }
6160            #endif
6161            #if defined(dIncludeTransparent)
6162                vec2 sampleDepthWithAlpha = getDepthTransparentWithAlpha(offset.xy);
6163                if (!isBackground(sampleDepthWithAlpha.x)) {
6164                    float sampleViewZWithAlpha = screenSpaceToViewSpace(vec3(offset.xy, sampleDepthWithAlpha.x), uInvProjection).z;
6165                    sampleOcc = max(sampleOcc, step(sampleViewPos.z + 0.025, sampleViewZWithAlpha) * smootherstep(0.0, 1.0, uRadius / abs(selfViewPos.z - sampleViewZWithAlpha)) * sampleDepthWithAlpha.y);
6166                }
6167            #endif
6168
6169            occlusion += sampleOcc;
6170        }
6171
6172        occlusion /= nSamples;
6173    #endif
6174    occlusion = 1.0 - (uBias * occlusion);
6175
6176    vec2 packedOcclusion = packUnitIntervalToRG(clamp(occlusion, 0.01, 1.0));
6177
6178    gl_FragColor = vec4(packedOcclusion, selfPackedDepth);
6179}
6180`
6180),Jv}var eb={},b8;function zoe(){return b8||(b8=1,Object.defineProperty(eb,"__esModule",{value:!0}),eb.ssaoBlur_frag=void 0,eb.ssaoBlur_frag=`
6181precision highp float;
6182precision highp int;
6183precision highp sampler2D;
6184
6185uniform sampler2D tSsaoDepth;
6186uniform vec2 uTexSize;
6187uniform vec4 uBounds;
6188
6189uniform float uKernel[dOcclusionKernelSize];
6190uniform float uBlurDepthBias;
6191
6192uniform float uBlurDirectionX;
6193uniform float uBlurDirectionY;
6194
6195uniform mat4 uInvProjection;
6196uniform float uNear;
6197uniform float uFar;
6198
6199#include common
6200
6201float getViewZ(const in float depth) {
6202    #if dOrthographic == 1
6203        return orthographicDepthToViewZ(depth, uNear, uFar);
6204    #else
6205        return perspectiveDepthToViewZ(depth, uNear, uFar);
6206    #endif
6207}
6208
6209bool isBackground(const in float depth) {
6210    return depth == 1.0;
6211}
6212
6213bool isNearClip(const in float depth) {
6214    return depth == 0.0;
6215}
6216
6217bool outsideBounds(const in vec2 p) {
6218    return p.x < uBounds.x || p.y < uBounds.y || p.x > uBounds.z || p.y > uBounds.w;
6219}
6220
6221float getPixelSize(const in vec2 coords, const in float depth) {
6222    vec3 viewPos0 = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection);
6223    vec3 viewPos1 = screenSpaceToViewSpace(vec3(coords + vec2(1.0, 0.0) / uTexSize, depth), uInvProjection);
6224    return distance(viewPos0, viewPos1);
6225}
6226
6227void main(void) {
6228    vec2 coords = gl_FragCoord.xy / uTexSize;
6229
6230    vec2 packedDepth = texture2D(tSsaoDepth, coords).zw;
6231
6232    if (outsideBounds(coords)) {
6233        gl_FragColor = vec4(packUnitIntervalToRG(1.0), packedDepth);
6234        return;
6235    }
6236
6237    float selfDepth = unpackRGToUnitInterval(packedDepth);
6238    // (if background and if second pass) or if near clip
6239    if ((isBackground(selfDepth) && uBlurDirectionY != 0.0) || isNearClip(selfDepth)) {
6240        gl_FragColor = vec4(packUnitIntervalToRG(1.0), packedDepth);
6241        return;
6242    }
6243
6244    float selfViewZ = getViewZ(selfDepth);
6245    float pixelSize = getPixelSize(coords, selfDepth);
6246
6247    vec2 offset = vec2(uBlurDirectionX, uBlurDirectionY) / uTexSize;
6248
6249    float sum = 0.0;
6250    float kernelSum = 0.0;
6251    const int halfKernelSize = dOcclusionKernelSize / 2;
6252    // only if kernelSize is odd
6253    for (int i = -halfKernelSize; i <= halfKernelSize; i++) {
6254        if (abs(float(i)) > 1.0 && abs(float(i)) * pixelSize > 0.8) continue;
6255
6256        vec2 sampleCoords = coords + float(i) * offset;
6257        if (outsideBounds(sampleCoords)) {
6258            continue;
6259        }
6260
6261        vec4 sampleSsaoDepth = texture2D(tSsaoDepth, sampleCoords);
6262
6263        float sampleDepth = unpackRGToUnitInterval(sampleSsaoDepth.zw);
6264        if (isBackground(sampleDepth) || isNearClip(sampleDepth)) {
6265            continue;
6266        }
6267
6268        float sampleViewZ = getViewZ(sampleDepth);
6269        if (abs(selfViewZ - sampleViewZ) >= uBlurDepthBias) {
6270            continue;
6271        }
6272
6273        float kernel = uKernel[int(abs(float(i)))]; // abs is not defined for int in webgl1
6274        float sampleValue = unpackRGToUnitInterval(sampleSsaoDepth.xy);
6275
6276        sum += kernel * sampleValue;
6277        kernelSum += kernel;
6278    }
6279    gl_FragColor = vec4(packUnitIntervalToRG(sum / kernelSum), packedDepth);
6280}
6281`),eb}var _8;function Hoe(){if(_8)return Hu;_8=1,Object.defineProperty(Hu,"__esModule",{value:!0}),Hu.SsaoPass=Hu.SsaoParams=void 0;const e=Mr(),t=Yt(),r=Kt(),n=et(),i=Zt(),c=Jt(),o=Ge(),s=Ne(),h=Gr(),f=Goe(),y=zoe(),_=vt(),g=Ct(),a=Dn();Hu.SsaoParams={samples:s.ParamDefinition.Numeric(32,{min:1,max:256,step:1}),multiScale:s.ParamDefinition.MappedStatic("off",{on:s.ParamDefinition.Group({levels:s.ParamDefinition.ObjectList({radius:s.ParamDefinition.Numeric(5,{min:0,max:20,step:.1},{description:"Final occlusion radius is 2^x"}),bias:s.ParamDefinition.Numeric(1,{min:0,max:3,step:.1})},M=>`${M.radius}, ${M.bias}`,{defaultValue:[{radius:2,bias:1},{radius:5,bias:1},{radius:8,bias:1},{radius:11,bias:1}]}),nearThreshold:s.ParamDefinition.Numeric(10,{min:0,max:50,step:1}),farThreshold:s.ParamDefinition.Numeric(1500,{min:0,max:1e4,step:100})}),off:s.ParamDefinition.Group({})},{cycle:!0}),radius:s.ParamDefinition.Numeric(5,{min:0,max:20,step:.1},{description:"Final occlusion radius is 2^x",hideIf:M=>M?.multiScale.name==="on"}),bias:s.ParamDefinition.Numeric(.8,{min:0,max:3,step:.1}),blurKernelSize:s.ParamDefinition.Numeric(15,{min:1,max:25,step:2}),blurDepthBias:s.ParamDefinition.Numeric(.5,{min:0,max:1,step:.
628101}),resolutionScale:s.ParamDefinition.Numeric(1,{min:.1,max:1,step:.05},{description:"Adjust resolution of occlusion calculation"}),color:s.ParamDefinition.Color((0,_.Color)(0)),transparentThreshold:s.ParamDefinition.Numeric(.4,{min:0,max:1,step:.05})};function d(M,D,V){const R=M.length,{radius:E,bias:I}={radius:new Array(R*3).fill(0),bias:new Array(R*3).fill(0)};M=M.slice().sort((B,w)=>B.radius-w.radius);for(let B=0;B<R;++B){const w=M[B];E[B]=Math.pow(2,w.radius)*D,I[B]=w.bias}return{count:R,radius:E,bias:I}}class p{static isEnabled(D){return D.enabled&&D.occlusion.name!=="off"}static isTransparentEnabled(D,V){return D.opacityAverage<1&&D.transparencyMin<V.transparentThreshold}calcSsaoScale(D){return Math.min(1,1/this.webgl.pixelRatio)*D}getDepthTexture(){return this.ssaoScale===1?this.depthTextureOpaque:this.downsampledDepthTargetOpaque.texture}getTransparentDepthTexture(){return this.ssaoScale===1?this.depthTextureTransparent:this.downsampledDepthTargetTransparent.texture}constructor(D,V,R,E,I,B){this.webgl=D,this.invProjection=o.Mat4.identity(),this.levelsCameraScale=-1;const{textureFloatLinear:w}=D.extensions;this.depthTextureOpaque=I,this.depthTextureTransparent=B,this.nSamples=1,this.blurKernelSize=1,this.ssaoScale=this.calcSsaoScale(1),this.texSize=[V,R],this.levels=[],this.framebuffer=D.resources.framebuffer(),this.blurFirstPassFramebuffer=D.resources.framebuffer(),this.blurSecondPassFramebuffer=D.resources.framebuffer();const O=Math.floor(V*this.ssaoScale),F=Math.floor(R*this.ssaoScale),L=Math.max(1,Math.floor(O*.5)),U=Math.max(1,Math.floor(F*.5)),q=Math.max(1,Math.floor(O*.25)),N=Math.max(1,Math.floor(F*.25)),k=w?"linear":"nearest";this.downsampledDepthTargetOpaque=E?D.createRenderTarget(O,F,!1,"uint8","linear","rgba"):D.createRenderTarget(O,F,!1,"float32",k,D.isWebGL2?"alpha":"rgba"),this.downsampleDepthRenderableOpaque=(0,e.createCopyRenderable)(D,I);const j=this.getDepthTexture();this.depthHalfTargetOpaque=E?D.createRenderTarget(L,U,!1,"uint8","linear","rgba"):D.createRenderTarget(L,U,!1,"float32",k,D.isWebGL2?"alpha":"rgba"),this.depthHalfRenderableOpaque=(0,e.createCopyRenderable)(D,j),this.depthQuarterTargetOpaque=E?D.createRenderTarget(q,N,!1,"uint8","linear","rgba"):D.createRenderTarget(q,N,!1,"float32",k,D.isWebGL2?"alpha":"rgba"),this.depthQuarterRenderableOpaque=(0,e.createCopyRenderable)(D,this.depthHalfTargetOpaque.texture),this.downsampledDepthTargetTransparent=D.createRenderTarget(O,F,!1,"uint8","linear","rgba"),this.downsampleDepthRenderableTransparent=(0,e.createCopyRenderable)(D,B);const H=this.getTransparentDepthTexture();this.depthHalfTargetTransparent=D.createRenderTarget(L,U,!1,"uint8","linear","rgba"),this.depthHalfRenderableTransparent=(0,e.createCopyRenderable)(D,H),this.depthQuarterTargetTransparent=D.createRenderTarget(q,N,!1,"uint8","linear","rgba"),this.depthQuarterRenderableTransparent=(0,e.createCopyRenderable)(D,this.depthHalfTargetTransparent.texture),this.ssaoDepthTexture=D.resources.texture("image-uint8","rgba","ubyte","linear"),this.ssaoDepthTexture.define(O,F),this.ssaoDepthTexture.attachFramebuffer(this.framebuffer,"color0"),this.ssaoDepthTransparentTexture=D.resources.texture("image-uint8","rgba","ubyte","linear"),this.ssaoDepthTransparentTexture.define(O,F),this.depthBlurProxyTexture=D.resources.texture("image-uint8","rgba","ubyte","linear"),this.depthBlurProxyTexture.define(O,F),this.depthBlurProxyTexture.attachFramebuffer(this.blurFirstPassFramebuffer,"color0"),this.renderable=m(D,j,this.depthHalfTargetOpaque.texture,this.depthQuarterTargetOpaque.texture,H,this.depthHalfTargetTransparent.texture,this.depthQuarterTargetTransparent.texture),this.blurFirstPassRenderable=b(D,this.ssaoDepthTransparentTexture,"horizontal"),this.blurSecondPassRenderable=b(D,this.depthBlurProxyTexture,"vertical")}getByteCount(){return this.downsampledDepthTargetOpaque.getByteCount()+this.depthHalfTargetOpaque.getByteCount()+this.depthQuarterTargetOpaque.getByteCount()+this.downsampledDepthTargetTransparent.getByteCount()+this.depthHalfTargetTransparent.getByteCount()+this.depthQuarterTargetTransparent.getByteCount()+this.ssaoDepthTexture.getByteCount()+this.ssaoDepthTransparentTexture.getByteCount()+this.depthBlurProxyTexture.getByteCount()}setSize(D,V){const[R,E]=this.texSize,I=this.calcSsaoScale(1);if(D!==R||V!==E||this.ssaoScale!==I){this.texSize.splice(0,2,D,V);const B=Math.floor(D*this.ssaoScale),w=Math.floor(V*this.ssaoScale);this.ssaoDepthTexture.define(B,w),this.ssaoDepthTransparentTexture.define(B,w),this.depthBlurProxyTexture.define(B,w);const O=Math.max(1,Math.floor(B*.5)),F=Math.max(1,Math.floor(w*.5)),L=Math.max(1,Math.floor(B*.25)),U=Math.max(1,Math.floor(w*.25));this.downsampledDepthTargetOpaque.setSize(B,w),this.depthHalfTargetOpaque.setSize(O,F),this.depthQuarterTargetOpaque.setSize(L,U),n.ValueCell.update(this.downsampleDepthRenderableOpaque.values.uTexSize,o.Vec2.set(this.downsampleDepthRenderableOpaque.values.uTexSize.ref.value,B,w)),n.ValueCell.update(this.depthHalfRenderableOpaque.values.uTexSize,o.Vec2.set(this.depthHalfRenderableOpaque.values.uTexSize.ref.value,O,F)),n.V
6281alueCell.update(this.depthQuarterRenderableOpaque.values.uTexSize,o.Vec2.set(this.depthQuarterRenderableOpaque.values.uTexSize.ref.value,L,U)),this.downsampledDepthTargetTransparent.setSize(B,w),this.depthHalfTargetTransparent.setSize(O,F),this.depthQuarterTargetTransparent.setSize(L,U),n.ValueCell.update(this.downsampleDepthRenderableTransparent.values.uTexSize,o.Vec2.set(this.downsampleDepthRenderableTransparent.values.uTexSize.ref.value,B,w)),n.ValueCell.update(this.depthHalfRenderableTransparent.values.uTexSize,o.Vec2.set(this.depthHalfRenderableTransparent.values.uTexSize.ref.value,O,F)),n.ValueCell.update(this.depthQuarterRenderableTransparent.values.uTexSize,o.Vec2.set(this.depthQuarterRenderableTransparent.values.uTexSize.ref.value,L,U)),n.ValueCell.update(this.renderable.values.uTexSize,o.Vec2.set(this.renderable.values.uTexSize.ref.value,B,w)),n.ValueCell.update(this.blurFirstPassRenderable.values.uTexSize,o.Vec2.set(this.blurFirstPassRenderable.values.uTexSize.ref.value,B,w)),n.ValueCell.update(this.blurSecondPassRenderable.values.uTexSize,o.Vec2.set(this.blurSecondPassRenderable.values.uTexSize.ref.value,B,w));const q=this.getDepthTexture(),N=this.getTransparentDepthTexture();n.ValueCell.update(this.depthHalfRenderableOpaque.values.tColor,q),n.ValueCell.update(this.depthHalfRenderableTransparent.values.tColor,N),n.ValueCell.update(this.renderable.values.tDepth,q),n.ValueCell.update(this.renderable.values.tDepthTransparent,N),this.depthHalfRenderableOpaque.update(),this.depthHalfRenderableTransparent.update(),this.renderable.update()}}reset(){this.ssaoDepthTexture.attachFramebuffer(this.framebuffer,"color0"),this.depthBlurProxyTexture.attachFramebuffer(this.blurFirstPassFramebuffer,"color0")}update(D,V,R,E=!1){let I=!1,B=!1,w=!1;const O=D.state.mode==="orthographic"?1:0,F=o.Mat4.invert(this.invProjection,D.projection),[L,U]=this.texSize,q=D.viewport;n.ValueCell.update(this.renderable.values.uProjection,D.projection),n.ValueCell.update(this.renderable.values.uInvProjection,F);const N=this.renderable.values.uBounds,k=this.ssaoScale;o.Vec4.set(N.ref.value,Math.floor(q.x*k)/(L*k),Math.floor(q.y*k)/(U*k),Math.ceil((q.x+q.width)*k)/(L*k),Math.ceil((q.y+q.height)*k)/(U*k)),n.ValueCell.update(N,N.ref.value),n.ValueCell.update(this.blurFirstPassRenderable.values.uBounds,N.ref.value),n.ValueCell.update(this.blurSecondPassRenderable.values.uBounds,N.ref.value),n.ValueCell.updateIfChanged(this.blurFirstPassRenderable.values.uNear,D.near),n.ValueCell.updateIfChanged(this.blurSecondPassRenderable.values.uNear,D.near),n.ValueCell.updateIfChanged(this.blurFirstPassRenderable.values.uFar,D.far),n.ValueCell.updateIfChanged(this.blurSecondPassRenderable.values.uFar,D.far),n.ValueCell.update(this.blurFirstPassRenderable.values.uInvProjection,F),n.ValueCell.update(this.blurSecondPassRenderable.values.uInvProjection,F),n.ValueCell.update(this.blurFirstPassRenderable.values.uBlurDepthBias,R.blurDepthBias*D.scale),n.ValueCell.update(this.blurSecondPassRenderable.values.uBlurDepthBias,R.blurDepthBias*D.scale),this.blurFirstPassRenderable.values.dOrthographic.ref.value!==O&&(B=!0,n.ValueCell.update(this.blurFirstPassRenderable.values.dOrthographic,O),n.ValueCell.update(this.blurSecondPassRenderable.values.dOrthographic,O));const j=p.isTransparentEnabled(V,R);this.renderable.values.dIncludeTransparent.ref.value!==j&&(I=!0,n.ValueCell.update(this.renderable.values.dIncludeTransparent,j)),this.renderable.values.dIllumination.ref.value!==E&&(I=!0,n.ValueCell.update(this.renderable.values.dIllumination,E)),this.nSamples!==R.samples&&(I=!0,this.nSamples=R.samples,n.ValueCell.update(this.renderable.values.uSamples,x(this.nSamples)),n.ValueCell.updateIfChanged(this.renderable.values.dNSamples,this.nSamples));const H=R.multiScale.name==="on";if(this.renderable.values.dMultiScale.ref.value!==H&&(I=!0,n.ValueCell.update(this.renderable.values.dMultiScale,H)),R.multiScale.name==="on"){const z=R.multiScale.params;if(this.levelsCameraScale!==D.scale||!(0,n.deepEqual)(this.levels,z.levels)){I=!0,this.levelsCameraScale=D.scale,this.levels=z.levels;const W=d(z.levels,D.scale);n.ValueCell.updateIfChanged(this.renderable.values.dLevels,W.count),n.ValueCell.update(this.renderable.values.uLevelRadius,W.radiu
6281s),n.ValueCell.update(this.renderable.values.uLevelBias,W.bias)}n.ValueCell.updateIfChanged(this.renderable.values.uNearThreshold,z.nearThreshold),n.ValueCell.updateIfChanged(this.renderable.values.uFarThreshold,z.farThreshold)}else n.ValueCell.updateIfChanged(this.renderable.values.uRadius,Math.pow(2,R.radius)*D.scale);if(n.ValueCell.updateIfChanged(this.renderable.values.uBias,R.bias),this.blurKernelSize!==R.blurKernelSize){B=!0,this.blurKernelSize=R.blurKernelSize;const z=P(this.blurKernelSize);n.ValueCell.update(this.blurFirstPassRenderable.values.uKernel,z),n.ValueCell.update(this.blurSecondPassRenderable.values.uKernel,z),n.ValueCell.update(this.blurFirstPassRenderable.values.dOcclusionKernelSize,this.blurKernelSize),n.ValueCell.update(this.blurSecondPassRenderable.values.dOcclusionKernelSize,this.blurKernelSize)}const G=this.calcSsaoScale(R.resolutionScale);if(this.ssaoScale!==G){I=!0,w=!0,this.ssaoScale=G;const z=Math.floor(L*this.ssaoScale),W=Math.floor(U*this.ssaoScale);this.ssaoDepthTexture.define(z,W),this.ssaoDepthTransparentTexture.define(z,W),this.depthBlurProxyTexture.define(z,W);const X=Math.floor(z*.5),Y=Math.floor(W*.5),K=Math.floor(z*.25),Q=Math.floor(W*.25);this.downsampledDepthTargetOpaque.setSize(z,W),this.depthHalfTargetOpaque.setSize(X,Y),this.depthQuarterTargetOpaque.setSize(K,Q);const J=this.getDepthTexture();n.ValueCell.update(this.depthHalfRenderableOpaque.values.tColor,J),n.ValueCell.update(this.renderable.values.tDepth,J),n.ValueCell.update(this.renderable.values.tDepthHalf,this.depthHalfTargetOpaque.texture),n.ValueCell.update(this.renderable.values.tDepthQuarter,this.depthQuarterTargetOpaque.texture),n.ValueCell.update(this.downsampleDepthRenderableOpaque.values.uTexSize,o.Vec2.set(this.downsampleDepthRenderableOpaque.values.uTexSize.ref.value,z,W)),n.ValueCell.update(this.depthHalfRenderableOpaque.values.uTexSize,o.Vec2.set(this.depthHalfRenderableOpaque.values.uTexSize.ref.value,X,Y)),n.ValueCell.update(this.depthQuarterRenderableOpaque.values.uTexSize,o.Vec2.set(this.depthQuarterRenderableOpaque.values.uTexSize.ref.value,K,Q)),this.downsampledDepthTargetTransparent.setSize(z,W),this.depthHalfTargetTransparent.setSize(X,Y),this.depthQuarterTargetTransparent.setSize(K,Q);const ae=this.getTransparentDepthTexture();n.ValueCell.update(this.depthHalfRenderableTransparent.values.tColor,ae),n.ValueCell.update(this.renderable.values.tDepthTransparent,ae),n.ValueCell.update(this.renderable.values.tDepthHalfTransparent,this.depthHalfTargetTransparent.texture),n.ValueCell.update(this.renderable.values.tDepthQuarterTransparent,this.depthQuarterTargetTransparent.texture),n.ValueCell.update(this.downsampleDepthRenderableTransparent.values.uTexSize,o.Vec2.set(this.downsampleDepthRenderableTransparent.values.uTexSize.ref.value,z,W)),n.ValueCell.update(this.depthHalfRenderableTransparent.values.uTexSize,o.Vec2.set(this.depthHalfRenderableTransparent.values.uTexSize.ref.value,X,Y)),n.ValueCell.update(this.depthQuarterRenderableTransparent.values.uTexSize,o.Vec2.set(this.depthQuarterRenderableTransparent.values.uTexSize.ref.value,K,Q)),n.ValueCell.update(this.renderable.values.uTexSize,o.Vec2.set(this.renderable.values.uTexSize.ref.value,z,W)),n.ValueCell.update(this.blurFirstPassRenderable.values.uTexSize,o.Vec2.set(this.blurFirstPassRenderable.values.uTexSize.ref.value,z,W)),n.ValueCell.update(this.blurSecondPassRenderable.values.uTexSize,o.Vec2.set(this.blurSecondPassRenderable.values.uTexSize.ref.value,z,W))}I&&this.renderable.update(),B&&(this.blurFirstPassRenderable.update(),this.blurSecondPassRenderable.update()),w&&(this.depthHalfRenderableOpaque.update(),this.depthHalfRenderableTransparent.update())}render(D){g.isTimingMode&&this.webgl.timer.mark("SSAO.render");const{state:V}=this.webgl,{x:R,y:E,width:I,height:B}=D.viewport,w=this.renderable.values.dIncludeTransparent.ref.value,O=this.renderable.values.dMultiScale.ref.value,F=Math.floor(R*this.ssaoScale),L=Math.floor(E*this.ssaoScale),U=Math.ceil(I*this.ssaoScale),q=Math.ceil(B*this.ssaoScale);if(V.viewport(F,L,U,q),V.scissor(F,L,U,q),this.ssaoScale<1&&(g.isTimingMode&&this.webgl.timer.mark("SSAO.downsample"),this.downsampledDepthTargetOpaque.bind(),this.downsampleDepthRenderableOpaque.render(),w&&(this.downsampledDepthTargetTransparent.bind(),this.downsampleDepthRenderableTransparent.render()),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.downsample")),O){const N=Math.floor(F*.5),k=Math.floor(L*.5),j=Math.ceil(U*.5),H=Math.ceil(q*.5);V.viewport(N,k,j,H),V.scissor(N,k,j,H),g.isTimingMode&&this.webgl.timer.mark("SSAO.half"),this.depthHalfTargetOpaque.bind(),this.depthHalfRenderableOpaque.render(),w&&(this.depthHalfTargetTransparent.bind(),this.depthHalfRenderableTransparent.render()),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.half");const G=Math.floor(F*.25),z=Math.floor(L*.25),W=Math.ceil(U*.25),X=Math.ceil(q*.25);V.viewport(G,z,W,X),V.scissor(G,z,W,X),g.isTimingMode&&this.webgl.timer.mark("SSAO.quarter"),this.depthQuarterTargetOpaque.bind(),this.depthQuarterRenderableOpaque.render(),w&&(this.depthQuarterTargetTransparent.bind(),this.depthQuarterRenderableTransparent.render()),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.quarter"),V.viewport(F,L,U,q),V.scissor(F,L,U,q)}
6281g.isTimingMode&&this.webgl.timer.mark("SSAO.opaque"),this.ssaoDepthTexture.attachFramebuffer(this.framebuffer,"color0"),n.ValueCell.update(this.renderable.values.uTransparencyFlag,0),this.framebuffer.bind(),this.renderable.render(),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.opaque"),g.isTimingMode&&this.webgl.timer.mark("SSAO.blurOpaque"),n.ValueCell.update(this.blurFirstPassRenderable.values.tSsaoDepth,this.ssaoDepthTexture),this.blurFirstPassRenderable.update(),this.blurFirstPassFramebuffer.bind(),this.blurFirstPassRenderable.render(),this.ssaoDepthTexture.attachFramebuffer(this.blurSecondPassFramebuffer,"color0"),this.blurSecondPassFramebuffer.bind(),this.blurSecondPassRenderable.render(),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.blurOpaque"),w&&(g.isTimingMode&&this.webgl.timer.mark("SSAO.transparent "),this.ssaoDepthTransparentTexture.attachFramebuffer(this.framebuffer,"color0"),n.ValueCell.update(this.renderable.values.uTransparencyFlag,1),this.framebuffer.bind(),this.renderable.render(),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.transparent "),g.isTimingMode&&this.webgl.timer.mark("SSAO.blurTransparent "),n.ValueCell.update(this.blurFirstPassRenderable.values.tSsaoDepth,this.ssaoDepthTransparentTexture),this.blurFirstPassRenderable.update(),this.blurFirstPassFramebuffer.bind(),this.blurFirstPassRenderable.render(),this.ssaoDepthTransparentTexture.attachFramebuffer(this.blurSecondPassFramebuffer,"color0"),this.blurSecondPassFramebuffer.bind(),this.blurSecondPassRenderable.render(),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.blurTransparent ")),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.render")}}Hu.SsaoPass=p;const u={...e.QuadSchema,tDepth:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),tDepthHalf:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),tDepthQuarter:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),dIllumination:(0,t.DefineSpec)("boolean"),uTransparencyFlag:(0,t.UniformSpec)("i"),dIncludeTransparent:(0,t.DefineSpec)("boolean"),tDepthTransparent:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),tDepthHalfTransparent:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),tDepthQuarterTransparent:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),uSamples:(0,t.UniformSpec)("v3[]"),dNSamples:(0,t.DefineSpec)("number"),uProjection:(0,t.UniformSpec)("m4"),uInvProjection:(0,t.UniformSpec)("m4"),uBounds:(0,t.UniformSpec)("v4"),uTexSize:(0,t.UniformSpec)("v2"),uRadius:(0,t.UniformSpec)("f"),uBias:(0,t.UniformSpec)("f"),dMultiScale:(0,t.DefineSpec)("boolean"),dLevels:(0,t.DefineSpec)("number"),uLevelRadius:(0,t.UniformSpec)("f[]"),uLevelBias:(0,t.UniformSpec)("f[]"),uNearThreshold:(0,t.UniformSpec)("f"),uFarThreshold:(0,t.UniformSpec)("f")};function m(M,D,V,R,E,I,B){const w={...e.QuadValues,tDepth:n.ValueCell.create(D),tDepthHalf:n.ValueCell.create(V),tDepthQuarter:n.ValueCell.create(R),dIllumination:n.ValueCell.create(!1),dIncludeTransparent:n.ValueCell.create(!0),uTransparencyFlag:n.ValueCell.create(0),tDepthTransparent:n.ValueCell.create(E),tDepthHalfTransparent:n.ValueCell.create(I),tDepthQuarterTransparent:n.ValueCell.create(B),uSamples:n.ValueCell.create(x(32)),dNSamples:n.ValueCell.create(32),uProjection:n.ValueCell.create(o.Mat4.identity()),uInvProjection:n.ValueCell.create(o.Mat4.identity()),uBounds:n.ValueCell.create((0,o.Vec4)()),uTexSize:n.ValueCell.create(o.Vec2.create(M.gl.drawingBufferWidth,M.gl.drawingBufferHeight)),uRadius:n.ValueCell.create(Math.pow(2,5)),uBias:n.ValueCell.create(.8),dMultiScale:n.ValueCell.create(!1),dLevels:n.ValueCell.create(3),uLevelRadius:n.ValueCell.create([Math.pow(2,2),Math.pow(2,5),Math.pow(2,8)]),uLevelBias:n.ValueCell.create([.8,.8,.8]),uNearThreshold:n.ValueCell.create(10),uFarThreshold:n.ValueCell.create(1500)},O={...u},F=(0,r.ShaderCode)("ssao",h.quad_vert,f.ssao_frag),L=(0,i.createComputeRenderItem)(M,"triangles",F,O,w);return(0,c.createComputeRenderable)(L,w)}const v={...e.QuadSchema,tSsaoDepth:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,t.UniformSpec)("v2"),uKernel:(0,t.UniformSpec)("f[]"),dOcclusionKernelSize:(0,t.DefineSpec)("number"),uBlurDepthBias:(0,t.UniformSpec)("f"),uBlurDirectionX:(0,t.UniformSpec)("f"),uBlurDirectionY:(0,t.UniformSpec)("f"),uInvProjection:(0,t.UniformSpec)("m4"),uNear:(0,t.UniformSpec)("f"),uFar:(0,t.UniformSpec)("f"),uBounds:(0,t.UniformSpec)("v4"),dOrthographic:(0,t.DefineSpec)("number")};function b(M,D,V){const R={...e.QuadValues,tSsaoDepth:n.ValueCell.create(D),uTexSize:n.ValueCell.create(o.Vec2.create(D.getWidth(),D.getHeight())),uKernel:n.ValueCell.create(P(15)),dOcclusionKernelSize:n.ValueCell.create(15),uBlurDepthBias:n.ValueCell.create(.5),uBlurDirectionX:n.ValueCell.create(V==="horizontal"?1:0),uBlurDirectionY:n.ValueCell.create(V==="vertical"?1:0),uInvProjection:n.ValueCell.create(o.Mat4.identity()),uNear:n.ValueCell.create(0),uFar:n.ValueCell.create(1e4),uBounds:n.ValueCell.create((0,o.Vec4)()),dOrthographic:n.ValueCell.create(0)},E={...v},I=(0,r.ShaderCode)("ssao_blur",h.quad_vert,y.ssaoBlur_frag),B=(0,i.createComputeRenderItem)(M,"triangles",I,E,R);return(0,c.createComputeRenderable)(B,R)}function P(M){const D=M/3,V=Math.floor((M+1)/2),R=[];for(let E=0;E<V;E++)R.push(1/(Math.sqrt(2*Math.PI)*D)*Math.exp(-E*E/(2*D*D)));return R}const C=new a.PCG;
6281function l(){const M=(0,o.Vec3)();for(;;){const D=C.float()*2-1,V=C.float()*2-1;if(D*D+V*V<1){const R=2*Math.sqrt(1-D*D-V*V)*(C.float()<.5?-1:1);o.Vec3.set(M,D,V,R),o.Vec3.normalize(M,M),o.Vec3.scale(M,M,C.float());break}}return M[2]<0&&(M[2]=-M[2]),M}function S(M,D){if(D.length>=M)return D;D.length===0&&D.push(l());const V=Math.max(10,Math.min(30,Math.floor(M/10)));for(let R=D.length;R<M;R++){let E,I=-1;for(let B=0;B<V;B++){const w=l();let O=1/0;for(const F of D){const L=o.Vec3.distance(w,F);O=Math.min(O,L)}O>I&&(I=O,E=w)}D.push(E)}return D}let T=[];function A(M){return T.length<M&&(T=S(M,T)),T}function x(M){const D=A(M),V=[];for(let R=0;R<M;R++){let E=(R*R+2*R+1)/(M*M);E=.1+E*(1-.1),V.push(D[R][0]*E),V.push(D[R][1]*E),V.push(D[R][2]*E)}return V}return Hu}var S8;function XS(){if(S8)return Xo;S8=1,Object.defineProperty(Xo,"__esModule",{value:!0}),Xo.AntialiasingPass=Xo.PostprocessingPass=Xo.PostprocessingParams=void 0;const e=Mr(),t=Yt(),r=Kt(),n=et(),i=Zt(),c=Jt(),o=Ge(),s=Ne(),h=Gr(),f=Soe(),y=vt(),_=Poe(),g=woe(),a=Ct(),d=Boe(),p=Ooe(),u=Fw(),m=m2(),v=HQ(),b=joe(),P=Hoe(),C={...e.QuadSchema,tSsaoDepth:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tSsaoDepthTransparent:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tColor:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tTransparentColor:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),dBlendTransparency:(0,t.DefineSpec)("boolean"),tDepthOpaque:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tDepthTransparent:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tShadows:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tOutlines:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tBloom:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),dBloomEnable:(0,t.DefineSpec)("boolean"),uTexSize:(0,t.UniformSpec)("v2"),dOrthographic:(0,t.DefineSpec)("number"),uNear:(0,t.UniformSpec)("f"),uFar:(0,t.UniformSpec)("f"),uFogNear:(0,t.UniformSpec)("f"),uFogFar:(0,t.UniformSpec)("f"),uFogColor:(0,t.UniformSpec)("v3"),uOutlineColor:(0,t.UniformSpec)("v3"),uOcclusionColor:(0,t.UniformSpec)("v3"),uTransparentBackground:(0,t.UniformSpec)("b"),dOcclusionEnable:(0,t.DefineSpec)("boolean"),dOcclusionSingleDepth:(0,t.DefineSpec)("boolean"),dOcclusionIncludeOpacity:(0,t.DefineSpec)("boolean"),dOcclusionIncludeTransparency:(0,t.DefineSpec)("boolean"),uOcclusionOffset:(0,t.UniformSpec)("v2"),dShadowEnable:(0,t.DefineSpec)("boolean"),dOutlineEnable:(0,t.DefineSpec)("boolean"),dOutlineScale:(0,t.DefineSpec)("number"),dTransparentOutline:(0,t.DefineSpec)("boolean")};function l(A,x,M,D,V,R,E,I,B,w,O){const F={...e.QuadValues,tSsaoDepth:n.ValueCell.create(I),tSsaoDepthTransparent:n.ValueCell.create(B),tColor:n.ValueCell.create(x),tTransparentColor:n.ValueCell.create(M),dBlendTransparency:n.ValueCell.create(!0),tDepthOpaque:n.ValueCell.create(D),tDepthTransparent:n.ValueCell.create(V),tShadows:n.ValueCell.create(R),tOutlines:n.ValueCell.create(E),tBloom:n.ValueCell.create(w),dBloomEnable:n.ValueCell.create(!1),uTexSize:n.ValueCell.create(o.Vec2.create(x.getWidth(),x.getHeight())),dOrthographic:n.ValueCell.create(0),uNear:n.ValueCell.create(1),uFar:n.ValueCell.create(1e4),uFogNear:n.ValueCell.create(1e4),uFogFar:n.ValueCell.create(1e4),uFogColor:n.ValueCell.create(o.Vec3.create(1,1,1)),uOutlineColor:n.ValueCell.create(o.Vec3.create(0,0,0)),uOcclusionColor:n.ValueCell.create(o.Vec3.create(0,0,0)),uTransparentBackground:n.ValueCell.create(!1),dOcclusionEnable:n.ValueCell.create(!0),dOcclusionSingleDepth:n.ValueCell.create(!1),dOcclusionIncludeOpacity:n.ValueCell.create(!0),dOcclusionIncludeTransparency:n.ValueCell.create(!1),uOcclusionOffset:n.ValueCell.create(o.Vec2.create(0,0)),dShadowEnable:n.ValueCell.create(!1),dOutlineEnable:n.ValueCell.create(!1),dOutlineScale:n.ValueCell.create(1),dTransparentOutline:n.ValueCell.create(O)},L={...C},U=(0,r.ShaderCode)("postprocessing",h.quad_vert,f.postprocessing_frag),q=(0,i.createComputeRenderItem)(A,"triangles",U,L,F);return(0,c.createComputeRenderable)(q,F)}Xo.PostprocessingParams={enabled:s.ParamDefinition.Boolean(!0),occlusion:s.ParamDefinition.MappedStatic("on",{on:s.ParamDefinition.Group(P.SsaoParams),off:s.ParamDefinition.Group({})},{cycle:!0,description:"Darken occluded crevices with the ambient occlusion effect",hideIf:A=>A.enabled===!1}),shadow:s.ParamDefinition.MappedStatic("off",{on:s.ParamDefinition.Group(b.ShadowParams),off:s.ParamDefinition.Group({})},{cycle:!0,description:"Simplistic shadows",hideIf:A=>A.enabled===!1}),outline:s.ParamDefinition.MappedStatic("off",{on:s.ParamDefinition.Group(v.OutlineParams),off:s.ParamDefinition.Group({})},{cycle:!0,description:"Draw outline around 3D objects",hideIf:A=>A.enabled===!1}),dof:s.ParamDefinition.MappedStatic("off",{on:s.ParamDefinition.Group(u.DofParams),off:s.ParamDefinition.Group({})},{cycle:!0,description:"DOF",hideIf:A=>A.enabled===!1}),antialiasing:s.ParamDefinition.MappedStatic("smaa",{fxaa:s.ParamDefinition.Group(_.FxaaParams),smaa:s.ParamDefinition.Group(g.SmaaParams),off:s.ParamDefinition.Group({})},{options:[["fxaa","FXAA"],["smaa","SMAA"],["off","Off"]],description:"Smooth pixel edges",hideIf:A=>A.enabled===!1}),sharpening:s.ParamDefinition.MappedStatic("off",{on:s.ParamDefinition.Group(p.CasParams),off:s.ParamDefinition.Group({})},{cycle:!0,description:"Contrast Adaptive Sharpening",hideIf:A=>A.enabled===!1}
6281),background:s.ParamDefinition.Group(d.BackgroundParams,{isFlat:!0,hideIf:A=>A.enabled===!1}),bloom:s.ParamDefinition.MappedStatic("on",{on:s.ParamDefinition.Group(m.BloomParams),off:s.ParamDefinition.Group({})},{cycle:!0,description:"Bloom",hideIf:A=>A.enabled===!1})};class S{static isEnabled(x){return x.enabled&&(P.SsaoPass.isEnabled(x)||b.ShadowPass.isEnabled(x)||v.OutlinePass.isEnabled(x)||x.background.variant.name!=="off"||m.BloomPass.isEnabled(x))}static isTransparentDepthRequired(x,M){return M.enabled&&(u.DofPass.isEnabled(M)||v.OutlinePass.isEnabled(M)&&S.isTransparentOutlineEnabled(M)||P.SsaoPass.isEnabled(M)&&S.isTransparentSsaoEnabled(x,M)||m.BloomPass.isEnabled(M))&&x.opacityAverage<1}static isTransparentOutlineEnabled(x){var M;return x.enabled&&v.OutlinePass.isEnabled(x)&&((M=x.outline.params.includeTransparent)!==null&&M!==void 0?M:!0)}static isTransparentSsaoEnabled(x,M){return M.enabled&&P.SsaoPass.isEnabled(M)&&P.SsaoPass.isTransparentEnabled(x,M.occlusion.params)}static isSsaoEnabled(x){return x.enabled&&P.SsaoPass.isEnabled(x)}constructor(x,M,D){this.webgl=x,this.drawPass=D,this.occlusionOffset=[0,0],this.transparentBackground=!1;const{colorTarget:V,transparentColorTarget:R,depthTextureOpaque:E,depthTextureTransparent:I,packedDepth:B}=D,w=V.getWidth(),O=V.getHeight();this.target=x.createRenderTarget(w,O,!1,"uint8","linear"),this.ssao=new P.SsaoPass(x,w,O,B,E,I),this.shadow=new b.ShadowPass(x,w,O,E),this.outline=new v.OutlinePass(x,w,O,I,E),this.bloom=new m.BloomPass(x,w,O),this.renderable=l(x,V.texture,R.texture,E,I,this.shadow.target.texture,this.outline.target.texture,this.ssao.ssaoDepthTexture,this.ssao.ssaoDepthTransparentTexture,this.bloom.compositeTarget.texture,!0),this.background=new d.BackgroundPass(x,M,w,O)}getByteCount(){return this.target.getByteCount()+this.ssao.getByteCount()+this.shadow.getByteCount()+this.outline.getByteCount()+this.bloom.getByteCount()}setSize(x,M){const[D,V]=this.renderable.values.uTexSize.ref.value;(x!==D||M!==V)&&(this.target.setSize(x,M),n.ValueCell.update(this.renderable.values.uTexSize,o.Vec2.set(this.renderable.values.uTexSize.ref.value,x,M))),this.ssao.setSize(x,M),this.shadow.setSize(x,M),this.outline.setSize(x,M),this.bloom.setSize(x,M),this.background.setSize(x,M)}reset(){this.ssao.reset()}updateState(x,M,D,V,R,E,I){let B=!1;const w=x.state.mode==="orthographic"?1:0,O=v.OutlinePass.isEnabled(R),F=b.ShadowPass.isEnabled(R),L=P.SsaoPass.isEnabled(R);if(L){const k=R.occlusion.params;this.ssao.update(x,M,k);const j=P.SsaoPass.isTransparentEnabled(M,k);this.renderable.values.dOcclusionIncludeTransparency.ref.value!==j&&(B=!0,n.ValueCell.update(this.renderable.values.dOcclusionIncludeTransparency,j)),n.ValueCell.update(this.renderable.values.uOcclusionColor,y.Color.toVec3Normalized(this.renderable.values.uOcclusionColor.ref.value,k.color))}if(F&&this.shadow.update(x,E,I,R.shadow.params),O){const k=R.outline.params,{transparentOutline:j,outlineScale:H}=this.outline.update(x,k,this.drawPass.depthTextureTransparent,this.drawPass.depthTextureOpaque);n.ValueCell.update(this.renderable.values.uOutlineColor,y.Color.toVec3Normalized(this.renderable.values.uOutlineColor.ref.value,k.color)),this.renderable.values.dOutlineScale.ref.value!==H&&(B=!0,n.ValueCell.update(this.renderable.values.dOutlineScale,H)),this.renderable.values.dTransparentOutline.ref.value!==j&&(B=!0,n.ValueCell.update(this.renderable.values.dTransparentOutline,j))}n.ValueCell.updateIfChanged(this.renderable.values.uFar,x.far),n.ValueCell.updateIfChanged(this.renderable.values.uNear,x.near),n.ValueCell.updateIfChanged(this.renderable.values.uFogFar,x.fogFar),n.ValueCell.updateIfChanged(this.renderable.values.uFogNear,x.fogNear),n.ValueCell.update(this.renderable.values.uFogColor,y.Color.toVec3Normalized(this.renderable.values.uFogColor.ref.value,V)),n.ValueCell.updateIfChanged(this.renderable.values.uTransparentBackground,D),this.renderable.values.dOrthographic.ref.value!==w&&(B=!0,n.ValueCell.update(this.renderable.values.dOrthographic,w)),this.renderable.values.dOutlineEnable.ref.value!==O&&(B=!0,n.ValueCell.update(this.renderable.values.dOutlineEnable,O)),this.renderable.values.dShadowEnable.ref.value!==F&&(B=!0,n.ValueCell.update(this.renderable.values.dShadowEnable,F)),this.renderable.values.dOcclusionEnable.ref.value!==L&&(B=!0,n.ValueCell.update(this.renderable.values.dOcclusionEnable,L));const U=M.opacityAverage<1;this.renderable.values.dBlendTransparency.ref.value!==U&&(B=!0,n.ValueCell.update(this.renderable.values.dBlendTransparency,U)),B&&this.renderable.update(
6281);const{gl:q,state:N}=this.webgl;N.enable(q.SCISSOR_TEST),N.disable(q.BLEND),N.disable(q.DEPTH_TEST),N.depthMask(!1)}setOcclusionOffset(x,M){this.occlusionOffset[0]=x,this.occlusionOffset[1]=M,n.ValueCell.update(this.renderable.values.uOcclusionOffset,o.Vec2.set(this.renderable.values.uOcclusionOffset.ref.value,x,M))}setTransparentBackground(x){this.transparentBackground=x}render(x,M,D,V,R,E,I,B,w=!1){a.isTimingMode&&this.webgl.timer.mark("PostprocessingPass.render"),this.updateState(x,M,V,R,E,I,B),this.renderable.values.dBloomEnable.ref.value!==w&&(n.ValueCell.update(this.renderable.values.dBloomEnable,w),this.renderable.update());const O=this.background.isEnabled(E)||w&&!this.transparentBackground,{gl:F,state:L}=this.webgl,{x:U,y:q,width:N,height:k}=x.viewport;E.occlusion.name==="on"&&this.occlusionOffset[0]===0&&this.occlusionOffset[1]===0&&this.ssao.render(x),L.viewport(U,q,N,k),L.scissor(U,q,N,k),E.outline.name==="on"&&this.outline.render(),E.shadow.name==="on"&&this.shadow.render(),D?this.webgl.bindDrawingBuffer():this.target.bind(),this.background.update(x,E.background),this.background.clear(E.background,this.transparentBackground,R),this.background.render(E.background),O&&(L.enable(F.BLEND),L.blendFuncSeparate(F.ONE,F.ONE_MINUS_SRC_ALPHA,F.ONE,F.ONE_MINUS_SRC_ALPHA)),this.renderable.render(),a.isTimingMode&&this.webgl.timer.markEnd("PostprocessingPass.render")}}Xo.PostprocessingPass=S;class T{static isEnabled(x){return x.enabled&&(x.antialiasing.name!=="off"||x.sharpening.name!=="off")}constructor(x,M,D){this.target=x.createRenderTarget(M,D,!1),this.internalTarget=x.createRenderTarget(M,D,!1),this.fxaa=new _.FxaaPass(x,this.target.texture),this.smaa=new g.SmaaPass(x,this.target.texture),this.cas=new p.CasPass(x,this.target.texture)}getByteCount(){return this.target.getByteCount()+this.internalTarget.getByteCount()+this.smaa.getByteCount()}setSize(x,M){const D=this.target.texture.getWidth(),V=this.target.texture.getHeight();(x!==D||M!==V)&&(this.target.setSize(x,M),this.internalTarget.setSize(x,M),this.fxaa.setSize(x,M),this.smaa.supported&&this.smaa.setSize(x,M),this.cas.setSize(x,M))}_renderFxaa(x,M,D,V){V.antialiasing.name==="fxaa"&&(this.fxaa.update(M,V.antialiasing.params),this.fxaa.render(x.viewport,D))}_renderSmaa(x,M,D,V){V.antialiasing.name==="smaa"&&(this.smaa.update(M,V.antialiasing.params),this.smaa.render(x.viewport,D))}_renderAntialiasing(x,M,D,V){V.antialiasing.name==="fxaa"?this._renderFxaa(x,M,D,V):V.antialiasing.name==="smaa"&&this._renderSmaa(x,M,D,V)}_renderCas(x,M,D,V){V.sharpening.name==="on"&&(V.antialiasing.name!=="off"&&(M=this.internalTarget.texture),this.cas.update(M,V.sharpening.params),this.cas.render(x.viewport,D))}render(x,M,D,V){if(V.antialiasing.name==="off"&&V.sharpening.name==="off")return;if(V.antialiasing.name==="smaa"&&!this.smaa.supported){console.error('SMAA not supported, missing "HTMLImageElement"');return}const R=D===!0?void 0:D===!1?this.target:D;V.sharpening.name==="off"?this._renderAntialiasing(x,M,R,V):V.antialiasing.name==="off"?this._renderCas(x,M,R,V):(this._renderAntialiasing(x,M,this.internalTarget,V),this._renderCas(x,M,R,V))}}return Xo.AntialiasingPass=T,Xo}var PA={},tb={},C8;function WQ(){return C8||(C8=1,Object.defineProperty(tb,"__esModule",{value:!0}),tb.compose_frag=void 0,tb.compose_frag=`
6282precision highp float;
6283precision highp sampler2D;
6284
6285uniform sampler2D tColor;
6286uniform vec2 uTexSize;
6287uniform float uWeight;
6288
6289void main() {
6290    vec2 coords = gl_FragCoord.xy / uTexSize;
6291    gl_FragColor = texture2D(tColor, coords) * uWeight;
6292}
6293`),tb}var P8;function p2(){return P8||(P8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.MultiSampleHelper=e.JitterVectors=e.MultiSamplePass=e.MultiSampleParams=void 0;const t=Mr(),r=Yt(),n=et(),i=Ge(),c=Kt(),o=Zt(),s=Jt(),h=Ne(),f=ta(),y=Gr(),_=WQ(),g=Ct(),a={...t.QuadSchema,tColor:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,r.UniformSpec)("v2"),uWeight:(0,r.UniformSpec)("f")},d=(0,c.ShaderCode)("compose",y.quad_vert,_.compose_frag);function p(v,b){const P={...t.QuadValues,tColor:n.ValueCell.create(b),uTexSize:n.ValueCell.create(i.Vec2.create(b.getWidth(),b.getHeight())),uWeight:n.ValueCell.create(1)},C={...a},l=(0,o.createComputeRenderItem)(v,"triangles",d,C,P);return(0,s.createComputeRenderable)(l,P)}
6293e.MultiSampleParams={mode:h.ParamDefinition.Select("temporal",[["off","Off"],["on","On"],["temporal","Temporal"]]),sampleLevel:h.ParamDefinition.Numeric(2,{min:0,max:5,step:1},{description:"Take level^2 samples."}),reduceFlicker:h.ParamDefinition.Boolean(!0,{description:'Reduce flicker in "temporal" mode.'}),reuseOcclusion:h.ParamDefinition.Boolean(!0,{description:"Reuse occlusion data. It is faster but has some artefacts."})};class u{static isEnabled(b){return b.mode!=="off"}constructor(b,P){this.webgl=b,this.drawPass=P;const{colorBufferFloat:C,textureFloat:l,colorBufferHalfFloat:S,textureHalfFloat:T}=b.extensions,A=P.colorTarget.getWidth(),x=P.colorTarget.getHeight();this.colorTarget=b.createRenderTarget(A,x,!1);const M=S&&T?"fp16":C&&l?"float32":"uint8";this.composeTarget=b.createRenderTarget(A,x,!1,M),this.holdTarget=b.createRenderTarget(A,x,!1),this.compose=p(b,P.colorTarget.texture)}getByteCount(){return this.colorTarget.getByteCount()+this.composeTarget.getByteCount()+this.holdTarget.getByteCount()}syncSize(){const b=this.drawPass.colorTarget.getWidth(),P=this.drawPass.colorTarget.getHeight(),[C,l]=this.compose.values.uTexSize.ref.value;(b!==C||P!==l)&&(this.colorTarget.setSize(b,P),this.composeTarget.setSize(b,P),this.holdTarget.setSize(b,P),n.ValueCell.update(this.compose.values.uTexSize,i.Vec2.set(this.compose.values.uTexSize.ref.value,b,P)))}render(b,P,C,l,S){return C.multiSample.mode==="temporal"&&!S?this.renderTemporalMultiSample(b,P,C,l):(this.renderMultiSample(P,l,C),-2)}bindOutputTarget(b){b?this.webgl.bindDrawingBuffer():this.colorTarget.bind()}renderMultiSample(b,P,C){const{camera:l}=b,{compose:S,composeTarget:T,drawPass:A,webgl:x}=this,{gl:M,state:D}=x;g.isTimingMode&&x.timer.mark("MultiSamplePass.renderMultiSample");const V=e.JitterVectors[Math.max(0,Math.min(C.multiSample.sampleLevel,5))],{x:R,y:E,width:I,height:B}=l.viewport,w=1/V.length,O=1/32;l.viewOffset.enabled=!0,n.ValueCell.update(S.values.tColor,A.getColorTarget(C.postprocessing).texture),S.update();for(let F=0;F<V.length;++F){const L=V[F];f.Camera.setViewOffset(l.viewOffset,I,B,L[0],L[1],I,B),l.update();const U=-.5+(F+.5)/V.length,q=w+O*U;n.ValueCell.update(S.values.uWeight,q),F===0||!C.multiSample.reuseOcclusion?A.postprocessing.setOcclusionOffset(0,0):A.postprocessing.setOcclusionOffset(L[0]/I,L[1]/B),A.render(b,C,!1),T.bind(),D.enable(M.BLEND),D.blendEquationSeparate(M.FUNC_ADD,M.FUNC_ADD),D.blendFuncSeparate(M.ONE,M.ONE,M.ONE,M.ONE),D.disable(M.DEPTH_TEST),D.depthMask(!1),D.viewport(R,E,I,B),D.scissor(R,E,I,B),F===0&&(D.clearColor(0,0,0,0),M.clear(M.COLOR_BUFFER_BIT)),S.render()}A.postprocessing.setOcclusionOffset(0,0),n.ValueCell.update(S.values.uWeight,1),n.ValueCell.update(S.values.tColor,T.texture),S.update(),this.bindOutputTarget(P),D.viewport(R,E,I,B),D.scissor(R,E,I,B),D.disable(M.BLEND),S.render(),l.viewOffset.enabled=!1,l.update(),g.isTimingMode&&x.timer.markEnd("MultiSamplePass.renderMultiSample")}renderTemporalMultiSample(b,P,C,l){const{camera:S}=P,{compose:T,composeTarget:A,holdTarget:x,drawPass:M,webgl:D}=this,{gl:V,state:R}=D;g.isTimingMode&&D.timer.mark("MultiSamplePass.renderTemporalMultiSample");const E=e.JitterVectors[Math.max(0,Math.min(C.multiSample.sampleLevel,5))];if(b===-2||b>=E.length)return-2;const{x:I,y:B,width:w,height:O}=S.viewport,F=1/E.length;if(b===-1)M.render(P,C,!1),n.ValueCell.update(T.values.uWeight,1),n.ValueCell.update(T.values.tColor,M.getColorTarget(C.postprocessing).texture),T.update(),x.bind(),R.disable(V.BLEND),R.disable(V.DEPTH_TEST),R.depthMask(!1),R.viewport(I,B,w,O),R.scissor(I,B,w,O),T.render(),b+=1;else{S.viewOffset.enabled=!0,n.ValueCell.update(T.values.tColor,M.getColorTarget(C.postprocessing).texture),n.ValueCell.update(T.values.uWeight,F),T.update();const U=Math.pow(2,Math.max(0,C.multiSample.sampleLevel-2));for(let q=0;q<U;++q){const N=E[b];if(f.Camera.setViewOffset(S.viewOffset,w,O,N[0],N[1],w,O),S.update(),b===0||!C.multiSample.reuseOcclusion?M.postprocessing.setOcclusionOffset(0,0):M.postprocessing.setOcclusionOffset(N[0]/w,N[1]/O),M.render(P,C,!1),A.bind(),R.enable(V.BLEND),R.blendEquationSeparate(V.FUNC_ADD,V.FUNC_ADD),R.blendFuncSeparate(V.ONE,V.ONE,V.ONE,V.ONE),R.disable(V.DEPTH_TEST),R.depthMask(!1),R.viewport(I,B,w,O),R.scissor(I,B,w,O),b===0&&(R.clearColor(0,0,0,0),V.clear(V.COLOR_BUFFER_BIT)),T.render(),b+=1,b>=E.length)break}}M.postprocessing.setOcclusionOffset(0,0),this.bindOutputTarget(l),R.viewport(I,B,w,O),R.scissor(I,B,w,O);const L=b*F;return L>0&&(n.ValueCell.update(T.values.uWeight,1),n.ValueCell.update(T.values.tColor,A.texture),T.update(
6293),R.disable(V.BLEND),T.render()),L<1&&(n.ValueCell.update(T.values.uWeight,1-L),n.ValueCell.update(T.values.tColor,x.texture),T.update(),L===0?R.disable(V.BLEND):R.enable(V.BLEND),T.render()),S.viewOffset.enabled=!1,S.update(),g.isTimingMode&&D.timer.markEnd("MultiSamplePass.renderTemporalMultiSample"),b>=E.length?-2:b}}e.MultiSamplePass=u,e.JitterVectors=[[[0,0]],[[0,0],[-4,-4]],[[0,0],[6,-2],[-6,2],[2,6]],[[0,0],[-1,3],[5,1],[-3,-5],[-5,5],[-7,-1],[3,7],[7,-7]],[[0,0],[-1,-3],[-3,2],[4,-1],[-5,-2],[2,5],[5,3],[3,-5],[-2,6],[0,-7],[-4,-6],[-6,4],[-8,0],[7,-4],[6,7],[-7,-8]],[[0,0],[-7,-5],[-3,-5],[-5,-4],[-1,-4],[-2,-2],[-6,-1],[-4,0],[-7,1],[-1,2],[-6,3],[-3,3],[-7,6],[-3,6],[-5,7],[-1,7],[5,-7],[1,-6],[6,-5],[4,-4],[2,-3],[7,-2],[1,-1],[4,-1],[2,1],[6,2],[0,4],[4,4],[2,5],[7,5],[5,6],[3,7]]],e.JitterVectors.forEach(v=>{v.forEach(b=>{b[0]*=.0625,b[1]*=.0625})});class m{update(b,P){return b&&(this.sampleIndex=-1),P.mode==="temporal"?this.sampleIndex!==-2:!1}render(b,P,C,l){return this.sampleIndex=this.multiSamplePass.render(this.sampleIndex,b,P,C,!!l),this.sampleIndex<0}constructor(b){this.multiSamplePass=b,this.sampleIndex=-2}}e.MultiSampleHelper=m})(PA)),PA}var Ui={},T8;function h2(){if(T8)return Ui;T8=1,Object.defineProperty(Ui,"__esModule",{value:!0}),Ui.PickBuffers=Ui.AsyncPickStatus=Ui.PickPass=Ui.DefaultPickOptions=void 0,Ui.checkAsyncPickingSupport=f;const e=_n(),t=i2(),r=on(),n=Ct(),i=ci(),c=nc(),o=Kn();Ui.DefaultPickOptions={pickPadding:1,maxAsyncReadLag:5};class s{constructor(a,d,p,u){this.webgl=a,this.width=d,this.height=p,this.pickScale=u;const m=u/a.pixelRatio;this.pickWidth=Math.ceil(d*m),this.pickHeight=Math.ceil(p*m);const{resources:v,extensions:{drawBuffers:b},gl:P}=a;b?(this.objectPickTexture=v.texture("image-uint8","rgba","ubyte","nearest"),this.objectPickTexture.define(this.pickWidth,this.pickHeight),this.instancePickTexture=v.texture("image-uint8","rgba","ubyte","nearest"),this.instancePickTexture.define(this.pickWidth,this.pickHeight),this.groupPickTexture=v.texture("image-uint8","rgba","ubyte","nearest"),this.groupPickTexture.define(this.pickWidth,this.pickHeight),this.depthPickTexture=v.texture("image-uint8","rgba","ubyte","nearest"),this.depthPickTexture.define(this.pickWidth,this.pickHeight),this.framebuffer=v.framebuffer(),this.objectPickFramebuffer=v.framebuffer(),this.instancePickFramebuffer=v.framebuffer(),this.groupPickFramebuffer=v.framebuffer(),this.depthPickFramebuffer=v.framebuffer(),this.framebuffer.bind(),b.drawBuffers([b.COLOR_ATTACHMENT0,b.COLOR_ATTACHMENT1,b.COLOR_ATTACHMENT2,b.COLOR_ATTACHMENT3]),this.objectPickTexture.attachFramebuffer(this.framebuffer,"color0"),this.instancePickTexture.attachFramebuffer(this.framebuffer,"color1"),this.groupPickTexture.attachFramebuffer(this.framebuffer,"color2"),this.depthPickTexture.attachFramebuffer(this.framebuffer,"color3"),this.depthRenderbuffer=(0,r.isWebGL2)(P)?v.renderbuffer("depth32f","depth",this.pickWidth,this.pickHeight):v.renderbuffer("depth16","depth",this.pickWidth,this.pickHeight),this.depthRenderbuffer.attachFramebuffer(this.framebuffer),this.objectPickTexture.attachFramebuffer(this.objectPickFramebuffer,"color0"),this.instancePickTexture.attachFramebuffer(this.instancePickFramebuffer,"color0"),this.groupPickTexture.attachFramebuffer(this.groupPickFramebuffer,"color0"),this.depthPickTexture.attachFramebuffer(this.depthPickFramebuffer,"color0")):(this.objectPickTarget=a.createRenderTarget(this.pickWidth,this.pickHeight),this.instancePickTarget=a.createRenderTarget(this.pickWidth,this.pickHeight),this.groupPickTarget=a.createRenderTarget(this.pickWidth,this.pickHeight),this.depthPickTarget=a.createRenderTarget(this.pickWidth,this.pickHeight))}getByteCount(){return this.webgl.extensions.drawBuffers?this.objectPickTexture.getByteCount()+this.instancePickTexture.getByteCount()+this.groupPickTexture.getByteCount()+this.depthPickTexture.getByteCount()+this.depthRenderbuffer.getByteCount():this.objectPickTarget.getByteCount()+this.instancePickTarget.getByteCount()+this.groupPickTarget.getByteCount()+this.depthPickTarget.getByteCount()}dispose(){this.webgl.extensions.drawBuffers?(this.framebuffer.destroy(),this.objectPickTexture.destroy(),this.instancePickTexture.destroy(),this.groupPickTexture.destroy(),this.depthPickTexture.destroy(),this.objectPickFramebuffer.destroy(),this.instancePickFramebuffer.destroy(),this.groupPickFramebuffer.destroy(),this.depthPickFramebuffer.destroy(),this.depthRenderbuffer.destroy()):(this.objectPickTarget.destroy(),this.instancePickTarget.destroy(),this.groupPickTarget.destroy(),this.depthPickTarget.destroy())}get pickRatio(){return this.pickScale/this.webgl.pixelRatio}setPickScale(a){this.pickScale=a,this.setSize(this.width,this.height)}bindObject(){this.webgl.extensions.drawBuffers?this.objectPickFramebuffer.bind():this.objectPickTarget.bind()}bindInstance(){this.webgl.extensions.drawBuffers?this.instancePickFramebuffer.bind():this.instancePickTarget.bind()}bindGroup(){this.webgl.extensions.drawBuffers?this.groupPickFramebuffer.bind():this.groupPickTarget.bind()}bindDepth(){this.webgl.extensions.drawBuffers?this.depthPickFramebuffer.bind():this.depthPickTarget.bind()}get drawingBufferHeight(){return this.height}setSize(a,d){this.width=a,this.height=d;const p=this.pickScale/this.webgl.pixelRatio,u=Math.ceil(this.width*p),m=
6293Math.ceil(this.height*p);(u!==this.pickWidth||m!==this.pickHeight)&&(this.pickWidth=u,this.pickHeight=m,this.webgl.extensions.drawBuffers?(this.objectPickTexture.define(this.pickWidth,this.pickHeight),this.instancePickTexture.define(this.pickWidth,this.pickHeight),this.groupPickTexture.define(this.pickWidth,this.pickHeight),this.depthPickTexture.define(this.pickWidth,this.pickHeight),this.depthRenderbuffer.setSize(this.pickWidth,this.pickHeight)):(this.objectPickTarget.setSize(this.pickWidth,this.pickHeight),this.instancePickTarget.setSize(this.pickWidth,this.pickHeight),this.groupPickTarget.setSize(this.pickWidth,this.pickHeight),this.depthPickTarget.setSize(this.pickWidth,this.pickHeight)))}reset(){const{drawBuffers:a}=this.webgl.extensions;a&&(this.framebuffer.bind(),a.drawBuffers([a.COLOR_ATTACHMENT0,a.COLOR_ATTACHMENT1,a.COLOR_ATTACHMENT2,a.COLOR_ATTACHMENT3]),this.objectPickTexture.attachFramebuffer(this.framebuffer,"color0"),this.instancePickTexture.attachFramebuffer(this.framebuffer,"color1"),this.groupPickTexture.attachFramebuffer(this.framebuffer,"color2"),this.depthPickTexture.attachFramebuffer(this.framebuffer,"color3"),this.depthRenderbuffer.attachFramebuffer(this.framebuffer),this.objectPickTexture.attachFramebuffer(this.objectPickFramebuffer,"color0"),this.instancePickTexture.attachFramebuffer(this.instancePickFramebuffer,"color0"),this.groupPickTexture.attachFramebuffer(this.groupPickFramebuffer,"color0"),this.depthPickTexture.attachFramebuffer(this.depthPickFramebuffer,"color0"))}renderVariant(a,d,p,u,m,v){a.clear(!1),a.update(d,p),a.renderPick(p.primitives,d,m,v),u.handle.isEnabled&&a.renderPick(u.handle.scene,d,m,v),u.camera.isEnabled&&(u.camera.update(d),a.update(u.camera.camera,u.camera.scene),a.renderPick(u.camera.scene,u.camera.camera,m,v))}render(a,d,p,u){this.webgl.extensions.drawBuffers?(this.framebuffer.bind(),this.renderVariant(a,d,p,u,"pick",t.PickType.None)):(this.objectPickTarget.bind(),this.renderVariant(a,d,p,u,"pick",t.PickType.Object),this.instancePickTarget.bind(),this.renderVariant(a,d,p,u,"pick",t.PickType.Instance),this.groupPickTarget.bind(),this.renderVariant(a,d,p,u,"pick",t.PickType.Group),this.depthPickTarget.bind(),this.renderVariant(a,d,p,u,"depth",t.PickType.None))}}Ui.PickPass=s;let h=!1;function f(g){return g.isWebGL2?!0:(n.isDebugMode&&!h&&(console.log("WebGL2 required for async picking. Falling back to synchronous picking."),h=!0),!1)}var y;(function(g){g[g.Pending=0]="Pending",g[g.Resolved=1]="Resolved",g[g.Failed=2]="Failed"})(y||(Ui.AsyncPickStatus=y={}));class _{setup(){const a=this.viewport.width*this.viewport.height*4;(!this.object||this.object.length!==a)&&(this.object=new Uint8Array(a),this.instance=new Uint8Array(a),this.group=new Uint8Array(a),this.depth=new Uint8Array(a))}setViewport(a,d,p,u){o.Viewport.set(this.viewport,a,d,p,u),this.setup()}read(){n.isTimingMode&&this.webgl.timer.mark("PickBuffers.read");const{x:a,y:d,width:p,height:u}=this.viewport;this.pickPass.bindObject(),this.webgl.readPixels(a,d,p,u,this.object),this.pickPass.bindInstance(),this.webgl.readPixels(a,d,p,u,this.instance),this.pickPass.bindGroup(),this.webgl.readPixels(a,d,p,u,this.group),this.pickPass.bindDepth(),this.webgl.readPixels(a,d,p,u,this.depth),this.ready=!0,n.isTimingMode&&this.webgl.timer.markEnd("PickBuffers.read")}asyncRead(){const{gl:a}=this.webgl;if(!(0,r.isWebGL2)(a))return;n.isTimingMode&&this.webgl.timer.mark("PickBuffers.asyncRead"),this.fenceSync!==null&&a.deleteSync(this.fenceSync);const{x:d,y:p,width:u,height:m}=this.viewport;this.pickPass.bindObject(),this.objectBuffer.read(d,p,u,m),this.pickPass.bindInstance(),this.instanceBuffer.read(d,p,u,m),this.pickPass.bindGroup(),this.groupBuffer.read(d,p,u,m),this.pickPass.bindDepth(),this.depthBuffer.read(d,p,u,m),this.fenceTimestamp=(0,i.now)(),this.fenceSync=a.fenceSync(a.SYNC_GPU_COMMANDS_COMPLETE,0),a.flush(),this.ready=!1,n.isTimingMode&&this.webgl.timer.markEnd("PickBuffers.asyncRead")}check(){if(this.ready)return y.Resolved;if(this.fenceSync===null)return y.Failed;const{gl:a}=this.webgl;if(!(0,r.isWebGL2)(a))return y.Failed;const d=a.clientWaitSync(this.fenceSync,0,0);return d===a.WAIT_FAILED||this.lag>=this.maxAsyncReadLag?d!==a.WAIT_FAILED&&(0,i.now)()-this.fenceTimestamp<1e3/60?(this.lag+=1,y.Pending):(a.deleteSync(this.fenceSync),this.fenceSync=null,this.lag=0,this.ready=!1,y.Failed):d===a.TIMEOUT_EXPIRED?(this.lag+=1,y.Pending):(this.objectBuffer.getSubData(this.object),this.instanceBuffer.getSubData(this.instance),this.groupBuffer.getSubData(this.group),this.depthBuffer.getSubData(this.depth),a.deleteSync(this.fenceSync),this.fenceSync=null,this.lag=0,this.ready=!0,y.Resolved)}getIdx(a,d){return(d*this.viewport.width+a)*4}getDepth(a,d){if(!this.ready)return-1;const p=this.getIdx(a,d),u=this.depth;return(0,c.unpackRGBAToDepth)(u[p],u[p+1],u[p+2],u[p+3])}getId(a,d,p){if(!this.ready)return-1;const u=this.getIdx(a,d);return(0,c.unpackRGBToInt)(p[u],p[u+1],p[u+2])}getObjectId(a,d){return this.getId(a,d,this.object)}getInstanceId(a,d){return this.getId(a,d,this.instance)}getGroupId(a,d){return this.getId(a,d,this.group)}getPickingId(a,d){const p=this.getObjectId(a,d);if(p===-1||p===e.PickingId.Null)return;const u=this.getInstanceId(a,d);if(u===-1||u===e.PickingId.Null)return;const m=this.getGroupId(a,d);if(m!==-1)return{objectId:p,instanceId:u,groupId:m}}reset(){this.fenceSync=null,this.ready=!1,this.lag=0,this.fenceTimestamp=0}dispose(){const{gl:a}=this.webgl;(0,r.isWebGL2)(a)&&(this.objectBuffer.destroy(),this.instanceBuffer.destroy(),this.groupBuffer.destroy(),this.depthBuffer.destroy(),this.fenceSync!==null&&(a.deleteSync(this.fenceSync),this.fenceSync=null))}constructor(a,d,p=5){this.webgl=a,this.pickPass=d,this.maxAsyncReadLag=p,this.viewport=o.Viewport.create(0,0,0,0),this.fenceSync=null,this.fenceTimestamp=0,this.ready=!1,this.lag=0,a.isWebG
6293L2&&(this.objectBuffer=a.resources.pixelPack("rgba","ubyte"),this.instanceBuffer=a.resources.pixelPack("rgba","ubyte"),this.groupBuffer=a.resources.pixelPack("rgba","ubyte"),this.depthBuffer=a.resources.pixelPack("rgba","ubyte")),this.setup()}}return Ui.PickBuffers=_,Ui}var rb={},TA={},x8;function Lw(){return x8||(x8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StereoCamera=e.DefaultStereoCameraProps=e.StereoCameraParams=void 0;const t=Ge(),r=Ne(),n=ta(),i=Kn();e.StereoCameraParams={eyeSeparation:r.ParamDefinition.Numeric(.062,{min:.02,max:.1,step:.001},{description:"Distance between left and right camera."}),focus:r.ParamDefinition.Numeric(10,{min:1,max:20,step:.1},{description:"Apparent object distance."})},e.DefaultStereoCameraProps=r.ParamDefinition.getDefaultValues(e.StereoCameraParams);class c{get viewport(){return this.parent.viewport}get viewOffset(){return this.parent.viewOffset}constructor(d,p={}){this.parent=d,this.left=new o,this.right=new o,this.props={...e.DefaultStereoCameraProps,...p}}setProps(d){Object.assign(this.props,d)}update(d){this.parent.update(),d?_(this.parent,this.left,this.right,d):y(this.parent,this.props,this.left,this.right)}}e.StereoCamera=c,(function(a){function d(p){return"left"in p&&"right"in p}a.is=d})(c||(e.StereoCamera=c={}));class o{constructor(){this.viewport=i.Viewport.create(0,0,0,0),this.view=(0,t.Mat4)(),this.projection=(0,t.Mat4)(),this.projectionView=(0,t.Mat4)(),this.inverseProjectionView=(0,t.Mat4)(),this.headRotation=(0,t.Mat4)(),this.viewEye=(0,t.Mat4)(),this.isAsymmetricProjection=!0,this.state=n.Camera.createDefaultSnapshot(),this.viewOffset=n.Camera.ViewOffset(),this.far=0,this.near=0,this.fogFar=0,this.fogNear=0,this.forceFull=!1,this.scale=0,this.minTargetDistance=0,this.disabled=!1}getRay(d,p,u){return t.Mat4.getTranslation(d.origin,t.Mat4.invert((0,t.Mat4)(),this.view)),t.Vec3.set(d.direction,p,u,.5),(0,i.cameraUnproject)(d.direction,d.direction,this.viewport,this.inverseProjectionView),t.Vec3.normalize(d.direction,t.Vec3.sub(d.direction,d.direction,d.origin)),d}}const s=t.Mat4.identity(),h=t.Mat4.identity();function f(a,d){i.Viewport.copy(d.viewport,a.viewport),t.Mat4.copy(d.view,a.view),t.Mat4.copy(d.projection,a.projection),t.Mat4.copy(d.headRotation,a.headRotation),n.Camera.copySnapshot(d.state,a.state),n.Camera.copyViewOffset(d.viewOffset,a.viewOffset),d.far=a.far,d.near=a.near,d.fogFar=a.fogFar,d.fogNear=a.fogNear,d.forceFull=a.forceFull,d.scale=a.scale,d.minTargetDistance=a.minTargetDistance}function y(a,d,p,u){f(a,p),f(a,u);const m=Math.floor(a.viewport.width/2),v=m/a.viewport.height;p.viewport.width=m,u.viewport.x+=m,u.viewport.width-=m;const b=d.eyeSeparation/2,P=b*a.near/d.focus,C=a.near*Math.tan(a.state.fov*.5);let l,S;s[12]=-b,h[12]=b,l=-C*v+P,S=C*v+P,p.projection[0]=2*a.near/(S-l),p.projection[8]=(S+l)/(S-l),t.Mat4.mul(p.view,p.view,s),t.Mat4.mul(p.projectionView,p.projection,p.view),t.Mat4.invert(p.inverseProjectionView,p.projectionView),l=-C*v-P,S=C*v-P,u.projection[0]=2*a.near/(S-l),u.projection[8]=(S+l)/(S-l),t.Mat4.mul(u.view,u.view,h),t.Mat4.mul(u.projectionView,u.projection,u.view),t.Mat4.invert(u.inverseProjectionView,u.projectionView),p.disabled=!1,u.disabled=!1}function _(a,d,p,u){g(a,d,u.pose.views[0],u.layer),u.pose.views.length===1?p.disabled=!0:g(a,p,u.pose.views[1],u.layer)}function g(a,d,p,u){f(a,d);const m=u.getViewport(p);i.Viewport.set(d.viewport,m.x,m.y,m.width,m.height),t.Mat4.fromArray(d.projection,p.projectionMatrix,0),t.Mat4.fromArray(d.view,p.transform.inverse.matrix,0),t.Mat4.mul(d.projectionView,d.projection,d.view),t.Mat4.invert(d.inverseProjectionView,d.projectionView),d.disabled=!1}})(TA)),TA}var A8;function Woe(){if(A8)return rb;A8=1,Object.defineProperty(rb,"__esModule",{value:!0}),rb.PickHelper=void 0;const e=wt(),t=er(),r=Ct(),n=Lw(),i=Kn(),c=h2();class o{setViewport(h,f,y,_){i.Viewport.set(this.viewport,h,f,y,_),this.update()}setPickPadding(h){this.pickPadding!==h&&(this.pickPadding=h,this.update())}update(){const{x:h,y:f,width:y,height:_}=this.viewport;this.pickRatio=this.pickPass.pickRatio,this.pickX=Math.ceil(h*this.pickRatio),this.pickY=Math.ceil(f*this.pickRatio);const g=Math.floor(y*this.pickRatio),a=Math.floor(_*this.pickRatio);(g!==this.pickWidth||a!==this.pickHeight)&&(this.pickWidth=g,this.pickHeight=a,this.halfPickWidth=Math.floor(this.pickWidth/2),this.buffers.setVie
6293wport(this.pickX,this.pickY,this.pickWidth,this.pickHeight)),this.spiral=(0,t.spiral2d)(Math.ceil(this.pickRatio*this.pickPadding)),this.dirty=!0}render(h){r.isTimingMode&&this.webgl.timer.mark("PickHelper.render",{captureStats:!0});const{pickX:f,pickY:y,pickWidth:_,pickHeight:g,halfPickWidth:a}=this,{renderer:d,scene:p,helper:u}=this;d.setTransparentBackground(!1),d.setDrawingBufferSize(_,g),d.setPixelRatio(this.pickRatio),n.StereoCamera.is(h)?(d.setViewport(f,y,a,g),this.pickPass.render(d,h.left,p,u),d.setViewport(f+a,y,_-a,g),this.pickPass.render(d,h.right,p,u)):(d.setViewport(f,y,_,g),this.pickPass.render(d,h,p,u)),this.dirty=!1,r.isTimingMode&&this.webgl.timer.markEnd("PickHelper.render")}identifyInternal(h,f,y){if(this.webgl.isContextLost)return;const{webgl:_,pickRatio:g}=this;if(_.isContextLost)return;h*=_.pixelRatio,f*=_.pixelRatio,f=this.pickPass.drawingBufferHeight-f;const{viewport:a}=this;if(h<a.x||f<a.y||h>a.x+a.width||f>a.y+a.height)return;const d=h-a.x,p=f-a.y,u=Math.floor(d*g),m=Math.floor(p*g),v=this.buffers.getPickingId(u,m);if(v===void 0)return;const b=this.buffers.getDepth(u,m),P=e.Vec3.create(h,f,b);if(n.StereoCamera.is(y)){const C=Math.floor(a.width/2);h>a.x+C?(P[0]=a.x+(d-C)*2,(0,i.cameraUnproject)(P,P,a,y.right.inverseProjectionView)):(P[0]=a.x+d*2,(0,i.cameraUnproject)(P,P,a,y.left.inverseProjectionView))}else(0,i.cameraUnproject)(P,P,a,y.inverseProjectionView);return{id:v,position:P}}prepare(){this.pickRatio!==this.pickPass.pickRatio&&this.update()}getPickData(h,f,y){for(const _ of this.spiral){const g=this.identifyInternal(h+_[0],f+_[1],y);if(g)return g}}identify(h,f,y){return this.prepare(),this.dirty&&(r.isTimingMode&&this.webgl.timer.mark("PickHelper.identify"),this.webgl.resources.finalizePrograms(["pick"],!0),this.render(y),this.buffers.read(),r.isTimingMode&&this.webgl.timer.markEnd("PickHelper.identify")),this.getPickData(h,f,y)}asyncIdentify(h,f,y){return this.prepare(),this.dirty&&(r.isTimingMode&&this.webgl.timer.mark("PickHelper.asyncIdentify"),this.render(y),this.buffers.asyncRead(),r.isTimingMode&&this.webgl.timer.markEnd("PickHelper.asyncIdentify")),{tryGet:()=>{const _=this.buffers.check();if(_===c.AsyncPickStatus.Resolved)return this.getPickData(h,f,y);if(_===c.AsyncPickStatus.Pending)return"pending";_===c.AsyncPickStatus.Failed&&(this.dirty=!0)}}}reset(){this.buffers.reset(),this.dirty=!0}dispose(){this.buffers.dispose()}constructor(h,f,y,_,g,a,d){this.webgl=h,this.renderer=f,this.scene=y,this.helper=_,this.pickPass=g,this.dirty=!0,this.buffers=new c.PickBuffers(this.webgl,this.pickPass),this.viewport=(0,i.Viewport)(),this.setViewport(a.x,a.y,a.width,a.height),this.pickPadding=d.pickPadding,(0,c.checkAsyncPickingSupport)(h)||(this.asyncIdentify=(p,u,m)=>({tryGet:()=>this.identify(p,u,m)}))}}return rb.PickHelper=o,rb}var xA={},nb={},ib={},ab={},M8;function $oe(){return M8||(M8=1,Object.defineProperty(ab,"__esModule",{value:!0}),ab.evaluateWboit_frag=void 0,ab.evaluateWboit_frag=`
6294precision highp float;
6295
6296uniform sampler2D tWboitA;
6297uniform sampler2D tWboitB;
6298uniform vec2 uTexSize;
6299
6300void main() {
6301    vec2 coords = gl_FragCoord.xy / uTexSize;
6302
6303    vec4 accum = texture2D(tWboitA, coords);
6304    float r = 1.0 - accum.a;
6305
6306    accum.a = texture2D(tWboitB, coords).r;
6307    // divisor needs to allow very small values for nice fading
6308    gl_FragColor = vec4(accum.rgb / clamp(accum.a, 0.00000001, 50000.0), r);
6309}
6310`),ab}var D8;function Xoe(){if(D8)return ib;D8=1,Object.defineProperty(ib,"__esModule",{value:!0}),ib.WboitPass=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=et(),o=Gr(),s=$oe(),h=Ge(),f=Ct(),y=on(),_={...e.QuadSchema,tWboitA:(0,r.TextureSpec)("texture","rgba","float","nearest"),tWboitB:(0,r.TextureSpec)("texture","rgba","float","nearest"),uTexSize:(0,r.UniformSpec)("v2")},g=(0,n.ShaderCode)("evaluate-wboit",o.quad_vert,s.evaluateWboit_frag);function a(p,u,m){const v={...e.QuadValues,tWboitA:c.ValueCell.create(u),tWboitB:c.ValueCell.create(m),uTexSize:c.ValueCell.create(h.Vec2.create(u.getWidth(),u.getHeight()))},b={..._},P=(0,i.createComputeRenderItem)(p,"triangles",g,b,v);return(0,t.createComputeRenderable)(P,v)}class d{get supported(){return this._supported}getByteCount(){return this._supported?this.textureA.getByteCount()+this.textureB.getByteCount()+this.depthRenderbuffer.getByteCount():0}bind(){const{state:u,gl:m}=this.webgl;this.framebuffer.bind(),u.clearColor(0,0,0,1),m.clear(m.COLOR_BUFFER_BIT),u.disable(m.DEPTH_TEST),u.blendFuncSeparate(m.ONE,m.ONE,m.ZERO,m.ONE_MINUS_SRC_ALPHA),u.enable(m.BLEND)}render(){f.isTimingMode&&this.webgl.timer.mark("WboitPass.render");const{state:u,gl:m}=this.webgl;u.blendFuncSeparate(m.SRC_ALPHA,m.ONE_MINUS_SRC_ALPHA,m.ONE,m.ONE_MINUS_SRC_ALPHA),u.enable(m.BLEND),this.renderable.update(
6310),this.renderable.render(),f.isTimingMode&&this.webgl.timer.markEnd("WboitPass.render")}setSize(u,m){const[v,b]=this.renderable.values.uTexSize.ref.value;(u!==v||m!==b)&&(this.textureA.define(u,m),this.textureB.define(u,m),this.depthRenderbuffer.setSize(u,m),c.ValueCell.update(this.renderable.values.uTexSize,h.Vec2.set(this.renderable.values.uTexSize.ref.value,u,m)))}reset(){this._supported&&this._init()}_init(){const{extensions:{drawBuffers:u}}=this.webgl;this.framebuffer.bind(),u.drawBuffers([u.COLOR_ATTACHMENT0,u.COLOR_ATTACHMENT1]),this.textureA.attachFramebuffer(this.framebuffer,"color0"),this.textureB.attachFramebuffer(this.framebuffer,"color1"),this.depthRenderbuffer.attachFramebuffer(this.framebuffer)}static isSupported(u){const{extensions:{drawBuffers:m,textureFloat:v,colorBufferFloat:b,depthTexture:P}}=u;if(!v||!b||!P||!m){if(f.isDebugMode){const C=[];v||C.push("textureFloat"),b||C.push("colorBufferFloat"),P||C.push("depthTexture"),m||C.push("drawBuffers"),console.log(`Missing "${C.join('", "')}" extensions required for "wboit"`)}return!1}else return!0}constructor(u,m,v){if(this.webgl=u,this._supported=!1,!d.isSupported(u))return;const{resources:b,gl:P}=u;this.textureA=b.texture("image-float32","rgba","float","nearest"),this.textureA.define(m,v),this.textureB=b.texture("image-float32","rgba","float","nearest"),this.textureB.define(m,v),this.depthRenderbuffer=(0,y.isWebGL2)(P)?b.renderbuffer("depth32f","depth",m,v):b.renderbuffer("depth16","depth",m,v),this.renderable=a(u,this.textureA,this.textureB),this.framebuffer=b.framebuffer(),this._supported=!0,this._init()}}return ib.WboitPass=d,ib}var ob={},sb={},I8;function Koe(){return I8||(I8=1,Object.defineProperty(sb,"__esModule",{value:!0}),sb.evaluateDpoit_frag=void 0,sb.evaluateDpoit_frag=`
6311precision highp float;
6312
6313uniform sampler2D tDpoitFrontColor;
6314uniform vec2 uTexSize;
6315
6316void main() {
6317    vec2 coords = gl_FragCoord.xy / uTexSize;
6318    gl_FragColor = texture2D(tDpoitFrontColor, coords);
6319}
6320`),sb}var cb={},w8;function Yoe(){return w8||(w8=1,Object.defineProperty(cb,"__esModule",{value:!0}),cb.blendBackDpoit_frag=void 0,cb.blendBackDpoit_frag=`
6321    precision highp float;
6322
6323    uniform sampler2D tDpoitBackColor;
6324    uniform vec2 uTexSize;
6325
6326    void main() {
6327        vec2 coords = gl_FragCoord.xy / uTexSize;
6328        gl_FragColor = texture2D(tDpoitBackColor, coords);
6329        if (gl_FragColor.a == 0.0) {
6330            discard;
6331        }
6332    }
6333`),cb}var V8;function Qoe(){if(V8)return ob;V8=1,Object.defineProperty(ob,"__esModule",{value:!0}),ob.DpoitPass=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=et(),o=Gr(),s=Koe(),h=Yoe(),f=Ge(),y=Ct(),_=on(),g={...e.QuadSchema,tDpoitBackColor:(0,r.TextureSpec)("texture","rgba","float","nearest"),uTexSize:(0,r.UniformSpec)("v2")},a=(0,n.ShaderCode)("blend-back-dpoit",o.quad_vert,h.blendBackDpoit_frag);function d(b,P){const C={...e.QuadValues,tDpoitBackColor:c.ValueCell.create(P),uTexSize:c.ValueCell.create(f.Vec2.create(P.getWidth(),P.getHeight()))},l={...g},S=(0,i.createComputeRenderItem)(b,"triangles",a,l,C);return(0,t.createComputeRenderable)(S,C)}const p={...e.QuadSchema,tDpoitFrontColor:(0,r.TextureSpec)("texture","rgba","float","nearest"),uTexSize:(0,r.UniformSpec)("v2")},u=(0,n.ShaderCode)("evaluate-dpoit",o.quad_vert,s.evaluateDpoit_frag);function m(b,P){const C={...e.QuadValues,tDpoitFrontColor:c.ValueCell.create(P),uTexSize:c.ValueCell.create(f.Vec2.create(P.getWidth(),P.getHeight()))},l={...p},S=(0,i.createComputeRenderItem)(b,"triangles",u,l,C);return(0,t.createComputeRenderable)(S,C)}class v{get supported(){return this._supported}getByteCount(){return this._supported?this.depthTextures[0].getByteCount()+this.depthTextures[1].getByteCount()+this.colorFrontTextures[0].getByteCount()+this.colorFrontTextures[1].getByteCount()+this.colorBackTextures[0].getByteCount()+this.colorBackTextures[1].getByteCount():0}bind(){const{state:P,gl:C,extensions:{blendMinMax:l}}=this.webgl;return this.passCount=0,this.depthFramebuffers[0].bind(),P.clearColor(this.DEPTH_CLEAR_VALUE,this.DEPTH_CLEAR_VALUE,0,0),C.clear(C.COLOR_BUFFER_BIT),this.depthFramebuffers[1].bind(),P.clearColor(-this.MIN_DEPTH,this.MAX_DEPTH,0,0),C.clear(C.COLOR_BUFFER_BIT),this.colorFramebuffers[0].bind(),P.clearColor(0,0,0,0),C.clear(C.COLOR_BUFFER_BIT),this.colorFramebuffers[1].bind(),P.clearColor(0,0,0,0),C.clear(C.COLOR_BUFFER_BIT),this.depthFramebuffers[0].bind(),P.blendEquation(l.MAX),P.depthMask(!1),{depth:this.depthTextures[1],frontColor:this.colorFrontTextures[1],backColor:this.colorBackTextures[1]}}bindDualDepthPeeling(){const{state:P,gl:C,extensions:{blendMinMax:l}}=this.webgl;return this.readId=this.passCount%2,this.writeId=1-this.readId,this.passCount+=1,this.depthFramebuffers[this.writeId].bind(),P.clearColor(this.DEPTH_CLEAR_VALUE,this.DEPTH_CLEAR_VALUE,0,0),C.clear(C.COLOR_BUFFER_BIT),this.colorFramebuffers[this.writeId].bind(),P.clearColor(0,0,0,0),C.clear(C.COLOR_BUFFER_BIT),this.depthFramebuffers[this.writeId].bind(),P.blendEquation(l.MAX),P.depthMask(!1),{depth:this.depthTextures[this.readId],frontColor:this.colorFrontTextures[this.readId],backColor:this.colorBackTextures[this.readId]}}renderBlendBack(){y.isTimingMode&&this.webgl.timer.mark("DpoitPass.renderBlendBack");const{state:P,gl:C}=this.webgl;P.blendEquation(C.FUNC_ADD),P.blendFuncSeparate(C.SRC_ALPHA,C.ONE_MINUS_SRC_ALPHA,C.ONE,C.ONE_MINUS_SRC_ALPHA),c.ValueCell.update(this.blendBackRenderable.values.tDpoitBackColor,this.colorBackTextures[this.writeId]),this.blendBackRenderable.update(
6333),this.blendBackRenderable.render(),y.isTimingMode&&this.webgl.timer.markEnd("DpoitPass.renderBlendBack")}render(){y.isTimingMode&&this.webgl.timer.mark("DpoitPass.render");const{state:P,gl:C}=this.webgl;P.blendEquation(C.FUNC_ADD),P.blendFunc(C.ONE,C.ONE_MINUS_SRC_ALPHA),c.ValueCell.update(this.renderable.values.tDpoitFrontColor,this.colorFrontTextures[this.writeId]),this.renderable.update(),this.renderable.render(),y.isTimingMode&&this.webgl.timer.markEnd("DpoitPass.render")}setSize(P,C){const[l,S]=this.renderable.values.uTexSize.ref.value;if(P!==l||C!==S){for(let T=0;T<2;T++)this.depthTextures[T].define(P,C),this.colorFrontTextures[T].define(P,C),this.colorBackTextures[T].define(P,C);c.ValueCell.update(this.renderable.values.uTexSize,f.Vec2.set(this.renderable.values.uTexSize.ref.value,P,C)),c.ValueCell.update(this.blendBackRenderable.values.uTexSize,f.Vec2.set(this.blendBackRenderable.values.uTexSize.ref.value,P,C))}}reset(){this._supported&&this._init()}_init(){const{extensions:{drawBuffers:P}}=this.webgl;for(let C=0;C<2;C++)this.depthFramebuffers[C].bind(),P.drawBuffers([P.COLOR_ATTACHMENT0,P.COLOR_ATTACHMENT1,P.COLOR_ATTACHMENT2]),this.colorFrontTextures[C].attachFramebuffer(this.depthFramebuffers[C],"color0"),this.colorBackTextures[C].attachFramebuffer(this.depthFramebuffers[C],"color1"),this.depthTextures[C].attachFramebuffer(this.depthFramebuffers[C],"color2"),this.colorFramebuffers[C].bind(),P.drawBuffers([P.COLOR_ATTACHMENT0,P.COLOR_ATTACHMENT1]),this.colorFrontTextures[C].attachFramebuffer(this.colorFramebuffers[C],"color0"),this.colorBackTextures[C].attachFramebuffer(this.colorFramebuffers[C],"color1")}static isSupported(P){const{extensions:{drawBuffers:C,textureFloat:l,colorBufferFloat:S,depthTexture:T,blendMinMax:A}}=P;if(!l||!S||!T||!C||!A){if(y.isDebugMode){const x=[];l||x.push("textureFloat"),S||x.push("colorBufferFloat"),T||x.push("depthTexture"),C||x.push("drawBuffers"),A||x.push("blendMinMax"),console.log(`Missing "${x.join('", "')}" extensions required for "dpoit"`)}return!1}else return!0}constructor(P,C,l){if(this.webgl=P,this.DEPTH_CLEAR_VALUE=-99999,this.MAX_DEPTH=1,this.MIN_DEPTH=0,this.passCount=0,this._supported=!1,!v.isSupported(P))return;const{resources:S,extensions:{colorBufferHalfFloat:T,textureHalfFloat:A}}=P;(0,_.isWebGL2)(P.gl)?(this.depthTextures=[S.texture("image-float32","rg","float","nearest"),S.texture("image-float32","rg","float","nearest")],this.colorFrontTextures=T&&A?[S.texture("image-float16","rgba","fp16","nearest"),S.texture("image-float16","rgba","fp16","nearest")]:[S.texture("image-float32","rgba","float","nearest"),S.texture("image-float32","rgba","float","nearest")],this.colorBackTextures=T&&A?[S.texture("image-float16","rgba","fp16","nearest"),S.texture("image-float16","rgba","fp16","nearest")]:[S.texture("image-float32","rgba","float","nearest"),S.texture("image-float32","rgba","float","nearest")]):(this.depthTextures=[S.texture("image-float32","rgba","float","nearest"),S.texture("image-float32","rgba","float","nearest")],this.colorFrontTextures=[S.texture("image-float32","rgba","float","nearest"),S.texture("image-float32","rgba","float","nearest")],this.colorBackTextures=[S.texture("image-float32","rgba","float","nearest"),S.texture("image-float32","rgba","float","nearest")]),this.depthTextures[0].define(C,l),this.depthTextures[1].define(C,l),this.colorFrontTextures[0].define(C,l),this.colorFrontTextures[1].define(C,l),this.colorBackTextures[0].define(C,l),this.colorBackTextures[1].define(C,l),this.depthFramebuffers=[S.framebuffer(),S.framebuffer()],this.colorFramebuffers=[S.framebuffer(),S.framebuffer()],this.blendBackRenderable=d(P,this.colorBackTextures[0]),this.renderable=m(P,this.colorFrontTextures[0]),this._supported=!0,this._init()}}return ob.DpoitPass=v,ob}var Wu={},ub={},E8;function Zoe(){return E8||(E8=1,Object.defineProperty(ub,"__esModule",{value:!0}),ub.overlay_frag=void 0,ub.overlay_frag=`
6334precision highp float;
6335precision highp sampler2D;
6336
6337uniform vec2 uTexSizeInv;
6338uniform sampler2D tEdgeTexture;
6339uniform vec3 uHighlightEdgeColor;
6340uniform vec3 uSelectEdgeColor;
6341uniform float uHighlightEdgeStrength;
6342uniform float uSelectEdgeStrength;
6343uniform float uGhostEdgeStrength;
6344uniform float uInnerEdgeFactor;
6345
6346void main() {
6347    vec2 coords = gl_FragCoord.xy * uTexSizeInv;
6348    vec4 edgeValue = texture2D(tEdgeTexture, coords);
6349    if (edgeValue.a > 0.0) {
6350        vec3 edgeColor = edgeValue.b == 1.0 ? uHighlightEdgeColor : uSelectEdgeColor;
6351        gl_FragColor.rgb = edgeValue.g > 0.0 ? edgeColor : edgeColor * uInnerEdgeFactor;
6352        gl_FragColor.a = (edgeValue.r == 1.0 ? uGhostEdgeStrength : 1.0) * edgeValue.a;
6353        float edgeStrength = edgeValue.b == 1.0 ? uHighlightEdgeStrength : uSelectEdgeStrength;
6354        gl_FragColor.a *= edgeStrength;
6355    } else {
6356        gl_FragColor = vec4(0.0);
6357    }
6358}
6359`),ub}var lb={},B8;function Joe(){return B8||(B8=1,Object.defineProperty(lb,"__esMo
6359dule",{value:!0}),lb.edge_frag=void 0,lb.edge_frag=`
6360precision highp float;
6361precision highp sampler2D;
6362
6363uniform sampler2D tMaskTexture;
6364uniform vec2 uTexSizeInv;
6365
6366void main() {
6367    vec2 coords = gl_FragCoord.xy * uTexSizeInv;
6368    vec4 offset = vec4(float(dEdgeScale), 0.0, 0.0, float(dEdgeScale)) * vec4(uTexSizeInv, uTexSizeInv);
6369    vec4 c0 = texture2D(tMaskTexture, coords);
6370    vec4 c1 = texture2D(tMaskTexture, coords + offset.xy);
6371    vec4 c2 = texture2D(tMaskTexture, coords - offset.xy);
6372    vec4 c3 = texture2D(tMaskTexture, coords + offset.yw);
6373    vec4 c4 = texture2D(tMaskTexture, coords - offset.yw);
6374    float diff1 = (c1.r - c2.r) * 0.5;
6375    float diff2 = (c3.r - c4.r) * 0.5;
6376    float d = length(vec2(diff1, diff2));
6377    if (d <= 0.0)
6378        discard;
6379    float a1 = min(c1.g, c2.g);
6380    float a2 = min(c3.g, c4.g);
6381    float visibility = min(a1, a2) > 0.001 ? 1.0 : 0.0;
6382    float mask = c0.r;
6383    float marker = min(c1.b, min(c2.b, min(c3.b, c4.b)));
6384    float fogAlpha = min(c1.a, min(c2.a, min(c3.a, c4.a)));
6385    gl_FragColor = vec4(visibility, mask, marker, fogAlpha);
6386}
6387`),lb}var R8;function KS(){if(R8)return Wu;R8=1,Object.defineProperty(Wu,"__esModule",{value:!0}),Wu.MarkingPass=Wu.MarkingParams=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=Ge(),o=et(),s=Ne(),h=Gr(),f=Zoe(),y=vt(),_=Joe(),g=Ct();Wu.MarkingParams={enabled:s.ParamDefinition.Boolean(!0),highlightEdgeColor:s.ParamDefinition.Color(y.Color.darken(y.Color.fromNormalizedRgb(1,.4,.6),1)),selectEdgeColor:s.ParamDefinition.Color(y.Color.darken(y.Color.fromNormalizedRgb(.2,1,.1),1)),edgeScale:s.ParamDefinition.Numeric(1,{min:1,max:3,step:1},{description:"Thickness of the edge."}),highlightEdgeStrength:s.ParamDefinition.Numeric(1,{min:0,max:1,step:.1}),selectEdgeStrength:s.ParamDefinition.Numeric(1,{min:0,max:1,step:.1}),ghostEdgeStrength:s.ParamDefinition.Numeric(.3,{min:0,max:1,step:.1},{description:"Opacity of the hidden edges that are covered by other geometry. When set to 1, one less geometry render pass is done."}),innerEdgeFactor:s.ParamDefinition.Numeric(1.5,{min:0,max:3,step:.1},{description:"Factor to multiply the inner edge color with - for added contrast."})};class a{static isEnabled(C){return C.enabled}constructor(C,l,S){this.webgl=C,this.depthTarget=C.createRenderTarget(l,S),this.maskTarget=C.createRenderTarget(l,S),this.edgesTarget=C.createRenderTarget(l,S),this.edge=u(C,this.maskTarget.texture),this.overlay=b(C,this.edgesTarget.texture)}getByteCount(){return this.depthTarget.getByteCount()+this.maskTarget.getByteCount()+this.edgesTarget.getByteCount()}setEdgeState(C){const{gl:l,state:S}=this.webgl;S.enable(l.SCISSOR_TEST),S.enable(l.BLEND),S.blendFunc(l.ONE,l.ONE),S.blendEquation(l.FUNC_ADD),S.disable(l.DEPTH_TEST),S.depthMask(!1);const{x:T,y:A,width:x,height:M}=C;S.viewport(T,A,x,M),S.scissor(T,A,x,M),S.clearColor(0,0,0,0),l.clear(l.COLOR_BUFFER_BIT)}setOverlayState(C){const{gl:l,state:S}=this.webgl;S.enable(l.SCISSOR_TEST),S.enable(l.BLEND),S.blendFunc(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA),S.blendEquation(l.FUNC_ADD),S.disable(l.DEPTH_TEST),S.depthMask(!1);const{x:T,y:A,width:x,height:M}=C;S.viewport(T,A,x,M),S.scissor(T,A,x,M)}setSize(C,l){const S=this.depthTarget.getWidth(),T=this.depthTarget.getHeight();(C!==S||l!==T)&&(this.depthTarget.setSize(C,l),this.maskTarget.setSize(C,l),this.edgesTarget.setSize(C,l),o.ValueCell.update(this.edge.values.uTexSizeInv,c.Vec2.set(this.edge.values.uTexSizeInv.ref.value,1/C,1/l)),o.ValueCell.update(this.overlay.values.uTexSizeInv,c.Vec2.set(this.overlay.values.uTexSizeInv.ref.value,1/C,1/l)))}update(C){const{highlightEdgeColor:l,selectEdgeColor:S,edgeScale:T,innerEdgeFactor:A,ghostEdgeStrength:x,highlightEdgeStrength:M,selectEdgeStrength:D}=C,{values:V}=this.edge,R=Math.max(1,Math.round(T*this.webgl.pixelRatio));V.dEdgeScale.ref.value!==R&&(o.ValueCell.update(V.dEdgeScale,R),this.edge.update());const{values:E}=this.overlay;o.ValueCell.update(E.uHighlightEdgeColor,y.Color.toVec3Normalized(E.uHighlightEdgeColor.ref.value,l)),o.ValueCell.update(E.uSelectEdgeColor,y.Color.toVec3Normalized(E.uSelectEdgeColor.ref.value,S)),o.ValueCell.updateIfChanged(E.uInnerEdgeFactor,A),o.
6387ValueCell.updateIfChanged(E.uGhostEdgeStrength,x),o.ValueCell.updateIfChanged(E.uHighlightEdgeStrength,M),o.ValueCell.updateIfChanged(E.uSelectEdgeStrength,D)}render(C,l){g.isTimingMode&&this.webgl.timer.mark("MarkingPass.render"),this.edgesTarget.bind(),this.setEdgeState(C),this.edge.render(),l.bind(),this.setOverlayState(C),this.overlay.render(),g.isTimingMode&&this.webgl.timer.markEnd("MarkingPass.render")}}Wu.MarkingPass=a;const d={...e.QuadSchema,tMaskTexture:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),dEdgeScale:(0,r.DefineSpec)("number")},p=(0,n.ShaderCode)("edge",h.quad_vert,_.edge_frag);function u(P,C){const l=C.getWidth(),S=C.getHeight(),T={...e.QuadValues,tMaskTexture:o.ValueCell.create(C),uTexSizeInv:o.ValueCell.create(c.Vec2.create(1/l,1/S)),dEdgeScale:o.ValueCell.create(1)},A={...d},x=(0,i.createComputeRenderItem)(P,"triangles",p,A,T);return(0,t.createComputeRenderable)(x,T)}const m={...e.QuadSchema,tEdgeTexture:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),uHighlightEdgeColor:(0,r.UniformSpec)("v3"),uSelectEdgeColor:(0,r.UniformSpec)("v3"),uHighlightEdgeStrength:(0,r.UniformSpec)("f"),uSelectEdgeStrength:(0,r.UniformSpec)("f"),uGhostEdgeStrength:(0,r.UniformSpec)("f"),uInnerEdgeFactor:(0,r.UniformSpec)("f")},v=(0,n.ShaderCode)("overlay",h.quad_vert,f.overlay_frag);function b(P,C){const l=C.getWidth(),S=C.getHeight(),T={...e.QuadValues,tEdgeTexture:o.ValueCell.create(C),uTexSizeInv:o.ValueCell.create(c.Vec2.create(1/l,1/S)),uHighlightEdgeColor:o.ValueCell.create((0,c.Vec3)()),uSelectEdgeColor:o.ValueCell.create((0,c.Vec3)()),uHighlightEdgeStrength:o.ValueCell.create(1),uSelectEdgeStrength:o.ValueCell.create(1),uGhostEdgeStrength:o.ValueCell.create(0),uInnerEdgeFactor:o.ValueCell.create(0)},A={...m},x=(0,i.createComputeRenderItem)(P,"triangles",v,A,T);return(0,t.createComputeRenderable)(x,T)}return Wu}var O8;function $Q(){if(O8)return nb;O8=1,Object.defineProperty(nb,"__esModule",{value:!0}),nb.DrawPass=void 0;const e=et(),t=Ge(),r=Lw(),n=Xoe(),i=Qoe(),c=XS(),o=KS(),s=Mr(),h=Ct(),f=Fw(),y=m2();class _{setTransparency(a){a==="wboit"?(this.transparencyMode=this.wboit.supported?"wboit":"blended",h.isDebugMode&&!this.wboit.supported&&console.log('Missing "wboit" support, falling back to "blended".')):a==="dpoit"?(this.transparencyMode=this.dpoit.supported?"dpoit":"blended",h.isDebugMode&&!this.dpoit.supported&&console.log('Missing "dpoit" support, falling back to "blended".')):this.transparencyMode="blended",this.depthTextureOpaque.detachFramebuffer(this.postprocessing.target.framebuffer,"depth")}get transparency(){return this.transparencyMode}constructor(a,d,p,u,m){this.webgl=a,this.transparencyMode="blended";const{extensions:v,resources:b,isWebGL2:P}=a;this.drawTarget=a.createDrawTarget(),this.colorTarget=a.createRenderTarget(p,u,!0,"uint8","linear"),this.transparentColorTarget=a.createRenderTarget(p,u,!1,"uint8","linear"),this.packedDepth=!v.depthTexture,this.depthTargetTransparent=a.createRenderTarget(p,u),this.depthTextureTransparent=this.depthTargetTransparent.texture,this.depthTargetOpaque=this.packedDepth?a.createRenderTarget(p,u):null,this.depthTextureOpaque=this.depthTargetOpaque?this.depthTargetOpaque.texture:b.texture("image-depth","depth",P?"float":"ushort","nearest"),this.packedDepth||this.depthTextureOpaque.define(p,u),this.wboit=new n.WboitPass(a,p,u),this.dpoit=new i.DpoitPass(a,p,u),this.marking=new o.MarkingPass(a,p,u),this.postprocessing=new c.PostprocessingPass(a,d,this),this.antialiasing=new c.AntialiasingPass(a,p,u),this.dof=new f.DofPass(a,p,u),this.copyFboTarget=(0,s.createCopyRenderable)(a,this.colorTarget.texture),this.copyFboPostprocessing=(0,s.createCopyRenderable)(a,this.postprocessing.target.texture),this.setTransparency(m)}getByteCount(){return this.drawTarget.getByteCount()+this.colorTarget.getByteCount()+this.transparentColorTarget.getByteCount()+this.depthTargetTransparent.getByteCount()+(this.depthTargetOpaque?this.depthTargetOpaque.getByteCount():this.depthTextureOpaque.getByteCount())+this.wboit.getByteCount()+this.dpoit.getByteCount()+this.marking.getByteCount()+this.postprocessing.getByteCount()+this.antialiasing.getByteCount()+this.dof.getByteCount()}reset(){this.wboit.reset(),this.dpoit.reset(),this.postprocessing.reset()}setSize(a,d){const p=this.colorTarget.getWidth(),u=this.colorTarget.getHeight();(a!==p||d!==u)&&(this.colorTarget.setSize(a,d),this.depthTargetTransparent.setSize(a,d),this.transparentColorTarget.setSize(a,d),this.depthTargetOpaque?this.depthTargetOpaque.setSize(a,d):this.depthTextureOpaque.define(a,d),e.ValueCell.update(this.copyFboTarget.values.uTexSize,t.Vec2.set(this.copyFboTarget.values.uTexSize.ref.value,a,d)),e.ValueCell.update(this.copyFboPostprocessing.values.uTexSize,t.Vec2.set(this.copyFboPostprocessing.values.uTexSize.ref.value,a,d))),this.wboit.supported&&this.wboit.setSize(a,d),this.dpoit.supported&&this.dpoit.setSize(a,d),this.marking.setSize(a,d),this.postprocessing.setSize(a,d),this.antialiasing.setSize(a,d),this.dof.setSize(a,d)}renderEmissiveBloom(a,d,p,u){var m;const v=this.postprocessing.bloom;v.emissiveTarget.bind(),a.clear(!1,!0,!0);const b=!this.packedDepth;b&&this.depthTextureOpaque.attachFramebuffer(v.emissiveTarget.framebuffer,"depth"),a.renderEmissiveOpaque(p.primitives,d,this.depthTextureTransparent,b),u&&p.opacityAverage<1&&a.renderEmissiveTransparent
6387(p.primitives,d,this.depthTextureTransparent),b&&(this.depthTextureOpaque.detachFramebuffer(v.emissiveTarget.framebuffer,"depth"),(m=v.emissiveTarget.depthRenderbuffer)===null||m===void 0||m.attachFramebuffer(v.emissiveTarget.framebuffer))}_renderBloom(a,d,p,u){if(!y.BloomPass.isEnabled(u)||u.bloom.name!=="on")return!1;const m=this.postprocessing.bloom,v=u.bloom.params,b=v.mode==="emissive";return b&&p.emissiveAverage===0?!1:(b&&this.renderEmissiveBloom(a,d,p,v.transparency),p.opacityAverage>=1&&(this.transparentColorTarget.bind(),a.clear(!1,!1,!0),this.depthTargetTransparent.bind(),a.clearDepth(!0)),m.update(this.colorTarget.texture,this.transparentColorTarget.texture,m.emissiveTarget.texture,this.depthTextureOpaque,this.depthTextureTransparent,v,d,!0),m.render(d.viewport),!0)}_renderDpoit(a,d,p,u,m,v){if(!this.dpoit.supported)throw new Error("expected dpoit to be supported");this.depthTextureOpaque.attachFramebuffer(this.colorTarget.framebuffer,"depth"),a.clear(!0),p.hasOpaque&&a.renderOpaque(p.primitives,d),this.depthTextureOpaque.detachFramebuffer(this.colorTarget.framebuffer,"depth"),c.PostprocessingPass.isTransparentDepthRequired(p,v)&&(this.depthTargetTransparent.bind(),a.clearDepth(!0),p.opacityAverage<1&&a.renderDepthTransparent(p.primitives,d,this.depthTextureOpaque));const b=c.PostprocessingPass.isEnabled(v);if(p.opacityAverage<1){const P=b?this.transparentColorTarget:this.colorTarget;b&&(P.bind(),a.clear(!1,!1,!0));const C=this.dpoit.bind();a.renderDpoitTransparent(p.primitives,d,this.depthTextureOpaque,C);for(let l=0;l<u;l++){h.isTimingMode&&this.webgl.timer.mark("DpoitPass.layer");const S=this.dpoit.bindDualDepthPeeling();a.renderDpoitTransparent(p.primitives,d,this.depthTextureOpaque,S),u>1&&(P.bind(),this.dpoit.renderBlendBack()),h.isTimingMode&&this.webgl.timer.markEnd("DpoitPass.layer")}P.bind(),this.dpoit.render()}c.PostprocessingPass.isEnabled(v)&&this.postprocessing.render(d,p,!1,m,a.props.backgroundColor,v,a.light,a.ambientColor,this._renderBloom(a,d,p,v)),p.volumes.renderables.length>0&&a.renderVolume(p.volumes,d,this.depthTextureOpaque)}_renderWboit(a,d,p,u,m){if(!this.wboit.supported)throw new Error("expected wboit to be supported");this.depthTextureOpaque.attachFramebuffer(this.colorTarget.framebuffer,"depth"),a.clear(!0),p.hasOpaque&&a.renderOpaque(p.primitives,d),c.PostprocessingPass.isTransparentDepthRequired(p,m)&&(this.depthTargetTransparent.bind(),a.clearDepth(!0),p.opacityAverage<1&&a.renderDepthTransparent(p.primitives,d,this.depthTextureOpaque));const v=c.PostprocessingPass.isEnabled(m);if(p.opacityAverage<1){const b=v?this.transparentColorTarget:this.colorTarget;v&&(b.bind(),a.clear(!1,!1,!0)),this.wboit.bind(),a.renderWboitTransparent(p.primitives,d,this.depthTextureOpaque),b.bind(),this.wboit.render()}c.PostprocessingPass.isEnabled(m)&&this.postprocessing.render(d,p,!1,u,a.props.backgroundColor,m,a.light,a.ambientColor,this._renderBloom(a,d,p,m)),p.volumes.renderables.length>0&&(this.wboit.bind(),a.renderWboitTransparent(p.volumes,d,this.depthTextureOpaque),(v?this.postprocessing.target:this.colorTarget).bind(),this.wboit.render())}_renderBlended(a,d,p,u,m,v){var b,P,C,l,S,T;if(u?this.drawTarget.bind():this.packedDepth?this.colorTarget.bind():this.depthTextureOpaque.attachFramebuffer(this.colorTarget.framebuffer,"depth"),a.clear(!0),p.hasOpaque&&a.renderOpaque(p.primitives,d),u)p.opacityAverage<1&&a.renderBlendedTransparent(p.primitives,d);else{this.depthTargetOpaque&&(this.depthTargetOpaque.bind(),a.clearDepth(!0),a.renderDepthOpaque(p.primitives,d),this.colorTarget.bind()),c.PostprocessingPass.isTransparentDepthRequired(p,v)&&(this.depthTargetTransparent.bind(),a.clearDepth(!0),p.opacityAverage<1&&a.renderDepthTransparent(p.primitives,d,this.depthTextureOpaque));const A=c.PostprocessingPass.isEnabled(v);if(p.opacityAverage<1&&(A&&(this.transparentColorTarget.bind(),a.clear(!1,!1,!0),this.packedDepth?(b=this.colorTarget.depthRenderbuffer)===null||b===void 0||b.attachFramebuffer(this.transparentColorTarget.framebuffer):this.depthTextureOpaque.attachFramebuffer(this.transparentColorTarget.framebuffer,"depth")),a.renderBlendedTransparent
6387(p.primitives,d),A&&(this.packedDepth?(P=this.colorTarget.depthRenderbuffer)===null||P===void 0||P.detachFramebuffer(this.transparentColorTarget.framebuffer):this.depthTextureOpaque.detachFramebuffer(this.transparentColorTarget.framebuffer,"depth"))),A&&(this.packedDepth?(C=this.colorTarget.depthRenderbuffer)===null||C===void 0||C.detachFramebuffer(this.postprocessing.target.framebuffer):this.depthTextureOpaque.detachFramebuffer(this.postprocessing.target.framebuffer,"depth"),this.postprocessing.render(d,p,!1,m,a.props.backgroundColor,v,a.light,a.ambientColor,this._renderBloom(a,d,p,v)),this.packedDepth?(l=this.colorTarget.depthRenderbuffer)===null||l===void 0||l.attachFramebuffer(this.postprocessing.target.framebuffer):this.depthTextureOpaque.attachFramebuffer(this.postprocessing.target.framebuffer,"depth")),p.volumes.renderables.length>0){const x=c.PostprocessingPass.isEnabled(v)?this.postprocessing.target:this.colorTarget;this.packedDepth?(S=this.colorTarget.depthRenderbuffer)===null||S===void 0||S.detachFramebuffer(x.framebuffer):this.depthTextureOpaque.detachFramebuffer(x.framebuffer,"depth"),x.bind(),a.renderVolume(p.volumes,d,this.depthTextureOpaque),this.packedDepth?(T=this.colorTarget.depthRenderbuffer)===null||T===void 0||T.attachFramebuffer(x.framebuffer):this.depthTextureOpaque.attachFramebuffer(x.framebuffer,"depth"),x.bind()}}}_render(a,d,p,u,m,v,b){var P;if(d.disabled)return;const C=p.volumes.renderables.length>0,l=c.PostprocessingPass.isEnabled(b.postprocessing),S=c.AntialiasingPass.isEnabled(b.postprocessing),T=o.MarkingPass.isEnabled(b.marking),A=f.DofPass.isEnabled(b.postprocessing),{x,y:M,width:D,height:V}=d.viewport;a.setViewport(x,M,D,V),a.update(d,p),v&&!S&&m&&!l&&(this.drawTarget.bind(),a.clear(!1));let R=!1;this.transparencyMode==="wboit"&&this.wboit.supported?(this._renderWboit(a,d,p,v,b.postprocessing),R=!0):this.transparencyMode==="dpoit"&&this.dpoit.supported?(this._renderDpoit(a,d,p,b.dpoitIterations,v,b.postprocessing),R=!0):this._renderBlended(a,d,p,!C&&!l&&!S&&m,v,b.postprocessing);const E=l?this.postprocessing.target:!m||C||R?this.colorTarget:this.drawTarget;if(T&&p.markerAverage>0){const B=b.marking.ghostEdgeStrength<1;B&&p.markerAverage!==1&&(this.marking.depthTarget.bind(),a.clear(!1,!0),a.renderMarkingDepth(p.primitives,d)),this.marking.maskTarget.bind(),a.clear(!1,!0),a.renderMarkingMask(p.primitives,d,B?this.marking.depthTarget.texture:null),this.marking.update(b.marking),this.marking.render(d.viewport,E)}else E.bind();if(u.debug.isEnabled||u.pointer.isEnabled){if(this.packedDepth||this.depthTextureOpaque.attachFramebuffer(E.framebuffer,"depth"),u.debug.isEnabled){u.debug.syncVisibility();for(const B of u.debug.scenes)a.renderBlended(B,d)}u.pointer.isEnabled&&(u.pointer.setCamera(d),a.update(u.pointer.camera,u.pointer.scene),a.renderBlended(u.pointer.scene,u.pointer.camera)),this.packedDepth||this.depthTextureOpaque.detachFramebuffer(E.framebuffer,"depth")}u.handle.isEnabled&&a.renderBlended(u.handle.scene,d),u.camera.isEnabled&&(u.camera.update(d),a.update(u.camera.camera,u.camera.scene),a.renderBlended(u.camera.scene,u.camera.camera));let I=!1;if(S){const B=c.PostprocessingPass.isEnabled(b.postprocessing)?this.postprocessing.target.texture:this.colorTarget.texture;this.antialiasing.render(d,B,m&&!A,b.postprocessing)}else m&&!f.DofPass.isEnabled(b.postprocessing)&&(I=!0);if(A&&b.postprocessing.dof.name==="on"){const B=c.AntialiasingPass.isEnabled(b.postprocessing)?this.antialiasing.target.texture:c.PostprocessingPass.isEnabled(b.postprocessing)?this.postprocessing.target.texture:this.colorTarget.texture;this.dof.update(d,B,((P=this.depthTargetOpaque)===null||P===void 0?void 0:P.texture)||this.depthTextureOpaque,this.depthTextureTransparent,b.postprocessing.dof.params,p.boundingSphereVisible),this.dof.render(d.viewport,m?void 0:this.getColorTarget(b.postprocessing))}else m&&!c.AntialiasingPass.isEnabled(b.postprocessing)&&(I=!0);I&&(this.drawTarget.bind(),this.webgl.state.disable(this.webgl.gl.DEPTH_TEST),l?this.copyFboPostprocessing.render():(C||R)&&this.copyFboTarget.render()),this.webgl.gl.flush()}render(a,d,p){h.isTimingMode&&this.webgl.timer.mark("DrawPass.render");const{renderer:u,camera:m,scene:v,helper:b}=a;
6387this.postprocessing.setTransparentBackground(d.transparentBackground);const P=d.postprocessing,C=this.postprocessing.background.isEnabled(P),l=!d.transparentBackground&&!C&&y.BloomPass.isEnabled(P)&&P.bloom.name==="on"&&!(P.bloom.params.mode==="emissive"&&v.emissiveAverage===0),S=d.transparentBackground||C||l;u.setTransparentBackground(S),u.setDrawingBufferSize(this.colorTarget.getWidth(),this.colorTarget.getHeight()),u.setPixelRatio(this.webgl.pixelRatio),r.StereoCamera.is(m)?(h.isTimingMode&&this.webgl.timer.mark("StereoCamera.left"),this._render(u,m.left,v,b,p,S,d),h.isTimingMode&&this.webgl.timer.markEnd("StereoCamera.left"),h.isTimingMode&&this.webgl.timer.mark("StereoCamera.right"),this._render(u,m.right,v,b,p,S,d),h.isTimingMode&&this.webgl.timer.markEnd("StereoCamera.right")):this._render(u,m,v,b,p,S,d),h.isTimingMode&&this.webgl.timer.markEnd("DrawPass.render")}getColorTarget(a){return f.DofPass.isEnabled(a)?this.dof.target:c.AntialiasingPass.isEnabled(a)?this.antialiasing.target:c.PostprocessingPass.isEnabled(a)?this.postprocessing.target:this.colorTarget}}return nb.DrawPass=_,nb}var db={},k8;function ese(){if(k8)return db;k8=1,Object.defineProperty(db,"__esModule",{value:!0}),db.PixelData=void 0;var e;return(function(t){function r(c,o,s){return{array:c,width:o,height:s}}t.create=r;function n(c){const{array:o,width:s,height:h}=c,f=o.length/(s*h),y=s*f;for(let _=0,g=h/2;_<g;++_)for(let a=0,d=y;a<d;++a){const p=_*y+a,u=(h-_-1)*y+a,m=o[p];o[p]=o[u],o[u]=m}return c}t.flipY=n;function i(c){const{array:o}=c,s=o instanceof Uint8Array?255:1;for(let h=0,f=o.length;h<f;h+=4){const y=o[h+3]/s;y!==0&&(o[h]=Math.min(s,o[h]/y),o[h+1]=Math.min(s,o[h+1]/y),o[h+2]=Math.min(s,o[h+2]/y))}return c}t.divideByAlpha=i})(e||(db.PixelData=e={})),db}var Va={},F8;function YS(){if(F8)return Va;F8=1,Object.defineProperty(Va,"__esModule",{value:!0}),Va.CameraHelperAxis=Va.CameraHelper=Va.CameraHelperParams=void 0,Va.isCameraAxesLoci=T;const e=Lf(),t=In(),r=ba(),n=Jn(),i=Rt(),c=$t(),o=ya(),s=Kf(),h=f2(),f=rt(),y=Ge(),_=gt(),g=pn(),a=Ul(),d=Vr(),p=cn(),u=Ne(),m=Gt(),v=ta(),b={alpha:u.ParamDefinition.Numeric(.51,{min:0,max:1,step:.01},{isEssential:!0,label:"Opacity"}),colorX:u.ParamDefinition.Color(d.ColorNames.red,{isEssential:!0}),colorY:u.ParamDefinition.Color(d.ColorNames.green,{isEssential:!0}),colorZ:u.ParamDefinition.Color(d.ColorNames.blue,{isEssential:!0}),scale:u.ParamDefinition.Numeric(.33,{min:.1,max:2,step:.1},{isEssential:!0}),location:u.ParamDefinition.Select("bottom-left",u.ParamDefinition.arrayToOptions(["bottom-left","bottom-right","top-left","top-right"])),locationOffsetX:u.ParamDefinition.Numeric(0),locationOffsetY:u.ParamDefinition.Numeric(0),originColor:u.ParamDefinition.Color(d.ColorNames.grey),radiusScale:u.ParamDefinition.Numeric(.075,{min:.01,max:.3,step:.001}),showPlanes:u.ParamDefinition.Boolean(!0),planeColorXY:u.ParamDefinition.Color(d.ColorNames.grey,{label:"Plane Color XY"}),planeColorXZ:u.ParamDefinition.Color(d.ColorNames.grey,{label:"Plane Color XZ"}),planeColorYZ:u.ParamDefinition.Color(d.ColorNames.grey,{label:"Plane Color YZ"}),showLabels:u.ParamDefinition.Boolean(!1),labelX:u.ParamDefinition.Text("X"),labelY:u.ParamDefinition.Text("Y"),labelZ:u.ParamDefinition.Text("Z"),labelColorX:u.ParamDefinition.Color(d.ColorNames.grey),labelColorY:u.ParamDefinition.Color(d.ColorNames.grey),labelColorZ:u.ParamDefinition.Color(d.ColorNames.grey),labelOpacity:u.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),labelScale:u.ParamDefinition.Numeric(.25,{min:.1,max:1,step:.01})};Va.CameraHelperParams={axes:u.ParamDefinition.MappedStatic("on",{on:u.ParamDefinition.Group(b),off:u.ParamDefinition.Group({})},{cycle:!0,description:"Show camera orientation axes"})};class P{constructor(B,w={}){this.webgl=B,this.props={axes:{name:"off",params:{}}},this.pixelRatio=1,this.eachGroup=(O,F)=>{if(!T(O))return!1;let L=!1;if(this.meshRenderObject){const U=this.meshRenderObject.values.uGroupCount.ref.value;for(const{groupId:q,instanceId:N}of O.elements){const k=N*U+q;F(t.Interval.ofSingleton(k))&&(L=!0)}}if(this.textRenderObject){const U=this.textRenderObject.values.uGroupCount.ref.value;for(const{groupId:q,instanceId:N}of O.elements){const k=N*U+q;F(t.Interval.ofSingleton(k))&&(L=!0)}}return L},this.scene=h.Scene.create(B,"blended"),this.camera=new v.Camera,y.Vec3.set(this.camera.up,0,1,0),y.Vec3.set(this.camera.target,0,0,0),this.setProps(w)}setProps(B){this.props=(0,e.produce)(this.props,w=>
6387{if(B.axes!==void 0&&(w.axes.name=B.axes.name,B.axes.name==="on")){this.scene.clear(),this.pixelRatio=this.webgl.pixelRatio;const O={...B.axes.params,scale:B.axes.params.scale*this.pixelRatio,labelScale:B.axes.params.labelScale*this.pixelRatio};this.meshRenderObject=D(O),this.scene.add(this.meshRenderObject),B.axes.params.showLabels?(this.textRenderObject=E(O),this.scene.add(this.textRenderObject)):this.textRenderObject=void 0,this.scene.commit(),y.Vec3.set(this.camera.position,0,0,O.scale*200),y.Mat4.lookAt(this.camera.view,this.camera.position,this.camera.target,this.camera.up),w.axes.params={...B.axes.params}}})}get isEnabled(){return this.props.axes.name==="on"}getLoci(B){const{objectId:w,groupId:O,instanceId:F}=B;return(!this.meshRenderObject||w!==this.meshRenderObject.id)&&(!this.textRenderObject||w!==this.textRenderObject.id)||O===C.None?_.EmptyLoci:S(this,O,F)}mark(B,w){return!p.MarkerActions.is(p.MarkerActions.Highlighting,w)||!(0,_.isEveryLoci)(B)&&(!T(B)||B.data!==this)?!1:a.Visual.mark(this.meshRenderObject,B,w,this.eachGroup)||a.Visual.mark(this.textRenderObject,B,w,this.eachGroup)}update(B){if(!this.meshRenderObject||this.props.axes.name==="off")return;this.pixelRatio!==this.webgl.pixelRatio&&this.setProps(this.props),A(this.camera,B.viewport,B.viewOffset),y.Mat4.extractRotation(this.scene.view,B.view);const w=this.textRenderObject?this.textRenderObject.values.boundingSphere.ref.value.radius:this.meshRenderObject.values.boundingSphere.ref.value.radius,O=this.props.axes.params.location,F=this.props.axes.params.locationOffsetX*this.pixelRatio,L=this.props.axes.params.locationOffsetY*this.pixelRatio;O==="bottom-left"?y.Mat4.setTranslation(this.scene.view,y.Vec3.create(-B.viewport.width/2+w+F,-B.viewport.height/2+w+L,0)):O==="bottom-right"?y.Mat4.setTranslation(this.scene.view,y.Vec3.create(B.viewport.width/2-w-F,-B.viewport.height/2+w+L,0)):O==="top-left"?y.Mat4.setTranslation(this.scene.view,y.Vec3.create(-B.viewport.width/2+w+F,B.viewport.height/2-w-L,0)):O==="top-right"?y.Mat4.setTranslation(this.scene.view,y.Vec3.create(B.viewport.width/2-w-F,B.viewport.height/2-w-L,0)):(0,m.assertUnreachable)(O)}}Va.CameraHelper=P;var C;(function(I){I[I.None=0]="None",I[I.X=1]="X",I[I.Y=2]="Y",I[I.Z=3]="Z",I[I.XY=4]="XY",I[I.XZ=5]="XZ",I[I.YZ=6]="YZ",I[I.Origin=7]="Origin"})(C||(Va.CameraHelperAxis=C={}));function l(I,B){const w=B.props.axes,O=w.name==="on"?w.params.labelX:"X",F=w.name==="on"?w.params.labelY:"Y",L=w.name==="on"?w.params.labelZ:"Z";switch(I){case C.X:return`${O} Axis`;case C.Y:return`${F} Axis`;case C.Z:return`${L} Axis`;case C.XY:return`${O}${F} Plane`;case C.XZ:return`${O}${L} Plane`;case C.YZ:return`${F}${L} Plane`;case C.Origin:return"Origin";default:return"Axes"}}function S(I,B,w){return(0,_.DataLoci)("camera-axes",I,[{groupId:B,instanceId:w}],void 0,()=>l(B,I))}function T(I){return I.kind==="data-loci"&&I.tag==="camera-axes"}function A(I,B,w){const{near:O,far:F}=I,L=-B.width/2,U=B.width/2,q=B.height/2,N=-B.height/2,k=(U-L)/2,j=(q-N)/2,H=(U+L)/2,G=(q+N)/2;let z=H-k,W=H+k,X=G+j,Y=G-j;if(w.enabled){const K=(U-L)/w.width,Q=(q-N)/w.height;z+=K*w.offsetX,W=z+K*w.width,X-=Q*w.offsetY,Y=X-Q*w.height}y.Mat4.ortho(I.projection,z,W,X,Y,O,F)}function x(I,B){const w=c.MeshBuilder.createState(512,256,B),O=100*I.scale,F=I.radiusScale*O,L=I.showLabels?100*I.labelScale/3:0,U=y.Vec3.scale((0,y.Vec3)(),y.Vec3.unitX,O-L),q=y.Vec3.scale((0,y.Vec3)(),y.Vec3.unitY,O-L),N=y.Vec3.scale((0,y.Vec3)(),y.Vec3.unitZ,O-L),k={radiusTop:F,radiusBottom:F,radialSegments:32};if(w.currentGroup=C.Origin,(0,n.addSphere)(w,y.Vec3.origin,F,2),w.currentGroup=C.X,(0,n.addSphere)(w,U,F,2),(0,r.addCylinder)(w,y.Vec3.origin,U,1,k),w.currentGroup=C.Y,(0,n.addSphere)(w,q,F,2),(0,r.addCylinder)(w,y.Vec3.origin,q,1,k),w.currentGroup=C.Z,(0,n.addSphere)(w,N,F,2),(0,r.addCylinder)(w,y.Vec3.origin,N,1,k),I.showPlanes){y.Vec3.scale(U,U,.5),y.Vec3.scale(q,q,.5),y.Vec3.scale(N,N,.5),w.currentGroup=C.XY,c.MeshBuilder.addTriangle(w,y.Vec3.origin,U,q),c.MeshBuilder.addTriangle(w,y.Vec3.origin,q,U);const j=y.Vec3.add((0,y.Vec3)(),U,q);c.MeshBuilder.addTriangle(w,j,U,q),c.MeshBuilder.addTriangle(w,j,q,U),w.currentGroup=C.XZ,c.MeshBuilder.addTriangle(w,y.Vec3.origin,U,N),c.MeshBuilder.addTriangle(w,y.Vec3.origin,N,U);const H=y.Vec3.add((0,y.Vec3)(),U,N);c.MeshBuilder.addTriangle(w,H,U,N),c.MeshBuilder.addTriangle(w,H,N,U),w.currentGroup=C.YZ,c.MeshBuilder.addTriangle(w,y.Vec3.origin,q,N),c.MeshBuilder.addTriangle(w,y.Vec3.origin,N,q);const G=y.Vec3.add((0,y.Vec3)(),q,N);c.MeshBuilder.addTriangle(w,G,q,N),c.MeshBuilder.addTriangle(w,G,N,q)}return c.MeshBuilder.getMesh(w)}function M(I,B){const w=100*I.scale,O=x(I,void 0);O.setBoundingSphere(f.Sphere3D.create(y.Vec3.create(w/2,w/2,w/2),w+w/4));const F=L=>{switch(L){case C.X:return I.colorX;case C.Y:return I.colorY;case C.Z:return I.colorZ;case C.XY:return I.planeColorXY;case C.XZ:return I.planeColorXZ;case C.YZ:return I.planeColorYZ;case C.Origin:return I.originColor;default:return d.ColorNames.grey}};return g.Shape.create("axes-mesh",{},O,F,()=>1,()=>"")}function D(I){const B=M(I);return g.Shape.createRenderObject(B,{...u.ParamDefinition.getDefaultValues(i.Mesh.Params),...I,ignoreLight:!0,cellSize:0})}function V(I,B){const w=s.TextBuilder.create(I,8,8,B),O=100*I.scale,F=y.Vec3.scale((0,y.Vec3)(),y.Vec3.unitX,O),L=y.Vec3.scale((0,y.Vec3)(),y.Vec3.unitY,O),U=y.Vec3.scale((0,y.Vec3)(),y.Vec3.unitZ,O),q=100*I.labelScale;return w.add(I.labelX,F[0],F[1],F[2],0,q,C.X),w.add(I.labelY,L[0],L[1],L[2],0,q,C.Y),w.add(I.labelZ,U[0],U[1],U[2],0,q,C.Z),w.getText()}function R(I,B){const w=100*I.scale,O=V(I,void 0);O.setBoundingSphere(f.Sphere3D.create(y.Vec3.create(w/2,w/2,w/2),w));const F=L=>{switch(L){case C.X:return I.labelColorX;case C.Y:return I.labelColorY;case C.Z:return I.labelColorZ;default:return d.ColorNames.grey}};return g.Shape.create("axes-text",{},O,F,()=>1,()=>"")}function E(I){const B=R(I);return g.Shape.createRenderObject(B,{...u.ParamDefinition.getDefaultValues(o.Text.Params),...I,alpha:I.labelOpacity,cellSize:0})}return Va}var $u={},fb={},L8;function tse(){return L8||(L8=1,Object.defineProperty(fb,"__esMo
6387dule",{value:!0}),fb.compose_frag=void 0,fb.compose_frag
vendor: 10,285 bytes, lines 6387-6687
6387=`
6388precision highp float;
6389precision highp sampler2D;
6390
6391uniform sampler2D tShaded;
6392uniform sampler2D tColor;
6393uniform sampler2D tNormal;
6394uniform sampler2D tTransparentColor;
6395uniform sampler2D tSsaoDepth;
6396uniform sampler2D tSsaoDepthTransparent;
6397uniform sampler2D tDepthOpaque;
6398uniform sampler2D tDepthTransparent;
6399uniform sampler2D tOutlines;
6400uniform sampler2D tBloom;
6401uniform vec2 uTexSize;
6402
6403uniform float uNear;
6404uniform float uFar;
6405uniform float uFogNear;
6406uniform float uFogFar;
6407uniform vec3 uFogColor;
6408uniform vec3 uOutlineColor;
6409uniform vec3 uOcclusionColor;
6410uniform bool uTransparentBackground;
6411
6412uniform float uDenoiseThreshold;
6413
6414#include common
6415
6416float getViewZ(const in float depth) {
6417    #if dOrthographic == 1
6418        return orthographicDepthToViewZ(depth, uNear, uFar);
6419    #else
6420        return perspectiveDepthToViewZ(depth, uNear, uFar);
6421    #endif
6422}
6423
6424float getDepthOpaque(const in vec2 coords) {
6425    #ifdef depthTextureSupport
6426        return texture2D(tDepthOpaque, coords).r;
6427    #else
6428        return unpackRGBAToDepth(texture2D(tDepthOpaque, coords));
6429    #endif
6430}
6431
6432float getDepthTransparent(const in vec2 coords) {
6433    #if defined(dTransparentOutline) || defined(dOcclusionEnable) || defined(dBloomEnable)
6434        return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords)).x;
6435    #else
6436        return 1.0;
6437    #endif
6438}
6439
6440bool isBackground(const in float depth) {
6441    // (2^24 - 1) / 2^24, max of 24-bit packed depth; also passes raw fp32.
6442    return depth >= 0.99999994;
6443}
6444
6445float getSsao(vec2 coords) {
6446    float rawSsao = unpackRGToUnitInterval(texture2D(tSsaoDepth, coords).xy);
6447    if (rawSsao > 0.999) {
6448        return 1.0;
6449    } else if (rawSsao > 0.001) {
6450        return rawSsao;
6451    }
6452    // treat values close to 0.0 as errors and return no occlusion
6453    return 1.0;
6454}
6455
6456float getSsaoTransparent(vec2 coords) {
6457    float rawSsao = unpackRGToUnitInterval(texture2D(tSsaoDepthTransparent, coords).xy);
6458    if (rawSsao > 0.999) {
6459        return 1.0;
6460    } else if (rawSsao > 0.001) {
6461        return rawSsao;
6462    }
6463    // treat values close to 0.0 as errors and return no occlusion
6464    return 1.0;
6465}
6466
6467//
6468
6469// TODO: investigate
6470// https://interplayoflight.wordpress.com/2022/03/26/raytraced-global-illumination-denoising/
6471
6472//
6473
6474#define INV_SQRT_OF_2PI 0.39894228040143267793994605993439  // 1.0/SQRT_OF_2PI
6475#define INV_PI 0.31830988618379067153776752674503
6476
6477// https://github.com/BrutPitt/glslSmartDeNoise
6478//
6479//  smartDeNoise - parameters
6480//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6481//
6482//  sampler2D tex     - sampler image / texture
6483//  vec2 uv           - actual fragment coord
6484//  float sigma  >  0 - sigma Standard Deviation
6485//  float kSigma >= 0 - sigma coefficient
6486//      kSigma * sigma  -->  radius of the circular kernel
6487//  float threshold   - edge sharpening threshold
6488
6489float NormalWeightStrength = 6.0;
6490
6491vec4 smartDeNoise(sampler2D tex, vec2 uv) {
6492    float sigma = 3.0;
6493    float kSigma = 2.0;
6494    float threshold = uDenoiseThreshold;
6495
6496    vec4 centrPx = texture2D(tex, uv);
6497    if (threshold == 0.0) return centrPx;
6498
6499    float invSigmaQx2 = 0.5 / (sigma * sigma);      // 1.0 / (sigma^2 * 2.0)
6500    float invSigmaQx2PI = INV_PI * invSigmaQx2;    // 1.0 / (sqrt(PI) * sigma)
6501
6502    float invThresholdSqx2 = 0.5 / (threshold * threshold);     // 1.0 / (sigma^2 * 2.0)
6503    float invThresholdSqrt2PI = INV_SQRT_OF_2PI / threshold;   // 1.0 / (sqrt(2*PI) * sigma)
6504
6505    float zBuff = 0.0;
6506    vec4 aBuff = vec4(0.0);
6507
6508    vec3 normal = texture2D(tNormal, uv).xyz;
6509
6510    for (int x = -6; x <= 6; ++x) {
6511        for (int y = -6; y <= 6; ++y) {
6512            vec2 d = vec2(float(x), float(y));
6513
6514            float blurFactor = exp(-dot(d , d) * invSigmaQx2) * invSigmaQx2PI;
6515            vec2 uvSample = uv + d / uTexSize;
6516
6517            vec3 normalSample = texture2D(tNormal, uvSample).xyz;
6518            float normalW = saturate(dot(normal, normalSample));
6519            normalW = pow(normalW, NormalWeightStrength);
6520            blurFactor *= normalW;
6521
6522            vec4 walkPx = texture2D(tex, uvSample);
6523
6524            vec4 dC = walkPx - centrPx;
6525            float deltaFactor = exp(-dot(dC, dC) * invThresholdSqx2) * invThresholdSqrt2PI * blurFactor;
6526
6527            zBuff += deltaFactor;
6528            aBuff += deltaFactor * walkPx;
6529        }
6530    }
6531
6532    if (zBuff <= EPSILON) {
6533        return centrPx;
6534    }
6535
6536    return aBuff / zBuff;
6537}
6538
6539int squaredOutlineScale = dOutlineScale * dOutlineScale;
6540void getOutline(const in vec2 coords, out bool hasOpaque, out bool hasTransparent, out float opaqueDepth, out float transparentDepth, out float alpha) {
6541    vec2 invTexSize = 1.0 / uTexSize;
6542    
6543    hasOpaque = false;
6544    hasTransparent = false;
6545    opaqueDepth = 1.0;
6546    transparentDepth = 1.0;
6547    alpha = 0.0;
6548    for (int y = -dOutlineScale; y <= dOutlineScale; y++) {
6549        for (int x = -dOutlineScale; x <= dOutlineScale; x++) {
6550            if (x * x + y * y > squaredOutlineScale) {
6551                continue;
6552            }
6553
6554            vec2 sampleCoords = coords + vec2(float(x), float(y)) * invTexSize;
6555
6556            vec4 sampleOutlineCombined = texture2D(tOutlines, sampleCoords);
6557            float sampleOpaqueDepth = unpackRGToUnitInterval(sampleOutlineCombined.gb);
6558            float sampleTransparentDepth = sampleOutlineCombined.a;
6559            vec2 sampleFlagWithAlpha = unpack2x4(sampleOutlineCombined.r);
6560
6561            float sampleFlag = sampleFlagWithAlpha.x;
6562            float sampleAlpha = clamp(sampleFlagWithAlpha.y * 0.5, 0.01, 1.0);
6563            
6564            if ((sampleFlag > 0.20 && sampleFlag < 0.30) || (sampleFlag > 0.70 && sampleFlag < 0.80)) { // transparent || both
6565                if (sampleOpaqueDepth < opaqueDepth) {
6566                    hasOpaque = true;
6567                    opaqueDepth = sampleOpaqueDepth;
6568                }
6569            }
6570            
6571            if ((((sampleFlag > 0.45 && sampleFlag < 0.55) || (sampleFlag > 0.70 && sampleFlag < 0.80))) && sampleTransparentDepth < transparentDepth) { // transparent || both
6572                hasTransparent = true;
6573                transparentDepth = sampleTransparentDepth;
6574                alpha = sampleAlpha;
6575            }
6576        }
6577    }
6578}
6579
6580void main() {
6581    vec2 coords = gl_FragCoord.xy / uTexSize;
6582
6583    #ifdef dDenoise
6584        vec4 color = smartDeNoise(tColor, coords);
6585    #else
6586        vec4 color = texture2D(tColor, coords);
6587    #endif
6588
6589    float opaqueDepth = getDepthOpaque(coords);
6590    float backgroundViewZ = 2.0 * uFar;
6591    float opaqueSelfViewZ = isBackground(opaqueDepth) ? backgroundViewZ : getViewZ(opaqueDepth);
6592    float fogFactor = smoothstep(uFogNear, uFogFar, abs(opaqueSelfViewZ));
6593    float fogAlpha = 1.0 - fogFactor;
6594
6595    float transparentDepth = 1.0;
6596    #ifdef dBlendTransparency
6597        bool blendTransparency = true;
6598        vec4 transparentColor = texture2D(tTransparentColor, coords);
6599
6600        transparentDepth = getDepthTransparent(coords);
6601    #endif
6602
6603    float alpha = 1.0;
6604    if (!uTransparentBackground) {
6605        // mix opaque objects with background color
6606        color.rgb = mix(color.rgb, uFogColor, fogFactor);
6607    } else {
6608        // pre-multiplied alpha expected for transparent background
6609        alpha = fogAlpha;
6610        color.rgb *= fogAlpha;
6611    }
6612
6613    #if defined(dOcclusionEnable)
6614        if (!isBackground(opaqueDepth)) {
6615            float occlusionFactor = getSsao(coords);
6616
6617            if (!uTransparentBackground) {
6618                color.rgb = mix(mix(uOcclusionColor, uFogColor, fogFactor), color.rgb, occlusionFactor);
6619            } else {
6620                color.rgb = mix(uOcclusionColor * (1.0 - fogFactor), color.rgb, occlusionFactor);
6621            }
6622        }
6623        #ifdef dBlendTransparency
6624            if (!isBackground(transparentDepth)) {
6625                float viewDist = abs(getViewZ(transparentDepth));
6626                float fogFactor = smoothstep(uFogNear, uFogFar, viewDist);
6627                float occlusionFactor = getSsaoTransparent(coords);
6628                transparentColor.rgb = mix(uOcclusionColor * (1.0 - fogFactor), transparentColor.rgb, occlusionFactor);
6629            }
6630        #endif
6631    #endif
6632
6633    #ifdef dOutlineEnable
6634        bool hasOpaque;
6635        bool hasTransparent;
6636        float outlineOpaqueDepth;
6637        float outlineTransparentDepth;
6638        float outlineAlpha;
6639        getOutline(coords, hasOpaque, hasTransparent, outlineOpaqueDepth, outlineTransparentDepth, outlineAlpha);
6640
6641        if (hasOpaque) {
6642            float viewDist = abs(getViewZ(outlineOpaqueDepth));
6643            float fogFactor = smoothstep(uFogNear, uFogFar, viewDist);
6644            if (!uTransparentBackground) {                    
6645                color.rgb = mix(uOutlineColor, uFogColor, fogFactor);
6646            } else {
6647                alpha = 1.0 - fogFactor;
6648                color.rgb = mix(uOutlineColor, vec3(0.0), fogFactor);
6649            }
6650        }  
6651
6652        #ifdef dBlendTransparency            
6653            if (hasTransparent) {
6654                if (hasOpaque && outlineOpaqueDepth < outlineTransparentDepth) {
6655                    blendTransparency = false;
6656                } else {
6657                    float finalOutlineAlpha = clamp(outlineAlpha * 2.0, 0.0, 1.0);
6658                    float viewDist = abs(getViewZ(outlineTransparentDepth));
6659                    float fogFactor = smoothstep(uFogNear, uFogFar, viewDist);
6660                    float finalAlpha = max(transparentColor.a, finalOutlineAlpha * (1.0 - fogFactor));
6661                    transparentColor.a = finalAlpha;
6662                    transparentColor.rgb = uOutlineColor * finalAlpha;
6663                }
6664            }
6665        #endif
6666    #endif
6667
6668    #ifdef dBlendTransparency
6669        if (blendTransparency) {
6670            if (transparentColor.a != 0.0) {
6671                // blending
6672                color = transparentColor + color * (1.0 - transparentColor.a);
6673                alpha = transparentColor.a + alpha * (1.0 - transparentColor.a);
6674            }
6675        }
6676    #endif
6677
6678    #ifdef dBloomEnable
6679        vec4 bloom = texture2D(tBloom, coords);
6680        // additive glow over geometry and background alike; alpha just covers the premultiplied rgb
6681        color.rgb += bloom.rgb;
6682        alpha = min(max(alpha, max(color.r, max(color.g, color.b))), 1.0);
6683    #endif
6684
6685    gl_FragColor = vec4(color.rgb, alpha);
6686}
6687`
6687),fb}var Xu={},mb={},N8;function rse(){return N8||(N8=1,Object.defineProperty(mb,"__esModule",{value:!0}),mb.trace_frag=void 0,mb.trace_frag
vendor: 11,065 bytes, lines 6687-7053
6687=`
6688precision highp int;
6689precision highp float;
6690precision highp sampler2D;
6691
6692uniform sampler2D tColor;
6693uniform sampler2D tNormal;
6694uniform sampler2D tShaded;
6695uniform sampler2D tThickness;
6696uniform sampler2D tAccumulate;
6697uniform sampler2D tDepth;
6698uniform vec2 uTexSize;
6699uniform vec4 uBounds;
6700
6701uniform float uNear;
6702uniform float uFar;
6703uniform float uFogNear;
6704uniform float uFogFar;
6705uniform vec3 uFogColor;
6706
6707#if dLightCount != 0
6708    uniform vec3 uLightDirection[dLightCount];
6709    uniform vec3 uLightColor[dLightCount];
6710#endif
6711uniform vec3 uAmbientColor;
6712uniform vec3 uLightStrength;
6713
6714uniform int uFrameNo;
6715
6716uniform float uRayDistance;
6717uniform float uMinThickness;
6718uniform float uThicknessFactor;
6719uniform float uThickness;
6720
6721uniform float uShadowSoftness;
6722uniform float uShadowThickness;
6723
6724uniform mat4 uProjection;
6725uniform mat4 uInvProjection;
6726
6727#include common
6728
6729// parts adapted from
6730// - https://blog.demofox.org/2020/05/25/casual-shadertoy-path-tracing-1-basic-camera-diffuse-emissive/
6731// - https://github.com/0beqz/realism-effects/blob/v2-debug/src/ssgi/shader/ssgi.frag
6732
6733//
6734
6735// after a hit, it moves the ray this far along the normal away from a surface.
6736// Helps prevent incorrect intersections when rays bounce off of objects.
6737#define RayPosNormalNudge 0.0001
6738
6739#if __VERSION__ == 100
6740    #define StateType float
6741
6742    // from https://www.shadertoy.com/view/4djSRW
6743    float hash14(vec4 p4) {
6744        p4 = fract(p4  * vec4(0.1031, 0.1030, 0.0973, 0.1099));
6745        p4 += dot(p4, p4.wzxy + 33.33);
6746        return fract((p4.x + p4.y) * (p4.z + p4.w));
6747    }
6748
6749    float randomFloat(inout float state) {
6750        state += 0.06711056;
6751        return 1.0 - hash14(vec4(gl_FragCoord.xy, float(uFrameNo), state));
6752    }
6753#else
6754    #define StateType uint
6755
6756    // https://www.pcg-random.org/
6757    // https://jcgt.org/published/0009/03/02/
6758    uint pcg(inout uint seed) {
6759        seed = seed * 747796405u + 2891336453u;
6760        uint word = ((seed >> ((seed >> 28u) + 4u)) ^ seed) * 277803737u;
6761        return (word >> 22u) ^ word;
6762    }
6763
6764    float randomFloat(inout uint state) {
6765        return float(pcg(state)) / 4294967296.0;
6766    }
6767#endif
6768
6769vec3 randomUnitVector(inout StateType state) {
6770    float z = randomFloat(state) * 2.0 - 1.0;
6771    float a = randomFloat(state) * TWO_PI;
6772    float r = sqrt(1.0 - z * z);
6773    float x = r * cos(a);
6774    float y = r * sin(a);
6775    return vec3(x, y, z);
6776}
6777
6778struct RayHitInfo {
6779    bool missed;
6780    vec3 position;
6781    vec3 normal;
6782    vec3 color;
6783    vec3 emissive;
6784};
6785
6786//
6787
6788float getDepth(const in vec2 coords) {
6789    vec2 c = vec2(clamp(coords.x, uBounds.x, uBounds.z), clamp(coords.y, uBounds.y, uBounds.w));
6790    return texture2D(tDepth, c).r;
6791}
6792
6793float getThickness(const in vec2 coords) {
6794    vec2 c = vec2(clamp(coords.x, uBounds.x, uBounds.z), clamp(coords.y, uBounds.y, uBounds.w));
6795    return unpackRGBAToDepth(texture2D(tThickness, c));
6796}
6797
6798bool isBackground(const in float depth) {
6799    return depth == 1.0;
6800}
6801
6802float getViewZ(const in float depth) {
6803    #if dOrthographic == 1
6804        return orthographicDepthToViewZ(depth, uNear, uFar);
6805    #else
6806        return perspectiveDepthToViewZ(depth, uNear, uFar);
6807    #endif
6808}
6809
6810vec2 viewSpaceToScreenSpace(const vec3 position) {
6811    vec4 projectedCoord = uProjection * vec4(position, 1.0);
6812    projectedCoord.xy /= projectedCoord.w;
6813    // [-1, 1] --> [0, 1] (NDC to screen position)
6814    projectedCoord.xy = projectedCoord.xy * 0.5 + 0.5;
6815    return projectedCoord.xy;
6816}
6817
6818vec2 binarySearch(inout vec3 dir, inout vec3 hitPos) {
6819    float rayHitDepthDifference;
6820    vec2 coords;
6821
6822    dir *= 0.5;
6823    hitPos -= dir;
6824
6825    for (int i = 0; i < dRefineSteps; i++) {
6826        coords = viewSpaceToScreenSpace(hitPos);
6827        float depth = getDepth(coords);
6828        float z = getViewZ(depth);
6829        rayHitDepthDifference = z - hitPos.z;
6830
6831        dir *= 0.5;
6832        if (rayHitDepthDifference >= 0.0) {
6833            hitPos -= dir;
6834        } else {
6835            hitPos += dir;
6836        }
6837    }
6838
6839    coords = viewSpaceToScreenSpace(hitPos);
6840
6841    return coords;
6842}
6843
6844float calculateGrowthFactor(float begin, float end, float steps) {
6845    return pow(end / begin, 1.0 / steps);
6846}
6847
6848vec2 rayMarch(in vec3 dir, in float thickness, inout vec3 hitPos, out bool missed) {
6849    float rayHitDepthDifference;
6850    vec2 coords;
6851
6852    float begin = float(dFirstStepSize);
6853    dir *= begin;
6854    missed = false;
6855    float gf = calculateGrowthFactor(begin, uRayDistance, float(dSteps));
6856
6857    for (int i = 1; i < dSteps; i++) {
6858        hitPos += dir;
6859        dir *= gf;
6860
6861        coords = viewSpaceToScreenSpace(hitPos);
6862        float depth = getDepth(coords);
6863        float z = getViewZ(depth);
6864        rayHitDepthDifference = z - hitPos.z;
6865
6866        if (thickness == 0.0) {
6867            #ifdef dThicknessMode_auto
6868                thickness = max(uMinThickness, (getViewZ(getThickness(coords)) - z) * uThicknessFactor * texture2D(tColor, coords).a);
6869            #else
6870                thickness = uThickness;
6871            #endif
6872        }
6873
6874        if (rayHitDepthDifference >= 0.0 && rayHitDepthDifference < thickness) {
6875            if (dRefineSteps == 0) {
6876                return coords;
6877            } else {
6878                return binarySearch(dir, hitPos);
6879            }
6880        }
6881    }
6882
6883    missed = true;
6884
6885    return coords;
6886}
6887
6888//
6889
6890void trace(in vec3 rayPos, in vec3 rayDir, inout RayHitInfo hitInfo) {
6891    vec3 hitPos = vec3(rayPos);
6892    bool missed;
6893    vec2 coords;
6894    coords = rayMarch(rayDir, 0.0, hitPos, missed);
6895
6896    hitInfo.missed = missed;
6897    hitInfo.position = hitPos;
6898    hitInfo.normal = -texture2D(tNormal, coords).rgb;
6899    hitInfo.color = texture2D(tColor, coords).rgb;
6900    hitInfo.emissive = texture2D(tColor, coords).rgb * texture2D(tNormal, coords).a * 2.0;
6901
6902    float depth = getDepth(coords);
6903    if (isBackground(depth)) {
6904        hitInfo.emissive = vec3(0.0);
6905    }
6906}
6907
6908vec3 viewPos;
6909
6910vec3 colorForRay(in vec3 startRayPos, in vec3 startRayDir, inout StateType rngState) {
6911    vec3 ret = vec3(0.0, 0.0, 0.0);
6912
6913    vec3 throughput = vec3(1.0, 1.0, 1.0);
6914    vec3 rayPos = startRayPos;
6915    vec3 rayDir = startRayDir;
6916
6917    RayHitInfo hitInfo;
6918    RayHitInfo prevHitInfo;
6919
6920    for (int bounceIndex = 0; bounceIndex <= dBounces; ++bounceIndex) {
6921        // shoot a ray out into the world
6922        if (bounceIndex == 0) {
6923            vec2 coords = gl_FragCoord.xy / uTexSize;
6924            float depth = getDepth(coords);
6925
6926            hitInfo.missed = false;
6927            hitInfo.position = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection);
6928            hitInfo.normal = -texture2D(tNormal, coords).rgb;
6929            hitInfo.color = texture2D(tShaded, coords).rgb;
6930            hitInfo.emissive = texture2D(tColor, coords).rgb * texture2D(tNormal, coords).a;
6931
6932            // shadow
6933            #ifdef dShadowEnable
6934                #if dLightCount != 0
6935                    vec3 directLight = vec3(uAmbientColor);
6936                    #pragma unroll_loop_start
6937                    bool missed;
6938                    vec3 hitPos;
6939                    for (int i = 0; i < dLightCount; ++i) {
6940                        missed = false;
6941                        hitPos = viewPos + hitInfo.normal * RayPosNormalNudge;
6942                        hitPos += -uLightDirection[i] * (randomFloat(rngState));
6943                        rayMarch(-uLightDirection[i] + randomUnitVector(rngState) * uShadowSoftness, uShadowThickness, hitPos, missed);
6944                        if (missed) directLight += uLightColor[i];
6945                    }
6946                    #pragma unroll_loop_end
6947                    hitInfo.color *= directLight / uLightStrength;
6948                #endif
6949            #endif
6950
6951            if (hitInfo.normal == vec3(0.0)) {
6952                hitInfo.missed = true;
6953            }
6954        } else {
6955            prevHitInfo = hitInfo;
6956            trace(rayPos, rayDir, hitInfo);
6957        }
6958
6959        // if the ray missed, we are done
6960        if (hitInfo.missed) {
6961            vec3 accIrradiance = vec3(1.0);
6962            #ifdef dGlow
6963                if (bounceIndex > 1) {
6964                    accIrradiance = uLightStrength;
6965                }
6966            #else
6967                if (bounceIndex > 1) {
6968                    accIrradiance = uAmbientColor;
6969                    #if dLightCount != 0
6970                        #pragma unroll_loop_start
6971                        float dotNL;
6972                        vec3 irradiance;
6973                        for (int i = 0; i < dLightCount; ++i) {
6974                            dotNL = saturate(dot(prevHitInfo.normal, -uLightDirection[i]));
6975                            irradiance = dotNL * uLightColor[i];
6976                            accIrradiance += irradiance;
6977                        }
6978                        #pragma unroll_loop_end
6979                    #endif
6980                }
6981            #endif
6982            ret += prevHitInfo.color * accIrradiance * throughput;
6983            break;
6984        }
6985
6986        // add emissive light
6987        ret += hitInfo.emissive * throughput;
6988
6989        // update the ray position
6990        rayPos = hitInfo.position + hitInfo.normal * RayPosNormalNudge;
6991
6992        // new ray direction from normal oriented cosine weighted hemisphere sample
6993        rayDir = normalize(hitInfo.normal + randomUnitVector(rngState));
6994
6995        if (bounceIndex == 0) {
6996            continue;
6997        }
6998
6999        // update the colorMultiplier.
7000        throughput *= hitInfo.color;
7001
7002        // Russian Roulette
7003        // As the throughput gets smaller, the ray is more likely to get terminated early.
7004        // Survivors have their value boosted to make up for fewer samples being in the average.
7005        {
7006            float p = max(throughput.r, max(throughput.g, throughput.b));
7007            if (randomFloat(rngState) > p)
7008                break;
7009
7010            // Add the energy we 'lose' by randomly terminating paths
7011            throughput *= 1.0 / p;
7012        }
7013    }
7014
7015    // return pixel color
7016    return ret;
7017}
7018
7019void main() {
7020    vec2 coords = gl_FragCoord.xy / uTexSize;
7021    float depth = getDepth(coords);
7022
7023    if (isBackground(depth)) {
7024        gl_FragColor = texture2D(tColor, coords);
7025        return;
7026    }
7027
7028    #if __VERSION__ == 100
7029        float rngState = 26699.0;
7030    #else
7031        // initialize a random number state based on gl_FragCoord and uFrameNo
7032        uint rngState = uint(uint(gl_FragCoord.x) * 1973u + uint(gl_FragCoord.y) * 9277u + uint(uFrameNo) * 26699u) | 1u;
7033    #endif
7034
7035    vec3 cameraPos = vec3(0.0, 0.0, 0.0);
7036    viewPos = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection);
7037    vec3 rayDir = normalize(viewPos);
7038
7039    // raytrace for this pixel
7040    vec3 color = vec3(0.0, 0.0, 0.0);
7041    for (int index = 0; index < int(dRendersPerFrame); ++index) {
7042        color += colorForRay(cameraPos, rayDir, rngState) / float(dRendersPerFrame);
7043    }
7044
7045    // average the frames together
7046    vec4 lastFrameColor = texture2D(tAccumulate, coords);
7047    float blend = (uFrameNo < 1 || lastFrameColor.a == 0.0) ? 1.0 : 1.0 / (1.0 + (1.0 / lastFrameColor.a));
7048    color = mix(lastFrameColor.rgb, color, blend);
7049
7050    // show the result
7051    gl_FragColor = vec4(color, blend);
7052}
7053`
7053),mb}var pb={},q8;function nse(){return q8||(q8=1,Object.defineProperty(pb,"__esModule",{value:!0}),pb.accumulate_frag=void 0,pb.accumulate_frag=`
7054precision highp float;
7055precision highp sampler2D;
7056
7057uniform sampler2D tColor;
7058uniform vec2 uTexSize;
7059uniform float uWeight;
7060
7061void main() {
7062    vec2 coords = gl_FragCoord.xy / uTexSize;
7063    gl_FragColor = texture2D(tColor, coords) * uWeight;
7064}
7065`),pb}var U8;function ise(){if(U8)return Xu;U8=1,Object.defineProperty(Xu,"__esModule",{value:!0}),Xu.TracingPass=Xu.TracingParams=void 0;const e=Mr(),t=Yt(),r=et(),n=Ct(),i=Kt(),c=Gr(),o=Jt(),s=rse(),h=ns(),f=Zt(),y=Xr(),_=Fa(),g=wt(),a=Ne(),d=wn(),p=nse(),u=ci(),m=ir();Xu.TracingParams={rendersPerFrame:a.ParamDefinition.Interval([1,16],{min:1,max:64,step:1},{description:"Number of rays per pixel each frame. May be adjusted to reach targetFps but will stay within given interval."}),targetFps:a.ParamDefinition.Numeric(30,{min:0,max:120,step:.1},{description:"Target FPS per frame. If observed FPS is lower or higher, some parameters may get adjusted."}),steps:a.ParamDefinition.Numeric(32,{min:1,max:1024,step:1}),firstStepSize:a.ParamDefinition.Numeric(.01,{min:.001,max:1,step:.001}),refineSteps:a.ParamDefinition.Numeric(4,{min:0,max:8,step:1},{description:"Number of refine steps per ray hit. May be lower to reach targetFps."}),rayDistance:a.ParamDefinition.Numeric(256,{min:1,max:8192,step:1},{description:"Maximum distance a ray can travel (in world units)."}),thicknessMode:a.ParamDefinition.Select("auto",a.ParamDefinition.arrayToOptions(["auto","fixed"])),minThickness:a.ParamDefinition.Numeric(.5,{min:.1,max:16,step:.1},{hideIf:A=>A.thicknessMode==="fixed"}),thicknessFactor:a.ParamDefinition.Numeric(1,{min:.1,max:2,step:.05},{hideIf:A=>A.thicknessMode==="fixed"}),thickness:a.ParamDefinition.Numeric(4,{min:.1,max:512,step:.1},{hideIf:A=>A.thicknessMode==="auto"}),bounces:a.ParamDefinition.Numeric(4,{min:1,max:32,step:1},{description:"Number of bounces for each ray."}),glow:a.ParamDefinition.Boolean(!0,{description:"Bounced rays always get the full light. This produces a slight glowing effect."}),shadowEnable:a.ParamDefinition.Boolean(!1),shadowSoftness:a.ParamDefinition.Numeric(.1,{min:.01,max:1,step:.01}),shadowThickness:a.ParamDefinition.Numeric(.5,{min:.1,max:32,step:.1})};class v{constructor(x,M){this.webgl=x,this.drawPass=M,this.clearAdjustedProps=!0,this.prevTime=0,this.currTime=0,this.rendersPerFrame=1,this.refineSteps=1,this.steps=16;const{extensions:{drawBuffers:D,colorBufferHalfFloat:V,textureHalfFloat:R},resources:E,isWebGL2:I}=x,{depthTextureOpaque:B}=M,w=B.getWidth(),O=B.getHeight();I?(this.shadedTextureOpaque=E.texture("image-uint8","rgba","ubyte","nearest"),this.shadedTextureOpaque.define(w,O),this.normalTextureOpaque=V&&R?E.texture("image-float16","rgba","fp16","nearest"):E.texture("image-float32","rgba","float","nearest"),this.normalTextureOpaque.define(w,O),this.colorTextureOpaque=E.texture("image-uint8","rgba","ubyte","nearest"),this.colorTextureOpaque.define(w,O)):(this.shadedTextureOpaque=E.texture("image-float32","rgba","float","nearest"),this.shadedTextureOpaque.define(w,O),this.normalTextureOpaque=E.texture("image-float32","rgba","float","nearest"),this.normalTextureOpaque.define(w,O),this.colorTextureOpaque=E.texture("image-float32","rgba","float","nearest"),this.colorTextureOpaque.define(w,O)),this.framebuffer=E.framebuffer(),this.framebuffer.bind(),D.drawBuffers([D.COLOR_ATTACHMENT0,D.COLOR_ATTACHMENT1,D.COLOR_ATTACHMENT2]),this.shadedTextureOpaque.attachFramebuffer(this.framebuffer,"color0"),this.normalTextureOpaque.attachFramebuffer(this.framebuffer,"color1"),this.colorTextureOpaque.attachFramebuffer(this.framebuffer,"color2"),this.thicknessTarget=x.createRenderTarget(w,O,!0,"uint8","nearest"),this.holdTarget=x.createRenderTarget(w,O,!1,"float32"),this.accumulateTarget=x.createRenderTarget(w,O,!1,"float32"),this.composeTarget=x.createRenderTarget(w,O,!1,"uint8","linear"),this.traceRenderable=C(x,this.colorTextureOpaque,this.normalTextureOpaque,this.shadedTextureOpaque,this.thicknessTarget.texture,this.accumulateTarget.texture,this.drawPass.depthTextureOpaque),this.accumulateRenderable=T(x,this.holdTarget.texture)}getByteCount(){return this.thicknessTarget.getByteCount()+this.holdTarget.getByteCount()+this.accumulateTarget.getByteCount()+this.composeTarget.getByteCount()+this.colorTextureOpaque.getByteCount()+this.normalTextureOpaque.getByteCount()+this.shadedTextureOpaque.getByteCount()}renderInput(x,M,D,V){n.isTimingMode&&this.webgl.timer.mark("TracePass.renderInput");const{gl:R,state:E}=this.webgl;this.framebuffer.bind(),this.drawPass.depthTextureOpaque.attachFramebuffer(this.framebuffer,"depth"),x.clear(!0),x.renderTracing(D.primitives,M),V.thicknessMode==="auto"&&(this.thicknessTarget.bind(),E.clearColor(0,0,0,0),R.clear(R.COLOR_BUFFER_BIT|R.DEPTH_BUFFER_BIT),x.renderDepthOpaqueBack(D.primitives,M)),n.isTimingMode&&this.webgl.timer.markEnd("TracePass.renderInput")}setSize(x,M){const D=this.composeTarget.getWidth(),V=this.composeTarget.getHeight();(x!==D||M!==V)&&(this.thicknessTarget.setSize(x,M),this.holdTarget.setSize(x,M),this.accumulateTarget.setSize(x,M),this.composeTarget.setSize(x,M),this.colorTextureOpaque.define(x,M),this.normalTextureOpaque.define(x,M),this.shadedTextureOpaque.define(x,M),r.ValueCell.update(this.traceRenderable.values.uTexSize,h.Vec2.set(this.traceRenderable.values.uTexSize.ref.value,x,M)),r.ValueCell.update(this.accumulateRenderable.values.uTexSize,h.Vec2.set(this.accumulateRenderable.values.uTexSize.ref.value,x,M)))}reset(){const{drawBuffers:x}=this.webgl.extensions;this.framebuffer.bind(),x.drawBuffers([x.COLOR_ATTACHMENT0,x.COLOR_ATTACHMENT1,x.COLOR_ATTACHMENT2]),this.shadedTextureOpaque.attachFramebuffer(this.framebuffer,"color0"),this.normalTextureOpaque.attachFramebuffer(this.framebuffer,"color1"),this.colorTextureOpaque.attachFramebuffer(this.framebuffer,"color2"),this.restart(!0)}restart(x=!1){const{gl:M,state:D}=this.webgl;this.accumulateTarget.bind(),D.clearColor(0,0,0,0),M.clear(M.COLOR_BUFFER_BIT),this.composeTarget.bind(),D.clearColor(0,0,0,0),M.clear(M.COLOR_BUFFER_BIT),x&&(this.prevTime=0,this.currTime=0,this.clearAdjustedProps=!0)}increaseAdjustedProps(x){this.steps+=1,this.steps>x.steps&&(this.refineSteps+=1),this.refineSteps>x.refineSteps&&(this.rendersPerFrame+=1)}decreaseAdjustedProps(x){const M=Math.min(1,x.refineSteps);this.rendersPerFrame-=1,this.rendersPerFrame<1&&(this.refineSteps-=1),this.refineSteps<M&&(this.steps-=1)}getAdjustedProps(x,M){this.currTime=(0,u.now)();const D=Math.min(1,x.refineSteps),V=Math.round(x.steps/2);if(this.clearAdjustedProps&&(this.rendersPerFrame=x.rendersPerFrame[0],this.refineSteps=D,this.steps=V,this.clearAdjustedProps=!1),M>0){const R=1e3/x.targetFps,E=this.currTime-this.prevTime;let I=Math.round(E/R);if(I>=2)for(;I>0;)this.decreaseAdjustedProps(x),I-=1;else E<R?this.increaseAdjustedProps(x):E>R+.5&&this.decreaseAdjustedProps(x)}return this.prevTime=this.currTime,this.rendersPerFrame=(0,m.clamp)(this.rendersPerFrame,x.rendersPerFrame[0],x.rendersPerFrame[1]),this.refineSteps=(0,m.clamp)(this.refineSteps,D,x.refineSteps),this.steps=(0,m.clamp)(this.steps,V,x.steps),{rendersPerFrame:M===0?Math.ceil(this.rendersPerFrame/2):this.rendersPerFrame,refineSteps:M===0?D:this.refineSteps,steps:M===0?V:this.steps}}render(x,M,D,V,R){const{rendersPerFrame:E,refineSteps:I,steps:B}=this.getAdjustedProps(D,V);n.isTimingMode&&this.webgl.timer.mark("TracePass.render",{note:`${E} rendersPerFrame, ${I} refineSteps, ${B} steps`});const{renderer:w,camera:O,scene:F}=x,{gl:L,state:U}=this.webgl,{x:q,y:N,width:k,height:j}=O.viewport;
7065(V===0||R)&&(w.setTransparentBackground(M),w.setDrawingBufferSize(this.composeTarget.getWidth(),this.composeTarget.getHeight()),w.setPixelRatio(this.webgl.pixelRatio),w.setViewport(q,N,k,j),w.update(O,F),this.renderInput(w,O,F,D)),U.disable(L.BLEND),U.disable(L.DEPTH_TEST),U.disable(L.CULL_FACE),U.depthMask(!1),U.viewport(q,N,k,j),U.scissor(q,N,k,j);const H=y.Mat4.identity();y.Mat4.invert(H,O.projection);const G=O.state.mode==="orthographic"?1:0,[z,W]=this.traceRenderable.values.uTexSize.ref.value,X=O.viewport,Y=(0,g.Vec3)();g.Vec3.scale(Y,d.Color.toArrayNormalized(w.props.ambientColor,Y,0),w.props.ambientIntensity);const K=g.Vec3.clone(Y);for(let J=0,ae=w.light.count;J<ae;++J){const te=g.Vec3.fromArray((0,g.Vec3)(),w.light.color,J*3);g.Vec3.add(K,K,te)}this.holdTarget.bind();let Q=!1;r.ValueCell.update(this.traceRenderable.values.uFrameNo,V),this.traceRenderable.values.dRendersPerFrame.ref.value!==E&&(r.ValueCell.update(this.traceRenderable.values.dRendersPerFrame,E),Q=!0),r.ValueCell.update(this.traceRenderable.values.uProjection,O.projection),r.ValueCell.update(this.traceRenderable.values.uInvProjection,H),_.Vec4.set(this.traceRenderable.values.uBounds.ref.value,X.x/z,X.y/W,(X.x+X.width)/z,(X.y+X.height)/W),r.ValueCell.update(this.traceRenderable.values.uBounds,this.traceRenderable.values.uBounds.ref.value),r.ValueCell.updateIfChanged(this.traceRenderable.values.uNear,O.near),r.ValueCell.updateIfChanged(this.traceRenderable.values.uFar,O.far),r.ValueCell.updateIfChanged(this.traceRenderable.values.uFogFar,O.fogFar),r.ValueCell.updateIfChanged(this.traceRenderable.values.uFogNear,O.fogNear),r.ValueCell.update(this.traceRenderable.values.uFogColor,d.Color.toVec3Normalized(this.traceRenderable.values.uFogColor.ref.value,w.props.backgroundColor)),this.traceRenderable.values.dOrthographic.ref.value!==G&&(r.ValueCell.update(this.traceRenderable.values.dOrthographic,G),Q=!0),r.ValueCell.update(this.traceRenderable.values.uLightDirection,w.light.direction),r.ValueCell.update(this.traceRenderable.values.uLightColor,w.light.color),this.traceRenderable.values.dLightCount.ref.value!==w.light.count&&(r.ValueCell.update(this.traceRenderable.values.dLightCount,w.light.count),Q=!0),r.ValueCell.update(this.traceRenderable.values.uAmbientColor,Y),r.ValueCell.update(this.traceRenderable.values.uLightStrength,K),this.traceRenderable.values.dGlow.ref.value!==D.glow&&(r.ValueCell.update(this.traceRenderable.values.dGlow,D.glow),Q=!0),this.traceRenderable.values.dBounces.ref.value!==D.bounces&&(r.ValueCell.update(this.traceRenderable.values.dBounces,D.bounces),Q=!0),this.traceRenderable.values.dSteps.ref.value!==B&&(r.ValueCell.update(this.traceRenderable.values.dSteps,B),Q=!0),this.traceRenderable.values.dFirstStepSize.ref.value!==D.firstStepSize&&(r.ValueCell.update(this.traceRenderable.values.dFirstStepSize,D.firstStepSize),Q=!0),this.traceRenderable.values.dRefineSteps.ref.value!==I&&(r.ValueCell.update(this.traceRenderable.values.dRefineSteps,I),Q=!0),r.ValueCell.updateIfChanged(this.traceRenderable.values.uRayDistance,D.rayDistance),this.traceRenderable.values.dThicknessMode.ref.value!==D.thicknessMode&&(r.ValueCell.update(this.traceRenderable.values.dThicknessMode,D.thicknessMode),Q=!0),r.ValueCell.updateIfChanged(this.traceRenderable.values.uMinThickness,D.minThickness),r.ValueCell.updateIfChanged(this.traceRenderable.values.uThicknessFactor,D.thicknessFactor),r.ValueCell.updateIfChanged(this.traceRenderable.values.uThickness,D.thickness),this.traceRenderable.values.dShadowEnable.ref.value!==D.shadowEnable&&(r.ValueCell.update(this.traceRenderable.values.dShadowEnable,D.shadowEnable),Q=!0),r.ValueCell.updateIfChanged(this.traceRenderable.values.uShadowSoftness,D.shadowSoftness),r.ValueCell.updateIfChanged(this.traceRenderable.values.uShadowThickness,D.shadowThickness),Q&&this.traceRenderable.update(),n.isTimingMode&&this.webgl.timer.mark("TracePass.renderTrace"),this.traceRenderable.render(),n.isTimingMode&&this.webgl.timer.markEnd("TracePass.renderTrace"),this.accumulateTarget.bind(),this.accumulateRenderable.render(),n.isTimingMode&&this.webgl.timer.markEnd("TracePass.render")}}Xu.TracingPass=v;const b={...e.QuadSchema,tColor:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tNormal:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tShaded:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tThickness:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tAccumulate:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tDepth:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,t.UniformSpec)("v2"),dOrthographic:(0,t.DefineSpec)("number"),uNear:(0,t.UniformSpec)("f"),uFar:(0,t.UniformSpec)("f"),uFogNear:(0,t.UniformSpec)("f"),uFogFar:(0,t.UniformSpec)("f"),uFogColor:(0,t.UniformSpec)("v3"),uProjection:(0,t.UniformSpec)("m4"),uInvProjection:(0,t.UniformSpec)("m4"),uBounds:(0,t.UniformSpec)("v4"),uLightDirection:(0,t.UniformSpec)("v3[]"),uLightColor:(0,t.UniformSpec)("v3[]"),dLightCount:(0,t.DefineSpec)("number"),uAmbientColor:(0,t.UniformSpec)("v3"),uLightStrength:(0,t.UniformSpec)("v3"),uFrameNo:(0,t.UniformSpec)("i"),dRendersPerFrame:(0,t.DefineSpec)("number"),dGlow:(0,t.DefineSpec)("boolean"),dBounces:(0,t.DefineSpec)("number"),dSteps:(0,t.DefineSpec)("number"),dFirstStepSize:(0,t.DefineSpec)("number"),dRefineSteps:(0,t.DefineSpec)("number"),uRayDistance:(0,t.UniformSpec)("f"),dThicknessMode:(0,t.DefineSpec)("str
7065ing"),uMinThickness:(0,t.UniformSpec)("f"),uThicknessFactor:(0,t.UniformSpec)("f"),uThickness:(0,t.UniformSpec)("f"),dShadowEnable:(0,t.DefineSpec)("boolean"),uShadowSoftness:(0,t.UniformSpec)("f"),uShadowThickness:(0,t.UniformSpec)("f")},P=(0,i.ShaderCode)("trace",c.quad_vert,s.trace_frag);function C(A,x,M,D,V,R,E){const I={...e.QuadValues,tColor:r.ValueCell.create(x),tNormal:r.ValueCell.create(M),tShaded:r.ValueCell.create(D),tThickness:r.ValueCell.create(V),tAccumulate:r.ValueCell.create(R),tDepth:r.ValueCell.create(E),uTexSize:r.ValueCell.create(h.Vec2.create(x.getWidth(),x.getHeight())),dOrthographic:r.ValueCell.create(0),uNear:r.ValueCell.create(1),uFar:r.ValueCell.create(1e4),uFogNear:r.ValueCell.create(1e4),uFogFar:r.ValueCell.create(1e4),uFogColor:r.ValueCell.create(g.Vec3.create(1,1,1)),uProjection:r.ValueCell.create(y.Mat4.identity()),uInvProjection:r.ValueCell.create(y.Mat4.identity()),uBounds:r.ValueCell.create((0,_.Vec4)()),uLightDirection:r.ValueCell.create([]),uLightColor:r.ValueCell.create([]),dLightCount:r.ValueCell.create(0),uAmbientColor:r.ValueCell.create((0,g.Vec3)()),uLightStrength:r.ValueCell.create(g.Vec3.create(1,1,1)),uFrameNo:r.ValueCell.create(0),dRendersPerFrame:r.ValueCell.create(1),dGlow:r.ValueCell.create(!0),dBounces:r.ValueCell.create(4),dSteps:r.ValueCell.create(32),dFirstStepSize:r.ValueCell.create(.01),dRefineSteps:r.ValueCell.create(4),uRayDistance:r.ValueCell.create(256),dThicknessMode:r.ValueCell.create("auto"),uMinThickness:r.ValueCell.create(.5),uThicknessFactor:r.ValueCell.create(1),uThickness:r.ValueCell.create(4),dShadowEnable:r.ValueCell.create(!1),uShadowSoftness:r.ValueCell.create(.1),uShadowThickness:r.ValueCell.create(.1)},B={...b},w=(0,f.createComputeRenderItem)(A,"triangles",P,B,I);return(0,o.createComputeRenderable)(w,I)}const l={...e.QuadSchema,tColor:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,t.UniformSpec)("v2"),uWeight:(0,t.UniformSpec)("f")},S=(0,i.ShaderCode)("accumulate",c.quad_vert,p.accumulate_frag);function T(A,x){const M={...e.QuadValues,tColor:r.ValueCell.create(x),uTexSize:r.ValueCell.create(h.Vec2.create(x.getWidth(),x.getHeight())),uWeight:r.ValueCell.create(1)},D={...l},V=(0,f.createComputeRenderItem)(A,"triangles",S,D,M);return(0,o.createComputeRenderable)(V,M)}return Xu}var j8;function g2(){if(j8)return $u;j8=1,Object.defineProperty($u,"__esModule",{value:!0}),$u.IlluminationPass=$u.IlluminationParams=void 0;const e=Mr(),t=Yt(),r=et(),n=Ct(),i=ta(),c=Kt(),o=Gr(),s=Jt(),h=tse(),f=ns(),y=Zt(),_=wt(),g=Ne(),a=wn(),d=XS(),p=KS(),u=Fw(),m=ise(),v=p2(),b=WQ(),P=ir(),C=HQ(),l=m2();let S=!1;function T(I){const{drawBuffers:B,textureFloat:w,colorBufferFloat:O,depthTexture:F}=I.extensions;if(!w||!O||!F||!B){if(n.isDebugMode&&!S){const L=[];w||L.push("textureFloat"),O||L.push("colorBufferFloat"),F||L.push("depthTexture"),B||L.push("drawBuffers"),console.log(`Missing "${L.join('", "')}" extensions required for "illumination"`),S=!0}return!1}else return!0}$u.IlluminationParams={enabled:g.ParamDefinition.Boolean(!1),maxIterations:g.ParamDefinition.Numeric(5,{min:0,max:16,step:1},{description:"Maximum number of tracing iterations. Final iteration count is 2^x."}),denoise:g.ParamDefinition.Boolean(!0),denoiseThreshold:g.ParamDefinition.Interval([.15,1],{min:0,max:4,step:.01},{description:"Threshold for denoising. Automatically adjusted within given interval based on current iteration."}),ignoreOutline:g.ParamDefinition.Boolean(!0,{description:"Ignore outline in illumination pass where it is generally not needed for visual clarity. Useful when illumination is often toggled on/off."}),...m.TracingParams};class A{get iteration(){return this._iteration}get colorTarget(){return this._colorTarget}get supported(){return this._supported}getByteCount(){return this._supported?this.tracing.getByteCount()+this.transparentTarget.getByteCount()+this.outputTarget.getByteCount()+this.multiSampleComposeTarget.getByteCount()+this.multiSampleHoldTarget.getByteCount()+this.multiSampleAccumulateTarget.getByteCount():0}getMaxIterations(B){return Math.pow(2,B.maxIterations)}static isSupported(B){return T(B)}static isEnabled(B,w){return w.enabled&&T(B)}constructor(B,w){if(this.webgl=B,this.drawPass=w,this._iteration=0,this._supported=!1,this.prevSampleIndex=-1,!A.isSupported(B))return;const{colorTarget:O}=w,F=O.getWidth(),L=O.getHeight();this.tracing=new m.TracingPass(B,this.drawPass),this.transparentTarget=B.createRenderTarget(F,L,!1,"uint8","nearest"),this.outputTarget=B.createRenderTarget(F,L,!1,"uint8","linear"),this.copyRenderable=(0,e.createCopyRenderable)(B,this.transparentTarget.texture),this.composeRenderable=D(B,this.tracing.accumulateTarget.texture,this.tracing.normalTextureOpaque,this.tracing.colorTextureOpaque,this.drawPass.depthTextureOpaque,this.drawPass.depthTargetTransparent.texture,this.drawPass.postprocessing.outline.target.texture,this.transparentTarget.texture,this.drawPass.postprocessing.ssao.ssaoDepthTexture,this.drawPass.postprocessing.ssao.ssaoDepthTransparentTexture,this.drawPass.postprocessing.bloom.compositeTarget.texture,!1),this.multiSampleComposeTarget=B.createRenderTarget(F,L,!1,"float32"),this.multiSampleHoldTarget=B.createRenderTarget(F,L,!1),this.multiSampleAccumulateTarget=B.createRenderTarget(F,L,!1,"float32"),this.multiSampleCompose=E(B,this.outputTarget.texture),this._supported=!0}
7065renderInput(B,w,O,F){n.isTimingMode&&this.webgl.timer.mark("IlluminationPass.renderInput");const{gl:L,state:U}=this.webgl,q=p.MarkingPass.isEnabled(F.marking),N=O.opacityAverage<1||O.volumes.renderables.length>0,k=q&&O.markerAverage>0;this.transparentTarget.bind(),U.clearColor(0,0,0,0),L.clear(L.COLOR_BUFFER_BIT);const j=d.PostprocessingPass.isTransparentOutlineEnabled(F.postprocessing)&&!F.illumination.ignoreOutline,H=u.DofPass.isEnabled(F.postprocessing),G=d.PostprocessingPass.isTransparentSsaoEnabled(O,F.postprocessing),z=l.BloomPass.isEnabled(F.postprocessing);if((j||H||G||z)&&(this.drawPass.depthTargetTransparent.bind(),B.clearDepth(!0)),N){if(this.drawPass.transparency==="wboit")this.drawPass.wboit.bind(),B.renderWboitTransparent(O.primitives,w,this.drawPass.depthTextureOpaque),O.volumes.renderables.length>0&&B.renderWboitTransparent(O.volumes,w,this.drawPass.depthTextureOpaque),this.transparentTarget.bind(),this.drawPass.wboit.render();else if(this.drawPass.transparency==="dpoit"){const W=this.drawPass.dpoit.bind();B.renderDpoitTransparent(O.primitives,w,this.drawPass.depthTextureOpaque,W);for(let X=0,Y=F.dpoitIterations;X<Y;X++){n.isTimingMode&&this.webgl.timer.mark("DpoitPass.layer");const K=this.drawPass.dpoit.bindDualDepthPeeling();B.renderDpoitTransparent(O.primitives,w,this.drawPass.depthTextureOpaque,K),Y>1&&(this.transparentTarget.bind(),this.drawPass.dpoit.renderBlendBack()),n.isTimingMode&&this.webgl.timer.markEnd("DpoitPass.layer")}this.transparentTarget.bind(),this.drawPass.dpoit.render(),O.volumes.renderables.length>0&&B.renderVolume(O.volumes,w,this.drawPass.depthTextureOpaque)}else this.transparentTarget.bind(),this.drawPass.depthTextureOpaque.attachFramebuffer(this.transparentTarget.framebuffer,"depth"),B.renderBlendedTransparent(O.primitives,w),this.drawPass.depthTextureOpaque.detachFramebuffer(this.transparentTarget.framebuffer,"depth"),O.volumes.renderables.length>0&&B.renderVolume(O.volumes,w,this.drawPass.depthTextureOpaque);(j||H||G||z)&&(this.drawPass.depthTargetTransparent.bind(),O.opacityAverage<1&&B.renderDepthTransparent(O.primitives,w,this.drawPass.depthTextureOpaque)),G&&(this.drawPass.postprocessing.ssao.update(w,O,F.postprocessing.occlusion.params,!0),this.drawPass.postprocessing.ssao.render(w))}if(k){const W=F.marking.ghostEdgeStrength<1;W&&O.markerAverage!==1&&(this.drawPass.marking.depthTarget.bind(),B.clear(!1,!0),B.renderMarkingDepth(O.primitives,w)),this.drawPass.marking.maskTarget.bind(),B.clear(!1,!0),B.renderMarkingMask(O.primitives,w,W?this.drawPass.marking.depthTarget.texture:null),this.drawPass.marking.update(F.marking),this.drawPass.marking.render(w.viewport,this.transparentTarget)}this.tracing.composeTarget.bind(),U.clearColor(0,0,0,0),L.clear(L.COLOR_BUFFER_BIT),n.isTimingMode&&this.webgl.timer.markEnd("IlluminationPass.renderInput")}shouldRender(B){return this._supported&&B.enabled&&this._iteration<this.getMaxIterations(B)}setSize(B,w){if(!this._supported)return;const O=this.outputTarget.getWidth(),F=this.outputTarget.getHeight();(B!==O||w!==F)&&(this.tracing.setSize(B,w),this.transparentTarget.setSize(B,w),this.outputTarget.setSize(B,w),r.ValueCell.update(this.copyRenderable.values.uTexSize,f.Vec2.set(this.copyRenderable.values.uTexSize.ref.value,B,w)),r.ValueCell.update(this.composeRenderable.values.uTexSize,f.Vec2.set(this.composeRenderable.values.uTexSize.ref.value,B,w)),this.multiSampleComposeTarget.setSize(B,w),this.multiSampleHoldTarget.setSize(B,w),this.multiSampleAccumulateTarget.setSize(B,w),r.ValueCell.update(this.multiSampleCompose.values.uTexSize,f.Vec2.set(this.multiSampleCompose.values.uTexSize.ref.value,B,w))),this.drawPass.setSize(B,w)}reset(){this._supported&&(this.tracing.reset(),this._iteration=0,this.prevSampleIndex=-1)}restart(B=!1){this._supported&&(this.tracing.restart(B),this._iteration=0,this.prevSampleIndex=-1)}renderInternal(B,w,O,F){if(!this.shouldRender(w.illumination))return;n.isTimingMode&&this.webgl.timer.mark("IlluminationPass.render",{note:`iteration ${this._iteration+1} of ${this.getMaxIterations(w.illumination)}`}
7065),this.tracing.render(B,w.transparentBackground,w.illumination,this._iteration,F);const{renderer:L,camera:U,scene:q,helper:N}=B,{gl:k,state:j}=this.webgl,{x:H,y:G,width:z,height:W}=U.viewport;if(this._iteration===0||F){if(L.setTransparentBackground(w.transparentBackground),L.setDrawingBufferSize(this.tracing.composeTarget.getWidth(),this.tracing.composeTarget.getHeight()),L.setPixelRatio(this.webgl.pixelRatio),L.setViewport(H,G,z,W),L.update(U,q),this.renderInput(L,U,q,w),this.transparentTarget.bind(),N.debug.isEnabled||N.pointer.isEnabled){if(this.drawPass.depthTextureOpaque.attachFramebuffer(this.transparentTarget.framebuffer,"depth"),N.debug.isEnabled){N.debug.syncVisibility();for(const fe of N.debug.scenes)L.renderBlended(fe,U)}N.pointer.isEnabled&&(N.pointer.setCamera(U),L.update(N.pointer.camera,N.pointer.scene),L.renderBlended(N.pointer.scene,N.pointer.camera)),this.drawPass.depthTextureOpaque.detachFramebuffer(this.transparentTarget.framebuffer,"depth")}N.handle.isEnabled&&L.renderBlended(N.handle.scene,U),N.camera.isEnabled&&(N.camera.update(U),L.update(N.camera.camera,N.camera.scene),L.renderBlended(N.camera.scene,N.camera.camera))}j.disable(k.BLEND),j.disable(k.DEPTH_TEST),j.disable(k.CULL_FACE),j.depthMask(!1),j.viewport(H,G,z,W),j.scissor(H,G,z,W);const X=U.state.mode==="orthographic"?1:0,Y=d.AntialiasingPass.isEnabled(w.postprocessing),K=C.OutlinePass.isEnabled(w.postprocessing)&&!w.illumination.ignoreOutline,Q=d.PostprocessingPass.isTransparentSsaoEnabled(q,w.postprocessing),J=l.BloomPass.isEnabled(w.postprocessing),ae=u.DofPass.isEnabled(w.postprocessing),te=p.MarkingPass.isEnabled(w.marking),ne=q.opacityAverage<1||q.volumes.renderables.length>0,$=te&&q.markerAverage>0;let ie=!1;if(this.composeRenderable.values.dOutlineEnable.ref.value!==K&&(ie=!0,r.ValueCell.update(this.composeRenderable.values.dOutlineEnable,K)),K&&w.postprocessing.outline.name==="on"){const{transparentOutline:fe,outlineScale:de}=this.drawPass.postprocessing.outline.update(U,w.postprocessing.outline.params,this.drawPass.depthTargetTransparent.texture,this.drawPass.depthTextureOpaque);this.drawPass.postprocessing.outline.render(),r.ValueCell.update(this.composeRenderable.values.uOutlineColor,a.Color.toVec3Normalized(this.composeRenderable.values.uOutlineColor.ref.value,w.postprocessing.outline.params.color)),this.composeRenderable.values.dOutlineScale.ref.value!==de&&(ie=!0,r.ValueCell.update(this.composeRenderable.values.dOutlineScale,de)),this.composeRenderable.values.dTransparentOutline.ref.value!==fe&&(ie=!0,r.ValueCell.update(this.composeRenderable.values.dTransparentOutline,fe))}this.composeRenderable.values.dOcclusionEnable.ref.value!==Q&&(ie=!0,r.ValueCell.update(this.composeRenderable.values.dOcclusionEnable,Q)),Q&&w.postprocessing.occlusion.name==="on"&&r.ValueCell.update(this.composeRenderable.values.uOcclusionColor,a.Color.toVec3Normalized(this.composeRenderable.values.uOcclusionColor.ref.value,w.postprocessing.occlusion.params.color));const Z=ne||$;this.composeRenderable.values.dBlendTransparency.ref.value!==Z&&(ie=!0,r.ValueCell.update(this.composeRenderable.values.dBlendTransparency,Z)),r.ValueCell.updateIfChanged(this.composeRenderable.values.uNear,U.near),r.ValueCell.updateIfChanged(this.composeRenderable.values.uFar,U.far),r.ValueCell.updateIfChanged(this.composeRenderable.values.uFogFar,U.fogFar),r.ValueCell.updateIfChanged(this.composeRenderable.values.uFogNear,U.fogNear),r.ValueCell.update(this.composeRenderable.values.uFogColor,a.Color.toVec3Normalized(this.composeRenderable.values.uFogColor.ref.value,L.props.backgroundColor)),this.composeRenderable.values.dOrthographic.ref.value!==X&&(r.ValueCell.update(this.composeRenderable.values.dOrthographic,X),ie=!0),L.setDrawingBufferSize(this.tracing.composeTarget.getWidth(),this.tracing.composeTarget.getHeight()),L.setPixelRatio(this.webgl.pixelRatio),L.setViewport(H,G,z,W),L.update(U,q);let re=!1;if(J&&w.postprocessing.bloom.name==="on"){const fe=w.postprocessing.bloom.params,de=this.drawPass.postprocessing.bloom,ge=fe.mode==="emissive";ge&&q.emissiveAverage===0||(ge&&this.drawPass.renderEmissiveBloom(L,U,q,fe.transparency),q.opacityAverage>=1&&(this.transparentTarget.bind(),L.clear(!1,!1,!0),this.drawPass.depthTargetTransparent.bind(),L.clearDepth(!0)),de.update(this.tracing.shadedTextureOpaque,this.transparentTarget.texture,de.emissiveTarget.texture,this.drawPass.depthTextureOpaque,this.drawPass.depthTextureTransparent,fe,U,!1),de.render(U.viewport),re=!0)}this.composeRenderable.values.dBloomEnable.ref.value!==re&&(ie=!0,r.ValueCell.update(this.composeRenderable.values.dBloomEnable,re)),O&&!Y&&!ae?this.webgl.bindDrawingBuffer():this.tracing.composeTarget.bind(),this._colorTarget=this.tracing.composeTarget,this.drawPass.postprocessing.background.update(U,w.postprocessing.background),this.drawPass.postprocessing.background.clear(w.postprocessing.background,w.transparentBackgroun
7065d,L.props.backgroundColor),this.drawPass.postprocessing.background.render(w.postprocessing.background);const ue=this.drawPass.postprocessing.background.isEnabled(w.postprocessing)||re&&!w.transparentBackground;r.ValueCell.updateIfChanged(this.composeRenderable.values.uTransparentBackground,w.transparentBackground||ue),this.composeRenderable.values.dDenoise.ref.value!==w.illumination.denoise&&(r.ValueCell.update(this.composeRenderable.values.dDenoise,w.illumination.denoise),ie=!0);const pe=w.multiSample.mode==="on"?w.illumination.denoiseThreshold[0]:(0,P.lerp)(w.illumination.denoiseThreshold[1],w.illumination.denoiseThreshold[0],(0,P.clamp)(this.iteration/(this.getMaxIterations(w.illumination)/2),0,1));r.ValueCell.updateIfChanged(this.composeRenderable.values.uDenoiseThreshold,pe),ie&&this.composeRenderable.update(),ue&&(j.enable(k.BLEND),j.blendFuncSeparate(k.ONE,k.ONE_MINUS_SRC_ALPHA,k.ONE,k.ONE_MINUS_SRC_ALPHA)),this.composeRenderable.render();let he=this.outputTarget;if(Y){const fe=O&&!ae;this.drawPass.antiali
7065asing.render(U,this.tracing.composeTarget.texture,fe?!0:this.outputTarget,w.postprocessing),fe||(this._colorTarget=this.outputTarget,he=this.tracing.composeTarget)}ae&&w.postprocessing.dof.name==="on"&&(this.drawPass.dof.update(U,this._colorTarget.texture,this.drawPass.depthTextureOpaque,this.drawPass.depthTargetTransparent.texture,w.postprocessing.dof.params,q.boundingSphereVisible),this.drawPass.dof.render(U.viewport,O?void 0:he),O||(this._colorTarget=he)),this._iteration+=1,n.isTimingMode&&this.webgl.timer.markEnd("IlluminationPass.render"),this.webgl.gl.flush()}renderMultiSample(B,w,O){const{camera:F}=B,{multiSampleCompose:L,multiSampleComposeTarget:U,multiSampleHoldTarget:q,webgl:N}=this,{gl:k,state:j}=N,H=v.JitterVectors[Math.max(0,Math.min(w.multiSample.sampleLevel,5))],G=this.getMaxIterations(w.illumination),z=Math.min(this._iteration,G),W=Math.floor(z/G*H.length);n.isTimingMode&&N.timer.mark("IlluminationPass.renderMultiSample",{note:`sampleIndex ${W+1} of ${H.length}`});const{x:X,y:Y,width:K,height:Q}=F.viewport,J=1/G;if(z===0)this.renderInternal(B,w,!1,!0),r.ValueCell.update(L.values.uWeight,1),r.ValueCell.update(L.values.tColor,this._colorTarget.texture),L.update(),q.bind(),j.disable(k.BLEND),j.disable(k.DEPTH_TEST),j.depthMask(!1),j.viewport(X,Y,K,Q),j.scissor(X,Y,K,Q),L.render();else{F.viewOffset.enabled=!0,r.ValueCell.update(L.values.tColor,this._colorTarget.texture),r.ValueCell.update(L.values.uWeight,J),L.update();const te=H[W];i.Camera.setViewOffset(F.viewOffset,K,Q,te[0],te[1],K,Q),F.update(),this.renderInternal(B,w,!1,this.prevSampleIndex!==W),U.bind(),j.enable(k.BLEND),j.blendEquationSeparate(k.FUNC_ADD,k.FUNC_ADD),j.blendFuncSeparate(k.ONE,k.ONE,k.ONE,k.ONE),j.disable(k.DEPTH_TEST),j.depthMask(!1),j.viewport(X,Y,K,Q),j.scissor(X,Y,K,Q),z===1&&(j.clearColor(0,0,0,0),k.clear(k.COLOR_BUFFER_BIT)),L.render()}this.prevSampleIndex=W,O?this.webgl.bindDrawingBuffer():this.multiSampleAccumulateTarget.bind(),j.viewport(X,Y,K,Q),j.scissor(X,Y,K,Q);const ae=z*J;ae>0&&(r.ValueCell.update(L.values.uWeight,1),r.ValueCell.update(L.values.tColor,U.texture),L.update(),j.disable(k.BLEND),L.render()),ae<1&&(r.ValueCell.update(L.values.uWeight,1-ae),r.ValueCell.update(L.values.tColor,q.texture),L.update(),ae===0?j.disable(k.BLEND):j.enable(k.BLEND),L.render()),O||(j.disable(k.BLEND),this.colorTarget.bind(),this.copyRenderable.values.tColor.ref.value!==this.multiSampleAccumulateTarget.texture&&(r.ValueCell.update(this.copyRenderable.values.tColor,this.multiSampleAccumulateTarget.texture),this.copyRenderable.update()),this.copyRenderable.render()),F.viewOffset.enabled=!1,F.update(),n.isTimingMode&&N.timer.markEnd("IlluminationPass.renderMultiSample")}render(B,w,O){this._supported&&(w.multiSample.mode==="on"?this.renderMultiSample(B,w,O):this.renderInternal(B,w,O,!1))}}$u.IlluminationPass=A;const x={...e.QuadSchema,tColor:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tNormal:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tShaded:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tTransparentColor:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),dBlendTransparency:(0,t.DefineSpec)("boolean"),tSsaoDepth:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tSsaoDepthTransparent:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tDepthOpaque:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tDepthTransparent:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tOutlines:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tBloom:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),dBloomEnable:(0,t.DefineSpec)("boolean"),uTexSize:(0,t.UniformSpec)("v2"),dDenoise:(0,t.DefineSpec)("boolean"),uDenoiseThreshold:(0,t.UniformSpec)("f"),dOrthographic:(0,t.DefineSpec)("number"),uNear:(0,t.UniformSpec)("f"),uFar:(0,t.UniformSpec)("f"),uFogNear:(0,t.UniformSpec)("f"),uFogFar:(0,t.UniformSpec)("f"),uFogColor:(0,t.UniformSpec)("v3"),uOutlineColor:(0,t.UniformSpec)("v3"),uOcclusionColor:(0,t.UniformSpec)("v3"),uTransparentBackground:(0,t.UniformSpec)("b"),dOcclusionEnable:(0,t.DefineSpec)("boolean"),dOutlineEnable:(0,t.DefineSpec)("boolean"),dOutlineScale:(0,t.DefineSpec)("number"),dTransparentOutline:(0,t.DefineSpec)("boolean")},M=(0,c.ShaderCode)("compose",o.quad_vert,h.compose_frag);function D(I,B,w,O,F,L,U,q,N,k,j,H){const G={...e.QuadValues,tColor:r.ValueCell.create(B),tNormal:r.ValueCell.create(w),tShaded:r.ValueCell.create(O),tTransparentColor:r.ValueCell.create(q),dBlendTransparency:r.ValueCell.create(!0),tSsaoDepth:r.ValueCell.create(N),tSsaoDepthTransparent:r.ValueCell.create(k),tDepthOpaque:r.ValueCell.create(F),tDepthTransparent:r.ValueCell.create(L),tOutlines:r.ValueCell.create(U),tBloom:r.ValueCell.create(j),dBloomEnable:r.ValueCell.create(!1),uTexSize:r.ValueCell.create(f.Vec2.create(B.getWidth(),B.getHeight())),dDenoise:r.ValueCell.create(!0),uDenoiseThreshold:r.ValueCell.create(.1),dOrthographic:r.ValueCell.create(0),uNear:r.ValueCell.create(1),uFar:r.ValueCell.create(1e4),uFogNear:r.ValueCell.create(1e4),uFogFar:r.ValueCell.create(1e4),uFogColor:r.ValueCell.create(_.Vec3.create(1,1,1)),uOutlineColor:r.ValueCell.create(_.Vec3.create(0,0,0)),uOcclusionColor:r.ValueCell.create(_.Vec3.create(0,0,0)),uTransparentBackgroun
7065d:r.ValueCell.create(!1),dOcclusionEnable:r.ValueCell.create(!1),dOutlineEnable:r.ValueCell.create(!1),dOutlineScale:r.ValueCell.create(1),dTransparentOutline:r.ValueCell.create(H)},z={...x},W=(0,y.createComputeRenderItem)(I,"triangles",M,z,G);return(0,s.createComputeRenderable)(W,G)}const V={...e.QuadSchema,tColor:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,t.UniformSpec)("v2"),uWeight:(0,t.UniformSpec)("f")},R=(0,c.ShaderCode)("compose",o.quad_vert,b.compose_frag);function E(I,B){const w={...e.QuadValues,tColor:r.ValueCell.create(B),uTexSize:r.ValueCell.create(f.Vec2.create(B.getWidth(),B.getHeight())),uWeight:r.ValueCell.create(1)},O={...V},F=(0,y.createComputeRenderItem)(I,"triangles",R,O,w);return(0,s.createComputeRenderable)(F,w)}return $u}var hb={},G8;function XQ(){if(G8)return hb;G8=1,Object.defineProperty(hb,"__esModule",{value:!0}),hb.ShaderManager=void 0;const e=m2(),t=g2(),r=KS(),n=XS();class i{static ensureRequired(o,s,h){const f=new i(o,s);f.updateRequired(h),f.finalizeRequired(!0)}constructor(o,s){this.webgl=o,this.scene=s,this.required=[]}updateRequired(o){this.required.length=0,this.required.push("color"),t.IlluminationPass.isEnabled(this.webgl,o.illumination)&&this.required.push("tracing"),r.MarkingPass.isEnabled(o.marking)&&this.scene.markerAverage>0&&this.required.push("marking"),e.BloomPass.isEnabled(o.postprocessing)&&this.scene.emissiveAverage>0&&this.required.push("emissive"),(n.PostprocessingPass.isTransparentDepthRequired(this.scene,o.postprocessing)||!this.webgl.extensions.drawBuffers||!this.webgl.extensions.depthTexture||t.IlluminationPass.isEnabled(this.webgl,o.illumination))&&this.required.push("depth"),this.webgl.resources.linkPrograms(this.required)}finalizeRequired(o){return this.finalize(this.required,o)}finalize(o,s){return this.webgl.resources.finalizePrograms(o,s)}}return hb.ShaderManager=i,hb}var z8;function ase(){return z8||(z8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ImagePass=e.ImageParams=void 0;const t=i2(),r=Ne(),n=$Q(),i=XS(),c=p2(),o=ta(),s=Kn(),h=ese(),f=YS(),y=KS(),_=g2(),g=Ct(),a=Cw(),d=XQ();e.ImageParams={transparentBackground:r.ParamDefinition.Boolean(!1),dpoitIterations:r.ParamDefinition.Numeric(2,{min:1,max:10,step:1}),multiSample:r.ParamDefinition.Group(c.MultiSampleParams),postprocessing:r.ParamDefinition.Group(i.PostprocessingParams),marking:r.ParamDefinition.Group(y.MarkingParams),illumination:r.ParamDefinition.Group(_.IlluminationParams),cameraHelper:r.ParamDefinition.Group(f.CameraHelperParams),renderer:r.ParamDefinition.Group(t.RendererParams)};class p{get colorTarget(){return this._colorTarget}get width(){return this._width}get height(){return this._height}constructor(m,v,b,P,C,l,S){this.webgl=m,this.renderer=b,this.scene=P,this.camera=C,this._width=0,this._height=0,this._camera=new o.Camera,this.props={...r.ParamDefinition.getDefaultValues(e.ImageParams),...S},this.drawPass=new n.DrawPass(m,v,128,128,P.transparency),this.illuminationPass=new _.IlluminationPass(m,this.drawPass),this.multiSamplePass=new c.MultiSamplePass(m,this.drawPass),this.multiSampleHelper=new c.MultiSampleHelper(this.multiSamplePass),this.helper={camera:new f.CameraHelper(m,this.props.cameraHelper),debug:l.debug,handle:l.handle,pointer:l.pointer},this.setSize(1024,768)}getByteCount(){return this.drawPass.getByteCount()+this.illuminationPass.getByteCount()+this.multiSamplePass.getByteCount()}
7065updateBackground(){return new Promise(m=>{this.drawPass.postprocessing.background.update(this.camera,this.props.postprocessing.background,()=>{m()})})}setSize(m,v){m===this._width&&v===this._height||(this._width=m,this._height=v,this.drawPass.setSize(m,v),this.illuminationPass.setSize(m,v),this.multiSamplePass.syncSize())}setProps(m={}){Object.assign(this.props,m),m.cameraHelper&&this.helper.camera.setProps(m.cameraHelper)}async render(m){this.drawPass.setTransparency(this.scene.transparency),d.ShaderManager.ensureRequired(this.webgl,this.scene,this.props),o.Camera.copySnapshot(this._camera.state,this.camera.state),s.Viewport.set(this._camera.viewport,0,0,this._width,this._height),this._camera.update(),this.renderer.setOcclusionTest(null);const v={renderer:this.renderer,camera:this._camera,scene:this.scene,helper:this.helper};if(this.illuminationPass.supported&&this.props.illumination.enabled){for(await m.update({message:"Tracing...",current:1,max:this.illuminationPass.getMaxIterations(this.props.illumination)}),this.illuminationPass.restart(!0);this.illuminationPass.shouldRender(this.props.illumination);)g.isTimingMode&&this.webgl.timer.mark("ImagePass.render",{captureStats:!0}),this.illuminationPass.render(v,this.props,!1),g.isTimingMode&&this.webgl.timer.markEnd("ImagePass.render"),m.shouldUpdate&&await m.update({current:this.illuminationPass.iteration}),await this.webgl.waitForGpuCommandsComplete();this._colorTarget=this.illuminationPass.colorTarget}else g.isTimingMode&&this.webgl.timer.mark("ImagePass.render",{captureStats:!0}),c.MultiSamplePass.isEnabled(this.props.multiSample)?(this.multiSampleHelper.render(v,this.props,!1),this._colorTarget=this.multiSamplePass.colorTarget):(this.drawPass.render(v,this.props,!1),this._colorTarget=this.drawPass.getColorTarget(this.props.postprocessing)),g.isTimingMode&&this.webgl.timer.markEnd("ImagePass.render");if(g.isTimingMode){const b=this.webgl.timer.resolve();if(b)for(const P of b)(0,a.printTimerResults)([P])}g.isDebugMode&&console.log(`image pass byte count ${(this.getByteCount()/1024/1024).toFixed(3)} MiB`)}async getImageData(m,v,b,P){var C,l;this.setSize(v,b),await this.render(m),this.colorTarget.bind();const S=(C=P?.width)!==null&&C!==void 0?C:v,T=(l=P?.height)!==null&&l!==void 0?l:b,A=new Uint8Array(S*T*4);P?this.webgl.readPixels(P.x,b-P.y-P.height,S,T,A):this.webgl.readPixels(0,0,S,T,A);const x=h.PixelData.create(A,S,T);return h.PixelData.flipY(x),h.PixelData.divideByAlpha(x),new ImageData(new Uint8ClampedArray(A),S,T)}}e.ImagePass=p})(xA)),xA}var AA={},H8;function KQ(){return H8||(H8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.HandleGroup=e.HandleHelper=e.HandleHelperParams=void 0,e.isHandleLoci=C;const t=f2(),r=$t(),n=Ge(),i=Jn(),c=Rt(),o=Vr(),s=ba(),h=et(),f=rt(),y=Ne(),_=Lf(),g=pn(),a=gt(),d=cn(),p=Ul(),u=at(),m={...c.Mesh.Params,alpha:{...c.Mesh.Params.alpha,defaultValue:1},ignoreLight:{...c.Mesh.Params.ignoreLight,defaultValue:!0},colorX:y.ParamDefinition.Color(o.ColorNames.red,{isEssential:!0}),colorY:y.ParamDefinition.Color(o.ColorNames.green,{isEssential:!0}),colorZ:y.ParamDefinition.Color(o.ColorNames.blue,{isEssential:!0}),scale:y.ParamDefinition.Numeric(.33,{min:.1,max:2,step:.1},{isEssential:!0})};e.HandleHelperParams={handle:y.ParamDefinition.MappedStatic("off",{on:y.ParamDefinition.Group(m),off:y.ParamDefinition.Group({})},{cycle:!0,description:"Show handle tool"})};class v{getBoundingSphere(A,x){return this.renderObject&&(f.Sphere3D.copy(A,this.renderObject.values.invariantBoundingSphere.ref.value),n.Mat4.fromArray(this._transform,this.renderObject.values.aTransform.ref.value,x*16),f.Sphere3D.transform(A,A,this._transform)),A}setProps(A){this.props=(0,_.produce)(this.props,x=>{if(A.handle!==void 0&&(x.handle.name=A.handle.name,A.handle.name==="on")){this.scene.clear(),this.pixelRatio=this.webgl.pixelRatio;const M={...A.handle.params,scale:A.handle.params.scale*this.webgl.pixelRatio,cellSize:0};this.renderObject=S(M),this.scene.add(this.renderObject),this.scene.commit(),x.handle.params={...A.handle.params}}})}get isEnabled(){return this.props.handle.name==="on"}update(A,x,M){this.renderObject&&(this.pixelRatio!==this.webgl.pixelRatio&&this.setProps(this.props),n.Mat4.setTranslation(this.renderObject.values.aTransform.ref.value,x),n.Mat4.fromMat3(this.renderObject.values.aTransform.ref.value,M),h.ValueCell.update(this.renderObject.values.aTransform,this.renderObject.values.aTransform.ref.value),this.scene.update([this.renderObject],!0))}getLoci(A){const{objectId:x,groupId:M,instanceId:D}=A;return!this.renderObject||x!==this.renderObject.id?a.EmptyLoci:P(this,M,D)}mark(A,x){return!d.MarkerActions.is(d.MarkerActions.Highlighting,x)||!(0,a.isEveryLoci)(A)&&(!C(A)||A.data!==this)?!1:p.Visual.mark(this.renderObject,A,x,this.eachGroup)}constructor(A,x={}){this.webgl=A,this.props={handle:{name:"off",params:{}}},this.pixelRatio=1,this._transform=(0,n.Mat4)(),this.eachGroup=(M,D)=>
7065{if(!this.renderObject||!C(M))return!1;let V=!1;const R=this.renderObject.values.uGroupCount.ref.value,{elements:E}=M;for(const{groupId:I,instanceId:B}of E){const w=B*R+I;D(u.Interval.ofSingleton(w))&&(V=!0)}return V},this.scene=t.Scene.create(A,"blended"),this.setProps(x)}}e.HandleHelper=v;function b(T,A){const x=r.MeshBuilder.createState(512,256,A),M=.05*T,D=n.Vec3.scale((0,n.Vec3)(),n.Vec3.unitX,T),V=n.Vec3.scale((0,n.Vec3)(),n.Vec3.unitY,T),R=n.Vec3.scale((0,n.Vec3)(),n.Vec3.unitZ,T),E={radiusTop:M,radiusBottom:M,radialSegments:32};return x.currentGroup=e.HandleGroup.TranslateScreenXY,(0,i.addSphere)(x,n.Vec3.origin,M*3,2),x.currentGroup=e.HandleGroup.TranslateObjectX,(0,i.addSphere)(x,D,M,2),(0,s.addCylinder)(x,n.Vec3.origin,D,1,E),x.currentGroup=e.HandleGroup.TranslateObjectY,(0,i.addSphere)(x,V,M,2),(0,s.addCylinder)(x,n.Vec3.origin,V,1,E),x.currentGroup=e.HandleGroup.TranslateObjectZ,(0,i.addSphere)(x,R,M,2),(0,s.addCylinder)(x,n.Vec3.origin,R,1,E),r.MeshBuilder.getMesh(x)}e.HandleGroup={None:0,TranslateScreenXY:1,TranslateObjectX:3,TranslateObjectY:4,TranslateObjectZ:5};function P(T,A,x){return(0,a.DataLoci)("handle",T,[{groupId:A,instanceId:x}],M=>T.getBoundingSphere(M,x),()=>`Handle Helper | Group Id ${A} | Instance Id ${x}`)}function C(T){return T.kind==="data-loci"&&T.tag==="handle"}function l(T,A){const x=10*T.scale,M=b(x,void 0);M.setBoundingSphere(f.Sphere3D.create(n.Vec3.create(x/2,x/2,x/2),x+x/4));const D=V=>{switch(V){case e.HandleGroup.TranslateObjectX:return T.colorX;case e.HandleGroup.TranslateObjectY:return T.colorY;case e.HandleGroup.TranslateObjectZ:return T.colorZ;default:return o.ColorNames.grey}};return g.Shape.create("handle",{},M,D,()=>1,()=>"")}function S(T){const A=l(T);return g.Shape.createRenderObject(A,T)}})(AA)),AA}var MA={},gb={},W8;function ose(){if(W8)return gb;W8=1,Object.defineProperty(gb,"__esModule",{value:!0}),gb.DebugRegistry=void 0;const e=Ct();class t{constructor(n,i){this.entries=new Map,this.ctx=n,this.parent=i}register(n,i){this.entries.has(n)&&(e.isDebugMode&&console.warn(`Debug helper with name '${n}' already exists, replacing.`),this.entries.get(n).clear()),this.entries.set(n,i)}unregister(n){const i=this.entries.get(n);i&&(i.clear(),this.entries.delete(n))}get scenes(){return Array.from(this.entries.values()).map(n=>n.scene)}update(){this.entries.forEach(n=>{n.isEnabled&&n.update()})}syncVisibility(){this.entries.forEach(n=>{n.syncVisibility()})}clear(){this.entries.forEach(n=>{n.clear()})}get isEnabled(){let n=!1;return this.entries.forEach(i=>{i.isEnabled&&(n=!0)}),n}setProps(n){this.entries.forEach(i=>{i.setProps(n)})}}return gb.DebugRegistry=t,gb}var DA={},$8;function YQ(){return $8||($8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PointerHelperGroup=e.PointerHelper=e.PointerHelperParams=void 0;const t=f2(),r=$t(),n=Ge(),i=Rt(),c=Vr(),o=et(),s=Ne(),h=Ll(),f=ba(),y=Jn(),_=ta(),g=Kn(),a=SQ();e.PointerHelperParams={...i.Mesh.Params,enabled:s.ParamDefinition.Select("off",s.ParamDefinition.arrayToOptions(["on","off"]),{isEssential:!0}),ignoreLight:{...i.Mesh.Params.ignoreLight,defaultValue:!0},color:s.ParamDefinition.Color(c.ColorNames.grey,{isEssential:!0}),hitColor:s.ParamDefinition.Color(c.ColorNames.pink,{isEssential:!0})};class d{setProps(l){Object.assign(this.props,l),this.isEnabled&&this.update(this.pointers,this.points,this.hit)}ensureEnabled(){this.props.enabled!=="on"&&(this.props.enabled="on")}get isEnabled(){return this.props.enabled==="on"}setCamera(l){_.Camera.copySnapshot(this.camera.state,l.state),g.Viewport.copy(this.camera.viewport,l.viewport),n.Mat4.copy(this.camera.view,l.view),n.Mat4.copy(this.camera.projection,l.projection),n.Mat4.copy(this.camera.projectionView,l.projectionView),n.Mat4.copy(this.camera.headRotation,l.headRotation),_.Camera.copyViewOffset(this.camera.viewOffset,l.viewOffset),this.camera.far=l.far,this.camera.near=l.near,this.camera.fogFar=l.fogFar,this.camera.fogNear=l.fogNear,this.camera.forceFull=l.forceFull,this.camera.scale=1,this.modelScale=l.scale}update(l,S,T){if(this.pointers=l,this.points=S,this.hit=T,this.props.enabled!=="on"){this.renderObject&&(this.renderObject.state.visible=!1);return}this.shape=b(this.getData(),this.props,this.shape),o.ValueCell.updateIfChanged(this.renderObject.values.drawCount,h.Geometry.getDrawCount(this.shape.geometry)),o.ValueCell.updateIfChanged(this.renderObject.values.uVertexCount,h.Geometry.getVertexCount(this.shape.geometry)),o.ValueCell.updateIfChanged(this.renderObject.values.uGroupCount,2),i.Mesh.Utils.updateBoundingSphere(this.renderObject.values,this.shape.geometry),i.Mesh.Utils.updateV
7065alues(this.renderObject.values,this.props),i.Mesh.Utils.updateRenderableState(this.renderObject.state,this.props),this.renderObject.state.visible=!0,this.scene.update(void 0,!1),this.scene.commit()}getData(){return{pointers:this.pointers,points:this.points,hit:this.hit,modelScale:this.modelScale,camera:this.camera,pixels:12}}constructor(l,S={}){this.pixelScale=1,this.modelScale=1,this.pointers=[],this.points=[],this.hit=void 0,this.scene=t.Scene.create(l,"blended"),this.props={...s.ParamDefinition.getDefaultValues(e.PointerHelperParams),...S},this.camera=new _.Camera,this.shape=b(this.getData(),this.props),this.renderObject=P(this.shape,this.props),this.scene.add(this.renderObject)}}e.PointerHelper=d;var p;(function(C){C[C.None=0]="None",C[C.Hit=1]="Hit"})(p||(e.PointerHelperGroup=p={}));const u=(0,n.Vec3)();function m(C,l,S,T){const A=n.Vec3.scale(u,S.state.position,T),x=n.Vec3.distance(C,A);return 2*Math.tan(S.state.fov/2)*x/S.viewport.height*l}function v(C,l){const S=r.MeshBuilder.createState(512,256,l),T=5e-4,A={radiusTop:T,radiusBottom:T,radialSegments:32},{modelScale:x,camera:M,pixels:D}=C;S.currentGroup=p.None;for(const V of C.pointers){(0,f.addCylinderFromRay3D)(S,V,.2,A);const R=m(V.origin,D,M,x);(0,y.addSphere)(S,V.origin,R,1)}for(const V of C.points){const R=m(V,D,M,x);(0,y.addSphere)(S,V,R,1)}if(C.hit){S.currentGroup=p.Hit;const V=m(C.hit,D,M,x);(0,y.addSphere)(S,C.hit,V,1)}return r.MeshBuilder.getMesh(S)}function b(C,l,S){const T=v(C,S?.geometry),A=x=>x===p.Hit?l.hitColor:l.color;return a.Shape.create("pointer-mesh",C,T,A,()=>1,()=>"",void 0,2)}function P(C,l){return a.Shape.createRenderObject(C,{...s.ParamDefinition.getDefaultValues(i.Mesh.Params),...l,ignoreLight:l.ignoreLight,cellSize:0})}})(DA)),DA}var X8;function sse(){return X8||(X8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Helper=e.DefaultHelperProps=e.HelperParams=void 0;const t=Ne(),r=ose(),n=YS(),i=KQ(),c=YQ();e.HelperParams={camera:t.ParamDefinition.Group({helper:t.ParamDefinition.Group(n.CameraHelperParams)}),handle:t.ParamDefinition.Group(i.HandleHelperParams),pointer:t.ParamDefinition.Group(c.PointerHelperParams)},e.DefaultHelperProps=t.ParamDefinition.getDefaultValues(e.HelperParams);class o{constructor(h,f,y={}){const _={...e.DefaultHelperProps,...y};this.debug=new r.DebugRegistry(h,f),this.camera=new n.CameraHelper(h,_.camera.helper),this.handle=new i.HandleHelper(h,_.handle),this.pointer=new c.PointerHelper(h,_.pointer)}}e.Helper=o})(MA)),MA}var yb={},K8;function cse(){if(K8)return yb;K8=1,Object.defineProperty(yb,"__esModule",{value:!0}),yb.Passes=void 0;const e=$Q(),t=h2(),r=p2(),n=g2();class i{constructor(o,s,h={}){this.webgl=o;const f=this.webgl.getDrawingBufferSize();this.draw=new e.DrawPass(o,s,f.width,f.height,h.transparency||"blended"),this.pick=new t.PickPass(o,f.width,f.height,h.pickScale||.25),this.multiSample=new r.MultiSamplePass(o,this.draw),this.illumination=new n.IlluminationPass(o,this.draw)}getByteCount(){return this.draw.getByteCount()+this.pick.getByteCount()+this.multiSample.getByteCount()+this.illumination.getByteCount()}setPickScale(o){this.pick.setPickScale(o)}setTransparency(o){this.draw.setTransparency(o)}updateSize(){const o=this.webgl.getDrawingBufferSize(),s=Math.max(o.width,2),h=Math.max(o.height,2);this.draw.setSize(s,h),this.pick.setSize(s,h),this.multiSample.syncSize(),this.illumination.setSize(s,h)}}return yb.Passes=i,yb}var IA={},GP={},vb={},Y8;function use(){return Y8||(Y8=1,Object.defineProperty(vb,"__esModule",{value:!0}),vb.hiZ_frag=void 0,vb.hiZ_frag=`
7066precision highp float;
7067precision highp sampler2D;
7068
7069uniform sampler2D tPreviousLevel;
7070uniform vec2 uInvSize;
7071uniform vec2 uOffset;
7072
7073void main(void) {
7074    vec2 position = gl_FragCoord.xy * uInvSize + uOffset;
7075
7076    float x = texture(tPreviousLevel, position).r;
7077    float y = textureOffset(tPreviousLevel, position, ivec2(-1, 0)).r;
7078    float z = textureOffset(tPreviousLevel, position, ivec2(-1, -1)).r;
7079    float w = textureOffset(tPreviousLevel, position, ivec2(0, -1)).r;
7080
7081    gl_FragColor = vec4(max(max(x, y), max(z, w)));
7082}
7083`),vb}var Q8;
7083function lse(){if(Q8)return GP;Q8=1,Object.defineProperty(GP,"__esModule",{value:!0}),GP.createHiZRenderable=_;const e=ns(),t=Kr(),r=Jt(),n=Yt(),i=Kt(),c=use(),o=Gr(),s=Zt(),h=Mr(),f={...h.QuadSchema,tPreviousLevel:(0,n.TextureSpec)("texture","alpha","float","nearest"),uInvSize:(0,n.UniformSpec)("v2"),uOffset:(0,n.UniformSpec)("v2")},y=(0,i.ShaderCode)("hi-z",o.quad_vert,c.hiZ_frag);function _(g,a){const d={...h.QuadValues,tPreviousLevel:t.ValueCell.create(a),uInvSize:t.ValueCell.create((0,e.Vec2)()),uOffset:t.ValueCell.create((0,e.Vec2)())},p={...f},u=(0,s.createComputeRenderItem)(g,"triangles",y,p,d);return(0,r.createComputeRenderable)(u,d)}return GP}var cr={},Z8;function QQ(){if(Z8)return cr;Z8=1,Object.defineProperty(cr,"__esModule",{value:!0}),cr.fastPow2=n,cr.fasterPow2=s,cr.fastExp=h,cr.fasterExp=f,cr.fastLog2=a,cr.fasterLog2=m,cr.fastLog=v,cr.fasterLog=b,cr.fastLog10=P,cr.fasterLog10=C,cr.fastSinh=l,cr.fasterSinh=S,cr.fastCosh=T,cr.fasterCosh=A,cr.fastTanh=x,cr.fasterTanh=M,cr.fastSin=z,cr.fasterSin=W,cr.fastCos=X,cr.fasterCos=Y,cr.fastTan=$,cr.fasterTan=ie,cr.fastAtan=re,cr.fastAtan2=oe;const e=new ArrayBuffer(4),t=new Int32Array(e),r=new Float32Array(e);function n(ce){const ue=ce<0?1:0,pe=ce<-126?-126:ce,he=pe|0,fe=pe-he+ue;return t[0]=(1<<23)*(pe+121.2740575+27.7280233/(4.84252568-fe)-1.49012907*fe),r[0]}const i=new ArrayBuffer(4),c=new Int32Array(i),o=new Float32Array(i);function s(ce){const ue=ce<-126?-126:ce;return c[0]=(1<<23)*(ue+126.94269504),o[0]}function h(ce){return n(1.44269504*ce)}function f(ce){return s(1.44269504*ce)}const y=new ArrayBuffer(8),_=new Int32Array(y),g=new Float32Array(y);function a(ce){return g[0]=ce,_[1]=_[0]&8388607|1056964608,_[0]*11920928955078125e-23-124.22551499-1.498030302*g[1]-1.72587999/(.3520887068+g[1])}const d=new ArrayBuffer(4),p=new Int32Array(d),u=new Float32Array(d);function m(ce){return u[0]=ce,p[0]*11920928955078125e-23-126.94269504}function v(ce){return .6931471805599453*a(ce)}function b(ce){return .6931471805599453*m(ce)}function P(ce){return .30102999566398114*a(ce)}function C(ce){return .30102999566398114*m(ce)}function l(ce){return .5*(h(ce)-h(-ce))}function S(ce){return .5*(f(ce)-f(-ce))}function T(ce){return .5*(h(ce)+h(-ce))}function A(ce){return .5*(f(ce)+f(-ce))}function x(ce){return-1+2/(1+h(-2*ce))}function M(ce){return-1+2/(1+f(-2*ce))}const D=Math.PI/2,V=2*Math.PI,R=1/(2*Math.PI),E=2/Math.PI,I=4/Math.PI,B=4/(Math.PI*Math.PI),w=Math.PI/2-2*Math.PI,O=.7844448837454894,F=new ArrayBuffer(16),L=new Int32Array(F),U=new Float32Array(F);function q(ce){U[0]=.2036393768073031,U[1]=.015124940802184232,U[2]=-.003222590162557957,U[3]=ce;const ue=L[3]&2147483648;L[3]=L[3]&2147483647;const pe=I*ce-B*ce*U[3],he=pe*pe;return L[0]|=ue,L[1]|=ue,L[2]^=ue,O*pe+he*(U[0]+he*(U[1]+he*U[2]))}const N=.7844448837454894,k=new ArrayBuffer(8),j=new Int32Array(k),H=new Float32Array(k);function G(ce){H[0]=.22308510060189463,H[1]=ce;const ue=j[1]&2147483648;j[1]&=2147483647;const pe=I*ce-B*ce*H[1];return j[0]|=ue,pe*(N+H[0]*pe)}function z(ce){const ue=ce*R|0,pe=ce<0?-.5:.5;return q((pe+ue)*V-ce)}function W(ce){const ue=ce*R|0,pe=ce<0?-.5:.5;return G((pe+ue)*V-ce)}function X(ce){return z(ce+D)}function Y(ce){return W(ce+D)}function K(ce){const ue=ce>D?w:D;return q(ce+ue)}const Q=.5464133584567964,J=new ArrayBuffer(4),ae=new Int32Array(J),te=new Float32Array(J);function ne(ce){te[0]=ce,ae[0]&=2147483647;const ue=1-E*te[0];return ue+Q*ue*(1-ue*ue)}function $(ce){const ue=ce*R|0,pe=ce<0?-.5:.5,he=ce-(pe+ue)*V;return q(he)/K(he)}function ie(ce){const ue=ce*R|0,pe=ce<0?-.5:.5,he=ce-(pe+ue)*V;return G(he)/ne(he)}const Z=Math.PI/4;function re(ce){return Z*ce-ce*(Math.abs(ce)-1)*(.2447+.0663*Math.abs(ce))}function oe(ce,ue){let pe=Math.abs(ue),he=Math.abs(ce);const fe=Math.max(pe,he);return he=Math.min(pe,he),pe=re(he/fe),pe=Math.abs(ce)>Math.abs(ue)?D-pe:pe,pe=ue<0?Math.PI-pe:pe,pe=ce<0?-pe:pe,pe}return cr}var J8;function dse(){return J8||(J8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.HiZPass=e.HiZParams=void 0;const t=lse(),r=on(),n=QQ(),i=Ge(),c=ns(),o=wt(),s=Ct(),h=Kr(),f=Kn(),y=Ne(),_=o.Vec3.transformMat4,g=i.Vec4.set,a=n.fasterLog2;function d(C,l,S){return l*S/((S-l)*C-S)}function p(C,l,S){return C*(l-S)-l}function u(C,l,S,T){return T[11]===-1?d(C,l,S):p(C,l,S)}function m(C,l,S,T){const A=l[0]*S,x=l[1]*S,M=l[2]*S,D=l[2]*l[2]-S*S,V=Math.sqrt(l[0]*l[0]+D),R=(V*l[0]-M)/(V*l[2]+A)*T[0],E=(V*l[0]+M)/(V*l[2]-A)*T[0],I=Math.sqrt(l[1]*l[1]+D),B=(I*l[1]-M)/(I*l[2]+x)*T[5],w=(I*l[1]+M)/(I*l[2]-x)*T[5];
7083return g(C,E*-.5+.5,B*.5+.5,R*-.5+.5,w*.5+.5)}function v(C,l,S,T){const A=T[0],x=T[5],M=(l[0]+S)*A,D=(l[0]-S)*A,V=(l[1]+S)*x,R=(l[1]-S)*x;return g(C,D*.5+.5,V*-.5+.5,M*.5+.5,R*-.5+.5)}function b(C,l,S,T){return T[11]===-1?m(C,l,S,T):v(C,l,S,T)}e.HiZParams={enabled:y.ParamDefinition.Boolean(!1,{description:"Hierarchical Z-buffer occlusion culling. Only available for WebGL2."}),maxFrameLag:y.ParamDefinition.Numeric(10,{min:1,max:30,step:1},{description:"Maximum number of frames to wait for Z-buffer data."}),minLevel:y.ParamDefinition.Numeric(3,{min:1,max:10,step:1})};class P{getByteCount(){return this.supported?this.tex.getByteCount()+this.buf.getByteCount()+this.levelData.reduce((l,S)=>l+S.texture.getByteCount(),0):0}clear(){if(!this.supported)return;const{gl:l}=this.webgl;(0,r.isWebGL2)(l)&&(this.sync!==null&&(l.deleteSync(this.sync),this.sync=null),this.frameLag=0,this.ready=!1,this.debug&&(this.debug.rect.style.display="none",this.debug.container.style.display="none"))}render(l){if(!this.supported||!this.props.enabled)return;const{gl:S,state:T}=this.webgl;if(!(0,r.isWebGL2)(S)||this.sync!==null)return;this.nextNear=l.near,this.nextFar=l.far,i.Mat4.copy(this.nextView,l.view),i.Mat4.copy(this.nextProjection,l.projection),s.isTimingMode&&this.webgl.timer.mark("hi-Z"),T.disable(S.CULL_FACE),T.disable(S.BLEND),T.disable(S.DEPTH_TEST),T.disable(S.SCISSOR_TEST),T.depthMask(!1),T.colorMask(!0,!0,!0,!0),T.clearColor(0,0,0,0);const A=this.renderable.values,x=Math.pow(2,Math.ceil(Math.log(Math.max(S.drawingBufferWidth,S.drawingBufferHeight))/Math.log(2))-1);for(let V=0,R=this.levelData.length;V<R;++V){const E=this.levelData[V];E.framebuffer.bind(),V>0?(h.ValueCell.update(A.uInvSize,E.invSize),h.ValueCell.update(A.uOffset,c.Vec2.set(A.uOffset.ref.value,0,0)),h.ValueCell.update(A.tPreviousLevel,this.levelData[V-1].texture)):(h.ValueCell.update(A.uInvSize,c.Vec2.set(A.uInvSize.ref.value,1/x,1/x)),h.ValueCell.update(A.uOffset,c.Vec2.set(A.uOffset.ref.value,this.viewport.x/S.drawingBufferWidth,this.viewport.y/S.drawingBufferHeight)),h.ValueCell.update(A.tPreviousLevel,this.drawPass.depthTextureOpaque)),T.currentRenderItemId=-1,T.viewport(0,0,E.size[0],E.size[1]),S.clear(S.COLOR_BUFFER_BIT),this.renderable.update(),this.renderable.render(),V>=this.props.minLevel&&(this.tex.bind(0),S.copyTexSubImage2D(S.TEXTURE_2D,0,E.offset,0,0,0,E.size[0],E.size[1]),this.tex.unbind(0))}this.tex.attachFramebuffer(this.fb,0);const M=this.tex.getWidth(),D=this.tex.getHeight();this.buf.read(0,0,M,D),this.sync=S.fenceSync(S.SYNC_GPU_COMMANDS_COMPLETE,0),S.flush(),s.isTimingMode&&this.webgl.timer.markEnd("hi-Z")}tick(){if(!this.supported||!this.props.enabled||this.sync===null)return;const{gl:l}=this.webgl;if(!(0,r.isWebGL2)(l))return;const S=l.clientWaitSync(this.sync,0,0);S===l.WAIT_FAILED||this.frameLag>=this.props.maxFrameLag?(l.deleteSync(this.sync),this.sync=null,this.frameLag=0,this.ready=!1):S===l.TIMEOUT_EXPIRED?this.frameLag+=1:(this.buf.getSubData(this.buffer),l.deleteSync(this.sync),this.sync=null,this.frameLag=0,this.ready=!0,this.near=this.nextNear,this.far=this.nextFar,i.Mat4.copy(this.view,this.nextView),i.Mat4.copy(this.projection,this.nextProjection))}transform(l){const{view:S,vp:T}=this;_(T,l.center,S);const A=l.radius*1.2+1.52;return{vp:T,r:A}}project(l,S){const{projection:T,aabb:A,viewport:x}=this;b(A,l,S,T);const M=A[2]-A[0],D=A[3]-A[1],V=Math.max(M*x.width,D*x.height),R=Math.ceil(a(V/2));return{aabb:A,w:M,h:D,pr:V,lod:R}}setViewport(l,S,T,A){if(!this.supported)return;T=Math.max(T,2),A=Math.max(A,2),f.Viewport.set(this.viewport,l,S,T,A);const x=Math.ceil(Math.log(Math.max(T,A))/Math.log(2));if(x===this.levelData.length)return;const{minLevel:M}=this.props;this.buffer=new Float32Array(Math.pow(2,x-M)*Math.pow(2,x-1-M)),this.tex.define(Math.pow(2,x-M),Math.pow(2,x-1-M));for(const V of this.levelData)V.framebuffer.destroy(),V.texture.destroy();this.levelData.length=0;for(let V=0;V<x;++V){const R=this.webgl.resources.framebuffer(),E=Math.pow(2,x-V-1),I=c.Vec2.create(E,E),B=c.Vec2.create(1/E,1/E),w=this.webgl.resources.texture("image-float32","alpha","float","nearest");w.define(E,E),w.attachFramebuffer(R,0),this.levelData.push({texture:w,framebuffer:R,size:I,invSize:B,offset:0})}let D=0;for(let V=0,R=x;V<R;++V){const E=this.levelData[V];V>=M&&(this.levelData[V].offset=D,D+=E.size[0])}this.clear()}setProps(l){if(this.supported)if(this.props.minLevel!==l.minLevel){Object.assign(this.props,l);const{x:S,y:T,width:A,height:x}=this.viewport;this.setViewport(S,T,A,x)}else Object.assign(this.props,l),this.props.enabled||this.clear()}initDebug(l){if(!l.parentElement)return;const S=document.createElement("div");Object.assign(S.style,{display:"block",position:"absolute",pointerEvents:"none"}),l.parentElement.appendChild(S);const T=document.createElement("canvas"),A=T.getContext("2d");if(!A)throw new Error("Could not create canvas 2d context");Object.assign(T.style,{width:"100%",height:"100%",imageRendering:"pixelated",position:"relative",pointerEvents:"none"}),S.appendChild(T);const x=document.createElement("div");Object.assign(x.style,{display:"none",position:"absolute",pointerEvents:"none"}),l.parentElement.appendChild(x),this.debug={container:S,canvas:T,ctx:A,rect:x}}canDebug(l){return this.supported&&this.props.enabled&&this.ready&&!!this.debug}showRect(l,S){if(!this.canDebug(this.debug))return;const{gl:{drawingBufferHeight:T},pixelRatio:A}=this.webgl,{viewport:{x,y:M,width:D,height:V}}=this,R=(l[0]*D+x)/A,E=(l[1]*V-M)/A,I=(l[2]*D+x)/A,B=(l[3]*V-M)/A,w=(T-V)/A;Object.assign(this.debug.rect.style,{border:S?"solid red":"solid green",display:"block",left:`${R}px`,top:`${E+w}px`,width:`${I-R}px`,height:`${B-E}px`})}showBuffer(l){if(!this.canDebug(this.debug))return;if(l>=this.levelData.length||l<this.props.minLevel){this.debug.container.style.display="none";return}const{offset:S,size:[T,A]}=this.levelData[l],x=this.tex.getWidth(),M=new Uint8ClampedArray(T*A*4);M.fill(255);for(let w=0;w<A;++w)for(let O=0;O<T;++O){const F=(A-w-1)*T+O,L=this.buffer[w*x+O+S]*255;M[F*4+0]=L,M[F*4+3]=255-L}const D=new ImageData(M,T,A);this.debug.canvas.width=D.width,this.debug.canvas.height=D.height,this.debug.ctx.putImageData(D,0,0);const{viewport:{x:V,y:R,width:E,height:I},webgl:{pixelRatio:B}}=this;Object.assign(this.debug.container.style,{display:"block",bottom:`${R/B}px`,left:`${V/B}px`,width:`${E/B}px`,height:`${I/B}px`})}debugOcclusion(l){if(!this.canDebug(this.debug))return;if(!l){this.debug.rect.style.display="none",this.debug.container.style.display="none";return}const S=this.isOccluded(l),{vp:T,r:A}=this.transform(l),{aabb:x,lod:M}=this.project(T,A);this.showRect(x,S),this.showBuffer(M)}reset(){this.sync=null,this.ready=!1,this.frameLag=0,this.levelData.length=0;const{x:l,y:S,width:T,height:A}=this.viewport;this.setViewport(l,S,T,A)}dispose(){if(this.supported){this.clear(),this.fb.destroy(),this.tex.destroy(),this.buf.destroy(),this.renderable.dispose();for(const l of this.levelData)l.framebuffer.destroy(),l.texture.destroy()}}constructor(l,S,T,A){this.webgl=l,this.drawPass=S,this.viewport=(0,f.Viewport)(),this.near=0,this.far=0,this.view=(0,i.Mat4)(),this.projection=(0,i.Mat4)(),this.nextNear=0,this.nextFar=0,this.nextView=(0,i.Mat4)(),this.nextProjection=(0,i.Mat4)(),this.aabb=(0,i.Vec4)(),this.vp=(0,o.Vec3)(),this.levelData=[],this.sync=null,this.buffer=new Float32Array(0),this.frameLag=0,this.ready=!1,this.isOccluded=R=>{if(!this.supported||!this.props.enabled||!this.ready)return!1;const{vp:E,r:I}=this.transform(R),{near:B,far:w,projection:O}=this,F=E[2]+I;if(-F<B)return!1;const{aabb:L,w:U,h:q,lod:N}=this.project(E,I);if(N>=this.levelData.length||N<this.props.minLevel)return!1;const{offset:k,size:j}=this.levelData[N],H=L[0]+U/2,G=L[1]+q/2,z=j[0],W=H*z,X=G*z,Y=Math.floor(W),K=Math.ceil(X),Q=this.tex.getWidth();if(Y+1>=z||K+1>=z)return!1;const J=(z-K-1)*Q+Y+k;if(F>u(this.buffer[J],B,w,O)||F>u(this.buffer[J+1],B,w,O))return!1;const ae=(z-K+1-1)*Q+Y+k;return!(F>u(this.buffer[ae],B,w,O)||F>u(this.buffer[ae+1],B,w,O))},this.props={...y.ParamDefinition.getDefaultValues(e.HiZParams),...A};const{gl:x,extensions:M}=l;if(!(0,r.isWebGL2)(x)||!M.colorBufferFloat){s.isDebugMode&&console.log('Missing webgl2 and/or colorBufferFloat support required for "Hi-Z"'),this.supported=!1;return}this.fb=l.resources.framebuffer(),this.tex=l.resources.texture("image-float32","alpha","float","nearest"),this.tex.attachFramebuffer(this.fb,0);const D=x.getParameter(x.IMPLEMENTATION_COLOR_READ_FORMAT),V=x.getParameter(x.IMPLEMENTATION_COLOR_READ_TYPE);if(D!==x.RED||V!==x.FLOAT){s.isDebugMode&&console.log('Missing red/float reading support required for "Hi-Z"'),this.supported=!1;return}this.supported=!0,this.buf=l.resources.pixelPack("alpha","float"),this.renderable=(0,t.createHiZRenderable)(l,this.drawPass.depthTextureOpaque),s.isDebugMode&&T&&this.initDebug(T)}}e.HiZPass=P})(IA)),IA}var wA={},eH;function fse(){return eH||(eH=1,(function(e){Object.defineProperty(e,"__esMo
7083dule",{value:!0}),e.XRManager=e.XRManagerParams=e.DefaultXRManagerAttribs=e.DefaultXRManagerBindings=void 0;const t=Rn(),r=wt(),n=rs(),i=Xr(),c=ns(),o=cs(),s=DS(),h=Fa(),f=CT(),y=rt(),_=Ne(),g=Kn(),a=IS(),d=Ct(),p=o.ButtonsType,u=a.Binding.Trigger,m=a.Binding.TriggerKey;function v(C){const l=i.Mat4.getDecomposition(C);return new XRRigidTransform(r.Vec3.toObj(l.position),n.Quat.toObj(l.quaternion))}function b(C,l){const S=r.Vec3.fromObj(C.transform.position),T=i.Mat4.fromArray((0,i.Mat4)(),C.transform.matrix,0),A=i.Mat4.getDecomposition(T),x=i.Mat4.fromQuat((0,i.Mat4)(),A.quaternion),M=r.Vec3.transformMat4((0,r.Vec3)(),r.Vec3.negUnitZ,x),D=f.Ray3D.create(S,M);return l&&f.Ray3D.transform(D,D,i.Mat4.invert((0,i.Mat4)(),l)),D}e.DefaultXRManagerBindings={exit:(0,a.Binding)([m("GamepadB")]),togglePassthrough:(0,a.Binding)([m("GamepadA")]),gestureScale:(0,a.Binding)([u(p.Flag.Trigger)])},e.DefaultXRManagerAttribs={bindings:e.DefaultXRManagerBindings},e.XRManagerParams={minTargetDistance:_.ParamDefinition.Numeric(.4,{min:.001,max:1,step:.001}),disablePostprocessing:_.ParamDefinition.Boolean(!0),resolutionScale:_.ParamDefinition.Numeric(1,{min:.1,max:2,step:.1}),sceneRadiusInMeters:_.ParamDefinition.Numeric(.25,{min:.01,max:2,step:.01},{description:"The radius of the scene bounding sphere in meters, used to set the initial camera scale."})};class P{get session(){return this.xrSession}setProps(l){Object.assign(this.props,l)}setAttribs(l){Object.assign(this.attribs,l)}intersect(l,S,T,A){const x=(0,r.Vec3)(),M=b(A,S);if(s.Plane3D.intersectRay3D(x,T,M)){const{height:D}=l.viewport,V=(0,g.cameraProject)((0,h.Vec4)(),x,l.viewport,l.projectionView),R=c.Vec2.create(Math.floor(V[0]),D-Math.floor(V[1]));return{point:x,screen:R}}}setScaleFactor(l){this.scaleFactor=l}resetScale(){this.scaleFactor=1,this.prevScale=0}update(l){var S,T,A,x,M,D,V;const{xrSession:R,xrRefSpace:E,input:I,camera:B,stereoCamera:w,pointerHelper:O}=this;if(!l||!R||!E)return!1;B.scale=B.scale*this.scaleFactor,this.prevScale=B.scale;const F=r.Vec3.sub((0,r.Vec3)(),B.position,B.target);r.Vec3.scaleAndAdd(B.position,B.position,F,1-this.scaleFactor),this.scaleFactor=1;const L=v(B.view),U=E.getOffsetReferenceSpace(L),q=l.getViewerPose(U);if(!q)return!1;const N=l.getViewerPose(E);if(N){const te=n.Quat.fromObj(N.transform.orientation);i.Mat4.fromQuat(B.headRotation,te)}const{depthFar:k,depthNear:j,baseLayer:H}=R.renderState;if(!H)return!1;(k!==B.far||j!==B.near)&&R.updateRenderState({depthNear:B.near,depthFar:B.far}),w.update({pose:q,layer:H});const G=w.left,z=r.Vec3.scale((0,r.Vec3)(),G.state.target,G.scale),W=i.Mat4.getTranslation((0,r.Vec3)(),i.Mat4.invert((0,i.Mat4)(),G.view)),X=r.Vec3.sub((0,r.Vec3)(),W,z),Y=s.Plane3D.fromNormalAndCoplanarPoint((0,s.Plane3D)(),X,z),K=[],Q=[],J=[],ae=[];if(R.inputSources)for(const te of R.inputSources){if(te.targetRayMode==="screen"){if(te.gamepad){const{axes:se}=te.gamepad,{width:ye,height:Se}=G.viewport,Ae=(se[0]+1)/2*ye,_e=(se[1]+1)/2*Se,be=G.getRay((0,f.Ray3D)(),Ae,Se-_e);ae.push({x:Ae,y:_e,ray:be})}continue}if(te.targetRayMode!=="tracked-pointer")continue;const{handedness:ne,targetRaySpace:$,gamepad:ie}=te;if(!ne)continue;const Z=l.getPose($,E);if(!Z)continue;const re=b(Z,B.view);K.push(re);const oe=y.Sphere3D.scaleNX((0,y.Sphere3D)(),this.scene.boundingSphereVisible,G.scale),ce=(0,r.Vec3)();f.Ray3D.intersectSphere3D(ce,re,oe)&&Q.push(ce);let ue=o.ButtonsType.create(o.ButtonsType.Flag.None);!((S=ie?.buttons[0])===null||S===void 0)&&S.pressed&&(ue|=o.ButtonsType.Flag.Primary),!((T=ie?.buttons[1])===null||T===void 0)&&T.pressed&&(ue|=o.ButtonsType.Flag.Secondary),!((A=ie?.buttons[3])===null||A===void 0)&&A.pressed&&(ue|=o.ButtonsType.Flag.Auxilary),!((x=ie?.buttons[4])===null||x===void 0)&&x.pressed&&(ue|=o.ButtonsType.Flag.Forth),!((M=ie?.buttons[5])===null||M===void 0)&&M.pressed&&(ue|=o.ButtonsType.Flag.Five);const pe=ne==="left"?this.prevInput.left:this.prevInput.right,he=this.intersect(G,B.view,Y,Z),fe=pe?this.intersect(G,B.view,Y,pe.targetRayPose):void 0,[de,ge]=(D=he?.screen)!==null&&D!==void 0?D:[0,0],[Ce,ve]=(V=fe?.screen)!==null&&V!==void 0?V:[de,ge],le=c.Vec2.set((0,c.Vec2)(),de-Ce,ge-ve);c.Vec2.setMagnitude(le,le,Math.min(100,c.Vec2.magnitude(le)));const[me,ee]=c.Vec2.round(le,le);J.push({handedness:ne,buttons:ue,x:de,y:ge,dx:me,dy:ee,ray:re,axes:ie?.axes}),ne==="left"?this.prevInput.left={targetRayPose:Z}:this.prevInput.right={targetRayPose:Z}}else this.prevInput.left=void 0,this.prevInput.right=void 0;return I.updateTrackedPointers(J),I.updateScreenTouches(ae),O.ensureEnabled(),O.update(K,Q,this.hit),!0}async setSession(l){if(this.xrSession!==l)if(await this.webgl.xr.set(l,{resolutionScale:this.props.resolutionScale}),this.xrSession=this.webgl.xr.session,this.prevInput={},this.hit=void 0,this.xrSession){this.xrRefSpace=await this.xrSession.requestReferenceSpace("local"),this.pointerHelper.setProps({enabled:"on"});let S=this.prevScale;if(S===0){const{radius:T}=this.scene.boundingSphereVisible;S=T?1/T*this.props.sceneRadiusInMeters:.01}this.camera.forceFull=!0,this.camera.scale=S,this.camera.minTargetDistance=this.props.minTargetDistance,this.prevScale=S}else this.xrRefSpace=void 0,i.Mat4.setZero(this.camera.headRotation),this.pointerHelper.setProps({enabled:"off"}),this.camera.forceFull=!1,this.camera.scale=1,this.camera.minTargetDistance=0}async end(){await this.webgl.xr.end()}async request(){if(!navigator.xr)return;const l=await navigator.xr.isSessionSupported("immersive-ar")?await navigator.xr.requestSession("immersive-ar"):await navigator.xr.requestSession("immersive-vr");await this.setSession(l)}dispose(){var l;this.hoverSub.unsubscribe(),this.keyUpSub.unsubscribe(),this.gestureSub.unsubscribe(),this.sessionChangedSub.unsubscribe(),this.togglePassthrough.complete(),this.sessionChanged.complete(),this.isSupported.complete(),(l=navigator.xr)===null||l===void 0||l.removeEventListener("devicechange",this.checkSupported)}constructor(l,S,T,A,x,M,D,V={},R={}){var E;this.webgl=l,this.input=S,this.scene=T,this.camera=A,this.stereoCamera=x,this.pointerHelper=M,this.interactionHelper=D,this.togglePassthrough=new t.Subject,this.sessionChanged=new t.Subject,this.isSupported=new t.BehaviorSubject(!1),this.xrSession=void 0,this.xrRefSpace=void 0,this.scaleFactor=1,this.prevScale=0,this.prevInput={},this.hit=void 0,this.checkSupported=async()=>
7083{if(!navigator.xr){this.isSupported.next(!1);return}try{const[I,B]=await Promise.all([navigator.xr.isSessionSupported("immersive-ar"),navigator.xr.isSessionSupported("immersive-vr")]);this.isSupported.next(I||B)}catch(I){d.isDebugMode&&console.warn(I),this.isSupported.next(!1)}},this.props={..._.ParamDefinition.getDefaultValues(e.XRManagerParams),...V},this.attribs={...e.DefaultXRManagerAttribs,...R},this.hoverSub=this.interactionHelper.events.hover.subscribe(({position:I})=>{this.hit=I}),this.sessionChangedSub=l.xr.changed.subscribe(async()=>{await this.setSession(l.xr.session),this.sessionChanged.next()}),this.checkSupported(),(E=navigator.xr)===null||E===void 0||E.addEventListener("devicechange",this.checkSupported),this.keyUpSub=S.keyUp.subscribe(({code:I,modifiers:B,key:w})=>{const O=this.attribs.bindings;a.Binding.matchKey(O.exit,I,B,w)&&this.end(),a.Binding.matchKey(O.togglePassthrough,I,B,w)&&this.togglePassthrough.next()}),this.gestureSub=S.gesture.subscribe(({scale:I,button:B,modifiers:w})=>{const O=this.attribs.bindings;a.Binding.match(O.gestureScale,B,w)&&this.setScaleFactor(I)})}}e.XRManager=P})(wA)),wA}var bb={},tH;function mse(){if(tH)return bb;tH=1,Object.defineProperty(bb,"__esModule",{value:!0}),bb.RayHelper=void 0;const e=CT(),t=Ge(),r=er(),n=Ct(),i=ta(),c=Kn(),o=Kn(),s=h2(),h=ja();class f{setPickPadding(g){this.pickPadding!==g&&(this.pickPadding=g,this.update())}update(){const g=this.pickPadding*2+1;o.Viewport.set(this.viewport,0,0,g,g),this.buffers.setViewport(0,0,g,g),this.spiral=(0,r.spiral2d)(this.pickPadding),this.size=g,this.pickPass.setSize(g,g)}render(g){n.isTimingMode&&this.webgl.timer.mark("RayHelper.render",{captureStats:!0});const{renderer:a,scene:d,helper:p}=this;a.setTransparentBackground(!1),a.setDrawingBufferSize(this.size,this.size),a.setPixelRatio(1),a.setViewport(0,0,this.size,this.size),this.pickPass.render(a,g,d,p),n.isTimingMode&&this.webgl.timer.markEnd("RayHelper.render")}identifyInternal(g,a){if(this.webgl.isContextLost)return;const{viewport:d}=this,p=this.buffers.getPickingId(g,a);if(p===void 0)return;const u=this.buffers.getDepth(g,a),m=t.Vec3.create(g,a,u);return(0,c.cameraUnproject)(m,m,d,this.camera.inverseProjectionView),{id:p,position:m}}prepare(g,a){this.camera.far=a.far,this.camera.near=a.near,this.camera.fogFar=a.fogFar,this.camera.fogNear=a.fogNear,this.camera.forceFull=a.forceFull,this.camera.scale=a.scale,o.Viewport.copy(this.camera.viewport,this.viewport),i.Camera.copySnapshot(this.camera.state,{...a.state,mode:"orthographic"}),y(this.camera,g,a.up),t.Mat4.mul(this.camera.projectionView,this.camera.projection,this.camera.view),t.Mat4.tryInvert(this.camera.inverseProjectionView,this.camera.projectionView),t.Mat4.copy(this.camera.viewEye,a.view)}getPickData(){const g=this.pickPadding;for(const a of this.spiral){const d=this.identifyInternal(g+a[0],g+a[1]);if(d)return d}}intersectsScene(g,a){return h.Sphere3D.scaleNX(this.sphere,this.scene.boundingSphereVisible,a),e.Ray3D.isInsideSphere3D(g,this.sphere)||e.Ray3D.isIntersectingSphere3D(g,this.sphere)}identify(g,a){if(this.intersectsScene(g,a.scale))return this.prepare(g,a),n.isTimingMode&&this.webgl.timer.mark("RayHelper.identify"),this.render(this.camera),this.buffers.read(),n.isTimingMode&&this.webgl.timer.markEnd("RayHelper.identify"),this.getPickData()}asyncIdentify(g,a){if(this.intersectsScene(g,a.scale))return this.prepare(g,a),n.isTimingMode&&this.webgl.timer.mark("RayHelper.asyncIdentify"),this.render(this.camera),this.buffers.asyncRead(),n.isTimingMode&&this.webgl.timer.markEnd("RayHelper.asyncIdentify"),{tryGet:()=>{const d=this.buffers.check();if(d===s.AsyncPickStatus.Resolved)return this.getPickData();if(d===s.AsyncPickStatus.Pending)return"pending"}}}reset(){this.buffers.reset(),this.pickPass.reset()}dispose(){this.buffers.dispose(),this.pickPass.dispose()}constructor(g,a,d,p,u){this.webgl=g,this.renderer=a,this.scene=d,this.helper=p,this.viewport=(0,o.Viewport)(),this.sphere=(0,h.Sphere3D)();const m=u.pickPadding*2+1;this.camera=new i.Camera,this.pickPass=new s.PickPass(g,m,m,1),this.buffers=new s.PickBuffers(this.webgl,this.pickPass,u.maxAsyncReadLag),this.pickPadding=u.pickPadding,this.update(),(0,s.checkAsyncPickingSupport)(g)||(this.asyncIdentify=(v,b)=>({tryGet:()=>this.identify(v,b)}))}}bb.RayHelper=f;function y(_,g,a){const{near:d,far:p,viewport:u}=_,m=2*Math.tan((0,r.degToRad)(.1)/2)*t.Vec3.distance(_.position,_.target)*_.scale,v=u.height/m,b=-u.width/2,P=u.width/2,C=u.height/2,l=-u.height/2,S=(P-b)/(2*v),T=(C-l)/(2*v),A=(P+b)/2,x=(C+l)/2,M=A-S,D=A+S,V=x+T,R=x-T;t.Mat4.ortho(_.projection,M,D,V,R,d,p);const E=t.Vec3.normalize((0,t.Vec3)(),g.direction),I=t.Quat.fromUnitVec3((0,t.Quat)(),E,t.Vec3.negUnitZ);
7083t.Quat.invert(I,I);const B=t.Vec3.clone(g.origin),w=t.Vec3.add((0,t.Vec3)(),B,E);t.Mat4.lookAt(_.view,B,w,a)}return bb}var rH;function y2(){return rH||(rH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Canvas3D=e.Canvas3DContext=e.DefaultCanvas3DAttribs=e.DefaultCanvas3DParams=e.Canvas3DParams=e.CameraFogParams=void 0;const t=Rn(),r=ci(),n=Ge(),i=cs(),c=i2(),o=Rre(),s=Kn(),h=lQ(),f=Lt(),y=f2(),_=gt(),g=ta(),a=Ne(),d=Hi(),p=_oe(),u=XS(),m=p2(),v=h2(),b=Woe(),P=ase(),C=rt(),l=Ct(),S=YS(),T=KQ(),A=Lw(),x=sse(),M=cse(),D=et(),V=KS(),R=er(),E=vr(),I=dse(),B=g2(),w=Ew(),O=YQ(),F=fse(),L=mse(),U=Lf(),q=XQ(),N=Df();e.CameraFogParams={intensity:a.ParamDefinition.Numeric(15,{min:1,max:100,step:1})},e.Canvas3DParams={camera:a.ParamDefinition.Group({mode:a.ParamDefinition.Select("perspective",a.ParamDefinition.arrayToOptions(["perspective","orthographic"]),{label:"Camera"}),helper:a.ParamDefinition.Group(S.CameraHelperParams,{isFlat:!0}),stereo:a.ParamDefinition.MappedStatic("off",{on:a.ParamDefinition.Group(A.StereoCameraParams),off:a.ParamDefinition.Group({})},{cycle:!0,hideIf:W=>W?.mode!=="perspective"}),fov:a.ParamDefinition.Numeric(45,{min:10,max:130,step:1},{label:"Field of View"}),manualReset:a.ParamDefinition.Boolean(!1,{isHidden:!0})},{pivot:"mode"}),cameraFog:a.ParamDefinition.MappedStatic("on",{on:a.ParamDefinition.Group(e.CameraFogParams),off:a.ParamDefinition.Group({})},{cycle:!0,description:"Show fog in the distance"}),cameraClipping:a.ParamDefinition.Group({radius:a.ParamDefinition.Numeric(100,{min:0,max:99,step:1},{label:"Clipping",description:"How much of the scene to show."}),far:a.ParamDefinition.Boolean(!0,{description:"Hide scene in the distance"}),minNear:a.ParamDefinition.Numeric(1,{min:.1,max:100,step:.1},{description:"Minimal allowed distance of near clipping plane from the camera. Note, may cause performance issues rendering impostors when set too small and cause issues with outline rendering when too close to 0."})},{pivot:"radius"}),viewport:a.ParamDefinition.MappedStatic("canvas",{canvas:a.ParamDefinition.Group({}),"static-frame":a.ParamDefinition.Group({x:a.ParamDefinition.Numeric(0),y:a.ParamDefinition.Numeric(0),width:a.ParamDefinition.Numeric(128),height:a.ParamDefinition.Numeric(128)}),"relative-frame":a.ParamDefinition.Group({x:a.ParamDefinition.Numeric(.33,{min:0,max:1,step:.01}),y:a.ParamDefinition.Numeric(.33,{min:0,max:1,step:.01}),width:a.ParamDefinition.Numeric(.5,{min:.01,max:1,step:.01}),height:a.ParamDefinition.Numeric(.5,{min:.01,max:1,step:.01})})}),cameraResetDurationMs:a.ParamDefinition.Numeric(250,{min:0,max:1e3,step:1},{description:"The time it takes to reset the camera."}),sceneRadiusFactor:a.ParamDefinition.Numeric(1,{min:1,max:10,step:.1}),transparentBackground:a.ParamDefinition.Boolean(!1),checkeredTransparentBackground:a.ParamDefinition.Boolean(!1),dpoitIterations:a.ParamDefinition.Numeric(2,{min:1,max:10,step:1}),pickPadding:a.ParamDefinition.Numeric(3,{min:0,max:10,step:1},{description:"Extra pixels to around target to check in case target is empty."}),userInteractionReleaseMs:a.ParamDefinition.Numeric(250,{min:0,max:1e3,step:1},{description:"The time before the user is not considered interacting anymore."}),multiSample:a.ParamDefinition.Group(m.MultiSampleParams),postprocessing:a.ParamDefinition.Group(u.PostprocessingParams),marking:a.ParamDefinition.Group(V.MarkingParams),illumination:a.ParamDefinition.Group(B.IlluminationParams),hiZ:a.ParamDefinition.Group(I.HiZParams),renderer:a.ParamDefinition.Group(c.RendererParams),trackball:a.ParamDefinition.Group(o.TrackballControlsParams),interaction:a.ParamDefinition.Group(p.Canvas3dInteractionHelperParams),handle:a.ParamDefinition.Group(T.HandleHelperParams),pointer:a.ParamDefinition.Group(O.PointerHelperParams),xr:a.ParamDefinition.Group(F.XRManagerParams,{label:"XR"})},e.DefaultCanvas3DParams=a.ParamDefinition.getDefaultValues(e.Canvas3DParams),e.DefaultCanvas3DAttribs={trackball:o.DefaultTrackballControlsAttribs,xr:F.DefaultXRManagerAttribs};var k;(function(W){W.DefaultAttribs={powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,antialias:!0,preserveDrawingBuffer:!0,preferWebGl1:!1,handleResize:()=>{}},W.Params={resolutionMode:a.ParamDefinition.Select("auto",a.ParamDefinition.arrayToOptions(["auto","scaled","native"])),pixelScale:a.ParamDefinition.Numeric(1,{min:.1,max:2,step:.05}
7083),pickScale:a.ParamDefinition.Numeric(.25,{min:.1,max:1,step:.05}),transparency:a.ParamDefinition.Select("wboit",[["blended","Blended"],["wboit","Weighted, Blended"],["dpoit","Depth Peeling"]])},W.DefaultProps=a.ParamDefinition.getDefaultValues(W.Params);function X(Y,K,Q={},J={}){const ae={...W.DefaultAttribs,...Q},te={...W.DefaultProps,...J},{powerPreference:ne,failIfMajorPerformanceCaveat:$,antialias:ie,preserveDrawingBuffer:Z,preferWebGl1:re}=ae,oe=(0,h.getGLContext)(Y,{powerPreference:ne,failIfMajorPerformanceCaveat:$,antialias:ie,preserveDrawingBuffer:Z,alpha:!0,depth:!0,premultipliedAlpha:!0,preferWebGl1:re});if(oe===null)throw new Error("Could not create a WebGL rendering context");const ce=()=>{const se=te.pixelScale/(typeof window<"u"&&window?.devicePixelRatio||1);return te.resolutionMode==="auto"?(0,w.isMobileBrowser)()?se:te.pixelScale:te.resolutionMode==="native"?te.pixelScale:se},ue=()=>{const se=ce();de.setPixelScale(se),ge.setPixelScale(se)},{pickScale:pe,transparency:he}=te,fe=ce(),de=i.InputObserver.fromElement(Y,{pixelScale:fe,preventGestures:!0}),ge=(0,h.createContext)(oe,{pixelScale:fe}),Ce=new M.Passes(ge,K,{pickScale:pe,transparency:he});if(l.isDebugMode){const se=oe.getExtension("WEBGL_lose_context");se&&Y.addEventListener("mousedown",ye=>{ge.isContextLost||!ye.shiftKey||!ye.ctrlKey||!ye.altKey||(l.isDebugMode&&console.log("lose context"),se.loseContext(),setTimeout(()=>{ge.isContextLost&&(l.isDebugMode&&console.log("restore context"),se.restoreContext())},1e3))},!1)}const ve=new t.Subject,le=se=>{ge.setContextLost(),se.preventDefault(),l.isDebugMode&&console.log("context lost"),ve.next((0,r.now)())},me=()=>{ge.isContextLost&&(ge.handleContextRestored(()=>{Ce.draw.reset(),Ce.pick.reset(),Ce.illumination.reset()}),l.isDebugMode&&console.log("context restored"))};Y.addEventListener("webglcontextlost",le,!1),Y.addEventListener("webglcontextrestored",me,!1);const ee=new t.BehaviorSubject(void 0);return{canvas:Y,webgl:ge,input:de,passes:Ce,attribs:ae,get props(){return{...te}},contextLost:ve,contextRestored:ge.contextRestored,assetManager:K,changed:ee,get pixelScale(){return ce()},syncPixelScale:ue,setProps:se=>{if(!se)return;let ye=!1,Se=!1;se.resolutionMode!==void 0&&se.resolutionMode!==te.resolutionMode&&(te.resolutionMode=se.resolutionMode,Se=!0),se.pixelScale!==void 0&&se.pixelScale!==te.pixelScale&&(te.pixelScale=se.pixelScale,Se=!0),Se&&(ue(),ae.handleResize(),ye=!0),se.pickScale!==void 0&&se.pickScale!==te.pickScale&&(te.pickScale=se.pickScale,Ce.setPickScale(se.pickScale),ye=!0),se.transparency!==void 0&&se.transparency!==te.transparency&&(te.transparency=se.transparency,Ce.setTransparency(se.transparency),ye=!0),ye&&ee.next(void 0)},dispose:se=>{de.dispose(),Y.removeEventListener("webglcontextlost",le,!1),Y.removeEventListener("webglcontextrestored",me,!1),ge.destroy(se),ve.complete(),ee.complete()}}}W.fromCanvas=X})(k||(e.Canvas3DContext=k={}));const j=typeof window<"u"?window.requestAnimationFrame:W=>setImmediate(()=>W(Date.now())),H=typeof window<"u"?window.cancelAnimationFrame:W=>clearImmediate(W);function G(W,X){X.transparentBackground&&X.checkeredTransparentBackground?Object.assign(W.style,{"background-image":"linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%, lightgrey), linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%, lightgrey)","background-size":"60px 60px","background-position":"0 0, 30px 30px"}):Object.assign(W.style,{"background-image":"","background-size":"","background-position":""})}var z;(function(W){function X(Y,K={},Q={}){var J,ae;const{webgl:te,input:ne,passes:$,assetManager:ie,canvas:Z,contextLost:re}=Y,oe={...(0,E.deepClone)(e.DefaultCanvas3DParams),...(0,E.deepClone)(K)},ce={...(0,E.deepClone)(e.DefaultCanvas3DAttribs),...(0,E.deepClone)(Q)},ue=new Map,pe=new Map,he=new t.BehaviorSubject(0),fe=new t.Subject;let de=(0,r.now)();const ge=new t.BehaviorSubject(0),Ce=new t.BehaviorSubject(0),ve=new t.BehaviorSubject(0),{contextRestored:le}=te;let me=0,ee=0,se=128,ye=128,Se=!1,Ae=0;G(Z,oe),pc();const _e=y.Scene.create(te,$.draw.transparency,{dColorMarker:oe.renderer.colorMarker,dLightCount:(J=oe.renderer.light)===null||J===void 0?void 0:J.length});function be(){return _e.boundingSphere.radius*oe.sceneRadiusFactor}const xe=new g.Camera({position:n.Vec3.create(0,0,100),mode:oe.camera.mode,fog:oe.cameraFog.name==="on"?oe.cameraFog.params.intensity:0,clipFar:oe.cameraClipping.far,minNear:oe.cameraClipping.minNear,fov:(0,R.degToRad)(oe.camera.fov)},{x:me,y:ee,width:se,height:ye}),we=new A.StereoCamera(xe,oe.camera.stereo.params),Be=o.TrackballControls.create(ne,xe,_e,oe.trackball,ce.trackball),Me=new x.Helper(te,_e,oe),Re=new I.HiZPass(te,$.draw,Z,oe.hiZ),Te=c.Renderer.create(te,oe.renderer);Te.setOcclusionTest(Re.isOccluded);const Ve=new q.ShaderManager(te,_e);Ve.updateRequired(oe);const qe={pickPadding:oe.pickPadding,maxAsyncReadLag:v.DefaultPickOptions.maxAsyncReadLag},ke=new b.PickHelper(te,Te,_e,Me,$.pick,{x:me,y:ee,width:se,height:ye},qe),ze=new L.RayHelper(te,Te,_e,Me,qe),We=new p.Canvas3dInteractionHelper(Ln,ti,ht,ne,xe,Be,oe.interaction),Je=new m.MultiSampleHelper($.multiSample);$.draw.postprocessing.background.update(xe,oe.postprocessing.background,Xe=>{Xe&&Ze()});let De=!1;const Oe={durationMs:void 0,snapshot:void 0,keyframes:void 0,easing:void 0};let Fe=!1;function Le(){return{transparency:Y.props.transparency,transparentBackgroun
7083d:oe.transparentBackground,hiZ:Re.props.enabled,postprocessing:oe.postprocessing.enabled,axes:(0,E.deepClone)(Me.camera.props.axes)}}const He=Le();function Pe(){Object.assign(He,Le())}function Ie(){oe.postprocessing.enabled=He.postprocessing,oe.transparentBackground=He.transparentBackground,Y.setProps({transparency:He.transparency}),Re.setProps({enabled:He.hiZ}),Me.camera.setProps({axes:He.axes})}function Ee(){var Xe;oe.postprocessing.enabled=!Ue.props.disablePostprocessing,Y.setProps({transparency:"blended"}),Re.setProps({enabled:!1}),Me.camera.setProps({axes:{name:"off",params:{}}}),((Xe=Ue.session)===null||Xe===void 0?void 0:Xe.environmentBlendMode)==="alpha-blend"&&(oe.transparentBackground=Ye)}const Ue=new F.XRManager(te,ne,_e,xe,we,Me.pointer,We,oe.xr,ce.xr),$e={request:async()=>{try{await Ue.request()}catch(Xe){console.error(Xe),$e.requestFailed.next(Xe)}},end:()=>Ue.end(),isSupported:new t.BehaviorSubject(!1),isPresenting:new t.BehaviorSubject(!1),requestFailed:new t.Subject};let Ye=!1;const Qe=[Ue.isSupported.subscribe(Xe=>$e.isSupported.next(Xe)),Ue.togglePassthrough.subscribe(()=>{var Xe;((Xe=Ue.session)===null||Xe===void 0?void 0:Xe.environmentBlendMode)==="alpha-blend"&&(Ye=!oe.transparentBackground)}),Ue.sessionChanged.subscribe(()=>{var Xe;Fe=!0,Ue.session?(Pe(),Ye=((Xe=Ue.session)===null||Xe===void 0?void 0:Xe.environmentBlendMode)==="alpha-blend",Ee()):Ie(),Pn(),$e.isPresenting.next(!!Ue.session)})];let it=!0;function ht(Xe){let st=_.EmptyLoci,Dt=f.Representation.Empty;if(Xe){const Mt=Me.camera.getLoci(Xe);if(Mt!==_.EmptyLoci)return{loci:Mt,repr:Dt};st=Me.handle.getLoci(Xe),ue.forEach((Nt,Hr)=>{const ln=Hr.getLoci(Xe);(0,_.isEmptyLoci)(ln)||((0,_.isEmptyLoci)(st)||console.warn("found another loci, this should not happen"),st=ln,Dt=Hr)})}return{loci:st,repr:Dt}}let mt=[];function St(Xe,st){mt.push([Xe,st])}function Bt(){let Xe=!1;for(const[st,Dt]of mt)Xe=Ot(st,Dt)||Xe;return mt=[],Xe&&(_e.update(void 0,!0),Me.handle.scene.update(void 0,!0),Me.camera.scene.update(void 0,!0),Ve.updateRequired(oe),Ve.finalizeRequired(!0),fe.next()),Xe}function Ot(Xe,st){const{repr:Dt,loci:Mt}=Xe;let Nt=!1;return Dt?Nt=Dt.mark(Mt,st)||Nt:ue.forEach((Hr,ln)=>{Nt=ln.mark(Mt,st)||Nt}),Nt=Me.handle.mark(Mt,st)||Nt,Nt=Me.camera.mark(Mt,st)||Nt,Nt}function br(Xe,st){if(te.isContextLost||te.xr.session&&!st)return!1;let Dt=!1;Fe&&(fi(!1),Fe=!1,Dt=!0);const Mt=te.getDrawingBufferSize();if(me>Mt.width||me+se<0||ee>Mt.height||ee+ye<0)return!1;st&&(Ee(),oe.transparentBackground=Ye);const Nt=Bt()&&(Te.props.colorMarker||oe.marking.enabled);let Hr=!1;Be.update(Ae);const ln=xe.update(),Nr=Ue.update(st);if(!Nr&&st)return!1;const ao=Te.props.enableAnimation&&_e.hasAnimation,ct=Xe||ln||Dt||Se||Nr||ao;if(Se=!1,$.illumination.supported&&oe.illumination.enabled&&!st){if((ct||Nt)&&(Te.setOcclusionTest(null),$.illumination.restart()),$.illumination.shouldRender(oe.illumination)&&(!fc&&_e.count>0||$.illumination.iteration===0||oe.userInteractionReleaseMs===0)){l.isTimingMode&&te.timer.mark("Canvas3D.render",{captureStats:!0});const Tn={renderer:Te,camera:xe,scene:_e,helper:Me};$.illumination.render(Tn,oe,!0),l.isTimingMode&&te.timer.markEnd("Canvas3D.render"),ke.dirty=ke.dirty||ct,Hr=!0}}else{const Tn=Je.update(Nt||ct,oe.multiSample)&&!st;if(ct||Tn||Nt){Te.setOcclusionTest(Re.isOccluded);let zl=xe;(oe.camera.stereo.name==="on"||Nr)&&(Nr||we.update(),zl=we),l.isTimingMode&&te.timer.mark("Canvas3D.render",{captureStats:!0});const ni={renderer:Te,camera:zl,scene:_e,helper:Me};if(m.MultiSamplePass.isEnabled(oe.multiSample)&&!st){const T2=oe.multiSample.reduceFlicker&&!ln&&Nt&&!Be.isAnimating;Je.render(ni,oe,!0,T2)}else $.draw.render(ni,oe,!0);Re.render(xe),l.isTimingMode&&te.timer.markEnd("Canvas3D.render"),ke.dirty=ke.dirty||ct,Hr=!0}}return Hr}let Ir=!1,Cn=!1,Fn=!1;function ei(Xe){if(!(Cn||Fn)){if(!Ve.finalizeRequired(Xe?.isSynchronous)){Se=!0;return}br(!!Xe?.force,Xe?.xrFrame)&&it&&ge.next((0,r.now)()-de)}}function Ze(){Se=!0}let ot=0;function pt(Xe,st){Fn||te.xr.session&&!st?.xrFrame||(Ae=Xe,Te.setTime((Ae-de)/1e3),je(st?.isSynchronous),st?.updateControls&&Be.update(Ae),xe.transition.tick(Ae),Re.tick(),!st?.manualDraw&&(ei({isSynchronous:st?.isSynchronous,xrFrame:st?.xrFrame}),!xe.transition.inTransition&&!te.isContextLost&&We.tick(Ae)))}let xt;function pr(Xe){return xt=Xe,te.xr.session?te.xr.session.requestAnimationFrame(Xe):j(Xe)}function Rr(Xe){xt=void 0,te.xr.session?te.xr.session.cancelAnimationFrame(Xe):H(Xe)}function Qt(Xe,st){pt((0,r.now)(),{xrFrame:st}),ot=pr(Qt)}function tr(Xe){de=Xe,Be.start(Xe)}function Fr(){Cn=!1,Be.start((0,r.now)()),ot===0&&Qt()}function un(Xe=!1){Cn=Xe,ot!==0&&(Rr(ot),ot=0)}function Pn(){Cn=!1,xt&&pr(xt)}
7083function Ln(Xe){if(!te.isContextLost){if(Ve.finalize(["pick"],!0),"origin"in Xe)return ze.identify(Xe,xe);{const st=oe.camera.stereo.name==="on"?we:xe;return ke.identify(Xe[0],Xe[1],st)}}}function ti(Xe){if(!te.isContextLost){if(Ve.finalize(["pick"],!0),"origin"in Xe)return ze.asyncIdentify(Xe,xe);{const st=oe.camera.stereo.name==="on"?we:xe;return ke.asyncIdentify(Xe[0],Xe[1],st)}}}function je(Xe=!1){const st=ar(Xe);Ve.updateRequired(oe),st&&(tt(),Ir&&(Me.debug.isEnabled&&Me.debug.update(),ei({force:!0}),Ir=!1),Ce.next((0,r.now)()))}function tt(){if(!De)return;$e.isPresenting.value||Ue.resetScale();const Xe=_e.boundingSphereVisible,{center:st,radius:Dt}=Xe,Mt=Be.props.autoAdjustMinMaxDistance;if(Mt.name==="on"){const Nt=Mt.params.minDistanceFactor*Dt+Mt.params.minDistancePadding,Hr=Math.max(Mt.params.maxDistanceFactor*Dt,Mt.params.maxDistanceMin);Be.setProps({minDistance:Nt,maxDistance:Hr})}if(Dt>0){const Nt=Oe.durationMs===void 0?oe.cameraResetDurationMs:Oe.durationMs,Hr=xe.getFocus(st,Dt),ln=typeof Oe.snapshot=="function"?Oe.snapshot(_e,xe):Oe.snapshot,Nr=ln?{...Hr,...ln}:Hr;xe.setState({...Nr,radiusMax:be()},Nt,{keyframes:Oe.keyframes,easing:Oe.easing})}Oe.durationMs=void 0,Oe.snapshot=void 0,Oe.keyframes=void 0,Oe.easing=void 0,De=!1}const ut=(0,C.Sphere3D)(),Pt=(0,C.Sphere3D)();function Wt(){if(xe.state.radiusMax===0)return!0;if(xe.transition.inTransition||Oe.snapshot)return!1;let Xe=!0,st=!0;C.Sphere3D.set(Pt,xe.state.target,xe.state.radius);for(const Dt of _e.renderables){if(!Dt.state.visible)continue;const Mt=Dt.values.boundingSphere.ref.value;if(!Mt.radius)continue;st=!1;const Nt=n.Vec3.distance(Pt.center,Mt.center);if((Nt>Pt.radius||Nt>Mt.radius||Mt.radius>xe.state.radiusMax)&&!C.Sphere3D.includes(ut,Mt))return!0;C.Sphere3D.overlaps(Pt,Mt)&&(Xe=!1)}return Xe||!st&&Pt.radius<=.1}const kt=250;function ar(Xe){return _e.needsCommit?(C.Sphere3D.copy(ut,_e.boundingSphereVisible),Re.clear(),_e.commit(Xe?void 0:kt)?(ve.next(0),Me.debug.isEnabled&&Me.debug.update(),!oe.camera.manualReset&&(he.value===0||Wt())&&(De=!0),ut.radius===0&&(Oe.durationMs=0),oe.camera.manualReset||xe.setState({radiusMax:be()},0),he.next(ue.size),l.isDebugMode&&Qr(),!0):(ve.next(_e.commitQueueSize),!1)):!0}function Qr(){const Xe=_e.renderables.map(Nr=>({drawCount:Nr.values.drawCount.ref.value,instanceCount:Nr.values.instanceCount.ref.value,materialId:Nr.materialId,renderItemId:Nr.id,geometryType:Nr.values.dGeometryType.ref.value,"byteCount [MiB]":(0,N.toFixed)(Nr.getByteCount()/1024/1024,3)}));console.groupCollapsed(`${Xe.length} RenderItems`),Xe.length<=64?console.table(Xe):console.log(Xe),console.log(JSON.stringify(te.stats,void 0,4));const{texture:st,cubeTexture:Dt,attribute:Mt,elements:Nt,pixelPack:Hr,renderbuffer:ln}=te.resources.getByteCounts();console.log(JSON.stringify({texture:`${(st/1024/1024).toFixed(3)} MiB`,cubeTexture:`${(Dt/1024/1024).toFixed(3)} MiB`,attribute:`${(Mt/1024/1024).toFixed(3)} MiB`,elements:`${(Nt/1024/1024).toFixed(3)} MiB`,pixelPack:`${(Hr/1024/1024).toFixed(3)} MiB`,renderbuffer:`${(ln/1024/1024).toFixed(3)} MiB`},void 0,4)),console.log(JSON.stringify({renderables:`${(_e.renderables.reduce((Nr,ao)=>Nr+ao.getByteCount(),0)/1024/1024).toFixed(3)} MiB`,passes:{draw:`${($.draw.getByteCount()/1024/1024).toFixed(3)} MiB`,illumination:`${($.illumination.getByteCount()/1024/1024).toFixed(3)} MiB`,pick:`${($.pick.getByteCount()/1024/1024).toFixed(3)} MiB`,hiZ:`${(Re.getByteCount()/1024/1024).toFixed(3)} MiB`}},void 0,4)),l.isTimingMode&&console.log(JSON.stringify(te.timer.formatedStats(),void 0,4)),console.groupEnd()}function Lr(Xe){Bi(Xe);const st=ue.get(Xe),Dt=new Set;Xe.renderObjects.forEach(Mt=>Dt.add(Mt)),st?d.SetUtils.areEqual(Dt,st)||(Dt.forEach(Mt=>{st.has(Mt)||_e.add(Mt)}),st.forEach(Mt=>{Dt.has(Mt)||_e.remove(Mt)})):Xe.renderObjects.forEach(Mt=>_e.add(Mt)),ue.set(Xe,Dt),_e.update(Xe.renderObjects,!1),Ir=!0,l.isDebugMode&&Qr()}function Ei(Xe){Ri(Xe);const st=ue.get(Xe);st&&(st.forEach(Dt=>_e.remove(Dt)),ue.delete(Xe),Ir=!0,l.isDebugMode&&Qr())}function Bi(Xe){pe.has(Xe)||pe.set(Xe,Xe.updated.subscribe(st=>{Xe.state.syncManually||Lr(Xe)}))}function Ri(Xe){const st=pe.get(Xe);st&&(st.unsubscribe(),pe.delete(Xe))}
7083function ys(){const Xe=_e.boundingSphere.radius>0?100-Math.round(xe.transition.target.radius/be()*100):0;return{camera:{mode:xe.state.mode,helper:{...Me.camera.props},stereo:{...oe.camera.stereo},fov:Math.round((0,R.radToDeg)(xe.state.fov)),manualReset:!!oe.camera.manualReset},cameraFog:xe.state.fog>0?{name:"on",params:{intensity:xe.state.fog}}:{name:"off",params:{}},cameraClipping:{far:xe.state.clipFar,radius:Xe,minNear:xe.state.minNear},cameraResetDurationMs:oe.cameraResetDurationMs,sceneRadiusFactor:oe.sceneRadiusFactor,transparentBackground:oe.transparentBackground,checkeredTransparentBackground:oe.checkeredTransparentBackground,dpoitIterations:oe.dpoitIterations,pickPadding:oe.pickPadding,userInteractionReleaseMs:oe.userInteractionReleaseMs,viewport:oe.viewport,postprocessing:{...oe.postprocessing},marking:{...oe.marking},multiSample:{...oe.multiSample},illumination:{...oe.illumination},hiZ:{...Re.props},renderer:{...Te.props},trackball:{...Be.props},interaction:{...We.props},handle:{...Me.handle.props},pointer:{...Me.pointer.props},xr:{...Ue.props}}}const zr=re?.subscribe(()=>{Fn=!0,ke.dirty=!0}),Zr=le.subscribe(()=>{ke.reset(),ze.reset(),Re.reset(),_e.forEach(Xe=>{var st;!((st=Xe.values.meta)===null||st===void 0)&&st.ref.value.reset&&(Xe.values.meta.ref.value.reset(),Xe.update())}),Fn=!1,ei({force:!0}),ei({force:!0})}),ri=new t.BehaviorSubject(0);function fi(Xe=!0){$.updateSize(),pc(),iC(),Xe&&Ze(),ri.next(+new Date)}(0,l.addConsoleStatsProvider)(Qr);const xr=(ae=Y.changed)===null||ae===void 0?void 0:ae.subscribe(()=>{_e.setTransparency($.draw.transparency),Ze()});let hn=!1,fc=!1;const mc=[ne.drag.subscribe(()=>{hn=!0}),ne.interactionEnd.subscribe(()=>{hn=!1}),(0,t.merge)(ne.drag,ne.pinch,ne.wheel,ne.interactionEnd).subscribe(()=>{fe.next()}),fe.subscribe(()=>{fc=!0}),fe.pipe((0,t.debounceTime)(oe.userInteractionReleaseMs)).subscribe(()=>{fc=hn,!hn&&$.illumination.supported&&oe.illumination.enabled&&Ze()})];if(l.isDebugMode&&Z){let Xe;const st=Dt=>{const Mt=Dt&&_.Loci.getBoundingSphere(_.Loci.normalize(Dt,"residue"));Re.debugOcclusion(Mt)};ne.click.subscribe(Dt=>{if(!Dt.modifiers.control||Dt.button!==2)return;const Mt=Ln(n.Vec2.create(Dt.x,Dt.y));if(!Mt){Xe=void 0,st(Xe);return}Xe=ht(Mt.id).loci,st(Xe)}),ge.subscribe(()=>{setTimeout(()=>{st(Xe)},100)})}return{webgl:te,add:Lr,remove:Ei,commit:je,update:(Xe,st)=>{if(Xe){if(!ue.has(Xe))return;_e.update(Xe.renderObjects,!!st)}else _e.update(void 0,!!st);Ir=!0},clear:()=>{pe.forEach(Xe=>Xe.unsubscribe()),pe.clear(),ue.clear(),_e.clear(),Me.debug.clear(),Ze(),he.next(ue.size)},syncVisibility:()=>{xe.state.radiusMax===0&&(De=!0,Oe.durationMs=0),_e.syncVisibility()&&Me.debug.isEnabled&&Me.debug.update(),Ze()},requestDraw:Ze,tick:pt,animate:Fr,resetTime:tr,pause:un,resume:Pn,requestAnimationFrame:pr,cancelAnimationFrame:Rr,identify:Ln,asyncIdentify:ti,mark:St,getLoci:ht,handleResize:fi,requestResize:()=>{Fe=!0},requestCameraReset:Xe=>{Object.assign(Oe,Xe),De=!0},camera:xe,boundingSphere:_e.boundingSphere,boundingSphereVisible:_e.boundingSphereVisible,get notifyDidDraw(){return it},set notifyDidDraw(Xe){it=Xe},didDraw:ge,commited:Ce,commitQueueSize:ve,reprCount:he,resized:ri,setProps:(Xe,st=!1)=>{var Dt,Mt,Nt,Hr,ln,Nr,ao;const ct=typeof Xe=="function"?(0,U.produce)(ys(),Xe):Xe;ct.sceneRadiusFactor!==void 0&&(oe.sceneRadiusFactor=ct.sceneRadiusFactor,xe.setState({radiusMax:be()},0));const Tn=Object.create(null);ct.camera&&ct.camera.mode!==void 0&&ct.camera.mode!==xe.state.mode&&(Tn.mode=ct.camera.mode);const zl=Math.round((0,R.radToDeg)(xe.state.fov));if(ct.camera&&ct.camera.fov!==void 0&&ct.camera.fov!==zl&&(Tn.fov=(0,R.degToRad)(ct.camera.fov)),ct.cameraFog!==void 0&&ct.cameraFog.params){const ni=ct.cameraFog.name==="on"?ct.cameraFog.params.intensity:0;ni!==xe.state.fog&&(Tn.fog=ni)}if(ct.cameraClipping!==void 0&&(ct.cameraClipping.far!==void 0&&ct.cameraClipping.far!==xe.state.clipFar&&(Tn.clipFar=ct.cameraClipping.far),ct.cameraClipping.minNear!==void 0&&ct.cameraClipping.minNear!==xe.state.minNear&&(Tn.minNear=ct.cameraClipping.minNear),ct.cameraClipping.radius!==void 0)){const ni=be()/100*(100-ct.cameraClipping.radius);ni>0&&ni!==Tn.radius&&(Tn.radius=Math.max(ni,.01))}Object.keys(Tn).length>0&&xe.setState(Tn),!((Dt=ct.camera)===null||Dt===void 0)&&Dt.helper&&Me.camera.setProps(ct.camera.helper),((Mt=ct.camera)===null||Mt===void 0?void 0:Mt.manualReset)!==void 0&&(oe.camera.manualReset=ct.camera.manualReset),((Nt=ct.camera)===null||Nt===void 0?void 0:Nt.stereo)!==void 0&&(Object.assign(oe.camera.stereo,ct.camera.stereo),we.setProps(oe.camera.stereo.params)),ct.cameraResetDurationMs!==void 0&&(oe.cameraResetDurationMs=ct.cameraResetDurationMs),ct.transparentBackgroun
7083d!==void 0&&(oe.transparentBackground=ct.transparentBackground),ct.checkeredTransparentBackground!==void 0&&(oe.checkeredTransparentBackground=ct.checkeredTransparentBackground),ct.dpoitIterations!==void 0&&(oe.dpoitIterations=ct.dpoitIterations),ct.pickPadding!==void 0&&(oe.pickPadding=ct.pickPadding,ke.setPickPadding(oe.pickPadding)),ct.userInteractionReleaseMs!==void 0&&(oe.userInteractionReleaseMs=ct.userInteractionReleaseMs),ct.viewport!==void 0&&(oe.viewport===ct.viewport||oe.viewport.name===ct.viewport.name&&(0,D.shallowEqual)(oe.viewport.params,ct.viewport.params)||(oe.viewport=ct.viewport,pc(),iC())),!((Hr=ct.postprocessing)===null||Hr===void 0)&&Hr.background&&(Object.assign(oe.postprocessing.background,ct.postprocessing.background),$.draw.postprocessing.background.update(xe,oe.postprocessing.background,ni=>{ni&&!st&&Ze()})),ct.postprocessing&&Object.assign(oe.postprocessing,ct.postprocessing),ct.marking&&Object.assign(oe.marking,ct.marking),ct.illumination&&Object.assign(oe.illumination,ct.illumination),ct.multiSample&&Object.assign(oe.multiSample,ct.multiSample),ct.hiZ&&Re.setProps(ct.hiZ),ct.renderer&&(_e.setGlobals({dColorMarker:(ln=ct.renderer.colorMarker)!==null&&ln!==void 0?ln:Te.props.colorMarker,dLightCount:(ao=(Nr=ct.renderer.light)===null||Nr===void 0?void 0:Nr.length)!==null&&ao!==void 0?ao:Te.props.light.length}),Te.setProps(ct.renderer)),ct.trackball&&Be.setProps(ct.trackball),ct.interaction&&We.setProps(ct.interaction),ct.handle&&Me.handle.setProps(ct.handle),ct.pointer&&Me.pointer.setProps(ct.pointer),ct.xr&&Ue.setProps(ct.xr),Tn.mode==="orthographic"&&(oe.camera.stereo.name="off"),("transparentBackground"in ct||"checkeredTransparentBackground"in ct||ct.renderer&&"backgroundColor"in ct.renderer)&&G(Z,oe),Ve.updateRequired(oe),st||Ze()},setAttribs:Xe=>{Xe.trackball&&Be.setAttribs(Xe.trackball),Xe.xr&&Ue.setAttribs(Xe.xr)},getImagePass:(Xe={})=>new P.ImagePass(te,ie,Te,_e,xe,Me,Xe),getRenderObjects(){const Xe=[];return _e.forEach((st,Dt)=>Xe.push(Dt)),Xe},get props(){return ys()},get attribs(){return{trackball:Be.attribs,xr:Ue.attribs}},get input(){return ne},get stats(){return Te.stats},get interaction(){return We.events},debugRegistry:Me.debug,xr:$e,dispose:()=>{zr?.unsubscribe(),Zr.unsubscribe(),xr?.unsubscribe();for(const Xe of Qe)Xe.unsubscribe();Qe.length=0;for(const Xe of mc)Xe.unsubscribe();mc.length=0,H(ot),xt=void 0,mt=[],_e.clear(),Me.debug.clear(),Be.dispose(),Te.dispose(),We.dispose(),Re.dispose(),ke.dispose(),ze.dispose(),Ue.dispose(),he.complete(),fe.complete(),ge.complete(),ri.complete(),Ce.complete(),ve.complete(),$e.isPresenting.complete(),$e.isSupported.complete(),$e.requestFailed.complete(),(0,l.removeConsoleStatsProvider)(Qr)}};function pc(){const Xe=me,st=ee,Dt=se,Mt=ye,Nt=te.getDrawingBufferSize();oe.viewport.name==="canvas"?(me=0,ee=0,se=Nt.width,ye=Nt.height):oe.viewport.name==="static-frame"?(me=oe.viewport.params.x*te.pixelRatio,ye=oe.viewport.params.height*te.pixelRatio,ee=Nt.height-ye-oe.viewport.params.y*te.pixelRatio,se=oe.viewport.params.width*te.pixelRatio):oe.viewport.name==="relative-frame"&&(me=Math.round(oe.viewport.params.x*Nt.width),ye=Math.round(oe.viewport.params.height*Nt.height),ee=Math.round(Nt.height-ye-oe.viewport.params.y*Nt.height),se=Math.round(oe.viewport.params.width*Nt.width)),(Xe!==me||st!==ee||Dt!==se||Mt!==ye)&&(Se=!0)}function iC(){ke.setViewport(me,ee,se,ye),Te.setViewport(me,ee,se,ye),s.Viewport.set(xe.viewport,me,ee,se,ye),s.Viewport.set(Be.viewport,me,ee,se,ye),Re.setViewport(me,ee,se,ye)}}W.create=X})(z||(e.Canvas3D=z={}))})(jx)),jx}var Ku={},nH;function Vi(){if(nH)return Ku;nH=1,Object.defineProperty(Ku,"__esModule",{value:!0}),Ku.StatefulPluginComponent=Ku.PluginComponent=void 0;const e=vr(),t=Nl(),r=Vt();class n{constructor(){this.subs=void 0}subscribe(o,s){if(!o)return{unsubscribe:()=>{}};typeof this.subs>"u"&&(this.subs=[]);let h=o.subscribe(s);return this.subs.push(h),{unsubscribe:()=>{h&&this.subs&&(0,r.arraySetRemove)(this.subs,h)&&(h.unsubscribe(),h=void 0)}}}get ev(){return this._ev||(this._ev=t.RxEventHelper.create())}dispose(){if(this._ev&&this._ev.dispose(),this.subs){for(const o of this.subs)o.unsubscribe();this.subs=void 0}}}Ku.PluginComponent=n;class i extends n{updateState(...o){const s=this.state,h=(0,e.shallowMergeArray)(s,o);return h!==s?(this._state=h,!0):!1}get state(){return this._state}constructor(o){super(),this._state=o}}return Ku.StatefulPluginComponent=i,Ku}var VA={},_b={},iH;function di(){if(iH)return _b;
7083iH=1,Object.defineProperty(_b,"__esModule",{value:!0}),_b.PluginBehavior=void 0;const e=jt(),t=Et(),r=nt(),n=Ne(),i=et();var c;return(function(o){class s extends e.PluginStateObject.Create({name:"Root",typeClass:"Root"}){}o.Root=s;class h extends e.PluginStateObject.Create({name:"Category",typeClass:"Object"}){}o.Category=h;class f extends e.PluginStateObject.CreateBehavior({name:"Behavior"}){}o.Behavior=f,o.Categories={common:"Common",representation:"Representation",interaction:"Interaction","custom-props":"Custom Properties",misc:"Miscellaneous"},o.CreateCategory=e.PluginStateTransform.BuiltIn({name:"create-behavior-category",display:{name:"Behavior Category"},from:s,to:h,params:{label:n.ParamDefinition.Text("",{isHidden:!0})}})({apply({params:u}){return new h({},{label:u.label})}});const y=new Map;function _(u){return y.get(u.id)}o.getCategoryId=_;function g(u){const m=e.PluginStateTransform.CreateBuiltIn({name:u.name,display:u.display,from:[s],to:[f],params:u.params,apply({params:v},b){const P=u.label?u.label(v):{label:u.display.name,description:u.display.description};return new f(new u.ctor(b,v),P)},update({b:v,newParams:b}){return r.Task.create("Update Behavior",async()=>v.data.update&&await v.data.update(b)?t.StateTransformer.UpdateResult.Updated:t.StateTransformer.UpdateResult.Unchanged)},canAutoUpdate:u.canAutoUpdate});return y.set(m.id,u.category),m}o.create=g;function a(u,m){return class{register(){this.sub=u.subscribe(this.ctx,v=>m(v,this.ctx))}dispose(){this.sub&&this.sub.unsubscribe(),this.sub=void 0}constructor(v){this.ctx=v,this.sub=void 0}}}o.simpleCommandHandler=a;class d{subscribeCommand(m,v){this.subs.push(m.subscribe(this.ctx,v))}subscribeObservable(m,v){this.subs.push(m.subscribe(v))}track(m){this.subs.push(m)}dispose(){for(const m of this.subs)m.unsubscribe();this.subs=[]}update(m){return(0,i.shallowEqualObjects)(m,this.params)?!1:(this.params=m,!0)}constructor(m,v){this.ctx=m,this.params=v,this.subs=[]}}o.Handler=d;class p{subscribeCommand(m,v){this.subs.push(m.subscribe(this.plugin,v))}subscribeObservable(m,v){const b=m.subscribe(v);return this.subs.push(b),{unsubscribe:()=>{const P=this.subs.indexOf(b);P>=0&&(this.subs.splice(P,1),b.unsubscribe())}}}dispose(){for(const m of this.subs)m.unsubscribe();this.subs=[]}constructor(m,v){this.plugin=m,this.params=v,this.subs=[]}}o.WithSubscribers=p})(c||(_b.PluginBehavior=c={})),_b}var Yu={},aH;function pse(){if(aH)return Yu;aH=1,Object.defineProperty(Yu,"__esModule",{value:!0}),Yu.registerDefault=t,Yu.SyncRepresentationToCanvas=r,Yu.SyncStructureRepresentation3DState=n,Yu.UpdateRepresentationVisibility=i;const e=jt();function t(o){r(o),n(o),i(o)}function r(o){const s=o.state.data.events;s.object.created.subscribe(h=>{var f;e.PluginStateObject.isRepresentation3D(h.obj)&&(c(h.state.cells.get(h.ref),h.obj.data.repr),h.obj.data.repr.setState({syncManually:!0}),(f=o.canvas3d)===null||f===void 0||f.add(h.obj.data.repr))}),s.object.updated.subscribe(h=>{var f,y;h.oldObj&&e.PluginStateObject.isRepresentation3D(h.oldObj)&&((f=o.canvas3d)===null||f===void 0||f.remove(h.oldObj.data.repr),h.oldObj.data.repr.destroy()),e.PluginStateObject.isRepresentation3D(h.obj)&&(c(h.state.cells.get(h.ref),h.obj.data.repr),h.action==="recreate"&&h.obj.data.repr.setState({syncManually:!0}),(y=o.canvas3d)===null||y===void 0||y.add(h.obj.data.repr))}),s.object.removed.subscribe(h=>{var f;e.PluginStateObject.isRepresentation3D(h.obj)&&((f=o.canvas3d)===null||f===void 0||f.remove(h.obj.data.repr),h.obj.data.repr.destroy())})}function n(o){const s=o.state.data.events;s.object.created.subscribe(h=>{var f;if(!e.PluginStateObject.Molecule.Structure.Representation3DState.is(h.obj))return;const y=h.obj.data;y.repr.setState(y.state),(f=o.canvas3d)===null||f===void 0||f.update(y.repr)}),s.object.updated.subscribe(h=>{var f;if(!e.PluginStateObject.Molecule.Structure.Representation3DState.is(h.obj))return;const y=h.obj.data;y.repr.setState(y.state),(f=o.canvas3d)===null||f===void 0||f.update(y.repr)}),s.object.removed.subscribe(h=>{var f;if(!e.PluginStateObject.Molecule.Structure.Representation3DState.is(h.obj))return;const y=h.obj.data;y.repr.setState(y.initialState),(f=o.canvas3d)===null||f===void 0||f.update(y.repr)})}function i(o){o.state.data.events.cell.stateUpdated.subscribe(s=>{var h;const f=s.state.cells.get(s.ref);e.PluginStateObject.isRepresentation3D(f.obj)&&c(f,f.obj.data.repr)&&((h=o.canvas3d)===null||h===void 0||h.syncVisibility())})}function c(o,s){return s.state.visible===!!o.state.isHidden?(s.setState({visible:!o.state.isHidden}),!0):!1}return Yu}var Ea={},Sb={},Qd={},oH;
7083function ZQ(){if(oH)return Qd;oH=1,Object.defineProperty(Qd,"__esModule",{value:!0}),Qd.PluginCommandManager=void 0,Qd.PluginCommand=t;const e=et();function t(){const n=((i,c)=>i.commands.dispatch(n,c||{}));return n.subscribe=(i,c)=>i.commands.subscribe(n,c),n.id=e.UUID.create22(),n}class r{constructor(){this.subs=new Map,this.disposing=!1}subscribe(i,c){let o=this.subs.get(i.id);return o||(o=[],this.subs.set(i.id,o)),o.push(c),{unsubscribe:()=>{const s=this.subs.get(i.id);if(!s)return;const h=s.indexOf(c);if(!(h<0)){for(let f=h+1;f<s.length;f++)s[f-1]=s[f];s.pop()}}}}dispatch(i,c){return new Promise((o,s)=>{if(this.disposing){s("disposed");return}if(!this.subs.get(i.id)){o();return}this.resolve({cmd:i,params:c,resolve:o,reject:s})})}dispose(){this.subs.clear()}async resolve(i){const c=this.subs.get(i.cmd.id);if(!c){i.resolve();return}try{for(const o of c)await o(i.params);i.resolve()}catch(o){i.reject(o)}}}return Qd.PluginCommandManager=r,Qd}var sH;function Sn(){if(sH)return Sb;sH=1,Object.defineProperty(Sb,"__esModule",{value:!0}),Sb.PluginCommands=void 0;const e=ZQ();return Sb.PluginCommands={State:{SetCurrentObject:(0,e.PluginCommand)(),ApplyAction:(0,e.PluginCommand)(),Update:(0,e.PluginCommand)(),RemoveObject:(0,e.PluginCommand)(),ToggleExpanded:(0,e.PluginCommand)(),ToggleVisibility:(0,e.PluginCommand)(),Snapshots:{Add:(0,e.PluginCommand)(),Replace:(0,e.PluginCommand)(),Move:(0,e.PluginCommand)(),Remove:(0,e.PluginCommand)(),Apply:(0,e.PluginCommand)(),Clear:(0,e.PluginCommand)(),Upload:(0,e.PluginCommand)(),Fetch:(0,e.PluginCommand)(),DownloadToFile:(0,e.PluginCommand)(),OpenFile:(0,e.PluginCommand)(),OpenUrl:(0,e.PluginCommand)()}},Interactivity:{Object:{Highlight:(0,e.PluginCommand)()},Structure:{Highlight:(0,e.PluginCommand)(),Select:(0,e.PluginCommand)()},ClearHighlights:(0,e.PluginCommand)()},Layout:{Update:(0,e.PluginCommand)()},Toast:{Show:(0,e.PluginCommand)(),Hide:(0,e.PluginCommand)()},Camera:{Reset:(0,e.PluginCommand)(),SetSnapshot:(0,e.PluginCommand)(),Focus:(0,e.PluginCommand)(),FocusObject:(0,e.PluginCommand)(),OrientAxes:(0,e.PluginCommand)(),ResetAxes:(0,e.PluginCommand)()},Canvas3D:{SetSettings:(0,e.PluginCommand)(),ResetSettings:(0,e.PluginCommand)()}},Sb}var cH;function hse(){if(cH)return Ea;cH=1,Object.defineProperty(Ea,"__esModule",{value:!0}),Ea.registerDefault=t,Ea.Reset=r,Ea.SetSnapshot=n,Ea.Focus=i,Ea.FocusObject=c,Ea.OrientAxes=o,Ea.ResetAxes=s;const e=Sn();function t(h){r(h),i(h),c(h),n(h),o(h),s(h)}function r(h){e.PluginCommands.Camera.Reset.subscribe(h,f=>{h.managers.camera.reset(f?.snapshot,f?.durationMs)})}function n(h){e.PluginCommands.Camera.SetSnapshot.subscribe(h,({snapshot:f,durationMs:y})=>{h.managers.camera.setSnapshot(f,y)})}function i(h){e.PluginCommands.Camera.Focus.subscribe(h,({center:f,radius:y,durationMs:_})=>{h.managers.camera.focusSphere({center:f,radius:y},{durationMs:_}),h.events.canvas3d.settingsUpdated.next(void 0)})}function c(h){e.PluginCommands.Camera.FocusObject.subscribe(h,async f=>{h.managers.camera.focusObject(f)})}function o(h){e.PluginCommands.Camera.OrientAxes.subscribe(h,({structures:f,durationMs:y})=>{h.managers.camera.orientAxes(f,y)})}function s(h){e.PluginCommands.Camera.ResetAxes.subscribe(h,({durationMs:f})=>{h.managers.camera.resetAxes(f)})}return Ea}var Cb={},uH;function gse(){if(uH)return Cb;uH=1,Object.defineProperty(Cb,"__esModule",{value:!0}),Cb.registerDefault=r,Cb.Canvas3DSetSettings=n;const e=Sn(),t=y2();function r(i){n(i)}function n(i){e.PluginCommands.Canvas3D.ResetSettings.subscribe(i,()=>{var c;(c=i.canvas3d)===null||c===void 0||c.setProps(t.DefaultCanvas3DParams),i.events.canvas3d.settingsUpdated.next(void 0)}),e.PluginCommands.Canvas3D.SetSettings.subscribe(i,c=>{var o;i.canvas3d&&((o=i.canvas3d)===null||o===void 0||o.setProps(c.settings),i.events.canvas3d.settingsUpdated.next(void 0))})}return Cb}var EA={},lH;function yse(){return lH||(lH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.FocusLoci=e.DefaultFocusLociBindings=e.DefaultLociLabelProvider=e.SelectLoci=e.DefaultSelectLociBindings=e.HighlightLoci=void 0;const t=cn(),r=jt(),n=_a(),i=di(),c=VQ(),o=Et(),s=cs(),h=IS(),f=Ne(),y=gt(),_=Ke(),g=Vt(),a=s.ButtonsType,d=s.ModifiersKeys,p=h.Binding.Trigger,u={hoverHighlightOnly:(0,h.Binding)([p(a.Flag.None)],"Highlight","Hover element using ${triggers}"),hoverHighlightOnlyExtend:(0,h.Binding)([p(a.Flag.None,d.create({shift:!0}))],"Extend highlight","From selected to hovered element along polymer using ${triggers}")},m={bindings:f.ParamDefinition.Value(u,{isHidden:!0}),ignore:f.ParamDefinition.Value([],{isHidden:!0}),preferAtoms:f.ParamDefinition.Boolean(!1,{description:"Always prefer atoms over bonds"}),mark:f.ParamDefinition.Boolean(!0)};e.HighlightLoci=i.PluginBehavior.create({name:"representation-highlight-loci",category:"interaction",ctor:class extends i.PluginBehavior.Handler{constructor(){super(...arguments),this.lociMarkProvider=(P,C)=>{!this.ctx.canvas3d||!this.params.mark||this.ctx.canvas3d.mark(P,C)}}getLoci(P){return this.params.preferAtoms&&_.Bond.isLoci(P)&&P.bonds.length===2?_.Bond.toFirstStructureElementLoci(P):P}
7083register(){this.subscribeObservable(this.ctx.behaviors.interaction.hover,({current:P,buttons:C,modifiers:l})=>{if(!this.ctx.canvas3d||this.ctx.isBusy)return;const S=this.getLoci(P.loci);if(this.params.ignore.includes(S.kind)){this.ctx.managers.interactivity.lociHighlights.highlightOnly({repr:P.repr,loci:y.EmptyLoci});return}let T=!1;h.Binding.match(this.params.bindings.hoverHighlightOnly,C,l)&&(this.ctx.managers.interactivity.lociHighlights.highlightOnly({loci:S}),T=!0),h.Binding.match(this.params.bindings.hoverHighlightOnlyExtend,C,l)&&(this.ctx.managers.interactivity.lociHighlights.highlightOnlyExtend({loci:S}),T=!0),T||this.ctx.managers.interactivity.lociHighlights.highlightOnly({repr:P.repr,loci:y.EmptyLoci})}),this.ctx.managers.interactivity.lociHighlights.addProvider(this.lociMarkProvider)}unregister(){this.ctx.managers.interactivity.lociHighlights.removeProvider(this.lociMarkProvider)}},params:()=>m,display:{name:"Highlight Loci on Canvas"}}),e.DefaultSelectLociBindings={clickSelect:h.Binding.Empty,clickSelectOnly:h.Binding.Empty,clickToggle:(0,h.Binding)([p(a.Flag.Primary,d.create())],"Toggle selection","Click on element using ${triggers}"),clickToggleExtend:(0,h.Binding)([p(a.Flag.Primary,d.create({shift:!0}))],"Toggle extended selection","Click on element using ${triggers} to extend selection along polymer"),clickDeselect:h.Binding.Empty,clickDeselectAllOnEmpty:(0,h.Binding)([p(a.Flag.Primary,d.create())],"Deselect all","Click on nothing using ${triggers}")};const v={bindings:f.ParamDefinition.Value(e.DefaultSelectLociBindings,{isHidden:!0}),ignore:f.ParamDefinition.Value([],{isHidden:!0}),preferAtoms:f.ParamDefinition.Boolean(!1,{description:"Always prefer atoms over bonds"}),mark:f.ParamDefinition.Boolean(!0)};e.SelectLoci=i.PluginBehavior.create({name:"representation-select-loci",category:"interaction",ctor:class extends i.PluginBehavior.Handler{getLoci(P){return this.params.preferAtoms&&_.Bond.isLoci(P)&&P.bonds.length===2?_.Bond.toFirstStructureElementLoci(P):P}applySelectMark(P,C){const l=this.ctx.state.data.cells.get(P);if(l&&r.PluginStateObject.isRepresentation3D(l.obj)){this.spine.current=l;const S=this.spine.getRootOfType(r.PluginStateObject.Molecule.Structure);if(S){C&&this.lociMarkProvider({loci:_.Structure.Loci(S.data)},t.MarkerAction.Deselect);const T=this.ctx.managers.structure.selection.getLoci(S.data);this.lociMarkProvider({loci:T},t.MarkerAction.Select)}}}register(){const P=S=>y.Loci.isEmpty(S),C=S=>!y.Loci.isEmpty(S),l=[["clickSelect",S=>this.ctx.managers.interactivity.lociSelects.select(S),C],["clickToggle",S=>this.ctx.managers.interactivity.lociSelects.toggle(S),C],["clickToggleExtend",S=>this.ctx.managers.interactivity.lociSelects.toggleExtend(S),C],["clickSelectOnly",S=>this.ctx.managers.interactivity.lociSelects.selectOnly(S),C],["clickDeselect",S=>this.ctx.managers.interactivity.lociSelects.deselect(S),C],["clickDeselectAllOnEmpty",()=>this.ctx.managers.interactivity.lociSelects.deselectAll(),P]];l.sort((S,T)=>{const A=this.params.bindings[S[0]],x=this.params.bindings[T[0]],M=A.triggers.length===0?0:(0,g.arrayMax)(A.triggers.map(V=>d.size(V.modifiers)));return(x.triggers.length===0?0:(0,g.arrayMax)(x.triggers.map(V=>d.size(V.modifiers))))-M}),this.subscribeObservable(this.ctx.behaviors.interaction.click,({current:S,button:T,modifiers:A})=>{if(!this.ctx.canvas3d||this.ctx.isBusy||!this.ctx.selectionMode)return;const x=this.getLoci(S.loci);if(!this.params.ignore.includes(x.kind)){for(const[M,D,V]of l)if(h.Binding.match(this.params.bindings[M],T,A)&&(!V||V(x))){D({repr:S.repr,loci:x});break}}}),this.ctx.managers.interactivity.lociSelects.addProvider(this.lociMarkProvider),this.subscribeObservable(this.ctx.state.events.object.created,({ref:S})=>this.applySelectMark(S)),this.subscribeObservable(this.ctx.state.events.object.updated,({ref:S,obj:T,oldObj:A,oldData:x,action:M})=>{const D=this.ctx.state.data.cells.get(S);if(D&&r.PluginStateObject.Molecule.Structure.is(D.obj)){const V=T.data,R=M==="recreate"?A?.data:M==="in-place"?x:void 0;if(R&&_.Structure.areEquivalent(V,R)&&_.Structure.areHierarchiesEqual(V,R))return;const E=this.ctx.state.data.select(o.StateSelection.children(S).ofType(r.PluginStateObject.Molecule.Structure.Representation3D));for(const I of E)this.applySelectMark(I.transform.ref,!0)}})}unregister(){this.ctx.managers.interactivity.lociSelects.removeProvider(this.lociMarkProvider)}constructor(P,C){super(P,C),this.lociMarkProvider=(l,S)=>{!this.ctx.canvas3d||!this.params.mark||this.ctx.canvas3d.mark({loci:l.loci},S)},this.spine=new c.StateTreeSpine.Impl(P.state.data.cells)}},params:()=>v,display:{name:"Select Loci on Canvas"}}),e.DefaultLociLabelProvider=i.PluginBehavior.create({name:"default-loci-label-provider",category:"interaction",ctor:class{register(){this.ctx.managers.lociLabels.addProvider(this.f)}unregister(){this.ctx.managers.lociLabels.removeProvider(this.f)}constructor(P){this.ctx=P,this.f={label:C=>{const l=[];
7083if(_.StructureElement.Loci.is(C)){const S=new Set;for(const{unit:T}of C.elements){const A=_.StructureElement.Location.create(C.structure,T,T.elements[0]),x=_.StructureProperties.entity.pdbx_description(A).join(", ");S.add(x)}S.size===1&&S.forEach(T=>l.push(T))}return l.push((0,n.lociLabel)(C)),l.filter(S=>!!S).join("</br>")},group:C=>C.toString().replace(/Model [0-9]+/g,"Models"),priority:100}}},display:{name:"Provide Default Loci Label"}}),e.DefaultFocusLociBindings={clickFocus:(0,h.Binding)([p(a.Flag.Primary,d.create()),p(a.Flag.Trigger)],"Representation Focus","Click element using ${triggers}"),clickFocusAdd:(0,h.Binding)([p(a.Flag.Primary,d.create({control:!0})),p(a.Flag.Primary,d.create({meta:!0}))],"Representation Focus Add","Click element using ${triggers}"),clickFocusExtend:(0,h.Binding)([p(a.Flag.Primary,d.create({shift:!0}))],"Representation Focus Extend","Click on element using ${triggers}"),clickFocusSelectMode:(0,h.Binding)([],"Representation Focus (Selection Mode)","Click element using ${triggers}"),clickFocusAddSelectMode:(0,h.Binding)([],"Representation Focus Add (Selection Mode)","Click element using ${triggers}"),clickFocusExtendSelectMode:(0,h.Binding)([],"Representation Focus Extend (Selection Mode)","Click on element using ${triggers}")};const b={bindings:f.ParamDefinition.Value(e.DefaultFocusLociBindings,{isHidden:!0})};e.FocusLoci=i.PluginBehavior.create({name:"representation-focus-loci",category:"interaction",ctor:class extends i.PluginBehavior.Handler{register(){this.subscribeObservable(this.ctx.behaviors.interaction.click,({current:P,button:C,modifiers:l})=>{var S,T,A,x,M,D,V;const{clickFocus:R,clickFocusAdd:E,clickFocusExtend:I,clickFocusSelectMode:B,clickFocusAddSelectMode:w,clickFocusExtendSelectMode:O}=this.params.bindings,F=this.ctx.selectionMode?B:R,L=h.Binding.match(F,C,l),U=this.ctx.selectionMode?w:E,q=h.Binding.match(U,C,l),N=this.ctx.selectionMode?O:I,k=h.Binding.match(N,C,l);if(!L&&!q&&!k)return;const j=(x=(A=(T=(S=P.repr)===null||S===void 0?void 0:S.props)===null||T===void 0?void 0:T.snapshotKey)===null||A===void 0?void 0:A.trim())!==null&&x!==void 0?x:"";if(!this.ctx.selectionMode&&L&&j){this.ctx.managers.snapshot.applyKey(j);return}const H=(D=(M=P.repr)===null||M===void 0?void 0:M.props)===null||D===void 0?void 0:D.markdownCommands;if(!this.ctx.selectionMode&&L&&typeof H=="object"&&Object.keys(H).length>0){this.ctx.managers.markdownExtensions.tryExecute("click",H);return}const{granularity:G}=this.ctx.managers.interactivity.props;if(G!=="residue"&&G!=="element")return;const z=y.Loci.normalize(P.loci,"residue"),W=this.ctx.managers.structure.focus.current;if(W&&y.Loci.areEqual(W.loci,z))this.ctx.managers.structure.focus.clear();else if(L)this.ctx.managers.structure.focus.setFromLoci(z);else{k?this.ctx.managers.structure.focus.extendFromLoci(z):this.ctx.managers.structure.focus.toggleFromLoci(z);const X=(V=this.ctx.managers.structure.focus.current)===null||V===void 0?void 0:V.loci;X&&this.ctx.managers.camera.focusLoci(X)}})}},params:()=>b,display:{name:"Representation Focus Loci on Canvas"}})})(EA)),EA}var BA={},dH;function vse(){return dH||(dH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CameraControls=e.CameraAxisHelper=e.FocusLoci=e.NoPrimaryFocusLociBindings=e.DefaultFocusLociBindings=e.DefaultClickResetCameraOnEmptySelectMode=e.DefaultClickResetCameraOnEmpty=void 0;const t=gt(),r=Ne(),n=di(),i=cs(),c=IS(),o=Sn(),s=YS(),h=Ge(),f=i.ButtonsType,y=i.ModifiersKeys,_=c.Binding.Trigger,g=c.Binding.TriggerKey;e.DefaultClickResetCameraOnEmpty=(0,c.Binding)([_(f.Flag.Primary,y.create()),_(f.Flag.Secondary,y.create()),_(f.Flag.Primary,y.create({control:!0})),_(f.Flag.Trigger)],"Reset camera focus","Click on nothing using ${triggers}"),e.DefaultClickResetCameraOnEmptySelectMode=(0,c.Binding)([_(f.Flag.Secondary,y.create()),_(f.Flag.Primary,y.create({control:!0}))],"Reset camera focus (Selection Mode)","Click on nothing using ${triggers}"),e.DefaultFocusLociBindings={clickCenterFocus:(0,c.Binding)([_(f.Flag.Primary,y.create()),_(f.Flag.Secondary,y.create()),_(f.Flag.Primary,y.create({control:!0})),_(f.Flag.Trigger)],"Camera center and focus","Click element using ${triggers}"),clickCenterFocusSelectMode:(0,c.Binding)([_(f.Flag.Secondary,y.create()),_(f.Flag.Primary,y.create({control:!0}))],"Camera center and focus (Selection Mode)","Click element using ${triggers}"),clickResetCameraOnEmpty:e.DefaultClickResetCameraOnEmpty,clickResetCameraOnEmptySelectMode:e.DefaultClickResetCameraOnEmptySelectMode},e.NoPrimaryFocusLociBindings={clickCenterFocus:(0,c.Binding)([_(f.Flag.Secondary,y.create()),_(f.Flag.Primary,y.create({control:!0})),_(f.Flag.Trigger)],"Camera center and focus","Click element using ${triggers}"),clickCenterFocusSelectMode:(0,c.Binding)([_(f.Flag.Secondary,y.create()),_(f.Flag.Primary,y.create({control:!0}))],"Camera center and focus (Selection Mode)","Click element using ${triggers}"),clickResetCameraOnEmpty:e.DefaultClickResetCameraOnEmpty,clickResetCameraOnEmptySelectMode:e.DefaultClickResetCameraOnEmptySelectMode};const a={minRadius:r.ParamDefinition.Numeric(8,{min:1,max:50,step:1}),extraRadius:r.ParamDefinition.Numeric(4,{min:1,max:50,step:1},{description:"Value added to the bounding-sphere radius of the Loci"}),durationMs:r.ParamDefinition.Numeric(250,{min:0,max:1e3,step:1},{description:"Camera transition duration"}),bindings:r.ParamDefinition.Value(e.DefaultFocusLociBindings,{isHidden:!0})};e.FocusLoci=n.PluginBehavior.create({name:"camera-focus-loci",category:"interaction",ctor:class extends n.PluginBehavior.Handler{register(){this.subscribeOb
7083servable(this.ctx.behaviors.interaction.click,({current:u,button:m,modifiers:v})=>{var b,P,C,l,S,T,A,x;if(!this.ctx.canvas3d)return;const M=this.ctx.selectionMode?this.params.bindings.clickCenterFocusSelectMode:this.params.bindings.clickCenterFocus,D=this.ctx.selectionMode?(b=this.params.bindings.clickResetCameraOnEmptySelectMode)!==null&&b!==void 0?b:e.DefaultClickResetCameraOnEmptySelectMode:(P=this.params.bindings.clickResetCameraOnEmpty)!==null&&P!==void 0?P:e.DefaultClickResetCameraOnEmpty;if(t.Loci.isEmpty(u.loci)&&c.Binding.match(D,m,v)){o.PluginCommands.Camera.Reset(this.ctx,{});return}const V=(T=(S=(l=(C=u.repr)===null||C===void 0?void 0:C.props)===null||l===void 0?void 0:l.snapshotKey)===null||S===void 0?void 0:S.trim())!==null&&T!==void 0?T:"",R=(x=(A=u.repr)===null||A===void 0?void 0:A.props)===null||x===void 0?void 0:x.markdownCommands;if(!(V||typeof R=="object"&&Object.keys(R).length>0)&&c.Binding.match(M,m,v)){const E=t.Loci.normalize(u.loci,this.ctx.managers.interactivity.props.granularity);this.ctx.managers.camera.focusLoci(E,this.params)}})}},params:()=>a,display:{name:"Camera Focus Loci on Canvas"}}),e.CameraAxisHelper=n.PluginBehavior.create({name:"camera-axis-helper",category:"interaction",ctor:class extends n.PluginBehavior.Handler{register(){let u=s.CameraHelperAxis.None,m=0;this.subscribeObservable(this.ctx.behaviors.interaction.click,({current:v})=>{if(!this.ctx.canvas3d||!(0,s.isCameraAxesLoci)(v.loci))return;const b=v.loci.elements[0].groupId;if(b===s.CameraHelperAxis.None){u=s.CameraHelperAxis.None,m=0;return}const{camera:P}=this.ctx.canvas3d;let C,l;if(b>=s.CameraHelperAxis.X&&b<=s.CameraHelperAxis.Z){u=s.CameraHelperAxis.None,m=0;const S=h.Vec3.sub((0,h.Vec3)(),P.target,P.position),T=h.Vec3.cross((0,h.Vec3)(),S,P.up);l=(0,h.Vec3)(),l[b-1]=1,C=h.Vec3.cross((0,h.Vec3)(),l,T),h.Vec3.magnitude(C)===0&&(C=S)}else u===b?m=(m+1)%2:(u=b,m=0),b===s.CameraHelperAxis.XY?(l=m?h.Vec3.unitX:h.Vec3.unitY,C=h.Vec3.negUnitZ):b===s.CameraHelperAxis.XZ?(l=m?h.Vec3.unitX:h.Vec3.unitZ,C=h.Vec3.negUnitY):(l=m?h.Vec3.unitY:h.Vec3.unitZ,C=h.Vec3.negUnitX);this.ctx.canvas3d.requestCameraReset({snapshot:(S,T)=>T.getInvariantFocus(S.boundingSphereVisible.center,S.boundingSphereVisible.radius,l,C)})})}},params:()=>({}),display:{name:"Camera Axis Helper"}});const d={keySpinAnimation:(0,c.Binding)([g("I")],"Spin Animation","Press ${triggers}"),keyRockAnimation:(0,c.Binding)([g("O")],"Rock Animation","Press ${triggers}"),keyToggleFlyMode:(0,c.Binding)([g("Space",y.create({shift:!0}))],"Toggle Fly Mode","Press ${triggers}"),keyResetView:(0,c.Binding)([g("T")],"Reset View","Press ${triggers}"),keyGlobalIllumination:(0,c.Binding)([g("G")],"Global Illumination","Press ${triggers}")},p={bindings:r.ParamDefinition.Value(d,{isHidden:!0})};e.CameraControls=n.PluginBehavior.create({name:"camera-controls",category:"interaction",ctor:class extends n.PluginBehavior.Handler{register(){this.subscribeObservable(this.ctx.behaviors.interaction.key,({code:u,key:m,modifiers:v})=>{var b;if(!this.ctx.canvas3d)return;const P={...d,...this.params.bindings},C=this.ctx.canvas3d.props.trackball,l=this.ctx.canvas3d.props.illumination;if(c.Binding.matchKey(P.keySpinAnimation,u,v,m)){const S=C.animate.name!=="spin"?"spin":"off";S==="off"?o.PluginCommands.Canvas3D.SetSettings(this.ctx,{settings:{trackball:{...C,animate:{name:S,params:{}}}}}):o.PluginCommands.Canvas3D.SetSettings(this.ctx,{settings:{trackball:{...C,animate:{name:S,params:{speed:.1,axis:h.Vec3.create(0,-1,0)}}}}})}if(c.Binding.matchKey(P.keyRockAnimation,u,v,m)){const S=C.animate.name!=="rock"?"rock":"off";S==="off"?o.PluginCommands.Canvas3D.SetSettings(this.ctx,{settings:{trackball:{...C,animate:{name:S,params:{}}}}}):o.PluginCommands.Canvas3D.SetSettings(this.ctx,{settings:{trackball:{...C,animate:{name:S,params:{speed:.3,angle:10,axis:h.Vec3.create(0,-1,0)}}}}})}if(c.Binding.matchKey(P.keyToggleFlyMode,u,v,m)){const S=!C.flyMode;o.PluginCommands.Canvas3D.SetSettings(this.ctx,{settings:{trackball:{...C,flyMode:S}}}),!((b=this.ctx.canvas3dContext)===null||b===void 0)&&b.canvas&&(this.ctx.canvas3dContext.canvas.style.cursor=S?"crosshair":"unset")}c.Binding.matchKey(P.keyResetView,u,v,m)&&o.PluginCommands.Camera.Reset(this.ctx,{}),c.Binding.matchKey(P.keyGlobalIllumination,u,v,m)&&o.PluginCommands.Canvas3D.SetSettings(this.ctx,{settings:{illumination:{...l,enabled:!l.enabled}}})})}},params:()=>p,display:{name:"Camera Controls on Canvas"}})})(BA)),BA}var Pb={},fH;function bse(){if(fH)return Pb;
7083fH=1,Object.defineProperty(Pb,"__esModule",{value:!0}),Pb.SnapshotControls=void 0;const e=Ne(),t=di(),r=IS(),i=cs().ModifiersKeys,c=r.Binding.TriggerKey,o={next:(0,r.Binding)([c("ArrowRight",i.create({control:!0})),c("GamepadY")]),previous:(0,r.Binding)([c("ArrowLeft",i.create({control:!0})),c("GamepadX")]),first:(0,r.Binding)([c("ArrowUp",i.create({control:!0}))]),last:(0,r.Binding)([c("ArrowDown",i.create({control:!0}))])},s={bindings:e.ParamDefinition.Value(o,{isHidden:!0})};return Pb.SnapshotControls=t.PluginBehavior.create({name:"snapshot-controls",category:"interaction",ctor:class extends t.PluginBehavior.Handler{register(){this.subscribeObservable(this.ctx.behaviors.interaction.keyReleased,({code:h,modifiers:f,key:y})=>{if(!this.ctx.canvas3d||this.ctx.isBusy)return;const _=this.params.bindings,{snapshot:g}=this.ctx.managers;if(r.Binding.matchKey(_.next,h,f,y)&&g.applyNext(1),r.Binding.matchKey(_.previous,h,f,y)&&g.applyNext(-1),r.Binding.matchKey(_.first,h,f,y)){const a=g.state.entries.get(0),d=g.setCurrent(a.snapshot.id);if(d)return this.ctx.state.setSnapshot(d)}if(r.Binding.matchKey(_.last,h,f,y)){const a=g.state.entries.get(g.state.entries.size-1),d=g.setCurrent(a.snapshot.id);if(d)return this.ctx.state.setSnapshot(d)}})}},params:()=>s,display:{name:"Snapshot Controls"}}),Pb}var RA={},Tb={},mH;function _se(){if(mH)return Tb;mH=1,Object.defineProperty(Tb,"__esModule",{value:!0}),Tb.StructureInfo=void 0;const e=di(),t=Ke(),r=jt(),n=Et();return Tb.StructureInfo=e.PluginBehavior.create({name:"structure-info-prop",category:"custom-props",display:{name:"Structure Info"},ctor:class extends e.PluginBehavior.Handler{get maxModelIndex(){var i,c;let o=-1;const s=this.ctx.state.data.select(n.StateSelection.Generators.rootsOfType(r.PluginStateObject.Molecule.Model));for(const h of s){const f=((i=h.obj)===null||i===void 0?void 0:i.data)&&t.Model.Index.get((c=h.obj)===null||c===void 0?void 0:c.data).value;f!==void 0&&f>o&&(o=f)}return o}get maxStructureIndex(){var i,c;let o=-1;const s=this.ctx.state.data.select(n.StateSelection.Generators.rootsOfType(r.PluginStateObject.Molecule.Structure));for(const h of s){const f=((i=h.obj)===null||i===void 0?void 0:i.data)&&t.Structure.Index.get((c=h.obj)===null||c===void 0?void 0:c.data).value;f!==void 0&&f>o&&(o=f)}return o}get asymIdOffset(){var i;let c=0,o=0;const s=this.ctx.state.data.select(n.StateSelection.Generators.rootsOfType(r.PluginStateObject.Molecule.Model));for(const h of s){const f=(i=h.obj)===null||i===void 0?void 0:i.data;if(f){const y=t.Model.AsymIdCount.get(f),_=t.Model.AsymIdOffset.get(f).value;y!==void 0&&_!==void 0&&(c=Math.max(c,_.auth+y.auth),o=Math.max(o,_.label+y.label))}}return{auth:c,label:o}}setModelMaxIndex(){var i;const c=this.maxModelIndex,o=this.ctx.state.data.select(n.StateSelection.Generators.rootsOfType(r.PluginStateObject.Molecule.Model));for(const s of o){const h=(i=s.obj)===null||i===void 0?void 0:i.data;h&&t.Model.MaxIndex.get(h).value!==c&&t.Model.MaxIndex.set(h,{value:c},c)}}setStructureMaxIndex(){var i;const c=this.maxModelIndex,o=this.ctx.state.data.select(n.StateSelection.Generators.rootsOfType(r.PluginStateObject.Molecule.Structure));for(const s of o){const h=(i=s.obj)===null||i===void 0?void 0:i.data;h&&t.Structure.MaxIndex.get(h).value!==c&&t.Structure.MaxIndex.set(h,{value:c},c)}}handleModel(i,c){if(t.Model.Index.get(i).value===void 0){const o=c&&t.Model.Index.get(c).value,s=o??this.maxModelIndex+1;t.Model.Index.set(i,{value:s},s)}if(t.Model.AsymIdOffset.get(i).value===void 0){const o=c&&t.Model.AsymIdOffset.get(c).value,s=o??{...this.asymIdOffset};t.Model.AsymIdOffset.set(i,{value:s},s)}}handleStructure(i,c){if(i.parent!==void 0||t.Structure.Index.get(i).value!==void 0)return;const o=c&&t.Structure.Index.get(c).value,s=o??this.maxStructureIndex+1;t.Structure.Index.set(i,{value:s},s)}handle(i,c,o){r.PluginStateObject.Molecule.Structure.is(c)?!this.ctx.state.data.tree.transforms.get(i).transformer.definition.isDecorator&&c.data.parent===void 0&&this.handleStructure(c.data,o?.data):r.PluginStateObject.Molecule.Model.is(c)&&(this.ctx.state.data.tree.transforms.get(i).transformer.definition.isDecorator||this.handleModel(c.data,o?.data))}register(){this.ctx.customModelProperties.register(t.Model.AsymIdOffset,!0),this.ctx.customModelProperties.register(t.Model.Index,!0),this.ctx.customModelProperties.register(t.Model.MaxIndex,!0),this.ctx.customStructureProperties.register(t.Structure.Index,!0),this.ctx.customStructureProperties.register(t.Structure.MaxIndex,!0),this.subscribeOb
7083servable(this.ctx.state.data.events.object.created,i=>{this.handle(i.ref,i.obj),this.setModelMaxIndex(),this.setStructureMaxIndex()}),this.subscribeObservable(this.ctx.state.data.events.object.updated,i=>{this.handle(i.ref,i.obj,i.oldObj)})}unregister(){this.ctx.customModelProperties.unregister(t.Model.AsymIdOffset.descriptor.name),this.ctx.customModelProperties.unregister(t.Model.Index.descriptor.name),this.ctx.customModelProperties.unregister(t.Model.MaxIndex.descriptor.name),this.ctx.customStructureProperties.unregister(t.Structure.Index.descriptor.name),this.ctx.customStructureProperties.unregister(t.Structure.MaxIndex.descriptor.name)}}}),Tb}var xb={},OA={},kA={},zP={},Ko={},pH;function Nw(){return pH||(pH=1,Object.defineProperty(Ko,"__esModule",{value:!0}),Ko.DefaultMaxAsa=Ko.MaxAsa=Ko.VdWLookup=void 0,Ko.VdWLookup=[-1,1.76,1.87,1.65,1.5,1.4,1.85,1.8,1.6,1.4],Ko.MaxAsa={ALA:121,ARG:265,ASN:187,ASP:187,CYS:148,GLU:214,GLN:214,GLY:97,HIS:216,ILE:195,LEU:191,LYS:230,MET:203,PHE:228,PRO:154,SER:143,THR:163,TRP:264,TYR:255,VAL:165},Ko.DefaultMaxAsa=121),Ko}var hH;function Sse(){if(hH)return zP;hH=1,Object.defineProperty(zP,"__esModule",{value:!0}),zP.assignRadiusForHeavyAtoms=o;const e=Nw(),t=AT(),r=dt(),n=ma(),i=jr(),c=Sl();function o(y){const{key:_}=i.StructureProperties.residue,{type_symbol:g,label_atom_id:a,label_comp_id:d}=i.StructureProperties.atom,{structure:p,atomRadiusType:u,serialResidueIndex:m}=y,v=i.StructureElement.Location.create(p);let b=0,P=0,C=-1;v.structure=p;for(let l=0,S=0,T=p.units.length;l<T;++l){const A=p.units[l],{elements:x}=A;v.unit=A,b=-1;for(let M=0,D=x.length;M<D;++M){const V=x[M],R=S+M;v.element=V,P=_(v),b!==P&&++C,b=P;const E=a(v),I=(0,c.getElementMoleculeType)(A,V);if(I===r.MoleculeType.Water||!y.nonPolymer&&!(0,r.isPolymer)(I)){u[R]=0,m[R]=-1;continue}const B=g(v),w=(0,t.getElementIdx)(B);if((0,t.isHydrogen)(w)){u[R]=0,m[R]=C;continue}const O=d(v);if(y.traceOnly&&(E!=="CA"&&E!=="BB"||!e.MaxAsa[O])){u[R]=0,m[R]=C;continue}(0,r.isNucleic)(I)?u[R]=h(E,B):I===r.MoleculeType.Protein?u[R]=s(E,B,O):u[R]=f(B),m[R]=C}S+=x.length}}function s(y,_,g){switch(_){case"O":return 5;case"S":return 6;case"N":return y==="NZ"?4:3;case"C":switch(y){case"C":case"CE1":case"CE2":case"CE3":case"CH2":case"CZ":case"CZ2":case"CZ3":return 1;case"CA":case"CB":case"CE":case"CG1":case"CG2":return 2;default:switch(g){case"PHE":case"TRP":case"TYR":case"HIS":case"ASP":case"ASN":return 1;case"PRO":case"LYS":case"ARG":case"MET":case"ILE":case"LEU":return 2;case"GLU":case"GLN":return y==="CD"?1:2}}}return f(_)}function h(y,_,g){switch(_){case"C":return 7;case"N":return 8;case"P":return 9;case"O":return 5}return f(_)}function f(y){const _=(0,n.VdwRadius)(y);let g=e.VdWLookup.indexOf(_);return g===-1&&(g=e.VdWLookup.length,e.VdWLookup[g]=_),g}return zP}var HP={},gH;function Cse(){if(gH)return HP;gH=1,Object.defineProperty(HP,"__esModule",{value:!0}),HP.computeArea=r;const e=Nw(),t=5e3;async function r(i,c){const{atomRadiusType:o}=c;for(let s=0;s<o.length;s+=t)i.shouldUpdate&&await i.update({message:"Computing per residue surface accessibility...",current:s,max:o.length}),n(c,s,Math.min(s+t,o.length))}function n(i,c,o){const{structure:s,atomRadiusType:h,serialResidueIndex:f,area:y,spherePoints:_,scalingConstant:g,maxLookupRadius:a,probeSize:d}=i,{lookup3d:p,serialMapping:u,unitIndexMap:m,units:v}=s,{cumulativeUnitElementCount:b,elementIndices:P,unitIndices:C}=u;for(let l=c;l<o;++l){const S=e.VdWLookup[h[l]];if(S===e.VdWLookup[0])continue;const T=v[C[l]],A=P[l],x=T.conformation.x(A),M=T.conformation.y(A),D=T.conformation.z(A),{count:V,units:R,indices:E,squaredDistances:I}=p.find(x,M,D,a),B=d+S,w=d+B,O=[];for(let L=0;L<V;++L){const U=R[L],q=b[m.get(U.id)]+E[L],N=P[q],k=e.VdWLookup[h[q]];if(T===U&&A===N||k===e.VdWLookup[0])continue;const j=d+k;if(I[L]<(w+k)*(w+k)){const H=P[q];O[O.length]=[I[L],(I[L]+B*B-j*j)/(2*B),U.conformation.x(H)-x,U.conformation.y(H)-M,U.conformation.z(H)-D]}}O.sort((L,U)=>L[0]-U[0]);let F=0;e:for(let L=0;L<_.length;++L){const[U,q,N]=_[L];for(let k=0;k<O.length;++k){const[,j,H,G,z]=O[k];if(U*H+q*G+N*z>j)continue e}++F}y[f[l]]+=g*F*B*B}}return HP}var yH;function JQ(){return yH||(yH=1,(function(e){Object.defineProperty(e,"__esMo
7083dule",{value:!0}),e.AccessibleSurfaceArea=e.ShrakeRupleyComputationParams=void 0;const t=nt(),r=Ne(),n=Ge(),i=Ke(),c=Sse(),o=Nw(),s=Cse(),h=at();e.ShrakeRupleyComputationParams={numberOfSpherePoints:r.ParamDefinition.Numeric(92,{min:12,max:360,step:1},{description:"Number of sphere points to sample per atom: 92 (original paper), 960 (BioJava), 3000 (EPPIC) - see Shrake A, Rupley JA: Environment and exposure to solvent of protein atoms. Lysozyme and insulin. J Mol Biol 1973."}),probeSize:r.ParamDefinition.Numeric(1.4,{min:.1,max:4,step:.01},{description:"Corresponds to the size of a water molecule: 1.4 (original paper), 1.5 (occassionally used)"}),nonPolymer:r.ParamDefinition.Boolean(!1,{description:"Include non-polymer atoms as occluders."}),traceOnly:r.ParamDefinition.Boolean(!1,{description:"Compute only using alpha-carbons, if true increase probeSize accordingly (e.g., 4 A). Considers only canonical amino acids."})};var f;(function(y){function _(P,C={}){const l={...r.ParamDefinition.getDefaultValues(e.ShrakeRupleyComputationParams),...C};return t.Task.create("Compute Accessible Surface Area",async S=>await g(S,P,l))}y.compute=_;async function g(P,C,l){const S=a(C,l);(0,c.assignRadiusForHeavyAtoms)(S),await(0,s.computeArea)(P,S);const{area:T,serialResidueIndex:A}=S;return{area:T,serialResidueIndex:A}}function a(P,C){const{elementCount:l,atomicResidueCount:S}=P,{probeSize:T,nonPolymer:A,traceOnly:x,numberOfSpherePoints:M}=C;return{structure:P,probeSize:T,nonPolymer:A,traceOnly:x,spherePoints:d(M),scalingConstant:4*Math.PI/M,maxLookupRadius:2*C.probeSize+2*o.VdWLookup[2],atomRadiusType:new Int8Array(l),serialResidueIndex:new Int32Array(l),area:new Float32Array(S)}}function d(P){const C=[],l=Math.PI*(3-Math.sqrt(5)),S=2/P;for(let T=0;T<P;++T){const A=T*S-1+S/2,x=Math.sqrt(1-A*A),M=T*l;C[C.length]=n.Vec3.create(Math.cos(M)*x,A,Math.sin(M)*x)}return C}let p;(function(P){P[P.NA=0]="NA",P[P.Buried=1]="Buried",P[P.Accessible=2]="Accessible"})(p=y.Flags||(y.Flags={})),y.Flag={NA:p.NA,Buried:p.Buried,Accessible:p.Accessible};function u(P,C){const l=o.MaxAsa[P]||o.DefaultMaxAsa;return C/l}y.normalize=u;function m(P,C){const{area:l,serialResidueIndex:S}=C,T=S[h.SortedArray.indexOf(h.SortedArray.ofSortedArray(P.structure.root.serialMapping.elementIndices),P.element)];return T===-1?-1:l[T]}y.getValue=m;function v(P,C){const l=m(P,C);return l===-1?-1:u(i.StructureProperties.atom.label_comp_id(P),l)}y.getNormalizedValue=v;function b(P,C){const l=v(P,C);return l===-1?p.NA:l<.16?p.Buried:p.Accessible}y.getFlag=b})(f||(e.AccessibleSurfaceArea=f={}))})(kA)),kA}var vH;function eZ(){return vH||(vH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.AccessibleSurfaceAreaProvider=e.AccessibleSurfaceAreaSymbols=e.AccessibleSurfaceAreaParams=void 0;const t=Ne(),r=JQ(),n=Ke(),i=wf(),c=LS(),o=Mf(),s=tS(),h=Pr();e.AccessibleSurfaceAreaParams={...r.ShrakeRupleyComputationParams},e.AccessibleSurfaceAreaSymbols={isBuried:c.QuerySymbolRuntime.Dynamic((0,o.CustomPropSymbol)("computed","accessible-surface-area.is-buried",s.Type.Bool),f=>{if(!n.Unit.isAtomic(f.element.unit))return!1;const y=e.AccessibleSurfaceAreaProvider.get(f.element.structure).value;return y?r.AccessibleSurfaceArea.getFlag(f.element,y)===r.AccessibleSurfaceArea.Flags.Buried:!1}),isAccessible:c.QuerySymbolRuntime.Dynamic((0,o.CustomPropSymbol)("computed","accessible-surface-area.is-accessible",s.Type.Bool),f=>{if(!n.Unit.isAtomic(f.element.unit))return!1;const y=e.AccessibleSurfaceAreaProvider.get(f.element.structure).value;return y?r.AccessibleSurfaceArea.getFlag(f.element,y)===r.AccessibleSurfaceArea.Flags.Accessible:!1})},e.AccessibleSurfaceAreaProvider=i.CustomStructureProperty.createProvider({label:"Accessible Surface Area",descriptor:(0,h.CustomPropertyDescriptor)({name:"molstar_accessible_surface_area",symbols:e.AccessibleSurfaceAreaSymbols}),type:"root",defaultParams:e.AccessibleSurfaceAreaParams,getParams:f=>e.AccessibleSurfaceAreaParams,isApplicable:f=>!0,obtain:async(f,y,_)=>{const g={...t.ParamDefinition.getDefaultValues(e.AccessibleSurfaceAreaParams),..._};return{value:await r.AccessibleSurfaceArea.compute(y,g).runInContext(f.runtime)}}})})(OA)),OA}var FA={},bH;function Pse(){return bH||(bH=1,(function(e){Object.defineProperty(e,"__esMo
7083dule",{value:!0}),e.AccessibleSurfaceAreaColorThemeProvider=e.AccessibleSurfaceAreaColorThemeParams=void 0,e.getAccessibleSurfaceAreaColorThemeParams=y,e.AccessibleSurfaceAreaColorTheme=_;const t=Ne(),r=vt(),n=Ke(),i=eZ(),c=JQ(),o=_t(),s=Ut(),h=(0,r.Color)(16448250),f="Assigns a color based on the relative accessible surface area of a residue.";e.AccessibleSurfaceAreaColorThemeParams={list:t.ParamDefinition.ColorList("yellow-green-blue",{presetKind:"scale"})};function y(g){return e.AccessibleSurfaceAreaColorThemeParams}function _(g,a){let d;const p=r.ColorScale.create({listOrName:a.list.colors,minLabel:"buried",maxLabel:"exposed",domain:[0,1]}),u=g.structure&&i.AccessibleSurfaceAreaProvider.get(g.structure),m=u?(0,o.hash2)(u.id,u.version):-1;if(u?.value&&g.structure){const v=n.StructureElement.Location.create(g.structure),b=u.value,P=C=>{const l=c.AccessibleSurfaceArea.getNormalizedValue(C,b);return l===-1?h:p.color(l)};d=C=>n.StructureElement.Location.is(C)&&n.Unit.isAtomic(C.unit)?P(C):n.Bond.isLocation(C)?(v.unit=C.aUnit,v.element=C.aUnit.elements[C.aIndex],P(v)):h}else d=()=>h;return{factory:_,granularity:"group",preferSmoothing:!0,color:d,props:a,contextHash:m,description:f,legend:p?p.legend:void 0}}e.AccessibleSurfaceAreaColorThemeProvider={name:"accessible-surface-area",label:"Accessible Surface Area",category:s.ColorThemeCategory.Residue,factory:_,getParams:y,defaultValues:t.ParamDefinition.getDefaultValues(e.AccessibleSurfaceAreaColorThemeParams),isApplicable:g=>!!g.structure,ensureCustomProperties:{attach:(g,a)=>a.structure?i.AccessibleSurfaceAreaProvider.attach(g,a.structure,void 0,!0):Promise.resolve(),detach:g=>g.structure&&i.AccessibleSurfaceAreaProvider.ref(g.structure,!1)}}})(FA)),FA}var _H;function Tse(){if(_H)return xb;_H=1,Object.defineProperty(xb,"__esModule",{value:!0}),xb.AccessibleSurfaceArea=void 0;const e=di(),t=Ne(),r=eZ(),n=Pse(),i=at(),c=Vt(),o=LS(),s=jl(),h=dr();xb.AccessibleSurfaceArea=e.PluginBehavior.create({name:"computed-accessible-surface-area-prop",category:"custom-props",display:{name:"Accessible Surface Area"},ctor:class extends e.PluginBehavior.Handler{constructor(){super(...arguments),this.provider=r.AccessibleSurfaceAreaProvider,this.labelProvider={label:g=>{if(this.params.showTooltip)return f(g)}}}update(g){const a=this.params.autoAttach!==g.autoAttach||this.params.showTooltip!==g.showTooltip;return this.params.autoAttach=g.autoAttach,this.params.showTooltip=g.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),a}register(){o.DefaultQueryRuntimeTable.addCustomProp(this.provider.descriptor),this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach),this.ctx.representation.structure.themes.colorThemeRegistry.add(n.AccessibleSurfaceAreaColorThemeProvider),this.ctx.managers.lociLabels.addProvider(this.labelProvider),this.ctx.query.structure.registry.add(y),this.ctx.query.structure.registry.add(_)}unregister(){o.DefaultQueryRuntimeTable.removeCustomProp(this.provider.descriptor),this.ctx.customStructureProperties.unregister(this.provider.descriptor.name),this.ctx.representation.structure.themes.colorThemeRegistry.remove(n.AccessibleSurfaceAreaColorThemeProvider),this.ctx.managers.lociLabels.removeProvider(this.labelProvider),this.ctx.query.structure.registry.remove(y),this.ctx.query.structure.registry.remove(_)}},params:()=>({autoAttach:t.ParamDefinition.Boolean(!1),showTooltip:t.ParamDefinition.Boolean(!0)})});function f(g){if(g.kind==="element-loci"){if(g.elements.length===0)return;const a=r.AccessibleSurfaceAreaProvider.get(g.structure).value;if(!a||g.structure.customPropertyDescriptors.hasReference(r.AccessibleSurfaceAreaProvider.descriptor))return;const{getSerialIndex:d}=g.structure.root.serialMapping,{area:p,serialResidueIndex:u}=a,m=new Set;let v=0;for(const{indices:P,unit:C}of g.elements){const{elements:l}=C;i.OrderedSet.forEach(P,S=>{const T=u[d(C,l[S])];T!==-1&&!m.has(T)&&(v+=p[T],m.add(T))})}return m.size===0?void 0:`Accessible Surface Area ${`<small>(${m.size} ${m.size>1?"Residues sum":"Residue"})</small>`}: ${v.toFixed(2)} Å<sup>2</sup>`}else if(g.kind==="structure-loci"){const a=r.AccessibleSurfaceAreaProvider.get(g.structure).value;return!a||g.structure.customPropertyDescriptors.hasReference(r.AccessibleSurfaceAreaProvider.descriptor)?void 0:`Accessible Surface Area <small>(Whole Structure)</small>: ${(0,c.arraySum)(a.area).toFixed(2)} Å<sup>2</sup>`}}const y=(0,s.StructureSelectionQuery)("Buried Protein Residues",h.MolScriptBuilder.struct.modifier.union([h.MolScriptBuilder.struct.modifier.wholeResidues([h.MolScriptBuilder.struct.modifier.union([h.MolScriptBuilder.struct.generator.atomGroups({"chain-test":h.MolScriptBuilder.core.rel.eq([h.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":r.AccessibleSurfaceAreaSymbols.isBuried.symbol()})])])]),{description:"Select buried protein residues.",category:s.StructureSelectionCategory.Residue,ensureCustomProperties:(g,a)=>r.AccessibleSurfaceAreaProvider.attach(g,a)}),_=(0,s.StructureSelectionQuery)("Accessible Protein Residues",h.MolScriptBuilder.struct.modifier.union([h.MolScriptBuilder.struct.modifier.wholeResidues([h.MolScriptBuilder.struct.modifier.union([h.MolScriptBuilder.struct.generator.atomGroups({"chain-test":h.MolScriptBuilder.core.rel.eq([h.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":r.AccessibleSurfaceAreaSymbols.isAccessible.symbol()})])])]),{description:"Select accessible protein residues.",category:s.StructureSelectionCategory.Residue,ensureCustomProperties:(g,a)=>r.AccessibleSurfaceAreaProvider.attach(g,a)});return xb}var Ab={},LA={},NA={},Qu={},qA={},UA={},ji={},en={},SH;function ra(){if(SH)return en;SH=1,Object.defineProperty(en,"__esModule",{value:!0}),en.typeSymbol=r,en.formalCharge=n,en.atomId=i,en.altLoc=c,en.compId=o,en.interBondCount=s,en.intraBondCount=h,en.bondCount=f,en.bondToElementCount=y,en.intraConnectedTo=_,en.interConnectedTo=g,en.connectedTo=a,en.eachInterBondedAtom=d,en.eachIntraBondedAtom=p,en.eachBondedAtom=u,en.eachResidueAtom=m;const e=dt(),t=at();function r(v,b){return v.model.atomicHierarchy.atoms.type_symbol.value(v.elements[b])}function n(v,b){return v.model.atomicHierarchy.atoms.pdbx_formal_charge.value(v.elements[b])}function i(v,b){return v.model.atomicHierarchy.atoms.label_atom_id.value(v.elements[b])}function c(v,b){return v.model.atomicHierarchy.atoms.label_alt_id.value(v.elements[b])}function o(v,b){return v.model.atomicHierarchy.atoms.label_comp_id.value(v.elements[b])}function s(v,b,P){let C=0;const l=v.interUnitBonds.getEdgeIndices(P,b.id);for(let S=0,T=l.length;S<T;++S){const A=v.interUnitBonds.edges[l[S]];e.BondType.isCovalent(A.props.flag)&&(C+=1)}return C}function h(v,b){let P=0;const{offset:C,edgeProps:{flags:l}}=v.bonds;for(let S=C[b],T=C[b+1];S<T;++S)e.BondType.isCovalent(l[S])&&(P+=1);return P}function f(v,b,P){return s(v,b,P)+h(b,P)}function y(v,b,P,C){let l=0;return u(v,b,P,(S,T)=>{r(S,T)===C&&(l+=1)}),l}function _(v,b,P){const{offset:C,b:l,edgeProps:{flags:S}}=v.bonds;e.BondType.is;for(let T=C[b],A=C[b+1];T<A;++T)if(l[T]===P&&e.BondType.isCovalent(S[T]))return!0;return!1}function g(v,b,P,C,l){const S=v.interUnitBonds.getEdge(P,b.id,l,C.id);return S&&e.BondType.isCovalent(S.props.flag)}function a(v,b,P,C,l){return b===C?_(b,P,l):g(v,b,P,C,l)}function d(v,b,P,C){const l=v.interUnitBonds.getEdgeIndices(P,b.id);for(let S=0,T=l.length;S<T;++S){const A=v.interUnitBonds.edges[l[S]],x=v.unitMap.get(A.unitB);e.BondType.isCovalent(A.props.flag)&&C(x,A.indexB)}}function p(v,b,P){const{offset:C,b:l,edgeProps:{flags:S}}=v.bonds;for(let T=C[b],A=C[b+1];T<A;++T)e.BondType.isCovalent(S[T])&&P(v,l[T])}function u(v,b,P,C){d(v,b,P,C),p(b,P,C)}function m(v,b,P){const{offsets:C}=v.model.atomicHierarchy.residueAtomSegments,l=v.getResidueIndex(b);for(let S=C[l],T=C[l+1];S<T;++S){const A=t.SortedArray.indexOf(v.elements,S);A!==-1&&P(A)}}return en}var CH;
7083function v2(){if(CH)return ji;CH=1,Object.defineProperty(ji,"__esModule",{value:!0}),ji.AtomGeometryAngles=ji.AtomGeometry=void 0,ji.geometryLabel=c,ji.assignGeometry=o,ji.calcAngles=g,ji.calcPlaneAngle=a,ji.closestHydrogenIndex=d;const e=er(),t=Ge(),r=ra(),n=Xi();var i;(function(p){p[p.Spherical=0]="Spherical",p[p.Terminal=1]="Terminal",p[p.Linear=2]="Linear",p[p.Trigonal=3]="Trigonal",p[p.Tetrahedral=4]="Tetrahedral",p[p.TrigonalBiPyramidal=5]="TrigonalBiPyramidal",p[p.Octahedral=6]="Octahedral",p[p.SquarePlanar=7]="SquarePlanar",p[p.Unknown=8]="Unknown"})(i||(ji.AtomGeometry=i={}));function c(p){switch(p){case i.Spherical:return"Spherical";case i.Terminal:return"Terminal";case i.Linear:return"Linear";case i.Trigonal:return"Trigonal";case i.Tetrahedral:return"Tetrahedral";case i.TrigonalBiPyramidal:return"Trigonal Bi-Pyramidal";case i.Octahedral:return"Octahedral";case i.SquarePlanar:return"Square Planar";case i.Unknown:return"Unknown"}}function o(p){switch(p){case 0:return i.Spherical;case 1:return i.Terminal;case 2:return i.Linear;case 3:return i.Trigonal;case 4:return i.Tetrahedral;default:return i.Unknown}}ji.AtomGeometryAngles=new Map([[i.Linear,(0,e.degToRad)(180)],[i.Trigonal,(0,e.degToRad)(120)],[i.Tetrahedral,(0,e.degToRad)(109.4721)],[i.Octahedral,(0,e.degToRad)(90)]]);const s=(0,t.Vec3)(),h=(0,t.Vec3)(),f=(0,t.Vec3)(),y=(0,t.Vec3)(),_=(0,t.Vec3)();function g(p,u,m,v,b,P=!0){const C=[],l=[];return u.conformation.position(u.elements[m],f),v.conformation.position(v.elements[b],y),t.Vec3.sub(s,y,f),(0,r.eachBondedAtom)(p,u,m,(S,T)=>{(0,r.typeSymbol)(S,T)!==n.Elements.H?(S.conformation.position(S.elements[T],_),t.Vec3.sub(h,_,f),C.push(t.Vec3.angle(s,h))):P||(S.conformation.position(S.elements[T],_),t.Vec3.sub(h,_,f),l.push(t.Vec3.angle(s,h)))}),[C,l]}function a(p,u,m,v,b){u.conformation.position(u.elements[m],f),v.conformation.position(v.elements[b],y),t.Vec3.sub(s,y,f);const P=[(0,t.Vec3)(),(0,t.Vec3)()];let C=0,l,S;if((0,r.eachBondedAtom)(p,u,m,(T,A)=>{C>1||(0,r.typeSymbol)(T,A)!==n.Elements.H&&(l=T,S=A,T.conformation.position(T.elements[A],_),t.Vec3.sub(P[C++],_,f))}),C===1&&l&&S&&(0,r.eachBondedAtom)(p,l,S,(T,A)=>{C>1||T===u&&A===m||(0,r.typeSymbol)(T,A)!==n.Elements.H&&(T.conformation.position(T.elements[A],_),t.Vec3.sub(P[C++],_,f))}),C===2)return t.Vec3.cross(h,P[0],P[1]),Math.abs(Math.PI/2-t.Vec3.angle(h,s))}function d(p,u,m,v,b){let P=m;u.conformation.position(u.elements[m],f),v.conformation.position(v.elements[b],y),t.Vec3.sub(s,y,f);let C=t.Vec3.squaredDistance(f,y);return(0,r.eachBondedAtom)(p,u,m,(l,S)=>{if((0,r.typeSymbol)(l,S)===n.Elements.H){l.conformation.position(l.elements[S],_);const T=t.Vec3.squaredDistance(_,y);T<C&&(C=T,P=S)}}),P}return ji}var PH;function xse(){return PH||(PH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ValenceModelParams=void 0,e.explicitValence=g,e.calculateHydrogensCharge=p,e.calcValenceModel=m;const t=Ke(),r=Xi(),n=v2(),i=ra(),c=Ne(),o=Ct(),s=at(),h=dt(),f=new t.Bond.ElementBondIterator,y=new t.Bond.ElementBondIterator;function _(v,b,P){const C=(0,i.typeSymbol)(b,P),l=C===r.Elements.O||C===r.Elements.N;if(l&&(0,i.bondCount)(v,b,P)===4)return!1;for(f.setElement(v,b,P);f.hasNext;){const S=f.move();if(S.order>1)return!0;if(l){const T=(0,i.typeSymbol)(S.otherUnit,S.otherIndex);for(y.setElement(v,S.otherUnit,S.otherIndex);y.hasNext;){const A=y.move();if(A.order>1){if((T===r.Elements.P||T===r.Elements.S)&&(0,i.typeSymbol)(A.otherUnit,A.otherIndex)===r.Elements.O)continue;return!0}}}}return!1}function g(v,b,P){let C=0;const{offset:l,edgeProps:{flags:S,order:T}}=b.bonds;for(let A=l[P],x=l[P+1];A<x;++A)h.BondType.isCovalent(S[A])&&(C+=T[A]);return v.interUnitBonds.getEdgeIndices(P,b.id).forEach(A=>{const x=v.interUnitBonds.edges[A];h.BondType.isCovalent(x.props.flag)&&(C+=x.props.order)}),C}const a=new t.Bond.ElementBondIterator,d=new t.Bond.ElementBondIterator;function p(v,b,P,C,l){const S=(0,i.bondToElementCount)(v,b,P,r.Elements.H),T=(0,i.typeSymbol)(b,P);let A=(0,i.formalCharge)(b,P);const x=C.assignCharge==="always"||C.assignCharge==="auto"&&A===0,M=C.assignH==="always"||
7083C.assignH==="auto"&&!l&&S===0,D=(0,i.bondCount)(v,b,P),V=g(v,b,P),R=_(v,b,P),E=V-D>0;let I=0,B=n.AtomGeometry.Unknown;switch(T){case r.Elements.H:x&&(D===0?(A=1,B=n.AtomGeometry.Spherical):D===1&&(A=0,B=n.AtomGeometry.Terminal));break;case r.Elements.C:x&&(A=0),M&&(I=Math.max(0,4-V-Math.abs(A))),B=(0,n.assignGeometry)(D+I+Math.max(0,-A));break;case r.Elements.N:if(x)if(!M)A=V-3;else if(R&&V<4)D-S===1&&V-S===2?A=1:A=0;else for(a.setElement(v,b,P);a.hasNext;){const w=a.move(),O=(0,i.typeSymbol)(w.otherUnit,w.otherIndex);if(O===r.Elements.S||(0,r.isMetal)(O)){A=0;break}else A=1}M&&(I=Math.max(0,3-V+A)),R&&!E?B=(0,n.assignGeometry)(D+I-A):B=(0,n.assignGeometry)(D+I+1-A);break;case r.Elements.O:if(x&&(M||(A=V-2),V===1)){a.setElement(v,b,P);e:for(;a.hasNext;){const w=a.move();for(d.setElement(v,w.otherUnit,w.otherIndex);d.hasNext;){const O=d.move();if(!(O.otherUnit===b&&O.otherIndex===P)&&(0,i.typeSymbol)(O.otherUnit,O.otherIndex)===r.Elements.O&&O.order===2){A=-1;break e}}}}M&&(I=Math.max(0,2-V+A)),R&&!E?B=(0,n.assignGeometry)(D+I-A+1):B=(0,n.assignGeometry)(D+I-A+2);break;case r.Elements.S:x&&(M||(V<=3&&(0,i.bondToElementCount)(v,b,P,r.Elements.O)===0?A=V-2:A=0)),M&&V<2&&(I=Math.max(0,2-V+A)),V<=3&&(B=(0,n.assignGeometry)(D+I-A+2));break;case r.Elements.F:case r.Elements.CL:case r.Elements.BR:case r.Elements.I:case r.Elements.AT:x&&(A=V-1);break;case r.Elements.LI:case r.Elements.NA:case r.Elements.K:case r.Elements.RB:case r.Elements.CS:case r.Elements.FR:x&&(A=1-V);break;case r.Elements.BE:case r.Elements.MG:case r.Elements.CA:case r.Elements.SR:case r.Elements.BA:case r.Elements.RA:x&&(A=2-V);break;default:o.isDebugMode&&console.warn("Requested charge, protonation for an unhandled element",T)}return[A,I,I+S,B]}function u(v,b,P){const C=b.elements.length,l=new Int8Array(C),S=new Int8Array(C),T=new Int8Array(C),A=new Int8Array(C),x=!!v.parent;let M;if(x){const V=v.root.unitMap.get(b.id);if(M=s.SortedArray.indicesOf(V.elements,b.elements),M.length!==b.elements.length)throw new Error("expected to find an index for every element");b=V,v=v.root}let D=!1;for(let V=0;V<C;++V){const R=x?M[V]:V;if((0,i.typeSymbol)(b,R)===r.Elements.H){D=!0;break}}for(let V=0;V<C;++V){const R=x?M[V]:V,[E,I,B,w]=p(v,b,R,P,D);l[V]=E,S[V]=I,T[V]=B,A[V]=w}return{charge:l,implicitH:S,totalH:T,idealGeometry:A}}e.ValenceModelParams={assignCharge:c.ParamDefinition.Select("auto",[["always","always"],["auto","auto"],["never","never"]]),assignH:c.ParamDefinition.Select("auto",[["always","always"],["auto","auto"],["never","never"]])};async function m(v,b,P){const C={...c.ParamDefinition.getDefaultValues(e.ValenceModelParams),...P},l=new Map,S=`valence-model-${JSON.stringify(C)}`;for(let T=0,A=b.units.length;T<A;++T){const x=b.units[T];if(t.Unit.isAtomic(x)){let M;x.transientCache.has(S)?M=x.transientCache.get(S):(M=u(b,x,C),x.transientCache.set(S,M)),l.set(x.id,M)}}return l}})(UA)),UA}var TH;function QS(){return TH||(TH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ValenceModelProvider=e.ValenceModelParams=void 0;const t=Ne(),r=xse(),n=wf(),i=Pr();e.ValenceModelParams={...r.ValenceModelParams},e.ValenceModelProvider=n.CustomStructureProperty.createProvider({label:"Valence Model",descriptor:(0,i.CustomPropertyDescriptor)({name:"molstar_computed_valence_model"}),type:"local",defaultParams:e.ValenceModelParams,getParams:c=>e.ValenceModelParams,isApplicable:c=>!0,obtain:async(c,o,s)=>{const h={...t.ParamDefinition.getDefaultValues(e.ValenceModelParams),...s};return{value:await(0,r.calcValenceModel)(c.runtime,o,h)}}})})(qA)),qA}var xH;function hs(){if(xH)return Qu;xH=1,Object.defineProperty(Qu,"__esModule",{value:!0}),Qu.FeaturesBuilder=Qu.Features=void 0;const e=_t(),t=rt(),r=at(),n=QS(),i=Ge(),c=wT();var o;(function(h){function f(b,P,C,l){return i.Vec3.set(b,l.x[C],l.y[C],l.z[C]),i.Vec3.transformMat4(b,b,P.conformation.operator.matrix),b}h.setPosition=f;function y(b,P){const C=new Int32Array(P+1),l=new Int32Array(P),S=new Int32Array(P),{members:T,count:A,offsets:x}=b;for(let V=0,R=x[A];V<R;++V)++S[T[V]];let M=0;for(let V=0;V<P;V++)C[V]=M,M+=S[V];C[P]=M;const D=new Int32Array(M);for(let V=0;V<A;++V)for(let R=x[V],E=x[V+1];R<E;++R){const I=T[R],B=C[I]+l[I];D[B]=V,++l[I]}return{indices:D,offsets:C}}h.createElementsIndex=y;function _(b,P){let C,l;return{...P,get lookup3d(){if(!C){const S={x:P.x,y:P.y,z:P.z,indices:r.OrderedSet.ofBounds(0,P.count)};C=(0,t.GridLookup3D)(S,(0,c.getBoundary)(S))}return C},get elementsIndex(){return l||(l=y(P,b))},subset:S=>g(P,S)}}h.create=_;function g(b,P){let C;const{count:l,types:S}=b,T=[];for(let x=0;x<l;++x)P.has(S[x])&&T.push(x);const A=r.SortedArray.ofSortedArray(T);return{indices:A,get lookup3d(){if(!C){const x={x:b.x,y:b.y,z:b.z,indices:A};C=(0,t.GridLookup3D)(x,(0,c.getBoundary)(x))}return C}}}h.createSubset=g;function a(b,P,C){const l=n.ValenceModelProvider.get(b).value;if(!l||!l.has(P.id))throw new Error("valence model required");return{unit:P,types:C.types,feature:-1,x:C.x,y:C.y,z:C.z,members:C.members,offsets:C.offsets,idealGeometry:l.get(P.i
7083d).idealGeometry}}h.Info=a;function d(b,P){return i.Vec3.set(b,P.x[P.feature],P.y[P.feature],P.z[P.feature]),i.Vec3.transformMat4(b,b,P.unit.conformation.operator.matrix),b}h.position=d;const p=(0,i.Vec3)(),u=(0,i.Vec3)();function m(b,P){const C=b.members[b.offsets[b.feature]],l=P.members[P.offsets[P.feature]];return b.unit.conformation.position(b.unit.elements[C],p),P.unit.conformation.position(P.unit.elements[l],u),i.Vec3.distance(p,u)}h.distance=m;function v(b,P){return{types:new Set(b),add:P}}h.Provider=v})(o||(Qu.Features=o={}));var s;return(function(h){function f(y=2048,_=1024,g){const a=e.ChunkedArray.create(Float32Array,1,_,g?g.x:y),d=e.ChunkedArray.create(Float32Array,1,_,g?g.y:y),p=e.ChunkedArray.create(Float32Array,1,_,g?g.z:y),u=e.ChunkedArray.create(Uint8Array,1,_,g?g.types:y),m=e.ChunkedArray.create(Uint8Array,1,_,g?g.groups:y),v=e.ChunkedArray.create(Uint32Array,1,_,g?g.offsets:y),b=e.ChunkedArray.create(Uint32Array,1,_,g?g.members:y),P={x:0,y:0,z:0,offset:0,count:0};return{startState:()=>{P.x=0,P.y=0,P.z=0,P.offset=b.elementCount,P.count=0},pushMember:(C,l,S,T)=>{e.ChunkedArray.add(b,T),P.x+=C,P.y+=l,P.z+=S,P.count+=1},markMember:C=>{e.ChunkedArray.add(b,C)},finishState:(C,l)=>{const{count:S}=P;S!==0&&(e.ChunkedArray.add(u,C),e.ChunkedArray.add(m,l),e.ChunkedArray.add(a,P.x/S),e.ChunkedArray.add(d,P.y/S),e.ChunkedArray.add(p,P.z/S),e.ChunkedArray.add(v,P.offset))},add:(C,l,S,T,A,x)=>{e.ChunkedArray.add(u,C),e.ChunkedArray.add(m,l),e.ChunkedArray.add(a,S),e.ChunkedArray.add(d,T),e.ChunkedArray.add(p,A),e.ChunkedArray.add(v,b.elementCount),e.ChunkedArray.add(b,x)},getFeatures:C=>{e.ChunkedArray.add(v,b.elementCount);const l=e.ChunkedArray.compact(a,!0),S=e.ChunkedArray.compact(d,!0),T=e.ChunkedArray.compact(p,!0),A=a.elementCount;return o.create(C,{x:l,y:S,z:T,count:A,types:e.ChunkedArray.compact(u,!0),groups:e.ChunkedArray.compact(m,!0),offsets:e.ChunkedArray.compact(v,!0),members:e.ChunkedArray.compact(b,!0)})}}}h.create=f})(s||(Qu.FeaturesBuilder=s={})),Qu}var Wr={},AH;function si(){if(AH)return Wr;AH=1,Object.defineProperty(Wr,"__esModule",{value:!0}),Wr.FeatureGroup=Wr.FeatureTypes=Wr.FeatureType=Wr.InteractionType=Wr.InteractionFlag=Wr.InteractionsInterContacts=Wr.InteractionsIntraContacts=void 0,Wr.interactionTypeLabel=c,Wr.featureTypeLabel=h,Wr.featureGroupLabel=y;const e=xT();var t;(function(_){function g(a,d,p){const u=new Int32Array(p+1),m=new Int32Array(p),v=new Int32Array(p),{members:b,offsets:P}=d;for(let S=0,T=a.edgeCount*2;S<T;++S){const A=a.a[S],x=a.b[S];if(!(A>x)){for(let M=P[A],D=P[A+1];M<D;++M)++v[b[M]];for(let M=P[x],D=P[x+1];M<D;++M)++v[b[M]]}}let C=0;for(let S=0;S<p;S++)u[S]=C,C+=v[S];u[p]=C;const l=new Int32Array(C);for(let S=0,T=a.edgeCount*2;S<T;++S){const A=a.a[S],x=a.b[S];if(!(A>x)){for(let M=P[A],D=P[A+1];M<D;++M){const V=b[M],R=u[V]+m[V];l[R]=S,++m[V]}for(let M=P[x],D=P[x+1];M<D;++M){const V=b[M],R=u[V]+m[V];l[R]=S,++m[V]}}}return{indices:l,offsets:u}}_.createElementsIndex=g})(t||(Wr.InteractionsIntraContacts=t={}));class r extends e.InterUnitGraph{getContactIndicesForElement(g,a){return this.elementKeyIndex.get(this.getElementKey(g,a.id))||[]}getElementKey(g,a){return`${g}|${a}`}constructor(g,a){super(g),this.elementKeyIndex=new Map;for(let d=0,p=this.edges.length;d<p;++d){const{unitA:u,indexA:m}=this.edges[d],{offsets:v,members:b}=a.get(u);for(let P=v[m],C=v[m+1];P<C;++P){const l=this.getElementKey(b[P],u),S=this.elementKeyIndex.get(l);S===void 0?this.elementKeyIndex.set(l,[d]):S.push(d)}}}}Wr.InteractionsInterContacts=r;var n;(function(_){_[_.None=0]="None",_[_.Filtered=1]="Filtered"})(n||(Wr.InteractionFlag=n={}));var i;(function(_){_[_.Unknown=0]="Unknown",_[_.Ionic=1]="Ionic",_[_.CationPi=2]="CationPi",_[_.PiStacking=3]="PiStacking",_[_.HydrogenBond=4]="HydrogenBond",_[_.HalogenBond=5]="HalogenBond",_[_.Hydrophobic=6]="Hydrophobic",_[_.MetalCoordination=7]="MetalCoordination",_[_.WeakHydrogenBond=8]="WeakHydrogenBond",_[_.WaterBridge=9]="WaterBridge"})(i||(Wr.InteractionType=i={}));function c(_){switch(_){case i.HydrogenBond:return"Hydrogen Bond";case i.Hydrophobic:return"Hydrophobic Contact";case i.HalogenBond:return"Halogen Bond";case i.Ionic:return"Ionic Interaction";case i.MetalCoordination:return"Metal Coordination";case i.CationPi:return"Cation-Pi Interaction";case i.PiStacking:return"Pi Stacking";case i.WeakHydrogenBond:return"Weak Hydrogen Bond";case i.WaterBridge:return"Water Bridge";case i.Unknown:return"Unknown Interaction"}}var o;(function(_){_[_.None=0]="None",_[_.PositiveCharge=1]="PositiveCharge",_[_.NegativeCharge=2]="NegativeCharge",_[_.AromaticRing=3]="AromaticRing",_[_.HydrogenDonor=4]="HydrogenDonor",_[_.HydrogenAcceptor=5]="HydrogenAcceptor",_[_.HalogenDonor=6]="HalogenDonor",_[_.HalogenAcceptor=7]="HalogenAcceptor",_[_.HydrophobicAtom=8]="HydrophobicAtom",_[_.WeakHydrogenDonor=9]="WeakHydrogenDonor",_[_.IonicTypePartner=10]="IonicTypePartner",_[_.DativeBondPartner=11]="DativeBondPartner",_[_.TransitionMetal=12]="TransitionMetal",_[_.IonicTypeMetal=13]="IonicTypeMetal"}
7083)(o||(Wr.FeatureType=o={}));var s;(function(_){_[_.None=0]="None",_[_.PositiveCharge=1]="PositiveCharge",_[_.NegativeCharge=2]="NegativeCharge",_[_.AromaticRing=3]="AromaticRing",_[_.HydrogenDonor=4]="HydrogenDonor",_[_.HydrogenAcceptor=5]="HydrogenAcceptor",_[_.HalogenDonor=6]="HalogenDonor",_[_.HalogenAcceptor=7]="HalogenAcceptor",_[_.HydrophobicAtom=8]="HydrophobicAtom",_[_.WeakHydrogenDonor=9]="WeakHydrogenDonor",_[_.IonicTypePartner=10]="IonicTypePartner",_[_.DativeBondPartner=11]="DativeBondPartner",_[_.TransitionMetal=12]="TransitionMetal",_[_.IonicTypeMetal=13]="IonicTypeMetal"})(s||(Wr.FeatureTypes=s={}));function h(_){switch(_){case o.None:return"None";case o.PositiveCharge:return"Positive Charge";case o.NegativeCharge:return"Negative Charge";case o.AromaticRing:return"Aromatic Ring";case o.HydrogenDonor:return"Hydrogen Donor";case o.HydrogenAcceptor:return"Hydrogen Acceptor";case o.HalogenDonor:return"Halogen Donor";case o.HalogenAcceptor:return"Halogen Acceptor";case o.HydrophobicAtom:return"HydrophobicAtom";case o.WeakHydrogenDonor:return"Weak Hydrogen Donor";case o.IonicTypePartner:return"Ionic Type Partner";case o.DativeBondPartner:return"Dative Bond Partner";case o.TransitionMetal:return"Transition Metal";case o.IonicTypeMetal:return"Ionic Type Metal"}}var f;(function(_){_[_.None=0]="None",_[_.QuaternaryAmine=1]="QuaternaryAmine",_[_.TertiaryAmine=2]="TertiaryAmine",_[_.Sulfonium=3]="Sulfonium",_[_.SulfonicAcid=4]="SulfonicAcid",_[_.Sulfate=5]="Sulfate",_[_.Phosphate=6]="Phosphate",_[_.Halocarbon=7]="Halocarbon",_[_.Guanidine=8]="Guanidine",_[_.Acetamidine=9]="Acetamidine",_[_.Carboxylate=10]="Carboxylate"})(f||(Wr.FeatureGroup=f={}));function y(_){switch(_){case f.None:return"None";case f.QuaternaryAmine:return"Quaternary Amine";case f.TertiaryAmine:return"Tertiary Amine";case f.Sulfonium:return"Sulfonium";case f.SulfonicAcid:return"Sulfonic Acid";case f.Sulfate:return"Sulfate";case f.Phosphate:return"Phosphate";case f.Halocarbon:return"Halocarbon";case f.Guanidine:return"Guanidine";case f.Acetamidine:return"Acetamidine";case f.Carboxylate:return"Carboxylate"}}return Wr}var Zu={},MH;function Ase(){if(MH)return Zu;MH=1,Object.defineProperty(Zu,"__esModule",{value:!0}),Zu.InterContactsBuilder=Zu.IntraContactsBuilder=void 0;const e=is(),t=si(),r=xT();var n;(function(c){function o(s,h){const f=[],y=[],_=[];return{add(g,a,d){f[f.length]=g,y[y.length]=a,_[_.length]=d},getContacts(){const g=new e.IntAdjacencyGraph.EdgeBuilder(s.count,f,y),a=new Int8Array(g.slotCount),d=new Int8Array(g.slotCount);for(let v=0,b=g.edgeCount;v<b;v++)g.addNextEdge(),g.assignProperty(a,_[v]);const p=g.createGraph({type:a,flag:d});let u;return Object.defineProperty(p,"elementsIndex",{get:()=>u||(u=t.InteractionsIntraContacts.createElementsIndex(p,s,h))})}}}c.create=o})(n||(Zu.IntraContactsBuilder=n={}));var i;return(function(c){function o(){const s=new r.InterUnitGraph.Builder;return{startUnitPair(h,f){s.startUnitPair(h.id,f.id)},finishUnitPair(){s.finishUnitPair()},add(h,f,y){s.add(h,f,{type:y,flag:t.InteractionFlag.None})},getContacts(h){return new t.InteractionsInterContacts(s.getMap(),h)}}}c.create=o})(i||(Zu.InterContactsBuilder=i={})),Zu}var Ju={},DH;function Mse(){if(DH)return Ju;DH=1,Object.defineProperty(Ju,"__esModule",{value:!0}),Ju.ContactsParams=void 0,Ju.addUnitContacts=v,Ju.addStructureContacts=C;const e=at(),t=Ge(),r=Ke(),n=ma(),i=Xi(),c=VT(),o=Ne(),s=ra(),h=hs();Ju.ContactsParams={lineOfSightDistFactor:o.ParamDefinition.Numeric(1,{min:0,max:3,step:.1})};const f=3;function y(l,S,T){const A=S.members[S.offsets[S.feature]],x=T.members[T.offsets[T.feature]];if(A===x&&S.unit===T.unit)return!1;const M=(0,s.altLoc)(S.unit,A),D=(0,s.altLoc)(T.unit,x);return!(M&&D&&M!==D||S.unit===T.unit&&S.unit.model.atomicHierarchy.residueAtomSegments.count>1&&S.unit.residueIndex[S.unit.elements[A]]===T.unit.residueIndex[T.unit.elements[x]]||(0,s.connectedTo)(l,S.unit,A,T.unit,x))}function _(l,S,T,A){const x=(0,s.altLoc)(l,S),M=(0,s.altLoc)(T,A);return x&&M&&x!==M}function g(l,S){const{feature:T,offsets:A,members:x}=S;for(let M=A[T],D=A[T+1];M<D;++M)if(x[M]===l)return!0;return!1}const a=(0,t.Vec3)(),d=(0,t.Vec3)(),p=(0,t.Vec3)(),u=(0,c.StructureLookup3DResultContext)();function m(l,S,T,A){const x=S.feature,M=T.feature,D=S.members[S.offsets[x]],V=T.members[T.offsets[M]];h.Features.position(d,S),h.Features.position(p,T),t.Vec3.scale(a,t.Vec3.add(a,d,p),.5);const R=A*f,{count:E,indices:I,units:B,squaredDistances:w}=l.lookup3d.find(a[0],a[1],a[2],R,u);if(E===0)return!0;for(let O=0;O<E;++O){const F=I[O],L=B[O];if(!r.Unit.isAtomic(L))continue;const U=(0,s.typeSymbol)(L,F);if(U===i.Elements.H)continue;const q=(0,n.VdwRadius)(U);if(!(q*q*A*A<=w[O])&&!(_(L,F,S.unit,D)||_(L,F,T.unit,V))&&!(S.unit===L&&g(F,S)||T.unit===L&&g(F,T))&&(L.conformation.position(L.elements[F],a),!(t.Vec3.squaredDistance(a,d)<1||t.Vec3.squaredDistance(a,p)<1)))return!1}return!0}function v(l,S,T,A,x,M){for(const D of x)b(l,S,T,A,D,M)}function b(l,S,T,A,x,M){const{x:D,y:V,z:R}=T,{lookup3d:E,indices:I}=T.subset(x.requiredFeatures),B=h.Features.Info(l,S,T),w={...B},O=M.lineOfSightDistFactor;for(let F=0,L=e.OrderedSet.size(I);F<L;++F){const U=e.OrderedSet.getAt(I,F),{count:q,indices:N,squaredDistances:k}=E.find(D[U],V[U],R[U],x.maxDistance);if(q!==0){B.feature=U;for(let j=0;j<q;++j){const H=e.OrderedSet.getAt(I,N[j]);if(H<=U||(w.feature=H,!y(l,B,w)))continue;const G=x.getType(l,B,w,k[j]);G&&m(l,B,w,O)&&A.add(U,H,G)}}}}const P=(0,t.Mat4)();function C(l,S,T,A,x,M,D,V){const{count:R,x:E,y:I,z:B}=T,{lookup3d:w}=x,O=t.Mat4.mul(P,A.conformation.operator.inverse,S.conformation.operator.matrix),F=!t.Mat4.isIdentity(O),L=(0,t.Vec3)(),U=Math.max(...D.map(z=>
7083z.maxDistance)),{center:q,radius:N}=w.boundary.sphere,k=(N+U)*(N+U),j=V.lineOfSightDistFactor,H=h.Features.Info(l,S,T),G=h.Features.Info(l,A,x);M.startUnitPair(S,A);for(let z=0;z<R;++z){if(t.Vec3.set(L,E[z],I[z],B[z]),F&&t.Vec3.transformMat4(L,L,O),t.Vec3.squaredDistance(L,q)>k)continue;const{indices:W,count:X,squaredDistances:Y}=w.find(L[0],L[1],L[2],U);if(X!==0){H.feature=z;for(let K=0;K<X;++K){const Q=W[K];if(G.feature=Q,!y(l,H,G))continue;const J=Y[K];for(const ae of D)if(J<ae.maxDistance*ae.maxDistance){const te=ae.getType(l,H,G,J);if(te&&m(l,H,G,j)){M.add(z,Q,te);break}}}}}M.finishUnitPair()}return Ju}var Yo={},IH;function Dse(){if(IH)return Yo;IH=1,Object.defineProperty(Yo,"__esModule",{value:!0}),Yo.HalogenBondsProvider=Yo.HalogenAcceptorProvider=Yo.HalogenDonorProvider=void 0;const e=Ne(),t=v2(),r=hs(),n=ra(),i=Xi(),c=er(),o=si(),s={distanceMax:e.ParamDefinition.Numeric(4,{min:1,max:5,step:.1}),angleMax:e.ParamDefinition.Numeric(30,{min:0,max:60,step:1})},h=[i.Elements.CL,i.Elements.BR,i.Elements.I,i.Elements.AT];function f(v,b,P){const{elements:C}=b,{x:l,y:S,z:T}=b.model.atomicConformation;for(let A=0,x=C.length;A<x;++A){const M=(0,n.typeSymbol)(b,A);h.includes(M)&&P.add(o.FeatureType.HalogenDonor,o.FeatureGroup.None,l[C[A]],S[C[A]],T[C[A]],A)}}const y=[i.Elements.N,i.Elements.O,i.Elements.S],_=[i.Elements.C,i.Elements.N,i.Elements.P,i.Elements.S];function g(v,b,P){const{elements:C}=b,{x:l,y:S,z:T}=b.model.atomicConformation;for(let A=0,x=C.length;A<x;++A){const M=(0,n.typeSymbol)(b,A);if(y.includes(M)){let D=!1;(0,n.eachBondedAtom)(v,b,A,(V,R)=>{_.includes((0,n.typeSymbol)(V,R))&&(D=!0)}),D&&P.add(o.FeatureType.HalogenAcceptor,o.FeatureGroup.None,l[C[A]],S[C[A]],T[C[A]],A)}}}function a(v,b){return v===o.FeatureType.HalogenAcceptor&&b===o.FeatureType.HalogenDonor||v===o.FeatureType.HalogenDonor&&b===o.FeatureType.HalogenAcceptor}const d=(0,c.degToRad)(180),p=(0,c.degToRad)(120);function u(v){return{angleMax:(0,c.degToRad)(v.angleMax)}}function m(v,b,P,C){const l=b.types[b.feature],S=P.types[P.feature];if(!a(l,S))return;const[T,A]=l===o.FeatureType.HalogenDonor?[b,P]:[P,b],x=T.members[T.offsets[T.feature]],M=A.members[A.offsets[A.feature]],[D]=(0,t.calcAngles)(v,T.unit,x,A.unit,M);if(D.length!==1||d-D[0]>C.angleMax)return;const[V]=(0,t.calcAngles)(v,A.unit,M,T.unit,x);if(V.length!==0&&!V.some(R=>p-R>C.angleMax))return o.InteractionType.HalogenBond}return Yo.HalogenDonorProvider=r.Features.Provider([o.FeatureType.HalogenDonor],f),Yo.HalogenAcceptorProvider=r.Features.Provider([o.FeatureType.HalogenAcceptor],g),Yo.HalogenBondsProvider={name:"halogen-bonds",params:s,createTester:v=>{const b=u(v);return{maxDistance:v.distanceMax,requiredFeatures:new Set([o.FeatureType.HalogenDonor,o.FeatureType.HalogenAcceptor]),getType:(P,C,l)=>m(P,C,l,b)}}},Yo}var jA={},wH;function tZ(){return wH||(wH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.WeakHydrogenBondsProvider=e.HydrogenBondsProvider=e.HydrogenAcceptorProvider=e.WeakHydrogenDonorProvider=e.HydrogenDonorProvider=e.GeometryParams=void 0,e.getGeometryOptions=A,e.checkGeometry=D;const t=Ne(),r=v2(),n=hs(),i=ra(),c=Xi(),o=QS(),s=er(),h=si(),f=dt();e.GeometryParams={distanceMax:t.ParamDefinition.Numeric(3.5,{min:1,max:5,step:.1}),backbone:t.ParamDefinition.Boolean(!0,{description:"Include backbone-to-backbone hydrogen bonds"}),accAngleDevMax:t.ParamDefinition.Numeric(45,{min:0,max:180,step:1},{description:"Max deviation from ideal acceptor angle"}),ignoreHydrogens:t.ParamDefinition.Boolean(!1,{description:"Ignore explicit hydrogens in geometric constraints"}),donAngleDevMax:t.ParamDefinition.Numeric(45,{min:0,max:180,step:1},{description:"Max deviation from ideal donor angle"}),accOutOfPlaneAngleMax:t.ParamDefinition.Numeric(90,{min:0,max:180,step:1}),donOutOfPlaneAngleMax:t.ParamDefinition.Numeric(45,{min:0,max:180,step:1})};const y={...e.GeometryParams,water:t.ParamDefinition.Boolean(!1,{description:"Include water-to-water hydrogen bonds"}),sulfurDistanceMax:t.ParamDefinition.Numeric(4.1,{min:1,max:5,step:.1})},_={...e.GeometryParams};function g(E,I){const B=o.ValenceModelProvider.get(E).value;if(!B)throw Error("expected valence model to be available");const w=B.get(I.id);if(!w)throw Error("expected valence model for unit to be available");return w}function a(E,I,B){const{totalH:w}=g(E,I),{elements:O}=I,{x:F,y:L,z:U}=I.model.atomicConformation;for(let q=0,N=O.length;q<N;++q){const k=(0,i.typeSymbol)(I,q);(P(I,q)||w[q]>0&&(k===c.Elements.N||k===c.Elements.O||k===c.Elements.S))&&B.add(h.FeatureType.HydrogenDonor,h.FeatureGroup.None,F[O[q]],L[O[q]],U[O[q]],q)}}function d(E,I,B){const{totalH:w}=g(E,I),{elements:O}=I,{x:F,y:L,z:U}=I.model.atomicConformation;for(let q=0,N=O.length;q<N;++q)(0,i.typeSymbol)(I,q)===c.Elements.C&&w[q]>0&&((0,i.bondToElementCount)(E,I,q,c.Elements.N)>0||(0,i.bondToElementCount)(E,I,q,c.Elements.O)>0||p(I,q))&&B.add(h.FeatureType.WeakHydrogenDonor,h.FeatureGroup.None,F[O[q]],L[O[q]],U[O[q]],q)}function p(E,I){const{elementAromaticRingIndices:B,all:w}=E.rings,O=B.get(I);if(O===void 0)return!1;for(let F=0,L=O.length;F<L;++F){const U=w[O[F]];for(let q=0,N=U.length;q<N;++q){const k=(0,i.typeSymbol)(E,U[q]);if(k===c.Elements.N||k===c.Elements.O)return!0}}return!1}function u(E,I,B){const{charge:w,implicitH:O,idealGeometry:F}=g(E,I),{elements:L}=I,{x:U,y:q,z:N}=I.model.atomicConformation,k=j=>{B.add(h.FeatureType.HydrogenAcceptor,h.FeatureGroup.None,U[L[j]],q[L[j]],N[L[j]],j)};for(let j=0,H=L.length;j<H;++j){const G=(0,i.typeSymbol)(I,j);if(G===c.Elements.O)k(j);else if(G===c.Elements.N){if(P(I,j))k(j);else if(w[j]<1){const z=(0,i.bondCount)(E,I,j)+O[j],W=F[j];(W===r.AtomGeometry.Tetrahedral&&z<4||W===r.AtomGeometry.Trigonal&&z<3||W===r.AtomGeometry.Linear&&z<2)&&k(j)}}else if(G===c.Elements.S){const z=(0,i.compId)(I,j);(z==="CYS"||z==="MET"||(0,i.formalCharge)(I,j)===-1)&&k(j)}}}function m(E,I){return E.model.atomicHierarchy.derived.residue.moleculeType[E.residueIndex[E.elements[I]]]===f.MoleculeType.Water}function v(E,I){return f.ProteinBackboneAtoms.has((0,i.atomId)(E,I))}function b(E,I){return E.rings.elementRingIndices.has(I)}function P(E,I){return(0,i.compId)(E,I)==="HIS"&&(0,i.typeSymbol)(E,I)===c.Elements.N&&b(E,I)}function C(E,I,B,w){return v(E,I)&&v(B,w)}function l(E,I,B,w){return m(E,I)&&m(B,w)}function S(E,I){return E===h.FeatureType.HydrogenAcceptor&&I===h.FeatureType.HydrogenDonor||E===h.FeatureType.HydrogenDonor&&I===h.FeatureType.HydrogenAcceptor}function T(E,I){return E===h.FeatureType.WeakHydrogenDonor&&I===h.FeatureType.HydrogenAcceptor||E===h.FeatureType.HydrogenAcceptor&&I===h.FeatureType.WeakHydrogenDonor}function A(E){return{ignoreHydrogens:E.ignoreHydrogens,includeBackbone:E.backbone,maxAccAngleDev:(0,s.degToRad)(E.accAngleDevMax),maxDonAngleDev:(0,s.degToRad)(E.donAngleDevMax),maxAccOutOfPlaneAngle:(0,s.degToRad)(E.accOutOfPlaneAngleMax),maxDonOutOfPlaneAngle:(0,s.degToRad)(E.donOutOfPlaneAngleMax)}}function x(E){return{...A(E),includeWater:E.water,maxSulfurDistSq:E.sulfurDistanceMax*E.sulfurDistanceMax,maxDistSq:E.distanceMax*E.distanceMax}}const M=(0,s.degToRad)(120);function D(E,I,B,w){const O=I.members[I.offsets[I.feature]],F=B.members[B.offsets[B.feature]];if(!w.includeBackbone&&C(I.unit,O,B.unit,F))return;const[L,U]=(0,r.calcAngles)(E,I.unit,O,B.unit,F,w.ignoreHydrogens),q=r.AtomGeometryAngles.get(I.idealGeometry[O])||M;
7083if(L.some(G=>Math.abs(q-G)>w.maxDonAngleDev)||U.length&&!U.some(G=>G<w.maxDonAngleDev))return;if(I.idealGeometry[O]===r.AtomGeometry.Trigonal){const G=(0,r.calcPlaneAngle)(E,I.unit,O,B.unit,F);if(G!==void 0&&G>w.maxDonOutOfPlaneAngle)return}let N=O;!w.ignoreHydrogens&&U.length>0&&(N=(0,r.closestHydrogenIndex)(E,I.unit,O,B.unit,F));const[k,j]=(0,r.calcAngles)(E,B.unit,F,I.unit,N,w.ignoreHydrogens),H=r.AtomGeometryAngles.get(B.idealGeometry[F])||M;if(!k.some(G=>H-G>w.maxAccAngleDev)&&!j.some(G=>H-G>w.maxAccAngleDev)){if(B.idealGeometry[F]===r.AtomGeometry.Trigonal){const G=(0,r.calcPlaneAngle)(E,B.unit,F,I.unit,O);if(G!==void 0&&G>w.maxAccOutOfPlaneAngle)return}return!0}}function V(E,I,B,w,O){const F=I.types[I.feature],L=B.types[B.feature];if(!S(F,L))return;const[U,q]=L===h.FeatureType.HydrogenAcceptor?[I,B]:[B,I],N=U.members[U.offsets[U.feature]],k=q.members[q.offsets[q.feature]],j=(0,i.typeSymbol)(U.unit,N)===c.Elements.S||(0,i.typeSymbol)(q.unit,k)===c.Elements.S?O.maxSulfurDistSq:O.maxDistSq;if(!(w>j)&&!(!O.includeWater&&l(U.unit,N,q.unit,k))&&D(E,U,q,O))return h.InteractionType.HydrogenBond}function R(E,I,B,w,O){const F=I.types[I.feature],L=B.types[B.feature];if(!T(F,L))return;const[U,q]=L===h.FeatureType.HydrogenAcceptor?[I,B]:[B,I];if(D(E,U,q,O))return h.InteractionType.WeakHydrogenBond}e.HydrogenDonorProvider=n.Features.Provider([h.FeatureType.HydrogenDonor],a),e.WeakHydrogenDonorProvider=n.Features.Provider([h.FeatureType.WeakHydrogenDonor],d),e.HydrogenAcceptorProvider=n.Features.Provider([h.FeatureType.HydrogenAcceptor],u),e.HydrogenBondsProvider={name:"hydrogen-bonds",params:y,createTester:E=>{const I=Math.max(E.distanceMax,E.sulfurDistanceMax),B=x(E);return{maxDistance:I,requiredFeatures:new Set([h.FeatureType.HydrogenDonor,h.FeatureType.HydrogenAcceptor]),getType:(w,O,F,L)=>V(w,O,F,L,B)}}},e.WeakHydrogenBondsProvider={name:"weak-hydrogen-bonds",params:_,createTester:E=>{const I=A(E);return{maxDistance:E.distanceMax,requiredFeatures:new Set([h.FeatureType.WeakHydrogenDonor,h.FeatureType.HydrogenAcceptor]),getType:(B,w,O,F)=>R(B,w,O,F,I)}}}})(jA)),jA}var GA={},VH;function Ise(){return VH||(VH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.WaterBridgesProvider=e.WaterBridgesParams=void 0,e.findWaterBridgeContacts=b;const t=Ke(),r=Ge(),n=Ne(),i=dt(),c=VT(),o=hs(),s=si(),h=tZ(),f=er(),y=Dn();e.WaterBridgesParams={backbone:n.ParamDefinition.Boolean(!0,{description:"Include backbone hydrogen bonds"}),ignoreHydrogens:n.ParamDefinition.Boolean(!0,{description:"Ignore explicit hydrogens in geometric constraints"}),legDistMin:n.ParamDefinition.Numeric(2.5,{min:1,max:4,step:.1},{description:"Minimum leg distance (Å)"}),legDistMax:n.ParamDefinition.Numeric(4.1,{min:1,max:6,step:.1},{description:"Maximum leg distance (Å)"}),donAngleDevMax:n.ParamDefinition.Numeric(80,{min:0,max:180,step:1},{description:"Max deviation from ideal donor angle"}),accAngleDevMax:n.ParamDefinition.Numeric(50,{min:0,max:180,step:1},{description:"Max deviation from ideal acceptor angle"}),donOutOfPlaneAngleMax:n.ParamDefinition.Numeric(45,{min:0,max:180,step:1}),accOutOfPlaneAngleMax:n.ParamDefinition.Numeric(90,{min:0,max:180,step:1}),omegaMin:n.ParamDefinition.Numeric(71,{min:0,max:180,step:1},{description:"Minimum A–W–B angle (°)"}),omegaMax:n.ParamDefinition.Numeric(140,{min:0,max:180,step:1},{description:"Maximum A–W–B angle (°)"})},e.WaterBridgesProvider={requiredFeatures:new Set([s.FeatureType.HydrogenDonor,s.FeatureType.HydrogenAcceptor]),params:e.WaterBridgesParams,find:b};function _(P,C){return P.model.atomicHierarchy.derived.residue.moleculeType[P.residueIndex[P.elements[C]]]===i.MoleculeType.Water}function g(P,C){const l=P.elements[C],S=P.model.atomicHierarchy.derived.residue.moleculeType[P.residueIndex[l]];if(S!==i.MoleculeType.Protein&&S!==i.MoleculeType.RNA&&S!==i.MoleculeType.DNA)return!1;const T=P.model.atomicHierarchy.atoms.label_atom_id.value(l);return S===i.MoleculeType.Protein?i.ProteinBackboneAtoms.has(T):i.NucleicBackboneAtoms.has(T)}const a=(0,c.StructureLookup3DResultContext)();function d(P,C){return(0,y.cantorPairing)(P,C)}function p(P,C,l){var S;return(S=P.get(C))===null||S===void 0?void 0:S.get(l)}function u(P,C,l,S){let T=P.get(C);T===void 0&&(T=new Map,P.set(C,T)),T.set(l,S)}function m(P){const C=[];for(const l of P.values())for(const S of l.values())C.push(S);return C}function v(P,C,l,S,T){const A=P.x-C[0],x=P.y-C[1],M=P.z-C[2],D=l.x-C[0],V=l.y-C[1],R=l.z-C[2],E=A*A+x*x+M*M,I=D*D+V*V+R*R;if(E===0||I===0)return!1;const B=(A*D+x*V+M*R)/Math.sqrt(E*I);return B<=S&&B>=T}function b(P,C,l){const S={ignoreHydrogens:l.ignoreHydrogens,includeBackbone:l.backbone,maxAccAngleDev:(0,f.degToRad)(l.accAngleDevMax),maxDonAngleDev:(0,f.degToRad)(l.donAngleDevMax),maxAccOutOfPlaneAngle:(0,f.degToRad)(l.accOutOfPlaneAngleMax),maxDonOutOfPlaneAngle:(0,f.degToRad)(l.donOutOfPlaneAngleMax)},T=l.legDistMin*l.legDistMin,A=l.legDistMax*l.legDistMax,x=(0,f.degToRad)(l.omegaMin),M=(0,f.degToRad)(l.omegaMax);if(x>M)return[];const D=Math.cos(x),V=Math.cos(M),R=new Map,E=(0,r.Vec3)(),I=(0,r.Vec3)();
7083for(const B of P.units){if(!t.Unit.isAtomic(B))continue;const w=C.get(B.id);if(!w||w.count===0)continue;const O=new Map;for(let U=0;U<w.count;U++){const q=w.members[w.offsets[U]];if(!_(B,q))continue;const N=w.types[U];if(N!==s.FeatureType.HydrogenAcceptor&&N!==s.FeatureType.HydrogenDonor)continue;let k=O.get(q);k||O.set(q,k={acc:void 0,don:void 0}),N===s.FeatureType.HydrogenAcceptor?k.acc=U:k.don=U}if(O.size===0)continue;const F=o.Features.Info(P,B,w),L=o.Features.Info(P,B,w);for(const[U,{acc:q,don:N}]of O){if(q===void 0||N===void 0)continue;B.conformation.position(B.elements[U],E),F.feature=q,L.feature=N;const{count:k,indices:j,units:H}=P.lookup3d.find(E[0],E[1],E[2],l.legDistMax,a),G=[],z=[],W=new Set,X=new Set;for(let Y=0;Y<k;Y++){const K=H[Y];if(!t.Unit.isAtomic(K))continue;const Q=K,J=j[Y];if(Q===B&&J===U||_(Q,J))continue;const ae=C.get(Q.id);if(!ae||ae.count===0)continue;const te=o.Features.Info(P,Q,ae),{indices:ne,offsets:$}=ae.elementsIndex;for(let ie=$[J],Z=$[J+1];ie<Z;ie++){const re=ne[ie],oe=ae.types[re];if(oe!==s.FeatureType.HydrogenDonor&&oe!==s.FeatureType.HydrogenAcceptor)continue;const ce=ae.members[ae.offsets[re]];if(!l.backbone&&g(Q,ce))continue;Q.conformation.position(Q.elements[ce],I);const ue=r.Vec3.squaredDistance(I,E);if(!(ue<T||ue>A))if(te.feature=re,oe===s.FeatureType.HydrogenDonor){const pe=d(Q.id,re);if(W.has(pe))continue;(0,h.checkGeometry)(P,te,F,S)&&(W.add(pe),G.push({unit:Q,featureIdx:re,memberIdx:ce,x:I[0],y:I[1],z:I[2],distSq:ue}))}else{const pe=d(Q.id,re);if(X.has(pe))continue;(0,h.checkGeometry)(P,L,te,S)&&(X.add(pe),z.push({unit:Q,featureIdx:re,memberIdx:ce,x:I[0],y:I[1],z:I[2],distSq:ue}))}}}for(const Y of G)for(const K of z){if(Y.unit===K.unit&&Y.memberIdx===K.memberIdx||!v(Y,E,K,D,V))continue;const Q=Y.distSq+K.distSq,J=d(Y.unit.id,Y.featureIdx),ae=d(K.unit.id,K.featureIdx),te=p(R,J,ae);(!te||Q<te.combinedDistSq)&&u(R,J,ae,{contact:{unitA:Y.unit.id,indexA:Y.featureIdx,unitB:K.unit.id,indexB:K.featureIdx,unitM:B.id,indexMA:q,indexMB:N,props:{type:s.InteractionType.WaterBridge,flag:s.InteractionFlag.None}},combinedDistSq:Q})}}}return m(R).map(B=>B.contact)}})(GA)),GA}var zn={},tn={},EH;function rZ(){if(EH)return tn;EH=1,Object.defineProperty(tn,"__esModule",{value:!0}),tn.isQuaternaryAmine=c,tn.isTertiaryAmine=o,tn.isImide=s,tn.isAmide=h,tn.isSulfonium=f,tn.isSulfonicAcid=y,tn.isSulfate=_,tn.isPhosphate=g,tn.isHalocarbon=a,tn.isCarbonyl=d,tn.isCarboxylate=p,tn.isGuanidine=u,tn.isAcetamidine=m,tn.isPolar=b,tn.hasPolarNeighbour=P,tn.hasAromaticNeighbour=C;const e=Xi(),t=dt(),r=ra();function n(l,S){const{offset:T,edgeProps:A}=l.bonds;for(let x=T[S],M=T[S+1];x<M;++x)if(t.BondType.is(t.BondType.Flag.Aromatic,A.flags[x]))return!0;return!1}function i(l,S,T){let A=0;return(0,r.eachBondedAtom)(l,S,T,(x,M)=>{d(l,x,M)&&(A+=1)}),A}function c(l,S,T){return(0,r.typeSymbol)(S,T)===e.Elements.N&&(0,r.bondCount)(l,S,T)===4&&(0,r.bondToElementCount)(l,S,T,e.Elements.H)===0}function o(l,S,T,A){return(0,r.typeSymbol)(S,T)===e.Elements.N&&(0,r.bondCount)(l,S,T)===4&&A===3}function s(l,S,T){let A=!1;return(0,r.typeSymbol)(S,T)===e.Elements.N&&(0,r.bondCount)(l,S,T)-(0,r.bondToElementCount)(l,S,T,e.Elements.H)===2&&(A=i(l,S,T)===2),A}function h(l,S,T){let A=!1;return(0,r.typeSymbol)(S,T)===e.Elements.N&&(0,r.bondCount)(l,S,T)-(0,r.bondToElementCount)(l,S,T,e.Elements.H)===2&&(A=i(l,S,T)===1),A}function f(l,S,T){return(0,r.typeSymbol)(S,T)===e.Elements.S&&(0,r.bondCount)(l,S,T)===3&&(0,r.bondToElementCount)(l,S,T,e.Elements.H)===0}function y(l,S,T){return(0,r.typeSymbol)(S,T)===e.Elements.S&&(0,r.bondToElementCount)(l,S,T,e.Elements.O)===3}function _(l,S,T){return(0,r.typeSymbol)(S,T)===e.Elements.S&&(0,r.bondToElementCount)(l,S,T,e.Elements.O)===4}function g(l,S,T){return(0,r.typeSymbol)(S,T)===e.Elements.P&&(0,r.bondToElementCount)(l,S,T,e.Elements.O)===(0,r.bondCount)(l,S,T)}function a(l,S,T){return(0,e.isHalogen)((0,r.typeSymbol)(S,T))&&(0,r.bondCount)(l,S,T)===1&&(0,r.bondToElementCount)(l,S,T,e.Elements.C)===1}function d(l,S,T){let A=!1;if((0,r.typeSymbol)(S,T)===e.Elements.C){const{offset:x,edgeProps:M,b:D}=S.bonds;for(let V=x[T],R=x[T+1];V<R;++V)if(M.order[V]===2&&(0,r.typeSymbol)(S,D[V])===e.Elements.O){A=!0;break}}return A}function p(l,S,T){let A=0;return(0,r.typeSymbol)(S,T)===e.Elements.C&&(0,r.bondToElementCount)(l,S,T,e.Elements.O)===2&&(0,r.bondToElementCount)(l,S,T,e.Elements.C)===1&&(0,r.eachBondedAtom)(l,S,T,(x,M)=>{(0,r.typeSymbol)(x,M)===e.Elements.O&&(0,r.bondCount)(l,x,M)-(0,r.bondToElementCount)(l,x,M,e.Elements.H)===1&&(A+=1)}),A===2}function u(l,S,T){let A=0;return(0,r.typeSymbol)(S,T)===e.Elements.C&&(0,r.bondCount)(l,S,T)===3&&(0,r.bondToElementCount)(l,S,T,e.Elements.N)===3&&(0,r.eachBondedAtom)(l,S,T,(x,M)=>{(0,r.bondCount)(l,x,M)-(0,r.bondToElementCount)(l,x,M,e.Elements.H)===1&&(A+=1)}),A===2}function m(l,S,T){let A=0;return(0,r.typeSymbol)(S,T)===e.Elements.C&&(0,r.bondCount)(l,S,T)===3&&(0,r.bondToElementCount)(l,S,T,e.Elements.N)===2&&(0,r.bondToElementCount)(l,S,T,e.Elements.C)===1&&(0,r.eachBondedAtom)(l,S,T,(x,M)=>{(0,r.bondCount)(l,x,M)-(0,r.bondToElementCount)(l,x,M,e.Elements.H)===1&&(A+=1)}),A===2}const v=new Set(["N","O","S","F","CL","BR","I"]);function b(l){return v.has(l)}function P(l,S,T){let A=!1;return(0,r.eachBondedAtom)(l,S,T,(x,M)=>{b((0,r.typeSymbol)(x,M))&&(A=!0)}),A}function C(l,S,T){let A=!1;return(0,r.eachBondedAtom)(l,S,T,(x,M)=>{n(x,M)&&(A=!0)}),A}return tn}var BH;function wse(){if(BH)return zn;BH=1,Object.defineProperty(zn,"__esModule",{value:!0}
7083),zn.CationPiProvider=zn.PiStackingProvider=zn.IonicProvider=zn.AromaticRingProvider=zn.PositiveChargeProvider=zn.NegativChargeProvider=void 0;const e=Ne(),t=hs(),r=dt(),n=ra(),i=Xi(),c=QS(),o=er(),s=si(),h=at(),f=rZ(),y=Ge(),_={distanceMax:e.ParamDefinition.Numeric(5,{min:0,max:8,step:.1})},g={distanceMax:e.ParamDefinition.Numeric(5.5,{min:1,max:8,step:.1}),offsetMax:e.ParamDefinition.Numeric(2,{min:0,max:4,step:.1}),angleDevMax:e.ParamDefinition.Numeric(30,{min:0,max:180,step:1})},a={distanceMax:e.ParamDefinition.Numeric(6,{min:1,max:8,step:.1}),offsetMax:e.ParamDefinition.Numeric(2,{min:0,max:4,step:.1})},d=["ARG","HIS","LYS"],p=["GLU","ASP"];function u(j,H){const G=c.ValenceModelProvider.get(j).value;if(!G)throw Error("expected valence model to be available");const z=G.get(H.id);if(!z)throw Error("expected valence model for unit to be available");return z}function m(j,H,G){const{charge:z}=u(j,H),{elements:W}=H,{x:X,y:Y,z:K}=H.model.atomicConformation,Q=new Set,{label_comp_id:J}=H.model.atomicHierarchy.atoms,ae=h.Segmentation.transientSegments(H.model.atomicHierarchy.residueAtomSegments,W);for(;ae.hasNext;){const{index:te,start:ne,end:$}=ae.move(),ie=J.value(H.model.atomicHierarchy.residueAtomSegments.offsets[te]);if(d.includes(ie)){G.startState();for(let Z=ne;Z<$;++Z)(0,n.typeSymbol)(H,Z)===i.Elements.N&&!r.ProteinBackboneAtoms.has((0,n.atomId)(H,Z))&&G.pushMember(X[W[Z]],Y[W[Z]],K[W[Z]],Z);G.finishState(s.FeatureType.PositiveCharge,s.FeatureGroup.None)}else if(!r.PolymerNames.has(ie)){Q.clear();for(let Z=ne;Z<$;++Z){let re=s.FeatureGroup.None;if((0,f.isGuanidine)(j,H,Z))re=s.FeatureGroup.Guanidine;else if((0,f.isAcetamidine)(j,H,Z))re=s.FeatureGroup.Acetamidine;else if((0,f.isQuaternaryAmine)(j,H,Z)){re=s.FeatureGroup.QuaternaryAmine,G.startState(),Q.add(Z),G.pushMember(X[W[Z]],Y[W[Z]],K[W[Z]],Z),(0,n.eachIntraBondedAtom)(H,Z,(oe,ce)=>{Q.add(ce),G.markMember(ce)}),G.finishState(s.FeatureType.PositiveCharge,re);continue}re&&(G.startState(),(0,n.eachIntraBondedAtom)(H,Z,(oe,ce)=>{(0,n.typeSymbol)(H,ce)===i.Elements.N&&(Q.add(ce),G.pushMember(X[W[ce]],Y[W[ce]],K[W[ce]],ce))}),G.finishState(s.FeatureType.PositiveCharge,re))}for(let Z=ne;Z<$;++Z)z[Z]>0&&!Q.has(Z)&&G.add(s.FeatureType.PositiveCharge,s.FeatureGroup.None,X[W[Z]],Y[W[Z]],K[W[Z]],Z)}}}function v(j,H,G){const{charge:z}=u(j,H),{elements:W}=H,{x:X,y:Y,z:K}=H.model.atomicConformation,Q=new Set,{label_comp_id:J}=H.model.atomicHierarchy.atoms,ae=h.Segmentation.transientSegments(H.model.atomicHierarchy.residueAtomSegments,W);for(;ae.hasNext;){const{index:te,start:ne,end:$}=ae.move(),ie=J.value(H.model.atomicHierarchy.residueAtomSegments.offsets[te]);if(p.includes(ie)){G.startState();for(let Z=ne;Z<$;++Z)(0,n.typeSymbol)(H,Z)===i.Elements.O&&!r.ProteinBackboneAtoms.has((0,n.atomId)(H,Z))&&G.pushMember(X[W[Z]],Y[W[Z]],K[W[Z]],Z);G.finishState(s.FeatureType.NegativeCharge,s.FeatureGroup.None)}else if(r.BaseNames.has(ie))for(let Z=ne;Z<$;++Z)(0,f.isPhosphate)(j,H,Z)&&(G.startState(),(0,n.eachBondedAtom)(j,H,Z,(re,oe)=>{(0,n.typeSymbol)(H,oe)===i.Elements.O&&G.pushMember(X[W[oe]],Y[W[oe]],K[W[oe]],oe)}),G.finishState(s.FeatureType.NegativeCharge,s.FeatureGroup.Phosphate));else if(!r.PolymerNames.has(ie)){for(let Z=ne;Z<$;++Z){G.startState(),(0,n.typeSymbol)(H,Z)===i.Elements.N&&!r.ProteinBackboneAtoms.has((0,n.atomId)(H,Z))&&G.pushMember(X[W[Z]],Y[W[Z]],K[W[Z]],Z),G.finishState(s.FeatureType.NegativeCharge,s.FeatureGroup.None);let re=s.FeatureGroup.None;(0,f.isSulfonicAcid)(j,H,Z)?re=s.FeatureGroup.SulfonicAcid:(0,f.isPhosphate)(j,H,Z)?re=s.FeatureGroup.Phosphate:(0,f.isSulfate)(j,H,Z)?re=s.FeatureGroup.Sulfate:(0,f.isCarboxylate)(j,H,Z)&&(re=s.FeatureGroup.Carboxylate),re&&(G.startState(),(0,n.eachBondedAtom)(j,H,Z,(oe,ce)=>{(0,n.typeSymbol)(H,ce)===i.Elements.O&&(Q.add(ce),G.pushMember(X[W[ce]],Y[W[ce]],K[W[ce]],ce))}),G.finishState(s.FeatureType.NegativeCharge,re))}for(let Z=ne;Z<$;++Z)z[Z]<0&&!Q.has(Z)&&G.add(s.FeatureType.NegativeCharge,s.FeatureGroup.None,X[W[Z]],Y[W[Z]],K[W[Z]],Z)}}}function b(j,H,G){const{elements:z}=H,{x:W,y:X,z:Y}=H.model.atomicConformation;for(const K of H.rings.aromaticRings){const Q=H.rings.all[K];G.startState();for(let J=0,ae=Q.length;J<ae;++J){const te=Q[J];
7083G.pushMember(W[z[te]],X[z[te]],Y[z[te]],te)}G.finishState(s.FeatureType.AromaticRing,s.FeatureGroup.None)}}function P(j,H){return j===s.FeatureType.NegativeCharge&&H===s.FeatureType.PositiveCharge||j===s.FeatureType.PositiveCharge&&H===s.FeatureType.NegativeCharge}function C(j,H){return j===s.FeatureType.AromaticRing&&H===s.FeatureType.AromaticRing}function l(j,H){return j===s.FeatureType.AromaticRing&&H===s.FeatureType.PositiveCharge||j===s.FeatureType.PositiveCharge&&H===s.FeatureType.AromaticRing}const S=(0,y.Vec3)(),T=(0,y.Vec3)();function A(j,H,G){const{feature:z,offsets:W,members:X}=j,{feature:Y,offsets:K,members:Q}=H;for(let J=W[z],ae=W[z+1];J<ae;++J){const te=X[J];j.unit.conformation.position(j.unit.elements[te],S);for(let ne=K[Y],$=K[Y+1];ne<$;++ne){const ie=Q[ne];if(H.unit.conformation.position(H.unit.elements[ie],T),y.Vec3.squaredDistance(S,T)<G)return!0}}return!1}const x=(0,y.Vec3)(),M=(0,y.Vec3)(),D=(0,y.Vec3)(),V=(0,y.Vec3)();function R(j,H){const{unit:G,feature:z,offsets:W,members:X}=H,{elements:Y}=G,K=W[z];return H.unit.conformation.position(Y[X[K]],x),H.unit.conformation.position(Y[X[K+1]],M),H.unit.conformation.position(Y[X[K+2]],D),y.Vec3.triangleNormal(j,x,M,D)}const E=function(j,H,G){return t.Features.position(x,j),t.Features.position(M,H),y.Vec3.sub(D,x,M),y.Vec3.projectOnPlane(V,D,G),y.Vec3.add(V,V,M),y.Vec3.distance(V,M)};function I(j){return{distanceMaxSq:j.distanceMax*j.distanceMax}}function B(j){return{offsetMax:j.offsetMax,angleDevMax:(0,o.degToRad)(j.angleDevMax)}}function w(j){return{offsetMax:j.offsetMax}}const O=(0,o.degToRad)(180),F=(0,o.degToRad)(90),L=(0,y.Vec3)(),U=(0,y.Vec3)();function q(j,H,G,z,W){const X=H.types[H.feature],Y=G.types[G.feature];if(P(X,Y)&&A(H,G,W.distanceMaxSq))return s.InteractionType.Ionic}function N(j,H,G,z,W){const X=H.types[H.feature],Y=G.types[G.feature];if(C(X,Y)){R(L,H),R(U,G);const K=y.Vec3.angle(L,U);if(Math.min(E(H,G,U),E(G,H,L))<=W.offsetMax){if(K<=W.angleDevMax||K>=O-W.angleDevMax)return s.InteractionType.PiStacking;if(K<=W.angleDevMax+F&&K>=F-W.angleDevMax)return s.InteractionType.PiStacking}}}function k(j,H,G,z,W){const X=H.types[H.feature],Y=G.types[G.feature];if(l(X,Y)){const[K,Q]=X===s.FeatureType.AromaticRing?[H,G]:[G,H];if(R(L,K),E(Q,K,L)<=W.offsetMax)return s.InteractionType.CationPi}}return zn.NegativChargeProvider=t.Features.Provider([s.FeatureType.NegativeCharge],v),zn.PositiveChargeProvider=t.Features.Provider([s.FeatureType.PositiveCharge],m),zn.AromaticRingProvider=t.Features.Provider([s.FeatureType.AromaticRing],b),zn.IonicProvider={name:"ionic",params:_,createTester:j=>{const H=I(j);return{maxDistance:j.distanceMax,requiredFeatures:new Set([s.FeatureType.NegativeCharge,s.FeatureType.PositiveCharge]),getType:(G,z,W,X)=>q(G,z,W,X,H)}}},zn.PiStackingProvider={name:"pi-stacking",params:g,createTester:j=>{const H=B(j);return{maxDistance:j.distanceMax,requiredFeatures:new Set([s.FeatureType.AromaticRing]),getType:(G,z,W,X)=>N(G,z,W,X,H)}}},zn.CationPiProvider={name:"cation-pi",params:a,createTester:j=>{const H=w(j);return{maxDistance:j.distanceMax,requiredFeatures:new Set([s.FeatureType.AromaticRing,s.FeatureType.PositiveCharge]),getType:(G,z,W,X)=>k(G,z,W,X,H)}}},zn}var el={},RH;function Vse(){if(RH)return el;
7083RH=1,Object.defineProperty(el,"__esModule",{value:!0}),el.HydrophobicProvider=el.HydrophobicAtomProvider=void 0;const e=Ne(),t=hs(),r=ra(),n=Xi(),i=si(),c={distanceMax:e.ParamDefinition.Numeric(4,{min:1,max:5,step:.1})};function o(f,y,_){const{elements:g}=y,{x:a,y:d,z:p}=y.model.atomicConformation;for(let u=0,m=g.length;u<m;++u){const v=(0,r.typeSymbol)(y,u);let b=!1;v===n.Elements.C?(b=!0,(0,r.eachBondedAtom)(f,y,u,(P,C)=>{const l=(0,r.typeSymbol)(P,C);l!==n.Elements.C&&l!==n.Elements.H&&(b=!1)})):v===n.Elements.F&&(b=!0),b&&_.add(i.FeatureType.HydrophobicAtom,i.FeatureGroup.None,a[g[u]],d[g[u]],p[g[u]],u)}}function s(f,y){return f===i.FeatureType.HydrophobicAtom&&y===i.FeatureType.HydrophobicAtom}function h(f,y,_,g){const a=y.types[y.feature],d=_.types[_.feature];if(!s(a,d))return;const p=y.members[y.offsets[y.feature]],u=_.members[_.offsets[_.feature]];if(!((0,r.typeSymbol)(y.unit,p)===n.Elements.F&&(0,r.typeSymbol)(_.unit,u)===n.Elements.F))return i.InteractionType.Hydrophobic}return el.HydrophobicAtomProvider=t.Features.Provider([i.FeatureType.HydrophobicAtom],o),el.HydrophobicProvider={name:"hydrophobic",params:c,createTester:f=>({maxDistance:f.distanceMax,requiredFeatures:new Set([i.FeatureType.HydrophobicAtom]),getType:(y,_,g,a)=>h(y,_,g)})},el}var zA={},OH;function Ese(){return OH||(OH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.MetalCoordinationProvider=e.MetalBindingProvider=e.MetalProvider=e.MetalCoordinationParams=void 0;const t=Ne(),r=hs(),n=ra(),i=Xi(),c=si(),o=dt();e.MetalCoordinationParams={distanceMax:t.ParamDefinition.Numeric(3,{min:1,max:5,step:.1})};const s=[i.Elements.LI,i.Elements.NA,i.Elements.K,i.Elements.RB,i.Elements.CS,i.Elements.MG,i.Elements.CA,i.Elements.SR,i.Elements.BA,i.Elements.AL,i.Elements.GA,i.Elements.IN,i.Elements.TL,i.Elements.SC,i.Elements.SN,i.Elements.PB,i.Elements.BI,i.Elements.SB,i.Elements.HG];function h(p,u,m){const{elements:v}=u,{x:b,y:P,z:C}=u.model.atomicConformation;for(let l=0,S=v.length;l<S;++l){const T=(0,n.typeSymbol)(u,l);let A=c.FeatureType.None;s.includes(T)?A=c.FeatureType.IonicTypeMetal:((0,i.isTransitionMetal)(T)||T===i.Elements.ZN||T===i.Elements.CD)&&(A=c.FeatureType.TransitionMetal),A&&m.add(A,c.FeatureGroup.None,b[v[l]],P[v[l]],C[v[l]],l)}}function f(p){return!o.ProteinBackboneAtoms.has(p)}function y(p){return o.ProteinBackboneAtoms.has(p)}function _(p){return o.NucleicBackboneAtoms.has(p)}function g(p,u,m){const{elements:v}=u,{x:b,y:P,z:C}=u.model.atomicConformation;for(let l=0,S=v.length;l<S;++l){const T=(0,n.typeSymbol)(u,l),A=(0,n.compId)(u,l),x=(0,n.atomId)(u,l);let M=!1,D=!1;const V=o.AminoAcidNames.has(A),R=o.BaseNames.has(A);!V&&!R?(0,i.isHalogen)(T)||T===i.Elements.O||T===i.Elements.S?(M=!0,D=!0):T===i.Elements.N&&(M=!0):V?T===i.Elements.O?(["ASP","GLU","SER","THR","TYR","ASN","GLN"].includes(A)&&f(x)||y(x))&&(M=!0,D=!0):T===i.Elements.S&&(A==="CYS"||A==="MET")?(M=!0,D=!0):T===i.Elements.N&&A==="HIS"&&f(x)&&(M=!0):R&&(T===i.Elements.O&&_(x)?(M=!0,D=!0):["N3","N4","N7"].includes(x)?M=!0:["O2","O4","O6"].includes(x)&&(M=!0,D=!0)),M&&m.add(c.FeatureType.DativeBondPartner,c.FeatureGroup.None,b[v[l]],P[v[l]],C[v[l]],l),D&&m.add(c.FeatureType.IonicTypePartner,c.FeatureGroup.None,b[v[l]],P[v[l]],C[v[l]],l)}}function a(p,u){if(p===c.FeatureType.TransitionMetal)return u===c.FeatureType.DativeBondPartner||u===c.FeatureType.TransitionMetal;if(p===c.FeatureType.IonicTypeMetal)return u===c.FeatureType.IonicTypePartner}function d(p,u,m,v){const b=u.types[u.feature],P=m.types[m.feature];if(!(!a(b,P)&&!a(P,b)))return c.InteractionType.MetalCoordination}e.MetalProvider=r.Features.Provider([c.FeatureType.IonicTypeMetal,c.FeatureType.TransitionMetal],h),e.MetalBindingProvider=r.Features.Provider([c.FeatureType.IonicTypePartner,c.FeatureType.DativeBondPartner],g),e.MetalCoordinationProvider={name:"metal-coordination",params:e.MetalCoordinationParams,createTester:p=>({maxDistance:p.distanceMax,requiredFeatures:new Set([c.FeatureType.IonicTypeMetal,c.FeatureType.TransitionMetal,c.FeatureType.IonicTypePartner,c.FeatureType.DativeBondPartner]),getType:(u,m,v,b)=>d(u,m,v)})}})(zA)),zA}var WP={},kH;function Bse(){if(kH)return WP;
7083kH=1,Object.defineProperty(WP,"__esModule",{value:!0}),WP.refineInteractions=i;const e=si(),t=Ke(),r=hs(),n=Dn();function i(a,d){const{contacts:p,unitsContacts:u,unitsFeatures:m}=d,v=[c(a,d),o(a,d),f(a,d),y(a,d),_(a,d),g(a,d)];for(let P=0,C=p.edgeCount;P<C;++P){const l=p.edges[P],S=a.unitMap.get(l.unitA),T=a.unitMap.get(l.unitB),A=r.Features.Info(a,S,m.get(l.unitA));A.feature=l.indexA;const x=r.Features.Info(a,T,m.get(l.unitB));x.feature=l.indexB;for(const M of v)M.isApplicable(l.props.type)&&M.handleInterContact(P,A,x)}const b=u.keys();for(;;){const{done:P,value:C}=b.next();if(P)break;const l=u.get(C),S=m.get(C),T=a.unitMap.get(C);if(!t.Unit.isAtomic(T))continue;const A=r.Features.Info(a,T,S),x=r.Features.Info(a,T,S);for(const M of v)M.startUnit(T,l,S);for(let M=0,D=l.edgeCount*2;M<D;++M){A.feature=l.a[M],x.feature=l.b[M];for(const V of v)V.isApplicable(l.edgeProps.type[M])&&V.handleIntraContact(M,A,x)}}}function c(a,d){const{contacts:p}=d,u=function(l,S,T,A,x){const[M,D]=A.get(T)||[1/0,-1];l<M?(D!==-1&&x(D),A.set(T,[l,S])):x(S)};function m(l,S,T,A,x){const M=S.members[S.offsets[S.feature]],D=T.members[T.offsets[T.feature]],V=S.unit.getResidueIndex(M),R=T.unit.getResidueIndex(D),E=`${M}|${S.unit.id}|${R}|${T.unit.id}|A`,I=`${D}|${T.unit.id}|${V}|${S.unit.id}|B`,B=r.Features.distance(S,T);u(B,l,E,A,x),u(B,l,I,A,x)}const v=new Map,b=l=>p.edges[l].props.flag=e.InteractionFlag.Filtered;let P,C;return{isApplicable:l=>l===e.InteractionType.Hydrophobic,handleInterContact:(l,S,T)=>{m(l,S,T,v,b)},startUnit:(l,S,T)=>{P=new Map,C=A=>S.edgeProps.flag[A]=e.InteractionFlag.Filtered},handleIntraContact:(l,S,T)=>{m(l,S,T,P,C)}}}function o(a,d){const{contacts:p}=d,u=(m,v)=>{const b=m.types[m.feature]===e.FeatureType.WeakHydrogenDonor?v:m,P=b.members[b.offsets[b.feature]],{edgeProps:{type:C},elementsIndex:{offsets:l,indices:S}}=d.unitsContacts.get(b.unit.id);for(let A=l[P],x=l[P+1];A<x;++A)if(C[S[A]]===e.InteractionType.HydrogenBond)return!0;const T=p.getEdgeIndices(b.feature,b.unit.id);for(let A=0,x=T.length;A<x;++A)if(p.edges[T[A]].props.type===e.InteractionType.HydrogenBond)return!0;return!1};return{isApplicable:m=>m===e.InteractionType.WeakHydrogenBond,handleInterContact:(m,v,b)=>{u(v,b)&&(p.edges[m].props.flag=e.InteractionFlag.Filtered)},startUnit:()=>{},handleIntraContact:(m,v,b)=>{if(u(v,b)){const{flag:P}=d.unitsContacts.get(v.unit.id).edgeProps;P[m]=e.InteractionFlag.Filtered}}}}function s(a,d,p,u,m){const{offsets:v,feature:b}=p,{offsets:P,feature:C}=u;for(let l=v[b],S=v[b+1];l<S;++l){const T=p.members[l],A=m.getContactIndicesForElement(T,p.unit);for(let x=0,M=A.length;x<M;++x){const D=A[x];if(a.includes(m.edges[D].props.type))for(let V=P[C],R=P[C+1];V<R;++V){const E=u.members[V];if(m.getContactIndicesForElement(E,u.unit).includes(D)){m.edges[d].props.flag=e.InteractionFlag.Filtered;return}}}}}function h(a,d,p,u,m){const{edgeProps:{type:v,flag:b},elementsIndex:{offsets:P,indices:C}}=m,{offsets:l,feature:S}=p,{offsets:T,feature:A}=u;for(let x=l[S],M=l[S+1];x<M;++x){const D=p.members[x];for(let V=P[D],R=P[D+1];V<R;++V){const E=C[V];if(a.includes(v[E]))for(let I=T[A],B=T[A+1];I<B;++I){const w=u.members[I];for(let O=P[w],F=P[w+1];O<F;++O)if(E===C[O]){b[d]=e.InteractionFlag.Filtered;return}}}}}function f(a,d){const{contacts:p}=d;return{isApplicable:u=>u===e.InteractionType.Ionic,handleInterContact:(u,m,v)=>{s([e.InteractionType.HydrogenBond,e.InteractionType.WeakHydrogenBond],u,m,v,p)},startUnit:()=>{},handleIntraContact:(u,m,v)=>{h([e.InteractionType.HydrogenBond,e.InteractionType.WeakHydrogenBond],u,m,v,d.unitsContacts.get(m.unit.id))}}}function y(a,d){const{contacts:p}=d;return{isApplicable:u=>u===e.InteractionType.Hydrophobic||u===e.InteractionType.CationPi,handleInterContact:(u,m,v)=>{s([e.InteractionType.PiStacking],u,m,v,p)},startUnit:()=>{},handleIntraContact:(u,m,v)=>{h([e.InteractionType.PiStacking],u,m,v,d.unitsContacts.get(m.unit.id))}}}function _(a,d){const{contacts:p}=d;return{isApplicable:u=>u===e.InteractionType.Ionic,handleInterContact:(u,m,v)=>{s([e.InteractionType.MetalCoordination],u,m,v,p)},startUnit:()=>{},handleIntraContact:(u,m,v)=>{h([e.InteractionType.MetalCoordination],u,m,v,d.unitsContacts.get(m.unit.id))}}}function g(a,d){const{contacts:p,bridges:u,unitsFeatures:m}=d;function v(A,x){return(0,n.cantorPairing)(A,x)}function b(A,x){return A.members[A.offsets[x]]}function P(A,x,M,D,V){const R=v(x,M),E=v(D,V);let I=A.get(R);I===void 0&&(I=new Set,A.set(R,I)),I.add(E);let B=A.get(E);B===void 0&&(B=new Set,A.set(E,B)),B.add(R)}function C(A,x,M,D,V){var R;return((R=A.get(v(x,M)))===null||R===void 0?void 0:R.has(v(D,V)))===!0}function l(A,x,M){const{offsets:D,members:V,feature:R}=x,{offsets:E,members:I,feature:B}=M;for(let w=D[R],O=D[R+1];w<O;++w){const F=V[w];for(let L=E[B],U=E[B+1];L<U;++L){const q=I[L];if(C(A,x.unit.id,F,M.unit.id,q))return!0}}return!1}const S=new Map;for(const A of u){if(A.props.type!==e.InteractionType.WaterBridge)continue;const x=m.get(A.unitA),M=m.get(A.unitM),D=m.get(A.unitB);if(!x||!M||!D)continue;const V=b(x,A.indexA),R=b(M,A.indexMA),E=b(M,A.indexMB),I=b(D,A.indexB);P(S,A.unitA,V,A.unitM,R),P(S,A.unitM,E,A.unitB,I)}let T;return{isApplicable:A=>S.size>0&&A===e.InteractionType.HydrogenBond,handleInterContact:(A,x,M)=>{l(S,x,M)&&(p.edges[A].props.flag=e.InteractionFlag.Filtered)},startUnit:(A,x)=>{T=x},handleIntraContact:(A,x,M)=>{T&&l(S,x,M)&&(T.edgeProps.flag[A]=e.InteractionFlag.Filtered)}}}return WP}var FH;function ZS(){return FH||(FH=1,(function(e){Object.defineProperty(e,"__esMo
7083dule",{value:!0}),e.InteractionsParams=e.BridgeProviderParams=e.ContactProviderParams=e.Bridges=e.Interactions=void 0,e.computeInteractions=V;const t=Ne(),r=Ke(),n=hs(),i=QS(),c=si(),o=Ase(),s=at(),h=Mse(),f=Dse(),y=tZ(),_=Ise(),g=wse(),a=Vse(),d=Hi(),p=Ese(),u=Bse(),m=Xa(),v=rS(),b=gt(),P=_a(),C=Gt();var l;(function(w){function O(G,z,W,X,Y,K){return(0,m.DataLocation)("interactions",{structure:z,interactions:G},{unitA:W,indexA:X,unitB:Y,indexB:K})}w.Location=O;function F(G){return!!G&&G.kind==="data-location"&&G.tag==="interactions"}w.isLocation=F;function L(G,z){return G.data.structure===z.data.structure&&G.data.interactions===z.data.interactions&&G.element.indexA===z.element.indexA&&G.element.indexB===z.element.indexB&&G.element.unitA===z.element.unitA&&G.element.unitB===z.element.unitB}w.areLocationsEqual=L;function U(G,z){const{unitA:W,indexA:X,unitB:Y,indexB:K}=z,{contacts:Q,unitsContacts:J}=G;if(W===Y){const ae=J.get(W.id),te=ae.getDirectedEdgeIndex(X,K);return(0,c.interactionTypeLabel)(ae.edgeProps.type[te])}else{const ae=Q.getEdgeIndex(X,W.id,K,Y.id);return(0,c.interactionTypeLabel)(Q.edges[ae].props.type)}}function q(G){return U(G.data.interactions,G.element)}w.locationLabel=q;function N(G,z,W){return(0,b.DataLoci)("interactions",{structure:G,interactions:z},W,X=>j(z,W,X),()=>H(G,z,W))}w.Loci=N;function k(G){return!!G&&G.kind==="data-loci"&&G.tag==="interactions"}w.isLoci=k;function j(G,z,W){const{unitsFeatures:X}=G;return v.CentroidHelper.fromPairProvider(z.length,(Y,K,Q)=>{const J=z[Y];n.Features.setPosition(K,J.unitA,J.indexA,X.get(J.unitA.id)),n.Features.setPosition(Q,J.unitB,J.indexB,X.get(J.unitB.id))},W)}w.getBoundingSphere=j;function H(G,z,W){const X=W[0];if(X===void 0)return"";const{unitA:Y,indexA:K,unitB:Q,indexB:J}=X,{unitsFeatures:ae}=z,{members:te,offsets:ne}=ae.get(Y.id),{members:$,offsets:ie}=ae.get(Q.id),Z={granularity:"element"};return(ne[K+1]-ne[K]>1||ie[J+1]-ie[J]>1)&&(Z.granularity="residue"),[U(z,X),(0,P.bondLabel)(r.Bond.Location(G,Y,te[ne[K]],G,Q,$[ie[J]]),Z)].join("</br>")}w.getLabel=H})(l||(e.Interactions=l={}));var S;(function(w){function O(k,j=0){return(0,m.DataLocation)("bridges",k,{bridgeIndex:j})}w.Location=O;function F(k){return!!k&&k.kind==="data-location"&&k.tag==="bridges"}w.isLocation=F;function L(k,j){return(0,b.DataLoci)("bridges",k,j,H=>N(k,j,H),()=>q(k,j))}w.Loci=L;function U(k){return!!k&&k.kind==="data-loci"&&k.tag==="bridges"}w.isLoci=U;function q(k,j){const H=j[0];if(H===void 0)return"";const{structure:G,bridges:z,unitsFeatures:W}=k,X=z[H.bridgeIndex],Y=G.unitMap.get(X.unitA),K=W.get(X.unitA),Q=G.unitMap.get(X.unitM),J=W.get(X.unitM),ae=G.unitMap.get(X.unitB),te=W.get(X.unitB),ne={granularity:"element"};return(K.offsets[X.indexA+1]-K.offsets[X.indexA]>1||te.offsets[X.indexB+1]-te.offsets[X.indexB]>1)&&(ne.granularity="residue"),[(0,c.interactionTypeLabel)(X.props.type),(0,P.bundleLabel)({loci:[r.StructureElement.Loci(G,[{unit:Y,indices:s.OrderedSet.ofSingleton(K.members[K.offsets[X.indexA]])}]),r.StructureElement.Loci(G,[{unit:Q,indices:s.OrderedSet.ofSingleton(J.members[J.offsets[X.indexMA]])}]),r.StructureElement.Loci(G,[{unit:ae,indices:s.OrderedSet.ofSingleton(te.members[te.offsets[X.indexB]])}])]},ne)].join("</br>")}function N(k,j,H){return v.CentroidHelper.fromPairProvider(j.length*2,(G,z,W)=>{const X=k.bridges[j[G>>1].bridgeIndex],Y=k.structure.unitMap.get(X.unitA),K=k.unitsFeatures.get(X.unitA),Q=k.structure.unitMap.get(X.unitM),J=k.unitsFeatures.get(X.unitM),ae=k.structure.unitMap.get(X.unitB),te=k.unitsFeatures.get(X.unitB),ne=K.members[K.offsets[X.indexA]],$=J.members[J.offsets[X.indexMA]],ie=te.members[te.offsets[X.indexB]];(G&1)===0?(Y.conformation.position(Y.elements[ne],z),Q.conformation.position(Q.elements[$],W)):(Q.conformation.position(Q.elements[$],z),ae.conformation.position(ae.elements[ie],W))},H)}})(S||(e.Bridges=S={}));const T=[y.HydrogenDonorProvider,y.WeakHydrogenDonorProvider,y.HydrogenAcceptorProvider,g.NegativChargeProvider,g.PositiveChargeProvider,g.AromaticRingProvider,f.HalogenDonorProvider,f.HalogenAcceptorProvider,a.HydrophobicAtomProvider,p.MetalProvider,p.MetalBindingProvider],A={ionic:g.IonicProvider,"pi-stacking":g.PiStackingProvider,"cation-
7083pi":g.CationPiProvider,"halogen-bonds":f.HalogenBondsProvider,"hydrogen-bonds":y.HydrogenBondsProvider,"weak-hydrogen-bonds":y.WeakHydrogenBondsProvider,hydrophobic:a.HydrophobicProvider,"metal-coordination":p.MetalCoordinationProvider};function x(w=[]){const O=Object.create(null);return Object.keys(A).forEach(F=>{O[F]=t.ParamDefinition.MappedStatic(w.includes(F)?"on":"off",{on:t.ParamDefinition.Group(A[F].params),off:t.ParamDefinition.Group({})},{cycle:!0})}),O}e.ContactProviderParams=x(["cation-pi","pi-stacking","hydrogen-bonds","halogen-bonds","metal-coordination"]);const M={"water-bridges":_.WaterBridgesProvider};function D(w=[]){const O=Object.create(null);return Object.keys(M).forEach(F=>{O[F]=t.ParamDefinition.MappedStatic(w.includes(F)?"on":"off",{on:t.ParamDefinition.Group(M[F].params),off:t.ParamDefinition.Group({})},{cycle:!0})}),O}e.BridgeProviderParams=D([]),e.InteractionsParams={providers:t.ParamDefinition.Group(e.ContactProviderParams,{isFlat:!0}),bridges:t.ParamDefinition.Group(e.BridgeProviderParams,{isFlat:!0}),contacts:t.ParamDefinition.Group(h.ContactsParams,{label:"Advanced Options"})};async function V(w,O,F,L){const U={...t.ParamDefinition.getDefaultValues(e.InteractionsParams),...F},q=JSON.stringify(U);await i.ValenceModelProvider.attach(w,O);const N=[];(0,C.ObjectKeys)(A).forEach(Y=>{const{name:K,params:Q}=U.providers[Y];K==="on"&&N.push(A[Y].createTester(Q))});const k=new Set;
7083N.forEach(Y=>d.SetUtils.add(k,Y.requiredFeatures)),(0,C.ObjectKeys)(M).forEach(Y=>{U.bridges[Y].name==="on"&&d.SetUtils.add(k,M[Y].requiredFeatures)});const j=T.filter(Y=>d.SetUtils.areIntersecting(k,Y.types)),H=s.IntMap.Mutable(),G=s.IntMap.Mutable();for(let Y=0,K=O.unitSymmetryGroups.length;Y<K;++Y){const Q=O.unitSymmetryGroups[Y];w.runtime.shouldUpdate&&await w.runtime.update({message:"computing interactions",current:Y,max:K});const J=R(O,Q.units[0],j,q);for(let te=0,ne=Q.units.length;te<ne;++te){const $=Q.units[te];H.set($.id,J)}if(L?.skipIntraContacts)continue;const ae=E(O,Q.units[0],J,N,U.contacts);for(let te=0,ne=Q.units.length;te<ne;++te){const $=Q.units[te];G.set($.id,ae)}}const z=B(O,H,N,U.contacts,L),W=I(O,H,U.bridges),X={unitsFeatures:H,unitsContacts:G,contacts:z,bridges:W};return(0,u.refineInteractions)(O,X),X}function R(w,O,F,L){const U=`features-${L}`;if(O.transientCache.has(U))return O.transientCache.get(U);const q=O.elements.length,N=n.FeaturesBuilder.create(q,q/2);if(r.Unit.isAtomic(O))for(const j of F)j.add(w,O,N);const k=N.getFeatures(q);return O.transientCache.set(U,k),k}function E(w,O,F,L,U){const q=o.IntraContactsBuilder.create(F,O.elements.length);return r.Unit.isAtomic(O)&&(0,h.addUnitContacts)(w,O,F,q,L,U),q.getContacts()}function I(w,O,F){const L=[];return(0,C.ObjectKeys)(M).forEach(U=>{const{name:q,params:N}=F[U];if(q==="on")for(const k of M[U].find(w,O,N))L.push(k)}),L}function B(w,O,F,L,U){const q=o.InterContactsBuilder.create();return r.Structure.eachUnitPair(w,(N,k)=>{const j=O.get(N.id),H=O.get(k.id);(0,h.addStructureContacts)(w,N,j,k,H,q,F,L)},{maxRadius:Math.max(...F.map(N=>N.maxDistance)),validUnit:N=>r.Unit.isAtomic(N),validUnitPair:(N,k)=>U?.unitPairTest?U.unitPairTest(N,k):r.Structure.validUnitPair(w,N,k)}),q.getContacts(O)}})(NA)),NA}var LH;function Gl(){return LH||(LH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InteractionsProvider=e.InteractionsParams=void 0;const t=Ne(),r=ZS(),n=wf(),i=Pr();e.InteractionsParams={...r.InteractionsParams},e.InteractionsProvider=n.CustomStructureProperty.createProvider({label:"Interactions",descriptor:(0,i.CustomPropertyDescriptor)({name:"molstar_computed_interactions"}),type:"local",defaultParams:e.InteractionsParams,getParams:c=>e.InteractionsParams,isApplicable:c=>!c.isCoarseGrained,obtain:async(c,o,s)=>{const h={...t.ParamDefinition.getDefaultValues(e.InteractionsParams),...s};return{value:await(0,r.computeInteractions)(c,o,h)}}})})(LA)),LA}var HA={},NH;function nZ(){return NH||(NH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InteractionTypeColorThemeProvider=e.InteractionTypeColorThemeParams=void 0,e.getInteractionTypeColorThemeParams=d,e.InteractionTypeColorTheme=p;const t=vt(),r=Ne(),n=Gl(),i=si(),c=qa(),o=ZS(),s=_t(),h=Ut(),f=(0,t.Color)(13421772),y="Assigns colors according the interaction type of a link.",_=(0,t.ColorMap)({HydrogenBond:2851770,Hydrophobic:8421504,HalogenBond:4259775,Ionic:15779860,MetalCoordination:9191577,CationPi:16744448,PiStacking:9220966,WeakHydrogenBond:12967404,WaterBridge:52462}),g=[["Hydrogen Bond",_.HydrogenBond],["Hydrophobic",_.Hydrophobic],["Halogen Bond",_.HalogenBond],["Ionic",_.Ionic],["Metal Coordination",_.MetalCoordination],["Cation Pi",_.CationPi],["Pi Stacking",_.PiStacking],["Weak HydrogenBond",_.WeakHydrogenBond],["Water Bridge",_.WaterBridge]];function a(u){switch(u){case i.InteractionType.HydrogenBond:return _.HydrogenBond;case i.InteractionType.Hydrophobic:return _.Hydrophobic;case i.InteractionType.HalogenBond:return _.HalogenBond;case i.InteractionType.Ionic:return _.Ionic;case i.InteractionType.MetalCoordination:return _.MetalCoordination;case i.InteractionType.CationPi:return _.CationPi;case i.InteractionType.PiStacking:return _.PiStacking;case i.InteractionType.WeakHydrogenBond:return _.WeakHydrogenBond;case i.InteractionType.WaterBridge:return _.WaterBridge;case i.InteractionType.Unknown:return f}}e.InteractionTypeColorThemeParams={};function d(u){return e.InteractionTypeColorThemeParams}function p(u,m){let v;const b=u.structure?n.InteractionsProvider.get(u.structure):void 0,P=b?(0,s.hash2)(b.id,b.version):-1;return b&&b.value?v=C=>{if(o.Interactions.isLocation(C)){const{unitsContacts:l,contacts:S}=C.data.interactions,{unitA:T,unitB:A,indexA:x,indexB:M}=C.element;if(T===A){const D=l.get(T.id),V=D.getDirectedEdgeIndex(x,M);return a(D.edgeProps.type[V])}else{const D=S.getEdgeIndex(x,T.id,M,A.id);return a(S.edges[D].props.type)}}return o.Bridges.isLocation(C)?a(C.data.bridges[C.element.bridgeIndex].props.type):f}:v=()=>f,{factory:p,granularity:"group",color:v,props:m,contextHash:P,description:y,legend:(0,c.TableLegend)(g)}}e.InteractionTypeColorThemeProvider={name:"interaction-type",label:"Interaction Type",category:h.ColorThemeCategory.Misc,factory:p,getParams:d,defaultValues:r.ParamDefinition.getDefaultValues(e.InteractionTypeColorThemeParams),isApplicable:u=>!!u.structure,ensureCustomProperties:{attach:(u,m)=>m.structure?n.InteractionsProvider.attach(u,m.structure,void 0,!0):Promise.resolve(),detach:u=>u.structure&&n.InteractionsProvider.ref(u.structure,!1)}}})(HA)),HA}var WA={},$A={},$P={},qH;function JS(){if(qH)return $P;
7083qH=1,Object.defineProperty($P,"__esModule",{value:!0}),$P.ComplexRepresentation=u;const e=Ne(),t=Yr(),r=Lt(),n=Ke(),i=Rn(),c=ds(),o=ea(),s=nt(),h=gt(),f=cn(),y=US(),_=Yf(),g=jS(),a=zS(),d=HS(),p=WS();function u(m,v,b,P){let C=0;const{webgl:l}=v,S=new i.Subject,T=new r.Representation.GeometryState,A=(0,c.getNextMaterialId)(),x=[],M=t.StructureRepresentationStateBuilder.create();let D,V,R,E,I=o.Theme.createEmpty();function B(k={},j){return j&&j!==V&&(R=b(v,j),V=j,E||(E=e.ParamDefinition.getDefaultValues(R))),E=Object.assign({},E,k),s.Task.create("Creating or updating ComplexRepresentation",async H=>{var G;let z=!1;D?!((G=D.mustRecreate)===null||G===void 0)&&G.call(D,V,E,l)&&(D.destroy(),D=P(A,V,E,l),z=!0):(D=P(A,V,E,l),z=!0);const W=D.createOrUpdate({webgl:l,runtime:H},I,E,j);W&&await W,z&&U(M),x.length=0,D&&D.renderObject&&(x.push(D.renderObject),T.add(D.renderObject.id,D.geometryVersion)),T.snapshot(),C+=1,S.next(C)})}function w(k){return D?D.getLoci(k):h.EmptyLoci}function O(){var k;return[n.Structure.Loci((k=V.child)!==null&&k!==void 0?k:V)]}function F(k){D?.eachLocation(k)}function L(k,j){if(!V||!f.MarkerActions.is(M.markerActions,j))return!1;if(n.Structure.isLoci(k)||n.StructureElement.Loci.is(k)||n.Bond.isLoci(k)){if(!n.Structure.areRootsEquivalent(k.structure,V))return!1;k=h.Loci.remap(k,V),(n.Structure.isLoci(k)||n.StructureElement.Loci.is(k)&&n.StructureElement.Loci.isWholeStructure(k))&&(k=h.EveryLoci)}else if(!(0,h.isEveryLoci)(k)&&!(0,h.isDataLoci)(k))return!1;return h.Loci.isEmpty(k)?!1:D?D.mark(k,j):!1}function U(k){if(t.StructureRepresentationStateBuilder.update(M,k),k.visible!==void 0&&D&&D.setVisibility(k.visible&&(M.unitTransforms===null||M.unitTransforms.isIdentity)),k.alphaFactor!==void 0&&D&&D.setAlphaFactor(k.alphaFactor),k.pickable!==void 0&&D&&D.setPickable(k.pickable),k.overpaint!==void 0&&D){const j=y.Overpaint.remap(k.overpaint,V);D.setOverpaint(j,l)}if(k.transparency!==void 0&&D){const j=g.Transparency.remap(k.transparency,V);D.setTransparency(j,l)}if(k.emissive!==void 0&&D){const j=d.Emissive.remap(k.emissive,V);D.setEmissive(j,l)}if(k.substance!==void 0&&D){const j=a.Substance.remap(k.substance,V);D.setSubstance(j,l)}if(k.clipping!==void 0&&D){const j=_.Clipping.remap(k.clipping,V);D.setClipping(j)}if(k.wiggle!==void 0&&D){const j=p.Wiggle.remap(k.wiggle,V);D.setWiggle(j,l)}k.themeStrength!==void 0&&D&&D.setThemeStrength(k.themeStrength),k.transform!==void 0&&D&&D.setTransform(k.transform),k.unitTransforms!==void 0&&D&&D.setVisibility(M.visible&&(k.unitTransforms===null||k.unitTransforms.isIdentity))}function q(k){I=k}function N(){D&&D.destroy()}return{label:m,get groupCount(){return D?D.groupCount:0},get props(){return E},get params(){return R},get state(){return M},get theme(){return I},get geometryVersion(){return T.version},renderObjects:x,updated:S,createOrUpdate:B,setState:U,setTheme:q,getLoci:w,getAllLoci:O,eachLocation:F,mark:L,destroy:N}}return $P}var rr={},Ar={},XA={},UH;function Er(){return UH||(UH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultCommonSurfaceProps=e.CommonSurfaceParams=e.UnitKindOptions=e.UnitKindInfo=void 0,e.checkSphereImpostorSupport=p,e.checkCylinderImpostorSupport=m,e.getResidueLoci=v,e.getAltResidueLoci=b,e.getAltResidueLociFromId=P,e.createUnitsTransform=C,e.includesUnitKind=l,e.getVolumeSliceInfo=T,e.ensureReasonableResolution=A,e.getConformation=x,e.getUnitConformationAndRadius=R,e.getStructureConformationAndRadius=E,e.isHydrogen=B,e.isH=w,e.isTrace=O;const t=Ke(),r=Ge(),n=kl(),i=at(),c=gt(),o=ma(),s=Vt(),h=Ne(),f=wT(),y=rt(),_=rZ(),g=Ct(),a=r.Mat4.toArray;let d=!1;function p(F){if(!F)g.isDebugMode&&!d&&(console.warn('WebGL required for "sphere impostors". Falling back to "sphere mesh".'),d=!0);else if(!F.extensions.fragDepth||!F.extensions.textureFloat){if(g.isDebugMode&&!d){const L=[];F.extensions.fragDepth||L.push("fragDepth"),F.extensions.textureFloat||L.push("textureFloat"),console.warn(`Missing "${L.join('", "')}" extensions required for "sphere impostors". Falling back to "sphere mesh".`),d=!0}}else return!0;return!1}let u=!1;function m(F){if(!F)g.isDebugMode&&!u&&(console.warn('WebGL required for "cylinder impostors". Falling back to "cylinder mesh".'),u=!0);else{if(F.extensions.fragDepth)return!0;
7083if(g.isDebugMode&&!u){const L=[];F.extensions.fragDepth||L.push("fragDepth"),console.warn(`Missing "${L.join('", "')}" extensions required for "cylinder impostors". Falling back to "cylinder mesh".`),u=!0}}return!1}function v(F,L,U){const{elements:q,model:N}=L;if(i.OrderedSet.indexOf(q,U)!==-1){const{index:k,offsets:j}=N.atomicHierarchy.residueAtomSegments,H=k[U],G=[];for(let W=j[H],X=j[H+1];W<X;++W){const Y=i.OrderedSet.indexOf(q,W);Y!==-1&&G.push(Y)}const z=i.OrderedSet.ofSortedArray(i.SortedArray.ofSortedArray(G));return t.StructureElement.Loci(F,[{unit:L,indices:z}])}return c.EmptyLoci}function b(F,L,U){const{elements:q,model:N}=L,{label_alt_id:k}=N.atomicHierarchy.atoms,j=k.value(U);if(i.OrderedSet.indexOf(q,U)!==-1){const{index:H}=N.atomicHierarchy.residueAtomSegments,G=H[U];return P(F,L,G,j)}return t.StructureElement.Loci(F,[])}function P(F,L,U,q){const{elements:N,model:k}=L,{label_alt_id:j}=k.atomicHierarchy.atoms,{offsets:H}=k.atomicHierarchy.residueAtomSegments,G=[];for(let W=H[U],X=H[U+1];W<X;++W){const Y=i.OrderedSet.indexOf(N,W);if(Y!==-1){const K=j.value(W);(q===K||K==="")&&G.push(Y)}}const z=i.OrderedSet.ofSortedArray(i.SortedArray.ofSortedArray(G));return t.StructureElement.Loci(F,[{unit:L,indices:z}])}function C(F,L,U,q,N,k){const{child:j}=F.structure,H=L&&j?F.group.units.filter(X=>j.unitMap.has(X.id)):F.group.units,G=H.length,z=G*16,W=k&&k.aTransform.ref.value.length>=z?k.aTransform.ref.value:new Float32Array(z);for(let X=0;X<G;X++)a(H[X].conformation.operator.matrix,W,X*16);return(0,n.createTransform)(W,G,U,q,N,k)}e.UnitKindInfo={atomic:{},spheres:{},gaussians:{}},e.UnitKindOptions=h.ParamDefinition.objectToOptions(e.UnitKindInfo);function l(F,L){for(let U=0,q=F.length;U<q;++U)if(t.Unit.isAtomic(L)&&F[U]==="atomic"||t.Unit.isSpheres(L)&&F[U]==="spheres"||t.Unit.isGaussians(L)&&F[U]==="gaussians")return!0;return!1}const S=5e8;function T(F,L,U=S){const q=y.Box3D.size((0,r.Vec3)(),F);r.Vec3.ceil(q,q),q.sort((H,G)=>G-H);const N=Math.floor(Math.cbrt(U)*Math.cbrt(U)),k=q[0]*q[1],j=Math.ceil(k/(L*L));return{area:k,areaCells:j,maxAreaCells:N}}function A(F,L,U=S){const{area:q,areaCells:N,maxAreaCells:k}=T(F,L.resolution,U),j=N>k?Math.sqrt(q/k):L.resolution;return{...L,resolution:j}}function x(F){switch(F.kind){case t.Unit.Kind.Atomic:return F.model.atomicConformation;case t.Unit.Kind.Spheres:return F.model.coarseConformation.spheres;case t.Unit.Kind.Gaussians:return F.model.coarseConformation.gaussians}}e.CommonSurfaceParams={ignoreHydrogens:h.ParamDefinition.Boolean(!1,{description:"Whether or not to include hydrogen atoms in the surface calculation."}),ignoreHydrogensVariant:h.ParamDefinition.Select("all",h.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:h.ParamDefinition.Boolean(!1,{description:"Whether or not to only use trace atoms in the surface calculation."}),includeParent:h.ParamDefinition.Boolean(!1,{description:"Include elements of the parent structure in surface calculation to get a surface patch of the current structure. Note that this disables GPU support."})},e.DefaultCommonSurfaceProps=h.ParamDefinition.getDefaultValues(e.CommonSurfaceParams);const M=(0,r.Vec3)();function D(F,L,U,q){return r.Vec3.squaredDistance(r.Vec3.set(M,F,L,U),q)}function V(F,L,U){let q=0;const N=L.length;for(let k=0,j=U.length;k<j;++k){const H=i.SortedArray.indexOfInRange(L,U[k],q,N);H===-1?F[k]=-2:(F[k]=H,q=H)}}function R(F,L,U,q){const{ignoreHydrogens:N,ignoreHydrogensVariant:k,traceOnly:j,includeParent:H}=q,G=H?F.root.unitMap.get(L.id):L,z=H&&G!==L,{x:W,y:X,z:Y}=x(G),{elements:K}=G,{center:Q,radius:J}=L.boundary.sphere,ae=(4+1.5)*2,te=(J+ae)*(J+ae);let ne,$;if(N||j||z){const ce=[],ue=[];for(let pe=0,he=K.length;pe<he;++pe){const fe=K[pe];N&&B(F,G,fe,k)||j&&!O(G,fe)||z&&D(W[fe],X[fe],Y[fe],Q)>te||(ce.push(fe),ue.push(pe))}ne=i.SortedArray.ofSortedArray(ce),$=ue}else ne=K,$=(0,s.fillSerial)(new Int32Array(ne.length));H&&G!==L&&V($,L.elements,ne);const ie={indices:ne,x:W,y:X,z:Y,id:$},Z=z?(0,f.getBoundary)(ie):L.boundary,re=t.StructureElement.Location.create(F,G);return{position:ie,boundary:Z,radius:ce=>(re.element=ce,U.size(re))}}function E(F,L,U){const{ignoreHydrogens:q,ignoreHydrogensVariant:N,traceOnly:k,includeParent:j}=U,H=j&&!!F.parent,G=t.StructureElement.Location.create(F.root),{center:z,radius:W}=F.boundary.sphere,X=(4+1.5)*2,Y=(W+X)*(W+X);let K,Q,J,ae,te,ne;if(q||k||H){const{getSerialIndex:re}=F.serialMapping,oe=H?F.root.units:F.units,ce=[],ue=[],pe=[],he=[],fe=[];for(let de=0,ge=oe.length;de<ge;++de){const Ce=oe[de],{elements:ve,conformation:le}=Ce,me=F.unitMap.get(Ce.id);G.unit=Ce;for(let ee=0,se=ve.length;ee<se;++ee){const ye=ve[ee];if(q&&B(F,Ce,ye,N)||k&&!O(Ce,ye))continue;const Se=le.x(ye),Ae=le.y(ye),_e=le.z(ye);H&&D(Se,Ae,_e,z)>Y||(ce.push(Se),ue.push(Ae),pe.push(_e),G.element=ye,he.push(L.size(G)),H?(me?i.SortedArray.indexOf(me.elements,ye):-1)===-1?fe.push(-2):fe.push(re(me,ye)):fe.push(re(Ce,ye)))}}K=ce,Q=ue,J=pe,ae=he,te=fe,ne=i.OrderedSet.ofRange(0,te.length)}else{const{elementCount:re}=F,oe=new Float32Array(re),ce=new Float32Array(re),ue=new Float32Array(re),pe=new Float32Array(re);for(let he=0,fe=0,de=F.units.length;he<de;++he){const ge=F.units[he],{elements:Ce,conformation:ve}=ge;G.unit=ge;for(let le=0,me=Ce.length;le<me;++le){const ee=Ce[le],se=fe+le;oe[se]=ve.x(ee),ce[se]=ve.y(ee),ue[se]=ve.z(ee),G.element=ee,pe[se]=L.size(G)}
7083fe+=Ce.length}K=oe,Q=ce,J=ue,ae=pe,te=(0,s.fillSerial)(new Uint32Array(re)),ne=i.OrderedSet.ofRange(0,te.length)}const $={indices:ne,x:K,y:Q,z:J,id:te},ie=H?(0,f.getBoundary)($):F.boundary;return{position:$,boundary:ie,radius:re=>ae[re]}}const I=o.AtomicNumbers.H;function B(F,L,U,q){if(t.Unit.isCoarse(L)||L.model.atomicHierarchy.derived.atom.atomicNumber[U]!==I)return!1;if(q==="all")return!0;const N=(0,_.hasPolarNeighbour)(F,L,i.SortedArray.indexOf(L.elements,U));return!!(N&&q==="polar"||!N&&q==="non-polar")}function w(F,L){return F[L]===I}function O(F,L){if(t.Unit.isCoarse(F))return!0;const U=F.model.atomicHierarchy.atoms.label_atom_id.value(L);return U==="CA"||U==="BB"||U==="P"}})(XA)),XA}var jH;function Qf(){if(jH)return Ar;jH=1,Object.defineProperty(Ar,"__esModule",{value:!0}),Ar.StructureImageParams=Ar.StructureTextureMeshParams=Ar.StructureDirectVolumeParams=Ar.StructureTextParams=Ar.StructureLinesParams=Ar.StructurePointsParams=Ar.StructureCylindersParams=Ar.StructureSpheresParams=Ar.StructureMeshParams=Ar.StructureParams=void 0,Ar.getUnitKindsParam=_;
7083const e=Hf(),t=kn(),r=Rt(),n=ic(),i=ro(),c=no(),o=ya(),s=Fl(),h=Wf(),f=Ne(),y=Er();function _(g){return f.ParamDefinition.MultiSelect(g,y.UnitKindOptions,{description:"For which kinds of units/chains to show the representation visuals."})}return Ar.StructureParams={unitKinds:_(["atomic","spheres"]),includeParent:f.ParamDefinition.Boolean(!1,{isHidden:!0})},Ar.StructureMeshParams={...r.Mesh.Params},Ar.StructureSpheresParams={...i.Spheres.Params},Ar.StructureCylindersParams={...c.Cylinders.Params},Ar.StructurePointsParams={...n.Points.Params},Ar.StructureLinesParams={...t.Lines.Params},Ar.StructureTextParams={...o.Text.Params},Ar.StructureDirectVolumeParams={...e.DirectVolume.Params},Ar.StructureTextureMeshParams={...s.TextureMesh.Params},Ar.StructureImageParams={...h.Image.Params},Ar}var GH;function Br(){if(GH)return rr;GH=1,Object.defineProperty(rr,"__esModule",{value:!0}),rr.ComplexImageParams=rr.ComplexTextureMeshParams=rr.ComplexDirectVolumeParams=rr.ComplexTextParams=rr.ComplexLinesParams=rr.ComplexPointsParams=rr.ComplexCylindersParams=rr.ComplexSpheresParams=rr.ComplexMeshParams=void 0,rr.ComplexVisual=R,rr.ComplexMeshVisual=E,rr.ComplexSpheresVisual=I,rr.ComplexCylindersVisual=B,rr.ComplexPointsVisual=w,rr.ComplexLinesVisual=O,rr.ComplexTextVisual=F,rr.ComplexDirectVolumeVisual=L,rr.ComplexTextureMeshVisual=U,rr.ComplexImageVisual=q;const e=Ul(),t=Ke(),r=Ll(),n=ea(),i=kl(),c=ds(),o=_n(),s=gt(),h=at(),f=ql(),y=ms(),_=et(),g=ls(),a=wi(),d=cn(),p=Rt(),u=no(),m=kn(),v=ya(),b=ps(),P=Hf(),C=li(),l=Tt(),S=Qf(),T=Fl(),A=Gt(),x=ro(),M=ic(),D=Wf();function V(N,k,j,H,G,z){const{createValues:W,createRenderableState:X}=r.Geometry.getUtils(k),Y=(0,i.createIdentityTransform)(),K=W(k,Y,j,H,G),Q=X(G);return(0,c.createRenderObject)(k.kind,K,Q,z)}function R(N,k){const{defaultProps:j,createGeometry:H,createLocationIterator:G,getLoci:z,eachLocation:W,setUpdateState:X,mustRecreate:Y,processValues:K,dispose:Q}=N,{updateValues:J,updateBoundingSphere:ae,updateRenderableState:te,createPositionIterator:ne}=N.geometryUtils,$=f.VisualUpdateState.create(),ie={loci:s.EmptyLoci,action:d.MarkerAction.None,status:-1};let Z,re,oe,ce,ue=Object.assign({},j),pe=n.Theme.createEmpty(),he,fe,de=-1,ge,Ce;function ve(Se,Ae,_e){if(!_e&&!he)throw new Error("missing structure");if(re=Object.assign({},ue,Ae),oe=Se,ce=_e,f.VisualUpdateState.reset($),!Z||!he){$.createNew=!0,$.createGeometry=!0;return}X($,re,ue,oe,pe,ce,he),t.Structure.areEquivalent(ce,he)||($.createGeometry=!0),t.Structure.areHierarchiesEqual(ce,he)||($.updateTransform=!0,$.createGeometry=!0),y.ColorTheme.areEqual(Se.color,pe.color)||($.updateColor=!0),b.SizeTheme.areEqual(Se.size,pe.size)||($.updateSize=!0),(0,_.deepEqual)(re.unitKinds,ue.unitKinds)||($.createGeometry=!0),he.child!==ce.child&&($.createGeometry=!0,$.updateTransform=!0),re.instanceGranularity!==ue.instanceGranularity&&($.updateTransform=!0),$.updateSize&&!("uSize"in Z.values)&&($.createGeometry=!0),$.createGeometry&&($.updateColor=!0,$.updateSize=!0)}function le(Se){if($.createNew)if(ge=G(ce,re),Se)Z=V(ce,Se,ge,oe,re,k),Ce=ne(Se,Z.values);else throw new Error("expected geometry to be given");else{if(!Z)throw new Error("expected renderObject to be available");if(($.updateColor||$.updateSize||$.updateTransform)&&(ge=G(ce,re)),$.updateTransform){const{instanceCount:Ae,groupCount:_e}=ge;(0,l.resolveInstanceGranularity)(re.instanceGranularity,_e,Ae)?(0,C.createMarkers)(Ae,"instance",Z.values):(0,C.createMarkers)(Ae*_e,"groupInstance",Z.values)}if($.createGeometry)if(Se)_.ValueCell.updateIfChanged(Z.values.drawCount,r.Geometry.getDrawCount(Se)),_.ValueCell.updateIfChanged(Z.values.uVertexCount,r.Geometry.getVertexCount(Se)),_.ValueCell.updateIfChanged(Z.values.uGroupCount,ge.groupCount);else throw new Error("expected geometry to be given");($.updateTransform||$.createGeometry)&&(ae(Z.values,Se||fe),Ce=ne(fe,Z.values)),$.updateSize&&"uSize"in Z.values&&(0,g.createSizes)(ge,Ce,oe.size,Z.values),$.updateColor&&(0,a.createColors)(ge,Ce,oe.color,Z.values),J(Z.values,re),te(Z.state,re)}ue=re,pe=oe,he=ce,Se&&(fe=Se,de+=1)}function me(Se){return!!((0,s.isEveryLoci)(Se)||t.Structure.isLoci(Se)&&t.Structure.areRootsEquivalent(Se.structure,he)||t.StructureElement.Loci.is(Se)&&t.Structure.areRootsEquivalent(Se.structure,he)&&t.StructureElement.Loci.isWholeStructure(Se))}function ee(Se,Ae,_e){let be=!1;return!t.StructureElement.Loci.is(Se)&&!t.Bond.isLoci(Se)||!t.Structure.areEquivalent(Se.structure,Ae)?!1:(_e(h.Interval.ofSingleton(0))&&(be=!0),be)}
7083function se(Se,Ae,_e){const be=(0,l.resolveInstanceGranularity)(ue.instanceGranularity,ge.groupCount,ge.instanceCount);return me(Se)?Ae(be?h.Interval.ofBounds(0,ge.instanceCount):h.Interval.ofBounds(0,ge.groupCount*ge.instanceCount)):be?ee(Se,he,Ae):W(Se,he,Ae,_e)}function ye(Se){Z&&K?.(Z.values,fe,ue,pe,Se.webgl)}return{get groupCount(){return ge?ge.count:0},get renderObject(){return ge&&ge.count?Z:void 0},get geometryVersion(){return de},createOrUpdate(Se,Ae,_e={},be){if(ve(Ae,_e,be||he),$.createGeometry){const xe=H(Se,ce,oe,re,fe);if((0,A.isPromiseLike)(xe))return xe.then(we=>{le(we),ye(Se)});le(xe)}else le();ye(Se)},getLoci(Se){return Z?((0,l.resolveInstanceGranularity)(ue.instanceGranularity,ge.groupCount,ge.instanceCount)&&(Se={...Se,groupId:o.PickingId.Null}),z(Se,he,Z.id)):s.EmptyLoci},eachLocation(Se){for(ge.reset();ge.hasNext;){const{location:Ae,isSecondary:_e}=ge.move();Se(Ae,_e)}},mark(Se,Ae){return e.Visual.mark(Z,Se,Ae,se,ie)},setVisibility(Se){e.Visual.setVisibility(Z,Se)},setAlphaFactor(Se){e.Visual.setAlphaFactor(Z,Se)},setPickable(Se){e.Visual.setPickable(Z,Se)},setColorOnly(Se){e.Visual.setColorOnly(Z,Se)},setTransform(Se,Ae){e.Visual.setTransform(Z,Se,Ae)},setOverpaint(Se,Ae){const _e={geometry:fe,props:ue,webgl:Ae};e.Visual.setOverpaint(Z,Se,se,!0,_e)},setTransparency(Se,Ae){const _e={geometry:fe,props:ue,webgl:Ae};e.Visual.setTransparency(Z,Se,se,!0,_e)},setEmissive(Se,Ae){const _e={geometry:fe,props:ue,webgl:Ae};e.Visual.setEmissive(Z,Se,se,!0,_e)},setSubstance(Se,Ae){const _e={geometry:fe,props:ue,webgl:Ae};e.Visual.setSubstance(Z,Se,se,!0,_e)},setClipping(Se){e.Visual.setClipping(Z,Se,se,!0)},setWiggle(Se,Ae){e.Visual.setWiggle(Z,Se,se,!0)},setThemeStrength(Se){e.Visual.setThemeStrength(Z,Se)},destroy(){Q?.(fe),Z&&(Z.state.disposed=!0,Z=void 0)},mustRecreate:Y}}rr.ComplexMeshParams={...S.StructureMeshParams,...S.StructureParams};function E(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:p.Mesh.Utils},k)}rr.ComplexSpheresParams={...S.StructureSpheresParams,...S.StructureParams};function I(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:x.Spheres.Utils},k)}rr.ComplexCylindersParams={...S.StructureCylindersParams,...S.StructureParams};function B(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:u.Cylinders.Utils},k)}rr.ComplexPointsParams={...S.StructurePointsParams,...S.StructureParams};function w(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:M.Points.Utils},k)}rr.ComplexLinesParams={...S.StructureLinesParams,...S.StructureParams};function O(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:m.Lines.Utils},k)}rr.ComplexTextParams={...S.StructureTextParams,...S.StructureParams};function F(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0),H.background!==G.background&&(j.createGeometry=!0),H.backgroundMargin!==G.backgroundMargin&&(j.createGeometry=!0),H.tether!==G.tether&&(j.createGeometry=!0),H.tetherLength!==G.tetherLength&&(j.createGeometry=!0),H.tetherBaseWidth!==G.tetherBaseWidth&&(j.createGeometry=!0),H.attachment!==G.attachment&&(j.createGeometry=!0),H.fontFamily!==G.fontFamily&&(j.createGeometry=!0),H.fontQuality!==G.fontQuality&&(j.createGeometry=!0),H.fontStyle!==G.fontStyle&&(j.createGeometry=!0),H.fontVariant!==G.fontVariant&&(j.createGeometry=!0),H.fontWeight!==G.fontWeight&&(j.createGeometry=!0)},geometryUtils:v.Text.Utils},k)}rr.ComplexDirectVolumeParams={...S.StructureDirectVolumeParams,...S.StructureParams};function L(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:P.DirectVolume.Utils},k)}rr.ComplexTextureMeshParams={...S.StructureTextureMeshParams,...S.StructureParam
7083s};function U(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:T.TextureMesh.Utils},k)}rr.ComplexImageParams={...S.StructureImageParams,...S.StructureParams};function q(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:D.Image.Utils},k)}return rr}var XP={},tl={},zH;function Rse(){if(zH)return tl;zH=1,Object.defineProperty(tl,"__esModule",{value:!0}),tl.HashMap=void 0,tl.DefaultMap=e,tl.arrayMapAdd=t;function e(n){const i=new Map;return i.getDefault=c=>{if(i.has(c))return i.get(c);const o=n();return i.set(c,o),o},i}function t(n,i,c){const o=n.get(i);o?o.push(c):n.set(i,[c])}class r{set(i,c){const o=this.hashCode(i);let s=this.buckets.get(o);s||(s=[],this.buckets.set(o,s));for(let h=0;h<s.length;h++)if(this.areEqual(s[h].key,i)){s[h].value=c;return}s.push({key:i,value:c})}get(i){const c=this.hashCode(i),o=this.buckets.get(c);if(o){for(const s of o)if(this.areEqual(s.key,i))return s.value}}delete(i){const c=this.hashCode(i),o=this.buckets.get(c);if(!o)return!1;for(let s=0;s<o.length;s++)if(this.areEqual(o[s].key,i))return o.splice(s,1),o.length===0&&this.buckets.delete(c),!0;return!1}forEach(i){for(const c of this.buckets.values())for(const o of c)i(o.value,o.key)}clear(){this.buckets.clear()}constructor(i,c){this.hashCode=i,this.areEqual=c,this.buckets=new Map}}return tl.HashMap=r,tl}var HH;function Sa(){if(HH)return XP;HH=1,Object.defineProperty(XP,"__esModule",{value:!0}),XP.UnitsRepresentation=C;const e=Ne(),t=Yr(),r=Lt(),n=Ke(),i=Rn(),c=ds(),o=ea(),s=nt(),h=gt(),f=cn(),y=US(),_=jS(),g=Ge(),a=at(),d=Yf(),p=zS(),u=HS(),m=WS(),v=Rse(),b=_t();function P(){return new v.HashMap(l=>(0,b.hash2)(l.hashCode,l.transformHash),n.Unit.SymmetryGroup.areInvariantElementsEqual)}function C(l,S,T,A){let x=0;const{webgl:M}=S,D=new i.Subject,V=(0,c.getNextMaterialId)(),R=[],E=new r.Representation.GeometryState,I=t.StructureRepresentationStateBuilder.create();let B=P(),w,O,F,L,U=o.Theme.createEmpty();function q(Y={},K){return K&&K!==w&&(F=T(S,K),L||(L=e.ParamDefinition.getDefaultValues(F))),L=Object.assign({},L,Y),s.Task.create("Creating or updating UnitsRepresentation",async Q=>{var J,ae,te;if(!w&&!K)throw new Error("missing structure");if(K&&!w){O=n.StructureSymmetry.computeChildAwareTransformGroups(K);for(let ne=0;ne<O.length;ne++){const $=O[ne],ie=A(V,K,L,M),Z=ie.createOrUpdate({webgl:M,runtime:Q},U,L,{group:$,structure:K});Z&&await Z,G(ie,$,I),B.set($,{visual:ie,group:$}),Q.shouldUpdate&&await Q.update({message:"Creating or updating UnitsVisual",current:ne,max:O.length})}}else if(K&&(!n.Structure.areUnitIdsAndIndicesEqual(K,w)||K.child!==w.child)){O=n.StructureSymmetry.computeChildAwareTransformGroups(K);const ne=B;B=P();for(let $=0;$<O.length;$++){const ie=O[$],Z=ne.get(ie);if(Z){let{visual:re}=Z;if(!((J=re.mustRecreate)===null||J===void 0)&&J.call(re,{group:ie,structure:K},L,M)){re.destroy(),re=A(V,K,L,M);const oe=re.createOrUpdate({webgl:M,runtime:Q},U,L,{group:ie,structure:K});oe&&await oe,G(re,ie,I)}else{const oe=re.createOrUpdate({webgl:M,runtime:Q},U,L,{group:ie,structure:K});oe&&await oe}if(B.set(ie,{visual:re,group:ie}),ne.delete(ie),re.renderObject){const oe=re.renderObject.values.tMarker.ref.value.array;(0,f.applyMarkerAction)(oe,a.Interval.ofBounds(0,oe.length),f.MarkerAction.RemoveHighlight)}}else{const re=A(V,K,L,M),oe=re.createOrUpdate({webgl:M,runtime:Q},U,L,{group:ie,structure:K});oe&&await oe,G(re,ie,I),B.set(ie,{visual:re,group:ie})}Q.shouldUpdate&&await Q.update({message:"Creating or updating UnitsVisual",current:$,max:O.length})}ne.forEach(({visual:$})=>{$.destroy()})}else if(K&&K!==w&&n.Structure.areUnitIdsAndIndicesEqual(K,w)){O=n.StructureSymmetry.computeChildAwareTransformGroups(K);for(let ne=0;ne<O.length;ne++){const $=O[ne],ie=B.get($);if(ie){let{visual:Z}=ie;if(!((ae=Z.mustRecreate)===null||ae===void 0)&&ae.call(Z,{group:$,structure:K},L,S.webgl)){Z.destroy(),Z=A(V,K,L,S.webgl),ie.visual=Z;const re=Z.createOrUpdate({webgl:M,runtime:Q},U,L,{group:$,structure:K}
7083);re&&await re,G(Z,$,I)}else{const re=Z.createOrUpdate({webgl:M,runtime:Q},U,L,{group:$,structure:K});re&&await re}ie.group=$}else throw new Error(`expected to find visual for hashCode ${$.hashCode}`);Q.shouldUpdate&&await Q.update({message:"Creating or updating UnitsVisual",current:ne,max:O.length})}}else{const ne=[];B.forEach($=>ne.push($));for(let $=0,ie=ne.length;$<ie;++$){let{visual:Z,group:re}=ne[$];if(!((te=Z.mustRecreate)===null||te===void 0)&&te.call(Z,{group:re,structure:w},L,S.webgl)){Z.destroy(),Z=A(V,w,L,M),ne[$].visual=Z;const oe=Z.createOrUpdate({webgl:M,runtime:Q},U,L,{group:re,structure:w});oe&&await oe,G(Z,re,I)}else{const oe=Z.createOrUpdate({webgl:M,runtime:Q},U,L);oe&&await oe}Q.shouldUpdate&&await Q.update({message:"Creating or updating UnitsVisual",current:$,max:ie})}}R.length=0,B.forEach(({visual:ne})=>{ne.renderObject&&(R.push(ne.renderObject),E.add(ne.renderObject.id,ne.geometryVersion))}),E.snapshot(),K&&(w=K),D.next(x++)})}function N(Y){let K=h.EmptyLoci;return B.forEach(({visual:Q})=>{const J=Q.getLoci(Y);(0,h.isEmptyLoci)(J)||(K=J)}),K}function k(Y){B.forEach(({visual:K})=>{K.eachLocation(Y)})}function j(){var Y;return[n.Structure.Loci((Y=w.child)!==null&&Y!==void 0?Y:w)]}function H(Y,K){if(!w||!f.MarkerActions.is(I.markerActions,K))return!1;if(n.Structure.isLoci(Y)||n.StructureElement.Loci.is(Y)||n.Bond.isLoci(Y)){if(!n.Structure.areRootsEquivalent(Y.structure,w))return!1;Y=h.Loci.remap(Y,w),(n.Structure.isLoci(Y)||n.StructureElement.Loci.is(Y)&&n.StructureElement.Loci.isWholeStructure(Y))&&(Y=h.EveryLoci)}else if(!(0,h.isEveryLoci)(Y)&&!(0,h.isDataLoci)(Y))return!1;if(h.Loci.isEmpty(Y))return!1;let Q=!1;return B.forEach(({visual:J})=>{Q=J.mark(Y,K)||Q}),Q}function G(Y,K,Q){const{visible:J,alphaFactor:ae,pickable:te,overpaint:ne,transparency:$,emissive:ie,substance:Z,clipping:re,wiggle:oe,themeStrength:ce,transform:ue,unitTransforms:pe}=Q;J!==void 0&&Y.setVisibility(J),ae!==void 0&&Y.setAlphaFactor(ae),te!==void 0&&Y.setPickable(te),ne!==void 0&&Y.setOverpaint(ne,M),$!==void 0&&Y.setTransparency($,M),ie!==void 0&&Y.setEmissive(ie,M),Z!==void 0&&Y.setSubstance(Z,M),re!==void 0&&Y.setClipping(re),oe!==void 0&&Y.setWiggle(oe,M),ce!==void 0&&Y.setThemeStrength(ce),ue!==void 0&&(ue!==I.transform||!g.Mat4.areEqual(ue,I.transform,g.EPSILON))&&Y.setTransform(ue),pe!==void 0&&(pe?Y.setTransform(void 0,pe.getSymmetryGroupTransforms(K)):pe!==I.unitTransforms&&Y.setTransform(void 0,null))}function z(Y){const{visible:K,alphaFactor:Q,pickable:J,overpaint:ae,transparency:te,emissive:ne,substance:$,clipping:ie,wiggle:Z,themeStrength:re,transform:oe,unitTransforms:ce,syncManually:ue,markerActions:pe}=Y,he={};K!==void 0&&(he.visible=K),Q!==void 0&&(he.alphaFactor=Q),J!==void 0&&(he.pickable=J),ae!==void 0&&w&&(he.overpaint=y.Overpaint.remap(ae,w)),te!==void 0&&w&&(he.transparency=_.Transparency.remap(te,w)),ne!==void 0&&w&&(he.emissive=u.Emissive.remap(ne,w)),$!==void 0&&w&&(he.substance=p.Substance.remap($,w)),ie!==void 0&&w&&(he.clipping=d.Clipping.remap(ie,w)),Z!==void 0&&w&&(he.wiggle=m.Wiggle.remap(Z,w)),re!==void 0&&(he.themeStrength=re),oe!==void 0&&!g.Mat4.areEqual(oe,I.transform,g.EPSILON)&&(he.transform=oe),(ce!==I.unitTransforms||ce?.version!==I.unitTransformsVersion)&&(he.unitTransforms=ce,I.unitTransformsVersion=ce?ce?.version:-1),ue!==void 0&&(he.syncManually=ue),pe!==void 0&&(he.markerActions=pe),B.forEach(({visual:fe,group:de})=>G(fe,de,he)),t.StructureRepresentationStateBuilder.update(I,he)}function W(Y){U=Y}function X(){B.forEach(({visual:Y})=>Y.destroy()),B.clear()}return{label:l,get groupCount(){let Y=0;return B.forEach(({visual:K})=>{K.renderObject&&(Y+=K.groupCount)}),Y},get geometryVersion(){return E.version},get props(){return L},get params(){return F},get state(){return I},get theme(){return U},renderObjects:R,updated:D,createOrUpdate:q,setState:z,setTheme:W,getLoci:N,getAllLoci:j,eachLocation:k,mark:H,destroy:X}}return XP}var nr={},WH;function mr(){if(WH)return nr;WH=1,Object.defineProperty(nr,"__esModule",{value:!0}),nr.UnitsImageParams=nr.UnitsTextureMeshParams=nr.UnitsDirectVolumeParams=nr.UnitsTextParams=nr.UnitsLinesParams=nr.UnitsPointsParams=nr.UnitsCylindersParams=nr.UnitsSpheresParams=nr.UnitsMeshParams=void 0,nr.UnitsVisual=R,nr.UnitsMeshVisual=E,nr.UnitsSpheresVisual=I,nr.UnitsCylindersVisual=B,nr.UnitsPointsVisual=w,nr.UnitsLinesVisual=O,nr.UnitsTextVisual=F,nr.UnitsDirectVolumeVisual=L,nr.UnitsTextureMeshVisual=U,nr.Units
7083ImageVisual=q;const e=Ke(),t=Ul(),r=Ll(),n=ea(),i=Er(),c=ds(),o=_n(),s=gt(),h=at(),f=ql(),y=ms(),_=li(),g=Tt(),a=cn(),d=et(),p=ls(),u=wi(),m=Rt(),v=ps(),b=ro(),P=no(),C=ic(),l=kn(),S=ya(),T=Hf(),A=Fl(),x=Wf(),M=Qf(),D=Gt();function V(N,k,j,H,G,z){const{createValues:W,createRenderableState:X}=r.Geometry.getUtils(k),Y=(0,i.createUnitsTransform)(N,G.includeParent,k.boundingSphere,G.cellSize,G.batchSize),K=W(k,Y,j,H,G),Q=X(G);return(0,c.createRenderObject)(k.kind,K,Q,z)}function R(N,k){const{defaultProps:j,createGeometry:H,createLocationIterator:G,getLoci:z,eachLocation:W,setUpdateState:X,initUpdateState:Y,mustRecreate:K,processValues:Q,dispose:J}=N,{createEmpty:ae,updateValues:te,updateBoundingSphere:ne,updateRenderableState:$,createPositionIterator:ie}=N.geometryUtils,Z=f.VisualUpdateState.create(),re={loci:s.EmptyLoci,action:a.MarkerAction.None,status:-1};let oe,ce=Object.assign({},j),ue=n.Theme.createEmpty(),pe,he,fe,de,ge,Ce=-1,ve,le;function me(be,xe,we){if(!we&&!de)throw new Error("missing structureGroup");if(ce=xe,ue=be,pe=we,f.VisualUpdateState.reset(Z),!oe||!de){Y?.(Z,ce,ue,pe),Z.createNew=!0,Z.createGeometry=!0;return}X(Z,ce,he,ue,fe,pe,de),e.Structure.areHierarchiesEqual(de.structure,pe.structure)||(Z.updateTransform=!0,Z.updateColor=!0,Z.updateSize=!0),y.ColorTheme.areEqual(ue.color,fe.color)||(Z.updateColor=!0),v.SizeTheme.areEqual(ue.size,fe.size)||(Z.updateSize=!0),de.structure.child!==pe.structure.child&&(Z.createGeometry=!0,Z.updateTransform=!0),(ce.instanceGranularity!==he.instanceGranularity||ce.cellSize!==he.cellSize||ce.batchSize!==he.batchSize)&&(Z.updateTransform=!0),(0,d.deepEqual)(ce.unitKinds,he.unitKinds)||(Z.createGeometry=!0),pe.group.transformHash!==de.group.transformHash&&(pe.group.units.length!==de.group.units.length||Z.updateColor?Z.updateTransform=!0:Z.updateMatrix=!0);const Be=pe.group.units[0],Me=de.group.units[0];e.Unit.areOperatorsEqual(Be,Me)||(Z.updateTransform=!0),e.Unit.areConformationsEqual(Be,Me)||(Z.createGeometry=!0),Z.updateTransform&&(Z.updateMatrix=!0),Z.updateSize&&!("uSize"in oe.values)&&(Z.createGeometry=!0),(Z.createGeometry||Z.updateTransform)&&(de.structure.hashCode!==pe.structure.hashCode&&(Z.updateColor=!0,Z.updateSize=!0),(ue.color.granularity.startsWith("vertex")||oe.values.dColorType.ref.value.startsWith("vertex")||ue.color.granularity.startsWith("volume")||oe.values.dColorType.ref.value.startsWith("volume"))&&(Z.updateColor=!0))}function ee(be){if(Z.createNew)if(ve=G(pe,ce),be)oe=V(pe,be,ve,ue,ce,k),le=ie(be,oe.values);else throw new Error("expected geometry to be given");else{if(!oe)throw new Error("expected renderObject to be available");if((Z.updateColor||Z.updateSize||Z.updateTransform)&&(ve=G(pe,ce)),Z.updateTransform){const{instanceCount:xe,groupCount:we}=ve;(0,g.resolveInstanceGranularity)(ce.instanceGranularity,we,xe)?(0,_.createMarkers)(xe,"instance",oe.values):(0,_.createMarkers)(xe*we,"groupInstance",oe.values)}if(Z.updateMatrix&&((0,i.createUnitsTransform)(pe,ce.includeParent,be?.boundingSphere||oe.values.invariantBoundingSphere.ref.value,ce.cellSize,ce.batchSize,oe.values),"lodLevels"in oe.values&&d.ValueCell.update(oe.values.lodLevels,oe.values.lodLevels.ref.value)),Z.createGeometry)if(be)d.ValueCell.updateIfChanged(oe.values.drawCount,r.Geometry.getDrawCount(be)),d.ValueCell.updateIfChanged(oe.values.uVertexCount,r.Geometry.getVertexCount(be)),d.ValueCell.updateIfChanged(oe.values.uGroupCount,ve.groupCount);else throw new Error("expected geometry to be given");(Z.updateTransform||Z.createGeometry)&&(ne(oe.values,be||ge),le=ie(be||ge,oe.values)),Z.updateSize&&"uSize"in oe.values&&(0,p.createSizes)(ve,le,ue.size,oe.values),Z.updateColor&&(0,u.createColors)(ve,le,ue.color,oe.values),te(oe.values,ce),$(oe.state,ce)}he=ce,fe=ue,de=pe,be&&(ge=be,Ce+=1)}function se(be,xe,we,Be,Me,Re){return(0,i.includesUnitKind)(Me.unitKinds,xe)?H(be,xe,we,Be,Me,Re):ae(Re)}function ye(be){return!!((0,s.isEveryLoci)(be)||e.Structure.isLoci(be)&&e.Structure.areRootsEquivalent(be.structure,de.structure)||e.StructureElement.Loci.is(be)&&e.Structure.areRootsEquivalent(be.structure,de.structure)&&e.StructureElement.Loci.isWholeStructure(be))}function Se(be,xe,we){let Be=!1;if(e.Bond.isLoci(be)){const{structure:Me,group:Re}=xe;if(!e.Structure.areEquivalent(be.structure,Me))return!1;for(const Te of be.bonds){if(Te.aUnit!==Te.bUnit)continue;const Ve=Re.unitIndexMap.get(Te.aUnit.id);Ve!==void 0&&we(h.Interval.ofSingleton(Ve))&&(Be=!0)}}else if(e.StructureElement.Loci.is(be)){const{structure:Me,group:Re}=xe;if(!e.Structure.areEquivalent(be.structure,Me))return!1;for(const Te of be.elements){const Ve=Re.unitIndexMap.get(Te.unit.id);Ve!==void 0&&we(h.Interval.ofSingleton(Ve))&&(Be=!0)}}return Be}function Ae(be,xe,we){const Be=(0,g.resolveInstanceGranularity)(he.instanceGranularity,ve.groupCount,ve.instanceCount);return ye(be)?xe(Be?h.Interval.ofBounds(0,ve.instanceCount):h.Interval.ofBounds(0,ve.groupCount*ve.instanceCount)):Be?Se(be,de,xe):W(be,de,xe,we)}function _e(be){oe&&Q?.(oe.values,ge,he,fe,be.webgl)}return{get groupCount(){return ve?ve.count:0},get renderObject(){return ve&&ve.count?oe:void 0},get geometryVersion(){return Ce},createOrUpdate(be,xe,we,Be){if(me(xe,we,Be||de),Z.createGeometry){const Me=se(be,pe.group.units[0],pe.structure,ue,ce,ge);if((0,D.isPromiseLike)(Me))return Me.then(Re=>{ee(Re),_e(be)});ee(Me)}else ee();_e(be)},getLoci(be){return oe?((0,g.resolveInstanceGranularity)(he.instanceGranularity,ve.groupCount,ve.instanceCount)&&(be={...be,groupId:o.PickingId.Null}),z(be,de,oe.id)):s.EmptyLoci},eachLocation(be){for(ve.reset();ve.hasNext;){const{location:xe,isSecondary:we}=ve.move();be(xe,we)}},mark(be,xe){let we=!0;if(e.StructureElement.Loci.is(be)){we=!1;const{invariantId:Be}=de.group.units[0];for(const Me of be.elements)if(Me.unit.invariantId===Be){we=!0;break}}return we?t.Visual.mark(oe,be,xe,Ae,re):!1},setVisibility(be){t.Visual.setVisibility(oe,be)},setAlphaFactor(be){t.Visual.setAlphaFactor(oe,be)},setPickable(be){t.Visual.setPickable(oe,be)},setColorOnly(be){t.Visual.setColorOnly(oe,be)},setTransform(be,xe){t.Visual.setTransform(oe,be,xe)},setOverpaint(be,xe){const we={geometry:ge,props:he,webgl:xe};t.Visual.setOverpaint(oe,be,Ae,!0,we)},setTransparency(be,xe){const we={geometry:ge,props:he,webgl:xe};t.Visual.setTransparency(oe,be,Ae,!0,we)},setEmissive(be,xe){const we={geometry:ge,props:he,webgl:xe};t.Visual.setEmissive(oe,be,Ae,!0,we)},setSubstance(be,xe){const we={geometry:ge,props:he,webgl:xe};t.Visual.setSubstance(oe,be,Ae,!0,we)},setClipping(be){t.Visual.setClipping(oe,be,Ae,!0)},setWiggle(be,xe){t.Visual.setWiggle(oe,be,Ae,!0)},setThemeStrength(be){t.Visual.setThemeStrength(oe,be)},destroy(){J?.(ge),oe&&(oe.state.disposed=!0,oe=void 0)},mustRecreate:K}}nr.UnitsMeshParams={...M.StructureMeshParams,...M.StructureParam
7083s};function E(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:m.Mesh.Utils},k)}nr.UnitsSpheresParams={...M.StructureSpheresParams,...M.StructureParams};function I(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:b.Spheres.Utils},k)}nr.UnitsCylindersParams={...M.StructureCylindersParams,...M.StructureParams};function B(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:P.Cylinders.Utils},k)}nr.UnitsPointsParams={...M.StructurePointsParams,...M.StructureParams};function w(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:C.Points.Utils},k)}nr.UnitsLinesParams={...M.StructureLinesParams,...M.StructureParams};function O(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:l.Lines.Utils},k)}nr.UnitsTextParams={...M.StructureTextParams,...M.StructureParams};function F(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0),H.background!==G.background&&(j.createGeometry=!0),H.backgroundMargin!==G.backgroundMargin&&(j.createGeometry=!0),H.tether!==G.tether&&(j.createGeometry=!0),H.tetherLength!==G.tetherLength&&(j.createGeometry=!0),H.tetherBaseWidth!==G.tetherBaseWidth&&(j.createGeometry=!0),H.attachment!==G.attachment&&(j.createGeometry=!0),H.fontFamily!==G.fontFamily&&(j.createGeometry=!0),H.fontQuality!==G.fontQuality&&(j.createGeometry=!0),H.fontStyle!==G.fontStyle&&(j.createGeometry=!0),H.fontVariant!==G.fontVariant&&(j.createGeometry=!0),H.fontWeight!==G.fontWeight&&(j.createGeometry=!0)},geometryUtils:S.Text.Utils},k)}nr.UnitsDirectVolumeParams={...M.StructureDirectVolumeParams,...M.StructureParams};function L(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:T.DirectVolume.Utils},k)}nr.UnitsTextureMeshParams={...M.StructureTextureMeshParams,...M.StructureParams};function U(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:A.TextureMesh.Utils},k)}nr.UnitsImageParams={...M.StructureImageParams,...M.StructureParams};function q(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:x.Image.Utils},k)}return nr}var $H;function Yr(){return $H||($H=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.UnitsVisual=e.UnitsRepresentation=e.ComplexVisual=e.ComplexRepresentation=e.StructureRepresentationStateBuilder=void 0,e.StructureRepresentationProvider=r;const t=Lt();e.StructureRepresentationStateBuilder={create:()=>({...t.Representation.createState(),unitTransforms:null,unitTransformsVersion:-1}),update:(s,h)=>{t.Representation.updateState(s,h),h.unitTransforms!==void 0&&(s.unitTransforms=h.unitTransforms)}};function r(s){return s}var n=JS();Object.defineProperty(e,"ComplexRepresentation",{enumerable:!0,get:function(){return n.ComplexRepresentation}});var i=Br();Object.defineProperty(e,"ComplexVisual",{enumerable:!0,get:function(){return i.ComplexVisual}});var c=Sa();Object.defineProperty(e,"UnitsRepresentation",{enumerable:!0,get:function(){return c.UnitsRepresentation}});var o=mr();Object.defineProperty(e,"UnitsVisual",{enumerable:!0,get:function(){return o.UnitsVisual}})})($A)),$A}var KA={},YA={},Mb={},XH;function qw(){if(XH)return Mb;XH=1,Object.defineProperty(Mb,"__esModule",{value:!0}),Mb.CylindersBuilder=void 0;const e=_t(),t=no(),r=Ge(),n=(0,r.Vec3)(),i=(0,r.Vec3)(),c=(0,r.Vec3)(),o=e.ChunkedArray.add,s=e.ChunkedArray.add3;var h;(function(y){function _(g=2048,a=1024,d){const p=e.ChunkedArray.create(Float32Array,1,a,d?d.groupBuffer.ref.value:g),u=e.ChunkedArray.create(Float32Array,3,a,d?d.startBuffer.ref.value:g),m=e.ChunkedArray.create(Float32Array,3,a,d?d.endBuffer.ref.value:g),v=e.ChunkedArray.create(Float32Array,1,a,d?d.scaleBuffer.ref.value:g),b=e.ChunkedArray.create(Float32Array,1,a,d?d.capBuffer.ref.value:g),P=e.ChunkedArray.create(Float32Array,1,a,d?d.colorModeBuffer.ref.value:g),C=(S,T,A,x,M,D,V,R,E,I,B)=>{for(let w=0;w<6;++w)s(u,S,T,A),s(m,x,M,D),o(p,B),o(v,V),o(b,(R?1:0)+(E?2:0)),o(P,I)},l=(S,T,A,x,M,D,V,R,E)=>{const I=r.Vec3.distance(S,T),B=A%2!==0,w=Math.floor((A+1)/2),O=I/(A+.5);let F=2;
7083r.Vec3.setMagnitude(c,r.Vec3.sub(c,T,S),O),r.Vec3.copy(n,S);for(let L=0;L<w;++L)r.Vec3.add(n,n,c),B&&L===w-1?(r.Vec3.copy(i,T),V||(D=!1)):r.Vec3.add(i,n,c),R&&(F=r.Vec3.distance(S,i)/(I*2)),C(n[0],n[1],n[2],i[0],i[1],i[2],x,M,D,F,E),r.Vec3.add(n,n,c)};return{add:C,addFixedCountDashes:l,addFixedLengthDashes:(S,T,A,x,M,D,V,R)=>{const E=r.Vec3.distance(S,T);l(S,T,E/A,x,M,D,!0,V,R)},getCylinders:()=>{const S=p.elementCount/6,T=e.ChunkedArray.compact(p,!0),A=e.ChunkedArray.compact(u,!0),x=e.ChunkedArray.compact(m,!0),M=e.ChunkedArray.compact(v,!0),D=e.ChunkedArray.compact(b,!0),V=e.ChunkedArray.compact(P,!0),R=d&&S<=d.cylinderCount?d.mappingBuffer.ref.value:new Float32Array(S*18),E=d&&S<=d.cylinderCount?d.indexBuffer.ref.value:new Uint32Array(S*12);return(!d||S>d.cylinderCount)&&f(S,R,E),t.Cylinders.create(R,E,T,A,x,M,D,V,S,d)}}}y.create=_})(h||(Mb.CylindersBuilder=h={}));function f(y,_,g){for(let a=0;a<y;++a){const d=a*18;_[d]=-1,_[d+1]=1,_[d+2]=-1,_[d+3]=-1,_[d+4]=-1,_[d+5]=-1,_[d+6]=1,_[d+7]=1,_[d+8]=-1,_[d+9]=1,_[d+10]=1,_[d+11]=1,_[d+12]=1,_[d+13]=-1,_[d+14]=-1,_[d+15]=1,_[d+16]=-1,_[d+17]=1}for(let a=0;a<y;++a){const d=a*6,p=a*12;g[p]=d,g[p+1]=d+1,g[p+2]=d+2,g[p+3]=d+1,g[p+4]=d+4,g[p+5]=d+2,g[p+6]=d+2,g[p+7]=d+4,g[p+8]=d+3,g[p+9]=d+4,g[p+10]=d+5,g[p+11]=d+3}}return Mb}var KH;function Ca(){return KH||(KH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.LinkStyle=e.EmptyLinkBuilderProps=e.DefaultLinkLineProps=e.LinkLineParams=e.DefaultLinkCylinderProps=e.LinkCylinderParams=void 0,e.calculateShiftDir=u,e.createLinkCylinderMesh=S,e.addLinkCylinderMesh=A,e.createLinkCylinderImpostors=x,e.createLinkLines=M;
7083const t=Ge(),r=Ne(),n=Rt(),i=$t(),c=ba(),o=Tt(),s=kn(),h=ac(),f=no(),y=qw(),_=ja();e.LinkCylinderParams={linkScale:r.ParamDefinition.Numeric(.45,{min:0,max:1,step:.01}),linkSpacing:r.ParamDefinition.Numeric(1,{min:0,max:2,step:.01}),linkCap:r.ParamDefinition.Boolean(!1),aromaticScale:r.ParamDefinition.Numeric(.3,{min:0,max:1,step:.01}),aromaticSpacing:r.ParamDefinition.Numeric(1.5,{min:0,max:3,step:.01}),aromaticDashCount:r.ParamDefinition.Numeric(2,{min:1,max:6,step:1}),dashCount:r.ParamDefinition.Numeric(4,{min:0,max:10,step:1}),dashScale:r.ParamDefinition.Numeric(.8,{min:0,max:2,step:.1}),dashCap:r.ParamDefinition.Boolean(!0),stubCap:r.ParamDefinition.Boolean(!0),radialSegments:r.ParamDefinition.Numeric(16,{min:2,max:56,step:2},o.BaseGeometry.CustomQualityParamInfo),colorMode:r.ParamDefinition.Select("default",r.ParamDefinition.arrayToOptions(["default","interpolate"]),o.BaseGeometry.ShadingCategory)},e.DefaultLinkCylinderProps=r.ParamDefinition.getDefaultValues(e.LinkCylinderParams),e.LinkLineParams={linkScale:r.ParamDefinition.Numeric(.5,{min:0,max:1,step:.1}),linkSpacing:r.ParamDefinition.Numeric(.1,{min:0,max:2,step:.01}),aromaticDashCount:r.ParamDefinition.Numeric(2,{min:1,max:6,step:1}),dashCount:r.ParamDefinition.Numeric(4,{min:0,max:10,step:1})},e.DefaultLinkLineProps=r.ParamDefinition.getDefaultValues(e.LinkLineParams);const g=(0,t.Vec3)(),a=(0,t.Vec3)(),d=(0,t.Vec3)(),p=t.Vec3.create(0,1,0);function u(D,V,R,E){t.Vec3.normalize(a,t.Vec3.sub(a,V,R)),E!==null?t.Vec3.sub(d,V,E):t.Vec3.copy(d,V),t.Vec3.normalize(d,d);let I=t.Vec3.dot(a,d);return 1-Math.abs(I)<1e-5&&(t.Vec3.set(d,1,0,0),I=t.Vec3.dot(a,d),1-Math.abs(I)<1e-5&&(t.Vec3.set(d,0,1,0),I=t.Vec3.dot(a,d))),t.Vec3.setMagnitude(a,a,I),t.Vec3.sub(d,d,a),t.Vec3.normalize(D,d)}e.EmptyLinkBuilderProps={linkCount:0,position:()=>{},radius:()=>0};var m;(function(D){D[D.Solid=0]="Solid",D[D.Dashed=1]="Dashed",D[D.Double=2]="Double",D[D.OffsetDouble=3]="OffsetDouble",D[D.Triple=4]="Triple",D[D.OffsetTriple=5]="OffsetTriple",D[D.Disk=6]="Disk",D[D.Aromatic=7]="Aromatic",D[D.MirroredAromatic=8]="MirroredAromatic"})(m||(e.LinkStyle=m={}));const v=t.Vec3.scale,b=t.Vec3.add,P=t.Vec3.sub,C=t.Vec3.setMagnitude,l=t.Vec3.dot;function S(D,V,R,E){const{linkCount:I,referencePosition:B,position:w,style:O,radius:F,ignore:L,stub:U}=V;if(!I)return{mesh:n.Mesh.createEmpty(E)};const{radialSegments:q,stubCap:N}=R,k=E?.hasBoundingSphere()?_.Sphere3D.clone(E.boundingSphere):void 0,j=q*2*I*2,H=i.MeshBuilder.createState(j,j/4,E),G=(0,t.Vec3)();let z=0,W=0;const X={builderState:H,props:R,assignNonAdjustedPosition:(Q,J)=>{w(Q,J,W,!1)},referencePosition:B?()=>B(W):void 0},Y={a:(0,t.Vec3)(),b:(0,t.Vec3)(),group:0,linkStub:!1,linkStyle:m.Solid,linkRadius:0};for(let Q=I;W<Q;++W)L&&L(W)||(w(Y.a,Y.b,W,!0),b(G,G,Y.a),b(G,G,Y.b),z+=2,Y.group=W,Y.linkStub=N&&(U?U(W):!1),Y.linkRadius=F(W),Y.linkStyle=O?O(W):m.Solid,A(X,Y));const K=i.MeshBuilder.getMesh(H);return z===0?{mesh:K}:(t.Vec3.scale(G,G,1/z),k&&t.Vec3.distance(G,k.center)/k.radius<.1?{mesh:K,boundingSphere:k}:{mesh:K})}const T={cylinderProps:{radiusTop:1,radiusBottom:1,radialSegments:8,topCap:!1,bottomCap:!1},vShift:(0,t.Vec3)(),va:(0,t.Vec3)(),vb:(0,t.Vec3)()};function A(D,V){const{builderState:R,props:E,assignNonAdjustedPosition:I,referencePosition:B}=D,{linkRadius:w,linkStub:O,linkStyle:F,a:L,b:U}=V,{linkScale:q,linkSpacing:N,radialSegments:k,linkCap:j,aromaticScale:H,aromaticSpacing:G,aromaticDashCount:z,dashCount:W,dashScale:X,dashCap:Y}=E,{cylinderProps:K,vShift:Q,va:J,vb:ae}=T;K.radialSegments=k,t.Vec3.copy(J,L),t.Vec3.copy(ae,U),P(g,ae,J);const te=l(g,p)>0,[ne,$]=te?[O,j]:[j,O];if(R.currentGroup=V.group,F===m.Solid)K.radiusTop=K.radiusBottom=w,K.topCap=ne,K.bottomCap=$,(0,c.addCylinder)(R,J,ae,.5,K);else if(F===m.Dashed)K.radiusTop=K.radiusBottom=w*X,K.topCap=K.bottomCap=Y,(0,c.addFixedCountDashedCylinder)(R,J,ae,.5,W,O,K);else if(F===m.Double||F===m.OffsetDouble||F===m.Triple||F===m.OffsetTriple||F===m.Aromatic||F===m.MirroredAromatic){const ie=F===m.Double||F===m.OffsetDouble?2:F===m.Triple||F===m.OffsetTriple?3:1.5,Z=w*(q/(.5*ie)),re=(w-Z)*N;if(u(Q,J,ae,B?B():null),K.topCap=ne,K.bottomCap=$,F===m.Aromatic||F===m.MirroredAromatic){K.radiusTop=K.radiusBottom=w,(0,c.addCylinder)(R,J,ae,.5,K);const oe=w+H*w+H*w*G;I&&I(J,ae),C(g,P(g,ae,J),w*.5),b(J,J,g),P(ae,ae,g),K.radiusTop=K.radiusBottom=w*H,K.topCap=K.bottomCap=Y,C(Q,Q,oe),P(J,J,Q),P(ae,ae,Q),(0,c.addFixedCountDashedCylinder)(R,J,ae,.5,z,O,K),F===m.MirroredAromatic&&(C(Q,Q,oe*2),b(J,J,Q),b(ae,ae,Q),(0,c.addFixedCountDashedCylinder)(R,J,ae,.5,z,O,K))}else if(F===m.OffsetDouble||F===m.OffsetTriple){const oe=w+Z+q*w*N;C(Q,Q,oe),K.radiusTop=K.radiusBottom=w,(0,c.addCylinder)(R,J,ae,.5,K),v(g,g,N*q*.2),b(J,J,g),P(ae,ae,g),K.radiusTop=K.radiusBottom=Z,K.topCap=te?O
7083:Y,K.bottomCap=te?Y:O,C(Q,Q,oe),P(J,J,Q),P(ae,ae,Q),(0,c.addCylinder)(R,J,ae,.5,K),ie===3&&(C(Q,Q,oe*2),b(J,J,Q),b(ae,ae,Q),(0,c.addCylinder)(R,J,ae,.5,K))}else C(Q,Q,re),K.radiusTop=K.radiusBottom=Z,ie===3&&(0,c.addCylinder)(R,J,ae,.5,K),(0,c.addDoubleCylinder)(R,J,ae,.5,Q,K)}else F===m.Disk&&(v(g,g,.475),b(J,J,g),P(ae,ae,g),K.radiusTop=K.radiusBottom=w,K.topCap=ne,K.bottomCap=$,(0,c.addCylinder)(R,J,ae,.5,K))}function x(D,V,R,E){const{linkCount:I,referencePosition:B,position:w,style:O,radius:F,ignore:L,stub:U}=V;if(!I)return{cylinders:f.Cylinders.createEmpty(E)};const{linkScale:q,linkSpacing:N,linkCap:k,aromaticScale:j,aromaticSpacing:H,aromaticDashCount:G,dashCount:z,dashScale:W,dashCap:X,stubCap:Y,colorMode:K}=R,Q=K==="interpolate",J=Q===!0?3:2,ae=E?.hasBoundingSphere()?_.Sphere3D.clone(E.boundingSphere):void 0,te=I*2,ne=y.CylindersBuilder.create(te,te/4,E),$=(0,t.Vec3)(),ie=(0,t.Vec3)(),Z=(0,t.Vec3)(),re=(0,t.Vec3)(),oe=(0,t.Vec3)();let ce=0;for(let pe=0,he=I;pe<he;++pe){if(L&&L(pe))continue;w($,ie,pe,!0),b(oe,oe,$),b(oe,oe,ie),ce+=2;const fe=F(pe),de=O?O(pe):m.Solid,ge=Y&&(U?U(pe):!1);if(de===m.Solid)v(Z,b(Z,$,ie),.5),ne.add($[0],$[1],$[2],Z[0],Z[1],Z[2],1,k,ge,J,pe);else if(de===m.Dashed)v(Z,b(Z,$,ie),.5),ne.addFixedCountDashes($,Z,z,W,X,X,ge,Q,pe);else if(de===m.Double||de===m.OffsetDouble||de===m.Triple||de===m.OffsetTriple||de===m.Aromatic||de===m.MirroredAromatic){const Ce=de===m.Double||de===m.OffsetDouble?2:de===m.Triple||de===m.OffsetTriple?3:1.5,ve=q/(.5*Ce),le=(fe-ve*fe)*N;if(v(Z,b(Z,$,ie),.5),u(re,$,ie,B?B(pe):null),de===m.Aromatic||de===m.MirroredAromatic){ne.add($[0],$[1],$[2],Z[0],Z[1],Z[2],1,k,ge,J,pe);const me=fe+j*fe+j*fe*H;w($,ie,pe,!1),C(g,P(g,ie,$),fe*.5),b($,$,g),C(re,re,me),P($,$,re),P(Z,Z,re),ne.addFixedCountDashes($,Z,G,j,X,X,ge,Q,pe),de===m.MirroredAromatic&&(C(re,re,me*2),b($,$,re),b(Z,Z,re),ne.addFixedCountDashes($,Z,G,j,X,X,ge,Q,pe))}else if(de===m.OffsetDouble||de===m.OffsetTriple){const me=fe+ve*fe+q*fe*N;C(re,re,me),ne.add($[0],$[1],$[2],Z[0],Z[1],Z[2],1,k,ge,J,pe),C(g,P(g,$,Z),fe/1.5),P($,$,g),Ce===3&&ne.add($[0]+re[0],$[1]+re[1],$[2]+re[2],Z[0]+re[0],Z[1]+re[1],Z[2]+re[2],ve,k,ge,J,pe),ne.add($[0]-re[0],$[1]-re[1],$[2]-re[2],Z[0]-re[0],Z[1]-re[1],Z[2]-re[2],ve,X,ge,J,pe)}else C(re,re,le),Ce===3&&ne.add($[0],$[1],$[2],Z[0],Z[1],Z[2],ve,k,ge,J,pe),ne.add($[0]+re[0],$[1]+re[1],$[2]+re[2],Z[0]+re[0],Z[1]+re[1],Z[2]+re[2],ve,k,ge,J,pe),ne.add($[0]-re[0],$[1]-re[1],$[2]-re[2],Z[0]-re[0],Z[1]-re[1],Z[2]-re[2],ve,k,ge,J,pe)}else de===m.Disk&&(v(g,P(g,Z,$),.475),b($,$,g),P(Z,Z,g),ne.add($[0],$[1],$[2],Z[0],Z[1],Z[2],1,k,ge,J,pe))}const ue=ne.getCylinders();return ce===0?{cylinders:ue}:(t.Vec3.scale(oe,oe,1/ce),ae&&t.Vec3.distance(oe,ae.center)/ae.radius<.1?{cylinders:ue,boundingSphere:ae}:{cylinders:ue})}function M(D,V,R,E){const{linkCount:I,referencePosition:B,position:w,style:O,ignore:F}=V;if(!I)return{lines:s.Lines.createEmpty(E)};const{linkScale:L,linkSpacing:U,aromaticDashCount:q,dashCount:N}=R,k=E?.hasBoundingSphere()?_.Sphere3D.clone(E.boundingSphere):void 0,j=I*2,H=h.LinesBuilder.create(j,j/4,E),G=(0,t.Vec3)(),z=(0,t.Vec3)(),W=(0,t.Vec3)(),X=(0,t.Vec3)(),Y=(0,t.Vec3)();let K=0;const Q=4.5,J=3;for(let te=0,ne=I;te<ne;++te){if(F&&F(te))continue;w(G,z,te,!0),b(Y,Y,G),b(Y,Y,z),K+=2;const $=O?O(te):m.Solid;if($===m.Solid)v(W,b(W,G,z),.5),H.add(G[0],G[1],G[2],W[0],W[1],W[2],te);else if($===m.Dashed)v(W,b(W,G,z),.5),H.addFixedCountDashes(G,W,N,te);else if($===m.Double||$===m.OffsetDouble||$===m.Triple||$===m.OffsetTriple||$===m.Aromatic||$===m.MirroredAromatic){const ie=$===m.Double||$===m.OffsetDouble?2:$===m.Triple||$===m.OffsetTriple?3:1.5,re=(1-1*(L/(.5*ie)))*U;if(v(W,b(W,G,z),.5),u(X,G,z,B?B(te):null),$===m.Aromatic||$===m.MirroredAromatic){H.add(G[0],G[1],G[2],W[0],W[1],W[2],te);const oe=re*Q;C(g,P(g,z,G),oe*.5),b(G,G,g),C(X,X,oe),P(G,G,X),P(W,W,X),H.addFixedCountDashes(G,W,q,te),$===m.MirroredAromatic&&(C(X,X,oe*2),b(G,G,X),b(W,W,X),H.addFixedCountDashes(G,W,q,te))}else $===m.OffsetDouble||$===m.OffsetTriple?(C(X,X,re*J),H.add(G[0],G[1],G[2],W[0],W[1],W[2],te),v(g,P(g,G,W),U*L),P(G,G,g),ie===3&&H.add(G[0]+X[0],G[1]+X[1],G[2]+X[2],W[0]+X[0],W[1]+X[1],W[2]+X[2],te),H.add(G[0]-X[0],G[1]-X[1],G[2]-X[2],W[0]-X[0],W[1]-X[1],W[2]-X[2],te)):(C(X,X,re*1.5),ie===3&&H.add(G[0],G[1],G[2],W[0],W[1],W[2],te),H.add(G[0]+X[0],G[1]+X[1],G[2]+X[2],W[0]+X[0],W[1]+X[1],W[2]+X[2],te),H.add(G[0]-X[0],G[1]-X[1],G[2]-X[2],W[0]-X[0],W[1]-X[1],W[2]-X[2],te))}else $===m.Disk&&(v(g,P(g,W,G),.475),b(G,G,g),P(W,W,g),H.add(G[0],G[1],G[2],W[0],W[1],W[2],te))}const ae=H.getLines();return K===0?{lines:ae}:(t.Vec3.scale(Y,Y,1/K),k&&t.Vec3.distance(Y,k.center)/k.radius<.1?{lines:ae,boundingSphere:k}:{lines:ae})}})(YA)),YA}var Db={},YH;function Uw(){if(YH)return Db;
7083YH=1,Object.defineProperty(Db,"__esModule",{value:!0}),Db.InteractionsSharedParams=void 0;const e=Ne();return Db.InteractionsSharedParams={sizeFactor:e.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),dashCount:e.ParamDefinition.Numeric(6,{min:1,max:10,step:1}),dashScale:e.ParamDefinition.Numeric(.4,{min:0,max:2,step:.1}),ignoreHydrogens:e.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:e.ParamDefinition.Select("all",e.ParamDefinition.arrayToOptions(["all","non-polar"])),includeParent:e.ParamDefinition.Boolean(!1),parentDisplay:e.ParamDefinition.Select("stub",e.ParamDefinition.arrayToOptions(["stub","full","between"]),{description:'Only has an effect when "includeParent" is enabled. "Stub" shows just the child side of interactions to the parent. "Full" shows both sides of interactions to the parent. "Between" shows only interactions to the parent.'})},Db}var QH;function Ose(){return QH||(QH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InteractionsIntraUnitParams=void 0,e.InteractionsIntraUnitVisual=P;const t=Ke(),r=Ge(),n=gt(),i=at(),c=Ne(),o=Rt(),s=Gl(),h=Ca(),f=mr(),y=zt(),_=ZS(),g=si(),a=rt(),d=Er(),p=Gt(),u=Uw(),m=si(),v=ra();async function b(A,x,M,D,V,R){if(!t.Unit.isAtomic(x))return o.Mesh.createEmpty(R);const{child:E}=M,I=E?.unitMap.get(x.id);if(E&&!I)return o.Mesh.createEmpty(R);const B=t.StructureElement.Location.create(M,x),w=s.InteractionsProvider.get(M).value,O=w.unitsFeatures.get(x.id),F=w.unitsContacts.get(x.id),{x:L,y:U,z:q,members:N,offsets:k,types:j}=O,{edgeCount:H,a:G,b:z,edgeProps:{flag:W,type:X}}=F,{sizeFactor:Y,ignoreHydrogens:K,ignoreHydrogensVariant:Q,parentDisplay:J}=V;if(!H)return o.Mesh.createEmpty(R);const{elements:ae,conformation:te}=x,ne=(0,r.Vec3)(),$=(0,r.Vec3)(),ie=(0,r.Vec3)(),Z={linkCount:H*2,position:(ce,ue,pe)=>{const he=X[pe];if((!K||Q!=="all")&&(he===m.InteractionType.HydrogenBond||he===m.InteractionType.WeakHydrogenBond&&Q!=="non-polar")){const fe=N[k[G[pe]]],de=N[k[z[pe]]];te.invariantPosition(ae[fe],$),te.invariantPosition(ae[de],ie);let ge=r.Vec3.distance($,ie),Ce=ge;r.Vec3.copy(ce,$),r.Vec3.copy(ue,ie);const ve=he===m.InteractionType.HydrogenBond?g.FeatureType.HydrogenDonor:g.FeatureType.WeakHydrogenDonor;j[k[G[pe]]]===ve?(0,v.eachIntraBondedAtom)(x,fe,(me,ee)=>{if((0,d.isHydrogen)(M,x,ae[ee],"all")){te.invariantPosition(ae[ee],ne);const se=r.Vec3.distance(ne,ie);se<ge&&(ge=se,r.Vec3.copy(ce,ne))}}):(0,v.eachIntraBondedAtom)(x,de,(me,ee)=>{if((0,d.isHydrogen)(M,x,ae[ee],"all")){te.invariantPosition(ae[ee],ne);const se=r.Vec3.distance(ne,$);se<Ce&&(Ce=se,r.Vec3.copy(ue,ne))}})}else r.Vec3.set(ce,L[G[pe]],U[G[pe]],q[G[pe]]),r.Vec3.set(ue,L[z[pe]],U[z[pe]],q[z[pe]])},style:ce=>h.LinkStyle.Dashed,radius:ce=>{B.element=ae[N[k[G[ce]]]];const ue=D.size.size(B);B.element=ae[N[k[z[ce]]]];const pe=D.size.size(B);return Math.min(ue,pe)*Y},ignore:ce=>{if(W[ce]===g.InteractionFlag.Filtered)return!0;if(I)if(J==="stub"){const ue=G[ce];for(let pe=k[ue],he=k[ue+1];pe<he;++pe){const fe=ae[N[k[pe]]];if(!i.SortedArray.has(I.elements,fe))return!0}}else if(J==="full"||J==="between"){let ue=!1,pe=!1;const he=G[ce];for(let de=k[he],ge=k[he+1];de<ge;++de){const Ce=ae[N[k[de]]];i.SortedArray.has(I.elements,Ce)||(ue=!0)}const fe=z[ce];for(let de=k[fe],ge=k[fe+1];de<ge;++de){const Ce=ae[N[k[de]]];i.SortedArray.has(I.elements,Ce)||(pe=!0)}return J==="full"?ue&&pe:ue===pe}else(0,p.assertUnreachable)(J);return!1}},{mesh:re,boundingSphere:oe}=(0,h.createLinkCylinderMesh)(A,Z,V,R);if(oe)re.setBoundingSphere(oe);else if(re.triangleCount>0){const ce=a.Sphere3D.expand((0,a.Sphere3D)(),(I??x).boundary.sphere,1*Y);re.setBoundingSphere(ce)}return re}e.InteractionsIntraUnitParams={...f.UnitsMeshParams,...h.LinkCylinderParams,...u.InteractionsSharedParams};function P(A){return(0,f.UnitsMeshVisual)({defaultProps:c.ParamDefinition.getDefaultValues(e.InteractionsIntraUnitParams),createGeometry:b,createLocationIterator:T,getLoci:C,eachLocation:S,setUpdateState:(x,M,D,V,R,E,I)=>{x.createGeometry=M.sizeFactor!==D.sizeFactor||M.dashCount!==D.dashCount||M.dashScale!==D.dashScale||M.dashCap!==D.dashCap||M.radialSegments!==D.radialSegments||M.ignoreHydrogens!==D.ignoreHydrogens||M.ignoreHydrogensVariant!==D.ignoreHydrogensVariant||M.parentDisplay!==D.parentDisplay;const B=s.InteractionsProvider.get(E.structure).version;x.info.interactionsHash!==B&&(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0,x.info.interactionsHash=B)}},A)}function C(A,x,M){const{objectId:D,instanceId:V,groupId:R}=A;if(M===D){const{structure:E,group:I}=x,B=E.unitMap.get(I.units[V].id),w=s.InteractionsProvider.get(E).value,{a:O,b:F}=w.unitsContacts.get(B.id);return _.Interactions.Loci(E,w,[{unitA:B,indexA:O[R],unitB:B,indexB:F[R]},{unitA:B,indexA:F[R],unitB:B,indexB:O[R]}])}return n.EmptyLoci}const l=new Set;function S(A,x,M,D){let V=!1;if(_.Interactions.isLoci(A)){const{structure:R,group:E}=x;if(!t.Structure.areEquivalent(A.data.structure,R))return!1;const I=s.InteractionsProvider.get(R).value;if(A.data.interactions!==I)return!1;const B=E.units[0],w=I.unitsContacts.get(B.id),O=w.edgeCount*2;
7083for(const F of A.elements){if(F.unitA!==F.unitB)continue;const L=E.unitIndexMap.get(F.unitA.id);if(L!==void 0){const U=w.getDirectedEdgeIndex(F.indexA,F.indexB);U!==-1&&M(i.Interval.ofSingleton(L*O+U))&&(V=!0)}}}else if(t.StructureElement.Loci.is(A)){const{structure:R,group:E}=x;if(!t.Structure.areEquivalent(A.structure,R))return!1;const I=s.InteractionsProvider.get(R).value;if(!I)return!1;const B=E.units[0],w=I.unitsContacts.get(B.id),O=I.unitsFeatures.get(B.id),F=w.edgeCount*2,{offset:L}=w,{offsets:U,indices:q}=O.elementsIndex,{members:N,offsets:k}=O;for(const j of A.elements){const H=E.unitIndexMap.get(j.unit.id);H!==void 0&&(i.OrderedSet.forEach(j.indices,G=>{for(let z=U[G],W=U[G+1];z<W;++z){const X=q[z];for(let Y=L[X],K=L[X+1];Y<K;++Y)l.add(Y)}}),l.forEach(G=>{if(D){const z=w.a[G];for(let X=k[z],Y=k[z+1];X<Y;++X)if(!i.OrderedSet.has(j.indices,N[X]))return;const W=w.b[G];for(let X=k[W],Y=k[W+1];X<Y;++X)if(!i.OrderedSet.has(j.indices,N[X]))return}M(i.Interval.ofSingleton(H*F+G))&&(V=!0)}),l.clear())}}return V}function T(A){const{structure:x,group:M}=A,D=M.units[0],V=s.InteractionsProvider.get(x).value,R=V.unitsContacts.get(D.id),E=R.edgeCount*2,I=M.units.length,B=_.Interactions.Location(V,x),{element:w}=B,O=(F,L)=>{const U=M.units[L];return w.unitA=U,w.indexA=R.a[F],w.unitB=U,w.indexB=R.b[F],B};return(0,y.LocationIterator)(E,I,1,O)}})(KA)),KA}var QA={},ZH;function kse(){return ZH||(ZH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InteractionsInterUnitParams=void 0,e.InteractionsInterUnitVisual=P;const t=Ne(),r=Ke(),n=Rt(),i=Ge(),c=Ca(),o=Br(),s=gt(),h=at(),f=ZS(),y=Gl(),_=zt(),g=si(),a=jr(),d=rt(),p=Gt(),u=Uw(),m=ra(),v=Er();function b(x,M,D,V,R){if(!M.hasAtomic)return n.Mesh.createEmpty(R);const E=r.StructureElement.Location.create(M),I=y.InteractionsProvider.get(M).value,{contacts:B,unitsFeatures:w}=I,{edgeCount:O,edges:F}=B,{sizeFactor:L,ignoreHydrogens:U,ignoreHydrogensVariant:q,parentDisplay:N}=V;if(!O)return n.Mesh.createEmpty(R);const{child:k}=M,j=(0,i.Vec3)(),H=(0,i.Vec3)(),G=(0,i.Vec3)(),z={linkCount:O,position:(Y,K,Q)=>{const{unitA:J,indexA:ae,unitB:te,indexB:ne,props:{type:$}}=F[Q],ie=w.get(J),Z=w.get(te),re=M.unitMap.get(J),oe=M.unitMap.get(te);if((!U||q!=="all")&&($===g.InteractionType.HydrogenBond||$===g.InteractionType.WeakHydrogenBond&&q!=="non-polar")){const ce=ie.members[ie.offsets[ae]],ue=Z.members[Z.offsets[ne]];re.conformation.position(re.elements[ce],H),oe.conformation.position(oe.elements[ue],G);let pe=i.Vec3.distance(H,G),he=pe;i.Vec3.copy(Y,H),i.Vec3.copy(K,G);const fe=$===g.InteractionType.HydrogenBond?g.FeatureType.HydrogenDonor:g.FeatureType.WeakHydrogenDonor;ie.types[ie.offsets[ae]]===fe?(0,m.eachBondedAtom)(M,re,ce,(ge,Ce)=>{const ve=ge.elements[Ce];if((0,v.isHydrogen)(M,ge,ve,"all")){ge.conformation.position(ve,j);const le=i.Vec3.distance(j,G);le<pe&&(pe=le,i.Vec3.copy(Y,j))}}):(0,m.eachBondedAtom)(M,oe,ue,(ge,Ce)=>{const ve=ge.elements[Ce];if((0,v.isHydrogen)(M,ge,ve,"all")){ge.conformation.position(ve,j);const le=i.Vec3.distance(j,H);le<he&&(he=le,i.Vec3.copy(K,j))}})}else i.Vec3.set(Y,ie.x[ae],ie.y[ae],ie.z[ae]),i.Vec3.transformMat4(Y,Y,re.conformation.operator.matrix),i.Vec3.set(K,Z.x[ne],Z.y[ne],Z.z[ne]),i.Vec3.transformMat4(K,K,oe.conformation.operator.matrix)},style:Y=>c.LinkStyle.Dashed,radius:Y=>{const K=F[Y],Q=w.get(K.unitA);E.unit=M.unitMap.get(K.unitA),E.element=E.unit.elements[Q.members[Q.offsets[K.indexA]]];const J=D.size.size(E),ae=w.get(K.unitB);E.unit=M.unitMap.get(K.unitB),E.element=E.unit.elements[ae.members[ae.offsets[K.indexB]]];const te=D.size.size(E);return Math.min(J,te)*L},ignore:Y=>{if(F[Y].props.flag===g.InteractionFlag.Filtered)return!0;if(k){const K=F[Y];if(N==="stub"){const Q=k.unitMap.get(K.unitA);if(!Q)return!0;const J=M.unitMap.get(K.unitA),{offsets:ae,members:te}=w.get(K.unitA);for(let ne=ae[K.indexA],$=ae[K.indexA+1];ne<$;++ne){const ie=J.elements[te[ne]];if(!h.SortedArray.has(Q.elements,ie))return!0}}else if(N==="full"||N==="between"){let Q=!1,J=!1;const ae=k.unitMap.get(K.unitA);if(!ae)Q=!0;else{const ne=M.unitMap.get(K.unitA),{offsets:$,members:ie}=w.get(K.unitA);for(let Z=$[K.indexA],re=$[K.indexA+1];Z<re;++Z){const oe=ne.elements[ie[Z]];h.SortedArray.has(ae.elements,oe)||(Q=!0)}}const te=k.unitMap.get(K.unitB);if(!te)J=!0;else{const ne=M.unitMap.get(K.unitB),{offsets:$,members:ie}=w.get(K.unitB);for(let Z=$[K.indexB],re=$[K.indexB+1];Z<re;++Z){const oe=ne.elements[ie[Z]];h.SortedArray.has(te.elements,oe)||(J=!0)}}return N==="full"?Q&&J:Q===J}else(0,p.assertUnreachable)(N)}return!1}},{mesh:W,boundingSphere:X}
7083=(0,c.createLinkCylinderMesh)(x,z,V,R);if(X)W.setBoundingSphere(X);else if(W.triangleCount>0){const{child:Y}=M,K=d.Sphere3D.expand((0,d.Sphere3D)(),(Y??M).boundary.sphere,1*L);W.setBoundingSphere(K)}return W}e.InteractionsInterUnitParams={...o.ComplexMeshParams,...c.LinkCylinderParams,...u.InteractionsSharedParams};function P(x){return(0,o.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.InteractionsInterUnitParams),createGeometry:b,createLocationIterator:A,getLoci:C,eachLocation:T,setUpdateState:(M,D,V,R,E,I,B)=>{M.createGeometry=D.sizeFactor!==V.sizeFactor||D.dashCount!==V.dashCount||D.dashScale!==V.dashScale||D.dashCap!==V.dashCap||D.radialSegments!==V.radialSegments||D.ignoreHydrogens!==V.ignoreHydrogens||D.ignoreHydrogensVariant!==V.ignoreHydrogensVariant||D.parentDisplay!==V.parentDisplay;const w=y.InteractionsProvider.get(I).version;M.info.interactionsHash!==w&&(M.createGeometry=!0,M.updateTransform=!0,M.updateColor=!0,M.info.interactionsHash=w)}},x)}function C(x,M,D){const{objectId:V,groupId:R}=x;if(D===V){const E=y.InteractionsProvider.get(M).value,I=E.contacts.edges[R],B=M.unitMap.get(I.unitA),w=M.unitMap.get(I.unitB);return f.Interactions.Loci(M,E,[{unitA:B,indexA:I.indexA,unitB:w,indexB:I.indexB},{unitA:w,indexA:I.indexB,unitB:B,indexB:I.indexA}])}return s.EmptyLoci}const l=new Map,S=new Set;function T(x,M,D,V){let R=!1;if(f.Interactions.isLoci(x)){if(!r.Structure.areEquivalent(x.data.structure,M))return!1;const E=y.InteractionsProvider.get(M).value;if(x.data.interactions!==E)return!1;const{contacts:I}=E;for(const B of x.elements){const w=I.getEdgeIndex(B.indexA,B.unitA.id,B.indexB,B.unitB.id);w!==-1&&D(h.Interval.ofSingleton(w))&&(R=!0)}}else if(r.StructureElement.Loci.is(x)){if(!r.Structure.areEquivalent(x.structure,M)||V&&x.elements.length===1)return!1;const E=y.InteractionsProvider.get(M).value;if(!E)return!1;const{contacts:I,unitsFeatures:B}=E;for(const w of x.elements)l.set(w.unit.id,w.indices);for(const w of x.elements){const{unit:O}=w;a.Unit.isAtomic(O)&&h.OrderedSet.forEach(w.indices,F=>{for(const L of I.getContactIndicesForElement(F,O))S.add(L)})}S.forEach(w=>{if(V){const{indexA:O,unitA:F,indexB:L,unitB:U}=I.edges[w],q=l.get(F),N=l.get(U);if(!q||!N)return;const{offsets:k,members:j}=B.get(F);
7083for(let z=k[O],W=k[O+1];z<W;++z)if(!h.OrderedSet.has(q,j[z]))return;const{offsets:H,members:G}=B.get(U);for(let z=H[L],W=H[L+1];z<W;++z)if(!h.OrderedSet.has(N,G[z]))return}D(h.Interval.ofSingleton(w))&&(R=!0)}),l.clear(),S.clear()}return R}function A(x){const M=y.InteractionsProvider.get(x).value,{contacts:D}=M,V=D.edgeCount,R=1,E=f.Interactions.Location(M,x),{element:I}=E,B=w=>{const O=D.edges[w];return I.unitA=x.unitMap.get(O.unitA),I.indexA=O.indexA,I.unitB=x.unitMap.get(O.unitB),I.indexB=O.indexB,E};return(0,_.LocationIterator)(V,R,1,B,!0)}})(QA)),QA}var ZA={},JH;function Fse(){return JH||(JH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BridgeParams=void 0,e.BridgeVisual=l;const t=Ne(),r=Ke(),n=Rt(),i=Ca(),c=Br(),o=gt(),s=Xa(),h=at(),f=Gl(),y=zt(),_=ZS(),g=rt(),a=Uw(),d=new WeakMap;function p(M){const D=d.get(M);if(D)return D;const V=M.length,R=new Int32Array(V),E=new Int32Array(V),I=new Map,B=new Map;for(let O=0;O<V;O++){const F=M[O],L=`${F.unitA}|${F.indexA}|${F.unitM}|${F.indexMA}`,U=`${F.unitM}|${F.indexMB}|${F.unitB}|${F.indexB}`;let q=I.get(L);q===void 0&&(q=O,I.set(L,O)),R[O]=q;let N=B.get(U);N===void 0&&(N=O,B.set(U,O)),E[O]=N}const w={endpointA:R,endpointB:E};return d.set(M,w),w}function u(M,D){return M.members[M.offsets[D]]}function m(M,D,V,R){const E=u(D,V);M.conformation.position(M.elements[E],R)}function v(M,D,V,R,E){const I=M.unitMap.get(V),B=u(R,E);D.unit=I,D.element=I.elements[B]}function b(M,D,V,R){let E=!1;const I=V.endpointA[M];return R(h.Interval.ofSingleton(I))&&(E=!0),R(h.Interval.ofSingleton(I+D))&&(E=!0),E}function P(M,D,V,R){let E=!1;const I=V.endpointB[M];return R(h.Interval.ofSingleton(I+2*D))&&(E=!0),R(h.Interval.ofSingleton(I+3*D))&&(E=!0),E}function C(M,D,V,R,E){if(!D.hasAtomic)return n.Mesh.createEmpty(E);const I=f.InteractionsProvider.get(D).value;if(!I)return n.Mesh.createEmpty(E);const{bridges:B,unitsFeatures:w}=I,O=B.length;if(!O)return n.Mesh.createEmpty(E);const F=r.StructureElement.Location.create(D),{sizeFactor:L}=R,U=p(B),q={linkCount:4*O,position:(j,H,G)=>{const z=B[G%O],W=D.unitMap.get(z.unitM),X=w.get(z.unitM),Y=Math.floor(G/O);if(Y===0){const K=D.unitMap.get(z.unitA),Q=w.get(z.unitA);m(K,Q,z.indexA,j),m(W,X,z.indexMA,H)}else if(Y===1){const K=D.unitMap.get(z.unitA),Q=w.get(z.unitA);m(W,X,z.indexMA,j),m(K,Q,z.indexA,H)}else if(Y===2){const K=D.unitMap.get(z.unitB),Q=w.get(z.unitB);m(W,X,z.indexMB,j),m(K,Q,z.indexB,H)}else{const K=D.unitMap.get(z.unitB),Q=w.get(z.unitB);m(K,Q,z.indexB,j),m(W,X,z.indexMB,H)}},ignore:j=>{const H=j%O;return Math.floor(j/O)<=1?U.endpointA[H]!==H:U.endpointB[H]!==H},style:j=>i.LinkStyle.Dashed,radius:j=>{const H=B[j%O];if(Math.floor(j/O)<=1){const W=w.get(H.unitA),X=w.get(H.unitM);v(D,F,H.unitA,W,H.indexA);const Y=V.size.size(F);v(D,F,H.unitM,X,H.indexMA);const K=V.size.size(F);return Math.min(Y,K)*L}else{const W=w.get(H.unitM),X=w.get(H.unitB);v(D,F,H.unitM,W,H.indexMB);const Y=V.size.size(F);v(D,F,H.unitB,X,H.indexB);const K=V.size.size(F);return Math.min(Y,K)*L}}},{mesh:N,boundingSphere:k}=(0,i.createLinkCylinderMesh)(M,q,R,E);if(k)N.setBoundingSphere(k);else if(N.triangleCount>0){const j=g.Sphere3D.expand((0,g.Sphere3D)(),D.boundary.sphere,L);N.setBoundingSphere(j)}return N}e.BridgeParams={...c.ComplexMeshParams,...i.LinkCylinderParams,...a.InteractionsSharedParams};function l(M){return(0,c.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.BridgeParams),createGeometry:C,createLocationIterator:x,getLoci:S,eachLocation:A,setUpdateState:(D,V,R,E,I,B,w)=>{D.createGeometry=V.sizeFactor!==R.sizeFactor||V.dashCount!==R.dashCount||V.dashScale!==R.dashScale||V.dashCap!==R.dashCap||V.radialSegments!==R.radialSegments||E.size!==I.size;const O=f.InteractionsProvider.get(B).version;D.info.interactionsHash!==O&&(D.createGeometry=!0,D.updateTransform=!0,D.updateColor=!0,D.info.interactionsHash=O)}},M)}function S(M,D,V){const{objectId:R,groupId:E}=M;if(V!==R)return o.EmptyLoci;const I=f.InteractionsProvider.get(D).value;if(!I)return o.EmptyLoci;const{bridges:B,unitsFeatures:w}=I,O=B.length;if(!O||E<0||E>=4*O)return o.EmptyLoci;const F=E%O;return _.Bridges.Loci({structure:D,bridges:B,unitsFeatures:w},[{bridgeIndex:F}])}const T=new Map;function A(M,D,V,R){let E=!1;
7083if(_.Bridges.isLoci(M)){if(!r.Structure.areEquivalent(M.data.structure,D))return!1;const I=f.InteractionsProvider.get(D).value;if(!I)return!1;const{bridges:B}=I,w=B.length;if(!w)return!1;const O=p(B);for(const F of M.elements)F.bridgeIndex<0||F.bridgeIndex>=w||(b(F.bridgeIndex,w,O,V)&&(E=!0),P(F.bridgeIndex,w,O,V)&&(E=!0))}else if(r.StructureElement.Loci.is(M)){if(!r.Structure.areEquivalent(M.structure,D))return!1;const I=f.InteractionsProvider.get(D).value;if(!I)return!1;const{bridges:B,unitsFeatures:w}=I,O=B.length;if(!O)return!1;const F=p(B);T.clear();for(const L of M.elements)T.set(L.unit.id,L.indices);for(let L=0;L<O;L++){const U=B[L],q=T.get(U.unitA),N=T.get(U.unitM),k=T.get(U.unitB);if(!q&&!N&&!k)continue;let j=!1;if(q){const z=w.get(U.unitA),W=u(z,U.indexA);j=h.OrderedSet.has(q,W)}let H=!1;if(N){const z=w.get(U.unitM),W=u(z,U.indexMA),X=u(z,U.indexMB);H=h.OrderedSet.has(N,W)||h.OrderedSet.has(N,X)}let G=!1;if(k){const z=w.get(U.unitB),W=u(z,U.indexB);G=h.OrderedSet.has(k,W)}(j||H)&&b(L,O,F,V)&&(E=!0),(G||H)&&P(L,O,F,V)&&(E=!0)}T.clear()}return E}function x(M){const D=f.InteractionsProvider.get(M).value;if(!D)return(0,y.LocationIterator)(0,1,1,()=>s.NullLocation,!0);const{bridges:V,unitsFeatures:R}=D,E=V.length,I=4*E,B=1,w={structure:M,bridges:V,unitsFeatures:R},O=_.Bridges.Location(w),{element:F}=O,L=U=>(F.bridgeIndex=E===0?0:U%E,O);return(0,y.LocationIterator)(I,B,1,L,!0)}})(ZA)),ZA}var e9;function iZ(){return e9||(e9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InteractionsRepresentationProvider=e.InteractionsParams=void 0,e.getInteractionParams=y,e.InteractionRepresentation=_;const t=Ne(),r=Lt(),n=Yr(),i=Ose(),c=Gl(),o=kse(),s=Fse(),h=Qf(),f={"intra-unit":(g,a)=>(0,n.UnitsRepresentation)("Intra-unit interactions cylinder",g,a,i.InteractionsIntraUnitVisual),"inter-unit":(g,a)=>(0,n.ComplexRepresentation)("Inter-unit interactions cylinder",g,a,o.InteractionsInterUnitVisual),bridge:(g,a)=>(0,n.ComplexRepresentation)("Bridge cylinder",g,a,s.BridgeVisual)};e.InteractionsParams={...i.InteractionsIntraUnitParams,...o.InteractionsInterUnitParams,...s.BridgeParams,unitKinds:(0,h.getUnitKindsParam)(["atomic"]),sizeFactor:t.ParamDefinition.Numeric(.2,{min:.01,max:1,step:.01}),visuals:t.ParamDefinition.MultiSelect(["intra-unit","inter-unit","bridge"],t.ParamDefinition.objectToOptions(f))};function y(g,a){return t.ParamDefinition.clone(e.InteractionsParams)}function _(g,a){return r.Representation.createMulti("Interactions",g,a,n.StructureRepresentationStateBuilder,f)}e.InteractionsRepresentationProvider=(0,n.StructureRepresentationProvider)({name:"interactions",label:"Non-covalent Interactions",description:"Displays non-covalent interactions as dashed cylinders.",factory:_,getParams:y,defaultValues:t.ParamDefinition.getDefaultValues(e.InteractionsParams),defaultColorTheme:{name:"interaction-type"},defaultSizeTheme:{name:"uniform"},isApplicable:g=>g.elementCount>0&&c.InteractionsProvider.isApplicable(g),ensureCustomProperties:{attach:(g,a)=>c.InteractionsProvider.attach(g,a,void 0,!0),detach:g=>c.InteractionsProvider.ref(g,!1)},getData:(g,a)=>a.includeParent?g.asParent():g,mustRecreate:(g,a)=>g.includeParent!==a.includeParent})})(WA)),WA}var t9;function Lse(){if(t9)return Ab;t9=1,Object.defineProperty(Ab,"__esModule",{value:!0}),Ab.Interactions=void 0;const e=di(),t=Ne(),r=Gl(),n=Et(),i=jt(),c=xl(),o=at(),s=si(),h=Vt(),f=nZ(),y=iZ();return Ab.Interactions=e.PluginBehavior.create({name:"computed-interactions-prop",category:"custom-props",display:{name:"Interactions"},ctor:class extends e.PluginBehavior.Handler{constructor(){super(...arguments),this.provider=r.InteractionsProvider,this.labelProvider={label:_=>{if(this.params.showTooltip)switch(_.kind){case"element-loci":if(_.elements.length===0)return;const g=[],a=this.getStructures(_.structure);for(const d of a){const p=this.provider.get(d).value;if(!p)continue;const u=c.StructureElement.Loci.remap(_,d);if(u.elements.length!==1)continue;const m=u.elements[0];if(o.OrderedSet.size(m.indices)!==1)continue;const v=p.unitsFeatures.get(m.unit.id);if(!v)continue;const b=[],P=[],C=[],l=o.OrderedSet.start(m.indices),{types:S,groups:T,elementsIndex:{indices:A,offsets:x}}=v;for(let M=x[l],D=x[l+1];M<D;++M){const V=A[M],R=S[V],E=T[V];R&&b.push((0,s.featureTypeLabel)(R)),E&&P.push((0,s.featureGroupLabel)(E))}b.length&&C.push(`<small>Types</small> ${b.join(", ")}`),P.length&&C.push(`<small>Groups</small> ${P.join(", ")}`),C.length&&g.push(`Interaction Feature: ${C.join(" | ")}`)}return g.length?g.join("<br/>"):void 0;default:return}}}}getStructures(_){const g=[],a=this.ctx.helpers.substructureParent.get(_);if(a){const p=this.ctx.state.data.select(n.StateSelection.Generators.ofType(i.PluginStateObject.Molecule.Structure,a.transform.ref));for(const u of p)u.obj&&(0,h.arraySetAdd)(g,u.obj.data)}return g}update(_){const g=this.params.autoAttach!==_.autoAttach||this.params.showTooltip!==_.showTooltip;return this.params.autoAttach=_.autoAttach,this.params.showTooltip=_.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),g}register(){this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach),this.ctx.representation.structure.themes.colorThemeRegistry.add(f.InteractionTypeColorThemeProvider),this.ctx.managers.lociLabels.addProvider(this.labelProvider),this.ctx.representation.structure.registry.add(y.InteractionsRepresentationProvider)}unregister(){this.ctx.customStructureProperties.unregister(this.provider.descriptor.name),this.ctx.representation.structure.themes.colorThemeRegistry.remove(f.InteractionTypeColorThemeProvider),this.ctx.managers.lociLabels.removeProvider(this.labelProvider),this.ctx.representation.structure.registry.remove(y.InteractionsRepresentationProvider)}},params:()=>({autoAttach:t.ParamDefinition.Boolean(!1),showTooltip:t.ParamDefinition.Boolean(!0)})}),Ab}var Ib={},r9;function Nse(){if(r9)return Ib;
7083r9=1,Object.defineProperty(Ib,"__esModule",{value:!0}),Ib.SecondaryStructure=void 0;const e=di(),t=Ne(),r=Pl();return Ib.SecondaryStructure=e.PluginBehavior.create({name:"computed-secondary-structure-prop",category:"custom-props",display:{name:"Secondary Structure"},ctor:class extends e.PluginBehavior.Handler{constructor(){super(...arguments),this.provider=r.SecondaryStructureProvider}update(n){const i=this.params.autoAttach!==n.autoAttach;return this.params.autoAttach=n.autoAttach,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),i}register(){this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach)}unregister(){this.ctx.customStructureProperties.unregister(this.provider.descriptor.name)}},params:()=>({autoAttach:t.ParamDefinition.Boolean(!1)})}),Ib}var wb={},n9;function qse(){if(n9)return wb;n9=1,Object.defineProperty(wb,"__esModule",{value:!0}),wb.ValenceModel=void 0;const e=di(),t=Ne(),r=QS(),n=jt(),i=Et(),c=Ke(),o=at(),s=v2(),h=Vt();return wb.ValenceModel=e.PluginBehavior.create({name:"computed-valence-model-prop",category:"custom-props",display:{name:"Valence Model"},ctor:class extends e.PluginBehavior.Handler{constructor(){super(...arguments),this.provider=r.ValenceModelProvider,this.labelProvider={label:f=>{if(this.params.showTooltip)switch(f.kind){case"element-loci":if(f.elements.length===0)return;const y=[],_=this.getStructures(f.structure);for(const g of _){const a=this.provider.get(g).value;if(!a)continue;const d=c.StructureElement.Loci.remap(f,g);if(d.elements.length!==1)continue;const p=d.elements[0];if(o.OrderedSet.size(p.indices)!==1)continue;const u=a.get(p.unit.id);if(!u)continue;const m=o.OrderedSet.start(p.indices),v=u.charge[m],b=u.idealGeometry[m],P=u.implicitH[m],C=u.totalH[m];y.push(`Valence Model: <small>Charge</small> ${v} | <small>Ideal Geometry</small> ${(0,s.geometryLabel)(b)} | <small>Implicit H</small> ${P} | <small>Total H</small> ${C}`)}return y.length?y.join("<br/>"):void 0;default:return}}}}getStructures(f){const y=[],_=this.ctx.helpers.substructureParent.get(f);if(_){const a=this.ctx.state.data.select(i.StateSelection.Generators.ofType(n.PluginStateObject.Molecule.Structure,_.transform.ref));for(const d of a)d.obj&&(0,h.arraySetAdd)(y,d.obj.data)}return y}update(f){const y=this.params.autoAttach!==f.autoAttach||this.params.showTooltip!==f.showTooltip;return this.params.autoAttach=f.autoAttach,this.params.showTooltip=f.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),y}register(){this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach),this.ctx.managers.lociLabels.addProvider(this.labelProvider)}unregister(){this.ctx.customStructureProperties.unregister(this.provider.descriptor.name),this.ctx.managers.lociLabels.removeProvider(this.labelProvider)}},params:()=>({autoAttach:t.ParamDefinition.Boolean(!1),showTooltip:t.ParamDefinition.Boolean(!0)})}),wb}var Vb={},JA={},i9;function Use(){return i9||(i9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SIFTSMappingColorThemeProvider=e.SIFTSMappingColorThemeParams=void 0,e.getSIFTSMappingColorThemeParams=y,e.SIFTSMappingColorTheme=_;const t=Ke(),r=Ut(),n=vt(),i=On(),c=Ne(),o=lI(),s=(0,n.Color)(16448250),h="Assigns a color based on SIFTS mapping.",f=new Map;
7083e.SIFTSMappingColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:"set-1"})};function y(g){return e.SIFTSMappingColorThemeParams}function _(g,a){let d;if(g.structure){for(const b of g.structure.models){const P=o.SIFTSMapping.Provider.get(b).value;if(P)for(const C of P.accession)!C||f.has(C)||f.set(C,f.size)}const p=t.StructureElement.Location.create(g.structure),u=(0,i.getPalette)(f.size+1,a,{valueLabel:b=>`${b}`}),m=new Map,v=b=>{const P=o.SIFTSMapping.getKey(b);if(!P)return s;if(m.has(P))return m.get(P);const C=u.color(f.get(P));return m.set(P,C),C};d=b=>t.StructureElement.Location.is(b)&&t.Unit.isAtomic(b.unit)?v(b):t.Bond.isLocation(b)?(p.unit=b.aUnit,p.element=b.aUnit.elements[b.aIndex],v(p)):s}else d=()=>s;return{factory:_,granularity:"group",preferSmoothing:!0,color:d,props:a,description:h}}e.SIFTSMappingColorThemeProvider={name:"sifts-mapping",label:"SIFTS Mapping",category:r.ColorThemeCategory.Residue,factory:_,getParams:y,defaultValues:c.ParamDefinition.getDefaultValues(e.SIFTSMappingColorThemeParams),isApplicable:g=>{var a;return!!(!((a=g.structure)===null||a===void 0)&&a.models.some(d=>o.SIFTSMapping.Provider.isApplicable(d)))},ensureCustomProperties:{attach:async(g,a)=>{if(a.structure)for(const d of a.structure.models)await o.SIFTSMapping.Provider.attach(g,d,void 0,!0)},detach:g=>{if(g.structure)for(const a of g.structure.models)o.SIFTSMapping.Provider.ref(a,!1)}}}})(JA)),JA}var a9;function jse(){if(a9)return Vb;a9=1,Object.defineProperty(Vb,"__esModule",{value:!0}),Vb.SIFTSMapping=void 0;const e=at(),t=lI(),r=Use(),n=Ke(),i=Ne(),c=di();Vb.SIFTSMapping=c.PluginBehavior.create({name:"sifts-mapping-prop",category:"custom-props",display:{name:"SIFTS Mapping"},ctor:class extends c.PluginBehavior.Handler{constructor(){super(...arguments),this.provider=t.SIFTSMapping.Provider,this.labelProvider={label:s=>{if(this.params.showTooltip)return o(s)}}}update(s){const h=this.params.autoAttach!==s.autoAttach||this.params.showTooltip!==s.showTooltip;return this.params.autoAttach=s.autoAttach,this.params.showTooltip=s.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),h}register(){this.ctx.customModelProperties.register(this.provider,this.params.autoAttach),this.ctx.representation.structure.themes.colorThemeRegistry.add(r.SIFTSMappingColorThemeProvider),this.ctx.managers.lociLabels.addProvider(this.labelProvider)}unregister(){this.ctx.customModelProperties.unregister(this.provider.descriptor.name),this.ctx.representation.structure.themes.colorThemeRegistry.remove(r.SIFTSMappingColorThemeProvider),this.ctx.managers.lociLabels.removeProvider(this.labelProvider)}},params:()=>({autoAttach:i.ParamDefinition.Boolean(!0),showTooltip:i.ParamDefinition.Boolean(!0)})});function o(s){if(s.kind==="element-loci"){if(s.elements.length===0)return;const h=s.elements[0],f=h.unit,y=n.StructureElement.Location.create(s.structure,f,f.elements[e.OrderedSet.getAt(h.indices,0)]);return t.SIFTSMapping.getLabel(y)}}return Vb}var Eb={},Bb={},o9;function aZ(){if(o9)return Bb;o9=1,Object.defineProperty(Bb,"__esModule",{value:!0}),Bb.ModelCrossLinkRestraint=void 0;const e=Ke(),t=as();var r;return(function(n){n.Descriptor={name:"ihm_cross_link_restraint"},n.Provider=t.FormatPropertyProvider.create(n.Descriptor);function i(c,o){const s={entity_id:c.entity_id_1,asym_id:c.asym_id_1,seq_id:c.seq_id_1,atom_id:c.atom_id_1},h={entity_id:c.entity_id_2,asym_id:c.asym_id_2,seq_id:c.seq_id_2,atom_id:c.atom_id_2};function f(u,m,v){const b=u.get(m);b?b.push(v):u.set(m,[v])}function y(u,m){const v=m.entity_id.value(u),b=m.asym_id.value(u),P=m.seq_id.value(u);if(c.model_granularity.value(u)==="by-atom"){const C=o.atomicHierarchy.index.findAtom({auth_seq_id:P,label_asym_id:b,label_atom_id:m.atom_id.value(u),label_entity_id:v});C>=0&&f(g,C,u)}else if(o.coarseHierarchy.isDefined){const C=o.coarseHierarchy.spheres.findSequenceKey(v,b,P);if(C>=0)f(a,C,u);else{const l=o.coarseHierarchy.gaussians.findSequenceKey(v,b,P);l>=0&&f(d,l,u)}}}function _(u){switch(u){case e.Unit.Kind.Atomic:return g;case e.Unit.Kind.Spheres:return a;case e.Unit.Kind.Gaussians:return d}}const g=new Map,a=new Map,d=new Map,p=[];for(let u=0;u<c._rowCount;
7083++u)y(u,s),y(u,h);return{getIndicesByElement:(u,m)=>{const b=_(m).get(u);return b!==void 0?b:p},data:c}}n.fromTable=i})(r||(Bb.ModelCrossLinkRestraint=r={})),Bb}var eM={},rl={},Rb={},s9;function Gse(){if(s9)return Rb;s9=1,Object.defineProperty(Rb,"__esModule",{value:!0}),Rb.PairRestraints=void 0;const e=[];function t(n,i,c,o){return`${n}|${i.id}|${c}|${o.id}`}class r{getPairIndices(i,c,o,s){const h=t(i,c,o,s);return this.pairKeyIndices.get(h)||e}getPairs(i,c,o,s){return this.getPairIndices(i,c,o,s).map(f=>this.pairs[f])}constructor(i){this.pairs=i;const c=new Map;this.pairs.forEach((o,s)=>{const h=t(o.indexA,o.unitA,o.indexB,o.unitB),f=c.get(h);f?f.push(s):c.set(h,[s])}),this.count=i.length,this.pairKeyIndices=c}}return Rb.PairRestraints=r,Rb}var c9;function oZ(){if(c9)return rl;c9=1,Object.defineProperty(rl,"__esModule",{value:!0}),rl.CrossLinkRestraint=rl.CrossLinkRestraintProvider=void 0;const e=aZ(),t=Ke(),r=Gse(),n=wf(),i=Xa(),c=gt(),o=rS(),s=_a(),h=Ge(),f=Pr();rl.CrossLinkRestraintProvider=n.CustomStructureProperty.createProvider({label:"Cross Link Restraint",descriptor:(0,f.CustomPropertyDescriptor)({name:"integrative-cross-link-restraint"}),type:"local",defaultParams:{},getParams:u=>({}),isApplicable:u=>u.models.some(m=>!!e.ModelCrossLinkRestraint.Provider.get(m)),obtain:async(u,m,v)=>({value:p(m)})});var y;(function(u){(function(R){R.CrossLinkRestraint="cross-link-restraint"})(u.Tag||(u.Tag={}));function m(R){return R.models.some(E=>!!e.ModelCrossLinkRestraint.Provider.get(E))}u.isApplicable=m;const v=(0,h.Vec3)(),b=(0,h.Vec3)();function P(R){return R.unitA.conformation.position(R.unitA.elements[R.indexA],v),R.unitB.conformation.position(R.unitB.elements[R.indexB],b),h.Vec3.distance(v,b)}u.distance=P;function C(R,E,I){return(0,i.DataLocation)("cross-link-restraints",{structure:E,crossLinkRestraints:R},I)}u.Location=C;function l(R){return!!R&&R.kind==="data-location"&&R.tag==="cross-link-restraints"}u.isLocation=l;function S(R,E){return R.data.structure===E.data.structure&&R.data.crossLinkRestraints===E.data.crossLinkRestraints&&R.element===E.element}u.areLocationsEqual=S;function T(R,E){const I=R.pairs[E];return`Cross Link Restraint | Type: ${I.restraintType} | Threshold: ${I.distanceThreshold} Å | Psi: ${I.psi} | Sigma 1: ${I.sigma1} | Sigma 2: ${I.sigma2} | Distance: ${P(I).toFixed(2)} Å`}function A(R){return T(R.data.crossLinkRestraints,R.element)}u.locationLabel=A;function x(R,E,I){return(0,c.DataLoci)("cross-link-restraints",{structure:R,crossLinkRestraints:E},I,B=>D(E,I,B),()=>V(R,E,I))}u.Loci=x;function M(R){return!!R&&R.kind==="data-loci"&&R.tag==="interactions"}u.isLoci=M;function D(R,E,I){return o.CentroidHelper.fromPairProvider(E.length,(B,w,O)=>{const F=R.pairs[E[B]];F.unitA.conformation.position(F.unitA.elements[F.indexA],w),F.unitB.conformation.position(F.unitB.elements[F.indexB],O)},I)}u.getBoundingSphere=D;function V(R,E,I){const B=I[0];if(B===void 0)return"";const w=E.pairs[B];return[T(E,B),(0,s.bondLabel)(t.Bond.Location(R,w.unitA,w.indexA,R,w.unitB,w.indexB))].join("</br>")}u.getLabel=V})(y||(rl.CrossLinkRestraint=y={}));function _(u,m,v){const{elements:b}=m,P=b.length,C=m.kind;for(let l=0;l<P;l++){const S=b[l];v.getIndicesByElement(S,C).forEach(T=>u.set(T,l))}}function g(u,m,v){if(m.model!==v.model||m.model.sourceData.kind!=="mmCIF")return;const b=e.ModelCrossLinkRestraint.Provider.get(m.model);if(!b)return;const P=new Map,C=new Map;_(P,m,b),_(C,v,b),P.forEach((l,S)=>{const T=C.get(S);T!==void 0&&u.push(d(m,l,v,T,b,S),d(v,T,m,l,b,S))})}function a(u,m){if(m.model.sourceData.kind!=="mmCIF")return;const v=e.ModelCrossLinkRestraint.Provider.get(m.model);if(!v)return;const{elements:b}=m,P=b.length,C=m.kind,l=new Map;for(let S=0;S<P;S++){const T=b[S];v.getIndicesByElement(T,C).forEach(A=>{const x=l.get(A);x?x.push(S):l.set(A,[S])})}l.forEach((S,T)=>{if(S.length<2)return;const[A,x]=S;u.push(d(m,A,m,x,v,T),d(m,x,m,A,v,T))})}function d(u,m,v,b,P,C){return{unitA:u,indexA:m,unitB:v,indexB:b,restraintType:P.data.restraint_type.value(C),distanceThreshold:P.data.distance_threshold.value(C),psi:P.data.psi.value(C),sigma1:P.data.sigma_1.value(C),sigma2:P.data.sigma_2.value(C)}}function p(u){const m=[];
7083if(!u.models.some(b=>e.ModelCrossLinkRestraint.Provider.get(b)))return new r.PairRestraints(m);const v=u.units.length;for(let b=0;b<v;++b){const P=u.units[b];a(m,P);for(let C=b+1;C<v;++C){const l=u.units[C];P.model===l.model&&g(m,P,l)}}return new r.PairRestraints(m)}return rl}var u9;function zse(){return u9||(u9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CrossLinkRestraintRepresentationProvider=e.CrossLinkRestraintParams=e.CrossLinkRestraintCylinderParams=void 0,e.CrossLinkRestraintVisual=d,e.getCrossLinkRestraintParams=b,e.CrossLinkRestraintRepresentation=P;const t=Lt(),r=Rt(),n=zt(),i=gt(),c=at(),o=Ne(),s=Ke(),h=Ca(),f=Br(),y=Yr(),_=oZ(),g=rt();function a(C,l,S,T,A){const x=_.CrossLinkRestraintProvider.get(l).value;if(!x.count)return r.Mesh.createEmpty(A);const{sizeFactor:M}=T,D=s.StructureElement.Location.create(l),V={linkCount:x.count,position:(I,B,w)=>{const O=x.pairs[w],F=O.unitA,L=O.unitB;F.conformation.position(F.elements[O.indexA],I),L.conformation.position(L.elements[O.indexB],B)},radius:I=>{const B=x.pairs[I];return D.unit=B.unitA,D.element=B.unitA.elements[B.indexA],S.size.size(D)*M}},{mesh:R,boundingSphere:E}=(0,h.createLinkCylinderMesh)(C,V,T,A);if(E)R.setBoundingSphere(E);else if(R.triangleCount>0){const I=g.Sphere3D.expand((0,g.Sphere3D)(),l.boundary.sphere,1*M);R.setBoundingSphere(I)}return R}e.CrossLinkRestraintCylinderParams={...f.ComplexMeshParams,...h.LinkCylinderParams,sizeFactor:o.ParamDefinition.Numeric(.5,{min:0,max:10,step:.1})};function d(C){return(0,f.ComplexMeshVisual)({defaultProps:o.ParamDefinition.getDefaultValues(e.CrossLinkRestraintCylinderParams),createGeometry:a,createLocationIterator:p,getLoci:u,eachLocation:m,setUpdateState:(l,S,T)=>{l.createGeometry=S.sizeFactor!==T.sizeFactor||S.radialSegments!==T.radialSegments||S.linkCap!==T.linkCap}},C)}function p(C){const l=_.CrossLinkRestraintProvider.get(C).value,{pairs:S}=l,T=S.length,A=1,x=_.CrossLinkRestraint.Location(l,C),M=D=>(x.element=D,x);return(0,n.LocationIterator)(T,A,1,M,!0)}function u(C,l,S){const{objectId:T,groupId:A}=C;if(S===T){const x=_.CrossLinkRestraintProvider.get(l).value;if(x.pairs[A])return _.CrossLinkRestraint.Loci(l,x,[A])}return i.EmptyLoci}function m(C,l,S){let T=!1;if(_.CrossLinkRestraint.isLoci(C)){if(!s.Structure.areEquivalent(C.data.structure,l))return!1;const A=_.CrossLinkRestraintProvider.get(l).value;if(C.data.crossLinkRestraints!==A)return!1;for(const x of C.elements)S(c.Interval.ofSingleton(x))&&(T=!0)}return T}const v={"cross-link-restraint":(C,l)=>(0,y.ComplexRepresentation)("Cross-link restraint",C,l,d)};e.CrossLinkRestraintParams={...e.CrossLinkRestraintCylinderParams};function b(C,l){return o.ParamDefinition.clone(e.CrossLinkRestraintParams)}function P(C,l){return t.Representation.createMulti("CrossLinkRestraint",C,l,y.StructureRepresentationStateBuilder,v)}e.CrossLinkRestraintRepresentationProvider=(0,y.StructureRepresentationProvider)({name:_.CrossLinkRestraint.Tag.CrossLinkRestraint,label:"Cross Link Restraint",description:"Displays cross-link restraints.",factory:P,getParams:b,defaultValues:o.ParamDefinition.getDefaultValues(e.CrossLinkRestraintParams),defaultColorTheme:{name:_.CrossLinkRestraint.Tag.CrossLinkRestraint},defaultSizeTheme:{name:"uniform"},isApplicable:C=>_.CrossLinkRestraint.isApplicable(C),ensureCustomProperties:{attach:(C,l)=>_.CrossLinkRestraintProvider.attach(C,l,void 0,!0),detach:C=>_.CrossLinkRestraintProvider.ref(C,!1)}})})(eM)),eM}var tM={},l9;function Hse(){return l9||(l9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CrossLinkColorThemeProvider=e.CrossLinkColorThemeParams=void 0,e.getCrossLinkColorThemeParams=s,e.CrossLinkColorTheme=h;const t=vt(),r=Ne(),n=oZ(),i=Ut(),c=(0,t.Color)(13421772),o="Colors cross-links by the deviation of the observed distance versus the modeled distance (e.g. modeled / `ihm_cross_link_restraint.distance_threshold`).";e.CrossLinkColorThemeParams={domain:r.ParamDefinition.Interval([.5,1.5],{step:.01}),list:r.ParamDefinition.ColorList("red-grey",{presetKind:"scale"})};function s(f){return e.CrossLinkColorThemeParams}function h(f,y){let _,g;const a=f.structure&&n.CrossLinkRestraintProvider.get(f.structure).value;if(a){g=t.ColorScale.create({domain:y.domain,listOrName:y.list.colors});const d=g.color;_=p=>{if(n.CrossLinkRestraint.isLocation(p)){const u=a.pairs[p.element];if(u)return d(n.CrossLinkRestraint.distance(u)/u.distanceThreshold)}return c}}else _=()=>c;return{factory:h,granularity:"group",color:_,props:y,description:o,legend:g?g.legend:void 0}}e.CrossLinkColorThemeProvider={name:"cross-link",label:"Cross Link",category:i.ColorThemeCategory.Misc,factory:h,getParams:s,defaultValues:r.ParamDefinition.getDefaultValues(e.CrossLinkColorThemeParams),isApplicable:f=>!!f.structure&&n.CrossLinkRestraint.isApplicable(f.structure),ensureCustomProperties:{attach:(f,y)=>y.structure?n.CrossLinkRestraintProvider.attach(f,y.structure,void 0,!0):Promise.resolve(),detach:f=>f.structure&&n.CrossLinkRestraintProvider.ref(f.structure,!1)}}})(tM)),tM}var d9;function Wse(){if(d9)return Eb;
7083d9=1,Object.defineProperty(Eb,"__esModule",{value:!0}),Eb.CrossLinkRestraint=void 0;const e=di(),t=aZ(),r=Mi(),n=zse(),i=Hse();Eb.CrossLinkRestraint=e.PluginBehavior.create({name:"integrative-cross-link-restraint",category:"custom-props",display:{name:"Cross Link Restraint"},ctor:class extends e.PluginBehavior.Handler{constructor(){super(...arguments),this.provider=t.ModelCrossLinkRestraint.Provider}register(){this.provider.formatRegistry.add("mmCIF",c),this.ctx.representation.structure.themes.colorThemeRegistry.add(i.CrossLinkColorThemeProvider),this.ctx.representation.structure.registry.add(n.CrossLinkRestraintRepresentationProvider)}unregister(){this.provider.formatRegistry.remove("mmCIF"),this.ctx.representation.structure.themes.colorThemeRegistry.remove(i.CrossLinkColorThemeProvider),this.ctx.representation.structure.registry.remove(n.CrossLinkRestraintRepresentationProvider)}}});function c(o){if(!r.MmcifFormat.is(o.sourceData))return;const{ihm_cross_link_restraint:s}=o.sourceData.data.db;if(s._rowCount!==0)return t.ModelCrossLinkRestraint.fromTable(s,o)}return Eb}var Ob={},rM={},kb={},f9;function $se(){if(f9)return kb;f9=1,Object.defineProperty(kb,"__esModule",{value:!0}),kb.CustomVolumeProperty=void 0;const e=Ne(),t=et(),r=Pr(),n=ui();var i;return(function(c){function o(h){const f=h.descriptor.name,y=g=>(f in g._propertyData||(g._propertyData[f]={props:{...e.ParamDefinition.getDefaultValues(h.getParams(g))},data:t.ValueBox.create(void 0)}),g._propertyData[f]),_=(g,a,d)=>{const p=y(g);g._propertyData[f]={props:a,data:t.ValueBox.withValue(p.data,d)}};return{label:h.label,descriptor:h.descriptor,isHidden:h.isHidden,getParams:g=>{const a=e.ParamDefinition.clone(h.getParams(g));return e.ParamDefinition.setDefaultValues(a,y(g).props),a},defaultParams:h.defaultParams,isApplicable:h.isApplicable,attach:async(g,a,d={},p)=>{p&&a.customProperties.reference(h.descriptor,!0);const u=y(a),m=e.ParamDefinition.merge(h.defaultParams,u.props,d);if(u.data.value&&e.ParamDefinition.areEqual(h.defaultParams,u.props,m))return;const{value:v,assets:b}=await h.obtain(g,a,m);a.customProperties.add(h.descriptor),a.customProperties.assets(h.descriptor,b),_(a,m,v)},ref:(g,a)=>g.customProperties.reference(h.descriptor,a),get:g=>{var a;return(a=y(g))===null||a===void 0?void 0:a.data},set:(g,a={},d)=>{const p=y(g),u=e.ParamDefinition.merge(h.defaultParams,p.props,a);e.ParamDefinition.areEqual(h.defaultParams,p.props,u)||(_(g,u,d),g.customProperties.assets(h.descriptor))},props:g=>y(g).props}}c.createProvider=o;function s(h,f){const y={value:e.ParamDefinition.Value(f,{isHidden:!0})};return o({label:(0,n.stringToWords)(h),descriptor:(0,r.CustomPropertyDescriptor)({name:h}),isHidden:!0,defaultParams:y,getParams:()=>({value:e.ParamDefinition.Value(f,{isHidden:!0})}),isApplicable:()=>!0,obtain:async(_,g,a)=>({...e.ParamDefinition.getDefaultValues(y),...a})})}c.createSimple=s})(i||(kb.CustomVolumeProperty=i={})),kb}var Zd={},m9;function Xse(){if(m9)return Zd;m9=1,Object.defineProperty(Zd,"__esModule",{value:!0}),Zd.BasicStreamlineCalculationParams=void 0,Zd.calculateBasicStreamlines=m;const e=Ne(),t=Dn(),r=Ge(),n=zf(),i=r.Vec3.fromArray,c=r.Vec3.distance,o=r.Vec3.setMagnitude,s=r.Vec3.create,h=r.Vec3.copy,f=r.Vec3.add;Zd.BasicStreamlineCalculationParams={seedDensity:e.ParamDefinition.Numeric(10,{min:1,max:30,step:1},{description:"Percentage of cells with seed."}),stepSize:e.ParamDefinition.Numeric(.35,{min:.01,max:1,step:.01},{description:"Step size in grid space."}),minSeparation:e.ParamDefinition.Numeric(0,{min:0,max:5,step:.5},{description:"Minimum separation between streamlines in grid space. 0 to disable."})};const y=(0,r.Vec3)(),_=(0,r.Vec3)(),g=(0,r.Vec3)(),a=(0,r.Vec3)();function d(v,b,P,C,l,S,T){const{space:A}=b.cells,[x,M,D]=A.dimensions,V=A.dataOffset,R=S*l,E=Math.max(x,M,D)*5/l,I=l/1.1,B=new Map,w=Math.ceil(2/l);h(_,C);let O=0;for(let F=0;F<E&&!(_[0]<1||_[0]>x-2||_[1]<1||_[1]>M-2||_[2]<1||_[2]>D-2||!P(_,g));++F){const L=V(Math.round(_[0]),Math.round(_[1]),Math.round(_[2]));if(T&&T[L])break;const U=(B.get(L)||0)+1;if(B.set(L,U),U>w)break;o(y,g,R);const q=_[0]+.5*y[0],N=_[1]+.5*y[1],k=_[2]+.5*y[2],j=s(q,N,k);c(a,j)>=I&&(v.push(j),h(a,j)),O++,f(_,_,y)}return O}function p(v,b,P,C,l){const S=[];return d(S,v,b,P,C,-1,l)>1&&S.reverse(),d(S,v,b,P,C,1,l),S}async function u(v,b,P){const{space:C}=b.cells,[l,S,T]=C.dimensions,A=C.dataOffset,{seedDensity:x,stepSize:M,minSeparation:D}=P,V=Math.max(1,Math.floor(Math.min(l,S,T)/x)),R=1,E=l-2-V,I=1,B=S-2-V,w=1,O=T-2-V,F=new t.PCG,L=[];for(let G=w;G<=O;G+=V)for(let z=I;z<=B;z+=V)for(let W=R;W<=E;W+=V)L.push(W+F.float()*V,z+F.float()*V,G+F.float()*V);for(let G=L.length/3-1;G>0;G--){const z=Math.floor(F.float()*(G+1)),W=G*3,X=z*3,Y=L[W],K=L[W+1],Q=L[W+2];L[W]=L[X],L[W+1]=L[X+1],L[W+2]=L[X+2],L[X]=Y,L[X+1]=K,L[X+2]=Q}await v.update({isIndeterminate:!1,current:0,max:L.length/3});const U=n.Grid.makeGetInterpolatedGradient(b),q=D>0,N=q?new Uint8Array(l*S*T):void 0,k=[];if(q){const G=Math.ceil(D),z=D*D;for(let W=-G;W<=G;++W)for(let X=-G;X<=G;++X)for(let Y=-G;Y<=G;++Y)Y*Y+X*X+W*W<=z&&k.push([Y,X,W])}const j=[],H=(0,r.Vec3)();for(let G=0;G<L.length;G+=3){v.shouldUpdate&&await v.update({current:G/3+1}
7083),i(H,L,G);const z=p(b,U,H,M,N);if(z.length*M>=3&&(j.push(z),N))for(let W=0,X=z.length;W<X;++W){const Y=z[W],K=Math.round(Y[0]),Q=Math.round(Y[1]),J=Math.round(Y[2]);for(let ae=0,te=k.length;ae<te;++ae){const ne=k[ae],$=K+ne[0],ie=Q+ne[1],Z=J+ne[2];$>=0&&$<l&&ie>=0&&ie<S&&Z>=0&&Z<T&&(N[A($,ie,Z)]=1)}}}return j}async function m(v,b,P){return u(v.runtime,b.grid,P)}return Zd}var p9;function jw(){return p9||(p9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StreamlinesProvider=e.StreamlinesParams=void 0;const t=Ne(),r=Pr(),n=$se(),i=oc(),c=Xse();e.StreamlinesParams={type:t.ParamDefinition.MappedStatic("basic",{basic:t.ParamDefinition.Group(c.BasicStreamlineCalculationParams,{isFlat:!0})})},e.StreamlinesProvider=n.CustomVolumeProperty.createProvider({label:"Streamlines",descriptor:(0,r.CustomPropertyDescriptor)({name:"molstar_streamlines"}),defaultParams:e.StreamlinesParams,getParams:o=>e.StreamlinesParams,isApplicable:o=>!i.Volume.Segmentation.get(o),obtain:async(o,s,h)=>{const f={...t.ParamDefinition.getDefaultValues(e.StreamlinesParams),...h};if(f.type.name==="basic")return{value:await(0,c.calculateBasicStreamlines)(o,s,f.type.params)}}})})(rM)),rM}var nM={},KP={},h9;function Gw(){if(h9)return KP;h9=1,Object.defineProperty(KP,"__esModule",{value:!0}),KP.addTube=P;const e=Ge(),t=_t(),r=(0,e.Vec3)(),n=(0,e.Vec3)(),i=(0,e.Vec3)(),c=(0,e.Vec3)(),o=(0,e.Vec3)(),s=(0,e.Vec3)();function h(C,l,S,T,A){C[0]=l[0]*T+S[0]*A,C[1]=l[1]*T+S[1]*A,C[2]=l[2]*T+S[2]*A}function f(C,l,S,T,A,x){C[0]=l[0]*A+S[0]*x+T[0],C[1]=l[1]*A+S[1]*x+T[1],C[2]=l[2]*A+S[2]*x+T[2]}const y=e.Vec3.fromArray,_=e.Vec3.normalize,g=e.Vec3.scaleAndAdd,a=e.Vec3.cross,d=e.Vec3.slerp,p=e.Vec3.dot,u=e.Vec3.unitX,m=t.ChunkedArray.add3,v=new Map;function b(C,l){const S=l?1:0,T=(0,t.cantorPairing)(C,S);if(!v.has(T)){const A=[],x=[];for(let M=0;M<C;++M){const D=(M*2+S)/C*Math.PI;A[M]=Math.cos(D),x[M]=Math.sin(D)}v.set(T,{cos:A,sin:x})}return v.get(T)}function P(C,l,S,T,A,x,M,D,V,R,E,I=!1){const{currentGroup:B,vertices:w,normals:O,indices:F,groups:L}=C;let U=w.elementCount;const{cos:q,sin:N}=b(x,E==="rounded"),k=Math.round(x/4),j=k*3,H=I&&A&&(V||R);let G;const z=H&&V&&R;z&&(G=A/2);for(let Y=0;Y<=A;++Y){const K=Y*3;y(o,S,K),y(s,T,K),y(c,l,K);let Q=M[Y],J=D[Y],ae;if(H){const ne=z?Y<=G:V;z?ae=Math.max(Number.EPSILON,Math.sqrt(1-Math.pow((ne?G-Y:Y-G)/G,2))):ae=Math.max(Number.EPSILON,Math.sqrt(1-Math.pow((ne?A-Y:Y)/A,2))),Q*=ae,J*=ae,a(n,ne?s:o,ne?o:s),_(n,n)}const te=E==="rounded"&&J>Q;for(let ne=0;ne<x;++ne){if(te){f(i,o,s,c,Q*q[ne],Q*N[ne]);const $=p(s,u)<0?ne<k||ne>=j?J-Q:-J+Q:ne>=k&&ne<j?-J+Q:J-Q;g(i,i,o,$),ne===k||ne===k-1?h(r,o,s,0,1):ne===j||ne===j-1?h(r,o,s,0,-1):h(r,o,s,q[ne],N[ne])}else f(i,o,s,c,J*q[ne],Q*N[ne]),h(r,o,s,Q*q[ne],J*N[ne]);_(r,r),m(w,i[0],i[1],i[2]),H&&d(r,n,r,ae),m(O,r[0],r[1],r[2])}}const W=Math.round(x/2);for(let Y=0;Y<A;++Y){for(let K=0;K<W;++K)m(F,U+Y*x+(K+1)%x,U+(Y+1)*x+(K+1)%x,U+Y*x+K),m(F,U+(Y+1)*x+(K+1)%x,U+(Y+1)*x+K,U+Y*x+K);for(let K=W;K<x;++K)m(F,U+Y*x+(K+1)%x,U+(Y+1)*x+K,U+Y*x+K),m(F,U+(Y+1)*x+(K+1)%x,U+(Y+1)*x+K,U+Y*x+(K+1)%x)}if(V){const K=w.elementCount;y(o,S,0),y(s,T,0),y(c,l,0),a(r,s,o),m(w,c[0],c[1],c[2]),m(O,r[0],r[1],r[2]);const Q=H?0:M[0];let J=H?0:D[0];const ae=E==="rounded"&&J>Q;ae&&(J-=Q),U=w.elementCount;for(let te=0;te<x;++te)ae?(f(i,o,s,c,Q*q[te],Q*N[te]),g(i,i,o,te<k||te>=j?J:-J)):f(i,o,s,c,J*q[te],Q*N[te]),m(w,i[0],i[1],i[2]),m(O,r[0],r[1],r[2]),m(F,U+(te+1)%x,U+te,K)}if(R){const Y=A*3,K=w.elementCount;y(o,S,Y),y(s,T,Y),y(c,l,Y),a(r,o,s),m(w,c[0],c[1],c[2]),m(O,r[0],r[1],r[2]);const Q=H?0:M[A];let J=H?0:D[A];const ae=E==="rounded"&&J>Q;ae&&(J-=Q),U=w.elementCount;for(let te=0;te<x;++te)ae?(f(i,o,s,c,Q*q[te],Q*N[te]),g(i,i,o,te<k||te>=j?J:-J)):f(i,o,s,c,J*q[te],Q*N[te]),m(w,i[0],i[1],i[2]),m(O,r[0],r[1],r[2]),m(F,U+te,U+(te+1)%x,K)}const X=(A+1)*x+(V?x+1:0)+(R?x+1:0);t.ChunkedArray.addRepeat(L,X,B)}return KP}var nl={},g9;function Zf(){if(g9)return nl;g9=1,Object.defineProperty(nl,"__esModule",{value:!0}),nl.VolumeParams=void 0,nl.VolumeRepresentationProvider=y,nl.VolumeRepresentation=_;const e=Ne(),t=ea(),r=ds(),n=gt(),i=ql(),c=Ge(),o=Lt(),s=Tt(),h=Rn(),f=nt();function y(g){return g}nl.VolumeParams={...s.BaseGeometry.Params};function _(g,a,d,p,u,m=()=>[-1]){let v=0;const{webgl:b}=a,P=new h.Subject,C=new o.Representation.GeometryState,l=(0,r.getNextMaterialId)(),S=[],T=o.Representation.createState(),A=new Map;let x,M,D,V,R=t.Theme.createEmpty();async function E(U,q){var N;let k=A.get(q);return k?!((N=k.mustRecreate)===null||N===void 0)&&N.call(k,{volume:x,key:q},V,b)&&(k.destroy(),k=p(l,x,q,V,b),A.set(q,k)):(k=p(l,x,q,V,b),A.set(q,k)),k.createOrUpdate({webgl:b,runtime:U},R,V,{volume:x,key:q})}function I(U={},q){q&&q!==x&&(D=d(a,q),x=q,V||(V=e.ParamDefinition.getDefaultValues(D)));const N=(0,i.getQualityProps)(Object.assign({},V,U),x);return Object.assign(V,U,N),M=m(V,x),f.Task.create("Creating or updating VolumeRepresentation",async k=>{const j=new Set(A.keys());for(let H=0,G=M.length;H<G;++H){const z=M[H];j.delete(z);const W=E(k,z);W&&await W}j.forEach(H=>{var G;
7083(G=A.get(H))===null||G===void 0||G.destroy(),A.delete(H)}),S.length=0,A.forEach(H=>{H.renderObject&&(S.push(H.renderObject),C.add(H.renderObject.id,H.geometryVersion))}),C.snapshot(),P.next(v++)})}function B(U,q){let N=!1;return A.forEach(k=>{N=k.mark(U,q)||N}),N}function w(U,q){q.visible!==void 0&&U&&U.setVisibility(q.visible),q.alphaFactor!==void 0&&U&&U.setAlphaFactor(q.alphaFactor),q.pickable!==void 0&&U&&U.setPickable(q.pickable),q.overpaint!==void 0&&U&&U.setOverpaint(q.overpaint),q.transparency!==void 0&&U&&U.setTransparency(q.transparency),q.emissive!==void 0&&U&&U.setEmissive(q.emissive),q.substance!==void 0&&U&&U.setSubstance(q.substance),q.clipping!==void 0&&U&&U.setClipping(q.clipping),q.wiggle!==void 0&&U&&U.setWiggle(q.wiggle),q.transform!==void 0&&U&&U.setTransform(q.transform),q.themeStrength!==void 0&&U&&U.setThemeStrength(q.themeStrength)}function O(U){const{visible:q,alphaFactor:N,pickable:k,overpaint:j,transparency:H,emissive:G,substance:z,clipping:W,wiggle:X,transform:Y,themeStrength:K,syncManually:Q,markerActions:J}=U,ae={};q!==void 0&&(ae.visible=q),N!==void 0&&(ae.alphaFactor=N),k!==void 0&&(ae.pickable=k),j!==void 0&&(ae.overpaint=j),H!==void 0&&(ae.transparency=H),G!==void 0&&(ae.emissive=G),z!==void 0&&(ae.substance=z),W!==void 0&&(ae.clipping=W),X!==void 0&&(ae.wiggle=X),K!==void 0&&(ae.themeStrength=K),Y!==void 0&&!c.Mat4.areEqual(Y,T.transform,c.EPSILON)&&(ae.transform=Y),Q!==void 0&&(ae.syncManually=Q),J!==void 0&&(ae.markerActions=J),A.forEach(te=>w(te,ae)),o.Representation.updateState(T,U)}function F(U){R=U}function L(){A.forEach(U=>U.destroy()),A.clear()}return{label:g,get groupCount(){let U=0;return A.forEach(q=>{q.renderObject&&(U+=q.groupCount)}),U},get props(){return V},get params(){return D},get state(){return T},get theme(){return R},get geometryVersion(){return C.version},renderObjects:S,updated:P,createOrUpdate:I,setState:O,setTheme:F,getLoci:U=>{let q=n.EmptyLoci;for(const N of A.values()){const k=N.getLoci(U);if(!(0,n.isEmptyLoci)(k)){q=k;break}}return q},getAllLoci:()=>[u(x,V)],eachLocation:U=>{A.forEach(q=>{q.eachLocation(U)})},mark:B,destroy:L}}return nl}var Ur={},y9;function Kse(){if(y9)return Ur;
7083y9=1,Object.defineProperty(Ur,"__esModule",{value:!0}),Ur.CommonStreamlinesParams=void 0,Ur.StreamlinesLocation=_,Ur.isStreamlinesLocation=g,Ur.areStreamlinesLocationsEqual=a,Ur.streamlinesLocationLabel=d,Ur.streamlinesLociLabel=p,Ur.StreamlinesLoci=u,Ur.isStreamlinesLoci=m,Ur.getStreamlinesLociSize=v,Ur.getStreamlinesLociBoundingSphere=l,Ur.areStreamlinesLociEqual=S,Ur.isStreamlinesLociEmpty=T,Ur.streamlinePassesFilter=x,Ur.getStreamlinesVisualLoci=M,Ur.getStreamlinesLoci=D,Ur.eachStreamlines=V,Ur.createStreamlinesLocationIterator=R;const e=In(),t=nn(),r=zt(),n=Xa(),i=gt(),c=zf(),o=oc(),s=jw(),h=Ne(),f=Ki(),y=wt();function _(E,I,B,w){return(0,n.DataLocation)("streamlines",{volume:I,streamlines:E},{index:B,instance:w})}function g(E){return!!E&&E.kind==="data-location"&&E.tag==="streamlines"}function a(E,I){return E.data.volume===I.data.volume&&E.data.streamlines===I.data.streamlines&&E.element.index===I.element.index&&E.element.instance===I.element.instance}function d(E,I,B,w){const O=[`${I.label||"Volume"}`,`Streamline #${B}`];return I.instances.length>1&&O.push(`Instance #${w}`),O.join(" | ")}function p(E,I,B){const w=v(B),O=[`${I.label||"Volume"}`];if(w===0)O.push("No Streamlines");else if(w===1){const F=t.OrderedSet.start(B[0].indices);if(O.push(`Streamline #${F}`),I.instances.length>1){const L=t.OrderedSet.start(B[0].instances);O.push(`Instance #${L}`)}}else O.push(`${w} Streamlines`);return O.join(" | ")}function u(E,I,B){return(0,i.DataLoci)("streamlines",{streamlines:E,volume:I},B,w=>l(E,I,B,w),()=>p(E,I,B))}function m(E){return!!E&&E.kind==="data-loci"&&E.tag==="streamlines"}function v(E){let I=0;for(const B of E)I+=t.OrderedSet.size(B.indices)*t.OrderedSet.size(B.instances);return I}const b=new f.BoundaryHelper("98"),P=(0,y.Vec3)(),C=(0,y.Vec3)();function l(E,I,B,w){b.reset();const O=c.Grid.getGridToCartesianTransform(I.grid);for(const{indices:F,instances:L}of B)for(let U=0,q=t.OrderedSet.size(F);U<q;U++){const N=t.OrderedSet.getAt(F,U);for(const k of E[N]){y.Vec3.transformMat4(P,k,O);for(let j=0,H=t.OrderedSet.size(L);j<H;j++){const G=I.instances[t.OrderedSet.getAt(L,j)];y.Vec3.transformMat4(C,P,G.transform),b.includePosition(C)}}}b.finishedIncludeStep();for(const{indices:F,instances:L}of B)for(let U=0,q=t.OrderedSet.size(F);U<q;U++){const N=t.OrderedSet.getAt(F,U);for(const k of E[N]){y.Vec3.transformMat4(P,k,O);for(let j=0,H=t.OrderedSet.size(L);j<H;j++){const G=I.instances[t.OrderedSet.getAt(L,j)];y.Vec3.transformMat4(C,P,G.transform),b.radiusPosition(C)}}}return b.getSphere(w)}function S(E,I){if(E.data.volume!==I.data.volume||E.elements.length!==I.elements.length)return!1;for(let B=0,w=E.elements.length;B<w;++B){const O=E.elements[B],F=I.elements[B];if(!t.OrderedSet.areEqual(O.instances,F.instances)||!t.OrderedSet.areEqual(O.indices,F.indices))return!1}return!0}function T(E){for(const{indices:I,instances:B}of E.elements)if(!t.OrderedSet.isEmpty(I)||!t.OrderedSet.isEmpty(B))return!1;return!0}Ur.CommonStreamlinesParams={anchorEnabled:h.ParamDefinition.Boolean(!1,{label:"Anchor"}),anchorCenter:h.ParamDefinition.Vec3((0,y.Vec3)(),void 0,{hideIf:E=>!E.anchorEnabled}),anchorRadius:h.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},{hideIf:E=>!E.anchorEnabled}),dashEnabled:h.ParamDefinition.Boolean(!1,{label:"Dash"}),dashPoints:h.ParamDefinition.Numeric(5,{min:1,max:25,step:1},{description:"Number of streamline points per dash/gap",hideIf:E=>!E.dashEnabled}),dashShift:h.ParamDefinition.Boolean(!1,{description:"Shift dashes so dashes become gaps and vice versa",hideIf:E=>!E.dashEnabled})};const A=(0,y.Vec3)();function x(E,I,B){if(E.length<2)return!1;if(!B.anchorEnabled)return!0;const w=E[0];if(y.Vec3.transformMat4(A,w,I),y.Vec3.distance(A,B.anchorCenter)<=B.anchorRadius)return!0;const O=E[E.length-1];return y.Vec3.transformMat4(A,O,I),y.Vec3.distance(A,B.anchorCenter)<=B.anchorRadius}function M(E,I){const B=s.StreamlinesProvider.get(E).value,w=e.Interval.ofLength(B.length),O=e.Interval.ofLength(E.instances.length);return u(B,E,[{indices:w,instances:O}])}function D(E,I,B,w,O){const{objectId:F,groupId:L,instanceId:U}=E;if(O===F){const q=o.Volume.PickingGranularity.get(I),N=t.OrderedSet.ofSingleton(U);if(q==="volume")return o.Volume.Loci(I,N);const k=s.StreamlinesProvider.get(I).value,j=t.OrderedSet.ofSingleton(L);return u(k,I,[{indices:j,instances:N}])}return i.EmptyLoci}function V(E,I,B,w,O){let F=!1;const U=s.StreamlinesProvider.get(I).value.length;if(o.Volume.isLoci(E)){if(!o.Volume.areEquivalent(E.volume,I))return!1;if(e.Interval.is(E.instances)){const q=e.Interval.start(E.instances)*U,N=e.Interval.end(E.instances)*U;O(e.Interval.ofBounds(q,N))&&(F=!0)}else for(let q=0,N=E.instances.length;q<N;++q){const k=E.instances[q]*U;O(e.Interval.ofBounds(k,k+U))&&(F=!0)}}else if(m(E)){if(!o.Volume.areEquivalent(E.data.volume,I))return!1;for(const{indices:q,instances:N}of E.elements)e.Interval.is(q)?t.OrderedSet.forEach(N,k=>{const j=k*U;
7083O(e.Interval.offset(q,j))&&(F=!0)}):t.OrderedSet.forEach(q,k=>{t.OrderedSet.forEach(N,j=>{const H=j*U;O(e.Interval.ofSingleton(H+k))&&(F=!0)})})}return F}function R(E){const I=s.StreamlinesProvider.get(E).value,B=I.length,w=E.instances.length,O=_(I,E),F=(L,U)=>(O.element.index=L,O.element.instance=U,O);return(0,r.LocationIterator)(B,w,1,F)}return Ur}var YP={},v9;function Yse(){if(v9)return YP;v9=1,Object.defineProperty(YP,"__esModule",{value:!0}),YP.computeFrenetFrames=g;const e=wt(),t=e.Vec3.fromArray,r=e.Vec3.sub,n=e.Vec3.normalize,i=e.Vec3.isZero,c=e.Vec3.set,o=e.Vec3.cross,s=e.Vec3.toArray,h=e.Vec3.copy,f=e.Vec3.magnitude,y=e.Vec3.rotateAroundAxis,_=e.Vec3.dot;function g(a,d,p,u){const m=(0,e.Vec3)(),v=(0,e.Vec3)(),b=(0,e.Vec3)(),P=(0,e.Vec3)(),C=(0,e.Vec3)(),l=(0,e.Vec3)();t(C,a,0),t(l,a,3),r(m,l,C),n(m,m),i(m)&&c(m,1,0,0);const S=Math.abs(m[0]),T=Math.abs(m[1]),A=Math.abs(m[2]);S<=T&&S<=A?c(b,1,0,0):T<=A?c(b,0,1,0):c(b,0,0,1),o(P,m,b),n(P,P),o(b,P,m),n(b,b),s(b,d,0),s(P,p,0),h(v,m);for(let x=1;x<u;++x){x<u-1?(t(C,a,(x-1)*3),t(l,a,(x+1)*3),r(m,l,C)):(t(C,a,(x-1)*3),t(l,a,x*3),r(m,l,C)),n(m,m);const M=_(v,m);if(M<.9999){const D=(0,e.Vec3)();if(o(D,v,m),f(D)>1e-4){n(D,D);const V=Math.acos(Math.min(1,Math.max(-1,M)));y(b,b,D,V),y(P,P,D,V)}}o(P,m,b),n(P,P),o(b,P,m),n(b,b),s(b,d,x*3),s(P,p,x*3),h(v,m)}}return YP}var Jd={},b9;function Jf(){if(b9)return Jd;b9=1,Object.defineProperty(Jd,"__esModule",{value:!0}),Jd.VolumeParams=void 0,Jd.VolumeVisual=C;const e=Ul(),t=sn(),r=Ll(),n=ea(),i=kl(),c=ds(),o=_n(),s=gt(),h=at(),f=ql(),y=ms(),_=et(),g=ls(),a=wi(),d=Ge(),p=Gt(),u=li(),m=ps(),v=Tt();Jd.VolumeParams={...v.BaseGeometry.Params};function b(l,S,T,A,x){const M=l.instances.length,D=new Float32Array(M*16);for(let V=0;V<M;++V)d.Mat4.toArray(l.instances[V].transform,D,V*16);return(0,i.createTransform)(D,M,S,T,A,x)}function P(l,S,T,A,x,M){const{createValues:D,createRenderableState:V}=r.Geometry.getUtils(S),R=T.nonInstanceable?(0,i.createIdentityTransform)():b(l,S.boundingSphere,x.cellSize,x.batchSize),E=D(S,R,T,A,x),I=V(x);return(0,c.createRenderObject)(S.kind,E,I,M)}function C(l,S){const{defaultProps:T,createGeometry:A,createLocationIterator:x,getLoci:M,eachLocation:D,setUpdateState:V,initUpdateState:R,mustRecreate:E,dispose:I}=l,{updateValues:B,updateBoundingSphere:w,updateRenderableState:O,createPositionIterator:F}=l.geometryUtils,L=f.VisualUpdateState.create();let U,q,N,k,j,H=Object.assign({},T),G=n.Theme.createEmpty(),z,W,X,Y=-1,K,Q;function J($,ie,Z,re){if(!Z&&!z)throw new Error("missing volume");if(q=Object.assign({},H,ie),N=$,k=Z,j=re,f.VisualUpdateState.reset(L),U?t.Grid.areEquivalent(k.grid,z.grid)&&!t.Volume.areInstanceTransformsEqual(k,z)?L.updateTransform=!0:(!t.Volume.areEquivalent(k,z)||j!==W)&&(L.createNew=!0):L.createNew=!0,L.createNew){R?.(L,k,q,N
7083),L.createGeometry=!0;return}V(L,k,z,q,H,N,G),y.ColorTheme.areEqual(N.color,G.color)||(L.updateColor=!0),m.SizeTheme.areEqual(N.size,G.size)||(L.updateSize=!0),K.nonInstanceable?q.instanceGranularity!==H.instanceGranularity&&(L.updateTransform=!0):((q.instanceGranularity!==H.instanceGranularity||q.cellSize!==H.cellSize||q.batchSize!==H.batchSize)&&(L.updateTransform=!0),L.updateTransform&&(L.updateMatrix=!0)),L.updateSize&&!("uSize"in U.values)&&(L.createGeometry=!0),L.createGeometry&&(L.updateColor=!0,L.updateSize=!0)}function ae($){if(L.createNew)if($)K=x(k,j,$),U=P(k,$,K,N,q,S),Q=F($,U.values);else throw new Error("expected geometry to be given");else{if(!U)throw new Error("expected renderObject to be available");if((L.updateColor||L.updateSize||L.updateTransform||L.updateLocation)&&(K=x(k,j,$||X)),L.updateTransform||L.updateLocation){const{instanceCount:ie,groupCount:Z}=K;(0,v.resolveInstanceGranularity)(q.instanceGranularity,Z,ie)?(0,u.createMarkers)(ie,"instance",U.values):(0,u.createMarkers)(ie*Z,"groupInstance",U.values)}if(L.updateMatrix&&b(k,X.boundingSphere,q.cellSize,q.batchSize,U.values),L.createGeometry)if($)_.ValueCell.updateIfChanged(U.values.drawCount,r.Geometry.getDrawCount($)),_.ValueCell.updateIfChanged(U.values.uVertexCount,r.Geometry.getVertexCount($)),_.ValueCell.updateIfChanged(U.values.uGroupCount,K.groupCount);else throw new Error("expected geometry to be given");(L.updateTransform||L.createGeometry)&&(w(U.values,$||X),Q=F($||X,U.values)),L.updateSize&&"uSize"in U.values&&(0,g.createSizes)(K,Q,N.size,U.values),L.updateColor&&(0,a.createColors)(K,Q,N.color,U.values),B(U.values,q),O(U.state,q)}H=q,G=N,z=k,W=j,$&&(X=$,Y+=1)}function te($,ie,Z,re){let oe=!1;if(t.Volume.Cell.isLoci($)){if(t.Volume.Cell.isLociEmpty($)||!t.Volume.areEquivalent($.volume,ie))return!1;for(const{instances:ce}of $.elements)h.OrderedSet.forEach(ce,ue=>{re(h.Interval.ofSingleton(ue))&&(oe=!0)})}else if(t.Volume.Segment.isLoci($)){if(t.Volume.Segment.isLociEmpty($)||!t.Volume.areEquivalent($.volume,ie))return!1;for(const{segments:ce,instances:ue}of $.elements)h.OrderedSet.has(ce,Z)&&h.OrderedSet.forEach(ue,pe=>{re(h.Interval.ofSingleton(pe))&&(oe=!0)})}else if(t.Volume.Isosurface.isLoci($)){if(t.Volume.Isosurface.isLociEmpty($))return!1;if(h.Interval.is($.instances))re($.instances)&&(oe=!0);else for(let ce=0,ue=$.instances.length;ce<ue;++ce)re(h.Interval.ofSingleton(ce))&&(oe=!0)}else if(t.Volume.isLoci($)){if(t.Volume.isLociEmpty($))return!1;if(h.Interval.is($.instances))re($.instances)&&(oe=!0);else for(let ce=0,ue=$.instances.length;ce<ue;++ce)re(h.Interval.ofSingleton(ce))&&(oe=!0)}return oe}function ne($,ie){const Z=(0,v.resolveInstanceGranularity)(H.instanceGranularity,K.groupCount,K.instanceCount);return(0,s.isEveryLoci)($)?ie(Z?h.Interval.ofBounds(0,K.instanceCount):h.Interval.ofBounds(0,K.groupCount*K.instanceCount)):Z?te($,z,W,ie):D($,z,W,H,ie,X)}return{get groupCount(){return K?K.count:0},get renderObject(){return U},get geometryVersion(){return Y},async createOrUpdate($,ie,Z={},re){if(J(ie,Z,re?.volume||z,re?.key||W),L.createGeometry){const oe=A($,k,j,N,q,X);return(0,p.isPromiseLike)(oe)?oe.then(ae):ae(oe)}else ae()},getLoci($){return U?((0,v.resolveInstanceGranularity)(H.instanceGranularity,K.groupCount,K.instanceCount)&&($={...$,groupId:o.PickingId.Null}),M($,z,W,H,U.id,X)):s.EmptyLoci},eachLocation($){for(K.reset();K.hasNext;){const{location:ie,isSecondary:Z}=K.move();$(ie,Z)}},mark($,ie){return e.Visual.mark(U,$,ie,ne)},setVisibility($){e.Visual.setVisibility(U,$)},setAlphaFactor($){e.Visual.setAlphaFactor(U,$)},setPickable($){e.Visual.setPickable(U,$)},setColorOnly($){e.Visual.setColorOnly(U,$)},setTransform($,ie){e.Visual.setTransform(U,$,ie)},setOverpaint($){return e.Visual.setOverpaint(U,$,ne,!0)},setTransparency($){return e.Visual.setTransparency(U,$,ne,!0)},setEmissive($){return e.Visual.setEmissive(U,$,ne,!0)},setSubstance($){return e.Visual.setSubstance(U,$,ne,!0)},setClipping($){return e.Visual.setClipping(U,$,ne,!0)},setWiggle($){return e.Visual.setWiggle(U,$,ne,!0)},setThemeStrength($){e.Visual.setThemeStrength(U,$)},destroy(){I?.(X),U&&(U.state.disposed=!0,U=void 0)},mustRecreate:E}}return Jd}
7083var _9;function Qse(){return _9||(_9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StreamlinesRepresentationProvider=e.StreamlinesParams=e.StreamlinesTubeMeshParams=e.StreamlinesLinesParams=void 0,e.VolumeStreamlinesLinesVisual=C,e.VolumeStreamlinesTubeMeshVisual=T,e.getStreamlinesParams=E,e.StreamlinesRepresentation=I;const t=Ne(),r=Ge(),n=kn(),i=ac(),c=Rt(),o=$t(),s=Gw(),h=sn(),f=Zf(),y=Lt(),_=Kse(),g=rt(),a=jw(),d=Tt(),p=Yse(),u=Jf(),m=zt(),v=r.Vec3.transformMat4,b=r.Vec3.transformMat4Offset,P=r.Vec3.toArray;e.StreamlinesLinesParams={..._.CommonStreamlinesParams,...n.Lines.Params,useLineStrips:t.ParamDefinition.Boolean(!0)};function C(B){return(0,u.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StreamlinesLinesParams),createGeometry:S,createLocationIterator:_.createStreamlinesLocationIterator,getLoci:_.getStreamlinesLoci,eachLocation:_.eachStreamlines,setUpdateState:(w,O,F,L,U)=>{const q=a.StreamlinesProvider.get(O).version;w.info.streamlinesHash!==q&&(w.info.streamlinesHash!==void 0&&(w.createGeometry=!0,w.updateLocation=!0),w.info.streamlinesHash=q),(L.anchorEnabled!==U.anchorEnabled||!r.Vec3.equals(L.anchorCenter,U.anchorCenter)||L.anchorRadius!==U.anchorRadius)&&(w.createGeometry=!0),(L.dashEnabled!==U.dashEnabled||L.dashPoints!==U.dashPoints||L.dashShift!==U.dashShift)&&(w.createGeometry=!0),L.useLineStrips!==U.useLineStrips&&(w.createGeometry=!0)},initUpdateState:(w,O,F,L)=>{const U=a.StreamlinesProvider.get(O).version;w.info.streamlinesHash=U},geometryUtils:n.Lines.Utils},B)}function l(B){let w=0;for(const O of B)w+=O.length;return w}function S(B,w,O,F,L,U){const{cells:{space:q}}=w.grid,N=q.dimensions,k=h.Grid.getGridToCartesianTransform(w.grid),j=a.StreamlinesProvider.get(w).value,H=l(j),{dashEnabled:G,dashPoints:z,dashShift:W}=L,X=z*2;let Y;
7083if(L.useLineStrips){const Q=i.StripLinesBuilder.create(H,Math.ceil(H/10),U);Y=Q;const J=(0,r.Vec3)();for(let ae=0,te=j.length;ae<te;++ae){const ne=j[ae];if((0,_.streamlinePassesFilter)(ne,k,L))if(G){let $=!1;for(let ie=0,Z=ne.length;ie<Z;++ie){const re=ie%X;(W?re>=z:re<z)?($||(Q.start(ae),$=!0),v(J,ne[ie],k),Q.addVec(J)):$&&(v(J,ne[ie],k),Q.addVec(J),Q.end(),$=!1)}$&&Q.end()}else{Q.start(ae);for(let $=0,ie=ne.length;$<ie;++$)v(J,ne[$],k),Q.addVec(J);Q.end()}}}else{const Q=i.LinesBuilder.create(H,Math.ceil(H/10),U);Y=Q;const J=(0,r.Vec3)(),ae=(0,r.Vec3)();for(let te=0,ne=j.length;te<ne;++te){const $=j[te];if((0,_.streamlinePassesFilter)($,k,L))if(G){r.Vec3.transformMat4(J,$[0],k);for(let ie=1,Z=$.length;ie<Z;++ie){r.Vec3.transformMat4(ae,$[ie],k);const re=(ie-1)%(z*2);(W?re>=z:re<z)&&Q.addVec(J,ae,te),r.Vec3.copy(J,ae)}}else{r.Vec3.transformMat4(J,$[0],k);for(let ie=1,Z=$.length;ie<Z;++ie)r.Vec3.transformMat4(ae,$[ie],k),Q.addVec(J,ae,te),r.Vec3.copy(J,ae)}}}const K=Y.getLines();return K.setBoundingSphere(g.Sphere3D.fromDimensionsAndTransform((0,g.Sphere3D)(),N,k)),K}e.StreamlinesTubeMeshParams={..._.CommonStreamlinesParams,...c.Mesh.Params,tubeSizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),radialSegments:t.ParamDefinition.Numeric(8,{min:2,max:56,step:2},d.BaseGeometry.CustomQualityParamInfo)};function T(B){return(0,u.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StreamlinesTubeMeshParams),createGeometry:A,createLocationIterator:_.createStreamlinesLocationIterator,getLoci:_.getStreamlinesLoci,eachLocation:_.eachStreamlines,setUpdateState:(w,O,F,L,U)=>{const q=a.StreamlinesProvider.get(O).version;w.info.streamlinesHash!==q&&(w.info.streamlinesHash!==void 0&&(w.createGeometry=!0,w.updateLocation=!0),w.info.streamlinesHash=q),(L.tubeSizeFactor!==U.tubeSizeFactor||L.radialSegments!==U.radialSegments)&&(w.createGeometry=!0),(L.anchorEnabled!==U.anchorEnabled||!r.Vec3.equals(L.anchorCenter,U.anchorCenter)||L.anchorRadius!==U.anchorRadius)&&(w.createGeometry=!0),(L.dashEnabled!==U.dashEnabled||L.dashPoints!==U.dashPoints||L.dashShift!==U.dashShift)&&(w.createGeometry=!0)},initUpdateState:(w,O,F,L)=>{const U=a.StreamlinesProvider.get(O).version;w.info.streamlinesHash=U},geometryUtils:c.Mesh.Utils},B)}function A(B,w,O,F,L,U){const{cells:{space:q}}=w.grid,N=q.dimensions,k=h.Grid.getGridToCartesianTransform(w.grid),j=a.StreamlinesProvider.get(w).value,{tubeSizeFactor:H,radialSegments:G,dashEnabled:z,dashPoints:W,dashShift:X}=L,K=l(j)*G*2,Q=o.MeshBuilder.createState(K,Math.ceil(K/10),U);for(let ae=0,te=j.length;ae<te;++ae){const ne=j[ae];(0,_.streamlinePassesFilter)(ne,k,L)&&(Q.currentGroup=ae,z?D(Q,ne,k,G,H,W,X,F):M(Q,ne,k,G,H,F))}const J=o.MeshBuilder.getMesh(Q);return J.setBoundingSphere(g.Sphere3D.fromDimensionsAndTransform((0,g.Sphere3D)(),N,k)),J}const x=(0,m.PositionLocation)();function M(B,w,O,F,L,U){const q=w.length;if(q<2)return;const N=q-1,k=new Float32Array(q*3),j=new Float32Array(q*3),H=new Float32Array(q*3),G=new Float32Array(q),z=new Float32Array(q);for(let W=0;W<q;++W){const X=w[W];b(k,X,O,W*3,0,0),r.Vec3.fromArray(x.position,k,W*3);const Y=U.size.size(x)*L;G[W]=Y,z[W]=Y}(0,p.computeFrenetFrames)(k,j,H,q),(0,s.addTube)(B,k,j,H,N,F,G,z,!0,!0,"elliptical")}function D(B,w,O,F,L,U,q,N){const k=w.length;if(k<2)return;const j=[],H=[];for(let W=0;W<k;++W){const X=v((0,r.Vec3)(),w[W],O);j.push(X),r.Vec3.copy(x.position,X),H.push(N.size.size(x)*L)}const G=U*2;let z=q?U:0;for(;z<k-1;){const W=z,X=Math.min(z+U,k-1);X>W&&V(B,j,H,W,X,F),z+=G}}function V(B,w,O,F,L,U){const q=L-F+1;if(q<2)return;const N=new Float32Array(q*3),k=new Float32Array(q*3),j=new Float32Array(q*3),H=new Float32Array(q),G=new Float32Array(q);for(let z=0;z<q;++z)P(w[F+z],N,z*3),H[z]=O[F+z],G[z]=O[F+z];(0,p.computeFrenetFrames)(N,k,j,q),(0,s.addTube)(B,N,k,j,q-1,U,H,G,!0,!0,"elliptical")}const R={lines:(B,w)=>(0,f.VolumeRepresentation)("Streamlines lines",B,w,C,_.getStreamlinesVisualLoci),"tube-mesh":(B,w)=>(0,f.VolumeRepresentation)("Streamlines tube-mesh",B,w,T,_.getStreamlinesVisualLoci)};e.StreamlinesParams={...e.StreamlinesLinesParams,...e.StreamlinesTubeMeshParams,visuals:t.ParamDefinition.MultiSelect(["lines"],t.ParamDefinition.objectToOptions(R)),density:t.ParamDefinition.Numeric(.1,{min:0,max:1,step:.
708301},d.BaseGeometry.ShadingCategory)};function E(B,w){return t.ParamDefinition.clone(e.StreamlinesParams)}function I(B,w){return y.Representation.createMulti("Streamlines",B,w,y.Representation.StateBuilder,R)}e.StreamlinesRepresentationProvider=(0,f.VolumeRepresentationProvider)({name:"streamlines",label:"Streamlines",description:"Displays streamlines.",factory:I,getParams:E,defaultValues:t.ParamDefinition.getDefaultValues(e.StreamlinesParams),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"uniform"},isApplicable:B=>!h.Volume.isEmpty(B)&&!h.Volume.Segmentation.get(B),ensureCustomProperties:{attach:(B,w)=>a.StreamlinesProvider.attach(B,w,void 0,!0),detach:B=>a.StreamlinesProvider.ref(B,!1)}})})(nM)),nM}var S9;function Zse(){if(S9)return Ob;S9=1,Object.defineProperty(Ob,"__esModule",{value:!0}),Ob.Streamlines=void 0;const e=di(),t=Ne(),r=jw(),n=Qse();return Ob.Streamlines=e.PluginBehavior.create({name:"streamlines-volume-prop",category:"custom-props",display:{name:"Streamlines"},ctor:class extends e.PluginBehavior.Handler{constructor(){super(...arguments),this.provider=r.StreamlinesProvider}update(i){const c=this.params.autoAttach!==i.autoAttach;return this.params.autoAttach=i.autoAttach,this.ctx.customVolumeProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),c}register(){this.ctx.customVolumeProperties.register(this.provider,this.params.autoAttach),this.ctx.representation.volume.registry.add(n.StreamlinesRepresentationProvider)}unregister(){this.ctx.customVolumeProperties.unregister(this.provider.descriptor.name),this.ctx.representation.volume.registry.remove(n.StreamlinesRepresentationProvider)}},params:()=>({autoAttach:t.ParamDefinition.Boolean(!1)})}),Ob}var C9;function Jse(){return C9||(C9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Streamlines=e.CrossLinkRestraint=e.BestDatabaseSequenceMapping=e.ValenceModel=e.SecondaryStructure=e.Interactions=e.AccessibleSurfaceArea=e.StructureInfo=void 0;var t=_se();Object.defineProperty(e,"StructureInfo",{enumerable:!0,get:function(){return t.StructureInfo}});var r=Tse();Object.defineProperty(e,"AccessibleSurfaceArea",{enumerable:!0,get:function(){return r.AccessibleSurfaceArea}});var n=Lse();Object.defineProperty(e,"Interactions",{enumerable:!0,get:function(){return n.Interactions}});var i=Nse();Object.defineProperty(e,"SecondaryStructure",{enumerable:!0,get:function(){return i.SecondaryStructure}});var c=qse();Object.defineProperty(e,"ValenceModel",{enumerable:!0,get:function(){return c.ValenceModel}});var o=jse();Object.defineProperty(e,"BestDatabaseSequenceMapping",{enumerable:!0,get:function(){return o.SIFTSMapping}});var s=Wse();Object.defineProperty(e,"CrossLinkRestraint",{enumerable:!0,get:function(){return s.CrossLinkRestraint}});var h=Zse();Object.defineProperty(e,"Streamlines",{enumerable:!0,get:function(){return h.Streamlines}})})(RA)),RA}var P9;function b2(){return P9||(P9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PluginBehaviors=e.BuiltInPluginBehaviors=void 0;const t=At;t.__exportStar(di(),e);const r=t.__importStar(eC()),n=t.__importStar(pse()),i=t.__importStar(hse()),c=t.__importStar(gse()),o=t.__importStar(yse()),s=t.__importStar(vse()),h=t.__importStar(bse()),f=t.__importStar(Jse());e.BuiltInPluginBehaviors={State:r,Representation:n,Camera:i,Misc:c},e.PluginBehaviors={Representation:o,Camera:s,State:h,CustomProps:f}})(VA)),VA}var Qo={},Fb={},T9;function ece(){if(T9)return Fb;T9=1,Object.defineProperty(Fb,"__esModule",{value:!0}),Fb.PluginFeatureDetection=void 0;const e=Ew();return Fb.PluginFeatureDetection={get defaultTransparency(){return(0,e.is_iOS)()?"blended":"wboit"},get preferWebGl1(){return typeof navigator>"u"||typeof window>"u"?!1:["Version/15.1 Safari","Version/15.2 Safari","Version/15.3 Safari"].some(r=>navigator.userAgent.indexOf(r)>0)?!0:(0,e.is_iOS)()}},Fb}var x9;function gs(){if(x9)return Qo;x9=1,Object.defineProperty(Qo,"__esModule",{value:!0}),Qo.PluginConfigManager=Qo.PluginConfig=Qo.PluginConfigItem=void 0;const e=Ke(),t=ece();class r{toString(){return this.key}valueOf(){return this.key}constructor(o,s){this.key=o,this.defaultValue=s}}Qo.PluginConfigItem=r;function n(c,o){return new r(c,o)}Qo.PluginConfig={item:n,General:{IsBusyTimeoutMs:n("plugin-config.is-busy-timeout",750),DisableAntialiasing:n("plugin-config.disable-antialiasing",!1),DisablePreserveDrawingBuffer:n("plugin-config.disable-preserve-drawing-buffer",!1),PixelScale:n("plugin-config.pixel-scale",1),PickScale:n("plugin-config.pick-scale",.25),Transparency:n("plugin-config.transparency",t.PluginFeatureDetection.defaultTransparency),PreferWebGl1:n("plugin-config.prefer-webgl1",t.PluginFeatureDetection.preferWebGl1),AllowMajorPerformanceCaveat:n("plugin-config.allow-major-performance-caveat",!1),PowerPreference:n("plugin-config.power-preference","high-performance"),ResolutionMode:n("plugin-config.resolution-mode","auto")},State:{DefaultServer:n("plugin-state.server","https://webchem.ncbr.muni.cz/molstar-state"),CurrentServer:n("plugin-state.server","https://webchem.ncbr.muni.cz/molstar-state"),HistoryCapacity:n("history-capacity.server",5)}
7083,VolumeStreaming:{Enabled:n("volume-streaming.enabled",!0),DefaultServer:n("volume-streaming.server","https://ds.litemol.org"),CanStream:n("volume-streaming.can-stream",(c,o)=>c.models.length===1&&e.Model.probablyHasDensityMap(c.models[0])),EmdbHeaderServer:n("volume-streaming.emdb-header-server","https://files.wwpdb.org/pub/emdb/structures")},Viewport:{ShowReset:n("viewer.show-reset-button",!0),ShowExpand:n("viewer.show-expand-button",!0),ShowToggleFullscreen:n("viewer.show-toggle-fullscreen-button",!0),ShowControls:n("viewer.show-controls-button",!0),ShowSettings:n("viewer.show-settings-button",!0),ShowSelectionMode:n("viewer.show-selection-model-button",!0),ShowAnimation:n("viewer.show-animation-button",!0),ShowTrajectoryControls:n("viewer.show-trajectory-controls",!0),ShowScreenshotControls:n("viewer.show-screenshot-controls",!0),ShowIllumination:n("viewer.show-illumination-button",!0),ShowXR:n("viewer.show-xr","always")},Download:{DefaultPdbProvider:n("download.default-pdb-provider","pdbe"),DefaultEmdbProvider:n("download.default-emdb-provider","pdbe")},Structure:{SizeThresholds:n("structure.size-thresholds",e.Structure.DefaultSizeThresholds),DefaultRepresentationPreset:n("structure.default-representation-preset","preset-structure-representation-auto"),DefaultRepresentationPresetParams:n("structure.default-representation-preset-params",{}),SaccharideCompIdMapType:n("structure.saccharide-comp-id-map-type","default")}
7083,Background:{Styles:n("background.styles",[])}};class i{get(o){return this._config.has(o)?this._config.get(o):o.defaultValue}set(o,s){this._config.set(o,s)}delete(o){this._config.delete(o)}constructor(o){this._config=new Map,o&&o.forEach(([s,h])=>this._config.set(s,h))}}return Qo.PluginConfigManager=i,Qo}var il={},Lb={},A9;function dc(){if(A9)return Lb;A9=1,Object.defineProperty(Lb,"__esModule",{value:!0}),Lb.PluginStateAnimation=void 0;var e;return(function(t){function r(i){return i}t.create=r;function n(i,c){var o,s;if(c.customDurationMs)return c.customDurationMs;const h=(s=(o=c.definition).getDuration)===null||s===void 0?void 0:s.call(o,c.params,i);if(h?.kind==="fixed")return h.durationMs}t.getDuration=n})(e||(Lb.PluginStateAnimation=e={})),Lb}var M9;function _2(){if(M9)return il;M9=1,Object.defineProperty(il,"__esModule",{value:!0}),il.AnimateStateSnapshotTransition=il.AnimateStateSnapshots=void 0;const e=y2(),t=zw(),r=Ne(),n=dc();async function i(c,o,s=!1){var h,f,y,_,g,a,d;if(o.data&&await c.runTask(c.state.data.setSnapshot(o.data)),!((h=o.canvas3d)===null||h===void 0)&&h.props){const p=r.ParamDefinition.normalizeParams(e.Canvas3DParams,o.canvas3d.props,"children");(!((f=o.camera)===null||f===void 0)&&f.current||!((y=o.camera)===null||y===void 0)&&y.focus)&&
7083(p.camera=void 0,p.cameraClipping=void 0,p.cameraFog=void 0),(_=c.canvas3d)===null||_===void 0||_.setProps(p)}!((g=o.camera)===null||g===void 0)&&g.current?(a=c.canvas3d)===null||a===void 0||a.requestCameraReset({snapshot:o.camera.current,durationMs:s||o.camera.transitionStyle==="instant"?0:o.camera.transitionDurationInMs}):!((d=o.camera)===null||d===void 0)&&d.focus&&c.managers.camera.focusObject({...o.camera.focus,durationMs:s||o.camera.transitionStyle==="instant"?0:o.camera.transitionDurationInMs})}return il.AnimateStateSnapshots=n.PluginStateAnimation.create({name:"built-in.animate-state-snapshots",display:{name:"State Snapshots"},isExportable:!0,params:()=>({}),canApply(c){const o=c.managers.snapshot.state.entries;return o.size<1?{canApply:!1,reason:"At least 1 state required."}:o.some(s=>!!s?.snapshot.startAnimation)?{canApply:!1,reason:"Nested animations not supported."}:{canApply:c.managers.snapshot.state.entries.size>0}},setup(c,o,s){const h=s.managers.snapshot.state.entries.get(0);i(s,h.snapshot,!0)},getDuration:(c,o)=>({kind:"fixed",durationMs:o.managers.snapshot.state.entries.toArray().reduce((s,h)=>{var f;return s+((f=h.snapshot.durationInMs)!==null&&f!==void 0?f:0)},0)}),initialState:(c,o)=>{const s=o.managers.snapshot.state.entries.toArray();return{totalDuration:s.reduce((h,f)=>{var y;return h+((y=f.snapshot.durationInMs)!==null&&y!==void 0?y:0)},0),snapshots:s,currentIndex:0,currentTransitionFrame:0}},async apply(c,o,s){var h;if(o.current>=c.totalDuration)return{kind:"finished"};let f=0,y=0,_=0;for(const u of c.snapshots){if(_=o.current-f,f+=(h=u.snapshot.durationInMs)!==null&&h!==void 0?h:0,o.current<f)break;y++}if(y>=c.snapshots.length)return{kind:"finished"};const{transition:g,camera:a,canvas3d:d}=c.snapshots[y].snapshot,p=t.PluginState.getStateTransitionFrameIndex(c.snapshots[y].snapshot,_);return g&&p!==void 0?y===c.currentIndex&&p===c.currentTransitionFrame?{kind:"skip"}:(p===0||y!==c.currentIndex?await i(s.plugin,{...g.frames[p],camera:a,canvas3d:d}):await i(s.plugin,g.frames[p]),{kind:"next",state:{...c,currentIndex:y,currentAnimationFrame:p}}):y===c.currentIndex?{kind:"skip"}:(await i(s.plugin,c.snapshots[y].snapshot),{kind:"next",state:{...c,currentIndex:y,currentAnimationFrame:void 0}})}}),il.AnimateStateSnapshotTransition=n.PluginStateAnimation.create({name:"built-in.animate-state-snapshot-transition",display:{name:"State Snapshot Transition"},isExportable:!0,params:()=>({}),canApply(c){const{snapshot:o}=c.managers,{current:s}=o;return s?.snapshot.transition?{canApply:!0}:{canApply:!1,reason:"No transition found"}},setup(c,o,s){var h,f;const{current:y}=s.managers.snapshot;y&&i(s,(f=(h=y.snapshot.transition)===null||h===void 0?void 0:h.frames[0])!==null&&f!==void 0?f:y.snapshot,!0)},getDuration:(c,o)=>{var s,h;const{current:f}=o.managers.snapshot;return f?.snapshot.transition?!((s=f.snapshot.transition)===null||s===void 0)&&s.loop?{kind:"infinite"}:{kind:"fixed",durationMs:(h=t.PluginState.getStateTransitionDuration(f.snapshot))!==null&&h!==void 0?h:0}:{kind:"fixed",durationMs:0}},initialState:(c,o)=>{var s,h;const{current:f}=o.managers.snapshot;if(f)return{totalDuration:!((s=f.snapshot.transition)===null||s===void 0)&&s.loop?Number.MAX_VALUE:(h=t.PluginState.getStateTransitionDuration(f.snapshot))!==null&&h!==void 0?h:0,snapshots:[f],currentIndex:0,currentTransitionFrame:void 0,isInitial:!0}},async apply(c,o,s){var h;const f=(h=c.snapshots[0])===null||h===void 0?void 0:h.snapshot;if(o.current>=c.totalDuration){if(f?.transition&&c.isInitial){const d=f.transition.frames.length-1;s.plugin.managers.snapshot.setSnapshotAnimationFrame(c.totalDuration,!1),await i(s.plugin,f.transition.frames[d])}return{kind:"finished"}}if(!f)return{kind:"finished"};const{transition:y,camera:_,canvas3d:g}=f,a=t.PluginState.getStateTransitionFrameIndex(f,o.current);return!y||a===void 0?{kind:"finished"}:a===c.currentTransitionFrame?{kind:"skip"}:(s.plugin.managers.snapshot.setSnapshotAnimationFrame(o.current,!1),a===0?await i(s.plugin,{...y.frames[a],camera:_,canvas3d:g}):await i(s.plugin,y.frames[a]),{kind:"next",state:{...c,currentAnimationFrame:a,isInitial:!1}})}}),il}var D9;function zw(){if(D9)return dd;D9=1,Object.defineProperty(dd,"__esModule",{value:!0}),dd.PluginState=void 0;const e=Lf(),t=Rn(),r=y2(),n=Vi(),i=jt(),c=Et(),o=et(),s=Ne(),h=b2(),f=Sn(),y=gs(),_=_2(),g=nt(),a=Af();class d extends n.PluginComponent{get animation(){return this.plugin.managers.animation}getSnapshot(u){var m,v,b;const P={...this.snapshotParams.value,...u};return{id:o.UUID.create22(),data:P.data?this.data.getSnapshot():void 0,behaviour:P.behavior?this.behaviors.getSnapshot():void 0,animation:P.animation?this.animation.getSnapshot():void 0,startAnimation:P.startAnimation?!!P.startAnimation:void 0,camera:P.camera?{current:this.plugin.canvas3d.camera.getSnapshot(),transitionStyle:P.cameraTransition.name,transitionDurationInMs:((m=P?.cameraTransition)===null||m===void 0?void 0:m.name)==="animate"?P.cameraTransition.params.durationInMs:void 0}:void 0,canvas3dContext:P.canvas3dContext?{props:(v=this.plugin.canvas3dContext)===null||v===void 0?void 0:v.props}:void 0,canvas3d:P.canvas3d?{props:(b=this.plugin.canvas3d)===null||b===void 0?void 0:b.props}:void 0,interactivity:P.interactivity?{props:this.plugin.managers.interactivity.props}:void 0,structureFocus:this.plugin.managers.structure.focus.getSnapshot(),structureSelection:P.structureSelection?this.plugin.managers.structure.selection.getSnapshot():void 0,structureComponentManager:P.componentManager?{options:this.plugin.managers.structure.component.state.options}:void 0,durationInMs:P?.durationInMs}}async setSnapshot(u){var m,v,b,P,C,l,S,T,A,x;if(await this.animation.stop(),!((m=u.structureComponentManager)===null||m===void 0)&&m.options&&this.plugin.managers.structure.component._setSnapshotState((v=u.structureComponentManager)===null||v===void 0?void 0:v.options),u.behaviour&&await this.plugin.runTask(this.behaviors.setSnapshot(u.behaviour)),u.data&&await this.plugin.runTask(this.data.setSnapshot(u.data)),!((b=u.canvas3d)===null||b===void 0)&&b.props){const M=s.ParamDefinition.normalizeParams(r.Canvas3DParams,u.canvas3d.props,"children");(!((P=u.camera)===null||P===void 0)&&P.current||!((C=u.camera)===null||C===void 0)&&C.focus)&&
7083(M.camera=void 0,M.cameraClipping=void 0,M.cameraFog=void 0),await f.PluginCommands.Canvas3D.SetSettings(this.plugin,{settings:M})}if(!((l=u.canvas3dContext)===null||l===void 0)&&l.props){const M=s.ParamDefinition.normalizeParams(r.Canvas3DContext.Params,u.canvas3dContext.props,"children");(S=this.plugin.canvas3dContext)===null||S===void 0||S.setProps(M)}if(u.interactivity&&u.interactivity.props&&this.plugin.managers.interactivity.setProps(u.interactivity.props),u.structureFocus&&this.plugin.managers.structure.focus.setSnapshot(u.structureFocus),u.structureSelection&&this.plugin.managers.structure.selection.setSnapshot(u.structureSelection),u.animation&&this.animation.setSnapshot(u.animation),!((T=u.camera)===null||T===void 0)&&T.current?f.PluginCommands.Camera.Reset(this.plugin,{snapshot:u.camera.current,durationMs:u.camera.transitionStyle==="animate"?u.camera.transitionDurationInMs:void 0}):!((A=u.camera)===null||A===void 0)&&A.focus&&f.PluginCommands.Camera.FocusObject(this.plugin,{...u.camera.focus,durationMs:u.camera.transitionStyle==="animate"?u.camera.transitionDurationInMs:void 0}),typeof u?.onLoadMarkdownCommands=="object"&&Object.keys(u.onLoadMark
7083downCommands).length>0&&this.plugin.managers.markdownExtensions.tryExecute("click",u.onLoadMarkdownCommands),u.startAnimation){this.animation.start();return}!((x=u.transition)===null||x===void 0)&&x.autoplay&&(await g.Scheduler.immediatePromise(),this.animation.play(_.AnimateStateSnapshotTransition,{}))}async setAnimationSnapshot(u,m){var v,b,P,C;await this.animation.stopStateTransitionAnimation();const{transition:l}=u;if(!l)return;const S=Math.min(m,l.frames.length-1),T=(v=l.frames[S])!==null&&v!==void 0?v:u.data;if(T.data&&await this.plugin.runTask(this.data.setSnapshot(T.data)),!((b=T.canvas3d)===null||b===void 0)&&b.props){const A=s.ParamDefinition.normalizeParams(r.Canvas3DParams,T.canvas3d.props,"children");(P=this.plugin.canvas3d)===null||P===void 0||P.setProps(A)}!((C=T.camera)===null||C===void 0)&&C.current&&f.PluginCommands.Camera.Reset(this.plugin,{snapshot:T.camera.current,durationMs:T.camera.transitionStyle==="animate"?T.camera.transitionDurationInMs:void 0}),!m&&typeof u?.onLoadMarkdownCommands=="object"&&Object.keys(u.onLoadMark
7083downCommands).length>0&&this.plugin.managers.markdownExtensions.tryExecute("click",u.onLoadMarkdownCommands)}updateTransform(u,m,v,b){const P=u.build().to(m).update(v);return f.PluginCommands.State.Update(this.plugin,{state:u,tree:P,options:{canUndo:b}})}hasBehavior(u){return this.behaviors.tree.transforms.has(u.id)}updateBehavior(u,m){const v=this.behaviors.build();if(this.behaviors.tree.transforms.has(u.id))v.to(u.id).update(m);else{const b=u.createDefaultParams(void 0,this.plugin);v.to(h.PluginBehavior.getCategoryId(u)).apply(u,(0,e.produce)(b,m),{ref:u.id})}return this.plugin.runTask(this.behaviors.updateTree(v))}dispose(){this.behaviors.cells.forEach(u=>{var m,v,b,P;h.PluginBehavior.Behavior.is(u.obj)&&((v=(m=u.obj.data).unregister)===null||v===void 0||v.call(m),(P=(b=u.obj.data).dispose)===null||P===void 0||P.call(b))}),super.dispose(),this.data.dispose(),this.behaviors.dispose(),this.animation.dispose()}constructor(u){super(),this.plugin=u,this.data=c.State.create(new i.PluginStateObject.Root({}),{runTask:this.plugin.runTask,globalContext:this.plugin,historyCapacity:this.plugin.config.get(y.PluginConfig.State.HistoryCapacity)}),this.behaviors=c.State.create(new h.PluginBehavior.Root({}),{runTask:this.plugin.runTask,globalContext:this.plugin,rootState:{isLocked:!0}}),this.events={cell:{stateUpdated:(0,t.merge)(this.data.events.cell.stateUpdated,this.behaviors.events.cell.stateUpdated),created:(0,t.merge)(this.data.events.cell.created,this.behaviors.events.cell.created),removed:(0,t.merge)(this.data.events.cell.removed,this.behaviors.events.cell.removed)},object:{created:(0,t.merge)(this.data.events.object.created,this.behaviors.events.object.created),removed:(0,t.merge)(this.data.events.object.removed,this.behaviors.events.object.removed),updated:(0,t.merge)(this.data.events.object.updated,this.behaviors.events.object.updated)}},this.snapshotParams=this.ev.behavior(d.DefaultSnapshotParams),this.setSnapshotParams=m=>{this.snapshotParams.next({...d.DefaultSnapshotParams,...m})}}}return dd.PluginState=d,(function(p){p.SnapshotParams={durationInMs:s.ParamDefinition.Numeric(1500,{min:100,max:15e3,step:100},{label:"Duration in ms"}),data:s.ParamDefinition.Boolean(!0),behavior:s.ParamDefinition.Boolean(!1),structureSelection:s.ParamDefinition.Boolean(!1),componentManager:s.ParamDefinition.Boolean(!0),animation:s.ParamDefinition.Boolean(!0),startAnimation:s.ParamDefinition.Boolean(!1),canvas3d:s.ParamDefinition.Boolean(!0),canvas3dContext:s.ParamDefinition.Boolean(!0),interactivity:s.ParamDefinition.Boolean(!0),camera:s.ParamDefinition.Boolean(!0),cameraTransition:s.ParamDefinition.MappedStatic("animate",{animate:s.ParamDefinition.Group({durationInMs:s.ParamDefinition.Numeric(250,{min:100,max:5e3,step:500},{label:"Duration in ms"})}),instant:s.ParamDefinition.Group({})},{options:[["animate","Animate"],["instant","Instant"]]}),image:s.ParamDefinition.Boolean(!1)},p.DefaultSnapshotParams=s.ParamDefinition.getDefaultValues(p.SnapshotParams),p.getMinFrameDuration=(0,a.memoizeLatest)(m=>{if(!m)return 1e3/60;const{transition:v}=m;if(!v)return 1e3/60;let b=1/0;for(const P of v.frames)P.durationInMs>0&&P.durationInMs<b&&(b=P.durationInMs);return Number.isFinite(b)?b:1e3/60}),p.getStateTransitionDuration=(0,a.memoizeLatest)(m=>{if(!m)return;const{transition:v}=m;if(!v)return;let b=0;for(let P=0;P<v.frames.length;P++){const C=v.frames[P];b+=C.durationInMs}return b}),p.getStateTransitionFrameTime=(0,a.memoizeLatest)((m,v)=>{if(!m||v===void 0)return 0;const{transition:b}=m;if(!b)return 0;let P=0;for(let C=0;C<v&&!(b.frames.length<=C);C++){const l=b.frames[C];P+=l.durationInMs}return P});function u(m,v){var b;const{transition:P}=m;if(!P?.frames.length)return;let C=v;P.loop&&(C%=(b=p.getStateTransitionDuration(m))!==null&&b!==void 0?b:1);let l=0;if(C<=P.frames[0].durationInMs)return 0;for(let S=0;S<P.frames.length;S++){if(l>=C)return S;const T=P.frames[S];l+=T.durationInMs}return P.frames.length-1}p.getStateTransitionFrameIndex=u})(d||(dd.PluginState=d={})),dd}var tce="5.11.0",rce=new Date(1784437164616);const nce=Object.freeze(Object.defineProperty({__proto__:null,PLUGIN_VERSION:tce,PLUGIN_VERSION_DATE:rce},Symbol.toStringTag,{value:"Module"})),sZ=VD(nce);var ef={},I9;function Hw(){if(I9)return ef;
7083I9=1,Object.defineProperty(ef,"__esModule",{value:!0}),ef.setCanvasSize=e,ef.resizeCanvas=t,ef.canvasToBlob=n;function e(i,c,o,s=1){i.width=Math.round(window.devicePixelRatio*s*c),i.height=Math.round(window.devicePixelRatio*s*o),Object.assign(i.style,{width:`${c}px`,height:`${o}px`})}function t(i,c,o=1){let s=window.innerWidth,h=window.innerHeight;c!==document.body&&(s=c.offsetWidth,h=c.offsetHeight),e(i,s,h,o)}function r(i,c,o,s){const h=atob(i.toDataURL(o,s).split(",")[1]),f=h.length,y=f>>2,_=new Uint8Array(f),g=new Uint32Array(_.buffer,0,y);let a=0;for(let p=0;p<y;++p)g[p]=h.charCodeAt(a++)|h.charCodeAt(a++)<<8|h.charCodeAt(a++)<<16|h.charCodeAt(a++)<<24;let d=f&3;for(;d--;)_[a]=h.charCodeAt(a++);c(new Blob([_],{type:o||"image/png"}))}async function n(i,c,o){return new Promise((s,h)=>{const f=y=>{y?s(y):h("no blob returned")};HTMLCanvasElement.prototype.toBlob?i.toBlob(f,c,o):r(i,f,c,o)})}return ef}var Nb={},w9;function ice(){if(w9)return Nb;w9=1,Object.defineProperty(Nb,"__esModule",{value:!0}),Nb.SingleTaskQueue=void 0;class e{constructor(){this.queue=[]}run(r){this.queue.length<2?this.queue.push(r):this.queue[this.queue.length-1]=r,this.queue.length===1&&this.next()}async next(){for(;this.queue.length>0;)try{const r=this.queue[0];await r()}catch(r){console.error("Error in SingleTaskQueue execution:",r)}finally{this.queue.shift()}}}return Nb.SingleTaskQueue=e,Nb}var V9;function cZ(){if(V9)return ld;V9=1,Object.defineProperty(ld,"__esModule",{value:!0}),ld.PluginStateSnapshotManager=void 0;const e=Ff,t=et(),r=zw(),n=Vi(),i=$s(),c=iS(),o=ET(),s=vr(),h=sZ,f=Hw(),y=nt(),_=nS(),g=ice();class a extends n.StatefulPluginComponent{updateState(p){return"current"in p&&!("currentAnimationTimeMs"in p)?super.updateState({...p,currentAnimationTimeMs:0}):super.updateState(p)}get current(){const p=this.state.current;return this.state.entries.find(u=>u.snapshot.id===p)}getIndex(p){return this.state.entries.indexOf(p)}getEntry(p){if(p)return this.entryMap.get(p)}remove(p){const u=this.entryMap.get(p);u&&(u?.image&&this.plugin.managers.asset.delete(u.image),this.entryMap.delete(p),this.updateState({current:this.state.current===p?void 0:this.state.current,entries:this.state.entries.delete(this.getIndex(u))}),this.events.changed.next(void 0))}add(p){this.entryMap.set(p.snapshot.id,p),this.updateState({current:p.snapshot.id,entries:this.state.entries.push(p)}),this.events.changed.next(void 0)}replace(p,u,m){var v,b,P,C;const l=this.getEntry(p);if(!l)return;this.defaultSnapshotId=void 0,l?.image&&this.plugin.managers.asset.delete(l.image);const S=this.getIndex(l),T=a.Entry(u,{key:(v=m?.key)!==null&&v!==void 0?v:l.key,name:(b=m?.name)!==null&&b!==void 0?b:l.name,description:(P=m?.description)!==null&&P!==void 0?P:l.description,descriptionFormat:(C=m?.descriptionFormat)!==null&&C!==void 0?C:l.descriptionFormat,image:m?.image});this.entryMap.set(u.id,T),this.updateState({current:T.snapshot.id,entries:this.state.entries.set(S,T)}),this.events.changed.next(void 0)}move(p,u){const m=this.state.entries.size;if(m<2)return;const v=this.getEntry(p);if(!v)return;const b=this.getIndex(v);let P=(b+u)%m;P<0&&(P+=m);const C=this.state.entries.get(P),l=this.state.entries.asMutable();l.set(P,v),l.set(b,C),this.updateState({current:v.snapshot.id,entries:l.asImmutable()}),this.events.changed.next(void 0)}update(p,u){var m,v,b;const P=this.getIndex(p);if(P<0)return;const C=this.state.entries.set(P,{...p,key:((m=u.key)===null||m===void 0?void 0:m.trim())||void 0,name:((v=u.name)===null||v===void 0?void 0:v.trim())||void 0,description:((b=u.description)===null||b===void 0?void 0:b.trim())||void 0,descriptionFormat:u.descriptionFormat});this.updateState({entries:C}),this.entryMap.set(p.snapshot.id,this.state.entries.get(P)),this.events.changed.next(void 0)}clear(){this.state.entries.size!==0&&(this.entryMap.forEach(p=>{p?.image&&this.plugin.managers.asset.delete(p.image)}),this.entryMap.clear(),this.updateState({current:void 0,entries:(0,e.List)()}),this.events.changed.next(void 0))}applyKey(p){const u=this.state.entries.find(m=>m.key===p);u&&(this.updateState({current:u.snapshot.id}),this.events.changed.next(void 0),this.plugin.state.setSnapshot(u.snapshot))}setCurrent(p){const u=this.getEntry(p);return u&&(this.updateState({current:p}),this.events.changed.next(void 0)),u&&u.snapshot}setSnapshotAnimationFrame(p,u=!1){var m;const v=this.getEntry(this.state.current);if(!v)return;const b=(m=r.PluginState.getStateTransitionFrameIndex(v.snapshot,p))!==null&&m!==void 0?m:0;return this.updateState({currentAnimationTimeMs:p})&&this.events.changed.next(void 0),u&&this.animationFrameQueue.run(()=>this.plugin.state.setAnimationSnapshot(v.snapshot,b??0)),b}getNextId(p,u){const m=this.state.entries.size;if(!p){if(m===0)return;const P=u===-1?m-1:0;return this.state.entries.get(P).snapshot.id}const v=this.getEntry(p);if(!v)return;let b=this.getIndex(v);if(!(b<0))return b=(b+u)%m,b<0&&(b+=m),this.state.entries.get(b).snapshot.id}applyNext(p){const u=this.getNextId(this.state.current,p);if(u){const m=this.setCurrent(u);if(m)return this.plugin.state.setSnapshot(m)}}async setStateSnapshot(p){var u;this.clear();const m=(0,e.List)().asMutable();for(const C of p.entries)this.entryMap.set(C.snapshot.id,C),m.push(C);const v=p.current?p.current:p.entries.length>0?p.entries[0].snapshot.id:void 0;if(this.updateState({current:v,entries:m.asImmutable(),isPlaying:!1,nextSnapshotDelayInMs:p.playback?p.playback.nextSnapshotDelayInMs:a.DefaultNextSnapshotDelayInMs}),this.events.changed.next(void 0),!v)return;const b=this.getEntry(v),P=b&&b.snapshot;if(P)return await this.plugin.state.setSnapshot(P),!((u=p.playback)===null||u===void 0)&&u.isPlaying&&this.play({delayFirst:!0}),P}async syncCurrent(p){var u,m;const v=this.state.entries.size===0,b=this.state.entries.size===1&&this.state.current&&(!this.defaultSnapshotId||this.state.current===this.defaultSnapshotId);if(!v&&!b)return;const P=this.plugin.state.getSnapshot(p?.params),C=((m=(u=p?.params)===null||u===void 0?void 0:u.image)!==null&&m!==void 0?m:this.plugin.state.snapshotParams.value.image)?await a.getCanvasImageAsset(this.plugin,`${P.id}-image.png`):void 0;if(v)this.add(a.Entry(P,{name:p?.name,description:p?.description,descriptionFormat:p?.descriptionFormat,image:C}));else if(b){const l=this.getEntry(this.state.current);l?.image&&this.plugin.managers.asset.delete(l.image),this.replace(this.state.current,P,{image:C})}this.defaultSnapshotId=P.id}async getStateSnapshot(p){await this.syncCurrent(p);const u=this.state.entries.valueSeq().toArray();for(let m=0;m<u.length;m++)u[m]._transientData&&(u[m]={...u[m]},delete u[m]._transientData);return{timestamp:+new Date,version:h.PLUGIN_VERSION,name:p&&p.name,description:p&&p.description,current:this.state.current,playback:{isPlaying:!!(p&&p.playOnLoad),nextSnapshotDelayInMs:this.state.nextSnapshotDelayInMs},entries:u}}
7083async serialize(p){const u=JSON.stringify(await this.getStateSnapshot({params:p?.params}),null,2);if(!p?.type||p.type==="json"||p.type==="molj")return new Blob([u],{type:"application/json;charset=utf-8"});{const m=new Uint8Array((0,i.utf8ByteCount)(u));(0,i.utf8Write)(m,0,u);const v={"state.json":m},b=[];for(const{asset:C,file:l}of this.plugin.managers.asset.assets)b.push([C.id,C]),v[`assets/${C.id}`]=new Uint8Array(await l.arrayBuffer());if(b.length>0){const C=JSON.stringify(b,null,2),l=new Uint8Array((0,i.utf8ByteCount)(C));(0,i.utf8Write)(l,0,C),v["assets.json"]=l}const P=await this.plugin.runTask((0,c.Zip)(v));return new Blob([P],{type:"application/zip"})}}async open(p){try{const u=p.name.toLowerCase();if(u.endsWith("json")||u.endsWith("molj")){const m=await this.plugin.runTask((0,o.readFromFile)(p,"string")),v=JSON.parse(_.StringLike.toString(m));a.isStateSnapshot(v)?await this.setStateSnapshot(v):a.isStateSnapshot(v.data)?await this.setStateSnapshot(v.data):await this.plugin.state.setSnapshot(v)}else{const m=await this.plugin.runTask((0,o.readFromFile)(p,"zip")),v=Object.create(null);(0,s.objectForEach)(m,(C,l)=>{if(l==="state.json"||l==="assets.json")return;const S=l.substring(l.indexOf("/")+1);v[S]=C});const b=new File([m["state.json"]],"state.json"),P=await this.plugin.runTask((0,o.readFromFile)(b,"json"));if(m["assets.json"]){const C=new File([m["assets.json"]],"assets.json"),l=await this.plugin.runTask((0,o.readFromFile)(C,"json"));for(const[S,T]of l)this.plugin.managers.asset.set(T,new File([v[S]],T.name))}await this.setStateSnapshot(P)}this.events.opened.next(void 0)}catch(u){console.error(u),this.plugin.log.error("Error reading state")}}async startPlayback(){const{current:p}=this;if(p)if(p.snapshot.transition){const u=this.setCurrent(this.state.current);await this.plugin.state.setSnapshot(u);const m=typeof u.durationInMs<"u"?u.durationInMs:this.state.nextSnapshotDelayInMs;this.state.isPlaying&&(this.timeoutHandle=setTimeout(this.next,m))}else return this.next()}async play(p){if(this.state.isPlaying&&!p?.delayFirst)if(p?.restart)await this.stop();else return;if(this.updateState({isPlaying:!0}),p?.delayFirst){const u=this.getEntry(this.state.current);if(!u){this.next();return}this.events.changed.next(void 0);const m=u.snapshot,v=typeof m.durationInMs<"u"?m.durationInMs:this.state.nextSnapshotDelayInMs;this.timeoutHandle=setTimeout(this.next,v)}else this.startPlayback()}async stop(){await this.plugin.managers.animation.stop(),this.updateState({isPlaying:!1}),typeof this.timeoutHandle<"u"&&clearTimeout(this.timeoutHandle),this.timeoutHandle=void 0,this.events.changed.next(void 0)}async togglePlay(){this.state.isPlaying?(await this.stop(),this.plugin.managers.markdownExtensions.audio.pause()):await this.play()}dispose(){super.dispose(),this.entryMap.clear()}constructor(p){super({current:void 0,entries:(0,e.List)(),isPlaying:!1,nextSnapshotDelayInMs:a.DefaultNextSnapshotDelayInMs}),this.plugin=p,this.entryMap=new Map,this.defaultSnapshotId=void 0,this.events={changed:this.ev(),opened:this.ev()},this.animationFrameQueue=new g.SingleTaskQueue,this.timeoutHandle=void 0,this.next=async()=>{this.timeoutHandle=void 0;const u=this.getNextId(this.state.current,1);if(!u||u===this.state.current){this.stop();return}const m=this.setCurrent(u);await this.plugin.state.setSnapshot(m);const v=typeof m.durationInMs<"u"?m.durationInMs:this.state.nextSnapshotDelayInMs;this.state.isPlaying&&(this.timeoutHandle=setTimeout(this.next,v))}}}return ld.PluginStateSnapshotManager=a,a.DefaultNextSnapshotDelayInMs=1500,(function(d){function p(v,b){return{timestamp:+new Date,snapshot:v,...b}}d.Entry=p;function u(v){const b=v;return!!b&&!!b.timestamp&&!!b.entries}d.isStateSnapshot=u;async function m(v,b){const P=y.Task.create("Render Screenshot",async C=>{if(!v.helpers.viewportScreenshot)return;const l=await v.helpers.viewportScreenshot.getPreview(C,512);if(!l)return;const S=await(0,f.canvasToBlob)(l.canvas,"png"),T=new File([S],b),A={kind:"file",id:t.UUID.create22(),name:b};return v.managers.asset.set(A,T),A});return v.runTask(P)}d.getCanvasImageAsset=m})(a||(ld.PluginStateSnapshotManager=a={})),ld}var qb={},E9;function ace(){if(E9)return qb;
7083E9=1,Object.defineProperty(qb,"__esModule",{value:!0}),qb.dateToUtcString=e,qb.getFormattedTime=t;function e(r){return r.toISOString().replace(/T/," ").replace(/\..+/,"")}function t(){const r=new Date,n=r.getFullYear(),i=r.getMonth()+1,c=r.getDate(),o=r.getHours(),s=r.getMinutes(),h=r.getSeconds();return n+"-"+i+"-"+c+"-"+o+"-"+s+"-"+h}return qb}var QP={},B9;function uZ(){if(B9)return QP;B9=1,Object.defineProperty(QP,"__esModule",{value:!0}),QP.download=r;function e(n){window.open(n,"_blank")||(window.location.href=n)}function t(n){try{n.dispatchEvent(new MouseEvent("click"))}catch{const c=document.createEvent("MouseEvents");c.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),n.dispatchEvent(c)}}function r(n,i="download"){if(n)if("download"in HTMLAnchorElement.prototype){const c=document.createElement("a");c.download=i,c.rel="noopener",typeof n=="string"?(c.href=n,t(c)):(c.href=URL.createObjectURL(n),setTimeout(()=>URL.revokeObjectURL(c.href),4e4),setTimeout(()=>t(c)))}else if(typeof navigator<"u"&&navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(n,i);else{const c=window.navigator.userAgent,o=/Safari/i.test(c),s=/CriOS\/[\d]+/.test(c),h=f=>{e(s?f:f.replace(/^data:[^;]*;/,"data:attachment/file;"))};if((o||s)&&FileReader)if(n instanceof Blob){const f=new FileReader;f.onloadend=()=>h(f.result),f.readAsDataURL(n)}else h(n);else{const f=URL.createObjectURL(typeof n=="string"?new Blob([n]):n);location.href=f,setTimeout(()=>URL.revokeObjectURL(f),4e4)}}}return QP}var Ub={},R9;function Ww(){if(R9)return Ub;R9=1,Object.defineProperty(Ub,"__esModule",{value:!0}),Ub.urlQueryParameter=e,Ub.urlCombine=t;function e(r){if(typeof window>"u")return;const i=new RegExp(`${r}=([^&#=]*)`).exec(window.location.search);return i?decodeURIComponent(i[1]):void 0}function t(r,n){return`${r}${r[r.length-1]==="/"||n[0]==="/"?"":"/"}${n}`}return Ub}var O9;function eC(){if(O9)return qn;O9=1,Object.defineProperty(qn,"__esModule",{value:!0}),qn.registerDefault=f,qn.SyncBehaviors=y,qn.SetCurrentObject=_,qn.Update=g,qn.ApplyAction=a,qn.RemoveObject=d,qn.ToggleExpanded=p,qn.ToggleVisibility=u,qn.setSubtreeVisibility=m,qn.Highlight=b,qn.ClearHighlights=P,qn.Snapshots=C;const e=Ke(),t=cZ(),r=jt(),n=Et(),i=ace(),c=uZ(),o=Ww(),s=Sn(),h=gs();function f(l){y(l),_(l),g(l),a(l),d(l),p(l),u(l),b(l),P(l),C(l)}function y(l){l.state.events.object.created.subscribe(S=>{r.PluginStateObject.isBehavior(S.obj)&&S.obj.data.register(S.ref)}),l.state.events.object.removed.subscribe(S=>{var T,A,x,M;r.PluginStateObject.isBehavior(S.obj)&&((A=(T=S.obj.data).unregister)===null||A===void 0||A.call(T),(M=(x=S.obj.data).dispose)===null||M===void 0||M.call(x))}),l.state.events.object.updated.subscribe(S=>{var T,A,x,M;S.action==="recreate"&&(S.oldObj&&r.PluginStateObject.isBehavior(S.oldObj)&&((A=(T=S.oldObj.data).unregister)===null||A===void 0||A.call(T),(M=(x=S.oldObj.data).dispose)===null||M===void 0||M.call(x)),S.obj&&r.PluginStateObject.isBehavior(S.obj)&&S.obj.data.register(S.ref))})}function _(l){s.PluginCommands.State.SetCurrentObject.subscribe(l,({state:S,ref:T})=>S.setCurrent(T))}function g(l){s.PluginCommands.State.Update.subscribe(l,({state:S,tree:T,options:A})=>l.runTask(S.updateTree(T,A)))}function a(l){s.PluginCommands.State.ApplyAction.subscribe(l,({state:S,action:T,ref:A})=>l.runTask(S.applyAction(T.action,T.params,A)))}function d(l){function S(T,A){const x=T.build().delete(A);return l.runTask(T.updateTree(x))}s.PluginCommands.State.RemoveObject.subscribe(l,({state:T,ref:A,removeParentGhosts:x})=>{if(x){const M=T.tree;let D=M.transforms.get(A);if(D.parent===A)return S(T,A);for(;;){const V=M.children.get(D.parent);if(D.parent===D.ref||V.size>1)return S(T,D.ref);const R=M.transforms.get(D.parent);if(!R.state.isGhost)return S(T,D.ref);D=R}}else return S(T,A)})}function p(l){s.PluginCommands.State.ToggleExpanded.subscribe(l,({state:S,ref:T})=>S.updateCellState(T,({isCollapsed:A})=>({isCollapsed:!A})))}function u(l){s.PluginCommands.State.ToggleVisibility.subscribe(l,({state:S,ref:T})=>m(S,T,!S.cells.get(T).state.isHidden))}function m(l,S,T){n.StateTree.doPreOrder(l.tree,l.transforms.get(S),{state:l,value:T},v)}function v(l,S,T){T.state.updateCellState(l.ref,{isHidden:T.value})}function b(l){s.PluginCommands.Interactivity.Object.Highlight.subscribe(l,({state:S,ref:T})=>
7083{if(!l.canvas3d||l.isBusy)return;l.managers.interactivity.lociHighlights.clearHighlights();const A=typeof T=="string"?[T]:T;for(const x of A){const M=S.cells.get(x);if(M){if(r.PluginStateObject.Molecule.Structure.is(M.obj))l.managers.interactivity.lociHighlights.highlight({loci:e.Structure.Loci(M.obj.data)},!1);else if(M&&r.PluginStateObject.isRepresentation3D(M.obj)){const{repr:D}=M.obj.data;for(const V of D.getAllLoci())l.managers.interactivity.lociHighlights.highlight({loci:V,repr:D},!1)}else if(r.PluginStateObject.Molecule.Structure.Selections.is(M.obj))for(const D of M.obj.data)l.managers.interactivity.lociHighlights.highlight({loci:D.loci},!1)}}})}function P(l){s.PluginCommands.Interactivity.ClearHighlights.subscribe(l,()=>{l.managers.interactivity.lociHighlights.clearHighlights()})}function C(l){l.config.set(h.PluginConfig.State.CurrentServer,l.config.get(h.PluginConfig.State.DefaultServer)),s.PluginCommands.State.Snapshots.Clear.subscribe(l,()=>{l.managers.snapshot.clear()}),s.PluginCommands.State.Snapshots.Remove.subscribe(l,({id:S})=>{l.managers.snapshot.remove(S)}),s.PluginCommands.State.Snapshots.Add.subscribe(l,async({key:S,name:T,description:A,descriptionFormat:x,params:M})=>{var D;const V=l.state.getSnapshot(M),R=((D=M?.image)!==null&&D!==void 0?D:l.state.snapshotParams.value.image)?await t.PluginStateSnapshotManager.getCanvasImageAsset(l,`${V.id}-image.png`):void 0,E=t.PluginStateSnapshotManager.Entry(V,{key:S,name:T,description:A,descriptionFormat:x,image:R});l.managers.snapshot.add(E)}),s.PluginCommands.State.Snapshots.Replace.subscribe(l,async({id:S,params:T})=>{var A;const x=l.state.getSnapshot(T),M=((A=T?.image)!==null&&A!==void 0?A:l.state.snapshotParams.value.image)?await t.PluginStateSnapshotManager.getCanvasImageAsset(l,`${x.id}-image.png`):void 0;l.managers.snapshot.replace(S,l.state.getSnapshot(T),{image:M})}),s.PluginCommands.State.Snapshots.Move.subscribe(l,({id:S,dir:T})=>{l.managers.snapshot.move(S,T)}),s.PluginCommands.State.Snapshots.Apply.subscribe(l,({id:S})=>{const T=l.managers.snapshot.setCurrent(S);if(T)return l.state.setSnapshot(T)}),s.PluginCommands.State.Snapshots.Upload.subscribe(l,async({name:S,description:T,playOnLoad:A,serverUrl:x,params:M})=>fetch((0,o.urlCombine)(x,`set?name=${encodeURIComponent(S||"")}&description=${encodeURIComponent(T||"")}`),{method:"POST",mode:"cors",referrer:"no-referrer",headers:{"Content-Type":"application/json; charset=utf-8"},body:JSON.stringify(await l.managers.snapshot.getStateSnapshot({name:S,description:T,playOnLoad:A}))})),s.PluginCommands.State.Snapshots.Fetch.subscribe(l,async({url:S})=>
7083{const T=await l.runTask(l.fetch({url:S,type:"json"}));await l.managers.snapshot.setStateSnapshot(T.data)}),s.PluginCommands.State.Snapshots.DownloadToFile.subscribe(l,async({name:S,type:T,params:A})=>{const x=`mol-star_state_${S||(0,i.getFormattedTime)()}.${T==="json"?"molj":"molx"}`,M=await l.managers.snapshot.serialize({type:T,params:A});(0,c.download)(M,`${x}`)}),s.PluginCommands.State.Snapshots.OpenFile.subscribe(l,({file:S})=>l.managers.snapshot.open(S)),s.PluginCommands.State.Snapshots.OpenUrl.subscribe(l,async({url:S,type:T})=>{const A=await l.runTask(l.fetch({url:S,type:"binary"}));return l.managers.snapshot.open(new File([A],`state.${T}`))})}return qn}var k9=eC(),jb={},iM={},Gb={},F9;function oce(){if(F9)return Gb;F9=1,Object.defineProperty(Gb,"__esModule",{value:!0}),Gb.partition=void 0;var e=VK(),t=ec();function r(n,i){return function(c){return[t.filter(n,i)(c),t.filter(e.not(n,i))(c)]}}return Gb.partition=r,Gb}var Zo={},L9;function sce(){if(L9)return Zo;L9=1;var e=Zo&&Zo.__read||function(c,o){var s=typeof Symbol=="function"&&c[Symbol.iterator];if(!s)return c;var h=s.call(c),f,y=[],_;try{for(;(o===void 0||o-- >0)&&!(f=h.next()).done;)y.push(f.value)}catch(g){_={error:g}}finally{try{f&&!f.done&&(s=h.return)&&s.call(h)}finally{if(_)throw _.error}}return y},t=Zo&&Zo.__spreadArray||function(c,o){for(var s=0,h=o.length,f=c.length;s<h;s++,f++)c[f]=o[s];return c};Object.defineProperty(Zo,"__esModule",{value:!0}),Zo.race=void 0;var r=Nf(),n=gw();function i(){for(var c=[],o=0;o<arguments.length;o++)c[o]=arguments[o];return n.raceWith.apply(void 0,t([],e(r.argsOrArgArray(c))))}return Zo.race=i,Zo}var N9;function cce(){return N9||(N9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.mergeAll=e.merge=e.max=e.materialize=e.mapTo=e.map=e.last=e.isEmpty=e.ignoreElements=e.groupBy=e.first=e.findIndex=e.find=e.finalize=e.filter=e.expand=e.exhaustMap=e.exhaustAll=e.exhaust=e.every=e.endWith=e.elementAt=e.distinctUntilKeyChanged=e.distinctUntilChanged=e.distinct=e.dematerialize=e.delayWhen=e.delay=e.defaultIfEmpty=e.debounceTime=e.debounce=e.count=e.connect=e.concatWith=e.concatMapTo=e.concatMap=e.concatAll=e.concat=e.combineLatestWith=e.combineLatest=e.combineLatestAll=e.combineAll=e.catchError=e.bufferWhen=e.bufferToggle=e.bufferTime=e.bufferCount=e.buffer=e.auditTime=e.audit=void 0,e.timeInterval=e.throwIfEmpty=e.throttleTime=e.throttle=e.tap=e.takeWhile=e.takeUntil=e.takeLast=e.take=e.switchScan=e.switchMapTo=e.switchMap=e.switchAll=e.subscribeOn=e.startWith=e.skipWhile=e.skipUntil=e.skipLast=e.skip=e.single=e.shareReplay=e.share=e.sequenceEqual=e.scan=e.sampleTime=e.sample=e.refCount=e.retryWhen=e.retry=e.repeatWhen=e.repeat=e.reduce=e.raceWith=e.race=e.publishReplay=e.publishLast=e.publishBehavior=e.publish=e.pluck=e.partition=e.pairwise=e.onErrorResumeNext=e.observeOn=e.multicast=e.min=e.mergeWith=e.mergeScan=e.mergeMapTo=e.mergeMap=e.flatMap=void 0,e.zipWith=e.zipAll=e.zip=e.withLatestFrom=e.windowWhen=e.windowToggle=e.windowTime=e.windowCount=e.window=e.toArray=e.timestamp=e.timeoutWith=e.timeout=void 0;var t=iw();Object.defineProperty(e,"audit",{enumerable:!0,get:function(){return t.audit}});var r=BK();Object.defineProperty(e,"auditTime",{enumerable:!0,get:function(){return r.auditTime}});var n=RK();Object.defineProperty(e,"buffer",{enumerable:!0,get:function(){return n.buffer}});var i=OK();Object.defineProperty(e,"bufferCount",{enumerable:!0,get:function(){return i.bufferCount}});var c=kK();Object.defineProperty(e,"bufferTime",{enumerable:!0,get:function(){return c.bufferTime}});var o=FK();Object.defineProperty(e,"bufferToggle",{enumerable:!0,get:function(){return o.bufferToggle}});var s=LK();Object.defineProperty(e,"bufferWhen",{enumerable:!0,get:function(){return s.bufferWhen}});var h=NK();Object.defineProperty(e,"catchError",{enumerable:!0,get:function(){return h.catchError}});var f=jK();Object.defineProperty(e,"combineAll",{enumerable:!0,get:function(){return f.combineAll}});var y=ow();Object.defineProperty(e,"combineLatestAll",{enumerable:!0,get:function(){return y.combineLatestAll}});var _=GK();Object.defineProperty(e,"combineLatest",{enumerable:!0,get:function(){return _.combineLatest}});var g=zK();Object.defineProperty(e,"combineLatestWith",{enumerable:!0,get:function(){return g.comb
7083ineLatestWith}});var a=WK();Object.defineProperty(e,"concat",{enumerable:!0,get:function(){return a.concat}});var d=JT();Object.defineProperty(e,"concatAll",{enumerable:!0,get:function(){return d.concatAll}});var p=sw();Object.defineProperty(e,"concatMap",{enumerable:!0,get:function(){return p.concatMap}});var u=HK();Object.defineProperty(e,"concatMapTo",{enumerable:!0,get:function(){return u.concatMapTo}});var m=$K();Object.defineProperty(e,"concatWith",{enumerable:!0,get:function(){return m.concatWith}});var v=r2();Object.defineProperty(e,"connect",{enumerable:!0,get:function(){return v.connect}});var b=XK();Object.defineProperty(e,"count",{enumerable:!0,get:function(){return b.count}});var P=KK();Object.defineProperty(e,"debounce",{enumerable:!0,get:function(){return P.debounce}});var C=YK();Object.defineProperty(e,"debounceTime",{enumerable:!0,get:function(){return C.debounceTime}});var l=TS();Object.defineProperty(e,"defaultIfEmpty",{enumerable:!0,get:function(){return l.defaultIfEmpty}});var S=QK();Object.defineProperty(e,"delay",{enumerable:!0,get:function(){return S.delay}});var T=lw();Object.defineProperty(e,"delayWhen",{enumerable:!0,get:function(){return T.delayWhen}});var A=ZK();Object.defineProperty(e,"dematerialize",{enumerable:!0,get:function(){return A.dematerialize}});var x=JK();Object.defineProperty(e,"distinct",{enumerable:!0,get:function(){return x.distinct}});var M=dw();Object.defineProperty(e,"distinctUntilChanged",{enumerable:!0,get:function(){return M.distinctUntilChanged}});var D=eY();Object.defineProperty(e,"distinctUntilKeyChanged",{enumerable:!0,get:function(){return D.distinctUntilKeyChanged}});var V=tY();Object.defineProperty(e,"elementAt",{enumerable:!0,get:function(){return V.elementAt}});var R=rY();Object.defineProperty(e,"endWith",{enumerable:!0,get:function(){return R.endWith}});var E=nY();Object.defineProperty(e,"every",{enumerable:!0,get:function(){return E.every}});var I=iY();Object.defineProperty(e,"exhaust",{enumerable:!0,get:function(){return I.exhaust}});var B=mw();Object.defineProperty(e,"exhaustAll",{enumerable:!0,get:function(){return B.exhaustAll}});var w=fw();Object.defineProperty(e,"exhaustMap",{enumerable:!0,get:function(){return w.exhaustMap}});var O=aY();Object.defineProperty(e,"expand",{enumerable:!0,get:function(){return O.expand}});var F=ec();Object.defineProperty(e,"filter",{enumerable:!0,get:function(){return F.filter}});var L=oY();Object.defineProperty(e,"finalize",{enumerable:!0,get:function(){return L.finalize}});var U=pw();Object.defineProperty(e,"find",{enumerable:!0,get:function(){return U.find}});var q=sY();Object.defineProperty(e,"findIndex",{enumerable:!0,get:function(){return q.findIndex}});var N=cY();Object.defineProperty(e,"first",{enumerable:!0,get:function(){return N.first}});var k=uY();Object.defineProperty(e,"groupBy",{enumerable:!0,get:function(){return k.groupBy}});var j=cw();Object.defineProperty(e,"ignoreElements",{enumerable:!0,get:function(){return j.ignoreElements}});var H=lY();Object.defineProperty(e,"isEmpty",{enumerable:!0,get:function(){return H.isEmpty}});var G=dY();Object.defineProperty(e,"last",{enumerable:!0,get:function(){return G.last}});var z=Js();Object.defineProperty(e,"map",{enumerable:!0,get:function(){return z.map}});var W=uw();Object.defineProperty(e,"mapTo",{enumerable:!0,get:function(){return W.mapTo}});var X=fY();Object.defineProperty(e,"materialize",{enumerable:!0,get:function(){return X.materialize}});var Y=mY();Object.defineProperty(e,"max",{enumerable:!0,get:function(){return Y.max}});var K=yY();Object.defineProperty(e,"merge",{enumerable:!0,get:function(){return K.merge}});var Q=PS();Object.defineProperty(e,"mergeAll",{enumerable:!0,get:function(){return Q.mergeAll}});var J=pY();Object.defineProperty(e,"flatMap",{enumerable:!0,get:function(){return J.flatMap}});var ae=ss();Object.defineProperty(e,"mergeMap",{enumerable:!0,get:function(){return ae.mergeMap}});var te=hY();Object.defineProperty(e,"mergeMapTo",{enumerable:!0,get:function(){return te.mergeMapTo}});var ne=gY();Object.defineProperty(e,"mergeScan",{enumerable:!0,get:function(){return ne.mergeScan}});var $=vY();Object.defineProperty(e,"mergeWith",{enumerable:!0,get:function(){return $.mergeWith}});var ie=bY();Object.defineProperty(e,"min",{enumerable:!0,get:function(){return ie.min}});var Z=n2();Object.defineProperty(e,"multicast",{enumerable:!0,get:function(){return Z.multicast}});var re=SS();Object.defineProperty(e,"observeOn",{enumerable:!0,get:function(){return re.observeOn}});var oe=_Y();Object.defineProperty(e,"onErrorResumeNext",{enumerable:!0,get:function(){return oe.onErrorResumeNext}});var ce=SY();Object.defineProperty(e,"pairwise",{enumerable:!0,get:function(){return ce.pairwise}});var ue=oce();Object.defineProperty(e,"partition",{enumerable:!0,get:function(){return ue.partition}});var pe=CY();Object.defineProperty(e,"pluck",{enumerable:!0,get:function(){return pe.pluck}});var he=PY();Object.defineProperty(e,"publish",{enumerable:!0,get:function(){return he.publish}});var fe=TY();Object.defineProperty(e,"publishBehavior",{enumerable:!0,get:function(){return fe.publishBehavior}});var de=xY();Object.defineProperty(e,"publishLast",{enumerable:!0,get:function(){return de.publishLast}});var ge=AY();Object.defineProperty(e,"publishReplay",{enumerable:!0,get:function(){return ge.publishReplay}});var Ce=sce();Object.defineProperty(e,"race",{enumerable:!0,get:function(){return Ce.race}});var ve=gw();Object.defineProperty(e,"raceWith",{enumerable:!0,get:function(){return ve.raceWith}});var le=qf();Object.defineProperty(e,"reduce",{enumerable:!0,get:function(){return le.reduce}});var me=MY();Object.defineProperty(e,"repeat",{enumerable:!0,get:function(){return me.repeat}});var ee=DY();Object.defineProperty(e,"repeatWhen",{enumerable:!0,get:function(){return ee.repeatWhen}});var se=IY();Object.defineProperty(e,"retry",{enumerable:!0,get:function(){return se.retry}});var ye=wY();Object.defineProperty(e,"retryWhen",{enumerable:!0,get:function(){return ye.retryWhen}});var Se=WI();Object.defineProperty(e,"refCount",{enumerable:!0,get:function(){return Se.refCount}});var Ae=yw();Object.defineProperty(e,"sample",{enumerable:!0,get:function(){return Ae.sample}});var _e=VY();Object.defineProperty(e,"sampleTime",{enumerable:!0,get:function(){return _e.sampleTime}});var be=EY();Object.defineProperty(e,"scan",{enumerable:!0,get:function(){return be.scan}});var xe=BY();Object.defineProperty(e,"sequenceEqual",{enumerable:!0,get:function(){return xe.sequenceEqual}});var we=vw();Object.defineProperty(e,"share",{enumerable:!0,get:function(){return we.share}});var Be=RY();Object.defineProperty(e,"shareReplay",{enumerable:!0,get:function(){return Be.shareReplay}});var Me=OY();Object.defineProperty(e,"single",{enumerable:!0,get:function(){return Me.single}});var Re=kY();Object.defineProperty(e,"skip",{enumerable:!0,get:function(){return Re.skip}});var Te=FY();Object.defineProperty(e,"skipLast",{enumerable:!0,get:function(){return Te.skipLast}});var Ve=LY();Object.defineProperty(e,"skipUntil",{enumerable:!0,get:function(){return Ve.skipUntil}});var qe=NY();Object.defineProperty(e,"skipWhile",{enumerable:!0,get:function(){return qe.skipWhile}});var ke=qY();Object.defineProperty(e,"startWith",{enumerable:!0,get:function(){return ke.startWith}});var ze=CS();Object.defineProperty(e,"subscribeOn",{enumerable:!0,get:function(){return ze.subscribeOn}});var We=UY();Object.defineProperty(e,"switchAll",{enumerable:!0,get:function(){return We.switchAll}});var Je=MS();Object.defineProperty(e,"switchMap",{enumerable:!0,get:function(){return Je.switchMap}});var De=jY();Object.defineProperty(e,"switchMapTo",{enumerable:!0,get:function(){return De.switchMapTo}});var Oe=GY();Object.defineProperty(e,"switchScan",{enumerable:!0,get:function(){return Oe.switchScan}});var Fe=xS();Object.defineProperty(e,"take",{enumerable:!0,get:function(){return Fe.take}});var Le=hw();Object.defineProperty(e,"takeLast",{enumerable:!0,get:function(){return Le.takeLast}});var He=zY();Object.defineProperty(e,"takeUntil",{enumerable:!0,get:function(){return He.takeUntil}});var Pe=HY();Object.defineProperty(e,"takeWhile",{enumerable:!0,get:function(){return Pe.takeWhile}});var Ie=WY();Object.defineProperty(e,"tap",{enumerable:!0,get:function(){return Ie.tap}});var Ee=bw();Object.defineProperty(e,"throttle",{enumerable:!0,get:function(){return Ee.throttle}});var Ue=$Y();Object.defineProperty(e,"throttleTime",{enumerable:!0,get:function(){return Ue.throttleTime}});var $e=AS();Object.defineProperty(e,"throwIfEmpty",{enumerable:!0,get:function(){return $e.throwIfEmpty}});var Ye=XY();Object.defineProperty(e,"timeInterval",{enumerable:!0,get:function(){return Ye.timeInterval}});var Qe=hT();Object.defineProperty(e,"timeout",{enumerable:!0,get:function(){return Qe.timeout}});var it=KY();Object.defineProperty(e,"timeoutWith",{enumerable:!0,get:function(){return it.timeoutWith}});var ht=YY();Object.defineProperty(e,"timestamp",{enumerable:!0,get:function(){return ht.t
7083imestamp}});var mt=aw();Object.defineProperty(e,"toArray",{enumerable:!0,get:function(){return mt.toArray}});var St=QY();Object.defineProperty(e,"window",{enumerable:!0,get:function(){return St.window}});var Bt=ZY();Object.defineProperty(e,"windowCount",{enumerable:!0,get:function(){return Bt.windowCount}});var Ot=JY();Object.defineProperty(e,"windowTime",{enumerable:!0,get:function(){return Ot.windowTime}});var br=eQ();Object.defineProperty(e,"windowToggle",{enumerable:!0,get:function(){return br.windowToggle}});var Ir=tQ();Object.defineProperty(e,"windowWhen",{enumerable:!0,get:function(){return Ir.windowWhen}});var Cn=rQ();Object.defineProperty(e,"withLatestFrom",{enumerable:!0,get:function(){return Cn.withLatestFrom}});var Fn=iQ();Object.defineProperty(e,"zip",{enumerable:!0,get:function(){return Fn.zip}});var ei=nQ();Object.defineProperty(e,"zipAll",{enumerable:!0,get:function(){return ei.zipAll}});var Ze=aQ();Object.defineProperty(e,"zipWith",{enumerable:!0,get:function(){return Ze.zipWith}})})(iM)),iM}var zb={},q9;function uce(){if(q9)return zb;q9=1,Object.defineProperty(zb,"__esModule",{value:!0}),zb.CustomProperty=void 0;const e=Ne(),t=Ff;var r;return(function(n){class i{constructor(){this.providers=(0,t.OrderedMap)().asMutable(),this.defaultAutoAttachValues=new Map}getParams(o){const s={},h=[],f=[];if(o){const y=this.providers.values();for(;;){const _=y.next();if(_.done)break;const g=_.value;g.isApplicable(o)&&(g.isHidden||(h.push([g.descriptor.name,g.label]),this.defaultAutoAttachValues.get(g.descriptor.name)&&f.push(g.descriptor.name)),s[g.descriptor.name]=e.ParamDefinition.Group({...g.getParams(o)},{label:g.label,isHidden:g.isHidden}))}}return{autoAttach:e.ParamDefinition.MultiSelect(f,h),properties:e.ParamDefinition.Group(s,{isFlat:!0})}}setDefaultAutoAttach(o,s){this.defaultAutoAttachValues.set(o,s)}get(o){if(!this.providers.get(o))throw new Error(`Custom property '${o}' is not registered.`);return this.providers.get(o)}register(o,s){this.providers.set(o.descriptor.name,o),this.defaultAutoAttachValues.set(o.descriptor.name,s)}unregister(o){this.providers.delete(o),this.defaultAutoAttachValues.delete(o)}}n.Registry=i})(r||(zb.CustomProperty=r={})),zb}var Hb={},ZP={},U9;function S2(){if(U9)return ZP;U9=1,Object.defineProperty(ZP,"__esModule",{value:!0}),ZP.getFileNameInfo=t;const e=["gz","zip"];function t(r){let n=r,i="";const c=n.lastIndexOf("?"),o=c!==-1?n.substring(c):"";n=n.substring(0,c===-1?n.length:c);const s=n.replace(/^.*[\\/]/,"");let h=s.substring(0,s.lastIndexOf("."));const f=s.split(".");let y=f.length>1?(f.pop()||"").toLowerCase():"";const _=n.match(/^(.+):\/\/(.+)$/);_&&(i=_[1].toLowerCase(),n=_[2]||"");const g=n.substring(0,n.lastIndexOf("/")+1);if(e.includes(y)){const a=n.length-y.length-1;y=(n.substring(0,a).split(".").pop()||"").toLowerCase();const d=h.length-y.length-1;h=h.substring(0,d)}return{path:n,name:s,ext:y,base:h,dir:g,protocol:i,query:o}}return ZP}var j9;function lce(){if(j9)return Hb;
7083j9=1,Object.defineProperty(Hb,"__esModule",{value:!0}),Hb.DataBuilder=void 0;const e=OQ(),t=S2();class r{get dataState(){return this.plugin.state.data}rawData(i,c){return this.dataState.build().toRoot().apply(e.RawData,i,c).commit({revertOnError:!0})}download(i,c){return this.dataState.build().toRoot().apply(e.Download,i,c).commit({revertOnError:!0})}downloadBlob(i,c){return this.dataState.build().toRoot().apply(e.DownloadBlob,i,c).commit({revertOnError:!0})}async readFile(i,c){var o,s,h;const f=await this.dataState.build().toRoot().apply(e.ReadFile,i,c).commit({revertOnError:!0}),y=(0,t.getFileNameInfo)((h=(s=(o=i.file)===null||o===void 0?void 0:o.file)===null||s===void 0?void 0:s.name)!==null&&h!==void 0?h:"");return{data:f,fileInfo:y}}constructor(i){this.plugin=i}}return Hb.DataBuilder=r,Hb}var Wb={},$b={},al={},G9;function C2(){if(G9)return al;G9=1,Object.defineProperty(al,"__esModule",{value:!0}),al.createStructureRepresentationParams=r,al.getStructureThemeTypes=n,al.createStructureColorThemeParams=i,al.createStructureSizeThemeParams=c;const e=Ke(),t=Ne();function r(h,f,y={}){const _=y;return typeof _.type=="string"||typeof _.color=="string"||typeof _.size=="string"?o(h,f||e.Structure.Empty,y):s(h,f||e.Structure.Empty,y)}function n(h,f){const{themes:y}=h.representation.structure;return f?y.colorThemeRegistry.getApplicableTypes({structure:f}):y.colorThemeRegistry.types}function i(h,f,y,_,g){const{registry:a,themes:d}=h.representation.structure,p=a.get(y||a.default.name),u=d.colorThemeRegistry.get(_||p.defaultColorTheme.name),m=t.ParamDefinition.getDefaultValues(u.getParams({structure:f||e.Structure.Empty}));return u.name===p.defaultColorTheme.name&&Object.assign(m,p.defaultColorTheme.props),{name:u.name,params:Object.assign(m,g)}}function c(h,f,y,_,g){const{registry:a,themes:d}=h.representation.structure,p=a.get(y||a.default.name),u=d.sizeThemeRegistry.get(_||p.defaultSizeTheme.name),m=t.ParamDefinition.getDefaultValues(u.getParams({structure:f||e.Structure.Empty}));return u.name===p.defaultSizeTheme.name&&Object.assign(m,p.defaultSizeTheme.props),{name:u.name,params:Object.assign(m,g)}}function o(h,f,y){const _=y.type&&h.representation.structure.registry.get(y.type)||h.representation.structure.registry.default.provider,g=y.color&&h.representation.structure.themes.colorThemeRegistry.get(y.color)||h.representation.structure.themes.colorThemeRegistry.get(_.defaultColorTheme.name),a=y.size&&h.representation.structure.themes.sizeThemeRegistry.get(y.size)||h.representation.structure.themes.sizeThemeRegistry.get(_.defaultSizeTheme.name);return s(h,f,{type:_,typeParams:y.typeParams,color:g,colorParams:y.colorParams,size:a,sizeParams:y.sizeParams})}function s(h,f,y={}){const{themes:_}=h.representation.structure,g={structure:f},a=y.type||h.representation.structure.registry.default.provider,d=t.ParamDefinition.getDefaultValues(a.getParams(_,f)),p=Object.assign(d,y.typeParams),u=y.color||_.colorThemeRegistry.get(a.defaultColorTheme.name),m=t.ParamDefinition.getDefaultValues(u.getParams(g));u.name===a.defaultColorTheme.name&&Object.assign(m,a.defaultColorTheme.props);const v=Object.assign(m,y.colorParams),b=y.size||_.sizeThemeRegistry.get(a.defaultSizeTheme.name),P=t.ParamDefinition.getDefaultValues(b.getParams(g));b.name===a.defaultSizeTheme.name&&Object.assign(P,a.defaultSizeTheme.props);const C=Object.assign(P,y.sizeParams);return{type:{name:a.name,params:p},colorTheme:{name:u.name,params:v},sizeTheme:{name:b.name,params:C}}}return al}var Jo={},ol={},z9;function $w(){if(z9)return ol;z9=1,Object.defineProperty(ol,"__esModule",{value:!0}),ol.StructureFocusRepresentation=ol.StructureFocusRepresentationTags=void 0;const e=iZ(),t=nZ(),r=Ke(),n=C2(),i=Dr(),c=b2(),o=dr(),s=Et(),h=ps(),f=Ne(),y=Sn(),_=tc(),g=Pw(),a=jf(),d=rc(),p=P=>{const C=i.StateTransforms.Representation.StructureRepresentation3D.definition.params(void 0,P);return{expandRadius:f.ParamDefinition.Numeric(5,{min:1,max:10,step:1}),targetParams:f.ParamDefinition.Group(C,{label:"Target",customDefault:(0,n.createStructureRepresentationParams)(P,void 0,{type:"ball-and-stick",size:"physical",typeParams:{sizeFactor:.22,sizeAspectRatio:.73,adjustCylinderLength:!0,xrayShaded:!0,aromaticBonds:!1,multipleBonds:"off",excludeTypes:["hydrogen-bond","metal-coordination"]}})}),surroundingsParams:f.ParamDefinition.Group(C,{label:"Surroundings",customDefault:(0,n.createStructureRepresentationParams)(P,void 0,{type:"ball-and-stick",size:"physical",typeParams:{sizeFactor:.16,excludeTypes:["hydrogen-bond","metal-coordination"]}})}),nciParams:f.ParamDefinition.Group(C,{label:"Non-covalent Int.",customDefault:(0,n.createStructureRepresentationParams)(P,void 0,{type:e.InteractionsRepresentationProvider,color:t.InteractionTypeColorThemeProvider,size:h.SizeTheme.BuiltIn.uniform})}),components:f.ParamDefinition.MultiSelect(u,f.ParamDefinition.arrayToOptions(u)),excludeTargetFromSurroundings:f.ParamDefinition.Boolean(!1,{label:"Exclude Target",description:'Exclude the focus "target" from the surroudings component.'}),ignoreHydrogens:f.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:f.ParamDefinition.Select("all",f.ParamDefinition.arrayToOptions(["all","non-polar"])),ignoreLight:f.ParamDefinition.Boolean(!1),material:_.Material.getParam(),clip:f.ParamDefinition.Group(g.Clip.Params),interior:(0,a.getInteriorParam)(),animation:(0,d.getAnimationParam)()}},u=["target","surroundings","interactions"];var m;(function(P){P.TargetSel="structure-focus-target-sel",P.TargetRepr="structure-focus-target-repr",P.SurrSel="structure-focus-surr-sel",P.SurrRepr="structure-focus-surr-repr",P.SurrNciRepr="structure-focus-surr-nci-repr"})(m||(ol.StructureFocusRepresentationTags=m={}));
7083const v=new Set([m.TargetSel,m.TargetRepr,m.SurrSel,m.SurrRepr,m.SurrNciRepr]);class b extends c.PluginBehavior.WithSubscribers{constructor(){super(...arguments),this.currentSource=void 0}get surrLabel(){return`[Focus] Surroundings (${this.params.expandRadius} Å)`}getReprParams(C){return{...C,type:{name:C.type.name,params:{...C.type.params,ignoreHydrogens:this.params.ignoreHydrogens,ignoreHydrogensVariant:this.params.ignoreHydrogensVariant,ignoreLight:this.params.ignoreLight,material:this.params.material,clip:this.params.clip,interior:this.params.interior,animation:this.params.animation}}}}ensureShape(C){var l;const S=this.plugin.state.data,T=S.tree,A=S.build(),x=s.StateSelection.findUniqueTagsInSubtree(T,C.transform.ref,v);x[m.TargetSel]||(x[m.TargetSel]=A.to(C).apply(i.StateTransforms.Model.StructureSelectionFromBundle,{bundle:r.StructureElement.Bundle.Empty,label:"[Focus] Target"},{tags:m.TargetSel}).ref),x[m.SurrSel]||(x[m.SurrSel]=A.to(C).apply(i.StateTransforms.Model.StructureSelectionFromExpression,{expression:o.MolScriptBuilder.struct.generator.empty(),label:this.surrLabel},{tags:m.SurrSel}).ref);const M=this.params.components;return M.indexOf("target")>=0&&!x[m.TargetRepr]&&(x[m.TargetRepr]=A.to(x[m.TargetSel]).apply(i.StateTransforms.Representation.StructureRepresentation3D,this.getReprParams(this.params.targetParams),{tags:m.TargetRepr}).ref),M.indexOf("surroundings")>=0&&!x[m.SurrRepr]&&(x[m.SurrRepr]=A.to(x[m.SurrSel]).apply(i.StateTransforms.Representation.StructureRepresentation3D,this.getReprParams(this.params.surroundingsParams),{tags:m.SurrRepr}).ref),M.indexOf("interactions")>=0&&!x[m.SurrNciRepr]&&C.obj&&e.InteractionsRepresentationProvider.isApplicable((l=C.obj)===null||l===void 0?void 0:l.data)&&(x[m.SurrNciRepr]=A.to(x[m.SurrSel]).apply(i.StateTransforms.Representation.StructureRepresentation3D,this.getReprParams(this.params.nciParams),{tags:m.SurrNciRepr}).ref),{state:S,builder:A,refs:x}}clear(C){const l=this.plugin.state.data;this.currentSource=void 0;const S=l.select(s.StateSelection.Generators.byRef(C).subtree().withTag(m.TargetSel)),T=l.select(s.StateSelection.Generators.byRef(C).subtree().withTag(m.SurrSel));if(S.length===0&&T.length===0)return;const A=l.build(),x=r.StructureElement.Bundle.Empty;for(const D of S)A.to(D).update(i.StateTransforms.Model.StructureSelectionFromBundle,V=>({...V,bundle:x}));const M=o.MolScriptBuilder.struct.generator.empty();for(const D of T)A.to(D).update(i.StateTransforms.Model.StructureSelectionFromExpression,V=>({...V,expression:M}));return y.PluginCommands.State.Update(this.plugin,{state:l,tree:A,options:{doNotLogTiming:!0,doNotUpdateCurrent:!0}})}async focus(C){const l=this.plugin.helpers.substructureParent.get(C.structure);if(!l||!l.obj)return;this.currentSource=C;const S=r.StructureElement.Loci.remap(C,l.obj.data),T=r.StructureElement.Loci.extendToWholeResidues(S),A=r.StructureElement.Bundle.fromLoci(T),x=r.StructureElement.Bundle.toExpression(A);let M=o.MolScriptBuilder.struct.modifier.includeSurroundings({0:x,radius:this.params.expandRadius,"as-whole-residues":!0});this.params.excludeTargetFromSurroundings&&(M=o.MolScriptBuilder.struct.modifier.exceptBy({0:M,by:x}));const{state:D,builder:V,refs:R}=this.ensureShape(l);V.to(R[m.TargetSel]).update(i.StateTransforms.Model.StructureSelectionFromBundle,E=>({...E,bundle:A})),V.to(R[m.SurrSel]).update(i.StateTransforms.Model.StructureSelectionFromExpression,E=>({...E,expression:M,label:this.surrLabel})),await y.PluginCommands.State.Update(this.plugin,{state:D,tree:V,options:{doNotLogTiming:!0,doNotUpdateCurrent:!0}})}register(C){this.subscribeObservable(this.plugin.managers.structure.focus.behaviors.current,l=>{l?this.focus(l.loci):this.clear(s.StateTransform.RootRef)})}async update(C){const l=this.params;if(this.params=C,l.excludeTargetFromSurroundings!==C.excludeTargetFromSurroundings)return this.currentSource&&this.focus(this.currentSource),!0;const S=this.plugin.state.data,T=S.build(),A=s.StateSelection.Generators.root.subtree(),x=this.params.components;let M=x.indexOf("target")>=0;for(const D of S.select(A.withTag(m.TargetRepr)))M?T.to(D).update(this.getReprParams(this.params.targetParams)):T.delete(D.transform.ref);M=x.indexOf("surroundings")>=0;for(const D of S.select(A.withTag(m.SurrRepr)))M?T.to(D).update(this.getReprParams(this.params.surroundingsParams)):T.delete(D.transform.ref);M=x.indexOf("interactions")>=0;for(const D of S.select(A.withTag(m.SurrNciRepr)))M?T.to(D).update(this.getReprParams(this.params.nciParams)):T.delete(D.transform.ref);return await y.PluginCommands.State.Update(this.plugin,{state:S,tree:T,options:{doNotLogTiming:!0,doNotUpdate
7083Current:!0}}),C.expandRadius!==l.expandRadius&&this.currentSource&&this.focus(this.currentSource),!0}}return ol.StructureFocusRepresentation=c.PluginBehavior.create({name:"create-structure-focus-representation",display:{name:"Structure Focus Representation"},category:"interaction",ctor:b,params:(P,C)=>p(C)}),ol}var H9;function Xw(){if(H9)return Jo;H9=1,Object.defineProperty(Jo,"__esModule",{value:!0}),Jo.PresetStructureRepresentations=void 0,Jo.StructureRepresentationPresetProvider=p,Jo.presetStaticComponent=B,Jo.presetSelectionComponent=w;const e=Ne(),t=Tt(),r=Ke(),n=Et(),i=jl(),c=gs(),o=$w(),s=C2(),h=Uf(),f=a2(),y=Ua(),_=DT(),g=Gt(),a=wt(),d=ro();function p(O){return O}(function(O){O.CommonParams={ignoreHydrogens:e.ParamDefinition.Optional(e.ParamDefinition.Boolean(!1)),ignoreHydrogensVariant:e.ParamDefinition.Optional(e.ParamDefinition.Select("all",e.ParamDefinition.arrayToOptions(["all","non-polar"]))),ignoreLight:e.ParamDefinition.Optional(e.ParamDefinition.Boolean(!1)),quality:e.ParamDefinition.Optional(e.ParamDefinition.Select("auto",t.VisualQualityOptions)),theme:e.ParamDefinition.Optional(e.ParamDefinition.Group({globalName:e.ParamDefinition.Optional(e.ParamDefinition.Text("")),globalColorParams:e.ParamDefinition.Optional(e.ParamDefinition.Value({},{isHidden:!0})),carbonColor:e.ParamDefinition.Optional(e.ParamDefinition.Select("chain-id",e.ParamDefinition.arrayToOptions(["chain-id","operator-name","element-symbol"]))),symmetryColor:e.ParamDefinition.Optional(e.ParamDefinition.Text("")),symmetryColorParam
7083s:e.ParamDefinition.Optional(e.ParamDefinition.Value({},{isHidden:!0})),focus:e.ParamDefinition.Optional(e.ParamDefinition.Group({name:e.ParamDefinition.Optional(e.ParamDefinition.Text("")),params:e.ParamDefinition.Optional(e.ParamDefinition.Value({}))}))}))};function F(N){return N==="chain-id"?{name:N,params:h.ChainIdColorThemeProvider.defaultValues}:N==="operator-name"?{name:N,params:f.OperatorNameColorThemeProvider.defaultValues}:{name:N,params:{}}}function L(N){return N.units.some(k=>!k.conformation.operator.assembly&&k.conformation.operator.spgrOp>=0)}function U(N,k,j){var H,G,z,W,X,Y,K,Q,J,ae,te,ne,$,ie;const Z=N.state.data.build(),re=N.builders.structure.representation,oe=N.managers.structure.component.state.options.hydrogens,ce={quality:N.managers.structure.component.state.options.visualQuality,ignoreHydrogens:oe!=="all",ignoreHydrogensVariant:oe==="only-polar"?"non-polar":"all",ignoreLight:N.managers.structure.component.state.options.ignoreLight};k.quality&&k.quality!=="auto"&&(ce.quality=k.quality),k.ignoreHydrogens!==void 0&&(ce.ignoreHydrogens=!!k.ignoreHydrogens),k.ignoreHydrogensVariant!==void 0&&(ce.ignoreHydrogensVariant=k.ignoreHydrogensVariant),k.ignoreLight!==void 0&&(ce.ignoreLight=!!k.ignoreLight);const ue=!((H=k.theme)===null||H===void 0)&&H.globalName?(G=k.theme)===null||G===void 0?void 0:G.globalName:void 0,pe=((z=k.theme)===null||z===void 0?void 0:z.carbonColor)!==void 0?{carbonColor:F((W=k.theme)===null||W===void 0?void 0:W.carbonColor),...(X=k.theme)===null||X===void 0?void 0:X.globalColorParams}:{...(Y=k.theme)===null||Y===void 0?void 0:Y.globalColorParams},he=j&&(!((K=k.theme)===null||K===void 0)&&K.symmetryColor)&&L(j)?(Q=k.theme)===null||Q===void 0?void 0:Q.symmetryColor:ue,fe=!((J=k.theme)===null||J===void 0)&&J.symmetryColorParam
7083s?{...(ae=k.theme)===null||ae===void 0?void 0:ae.globalColorParams,...(te=k.theme)===null||te===void 0?void 0:te.symmetryColorParams}:{...(ne=k.theme)===null||ne===void 0?void 0:ne.globalColorParams},de=!(($=k.theme)===null||$===void 0)&&$.globalColorParams?{...(ie=k.theme)===null||ie===void 0?void 0:ie.globalColorParams}:void 0;return{update:Z,builder:re,color:ue,symmetryColor:he,symmetryColorParams:fe,globalColorParams:de,typeParams:ce,ballAndStickColor:pe}}O.reprBuilder=U;function q(N,k,j,H){if(N.state.hasBehavior(o.StructureFocusRepresentation))return N.state.updateBehavior(o.StructureFocusRepresentation,G=>{const z=(0,s.createStructureColorThemeParams)(N,k,"ball-and-stick",j||"element-symbol",H);G.surroundingsParams.colorTheme=z,G.targetParams.colorTheme=z})}O.updateFocusRepr=q})(p||(Jo.StructureRepresentationPresetProvider=p={}));const u=p.CommonParams,m=p.reprBuilder,v=p.updateFocusRepr,b=p({id:"preset-structure-representation-auto",display:{name:"Automatic",description:"Show representations based on the size of the structure. Smaller structures are shown with more detail than larger ones, ranging from atomistic display to coarse surfaces."},params:()=>u,apply(O,F,L){var U,q;const N=(q=(U=n.StateObjectRef.resolveAndCheck(L.state.data,O))===null||U===void 0?void 0:U.obj)===null||q===void 0?void 0:q.data;if(!N)return{};const k=L.config.get(c.PluginConfig.Structure.SizeThresholds)||r.Structure.DefaultSizeThresholds,j=r.Structure.getSize(N,k),H=N.polymerResidueCount/N.polymerGapCount;switch(j){case r.Structure.Size.Gigantic:case r.Structure.Size.Huge:return T.apply(O,F,L);case r.Structure.Size.Large:return A.apply(O,F,L);case r.Structure.Size.Medium:if(H>3)return l.apply(O,F,L);case r.Structure.Size.Small:return x.apply(O,{...F,showCarbohydrateSymbol:!0},L);default:(0,g.assertUnreachable)(j)}}}),P=p({id:"preset-structure-representation-empty",display:{name:"Empty",description:"Removes all existing representations."},async apply(O,F,L){return{}}}),C="Basic",l=p({id:"preset-structure-representation-polymer-and-ligand",display:{name:"Polymer & Ligand",group:C,description:"Shows polymers as Cartoon, ligands as Ball & Stick, carbohydrates as 3D-SNFG and water molecules semi-transparent."},params:()=>u,async apply(O,F,L){var U,q,N,k,j,H,G,z,W,X;const Y=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!Y)return{};const K={polymer:await B(L,Y,"polymer"),ligand:await B(L,Y,"ligand"),nonStandard:await B(L,Y,"non-standard"),branched:await B(L,Y,"branched",{label:"Carbohydrate"}),water:await B(L,Y,"water"),ion:await B(L,Y,"ion"),lipid:await B(L,Y,"lipid"),coarse:await B(L,Y,"coarse")},Q=Y.obj.data,J=(((N=(q=(U=K.water)===null||U===void 0?void 0:U.obj)===null||q===void 0?void 0:q.data)===null||N===void 0?void 0:N.elementCount)||0)>5e4?"line":"ball-and-stick",ae=(((H=(j=(k=K.lipid)===null||k===void 0?void 0:k.obj)===null||j===void 0?void 0:j.data)===null||H===void 0?void 0:H.elementCount)||0)>2e4?"line":"ball-and-stick",{update:te,builder:ne,typeParams:$,color:ie,symmetryColor:Z,symmetryColorParam
7083s:re,globalColorParams:oe,ballAndStickColor:ce}=m(L,F,Q),ue={polymer:ne.buildRepresentation(te,K.polymer,{type:"cartoon",typeParams:$,color:Z,colorParams:re},{tag:"polymer"}),ligand:ne.buildRepresentation(te,K.ligand,{type:"ball-and-stick",typeParams:$,color:ie,colorParams:ce},{tag:"ligand"}),nonStandard:ne.buildRepresentation(te,K.nonStandard,{type:"ball-and-stick",typeParams:$,color:ie,colorParams:ce},{tag:"non-standard"}),branchedBallAndStick:ne.buildRepresentation(te,K.branched,{type:"ball-and-stick",typeParams:{...$,alpha:.3},color:ie,colorParams:ce},{tag:"branched-ball-and-stick"}),branchedSnfg3d:ne.buildRepresentation(te,K.branched,{type:"carbohydrate",typeParams:$,color:ie,colorParams:oe},{tag:"branched-snfg-3d"}),water:ne.buildRepresentation(te,K.water,{type:J,typeParams:{...$,alpha:.6,visuals:J==="line"?["intra-bond","element-point"]:void 0},color:ie,colorParams:{carbonColor:{name:"element-symbol",params:{}},...oe}},{tag:"water"}),ion:ne.buildRepresentation(te,K.ion,{type:"ball-and-stick",typeParams:$,color:ie,colorParams:{carbonColor:{name:"element-symbol",params:{}},...oe}},{tag:"ion"}),lipid:ne.buildRepresentation(te,K.lipid,{type:ae,typeParams:{...$,alpha:.6,visuals:ae==="line"?["intra-bond"]:void 0},color:ie,colorParams:{carbonColor:{name:"element-symbol",params:{}},...oe}},{tag:"lipid"}),coarse:ne.buildRepresentation(te,K.coarse,{type:"spacefill",typeParams:$,color:ie||"chain-id",colorParams:oe},{tag:"coarse"})};return await te.commit({revertOnError:!1}),await v(L,Q,(z=(G=F.theme)===null||G===void 0?void 0:G.focus)===null||z===void 0?void 0:z.name,(X=(W=F.theme)===null||W===void 0?void 0:W.focus)===null||X===void 0?void 0:X.params),{components:K,representations:ue}}}),S=p({id:"preset-structure-representation-protein-and-nucleic",display:{name:"Protein & Nucleic",group:C,description:"Shows proteins as Cartoon and RNA/DNA as Gaussian Surface."},params:()=>u,async apply(O,F,L){var U,q,N,k;const j=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!j)return{};const H={protein:await w(L,j,"protein"),nucleic:await w(L,j,"nucleic")},G=j.obj.data,z={radiusOffset:G.isCoarseGrained?2:0,smoothness:G.isCoarseGrained?1:1.5},{update:W,builder:X,typeParams:Y,symmetryColor:K,symmetryColorParam
7083s:Q}=m(L,F,G),J={protein:X.buildRepresentation(W,H.protein,{type:"cartoon",typeParams:Y,color:K,colorParams:Q},{tag:"protein"}),nucleic:X.buildRepresentation(W,H.nucleic,{type:"gaussian-surface",typeParams:{...Y,...z},color:K,colorParams:Q},{tag:"nucleic"})};return await W.commit({revertOnError:!0}),await v(L,G,(q=(U=F.theme)===null||U===void 0?void 0:U.focus)===null||q===void 0?void 0:q.name,(k=(N=F.theme)===null||N===void 0?void 0:N.focus)===null||k===void 0?void 0:k.params),{components:H,representations:J}}}),T=p({id:"preset-structure-representation-coarse-surface",display:{name:"Coarse Surface",group:C,description:"Shows polymers and lipids as coarse Gaussian Surface."},params:()=>u,async apply(O,F,L){var U,q,N,k;const j=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!j)return{};const H={polymer:await B(L,j,"polymer"),lipid:await B(L,j,"lipid")},G=j.obj.data,z=L.config.get(c.PluginConfig.Structure.SizeThresholds)||r.Structure.DefaultSizeThresholds,W=r.Structure.getSize(G,z),X=Object.create(null);W===r.Structure.Size.Gigantic?Object.assign(X,{traceOnly:!G.isCoarseGrained,radiusOffset:2,smoothness:1,visuals:["structure-gaussian-surface-mesh"]}):W===r.Structure.Size.Huge?Object.assign(X,{radiusOffset:G.isCoarseGrained?2:0,smoothness:1}):G.isCoarseGrained&&Object.assign(X,{radiusOffset:2,smoothness:1});const{update:Y,builder:K,typeParams:Q,symmetryColor:J,symmetryColorParam
7083s:ae}=m(L,F,G),te={polymer:K.buildRepresentation(Y,H.polymer,{type:"gaussian-surface",typeParams:{...Q,...X},color:J,colorParams:ae},{tag:"polymer"}),lipid:K.buildRepresentation(Y,H.lipid,{type:"gaussian-surface",typeParams:{...Q,...X},color:J,colorParams:ae},{tag:"lipid"})};return await Y.commit({revertOnError:!0}),await v(L,G,(q=(U=F.theme)===null||U===void 0?void 0:U.focus)===null||q===void 0?void 0:q.name,(k=(N=F.theme)===null||N===void 0?void 0:N.focus)===null||k===void 0?void 0:k.params),{components:H,representations:te}}}),A=p({id:"preset-structure-representation-polymer-cartoon",display:{name:"Polymer Cartoon",group:C,description:"Shows polymers as Cartoon."},params:()=>u,async apply(O,F,L){var U,q,N,k;const j=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!j)return{};const H={polymer:await B(L,j,"polymer")},G=j.obj.data,{update:z,builder:W,typeParams:X,symmetryColor:Y,symmetryColorParams:K}=m(L,F,G),Q={polymer:W.buildRepresentation(z,H.polymer,{type:"cartoon",typeParams:X,color:Y,colorParams:K},{tag:"polymer"})};return await z.commit({revertOnError:!0}),await v(L,G,(q=(U=F.theme)===null||U===void 0?void 0:U.focus)===null||q===void 0?void 0:q.name,(k=(N=F.theme)===null||N===void 0?void 0:N.focus)===null||k===void 0?void 0:k.params),{components:H,representations:Q}}}),x=p({id:"preset-structure-representation-atomic-detail",display:{name:"Atomic Detail",group:C,description:"Shows everything in atomic detail."},params:()=>({...u,showCarbohydrateSymbol:e.ParamDefinition.Boolean(!1)}),async apply(O,F,L){var U,q,N,k,j,H;const G=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!G)return{};const z={all:await B(L,G,"all"),branched:void 0},W=G.obj.data,X=W.elementCount>1e5,Y=W.elementCount>1e6,K=W.units.length>5e3,Q=W.atomicResidueCount&&W.elementCount>1e3&&W.atomicResidueCount/W.elementCount<3,J=W.models[0],ae=!!y.IndexPairBonds.Provider.get(J)||_.StructConn.isExhaustive(J);let te="ball-and-stick";W.isCoarseGrained||K?te=Y?"point":"spacefill":Q&&!ae?te="spacefill":X&&(te="line");const ne=F.showCarbohydrateSymbol&&!X&&!Q;ne&&Object.assign(z,{branched:await B(L,G,"branched",{label:"Carbohydrate"})});const{update:$,builder:ie,typeParams:Z,color:re,ballAndStickColor:oe,globalColorParams:ce}=m(L,F,W),ue=Q&&!ae?{carbonColor:{name:"element-symbol",params:{}},...ce}:oe,pe={all:ie.buildRepresentation($,z.all,{type:te,typeParams:Z,color:re,colorParams:ue},{tag:"all"})};
7083return ne&&Object.assign(pe,{snfg3d:ie.buildRepresentation($,z.branched,{type:"carbohydrate",typeParams:{...Z,alpha:.4,visuals:["carbohydrate-symbol"]},color:re,colorParams:ce},{tag:"snfg-3d"})}),await $.commit({revertOnError:!0}),await v(L,W,(N=(q=(U=F.theme)===null||U===void 0?void 0:U.focus)===null||q===void 0?void 0:q.name)!==null&&N!==void 0?N:re,(H=(j=(k=F.theme)===null||k===void 0?void 0:k.focus)===null||j===void 0?void 0:j.params)!==null&&H!==void 0?H:ue),{components:z,representations:pe}}}),M=p({id:"preset-structure-representation-illustrative",display:{name:"Illustrative",group:"Miscellaneous",description:"Show everything in spacefill representation with illustrative colors and ignore light."},params:()=>u,async apply(O,F,L){var U,q,N,k,j;const H=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!H)return{};const G={all:await B(L,H,"all"),branched:void 0},z=H.obj.data,{update:W,builder:X,typeParams:Y,color:K}=m(L,F,z),Q={all:X.buildRepresentation(W,G.all,{type:"spacefill",typeParams:{...Y,ignoreLight:!0},color:"illustrative",colorParams:{style:{name:"entity-id",params:{overrideWater:!0}}}},{tag:"all"})};return await W.commit({revertOnError:!0}),await v(L,z,(N=(q=(U=F.theme)===null||U===void 0?void 0:U.focus)===null||q===void 0?void 0:q.name)!==null&&N!==void 0?N:K,(j=(k=F.theme)===null||k===void 0?void 0:k.focus)===null||j===void 0?void 0:j.params),{components:G,representations:Q}}}),D=p({id:"preset-structure-representation-molecular-surface",display:{name:"Molecular Surface",group:"Miscellaneous",description:"Show everything in molecular surface representation with illustrative colors."},params:()=>u,async apply(O,F,L){var U,q,N,k,j;const H=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!H)return{};const G={all:await B(L,H,"all"),branched:void 0},z=H.obj.data,{update:W,builder:X,typeParams:Y,color:K}=m(L,F,z),Q={all:X.buildRepresentation(W,G.all,{type:"molecular-surface",typeParams:Y,color:"entity-id",colorParams:{overrideWater:!0}},{tag:"all"})};return await W.commit({revertOnError:!0}),await v(L,z,(N=(q=(U=F.theme)===null||U===void 0?void 0:U.focus)===null||q===void 0?void 0:q.name)!==null&&N!==void 0?N:K,(j=(k=F.theme)===null||k===void 0?void 0:k.focus)===null||j===void 0?void 0:j.params),{components:G,representations:Q}}}),V=p({id:"preset-structure-representation-auto-lod",display:{name:"Automatic Detail",group:"Miscellaneous",description:"Shows more (or less) detailed representations automatically based on camera distance."},params:()=>u,async apply(O,F,L){var U,q,N,k;const j=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!j)return{};const H={all:await B(L,j,"all")},G=j.obj.data,{update:z,builder:W,typeParams:X,color:Y,symmetryColor:K,symmetryColorParam
7083s:Q,ballAndStickColor:J}=m(L,F,G),ae={gaussianSurface:W.buildRepresentation(z,H.all,{type:"gaussian-surface",typeParams:{...X,lod:a.Vec3.create(30,1e7,100)},color:K,colorParams:Q},{tag:"gaussian-surface"}),cartoon:W.buildRepresentation(z,H.all,{type:"cartoon",typeParams:{...X,lod:a.Vec3.create(-20,300,100)},color:K,colorParams:Q},{tag:"cartoon"}),ballAndStick:W.buildRepresentation(z,H.all,{type:"ball-and-stick",typeParams:{...X,lod:a.Vec3.create(-20,40,20)},color:Y,colorParams:J},{tag:"ball-and-stick"})};return await z.commit({revertOnError:!1}),await v(L,G,(q=(U=F.theme)===null||U===void 0?void 0:U.focus)===null||q===void 0?void 0:q.name,(k=(N=F.theme)===null||N===void 0?void 0:N.focus)===null||k===void 0?void 0:k.params),{components:H,representations:ae}}}),R=e.ParamDefinition.arrayToOptions(Object.keys(d.Spheres.LodLevelsPresets));function E(O){return d.Spheres.LodLevelsPresets[O]}const I=p({id:"preset-structure-representation-mesoscale",display:{name:"Mesoscale",group:"Miscellaneous",description:"Show everything in spacefill representation with instance-granularity and level-of-detail tuned for large particle scenes."},params:()=>({...u,graphics:e.ParamDefinition.Select("quality",R)}),async apply(O,F,L){var U,q,N,k,j,H;const G=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!G)return{};const z={all:await B(L,G,"all")},W=G.obj.data,{update:X,builder:Y,typeParams:K,color:Q}=m(L,F,W),J=(U=F.graphics)!==null&&U!==void 0?U:"quality",ae=E(J),te=J!=="quality"&&J!=="ultra",ne=J==="performance"?15:12,$={all:Y.buildRepresentation(X,z.all,{type:"spacefill",typeParams:{...K,instanceGranularity:!0,lodLevels:ae,approximate:te,alphaThickness:ne,clipPrimitive:!0},color:Q||"entity-id"},{tag:"all"})};return await X.commit({revertOnError:!0}),await v(L,W,(k=(N=(q=F.theme)===null||q===void 0?void 0:q.focus)===null||N===void 0?void 0:N.name)!==null&&k!==void 0?k:Q,(H=(j=F.theme)===null||j===void 0?void 0:j.focus)===null||H===void 0?void 0:H.params),{components:z,representations:$}}});function B(O,F,L,U){return O.builders.structure.tryCreateComponentStatic(F,L,U)}function w(O,F,L,U){return O.builders.structure.tryCreateComponentFromSelection(F,i.StructureSelectionQueries[L],`selection-${L}`,U)}return Jo.PresetStructureRepresentations={empty:P,auto:b,"atomic-detail":x,"polymer-cartoon":A,"polymer-and-ligand":l,"protein-and-nucleic":S,"coarse-surface":T,illustrative:M,"molecular-surface":D,"auto-lod":V,mesoscale:I},Jo}var W9;function dce(){if(W9)return $b;W9=1,Object.defineProperty($b,"__esModule",{value:!0}),$b.StructureRepresentationBuilder=void 0;const e=_t(),t=Et(),r=nt(),n=Ct(),i=vr(),c=Ne(),o=C2(),s=$S(),h=Xw(),f=Vt(),y=gs();class _{get dataState(){return this.plugin.state.data}resolveProvider(a){var d;return typeof a=="string"?(d=h.PresetStructureRepresentations[a])!==null&&d!==void 0?d:(0,e.arrayFind)(this._providers,p=>p.id===a):a}hasPreset(a){for(const d of this._providers)if(!d.isApplicable||d.isApplicable(a,this.plugin))return!0;return!1}get providers(){return this._providers}getPresets(a){if(!a)return this.providers;const d=[];for(const p of this._providers)p.isApplicable&&!p.isApplicable(a,this.plugin)||d.push(p);return d}getPresetSelect(a){const d=[];for(const p of this._providers)a&&p.isApplicable&&!p.isApplicable(a,this.plugin)||d.push([p.id,p.display.name,p.display.group]);return c.ParamDefinition.Select("auto",d)}getPresetsWithOptions(a){const d=[],p=Object.create(null);for(const u of this._providers)u.isApplicable&&!u.isApplicable(a,this.plugin)||(d.push([u.id,u.display.name]),p[u.id]=u.params?c.ParamDefinition.Group(u.params(a,this.plugin)):c.ParamDefinition.EmptyGroup());return d.length===0?c.ParamDefinition.MappedStatic("",{"":c.ParamDefinition.EmptyGroup()}):c.ParamDefinition.MappedStatic(d[0][0],p,{options:d})}registerPreset(a){if(this.providerMap.has(a.id))throw new Error(`Representation provider with id '${a.id}' already registered.`);this._providers.push(a),this.providerMap.set(a.id,a)}unregisterPreset(a){this.providerMap.delete(a.id),(0,f.arrayRemoveInPlace)(this._providers,a)}applyPreset(a,d,p){var u;const m=this.resolveProvider(d);if(!m)return;const v=this.plugin.state.data,b=t.StateObjectRef.resolveAndCheck(v,a);if(!b){n.isProductionMode||console.warn("Applying structure repr. provider to bad cell.");return}const P=((u=m.params)===null||u===void 0?void 0:u.call(m,b.obj,this.plugin))||{};let C=p||(m.params?c.ParamDefinition.getDefaultValues(P):{});const l=this.plugin.config.get(y.PluginConfig.Structure.DefaultRepresentationPresetParams);C=c.ParamDefinition.merge(P,l,C);const S=r.Task.create(`${m.display.name}`,()=>m.apply(b,C,this.plugin));return this.plugin.runTask(S)}async addRepresentation(a,d,p){const u=this.dataState.build(),m=this.buildRepresentation(u,a,d,p);if(m)return await u.commit(),m}buildRepresentation(a,d,p,u){var m,v;if(!d)return;const b=(v=(m=t.StateObjectRef.resolveAndCheck(this.dataState,d))===null||m===void 0?void 0:m.obj)===null||v===void 0?void 0:v.data;if(!b)return;const P=(0,o.createStructureRepresentationParams)(this.plugin,b,p);return u?.tag?a.to(d).applyOrUpdateTagged(u.tag,s.StructureRepresentation3D,P,{state:u?.initialState}).selector:a.to(d).apply(s.StructureRepresentation3D,P,{state:u?.initialState}).selector}constructor(a){this.plugin=a,this._providers=[],this.providerMap=new Map,this.defaultProvider=h.PresetStructureRepresentations.auto,(0,i.objectForEach)(h.PresetStructureRepresentations,d=>this.registerPreset(d))}}return $b.StructureRepresentationBuilder=_,$b}var Xb={},sl={},$9;
7083function fce(){if($9)return sl;$9=1,Object.defineProperty(sl,"__esModule",{value:!0}),sl.PresetTrajectoryHierarchy=void 0,sl.TrajectoryHierarchyPresetProvider=y;const e=Ne(),t=Et(),r=Dr(),n=Dw(),i=Xw(),c=Ge(),o=Ke(),s=ql(),h=a2(),f=gs();function y(l){return l}(function(l){l.CommonParams=(S,T)=>({modelProperties:e.ParamDefinition.Optional(e.ParamDefinition.Group(t.StateTransformer.getParamDefinition(r.StateTransforms.Model.CustomModelProperties,void 0,T))),structureProperties:e.ParamDefinition.Optional(e.ParamDefinition.Group(t.StateTransformer.getParamDefinition(r.StateTransforms.Model.CustomStructureProperties,void 0,T))),representationPreset:e.ParamDefinition.Optional(e.ParamDefinition.Text("auto"))})})(y||(sl.TrajectoryHierarchyPresetProvider=y={}));const _=y.CommonParams,a=y({id:"preset-trajectory-default",display:{name:"Default (Assembly)",group:"Preset",description:"Shows the first assembly or, if that is unavailable, the first model."},isApplicable:l=>!0,params:(l,S)=>({model:e.ParamDefinition.Optional(e.ParamDefinition.Group(t.StateTransformer.getParamDefinition(r.StateTransforms.Model.ModelFromTrajectory,l,S))),showUnitcell:e.ParamDefinition.Optional(e.ParamDefinition.Boolean(!1)),structure:e.ParamDefinition.Optional(n.RootStructureDefinition.getParams(void 0,"assembly").type),representationPresetParams:e.ParamDefinition.Optional(e.ParamDefinition.Group(i.StructureRepresentationPresetProvider.CommonParams)),..._(l,S)}),async apply(l,S,T){const A=T.builders.structure,x=await A.createModel(l,S.model),M=await A.insertModelProperties(x,S.modelProperties),D=await A.createStructure(M||x,S.structure),V=await A.insertStructureProperties(D,S.structureProperties),R=S.showUnitcell===void 0||S.showUnitcell?await A.tryCreateUnitcell(M,void 0,{isHidden:!0}):void 0,E=S.representationPreset||T.config.get(f.PluginConfig.Structure.DefaultRepresentationPreset)||i.PresetStructureRepresentations.auto.id,I=await T.builders.structure.representation.applyPreset(V,E,S.representationPresetParams);return{model:x,modelProperties:M,unitcell:R,structure:D,structureProperties:V,representation:I}}}),p=y({id:"preset-trajectory-all-models",display:{name:"All Models",group:"Preset",description:"Shows all models; colored by trajectory-index."},isApplicable:l=>l.data.frameCount>1,params:(l,S)=>({useDefaultIfSingleModel:e.ParamDefinition.Optional(e.ParamDefinition.Boolean(!1)),representationPresetParams:e.ParamDefinition.Optional(e.ParamDefinition.Group(i.StructureRepresentationPresetProvider.CommonParams)),..._(l,S)}),async apply(l,S,T){var A,x;const M=(x=(A=t.StateObjectRef.resolveAndCheck(T.state.data,l))===null||A===void 0?void 0:A.obj)===null||x===void 0?void 0:x.data;if(!M)return{};if(M.frameCount===1&&S.useDefaultIfSingleModel)return a.apply(l,S,T);const D=T.builders.structure,V=[],R=[];for(let E=0;E<M.frameCount;E++){const I=await D.createModel(l,{modelIndex:E}),B=await D.insertModelProperties(I,S.modelProperties,{isCollapsed:!0}),w=await D.createStructure(B||I,{name:"model",params:{}}),O=await D.insertStructureProperties(w,S.structureProperties);V.push(I),R.push(w);const F=w.obj?(0,s.getStructureQuality)(w.obj.data,{elementCountFactor:M.frameCount}):"medium",L=S.representationPreset||T.config.get(f.PluginConfig.Structure.DefaultRepresentationPreset)||i.PresetStructureRepresentations.auto.id;await D.representation.applyPreset(O,L,{theme:{globalName:"trajectory-index"},quality:F})}return{models:V,structures:R}}}),u=(l,S)=>({model:e.ParamDefinition.Optional(e.ParamDefinition.Group(t.StateTransformer.getParamDefinition(r.StateTransforms.Model.ModelFromTrajectory,l,S))),..._(l,S)});async function m(l,S,T,A){const x=A.builders.structure,M=await x.createModel(S,T.model),D=await x.insertModelProperties(M,T.modelProperties),V=await x.createStructure(D||M,{name:"symmetry",params:l}),R=await x.insertStructureProperties(V,T.structureProperties),E=await x.tryCreateUnitcell(D,void 0,{isHidden:!1}),I=T.representationPreset||A.config.get(f.PluginConfig.Structure.DefaultRepresentationPreset)||i.PresetStructureRepresentations.auto.id,B=await A.builders.structure.representation.applyPreset(R,I,{theme:{globalName:l.theme}});return{model:M,modelProperties:D,unitcell:E,structure:V,structureProperties:R,representation:B}}const v=y({id:"preset-trajectory-unitcell",display:{name:"Unit Cell",group:"Preset",description:"Shows the fully populated unit cell."},isApplicable:l=>o.Model.hasCrystalSymmetry(l.data.representative),params:u,async apply(l,S,T){return await m({ijkMin:c.Vec3.create(0,0,0),ijkMax:c.Vec3.create(0,0,0)},l,S,T)}}),b=y({id:"preset-trajectory-supercell",display:{name:"Super Cell",group:"Preset",description:"Shows the super cell, i.e. the central unit cell and all adjacent unit cells."},isApplicable:l=>o.Model.hasCrystalSymmetry(l.data.representative),params:u,async apply(l,S,T){return await m({ijkMin:c.Vec3.create(-1,-1,-1),ijkMax:c.Vec3.create(1,1,1),theme:"operator-hkl"},l,S,T)}}),C=y({id:"preset-trajectory-crystal-contacts",display:{name:"Crystal Contacts",group:"Preset",description:"Showsasymetric unit and chains from neighbours within 5 Å, i.e., symmetry mates."},isApplicable:l=>o.Model.hasCrystalSymmetry(l.data.representative),params:(l,S)=>({model:e.ParamDefinition.Optional(e.ParamDefinition.Group(t.StateTransformer.getParamDefinition(r.StateTransforms.Model.ModelFromTrajectory,l,S))),..._(l,S)}),async apply(l,S,T){const A=T.builders.structure,x=await A.createModel(l,S.model),M=await A.insertModelProperties(x,S.modelProperties),D=await A.createStructure(M||x,{name:"symmetry-mates",params:{radiu
7083s:5}}),V=await A.insertStructureProperties(D,S.structureProperties),R=await A.tryCreateUnitcell(M,void 0,{isHidden:!0}),E=S.representationPreset||T.config.get(f.PluginConfig.Structure.DefaultRepresentationPreset)||i.PresetStructureRepresentations.auto.id,I=await T.builders.structure.representation.applyPreset(V,E,{theme:{globalName:"operator-name",carbonColor:"operator-name",focus:{name:"element-symbol",params:{carbonColor:{name:"operator-name",params:h.OperatorNameColorThemeProvider.defaultValues}}}}});return{model:x,modelProperties:M,unitcell:R,structure:D,structureProperties:V,representation:I}}});return sl.PresetTrajectoryHierarchy={default:a,"all-models":p,unitcell:v,supercell:b,crystalContacts:C},sl}var X9;function mce(){if(X9)return Xb;X9=1,Object.defineProperty(Xb,"__esModule",{value:!0}),Xb.TrajectoryHierarchyBuilder=void 0;const e=_t(),t=Et(),r=nt(),n=Ct(),i=vr(),c=Ne(),o=fce(),s=Vt();class h{resolveProvider(y){var _;return typeof y=="string"?(_=o.PresetTrajectoryHierarchy[y])!==null&&_!==void 0?_:(0,e.arrayFind)(this._providers,g=>g.id===y):y}hasPreset(y){for(const _ of this._providers)if(!_.isApplicable||_.isApplicable(y,this.plugin))return!0;return!1}get providers(){return this._providers}getPresets(y){if(!y)return this.providers;const _=[];for(const g of this._providers)g.isApplicable&&!g.isApplicable(y,this.plugin)||_.push(g);return _}getPresetSelect(y){const _=[];for(const g of this._providers)y&&g.isApplicable&&!g.isApplicable(y,this.plugin)||_.push([g.id,g.display.name]);return c.ParamDefinition.Select("auto",_)}getPresetsWithOptions(y){const _=[],g=Object.create(null);for(const a of this._providers)a.isApplicable&&!a.isApplicable(y,this.plugin)||(_.push([a.id,a.display.name]),g[a.id]=a.params?c.ParamDefinition.Group(a.params(y,this.plugin)):c.ParamDefinition.EmptyGroup());return _.length===0?c.ParamDefinition.MappedStatic("",{"":c.ParamDefinition.EmptyGroup()}):c.ParamDefinition.MappedStatic(_[0][0],g,{options:_})}registerPreset(y){if(this.providerMap.has(y.id))throw new Error(`Hierarchy provider with id '${y.id}' already registered.`);this._providers.push(y),this.providerMap.set(y.id,y)}unregisterPreset(y){this.providerMap.delete(y.id),(0,s.arrayRemoveInPlace)(this._providers,y)}applyPreset(y,_,g){const a=this.resolveProvider(_);if(!a)return;const d=this.plugin.state.data,p=t.StateObjectRef.resolveAndCheck(d,y);if(!p){n.isProductionMode||console.warn("Applying hierarchy preset provider to bad cell.");return}const u=g||(a.params?c.ParamDefinition.getDefaultValues(a.params(p.obj,this.plugin)):{}),m=r.Task.create(`${a.display.name}`,()=>a.apply(p,u,this.plugin));return this.plugin.runTask(m)}constructor(y){this.plugin=y,this._providers=[],this.providerMap=new Map,this.defaultProvider=o.PresetTrajectoryHierarchy.default,(0,i.objectForEach)(o.PresetTrajectoryHierarchy,_=>this.registerPreset(_))}}return Xb.TrajectoryHierarchyBuilder=h,Xb}var K9;function pce(){if(K9)return Wb;K9=1,Object.defineProperty(Wb,"__esModule",{value:!0}),Wb.StructureBuilder=void 0;const e=Et(),t=jt(),r=Dr(),n=dce(),i=nt(),c=Ke(),o=Qn(),s=rt(),h=mce();class f{get dataState(){return this.plugin.state.data}async parseTrajectoryData(_,g){const a=typeof g=="string"?this.plugin.dataFormats.get(g):g;if(!a)throw new Error(`'${g}' is not a supported data format.`);const{trajectory:d}=await a.parse(this.plugin,_);return d}parseTrajectoryBlob(_,g){return this.dataState.build().to(_).apply(r.StateTransforms.Data.ParseBlob,g,{state:{isGhost:!0}}).apply(r.StateTransforms.Model.TrajectoryFromBlob,void 0).commit({revertOnError:!0})}parseTrajectory(_,g){const a=e.StateObjectRef.resolveAndCheck(this.dataState,_);if(!a)throw new Error("Invalid data cell.");return t.PluginStateObject.Data.Blob.is(a.obj)?this.parseTrajectoryBlob(_,g):this.parseTrajectoryData(_,g)}createModel(_,g,a){return this.dataState.build().to(_).apply(r.StateTransforms.Model.ModelFromTrajectory,g||{modelIndex:0},{state:a}).commit({revertOnError:!0})}insertModelProperties(_,g,a){return this.dataState.build().to(_).apply(r.StateTransforms.Model.CustomModelProperties,g,{state:a}).commit({revertOnError:!0})}tryCreateUnitcell(_,g,a){var d,p,u;const m=this.dataState,v=(p=(d=e.StateObjectRef.resolveAndCheck(m,_))===null||d===void 0?void 0:d.obj)===null||p===void 0?void 0:p.data;if(!v)return;const b=(u=o.ModelSymmetry.Provider.get(v))===null||u===void 0?void 0:u.spacegroup.cell;return s.SpacegroupCell.isZero(b)?void 0:m.build().to(_).apply(r.StateTransforms.Representation.ModelUnitcell3D,g,{state:a}).commit({revertOnError:!0})}createStructure(_,g,a,d){var p;const u=this.dataState;if(!g){const v=e.StateObjectRef.resolveAndCheck(u,_);if(v){const b=o.ModelSymmetry.Provider.get((p=v.obj)===null||p===void 0?void 0:p.data);(!b||b?.assemblies.length===0)&&(g={name:"model",params:{}})}}return u.build().to(_).apply(r.StateTransforms.Model.StructureFromModel,{type:g||{name:"assembly",params:{}}},{state:a,tags:d}).commit({revertOnError:!0})}insertStructureProperties(_,g){return this.dataState.build().to(_).apply(r.StateTransforms.Model.CustomStructureProperties,g).commit({revertOnError:!0})}isComponentTransform(_){return _.transform.transformer===r.StateTransforms.Model.StructureComponent}async tryCreateComponent(_,g,a,d){var p,u;const m=this.dataState,v=m.build().to(_),b=`structure-component-${a}`,P=v.applyOrUpdateTagged(b,r.StateTransforms.Model.StructureComponent,g,{tags:d?[...d,b]:[b]});await P.commit();const C=P.selector;
7083if(!C.isOk||((u=(p=C.cell)===null||p===void 0?void 0:p.obj)===null||u===void 0?void 0:u.data.elementCount)===0){await m.build().delete(C.ref).commit();return}return C}tryCreateComponentFromExpression(_,g,a,d){return this.tryCreateComponent(_,{type:{name:"expression",params:g},nullIfEmpty:!0,label:(d?.label||"").trim()},a,d?.tags)}tryCreateComponentStatic(_,g,a){return this.tryCreateComponent(_,{type:{name:"static",params:g},nullIfEmpty:!0,label:(a?.label||"").trim()},`static-${g}`,a?.tags)}tryCreateComponentFromSelection(_,g,a,d){return this.plugin.runTask(i.Task.create("Query Component",async p=>{var u,m;let{label:v,tags:b}=d||{};v=(v||"").trim();const P=(m=(u=e.StateObjectRef.resolveAndCheck(this.dataState,_))===null||u===void 0?void 0:u.obj)===null||m===void 0?void 0:m.data;if(!P)return;const C=g.referencesCurrent?{type:{name:"bundle",params:c.StructureElement.Bundle.fromSelection(await g.getSelection(this.plugin,p,P))},nullIfEmpty:!0,label:v||g.label}:{type:{name:"expression",params:g.expression},nullIfEmpty:!0,label:v||g.label};return g.ensureCustomProperties&&await g.ensureCustomProperties({runtime:p,assetManager:this.plugin.managers.asset,errorContext:this.plugin.errorContext},P),this.tryCreateComponent(_,C,a,b)}))}constructor(_){this.plugin=_,this.hierarchy=new h.TrajectoryHierarchyBuilder(this.plugin),this.representation=new n.StructureRepresentationBuilder(this.plugin)}}return Wb.StructureBuilder=f,Wb}var Kb={},aM={},Yb={},Y9;function tC(){if(Y9)return Yb;Y9=1,Object.defineProperty(Yb,"__esModule",{value:!0}),Yb.DataFormatProvider=t,Yb.guessCifVariant=r;const e=sX();function t(o){return o}function r(o,s){if(o.ext==="bcif")try{const h=(0,e.decodeMsgPack)(s);if(h.encoder.startsWith("VolumeServer"))return"dscif";if(h.encoder.startsWith("volseg-volume-server"))return"segcif";if(i(h,"_volume_data_3d_info")){if(i(h,"_volume_data_3d"))return"dscif";if(i(h,"_segmentation_data_3d"))return"segcif"}if(i(h,"_refln")&&(c(h,"_refln","pdbx_FWT")||c(h,"_refln","pdbx_DELFWT")))return"sfcif"}catch(h){console.error(h)}else if(o.ext==="cif"){const h=s;if(h.startsWith(`data_SERVER
7084#
7085_density_server_result`))return"dscif";if(h.startsWith(`data_SERVER
7086#
7087data_SEGMENTATION_DATA`))return"segcif";if(n(h,"volume_data_3d_info")){if(n(h,"volume_data_3d"))return"dscif";if(n(h,"segmentation_data_3d"))return"segcif"}if(h.includes("_refln.pdbx_FWT")||h.includes("_refln.pdbx_DELFWT"))return"sfcif";if(h.includes("atom_site_fract_x")||h.includes("atom_site.fract_x"))return"coreCif"}return-1}function n(o,s){return o.includes(`_${s}.`)}function i(o,s){for(const h of o.dataBlocks)for(const f of h.categories)if(f.name===s)return!0;return!1}function c(o,s,h){for(const f of o.dataBlocks)for(const y of f.categories)if(y.name===s){for(const _ of y.columns)if(_.name===h)return!0}return!1}return Yb}var Q9;function lZ(){return Q9||(Q9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BuiltInTrajectoryFormats=e.Mol2Provider=e.SdfProvider=e.MolProvider=e.GroProvider=e.LammpsTrajectoryDataProvider=e.LammpsDataProvider=e.XyzProvider=e.PqrProvider=e.PdbqtProvider=e.PdbProvider=e.CifCoreProvider=e.MmcifProvider=e.TrajectoryFormatCategory=void 0;const t=Dr(),r=tC();e.TrajectoryFormatCategory="Trajectory";function n(c,o){return c.builders.structure.hierarchy.applyPreset(o.trajectory,"default")}e.MmcifProvider={label:"mmCIF",description:"mmCIF",category:e.TrajectoryFormatCategory,stringExtensions:["cif","mmcif","mcif"],binaryExtensions:["bcif"],isApplicable:(c,o)=>c.ext==="mmcif"||c.ext==="mcif"?!0:c.ext==="cif"||c.ext==="bcif"?(0,r.guessCifVariant)(c,o)===-1:!1,parse:async(c,o,s)=>{var h,f;const _=c.state.data.build().to(o).apply(t.StateTransforms.Data.ParseCif,void 0,{state:{isGhost:!0}}),g=await _.apply(t.StateTransforms.Model.TrajectoryFromMmCif,void 0,{tags:s?.trajectoryTags}).commit({revertOnError:!0});return(((f=(h=_.selector.cell)===null||h===void 0?void 0:h.obj)===null||f===void 0?void 0:f.data.blocks.length)||0)>1&&c.state.data.updateCellState(_.ref,{isGhost:!1}),{trajectory:g}},visuals:n},e.CifCoreProvider={label:"cifCore",description:"CIF Core",category:e.TrajectoryFormatCategory,stringE
7087xtensions:["cif"],isApplicable:(c,o)=>c.ext==="cif"?(0,r.guessCifVariant)(c,o)==="coreCif":!1,parse:async(c,o,s)=>{var h,f;const _=c.state.data.build().to(o).apply(t.StateTransforms.Data.ParseCif,void 0,{state:{isGhost:!0}}),g=await _.apply(t.StateTransforms.Model.TrajectoryFromCifCore,void 0,{tags:s?.trajectoryTags}).commit({revertOnError:!0});return(((f=(h=_.selector.cell)===null||h===void 0?void 0:h.obj)===null||f===void 0?void 0:f.data.blocks.length)||0)>1&&c.state.data.updateCellState(_.ref,{isGhost:!1}),{trajectory:g}},visuals:n};function i(c,o){return async(s,h,f)=>({trajectory:await s.state.data.build().to(h).apply(c,o,{tags:f?.trajectoryTags}).commit({revertOnError:!0})})}e.PdbProvider={label:"PDB",description:"PDB",category:e.TrajectoryFormatCategory,stringExtensions:["pdb","ent"],parse:i(t.StateTransforms.Model.TrajectoryFromPDB),visuals:n},e.PdbqtProvider={label:"PDBQT",description:"PDBQT",category:e.TrajectoryFormatCategory,stringExtensions:["pdbqt"],parse:i(t.StateTransforms.Model.TrajectoryFromPDB,{variant:"pdbqt"}),visuals:n},e.PqrProvider={label:"PQR",description:"PQR",category:e.TrajectoryFormatCategory,stringExtensions:["pqr"],parse:i(t.StateTransforms.Model.TrajectoryFromPDB,{variant:"pqr"}),visuals:n},e.XyzProvider={label:"XYZ",description:"XYZ",category:e.TrajectoryFormatCategory,stringExtensions:["xyz"],parse:i(t.StateTransforms.Model.TrajectoryFromXYZ),visuals:n},e.LammpsDataProvider={label:"Lammps Data",description:"Lammps Data",category:e.TrajectoryFormatCategory,stringExtensions:["data"],parse:i(t.StateTransforms.Model.TrajectoryFromLammpsData),visuals:n},e.LammpsTrajectoryDataProvider={label:"Lammps Trajectory Data",description:"Lammps Trajectory Data",category:e.TrajectoryFormatCategory,stringExtensions:["lammpstrj"],parse:i(t.StateTransforms.Model.TrajectoryFromLammpsTrajData),visuals:n},e.GroProvider={label:"GRO",description:"GRO",category:e.TrajectoryFormatCategory,stringExtensions:["gro"],binaryExtensions:[],parse:i(t.StateTransforms.Model.TrajectoryFromGRO),visuals:n},e.MolProvider={label:"MOL",description:"MOL",category:e.TrajectoryFormatCategory,stringExtensions:["mol"],parse:i(t.StateTransforms.Model.TrajectoryFromMOL),visuals:n},e.SdfProvider={label:"SDF",description:"SDF",category:e.TrajectoryFormatCategory,stringExtensions:["sdf","sd"],parse:i(t.StateTransforms.Model.TrajectoryFromSDF),visuals:n},e.Mol2Provider={label:"MOL2",description:"MOL2",category:e.TrajectoryFormatCategory,stringExtensions:["mol2"],parse:i(t.StateTransforms.Model.TrajectoryFromMOL2),visuals:n},e.BuiltInTrajectoryFormats=[["mmcif",e.MmcifProvider],["cifCore",e.CifCoreProvider],["pdb",e.PdbProvider],["pdbqt",e.PdbqtProvider],["pqr",e.PqrProvider],["gro",e.GroProvider],["xyz",e.XyzProvider],["lammps_data",e.LammpsDataProvider],["lammps_traj_data",e.LammpsTrajectoryDataProvider],["mol",e.MolProvider],["sdf",e.SdfProvider],["mol2",e.Mol2Provider]]})(aM)),aM}var oM={},cl={},Z9;function dZ(){if(Z9)return cl;Z9=1,Object.defineProperty(cl,"__esModule",{value:!0}),cl.createVolumeRepresentationParams=r,cl.getVolumeThemeTypes=n,cl.createVolumeColorThemeParams=i,cl.createVolumeSizeThemeParams=c;const e=sn(),t=Ne();function r(h,f,y={}){const _=y;return typeof _.type=="string"||typeof _.color=="string"||typeof _.size=="string"?o(h,f||e.Volume.One,y):s(h,f||e.Volume.One,y)}function n(h,f){const{themes:y}=h.representation.volume;return f?y.colorThemeRegistry.getApplicableTypes({volume:f}):y.colorThemeRegistry.types}function i(h,f,y,_,g){const{registry:a,themes:d}=h.representation.volume,p=a.get(y||a.default.name),u=d.colorThemeRegistry.get(_||p.defaultColorTheme.name),m=t.ParamDefinition.getDefaultValues(u.getParams({volume:f||e.Volume.One}));return u.name===p.defaultColorTheme.name&&Object.assign(m,p.defaultColorTheme.props),{name:u.name,params:Object.assign(m,g)}}function c(h,f,y,_,g){const{registry:a,themes:d}=h.representation.volume,p=a.get(y||a.default.name),u=d.sizeThemeRegistry.get(_||p.defaultSizeTheme.name),m=t.ParamDefinition.getDefaultValues(u.getParams({volume:f||e.Volume.One}));return u.name===p.defaultSizeTheme.name&&Object.assign(m,p.defaultSizeTheme.props),{name:u.name,params:Object.assign(m,g)}}function o(h,f,y){const _=y.type&&h.representation.volume.registry.get(y.type)||h.representation.volume.registry.default.provider,g=y.color&&h.representation.volume.themes.colorThemeRegistry.get(y.color)||h.representation.volume.themes.colorThemeRegistry.get(_.defaultColorTheme.name),a=y.size&&h.representation.volume.themes.sizeThemeRegistry.get(y.size)||h.representation.volume.themes.sizeThemeRegistry.get(_.defaultSizeTheme.name);
7087return s(h,f,{type:_,typeParams:y.typeParams,color:g,colorParams:y.colorParams,size:a,sizeParams:y.sizeParams})}function s(h,f,y={}){const{themes:_}=h.representation.volume,g={volume:f},a=y.type||h.representation.volume.registry.default.provider,d=t.ParamDefinition.getDefaultValues(a.getParams(_,f)),p=Object.assign(d,y.typeParams),u=y.color||_.colorThemeRegistry.get(a.defaultColorTheme.name),m=t.ParamDefinition.getDefaultValues(u.getParams(g));u.name===a.defaultColorTheme.name&&Object.assign(m,a.defaultColorTheme.props);const v=Object.assign(m,y.colorParams),b=y.size||_.sizeThemeRegistry.get(a.defaultSizeTheme.name),P=t.ParamDefinition.getDefaultValues(b.getParams(g));b.name===a.defaultSizeTheme.name&&Object.assign(P,a.defaultSizeTheme.props);const C=Object.assign(P,y.sizeParams);return{type:{name:a.name,params:p},colorTheme:{name:u.name,params:v},sizeTheme:{name:b.name,params:C}}}return cl}var ul={},J9;function hce(){if(J9)return ul;J9=1,Object.defineProperty(ul,"__esModule",{value:!0}),ul.RecommendedIsoValue=ul.PropertyProvider=void 0;var e;(function(r){function n(i){const{name:c}=i;return{descriptor:i,get(o){return o._propertyData[c]},set(o,s){o.customProperties.add(i),o._propertyData[c]=s}}}r.create=n})(e||(ul.PropertyProvider=e={}));var t;return(function(r){r.Descriptor={name:"recommended_iso_value"},r.Provider=e.create(r.Descriptor)})(t||(ul.RecommendedIsoValue=t={})),ul}var da={},e7;function fZ(){if(e7)return da;e7=1,Object.defineProperty(da,"__esModule",{value:!0}),da.getStreamingMethod=n,da.getEmIds=i,da.getXrayIds=c,da.getIds=o,da.getContourLevel=s,da.getContourLevelEmdb=h,da.getContourLevelPdbe=f,da.getEmdbIds=_;const e=Ke(),t=Mi(),r=gs();function n(g,a="x-ray"){if(!g)return a;const d=g.models[0];return t.MmcifFormat.is(d.sourceData)?e.Model.hasEmMap(d)?"em":e.Model.hasXrayMap(d)?"x-ray":e.Model.isFromEm(d)?"em":e.Model.isFromXray(d)?"x-ray":a:a}function i(g){const a=[];if(!t.MmcifFormat.is(g.sourceData))return[g.entryId];const{db_id:d,db_name:p,content_type:u}=g.sourceData.data.db.pdbx_database_related;if(!p.isDefined)return[g.entryId];for(let m=0,v=p.rowCount;m<v;++m)p.value(m).toUpperCase()==="EMDB"&&u.value(m)==="associated EM volume"&&a.push(d.value(m));return a}function c(g){return[g.entryId]}function o(g,a){if(!a||!a.models.length)return[];const d=a.models[0];switch(g){case"em":return i(d);case"x-ray":return c(d)}}async function s(g,a,d,p){switch(g){case"emdb":return h(a,d,p);case"pdbe":return f(a,d,p)}}async function h(g,a,d){const p=g.config.get(r.PluginConfig.VolumeStreaming.EmdbHeaderServer),v=(await g.fetch({url:`${p}/${d.toUpperCase()}/header/${d.toLowerCase()}.xml`,type:"xml"}).runInContext(a)).getElementsByTagName("map")[0].getElementsByTagName("contour");let b=v[0];for(let C=1;C<v.length;C++)if(v[C].getAttribute("primary")==="true"){b=v[C];break}return parseFloat(b.getElementsByTagName("level")[0].textContent)}async function f(g,a,d){var p,u,m,v;d=d.toUpperCase();const b=await g.fetch({url:`https://www.ebi.ac.uk/emdb/api/entry/map/${d}`,type:"json"}).runInContext(a),P=(u=(p=b?.map)===null||p===void 0?void 0:p.contour_list)===null||u===void 0?void 0:u.contour;return!P||P.length===0?y(g,a,d):(v=(m=P.find(C=>C.primary))===null||m===void 0?void 0:m.level)!==null&&v!==void 0?v:P[0].level}async function y(g,a,d){var p,u,m;d=d.toUpperCase();const v=await g.fetch({url:`https://www.ebi.ac.uk/pdbe/api/emdb/entry/map/${d}`,type:"json"}).runInContext(a),b=v?.[d];let P;return((m=(u=(p=b?.[0])===null||p===void 0?void 0:p.map)===null||u===void 0?void 0:u.contour_level)===null||m===void 0?void 0:m.value)!==void 0&&(P=+b[0].map.contour_level.value),P}async function _(g,a,d){var p;const u=await g.fetch({url:`https://www.ebi.ac.uk/pdbe/api/pdb/entry/summary/${d}`,type:"json"}).runInContext(a),m=u?.[d],v=[];if(!((p=m?.[0])===null||p===void 0)&&p.related_structures){const b=m[0].related_structures.filter(P=>P.resource==="EMDB"&&P.relationship==="associated EM volume");if(!b.length)throw new Error(`No related EMDB entry found for '${d}'.`);v.push(...b.map(P=>P.accession))}else throw new Error(`No related EMDB entry found for '${d}'.`);return v}return da}var t7;function gce(){return t7||(t7=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.BuiltInVolumeFormats=e.MtzProvider=e.SfcifProvider=e.SegcifProvider=e.DscifProvider=e.CubeProvider=e.DxProvider=e.Dsn6Provider=e.Ccp4Provider=e.VolumeFormatCategory=void 0;const t=Dr(),r=tC(),n=$S(),i=Vr(),c=sn(),o=dZ(),s=vr(),h=hce(),f=fZ(),y=nt(),_=wn(),g=UQ();e.VolumeFormatCategory="Volume";async function a(u,m){if(!m)return;const{entryId:v}=m;if(!(!v||!v.toLowerCase().startsWith("emd")))return u.runTask(y.Task.create("Try Set Recommended IsoValue",async b=>{try{const P=await(0,f.getContourLevelEmdb)(u,b,v);h.RecommendedIsoValue.Provider.set(m,c.Volume.IsoValue.absolute(P))}catch(P){console.warn(P)}}))}function d(u){const m=h.RecommendedIsoValue.Provider.get(u);if(m)return m.kind==="relative"?m:c.Volume.adjustedIsoValue(u,m.absoluteValue,"absolute")}async function p(u,m){const v={},b=m.volume.data&&d(m.volume.data);return b&&(v.isoValue=b),[await u.build().to(m.volume).apply(t.StateTransforms.Representation.VolumeRepresentation3D,(0,o.createVolumeRepresentationParams)(u,m.volume.data,{type:"isosurface",typeParams:v})).commit()]}e.Ccp4Provider=(0,r.DataFormatProvider)({label:"CCP4/MRC/MAP",description:"CCP4/MRC/MAP",category:e.VolumeFormatCategory,binaryExtensions:["ccp4","mrc","map"],parse:async(u,m,v)=>{const b=u.build().to(m).apply(t.StateTransforms.Data.ParseCcp4,{},{state:{isGhost:!0}}),P=b.apply(t.StateTransforms.Volume.VolumeFromCcp4,{entryId:v?.entryId}).apply(t.StateTransforms.Volume.CustomVolumeProperties);return await b.commit({revertOnError:!0}),await a(u,P.selector.data),{format:b.selector,volume:P.selector}},visuals:p}),e.Dsn6Provider=(0,r.DataFormatProvider)({label:"DSN6/BRIX",description:"DSN6/BRIX",category:e.VolumeFormatCategory,binaryExtensions:["dsn6","brix"],parse:async(u,m,v)=>{const b=u.build().to(m).apply(t.StateTransforms.Data.ParseDsn6,{},{state:{isGhost:!0}}),P=b.apply(t.StateTransforms.Volume.VolumeFromDsn6,{entryId:v?.entryId}).apply(t.StateTransforms.Volume.CustomVolumeProperties);return await b.commit({revertOnError:!0}),await a(u,P.selector.data),{format:b.selector,volume:P.selector}},visuals:p}),e.DxProvider=(0,r.DataFormatProvider)({label:"DX",description:"DX",category:e.VolumeFormatCategory,stringExtensions:["dx"],binaryExtensions:["dxbin"],parse:async(u,m,v)=>{const P=u.build().to(m).apply(t.StateTransforms.Data.ParseDx,{},{state:{isGhost:!0}}).apply(t.StateTransforms.Volume.VolumeFromDx,{entryId:v?.entryId}).apply(t.StateTransforms.Volume.CustomVolumeProperties);return await P.commit({revertOnError:!0}),await a(u,P.selector.data),{volume:P.selector}},visuals:p}),e.CubeProvider=(0,r.DataFormatProvider)({label:"Cube",description:"Cube",category:e.VolumeFormatCategory,stringExtensions:["cub","cube"],parse:async(u,m,v)=>{const b=u.build().to(m).apply(t.StateTransforms.Data.ParseCube,{},{state:{isGhost:!0}}),P=b.apply(t.StateTransforms.Volume.VolumeFromCube,{entryId:v?.entryId}).apply(t.StateTransforms.Volume.CustomVolumeProperties),C=b.apply(t.StateTransforms.Model.TrajectoryFromCube,void 0,{state:{isGhost:!0}}).apply(t.StateTransforms.Model.ModelFromTrajectory).apply(t.StateTransforms.Model.CustomModelProperties).apply(t.StateTransforms.Model.StructureFromModel).apply(t.StateTransforms.Model.CustomStructureProperties);return await b.commit({revertOnError:!0}),await a(u,P.selector.data),{format:b.selector,volume:P.selector,structure:C.selector}},visuals:async(u,m)=>{var v,b;const P=u.build(),C=[],l=(b=(v=m.volume.cell)===null||v===void 0?void 0:v.obj)===null||b===void 0?void 0:b.data;if(l&&c.Volume.isOrbitals(l)){const A=P.to(m.volume).apply(t.StateTransforms.Representation.VolumeRepresentation3D,(0,o.createVolumeRepresentationParams)(u,l,{type:"isosurface",typeParams:{isoValue:c.Volume.IsoValue.relative(1),alpha:.4},color:"uniform",colorParams:{value:i.ColorNames.blue}})),x=P.to(m.volume).apply(t.StateTransforms.Representation.VolumeRepresentation3D,(0,o.createVolumeRepresentationParams)(u,l,{type:"isosurface",typeParams:{isoValue:c.Volume.IsoValue.relative(-1),alpha:.4},color:"uniform",colorParams:{value:i.ColorNames.red}}));C.push(A.selector,x.selector)}else{const A=P.to(m.volume).apply(t.StateTransforms.Representation.VolumeRepresentation3D,(0,o.createV
7087olumeRepresentationParams)(u,l,{type:"isosurface",typeParams:{isoValue:c.Volume.IsoValue.relative(2),alpha:.4},color:"uniform",colorParams:{value:i.ColorNames.grey}}));C.push(A.selector)}const S=await u.builders.structure.representation.applyPreset(m.structure,"auto");await P.commit();const T=[];return(0,s.objectForEach)(S?.representations,A=>{A&&T.push(A)}),[...C,...T]}}),e.DscifProvider=(0,r.DataFormatProvider)({label:"DensityServer CIF",description:"DensityServer CIF",category:e.VolumeFormatCategory,stringExtensions:["cif"],binaryExtensions:["bcif"],isApplicable:(u,m)=>(0,r.guessCifVariant)(u,m)==="dscif",parse:async(u,m,v)=>{var b;const P=await u.build().to(m).apply(t.StateTransforms.Data.ParseCif).commit(),C=u.build().to(P),l=P.obj.data.blocks;if(l.length===0)throw new Error("no data blocks");const S=[];let T=0;for(const A of l){if(A.header.toUpperCase()==="SERVER")continue;const x=Array.isArray(v?.entryId)?v?.entryId[T]:v?.entryId;if(((b=A.categories.volume_data_3d_info)===null||b===void 0?void 0:b.rowCount)>0){const M=C.apply(t.StateTransforms.Volume.VolumeFromDensityServerCif,{blockHeader:A.header,entryId:x}).apply(t.StateTransforms.Volume.CustomVolumeProperties);S.push(M.selector),T++}}await C.commit();for(const A of S)await a(u,A.data);return{volumes:S}},visuals:async(u,m)=>{const{volumes:v}=m,b=u.build(),P=[];if(v.length>0){const C=v[0].data&&d(v[0].data)||c.Volume.IsoValue.relative(1.5);P[0]=b.to(v[0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:C,alpha:1},"uniform",{value:i.ColorNames.teal})).selector}if(v.length>1){const C=n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:c.Volume.IsoValue.relative(3),alpha:.3},"uniform",{value:i.ColorNames.green}),l=n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:c.Volume.IsoValue.relative(-3),alpha:.3},"uniform",{value:i.ColorNames.red});P[P.length]=b.to(v[1]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,C).selector,P[P.length]=b.to(v[1]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,l).selector}return await b.commit(),P}}),e.SegcifProvider=(0,r.DataFormatProvider)({label:"Segmentation CIF",description:"Segmentation CIF",category:e.VolumeFormatCategory,stringExtensions:["cif"],binaryExtensions:["bcif"],isApplicable:(u,m)=>(0,r.guessCifVariant)(u,m)==="segcif",parse:async(u,m)=>{var v;const b=await u.build().to(m).apply(t.StateTransforms.Data.ParseCif).commit(),P=u.build().to(b),C=b.obj.data.blocks;if(C.length===0)throw new Error("no data blocks");const l=[];for(const S of C)if(S.header.toUpperCase()!=="SERVER"&&((v=S.categories.volume_data_3d_info)===null||v===void 0?void 0:v.rowCount)>0){const T=P.apply(t.StateTransforms.Volume.VolumeFromSegmentationCif,{blockHeader:S.header}).apply(t.StateTransforms.Volume.CustomVolumeProperties);l.push(T.selector)}return await P.commit(),{volumes:l}},visuals:async(u,m)=>{const{volumes:v}=m,b=u.build(),P=[];return v.length>0&&c.Volume.Segmentation.get(v[0].data)&&(P[P.length]=b.to(v[0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,n.VolumeRepresentation3DHelpers.getDefaultParams(u,"segment",v[0].data,{alpha:1,instanceGranularity:!0},"volume-segment",{})).selector),await b.commit(),P}}),e.SfcifProvider=(0,r.DataFormatProvider)({label:"Structure Factors CIF",description:"mmCIF structure factor file with reflection data (pdbx_FWT/pdbx_PHWT map coefficients)",category:e.VolumeFormatCategory,stringExtensions:["cif"],binaryExtensions:["bcif"],isApplicable:(u,m)=>(0,r.guessCifVariant)(u,m)==="sfcif",parse:async(u,m,v)=>{var b,P,C,l,S,T,A,x;const M=await u.build().to(m).apply(t.StateTransforms.Data.ParseCif).commit(),D=u.build().to(M),V=M.obj.data.blocks;if(V.length===0)throw new Error("no data blocks");const R={"2fofc":[],fofc:[]};for(const E of V){const I=E.categories.refln;if(!(I?.rowCount>0))continue;const B=((P=(b=I.getField("pdbx_FWT"))===null||b===void 0?void 0:b.rowCount)!==null&&P!==void 0?P:0)>0&&((l=(C=I.getField("pdbx_PHWT"))===null||C===void 0?void 0:C.rowCount)!==null&&l!==void 0?l:0)>0,w=((T=(S=I.getField("pdbx_DELFWT"))===null||S===void 0?void 0:S.rowCount)!==null&&T!==void 0?T:0)>0&&((x=(A=I.getField("pdbx_DELPHWT"))===null||A===void 0?void 0:A.rowCount)!==null&&x!==void 0?x:0)>0;
7087if(!(!B&&!w)){if(B){const O=D.apply(t.StateTransforms.Volume.VolumeFromStructureFactorsCif,{blockHeader:E.header,entryId:v?.entryId,mapType:"2fo-fc"}).apply(t.StateTransforms.Volume.CustomVolumeProperties);R["2fofc"].push(O.selector)}if(w){const O=D.apply(t.StateTransforms.Volume.VolumeFromStructureFactorsCif,{blockHeader:E.header,entryId:v?.entryId,mapType:"fo-fc"}).apply(t.StateTransforms.Volume.CustomVolumeProperties);R.fofc.push(O.selector)}}}return await D.commit(),{volumes:R}},visuals:async(u,m)=>{const{volumes:v}=m,b=u.build(),P=[];if(v["2fofc"].length>0){const C=c.Volume.IsoValue.relative(2);P.push(b.to(v["2fofc"][0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:C,alpha:1},"uniform",{value:(0,_.Color)(3367602)})).selector)}if(v.fofc.length>0){const C=n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:c.Volume.IsoValue.relative(3),alpha:.3},"uniform",{value:(0,_.Color)(3390259)}),l=n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:c.Volume.IsoValue.relative(-3),alpha:.3},"uniform",{value:(0,_.Color)(12268339)});P.push(b.to(v.fofc[0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,C).selector),P.push(b.to(v.fofc[0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,l).selector)}return await b.commit(),P}}),e.MtzProvider=(0,r.DataFormatProvider)({label:"MTZ",description:"CCP4 MTZ reflection data file with amplitude and phase columns",category:e.VolumeFormatCategory,binaryExtensions:["mtz"],isApplicable:(u,m)=>!(m instanceof Uint8Array)||m.length<4?!1:m[0]===77&&m[1]===84&&m[2]===90,parse:async(u,m,v)=>{const b=await u.build().to(m).apply(t.StateTransforms.Data.ParseMtz).commit(),P=u.build().to(b),C=b.obj.data,l=(0,g.detectMtzColumnPairs)(C.header);if(l.length===0)throw new Error("MTZ file does not contain any recognised amplitude+phase column pairs (FWT/PHWT, DELFWT/DELPHWT, 2FOFCWT/PH2FOFCWT, FOFCWT/PHFOFCWT).");const S={"2fofc":[],fofc:[]};for(const T of l){const A=P.apply(t.StateTransforms.Volume.VolumeFromMtz,{ampLabel:T.ampLabel,phiLabel:T.phiLabel,entryId:v?.entryId}).apply(t.StateTransforms.Volume.CustomVolumeProperties);T.label==="2fo-fc"?S["2fofc"].push(A.selector):S.fofc.push(A.selector)}return await P.commit(),{volumes:S}},visuals:async(u,m)=>{const{volumes:v}=m,b=u.build(),P=[];if(v["2fofc"].length>0){const C=c.Volume.IsoValue.relative(2);P.push(b.to(v["2fofc"][0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:C,alpha:1},"uniform",{value:(0,_.Color)(3367602)})).selector)}if(v.fofc.length>0){const C=n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:c.Volume.IsoValue.relative(3),alpha:.3},"uniform",{value:(0,_.Color)(3390259)}),l=n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:c.Volume.IsoValue.relative(-3),alpha:.3},"uniform",{value:(0,_.Color)(12268339)});P.push(b.to(v.fofc[0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,C).selector),P.push(b.to(v.fofc[0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,l).selector)}return await b.commit(),P}}),e.BuiltInVolumeFormats=[["ccp4",e.Ccp4Provider],["dsn6",e.Dsn6Provider],["cube",e.CubeProvider],["dx",e.DxProvider],["dscif",e.DscifProvider],["segcif",e.SegcifProvider],["sfcif",e.SfcifProvider],["mtz",e.MtzProvider]]})(oM)),oM}var sM={},r7;function yce(){return r7||(r7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BuiltInShapeFormats=e.VtpProvider=e.ObjProvider=e.PlyProvider=e.ShapeFormatCategory=void 0;const t=Dr(),r=tC();e.ShapeFormatCategory="Shape",e.PlyProvider=(0,r.DataFormatProvider)({label:"PLY",description:"PLY",category:e.ShapeFormatCategory,stringExtensions:["ply"],binaryExtensions:["ply"],parse:async(n,i)=>{const c=n.state.data.build().to(i).apply(t.StateTransforms.Data.ParsePly,{},{state:{isGhost:!0}}),o=c.apply(t.StateTransforms.Shape.ShapeFromPly);return await c.commit(),{format:c.selector,shape:o.selector}},visuals(n,i){return n.state.data.build().to(i.shape).apply(t.StateTransforms.Representation.ShapeRepresentation3D).commit()}}),e.ObjProvider=(0,r.DataFormatProvider)({label:"OBJ",description:"OBJ",category:e.ShapeFormatCategory,stringE
7087xtensions:["obj"],parse:async(n,i)=>{const c=n.state.data.build().to(i).apply(t.StateTransforms.Data.ParseObj,{},{state:{isGhost:!0}}),o=c.apply(t.StateTransforms.Shape.ShapeFromObj);return await c.commit(),{format:c.selector,shape:o.selector}},visuals(n,i){return n.state.data.build().to(i.shape).apply(t.StateTransforms.Representation.ShapeRepresentation3D).commit()}}),e.VtpProvider=(0,r.DataFormatProvider)({label:"VTP",description:"VTK PolyData (VTP)",category:e.ShapeFormatCategory,binaryExtensions:["vtp"],parse:async(n,i)=>{const c=n.state.data.build().to(i).apply(t.StateTransforms.Data.ParseVtp,{},{state:{isGhost:!0}}),o=c.apply(t.StateTransforms.Shape.ShapeFromVtp);return await c.commit(),{format:c.selector,shape:o.selector}},visuals(n,i){return n.state.data.build().to(i.shape).apply(t.StateTransforms.Representation.ShapeRepresentation3D).commit()}}),e.BuiltInShapeFormats=[["ply",e.PlyProvider],["obj",e.ObjProvider],["vtp",e.VtpProvider]]})(sM)),sM}var cM={},n7;function mZ(){return n7||(n7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BuiltInTopologyFormats=e.TopProvider=e.PrmtopProvider=e.PsfProvider=e.TopologyFormatCategory=void 0;const t=Dr(),r=tC();e.TopologyFormatCategory="Topology";const n=(0,r.DataFormatProvider)({label:"PSF",description:"PSF",category:e.TopologyFormatCategory,stringExtensions:["psf"],parse:async(o,s)=>{const h=o.state.data.build().to(s).apply(t.StateTransforms.Data.ParsePsf,{},{state:{isGhost:!0}}),f=h.apply(t.StateTransforms.Model.TopologyFromPsf);return await h.commit(),{format:h.selector,topology:f.selector}}});e.PsfProvider=n;const i=(0,r.DataFormatProvider)({label:"PRMTOP",description:"PRMTOP",category:e.TopologyFormatCategory,stringExtensions:["prmtop","parm7"],parse:async(o,s)=>{const h=o.state.data.build().to(s).apply(t.StateTransforms.Data.ParsePrmtop,{},{state:{isGhost:!0}}),f=h.apply(t.StateTransforms.Model.TopologyFromPrmtop);return await h.commit(),{format:h.selector,topology:f.selector}}});e.PrmtopProvider=i;const c=(0,r.DataFormatProvider)({label:"TOP",description:"TOP",category:e.TopologyFormatCategory,stringExtensions:["top"],parse:async(o,s)=>{const h=o.state.data.build().to(s).apply(t.StateTransforms.Data.ParseTop,{},{state:{isGhost:!0}}),f=h.apply(t.StateTransforms.Model.TopologyFromTop);return await h.commit(),{format:h.selector,topology:f.selector}}});e.TopProvider=c,e.BuiltInTopologyFormats=[["psf",n],["prmtop",i],["top",c]]})(cM)),cM}var uM={},i7;function pZ(){return i7||(i7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BuiltInCoordinatesFormats=e.LammpsTrajectoryProvider=e.NctrajProvider=e.TrrProvider=e.XtcProvider=e.DcdProvider=e.CoordinatesFormatCategory=void 0;const t=Dr(),r=tC();e.CoordinatesFormatCategory="Coordinates";const n=(0,r.DataFormatProvider)({label:"DCD",description:"DCD",category:e.CoordinatesFormatCategory,binaryExtensions:["dcd"],parse:(h,f)=>h.state.data.build().to(f).apply(t.StateTransforms.Model.CoordinatesFromDcd).commit()});e.DcdProvider=n;const i=(0,r.DataFormatProvider)({label:"XTC",description:"XTC",category:e.CoordinatesFormatCategory,binaryExtensions:["xtc"],parse:(h,f)=>h.state.data.build().to(f).apply(t.StateTransforms.Model.CoordinatesFromXtc).commit()});e.XtcProvider=i;const c=(0,r.DataFormatProvider)({label:"TRR",description:"TRR",category:e.CoordinatesFormatCategory,binaryExtensions:["trr"],parse:(h,f)=>h.state.data.build().to(f).apply(t.StateTransforms.Model.CoordinatesFromTrr).commit()});e.TrrProvider=c;const o=(0,r.DataFormatProvider)({label:"NCTRAJ",description:"NCTRAJ",category:e.CoordinatesFormatCategory,binaryExtensions:["nc","nctraj"],parse:(h,f)=>h.state.data.build().to(f).apply(t.StateTransforms.Model.CoordinatesFromNctraj).commit()});e.NctrajProvider=o;const s=(0,r.DataFormatProvider)({label:"LAMMPSTRAJ",description:"LAMMPSTRAJ",category:e.CoordinatesFormatCategory,stringExtensions:["lammpstrj"],parse:(h,f)=>h.state.data.build().to(f).apply(t.StateTransforms.Model.CoordinatesFromLammpstraj).commit()});e.LammpsTrajectoryProvider=s,e.BuiltInCoordinatesFormats=[["dcd",n],["xtc",i],["trr",c],["nctraj",o],["lammpstrj",s]]})(uM)),uM}var a7;function vce(){if(a7)return Kb;
7087a7=1,Object.defineProperty(Kb,"__esModule",{value:!0}),Kb.DataFormatRegistry=void 0;const e=lZ(),t=gce(),r=yce(),n=mZ(),i=pZ();class c{get types(){return this._list.map(s=>[s.name,s.provider.label])}get extensions(){if(this._extensions)return this._extensions;const s=new Set;return this._list.forEach(({provider:h})=>{var f,y;(f=h.stringExtensions)===null||f===void 0||f.forEach(_=>s.add(_)),(y=h.binaryExtensions)===null||y===void 0||y.forEach(_=>s.add(_))}),this._extensions=s,s}get binaryExtensions(){if(this._binaryExtensions)return this._binaryExtensions;const s=new Set;return this._list.forEach(({provider:h})=>{var f;return(f=h.binaryExtensions)===null||f===void 0?void 0:f.forEach(y=>s.add(y))}),this._binaryExtensions=s,s}get options(){if(this._options)return this._options;const s=[];return this._list.forEach(({name:h,provider:f})=>s.push([h,f.label,f.category||""])),this._options=s,s}constructor(){this._list=[],this._map=new Map,this._extensions=void 0,this._binaryExtensions=void 0,this._options=void 0;for(const[s,h]of t.BuiltInVolumeFormats)this.add(s,h);for(const[s,h]of n.BuiltInTopologyFormats)this.add(s,h);for(const[s,h]of i.BuiltInCoordinatesFormats)this.add(s,h);for(const[s,h]of r.BuiltInShapeFormats)this.add(s,h);for(const[s,h]of e.BuiltInTrajectoryFormats)this.add(s,h)}_clear(){this._extensions=void 0,this._binaryExtensions=void 0,this._options=void 0}add(s,h){this._clear(),this._list.push({name:s,provider:h}),this._map.set(s,h)}remove(s){this._clear(),this._list.splice(this._list.findIndex(h=>h.name===s),1),this._map.delete(s)}auto(s,h){var f,y;for(let _=0,g=this.list.length;_<g;++_){const a=this._list[_].provider;let d=!1;if((!((f=a.binaryExtensions)===null||f===void 0)&&f.includes(s.ext)||!((y=a.stringExtensions)===null||y===void 0)&&y.includes(s.ext))&&(d=!0),d&&(!a.isApplicable||a.isApplicable(s,h.data)))return a}}get(s){if(this._map.has(s))return this._map.get(s);throw new Error(`unknown data format name '${s}'`)}get list(){return this._list}}return Kb.DataFormatRegistry=c,Kb}var Qb={},o7;function bce(){if(o7)return Qb;o7=1,Object.defineProperty(Qb,"__esModule",{value:!0}),Qb.PluginAnimationManager=void 0;const e=Vi(),t=Ne(),r=Ct();class n extends e.StatefulPluginComponent{get isEmpty(){return this._animations.length===0}get current(){return this._current}get animations(){return this._animations}get isAnimatingStateTransition(){return!!this._current&&this._current.anim.name==="built-in.animate-state-snapshot-transition"}triggerUpdate(){this.events.updated.next(void 0)}triggerApply(){this.events.applied.next(void 0)}getParams(){return this._params||(this._params={current:t.ParamDefinition.Select(this._animations[0]&&this._animations[0].name,this._animations.map(c=>[c.name,c.display.name]),{label:"Animation"})}),this._params}updateParams(c){if(this.isEmpty)return;this.updateState({params:{...this.state.params,...c}});const o=this.map.get(this.state.params.current);if(!o){r.isDebugMode&&console.warn(`Animation '${this.state.params.current}' not found. State might be from a different plugin instance.`);return}const s=o.params(this.context);this._current={anim:o,params:s,paramValues:t.ParamDefinition.getDefaultValues(s),state:{},startedTime:-1,lastTime:0},this.triggerUpdate()}updateCurrentParams(c){this.isEmpty||(this._current.paramValues={...this._current.paramValues,...c},this.triggerUpdate())}register(c){if(this.map.has(c.name)){this.context.log.error(`Animation '${c.name}' is already registered.`);return}this._params=void 0,this.map.set(c.name,c),this._animations.push(c),this._animations.length===1?this.updateParams({current:c.name}):this.triggerUpdate()}async play(c,o){await this.stop(),this.map.has(c.name)||this.register(c),this.updateParams({current:c.name}),this.updateCurrentParams(o),await this.start()}async tick(c,o,s){this.currentTime=c,!this.isStopped&&(o||s?await this.applyFrame(s):this.applyAsync())}async start(){this.updateState({animationState:"playing"}),this.context.behaviors.state.isAnimating.value||this.context.behaviors.state.isAnimating.next(!0),this.triggerUpdate();const c=this._current.anim;let o=this._current.anim.initialState(this._current.paramValues,this.context);if(c.setup){const s=await c.setup(this._current.paramValues,o,this.context);s&&(o=s)}this._current.lastTime=0,this._current.startedTime=-1,this._current.state=o,this.isStopped=!1}async stop(){if(this.isStopped=!0,this.state.animationState!=="stopped"){const c=this._current.anim;c.teardown&&await c.teardown(this._current.paramValues,this._current.state,this.context),this.updateState({animationState:"stopped"}),this.triggerUpdate()}this.context.behaviors.state.isAnimating.value&&this.context.behaviors.state.isAnimating.next(!1)}stopStateTransitionAnimation(){if(this.isAnimatingStateTransition)return this.stop()}get isAnimating(){return this.state.animationState==="playing"}async applyAsync(){if(!this.isApplying){this.isApplying=!0;try{await this.applyFrame()}finally{this.isApplying=!1}}}async applyFrame(c){const o=this.currentTime;this._current.startedTime<0&&(this._current.startedTime=o);const s=await this._current.anim.apply(this._current.state,{lastApplied:this._current.lastTime,current:o-this._current.startedTime,animation:c},{params:this._current.paramValues,plugin:this.context});s.kind==="finished"?this.stop():s.kind==="next"&&(this._current.state=s.state,this._current.lastTime=o-this._current.startedTime),this.triggerApply()}getSnapshot(){return this.current?{state:this.state,current:{paramValues:this._current.paramValues,state:this._current.anim.stateSeri
7087alization?this._current.anim.stateSerialization.toJSON(this._current.state):this._current.state}}:{state:this.state}}setSnapshot(c){this.isEmpty||(this.updateState({animationState:c.state.animationState}),this.updateParams(c.state.params),c.current&&(this.current.paramValues=c.current.paramValues,this.current.state=this._current.anim.stateSerialization?this._current.anim.stateSerialization.fromJSON(c.current.state):c.current.state,this.triggerUpdate(),this.state.animationState==="playing"&&this.resume()))}async resume(){this._current.lastTime=0,this._current.startedTime=-1;const c=this._current.anim;this.context.behaviors.state.isAnimating.value||this.context.behaviors.state.isAnimating.next(!0),c.setup&&await c.setup(this._current.paramValues,this._current.state,this.context),this.isStopped=!1}constructor(c){super({params:{current:""},animationState:"stopped"}),this.context=c,this.map=new Map,this._animations=[],this.currentTime=0,this._params=void 0,this.events={updated:this.ev(),applied:this.ev()},this.isStopped=!0,this.isApplying=!1}}return Qb.PluginAnimationManager=n,Qb}var lM={},JP={},Zb={},s7;function _ce(){if(s7)return Zb;
7087s7=1,Object.defineProperty(Zb,"__esModule",{value:!0}),Zb.EVD=void 0;const e=ST();var t;(function(o){function s(f){return{size:f,matrix:e.Matrix.create(f,f),eigenValues:new Float64Array(f),D:new Float64Array(f),E:new Float64Array(f)}}o.createCache=s;function h(f){r(f.size,f.matrix.data,f.eigenValues,f.D,f.E)}o.compute=h})(t||(Zb.EVD=t={}));function r(o,s,h,f,y){for(let g=0;g<o;g++)y[g]=0;const _=o-1;for(let g=0;g<o;g++)f[g]=s[g*o+_];n(s,f,y,o),i(s,f,y,o);for(let g=0;g<o;g++)h[g]=f[g]}function n(o,s,h,f){for(let y=f-1;y>0;y--){let _=0,g=0;for(let a=0;a<y;a++)_=_+Math.abs(s[a]);if(_===0){h[y]=s[y-1];for(let a=0;a<y;a++)s[a]=o[a*f+y-1],o[a*f+y]=0,o[y*f+a]=0}else{for(let u=0;u<y;u++)s[u]/=_,g+=s[u]*s[u];let a=s[y-1],d=Math.sqrt(g);a>0&&(d=-d),h[y]=_*d,g=g-a*d,s[y-1]=a-d;for(let u=0;u<y;u++)h[u]=0;for(let u=0;u<y;u++){a=s[u],o[y*f+u]=a,d=h[u]+o[u*f+u]*a;for(let m=u+1;m<=y-1;m++)d+=o[u*f+m]*s[m],h[m]+=o[u*f+m]*a;h[u]=d}a=0;for(let u=0;u<y;u++)h[u]/=g,a+=h[u]*s[u];const p=a/(g+g);for(let u=0;u<y;u++)h[u]-=p*s[u];for(let u=0;u<y;u++){a=s[u],d=h[u];for(let m=u;m<=y-1;m++)o[u*f+m]-=a*h[m]+d*s[m];s[u]=o[u*f+y-1],o[u*f+y]=0}}s[y]=g}for(let y=0;y<f-1;y++){o[y*f+f-1]=o[y*f+y],o[y*f+y]=1;const _=s[y+1];if(_!==0){for(let g=0;g<=y;g++)s[g]=o[(y+1)*f+g]/_;for(let g=0;g<=y;g++){let a=0;for(let d=0;d<=y;d++)a+=o[(y+1)*f+d]*o[g*f+d];for(let d=0;d<=y;d++)o[g*f+d]-=a*s[d]}}for(let g=0;g<=y;g++)o[(y+1)*f+g]=0}for(let y=0;y<f;y++)s[y]=o[y*f+f-1],o[y*f+f-1]=0;o[f*f-1]=1,h[0]=0}function i(o,s,h,f){for(let d=1;d<f;d++)h[d-1]=h[d];h[f-1]=0;let _=0,g=0;const a=Math.pow(2,-53);for(let d=0;d<f;d++){g=Math.max(g,Math.abs(s[d])+Math.abs(h[d]));let p=d;for(;p<f&&!(Math.abs(h[p])<=a*g);)p++;if(p>d){let u=0;do{u=u+1;let m=s[d],v=(s[d+1]-m)/(2*h[d]),b=c(v,1);v<0&&(b=-b),s[d]=h[d]/(v+b),s[d+1]=h[d]*(v+b);const P=s[d+1];let C=m-s[d];for(let D=d+2;D<f;D++)s[D]-=C;_=_+C,v=s[p];let l=1,S=l,T=l;const A=h[d+1];let x=0,M=0;for(let D=p-1;D>=d;D--){T=S,S=l,M=x,m=l*h[D],C=l*v,b=c(v,h[D]),h[D+1]=x*b,x=h[D]/b,l=v/b,v=l*s[D]-x*m,s[D+1]=C+x*(l*m+x*s[D]);for(let V=0;V<f;V++)C=o[(D+1)*f+V],o[(D+1)*f+V]=x*o[D*f+V]+l*C,o[D*f+V]=l*o[D*f+V]-x*C}if(v=-x*M*T*A*h[d]/P,h[d]=x*v,s[d]=l*v,u>=1e3)throw new Error("SVD: Not converging.")}while(Math.abs(h[d])>a*g)}s[d]=s[d]+_,h[d]=0}for(let d=0;d<f-1;d++){let p=d,u=s[d];for(let m=d+1;m<f;m++)s[m]<u&&(p=m,u=s[m]);if(p!==d){s[p]=s[d],s[d]=u;for(let m=0;m<f;m++)u=o[d*f+m],o[d*f+m]=o[p*f+m],o[p*f+m]=u}}}function c(o,s){return Math.sqrt(o*o+s*s)}return Zb}var c7;function Sce(){if(c7)return JP;c7=1,Object.defineProperty(JP,"__esModule",{value:!0}),JP.leastObstructedDirection=i;const e=wt(),t=_ce(),r=ST();function n(c,o){if(Array.isArray(c))for(const s of c)o(s[0],s[1],s[2]);else{const{x:s,y:h,z:f}=c,y=Math.min(s.length,h.length,f.length);for(let _=0;_<y;_++)o(s[_],h[_],f[_])}}function i(c,o={}){var s;const h=o.origin,f=(s=o.minDistance)!==null&&s!==void 0?s:1e-6,y=f*f,_=o.sigma,g=_!==void 0&&_>0,a=g?2*_*_:1,d=t.EVD.createCache(3),p=d.matrix;r.Matrix.makeZero(p);const u=e.Vec3.zero();let m=0,v=0;if(n(c,(P,C,l)=>{let S=P,T=C,A=l;h&&(S-=h[0],T-=h[1],A-=h[2]);const x=S*S+T*T+A*A;if(x<=y)return;const D=1/Math.sqrt(x);S*=D,T*=D,A*=D;const V=g?Math.exp(-x/a):1;r.Matrix.add(p,0,0,V*S*S),r.Matrix.add(p,0,1,V*S*T),r.Matrix.add(p,0,2,V*S*A),r.Matrix.add(p,1,0,V*T*S),r.Matrix.add(p,1,1,V*T*T),r.Matrix.add(p,1,2,V*T*A),r.Matrix.add(p,2,0,V*A*S),r.Matrix.add(p,2,1,V*A*T),r.Matrix.add(p,2,2,V*A*A),u[0]+=V*S,u[1]+=V*T,u[2]+=V*A,m++,v+=V}),m===0||v<=0)return;t.EVD.compute(d);const b=e.Vec3.create(r.Matrix.get(p,0,0),r.Matrix.get(p,1,0),r.Matrix.get(p,2,0));if(!(e.Vec3.magnitude(b)<1e-6))return e.Vec3.normalize(b,b),e.Vec3.dot(b,u)>0&&e.Vec3.scale(b,b,-1),b}return JP}var Jb={},u7;function Cce(){if(u7)return Jb;u7=1,Object.defineProperty(Jb,"__esModule",{value:!0}),Jb.pcaFocus=s,Jb.getPcaTransform=h;const e=wt(),t=_l(),r=ta();function n(f){if(f.atomicResidueCount===1)return;const{polymerResidueCount:y}=f;if(y<=1)return;const _=2**Math.max(Math.ceil(Math.log10(y/1e3)),0),g=_===1?y:Math.ceil(y/_)+f.units.length,a=(0,e.Vec3)(),d=new Float32Array(3*g);let p=0;for(const u of f.units){const{polymerElements:m}=u.props,{conformation:v}=u;if(m)for(let b=0;b<m.length;b+=_)v.position(m[b],a),e.Vec3.toArray(a,d,3*p),p++}return d.length!==p?d.slice(0,3*p):d}function i(f,y,_){const g=_[0],a=_[1],d=_[2],p=-g*y[0]-a*y[1]-d*y[2],u=f[0],m=f[1],v=f[2];return(g*u+a*m+d*v+p)/Math.sqrt(g*g+a*a+d*d)}function c(f,y,_,g){const a=i(f,y,g);return{aroundX:i(f,y,_)<0,aroundY:a<0}}function o(f,y){if(f.units.length===1)return e.Vec3.create(y[0],y[1],y[2]);{const _=f.units.find(g=>g.props.polymerElements);if(_){const g=(0,e.Vec3)(),a=(0,e.Vec3)(),{polymerElements:d,conformation:p}=_;for(let u=0,m=d.length;u<m;
7087u++)p.position(d[u],g),e.Vec3.add(a,a,g);return e.Vec3.scale(a,a,1/d.length)}else return e.Vec3.create(y[0],y[1],y[2])}}function s(f,y,_){if(!f.canvas3d)return;const{origin:g,dirA:a,dirB:d,dirC:p}=_.principalAxes.boxAxes,u=e.Vec3.clone(a),m=e.Vec3.clone(p);if(_.positionToFlip){const{aroundX:b,aroundY:P}=c(_.positionToFlip,g,u,d);b&&(e.Vec3.negate(m,m),e.Vec3.negate(u,u)),P&&e.Vec3.negate(m,m)}const v=e.Vec3.scale((0,e.Vec3)(),g,-100);return e.Vec3.dot(v,u)<=0&&e.Vec3.negate(m,m),e.Vec3.dot(e.Vec3.unitY,m)<=0&&e.Vec3.negate(u,u),f.canvas3d.camera.getFocus(g,y,u,m,r.Camera.createDefaultSnapshot())}function h(f){var y;const _=(y=f[0].cell.obj)===null||y===void 0?void 0:y.data;if(!_)return;if("_pcaTransformData"in _.currentPropertyData)return _.currentPropertyData._pcaTransformData;const g=n(_);if(!g){_.currentPropertyData._pcaTransformData=void 0;return}const a=o(_,g),d={principalAxes:t.PrincipalAxes.ofPositions(g),positionToFlip:a};return _.currentPropertyData._pcaTransformData=d,d}return Jb}var tf={},l7;function hZ(){if(l7)return tf;l7=1,Object.defineProperty(tf,"__esModule",{value:!0}),tf.getFocusSnapshot=s,tf.getCellBoundingSphere=y,tf.getPluginBoundingSphere=a;const e=rt(),t=Ki(),r=Ge(),n=gt(),i=Ke(),c=Et(),o=jt();function s(m,v){var b,P;if(!m.canvas3d)return;const C=(b=v.targets)===null||b===void 0?void 0:b.map(S=>{var T,A,x,M;if(S.center!==void 0&&S.radius!==void 0)return e.Sphere3D.create(S.center,S.radius);const D=S.targetRef!==void 0?y(m,S.targetRef):a(m);if(!D)return;const V=(T=S.center)!==null&&T!==void 0?T:D.center,R=(A=S.radius)!==null&&A!==void 0?A:D.radius*((x=S.radiusFactor)!==null&&x!==void 0?x:1)+((M=S.extraRadius)!==null&&M!==void 0?M:0);return e.Sphere3D.create(V,R)}).filter(S=>S!==void 0),l=C&&C.length>0?u(C):a(m);return f(m.canvas3d.camera,{center:l.center,radius:Math.max(l.radius,(P=v.minRadius)!==null&&P!==void 0?P:0),up:v.up,direction:v.direction})}const h=(0,r.Vec3)();function f(m,v){var b,P;const C=v.center,l=Math.max(v.radius,.01),S=(b=v.direction)!==null&&b!==void 0?b:r.Vec3.sub((0,r.Vec3)(),m.target,m.position),T=r.Vec3.orthogonalize((0,r.Vec3)(),S,(P=v.up)!==null&&P!==void 0?P:m.up),A=m.getTargetDistance(l),x=r.Vec3.setMagnitude(h,S,A),M=r.Vec3.sub((0,r.Vec3)(),C,x);return{target:C,position:M,up:T,radius:l}}function y(m,v){const b=_([],m,v);if(b.length!==0)return b.length===1?b[0]:u(b)}function _(m,v,b){const P=v.state.data.cells.get(b),C=g(v,P);return C?m.push(...C):v.state.data.tree.children.get(b).forEach(S=>_(m,v,S)),m}function g(m,v){var b,P;const C=v?.obj;if(C){if(!C.data){console.warn("Focus: no data");return}if(C.data instanceof i.Structure){const l=c.StateSelection.getDecorated(m.state.data,v.transform.ref),S=(P=(b=l?.obj)===null||b===void 0?void 0:b.data)!==null&&P!==void 0?P:C?.data;if(S.isEmpty)return[];const T=n.Loci.getBoundingSphere(i.Structure.Loci(S));return T?[T]:[]}else if(o.PluginStateObject.isRepresentation3D(C)){const l=[];for(const S of C.data.repr.renderObjects){const T=S.values.boundingSphere.ref.value;T.radius>0&&l.push(T)}return l}}}function a(m){const b=d(m).map(P=>P.values.boundingSphere.ref.value).filter(P=>P.radius>0);return u(b)}function d(m,v){let b=Array.from(m.state.data.cells.values()).filter(C=>C.obj&&o.PluginStateObject.isRepresentation3D(C.obj));return b=b.filter(C=>!C.state.isHidden),b.flatMap(C=>C.obj.data.repr.renderObjects)}let p;function u(m){p??(p=new t.BoundaryHelper("98")),p.reset();for(const v of m)p.includeSphere(v);p.finishedIncludeStep();for(const v of m)p.radiusSphere(v);return p.getSphere()}return tf}var dM={},d7;function Pce(){return d7||(d7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ROTATION_MATRICES=void 0,e.structureLayingTransform=c,e.layingTransform=o,e.changeCameraRotation=d;
7087const t=Ge(),r=_l(),n=Ke(),i=3;e.ROTATION_MATRICES={identity:t.Mat3.create(1,0,0,0,1,0,0,0,1),rotX90:t.Mat3.create(1,0,0,0,0,1,0,-1,0),rotY90:t.Mat3.create(0,0,-1,0,1,0,1,0,0),rotZ90:t.Mat3.create(0,1,0,-1,0,0,0,0,1),rotX270:t.Mat3.create(1,0,0,0,0,-1,0,1,0),rotY270:t.Mat3.create(0,0,1,0,1,0,-1,0,0),rotZ270:t.Mat3.create(0,-1,0,1,0,0,0,0,1),rotX180:t.Mat3.create(1,0,0,0,-1,0,0,0,-1),rotY180:t.Mat3.create(-1,0,0,0,1,0,0,0,-1),rotZ180:t.Mat3.create(-1,0,0,0,-1,0,0,0,1)};function c(p,u){const m=s(p,i);return o(m,u)}function o(p,u){if(p.length===0)return console.warn("Skipping PCA, no atoms"),{rotation:e.ROTATION_MATRICES.identity,origin:t.Vec3.zero()};const m=r.PrincipalAxes.calculateMomentsAxes(p),v=r.PrincipalAxes.calculateNormalizedAxes(m),b=g(v.dirA,v.dirB,v.dirC);a(b);const P=u?f(b,u):y(p,b,m.origin);return t.Mat3.mul(b,P,b),{rotation:b,origin:v.origin}}function s(p,u){let m;return m=h(p,{onlyTrace:!0}),m.length>=3*u||(m=h(p,{skipHydrogens:!0,skipWater:!0}),m.length>=3*u)||(m=h(p,{})),m}function h(p,u){const{onlyTrace:m,skipHydrogens:v,skipWater:b}=u,{x:P,y:C,z:l,type_symbol:S,label_comp_id:T}=n.StructureProperties.atom,A=[];for(const x of p){const M=n.StructureElement.Location.create(x);for(const D of x.units){M.unit=D;const V=m?D.polymerElements:D.elements;for(let R=0;R<V.length;R++)M.element=V[R],!(v&&S(M)==="H")&&(b&&T(M)==="HOH"||A.push(P(M),C(M),l(M)))}}return A}function f(p,u){let m=e.ROTATION_MATRICES.identity,v=0;const b=(0,t.Mat3)();for(const P of[e.ROTATION_MATRICES.identity,e.ROTATION_MATRICES.rotX180,e.ROTATION_MATRICES.rotY180,e.ROTATION_MATRICES.rotZ180]){const C=t.Mat3.innerProduct(t.Mat3.mul(b,P,p),u);C>v&&(m=P,v=C)}return m}function y(p,u,m){const v=t.Vec3.create(t.Mat3.getValue(u,0,0),t.Mat3.getValue(u,0,1),t.Mat3.getValue(u,0,2)),b=t.Vec3.create(t.Mat3.getValue(u,1,0),t.Mat3.getValue(u,1,1),t.Mat3.getValue(u,1,2)),P=t.Vec3.create(t.Mat3.getValue(u,2,0),t.Mat3.getValue(u,2,1),t.Mat3.getValue(u,2,2)),C=Math.floor(p.length/3),l=(0,t.Vec3)();let S=0,T=0,A=0;for(let D=0;D<C;D++)t.Vec3.fromArray(l,p,3*D),t.Vec3.sub(l,l,m),S+=D*t.Vec3.dot(l,v),T+=D*t.Vec3.dot(l,b),A+=_(D,C)*t.Vec3.dot(l,P);const x=A<0,M=x?S+T<0:S-T<0;return M&&x?e.ROTATION_MATRICES.rotY180:x?e.ROTATION_MATRICES.rotX180:M?e.ROTATION_MATRICES.rotZ180:e.ROTATION_MATRICES.identity}function _(p,u){const m=Math.floor(u/2);return p<m?u%2?m-p:m-p-1:p-m}function g(p,u,m){const v=(0,t.Mat3)();return t.Mat3.setValue(v,0,0,p[0]),t.Mat3.setValue(v,0,1,p[1]),t.Mat3.setValue(v,0,2,p[2]),t.Mat3.setValue(v,1,0,u[0]),t.Mat3.setValue(v,1,1,u[1]),t.Mat3.setValue(v,1,2,u[2]),t.Mat3.setValue(v,2,0,m[0]),t.Mat3.setValue(v,2,1,m[1]),t.Mat3.setValue(v,2,2,m[2]),v}function a(p){t.Mat3.determinant(p)<0&&(t.Mat3.setValue(p,2,0,-t.Mat3.getValue(p,2,0)),t.Mat3.setValue(p,2,1,-t.Mat3.getValue(p,2,1)),t.Mat3.setValue(p,2,2,-t.Mat3.getValue(p,2,2)))}function d(p,u){const m=t.Mat3.invert((0,t.Mat3)(),u),v=t.Vec3.distance(p.position,p.target),b=t.Vec3.transformMat3((0,t.Vec3)(),t.Vec3.create(0,0,v),m),P=t.Vec3.transformMat3((0,t.Vec3)(),t.Vec3.create(0,1,0),m),C=t.Vec3.add((0,t.Vec3)(),p.target,b);return{...p,position:C,up:P}}})(dM)),dM}var f7;function Tce(){return f7||(f7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CameraManager=e.DefaultCameraFocusLociOptions=e.DefaultCameraFocusOptions=void 0;const t=Ki(),r=Ge(),n=Sce(),i=wt(),c=gt(),o=Ke(),s=jt(),h=Cce(),f=hZ(),y=Pce();e.DefaultCameraFocusOptions={minRadius:1,extraRadius:4,durationMs:250,zoomOut:!1,zoomOutOptions:{durationFactor:3.5}},e.DefaultCameraFocusLociOptions={...e.DefaultCameraFocusOptions,optimizeDirection:!1,optimizeDirectionUp:"current"};class _{transformedLoci(a){var d,p;if(o.StructureElement.Loci.is(a)){const u=(p=(d=this.plugin.helpers.substructureParent.get(a.structure))===null||d===void 0?void 0:d.obj)===null||p===void 0?void 0:p.data;u&&(a=o.StructureElement.Loci.remap(a,u))}return a}focusRenderObjects(a,d){if(!a)return;const p=[];for(const u of a){const m=u.values.boundingSphere.ref.value;m.radius!==0&&p.push(m)}this.focusSpheres(p,u=>u,d)}getFocusSphere(a){let d;if(Array.isArray(a)&&a.length>1){const p=[];for(const u of a){const m=c.Loci.getBoundingSphere(this.transformedLoci(u));m&&p.push(m)}if(p.length===0)return;this.boundaryHelper.reset();for(const u of p)this.boundaryHelper.includeSphere(u);this.boundaryHelper.finishedIncludeStep();
7087for(const u of p)this.boundaryHelper.radiusSphere(u);d=this.boundaryHelper.getSphere()}else if(Array.isArray(a)){if(a.length===0)return;d=c.Loci.getBoundingSphere(this.transformedLoci(a[0]))}else d=c.Loci.getBoundingSphere(this.transformedLoci(a));return d}focusLociOptimized(a,d){const{canvas3d:p}=this.plugin;if(!p)return;const u=this.getFocusSphere(a);if(!u)return;const m=Array.isArray(a)?a:[a],v={x:[],y:[],z:[]},b=(0,i.Vec3)(),{extraRadius:P,minRadius:C}={...e.DefaultCameraFocusOptions,...d},l=Math.max(u.radius+P,C);if(l<=.001)return this.getFocusSphereSnapshot(u,d);const S=o.StructureProperties.entity.type;for(const x of m){if(!o.StructureElement.Loci.is(x))continue;const M=o.StructureElement.Loci.extendToRadius(x,l);o.StructureElement.Loci.forEachLocation(M,D=>{S(D)!=="water"&&(D.unit.conformation.position(D.element,b),v.x.push(b[0]),v.y.push(b[1]),v.z.push(b[2]))})}if(v.x.length===0)return this.getFocusSphereSnapshot(u,d);const T=(0,n.leastObstructedDirection)(v,{origin:u.center,minDistance:.001,sigma:u.radius});if(!T)return this.getFocusSphereSnapshot(u,d);i.Vec3.negate(T,T);const A=d?.optimizeDirectionUp==="default"?i.Vec3.unitY:i.Vec3.is(d?.optimizeDirectionUp)?d.optimizeDirectionUp:void 0;return A?p.camera.getInvariantFocus(u.center,l,A,T):p.camera.getFocus(u.center,l,void 0,T)}focusLociBase(a,d){const p=this.getFocusSphere(a);if(p)return this.getFocusSphereSnapshot(p,d)}focusLoci(a,d){if(!this.plugin.canvas3d)return;const p={...e.DefaultCameraFocusLociOptions,...d};let u;p.optimizeDirection?u=this.focusLociOptimized(a,p):u=this.focusLociBase(a,p),this.focusSnapshot(u,p)}focusSpheres(a,d,p){const u=[];for(const m of a){const v=d(m);v&&u.push(v)}if(u.length!==0){if(u.length===1)return this.focusSphere(u[0],p);this.boundaryHelper.reset();for(const m of u)this.boundaryHelper.includeSphere(m);this.boundaryHelper.finishedIncludeStep();
7087for(const m of u)this.boundaryHelper.radiusSphere(m);this.focusSphere(this.boundaryHelper.getSphere(),p)}}getFocusSphereSnapshot(a,d){const{canvas3d:p}=this.plugin;if(!p)return;const{extraRadius:u,minRadius:m}={...e.DefaultCameraFocusOptions,...d},v=Math.max(a.radius+u,m);return d?.principalAxes?(0,h.pcaFocus)(this.plugin,v,d):p.camera.getFocus(a.center,v)}focusSnapshot(a,d){var p,u,m,v;if(!this.plugin.canvas3d||!a)return;const b=(p=d?.durationMs)!==null&&p!==void 0?p:e.DefaultCameraFocusOptions.durationMs;if(!d?.zoomOut){this.plugin.canvas3d.requestCameraReset({snapshot:a,durationMs:b});return}const P=this.plugin.canvas3d.boundingSphere,C=this.getFocusSphereSnapshot(P,d),l=(u=this.plugin.canvas3d)===null||u===void 0?void 0:u.camera.getSnapshot(),S=i.Vec3.distance(l.position,C.position),T=i.Vec3.distance(C.position,a.position),A=S/(S+T),M=1+((v=(m=d?.zoomOutOptions)===null||m===void 0?void 0:m.durationFactor)!==null&&v!==void 0?v:e.DefaultCameraFocusOptions.zoomOutOptions.durationFactor)*Math.min(A,.5);this.plugin.canvas3d.requestCameraReset({snapshot:a,durationMs:M*b,keyframes:A>.05?[{t:A,snapshot:C,easing:"cubic-out"},{t:1,snapshot:a,easing:"cubic-in"}]:void 0})}focusSphere(a,d){const{canvas3d:p}=this.plugin;if(!p)return;const u=this.getFocusSphereSnapshot(a,d);u&&this.focusSnapshot(u,d)}focusObject(a){var d,p;if(!this.plugin.canvas3d)return;const u=(0,f.getFocusSnapshot)(this.plugin,{...a,targets:(d=a.targets)===null||d===void 0?void 0:d.map(m=>{var v;return{...m,extraRadius:(v=m.extraRadius)!==null&&v!==void 0?v:e.DefaultCameraFocusOptions.extraRadius}}),minRadius:(p=a.minRadius)!==null&&p!==void 0?p:e.DefaultCameraFocusOptions.minRadius});this.focusSnapshot(u,a)}orientAxes(a,d){if(!this.plugin.canvas3d)return;a||(a=this.plugin.state.data.selectQ(b=>b.ofType(s.PluginStateObject.Molecule.Structure)).filter(b=>b.obj&&!b.transform.transformer.definition.isDecorator&&!b.obj.data.parent).map(b=>{var P;return(P=b.obj)===null||P===void 0?void 0:P.data}).filter(b=>!!b));const{rotation:p}=(0,y.structureLayingTransform)(a),u=(0,y.changeCameraRotation)(this.plugin.canvas3d.camera.getSnapshot(),p);this.setSnapshot(u,d)}resetAxes(a){if(!this.plugin.canvas3d)return;const d=(0,y.changeCameraRotation)(this.plugin.canvas3d.camera.getSnapshot(),r.Mat3.Identity);this.setSnapshot(d,a)}setSnapshot(a,d){var p;(p=this.plugin.canvas3d)===null||p===void 0||p.requestCameraReset({snapshot:a,durationMs:d})}reset(a,d){var p;(p=this.plugin.canvas3d)===null||p===void 0||p.requestCameraReset({snapshot:a,durationMs:d})}constructor(a){this.plugin=a,this.boundaryHelper=new t.BoundaryHelper("98")}}e.CameraManager=_})(lM)),lM}var rf={},m7;function xce(){if(m7)return rf;m7=1,Object.defineProperty(rf,"__esModule",{value:!0}),rf.InteractivityManager=void 0;const e=gt(),t=Ke(),r=Lt(),n=cn(),i=vr(),c=Ne(),o=Vi();class s extends o.StatefulPluginComponent{get props(){return{...this.state.props}}setProps(f){const y=this.props,_={...this.state.props,...f};(0,i.shallowEqual)(y,_)||(this.updateState({props:_}),this.lociSelects.setProps(_),this.lociHighlights.setProps(_),this.events.propsUpdated.next(void 0))}dispose(){super.dispose(),this.lociSelects.dispose(),this.lociHighlights.dispose()}constructor(f,y={}){super({props:{...c.ParamDefinition.getDefaultValues(s.Params),...y}}),this.plugin=f,this._props=c.ParamDefinition.getDefaultValues(s.Params),this.events={propsUpdated:this.ev()},this.lociSelects=new s.LociSelectManager(f,this._props),this.lociHighlights=new s.LociHighlightManager(f,this._props)}}return rf.InteractivityManager=s,(function(h){h.Params={granularity:c.ParamDefinition.Select("residue",e.Loci.GranularityOptions,{label:"Picking Level",description:"Controls if selections are expanded upon picking to whole residues, chains, structures, instances, or left as atoms and coarse elements"})};class f{setProps(a){Object.assign(this.props,a)}addProvider(a){this.providers.push(a)}removeProvider(a){this.providers=this.providers.filter(d=>d!==a)}normalizedLoci(a,d,p=!1){const{loci:u,repr:m}=a,v=d?this.props.granularity:void 0;return{loci:e.Loci.normalize(u,v,p),repr:m}}
7087mark(a,d,p=!1){if(!e.Loci.isEmpty(a.loci))for(const u of this.providers)u(a,d,p)}dispose(){this.providers.length=0,this.sel.dispose()}constructor(a,d={}){this.ctx=a,this.providers=[],this.props=c.ParamDefinition.getDefaultValues(h.Params),this.sel=a.managers.structure.selection,this.setProps(d)}}h.LociMarkManager=f;class y extends f{constructor(){super(...arguments),this.prev=[],this.clearHighlights=(a=!1)=>{for(const d of this.prev)this.mark(d,n.MarkerAction.RemoveHighlight,a);this.prev.length=0}}isHighlighted(a){for(const d of this.prev)if(r.Representation.Loci.areEqual(d,a))return!0;return!1}addHighlight(a){this.mark(a,n.MarkerAction.Highlight),this.prev.push(a)}highlight(a,d=!0){const p=this.normalizedLoci(a,d);this.isHighlighted(p)||this.addHighlight(p)}highlightOnly(a,d=!0){const p=this.normalizedLoci(a,d);this.isHighlighted(p)||(e.Loci.isEmpty(p.loci)?this.clearHighlights():(this.clearHighlights(!0),this.addHighlight(p)))}highlightOnlyExtend(a,d=!0){const p=this.normalizedLoci(a,d);if(t.StructureElement.Loci.is(p.loci)){const u=this.ctx.selectionMode?this.sel.tryGetRange(p.loci):this.ctx.managers.structure.focus.tryGetRange(p.loci),m={loci:u??p.loci,repr:p.repr};this.isHighlighted(m)||(e.Loci.isEmpty(m.loci)?this.clearHighlights():(this.clearHighlights(!0),this.addHighlight(m)))}}dispose(){super.dispose(),this.prev.length=0}}h.LociHighlightManager=y;class _ extends f{toggle(a,d=!0){if(e.Loci.isEmpty(a.loci))return;const p=this.normalizedLoci(a,d,!0);t.StructureElement.Loci.is(p.loci)?this.toggleSel(p):super.mark(p,n.MarkerAction.Toggle)}toggleExtend(a,d=!0){if(e.Loci.isEmpty(a.loci))return;const p=this.normalizedLoci(a,d,!0);if(t.StructureElement.Loci.is(p.loci)){const u=this.sel.tryGetRange(p.loci)||p.loci;this.toggleSel({loci:u,repr:p.repr})}}select(a,d=!0){const p=this.normalizedLoci(a,d,!0);t.StructureElement.Loci.is(p.loci)&&this.sel.modify("add",p.loci),this.mark(p,n.MarkerAction.Select)}selectJoin(a,d=!0){const p=this.normalizedLoci(a,d,!0);t.StructureElement.Loci.is(p.loci)&&this.sel.modify("intersect",p.loci),this.mark(p,n.MarkerAction.Select)}selectOnly(a,d=!0){const p=this.normalizedLoci(a,d,!0);t.StructureElement.Loci.is(p.loci)&&(this.mark({loci:t.Structure.Loci(p.loci.structure),repr:p.repr},n.MarkerAction.Deselect),this.sel.modify("set",p.loci)),this.mark(p,n.MarkerAction.Select)}deselect(a,d=!0){const p=this.normalizedLoci(a,d,!0);t.StructureElement.Loci.is(p.loci)&&this.sel.modify("remove",p.loci),this.mark(p,n.MarkerAction.Deselect)}deselectAll(){this.sel.clear(),this.mark({loci:e.EveryLoci},n.MarkerAction.Deselect)}deselectAllOnEmpty(a){(0,e.isEmptyLoci)(a.loci)&&this.deselectAll()}mark(a,d){const{loci:p}=a;
7087if(!e.Loci.isEmpty(p))if(t.StructureElement.Loci.is(p)){const u=this.sel.getLoci(p.structure);super.mark({loci:t.Structure.Loci(p.structure)},n.MarkerAction.Deselect,!e.Loci.isEmpty(u)),super.mark({loci:u},n.MarkerAction.Select)}else super.mark(a,d)}toggleSel(a){this.sel.has(a.loci)?(this.sel.modify("remove",a.loci),this.mark(a,n.MarkerAction.Deselect)):(this.sel.modify("add",a.loci),this.mark(a,n.MarkerAction.Select))}}h.LociSelectManager=_})(s||(rf.InteractivityManager=s={})),rf}var e_={},p7;function Ace(){if(p7)return e_;p7=1,Object.defineProperty(e_,"__esModule",{value:!0}),e_.LociLabelManager=void 0;const e=gt(),t=Lt(),r=cn(),n=Vt();class i{clearProviders(){this.providers=[],this.isDirty=!0,this.showLabels()}addProvider(o){this.providers.push(o),this.providers.sort((s,h)=>(h.priority||0)-(s.priority||0)),this.isDirty=!0,this.showLabels()}removeProvider(o){this.providers=this.providers.filter(s=>s!==o),this.isDirty=!0,this.showLabels()}mark(o,s){const h=this.locis.findIndex(f=>t.Representation.Loci.areEqual(o,f));h===-1&&s===r.MarkerAction.Highlight?(this.locis.push(o),this.isDirty=!0):h!==-1&&s===r.MarkerAction.RemoveHighlight&&((0,n.arrayRemoveAtInPlace)(this.locis,h),this.isDirty=!0)}showLabels(){this.ctx.behaviors.labels.highlight.next({labels:this.getLabels()})}getLabels(){if(this.isDirty){this.groupedLabels.clear(),this.labels.length=0;for(const o of this.providers)for(const s of this.locis){if(e.Loci.isEmpty(s.loci))continue;const h=o.label(s.loci,s.repr);if(h){const f=o.group?o.group(h):h.toString(),y=this.groupedLabels.get(f);y?y.push(h):this.groupedLabels.set(f,[h])}}
7087this.labels.length=0,this.groupedLabels.forEach((o,s)=>{const h=o.length,f=h>1&&o[0]!==o[1]?s:o[0];this.labels.push(h===1?f:`${f} <small>|| × ${h}</small>`)}),this.isDirty=!1}return this.labels}constructor(o){this.ctx=o,this.providers=[],this.locis=[],this.isDirty=!1,this.labels=[],this.groupedLabels=new Map,o.managers.interactivity.lociHighlights.addProvider((s,h,f)=>{this.providers.length!==0&&(this.mark(s,h),f||this.showLabels())})}}return e_.LociLabelManager=i,e_}var nf={},t_={},h7;function Mce(){if(h7)return t_;h7=1,Object.defineProperty(t_,"__esModule",{value:!0}),t_.setStructureOverpaint=s,t_.clearStructureOverpaint=h;const e=Ke(),t=Dr(),r=Et(),n=US(),i=vt(),c=gt(),o="overpaint-controls";async function s(_,g,a,d,p){await f(_,g,async(u,m,v)=>{if(p&&p.length>0&&!p.includes(m.params.values.type.name))return;const b=m.obj.data.sourceData,P=await d(b.root);if(c.Loci.isEmpty(P)||(0,c.isEmptyLoci)(P))return;const C={bundle:e.StructureElement.Bundle.fromLoci(P),color:a===-1?(0,i.Color)(0):a,clear:a===-1};if(v){const l=[...v.params.values.layers,C],S=y(l,b);u.to(v).update(n.Overpaint.toBundle(S))}else{const l=y([C],b);u.to(m.transform.ref).apply(t.StateTransforms.Representation.OverpaintStructureRepresentation3DFromBundle,n.Overpaint.toBundle(l),{tags:o})}})}async function h(_,g,a){await f(_,g,async(d,p,u)=>{a&&a.length>0&&!a.includes(p.params.values.type.name)||u&&d.delete(u.transform.ref)})}async function f(_,g,a){const d=_.state.data,p=d.build();for(const u of g)for(const m of u.representations){const v=d.select(r.StateSelection.Generators.ofTransformer(t.StateTransforms.Representation.OverpaintStructureRepresentation3DFromBundle,m.cell.transform.ref).withTag(o));await a(p,m.cell,v[0])}return p.commit({doNotUpdateCurrent:!0})}function y(_,g){const a=n.Overpaint.ofBundle(_,g.root),d=n.Overpaint.merge(a);return n.Overpaint.filter(d,g)}return t_}var eT={},g7;function Dce(){if(g7)return eT;g7=1,Object.defineProperty(eT,"__esModule",{value:!0}),eT.setStructureClipping=o;const e=Ke(),t=Dr(),r=Et(),n=gt(),i=Yf(),c="clipping-controls";async function o(f,y,_,g,a){await s(f,y,async(d,p,u)=>{if(a&&a.length>0&&!a.includes(p.params.values.type.name))return;const m=p.obj.data.sourceData,v=await g(m.root);if(n.Loci.isEmpty(v)||(0,n.isEmptyLoci)(v))return;const b={bundle:e.StructureElement.Bundle.fromLoci(v),groups:_};if(u){const P=[...u.params.values.layers,b],C=h(P,m);d.to(u).update(i.Clipping.toBundle(C))}else{const P=h([b],m);d.to(p.transform.ref).apply(t.StateTransforms.Representation.ClippingStructureRepresentation3DFromBundle,i.Clipping.toBundle(P),{tags:c})}})}async function s(f,y,_){const g=f.state.data,a=g.build();for(const d of y)for(const p of d.representations){const u=g.select(r.StateSelection.Generators.ofTransformer(t.StateTransforms.Representation.ClippingStructureRepresentation3DFromBundle,p.cell.transform.ref).withTag(c));await _(a,p.cell,u[0])}return a.commit({doNotUpdateCurrent:!0})}function h(f,y){const _=i.Clipping.ofBundle(f,y.root),g=i.Clipping.merge(_);return i.Clipping.filter(g,y)}return eT}var r_={},y7;function Ice(){if(y7)return r_;y7=1,Object.defineProperty(r_,"__esModule",{value:!0}),r_.setStructureTransparency=o,r_.clearStructureTransparency=s;const e=Ke(),t=Dr(),r=Et(),n=gt(),i=jS(),c="transparency-controls";async function o(y,_,g,a,d){await h(y,_,async(p,u,m)=>{if(d&&d.length>0&&!d.includes(u.params.values.type.name))return;const v=u.obj.data.sourceData,b=await a(v.root);if(n.Loci.isEmpty(b)||(0,n.isEmptyLoci)(b))return;const P={bundle:e.StructureElement.Bundle.fromLoci(b),value:g};if(m){const C=[...m.params.values.layers,P],l=f(C,v);p.to(m).update(i.Transparency.toBundle(l))}else{const C=f([P],v);p.to(u.transform.ref).apply(t.StateTransforms.Representation.TransparencyStructureRepresentation3DFromBundle,i.Transparency.toBundle(C),{tags:c})}})}async function s(y,_,g){await h(y,_,async(a,d,p)=>{g&&g.length>0&&!g.includes(d.params.values.type.name)||p&&a.delete(p.transform.ref)})}async function h(y,_,g){const a=y.state.data,d=a.build();for(const p of _)for(const u of p.representations){const m=a.select(r.StateSelection.Generators.ofTransformer(t.StateTransforms.Representation.TransparencyStructureRepresentation3DFromBundle,u.cell.transform.ref).withTag(c));await g(d,u.cell,m[0])}
7087return d.commit({doNotUpdateCurrent:!0})}function f(y,_){const g=i.Transparency.ofBundle(y,_.root),a=i.Transparency.merge(g);return i.Transparency.filter(a,_)}return r_}var n_={},v7;function wce(){if(v7)return n_;v7=1,Object.defineProperty(n_,"__esModule",{value:!0}),n_.setStructureSubstance=s,n_.clearStructureSubstance=h;const e=Ke(),t=Dr(),r=Et(),n=zS(),i=gt(),c=tc(),o="substance-controls";async function s(_,g,a,d,p){await f(_,g,async(u,m,v)=>{if(p&&p.length>0&&!p.includes(m.params.values.type.name))return;const b=m.obj.data.sourceData,P=await d(b.root);if(i.Loci.isEmpty(P)||(0,i.isEmptyLoci)(P))return;const C={bundle:e.StructureElement.Bundle.fromLoci(P),material:a??(0,c.Material)(),clear:!a};if(v){const l=[...v.params.values.layers,C],S=y(l,b);u.to(v).update(n.Substance.toBundle(S))}else{const l=y([C],b);u.to(m.transform.ref).apply(t.StateTransforms.Representation.SubstanceStructureRepresentation3DFromBundle,n.Substance.toBundle(l),{tags:o})}})}async function h(_,g,a){await f(_,g,async(d,p,u)=>{a&&a.length>0&&!a.includes(p.params.values.type.name)||u&&d.delete(u.transform.ref)})}async function f(_,g,a){const d=_.state.data,p=d.build();for(const u of g)for(const m of u.representations){const v=d.select(r.StateSelection.Generators.ofTransformer(t.StateTransforms.Representation.SubstanceStructureRepresentation3DFromBundle,m.cell.transform.ref).withTag(o));await a(p,m.cell,v[0])}return p.commit({doNotUpdateCurrent:!0})}function y(_,g){const a=n.Substance.ofBundle(_,g.root),d=n.Substance.merge(a);return n.Substance.filter(d,g)}return n_}var i_={},b7;function Vce(){if(b7)return i_;b7=1,Object.defineProperty(i_,"__esModule",{value:!0}),i_.setStructureEmissive=o,i_.clearStructureEmissive=s;const e=Ke(),t=Dr(),r=Et(),n=gt(),i=HS(),c="emissive-controls";async function o(y,_,g,a,d){await h(y,_,async(p,u,m)=>{if(d&&d.length>0&&!d.includes(u.params.values.type.name))return;const v=u.obj.data.sourceData,b=await a(v.root);if(n.Loci.isEmpty(b)||(0,n.isEmptyLoci)(b))return;const P={bundle:e.StructureElement.Bundle.fromLoci(b),value:g};if(m){const C=[...m.params.values.layers,P],l=f(C,v);p.to(m).update(i.Emissive.toBundle(l))}else{const C=f([P],v);p.to(u.transform.ref).apply(t.StateTransforms.Representation.EmissiveStructureRepresentation3DFromBundle,i.Emissive.toBundle(C),{tags:c})}})}async function s(y,_,g){await h(y,_,async(a,d,p)=>{g&&g.length>0&&!g.includes(d.params.values.type.name)||p&&a.delete(p.transform.ref)})}async function h(y,_,g){const a=y.state.data,d=a.build();for(const p of _)for(const u of p.representations){const m=a.select(r.StateSelection.Generators.ofTransformer(t.StateTransforms.Representation.EmissiveStructureRepresentation3DFromBundle,u.cell.transform.ref).withTag(c));await g(d,u.cell,m[0])}return d.commit({doNotUpdateCurrent:!0})}function f(y,_){const g=i.Emissive.ofBundle(y,_.root),a=i.Emissive.merge(g);return i.Emissive.filter(a,_)}return i_}var af={},_7;function Ece(){if(_7)return af;_7=1,Object.defineProperty(af,"__esModule",{value:!0}),af.setStructureWiggle=s,af.clearStructureWiggle=h,af.setStructureWiggleFromUncertainty=a;const e=Ke(),t=Dr(),r=Et(),n=gt(),i=WS(),c=at(),o="wiggle-controls";async function s(d,p,u,m,v){await f(d,p,async(b,P,C)=>{if(v&&v.length>0&&!v.includes(P.params.values.type.name))return;const l=P.obj.data.sourceData,S=await m(l.root);if(n.Loci.isEmpty(S)||(0,n.isEmptyLoci)(S))return;const T={bundle:e.StructureElement.Bundle.fromLoci(S),value:u};if(C){const A=[...C.params.values.layers,T],x=y(A,l);b.to(C).update(i.Wiggle.toBundle(x))}else{const A=y([T],l);b.to(P.transform.ref).apply(t.StateTransforms.Representation.WiggleStructureRepresentation3DFromBundle,i.Wiggle.toBundle(A),{tags:o})}})}async function h(d,p,u){await f(d,p,async(m,v,b)=>{u&&u.length>0&&!u.includes(v.params.values.type.name)||b&&m.delete(b.transform.ref)})}async function f(d,p,u){const m=d.state.data,v=m.build();for(const b of p)for(const P of b.representations){const C=m.select(r.StateSelection.Generators.ofTransformer(t.StateTransforms.Representation.WiggleStructureRepresentation3DFromBundle,P.cell.transform.ref).withTag(o));await u(v,P.cell,C[0])}
7087return v.commit({doNotUpdateCurrent:!0})}function y(d,p){const u=i.Wiggle.ofBundle(d,p.root),m=i.Wiggle.merge(u);return i.Wiggle.filter(m,p)}function _(d,p){return e.Unit.isAtomic(d)?d.model.atomicConformation.B_iso_or_equiv.value(p):e.Unit.isSpheres(d)?d.model.coarseConformation.spheres.rmsf[p]:0}function g(d){let p=1/0,u=-1/0;for(const m of d.units){const v=m.elements;for(let b=0,P=v.length;b<P;b++){const C=_(m,v[b]);C<p&&(p=C),C>u&&(u=C)}}return isFinite(p)||(p=0),isFinite(u)||(u=0),{min:p,max:u}}async function a(d,p,u=1,m){await f(d,p,async(v,b,P)=>{if(m&&m.length>0&&!m.includes(b.params.values.type.name))return;const C=b.obj.data.sourceData,l=C.root,{min:S,max:T}=g(l),A=T-S;if(A<=0)return;const x=new Map;for(const V of l.units){const R=V.elements,E=new Map;for(let I=0,B=R.length;I<B;I++){const O=(_(V,R[I])-S)/A,F=Math.min(255,Math.round(O*255));E.has(F)||E.set(F,[]),E.get(F).push(I)}for(const[I,B]of E)x.has(I)||x.set(I,[]),x.get(I).push({unit:V,indices:B})}const M=[];for(const[V,R]of x){const E=V/255*u,I=[];for(const{unit:w,indices:O}of R)I.push({unit:w,indices:c.OrderedSet.ofSortedArray(new Int32Array(O))});const B=e.StructureElement.Loci(l,I);e.StructureElement.Loci.isEmpty(B)||M.push({bundle:e.StructureElement.Bundle.fromLoci(B),value:E})}if(M.length===0)return;const D=y(M,C);P?v.to(P).update(i.Wiggle.toBundle(D)):v.to(b.transform.ref).apply(t.StateTransforms.Representation.WiggleStructureRepresentation3DFromBundle,i.Wiggle.toBundle(D),{tags:o})})}return af}var S7;function Bce(){if(S7)return nf;S7=1,Object.defineProperty(nf,"__esModule",{value:!0}),nf.StructureComponentManager=void 0;const e=Tt(),t=Gl(),r=Ke(),n=If(),i=eC(),c=nt(),o=et(),s=Vr(),h=vr(),f=Ne(),y=Vi(),_=Mce(),g=C2(),a=jl(),d=$S(),p=Yf(),u=Dce(),m=Ice(),v=$w(),b=wce(),P=tc(),C=Pw(),l=Vce(),S=Ece(),T=jf(),A=rc();class x extends y.StatefulPluginComponent{get currentStructures(){return this.plugin.managers.structure.hierarchy.selection.structures}get pivotStructure(){return this.currentStructures[0]}_setSnapshotState(D){this.updateState({options:D}),this.events.optionsUpdated.next(void 0)}async setOptions(D){const V=D.interactions!==this.state.options.interactions;this.updateState({options:D}),this.events.optionsUpdated.next(void 0);const R=this.dataState.build();for(const E of this.currentStructures)for(const I of E.components)this.updateReprParams(R,I);return this.plugin.dataTransaction(async()=>{await R.commit(),await this.plugin.state.updateBehavior(v.StructureFocusRepresentation,E=>{E.ignoreHydrogens=D.hydrogens!=="all",E.ignoreHydrogensVariant=D.hydrogens==="only-polar"?"non-polar":"all",E.ignoreLight=D.ignoreLight,E.material=D.materialStyle,E.clip=D.clipObjects,E.interior=D.interior,E.animation=D.animation}),V&&await this.updateInterationProps()})}updateReprParams(D,V){const{hydrogens:R,visualQuality:E,ignoreLight:I,materialStyle:B,clipObjects:w,interior:O,animation:F}=this.state.options,L=R!=="all",U=R==="only-polar"?"non-polar":"all";for(const q of V.representations){if(q.cell.transform.transformer!==d.StructureRepresentation3D)continue;const N=q.cell.transform.params,k=N.type.params.interior,j=N.type.params.animation;(!!N.type.params.ignoreHydrogens!==L||N.type.params.ignoreHydrogensVariant!==U||N.type.params.quality!==E||N.type.params.ignoreLight!==I||!P.Material.areEqual(N.type.params.material,B)||!f.ParamDefinition.areEqual(C.Clip.Params,N.type.params.clip,w)||k&&!(0,T.areInteriorPropsEquals)(k,O)||j&&!(0,A.areAnimationPropsEqual)(j,F))&&D.to(q.cell).update(H=>{H.type.params.ignoreHydrogens=L,H.type.params.ignoreHydrogensVariant=U,H.type.params.quality=E,H.type.params.ignoreLight=I,H.type.params.material=B,H.type.params.clip=w,k&&(H.type.params.interior=O),j&&(H.type.params.animation=F)})}}async updateInterationProps(){var D,V,R;for(const E of this.currentStructures){const I=t.InteractionsProvider.getParams((D=E.cell.obj)===null||D===void 0?void 0:D.data);if(E.properties){const B=(V=E.properties.cell.transform.params)===null||V===void 0?void 0:V.properties[t.InteractionsProvider.descriptor.name];if(f.ParamDefinition.areEqual(I,B,this.state.options.interactions))continue;await this.dataState.build().to(E.properties.cell).update(w=>{w.properties[t.InteractionsProvider.descriptor.name]=this.state.options.interactions}).commit()}else{const B=this.plugin.customStructureProperties.getParams((R=E.cell.obj)===null||R===void 0?void 0:R.data),w=f.ParamDefinition.getDefaultValues(B);if(f.ParamDefinition.areEqual(I,w.properties[t.InteractionsProvider.descriptor.name],this.state.options.interactions))continue;w.properties[t.InteractionsProvider.descriptor.name]=this.state.options.interactions,await this.plugin.builders.structure.insertStructureProperties(E.cell,w)}}}applyPreset(D,V,R){return this.plugin.dataTransaction(async()=>{for(const E of D){const I=await this.plugin.builders.structure.representation.applyPreset(E.cell,V,R);await this.syncPreset(E,I)}},{canUndo:"Preset"})}syncPreset(D,V){if(!V||!V.components)return this.clearComponents([D]);const R=new Set;if((0,h.objectForEach)(V.components,w=>{w&&R.add(w.ref)}),V.representations&&(0,h.objectForEach)(V.representations,w=>{w&&R.add(w.ref)}),R.size===0)return this.clearComponents([D]);let E=!1;const I=this.dataState.build(),B=w=>{R.has(w.cell.transform.ref)||(E=!0,I.delete(w.cell))};for(const w of D.components){B(w);for(const O of w.representations)B(O);if(w.genericRepresentations)for(const O of w.genericRepresentations)B(O)}if(D.genericRepresentations)for(const w of D.genericRepresentations)B(w);if(E)return I.commit()}clear(D){return this.clearComponents(D)}selectThis(D){var V;const R=this.plugin.managers.structure.selection;R.clear();for(const E of D){const I=r.Structure.toSubStructureElementLoci(E.structure.cell.obj.data,(V=E.cell.obj)===null||V===void 0?void 0:V.data);R.fromLoci("set",I)}}canBeModified(D){return this.plugin.builders.structure.isComponentTransform(D.cell)}modifyByCurrentSelection(D,V){return this.plugin.runTask(c.Task.create("Modify Component",async R=>{const E=this.dataState.build();for(const I of D){if(!this.canBeModified(I))continue;const B=this.plugin.managers.structure.selection.getStructure(I.structure.cell.obj.data);!B||B.elementCount===0||this.modifyComponent(E,I,B,V)}await this.dataState.updateTree(E,{canUndo:"Modify Selection"}).runInContext(R)}))}toggleVisibility(D,V){if(D.length!==0)if(V){const R=D[0].representations.indexOf(V),E=!V.cell.state.isHidden;for(const I of D){const B=I.representations[R];
7087B&&(0,i.setSubtreeVisibility)(this.dataState,B.cell.transform.ref,E)}}else{const R=!D[0].cell.state.isHidden;for(const E of D)(0,i.setSubtreeVisibility)(this.dataState,E.cell.transform.ref,R)}}removeRepresentations(D,V){if(D.length===0)return;const R=[];if(V){const E=D[0].representations.indexOf(V);if(E<0)return;for(const I of D)I.representations[E]&&R.push(I.representations[E])}else for(const E of D)for(const I of E.representations)R.push(I);return this.plugin.managers.structure.hierarchy.remove(R,!0)}updateRepresentations(D,V,R){if(D.length===0)return Promise.resolve();const E=D[0].representations.indexOf(V);if(E<0)return Promise.resolve();const I=this.dataState.build();for(const B of D){const w=B.representations[E];w&&w.cell.transform.transformer===V.cell.transform.transformer&&I.to(w.cell).update(R)}return I.commit({canUndo:"Update Representation"})}updateRepresentationsTheme(D,V){var R,E,I,B;if(D.length===0)return;const w=this.dataState.build();for(const O of D)for(const F of O.representations){const L=F.cell.transform.params,U=typeof V=="function"?V(O,F):V,q=U.color==="default"?(0,g.createStructureColorThemeParams)(this.plugin,(R=O.structure.cell.obj)===null||R===void 0?void 0:R.data,L?.type.name):U.color?(0,g.createStructureColorThemeParams)(this.plugin,(E=O.structure.cell.obj)===null||E===void 0?void 0:E.data,L?.type.name,U.color,U.colorParams):void 0,N=U.size==="default"?(0,g.createStructureSizeThemeParams)(this.plugin,(I=O.structure.cell.obj)===null||I===void 0?void 0:I.data,L?.type.name):U.size?(0,g.createStructureSizeThemeParams)(this.plugin,(B=O.structure.cell.obj)===null||B===void 0?void 0:B.data,L?.type.name,U.size,U.sizeParams):void 0;(q||N)&&w.to(F.cell).update(k=>{q&&(k.colorTheme=q),N&&(k.sizeTheme=N)})}return w.commit({canUndo:"Update Theme"})}addRepresentation(D,V){if(D.length===0)return;const{hydrogens:R,visualQuality:E,ignoreLight:I,materialStyle:B,clipObjects:w,interior:O,animation:F}=this.state.options,q={ignoreHydrogens:R!=="all",ignoreHydrogensVariant:R==="only-polar"?"non-polar":"all",quality:E,ignoreLight:I,material:B,clip:w,interior:O,animation:F};return this.plugin.dataTransaction(async()=>{for(const N of D)await this.plugin.builders.structure.representation.addRepresentation(N.cell,{type:this.plugin.representation.structure.registry.get(V),typeParams:q})},{canUndo:"Add Representation"})}tryFindComponent(D,V){if(D.components.length!==0)return this.plugin.runTask(c.Task.create("Find Component",async R=>{var E,I;const B=(E=D.cell.obj)===null||E===void 0?void 0:E.data;if(!B)return;const w=r.StructureSelection.unionStructure(await V.getSelection(this.plugin,R,B));for(const O of D.components){const F=(I=O.cell.obj)===null||I===void 0?void 0:I.data;if(!(!F||!O.cell.parent)&&(0,n.structureAreEqual)(w,F))return O.cell}}))}async add(D,V){return this.plugin.dataTransaction(async()=>{const R=V||this.currentStructures;if(R.length===0)return;const{hydrogens:E,visualQuality:I,ignoreLight:B,materialStyle:w,clipObjects:O,interior:F,animation:L}=this.state.options,N={ignoreHydrogens:E!=="all",ignoreHydrogensVariant:E==="only-polar"?"non-polar":"all",quality:I,ignoreLight:B,material:w,clip:O,interior:F,animation:L},k=o.UUID.create22();for(const j of R){let H;D.options.checkExisting&&(H=await this.tryFindComponent(j,D.selection)),H||(H=await this.plugin.builders.structure.tryCreateComponentFromSelection(j.cell,D.selection,k,{label:D.options.label||(D.selection===a.StructureSelectionQueries.current?"Custom Selection":"")})),!(D.representation==="none"||!H)&&await this.plugin.builders.structure.representation.addRepresentation(H,{type:this.plugin.representation.structure.registry.get(D.representation),typeParams:N})}},{canUndo:"Add Selection"})}async applyTheme(D,V){return this.plugin.dataTransaction(async R=>{const E=V||this.currentStructures;if(E.length===0)return;const I=async B=>r.StructureSelection.toLociWithSourceUnits(await D.selection.getSelection(this.plugin,R,B));for(const B of E)if(D.action.name==="color"){const w=D.action.params;await(0,_.setStructureOverpaint)(this.plugin,B.components,w.color,I,D.representations)}else if(D.action.name==="resetColor")await(0,_.setStructureOverpaint)(this.plugin,B.components,-1,I,D.representations);else if(D.action.name==="transparency"){const w=D.action.params;await(0,m.setStructureTransparency)(this.plugin,B.components,w.value,I,D.representations)}else if(D.action.name==="emissive"){const w=D.action.params;await(0,l.setStructureEmissive)(this.plugin,B.components,w.value,I,D.representations)}else if(D.action.name==="material"){const w=D.action.params;await(0,b.setStructureSubstance)(this.plugin,B.components,w.material,I,D.representations)}else if(D.action.name==="resetMaterial")await(0,b.setStructureSubstance)(this.plugin,B.components,void 0,I,D.representations);else if(D.action.name==="clipping"){const w=D.action.params;await(0,u.setStructureClipping)(this.plugin,B.components,p.Clipping.Groups.fromN
7087ames(w.excludeGroups),I,D.representations)}else if(D.action.name==="wiggle"){const w=D.action.params;await(0,S.setStructureWiggle)(this.plugin,B.components,w.value,I,D.representations)}},{canUndo:"Apply Theme"})}modifyComponent(D,V,R,E){var I,B,w;const O=(I=V.cell.obj)===null||I===void 0?void 0:I.data;if(!O||(E==="subtract"||E==="intersect")&&!(0,n.structureAreIntersecting)(O,R))return;const F=(B=V.structure.cell.obj)===null||B===void 0?void 0:B.data,L=E==="union"?(0,n.structureUnion)(F,[O,R]):E==="intersect"?(0,n.structureIntersect)(O,R):(0,n.structureSubtract)(O,R);if(L.elementCount===0)D.delete(V.cell.transform.ref);else{const q={type:{name:"bundle",params:r.StructureElement.Bundle.fromSubStructure(F,L)},nullIfEmpty:!0,label:(w=V.cell.obj)===null||w===void 0?void 0:w.label};D.to(V.cell).update(q)}}updateLabel(D,V){var R,E;const I={type:(R=D.cell.params)===null||R===void 0?void 0:R.values.type,nullIfEmpty:(E=D.cell.params)===null||E===void 0?void 0:E.values.nullIfEmpty,label:V};this.dataState.build().to(D.cell).update(I).commit()}get dataState(){return this.plugin.state.data}clearComponents(D){const V=this.dataState.build();for(const R of D)for(const E of R.components)V.delete(E.cell.transform.ref);return V.commit({canUndo:"Clear Selections"})}constructor(D){super({options:f.ParamDefinition.getDefaultValues(x.OptionsParams)}),this.plugin=D,this.events={optionsUpdated:this.ev()}}}return nf.StructureComponentManager=x,(function(M){M.OptionsParams={hydrogens:f.ParamDefinition.Select("all",[["all","Show All"],["hide-all","Hide All"],["only-polar","Only Polar"]],{description:"Determine display of hydrogen atoms in representations"}),visualQuality:f.ParamDefinition.Select("auto",e.VisualQualityOptions,{description:"Control the visual/rendering quality of representations"}),ignoreLight:f.ParamDefinition.Boolean(!1,{description:"Ignore light for stylized rendering of representations"}),materialStyle:P.Material.getParam(),clipObjects:f.ParamDefinition.Group(C.Clip.Params),interactions:f.ParamDefinition.Group(t.InteractionsProvider.defaultParams,{label:"Non-covalent Interactions"}),interior:(0,T.getInteriorParam)(),animation:(0,A.getAnimationParam)()};function D(I,B){const{options:w}=I.query.structure.registry;return B={pivot:I.managers.structure.component.pivotStructure,allowNone:!0,hideSelection:!1,checkExisting:!1,...B},{selection:f.ParamDefinition.Select(w[1][0],w,{isHidden:B?.hideSelection}),representation:E(I,B?.pivot,B?.allowNone?[["none","< Create Later >"]]:[]),options:f.ParamDefinition.Group({label:f.ParamDefinition.Text(""),checkExisting:f.ParamDefinition.Boolean(!!B?.checkExisting,{help:()=>({description:"Checks if a selection with the specifield elements already exists to avoid creating duplicate components."})})})}}M.getAddParams=D;function V(I,B){const{options:w}=I.query.structure.registry;return{selection:f.ParamDefinition.Select(w[1][0],w,{isHidden:!1}),action:f.ParamDefinition.MappedStatic("color",{color:f.ParamDefinition.Group({color:f.ParamDefinition.Color(s.ColorNames.blue,{isExpanded:!0})},{isFlat:!0}),resetColor:f.ParamDefinition.EmptyGroup({label:"Reset Color"}),transparency:f.ParamDefinition.Group({value:f.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01})},{isFlat:!0}),emissive:f.ParamDefinition.Group({value:f.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01})},{isFlat:!0}),material:f.ParamDefinition.Group({material:P.Material.getParam({isFlat:!0})},{isFlat:!0}),resetMaterial:f.ParamDefinition.EmptyGroup({label:"Reset Material"}),clipping:f.ParamDefinition.Group({excludeGroups:f.ParamDefinition.MultiSelect([],f.ParamDefinition.objectToOptions(p.Clipping.Groups.Names))},{isFlat:!0}),wiggle:f.ParamDefinition.Group({value:f.ParamDefinition.Numeric(1,{min:0,max:5,step:.01})},{isFlat:!0})}),representations:f.ParamDefinition.MultiSelect([],R(I,B),{emptyValue:"All"})}}M.getThemeParams=V;function R(I,B){var w,O;return!((w=B?.cell.obj)===null||w===void 0)&&w.data?I.representation.structure.registry.getApplicableTypes((O=B.cell.obj)===null||O===void 0?void 0:O.data):I.representation.structure.registry.types}M.getRepresentationTypes=R;function E(I,B,w,O){const F=[...w,...R(I,B)];return f.ParamDefinition.Select(F[0][0],F,{label:O})}})(x||(nf.StructureComponentManager=x={})),nf}var a_={},of={},C7;function gZ(){if(C7)return of;
7087C7=1,Object.defineProperty(of,"__esModule",{value:!0}),of.StructureSelectionManager=void 0,of.getLociRange=b;const e=at(),t=Ki(),r=Ge(),n=gt(),i=Ke(),c=Et(),o=nt(),s=_a(),h=Vt(),f=Vi(),y=jt(),_=et(),g=_t(),a=new t.BoundaryHelper("98"),d=24;class p extends f.StatefulPluginComponent{get entries(){return this.state.entries}get additionsHistory(){return this.state.additionsHistory}get stats(){return this.state.stats?this.state.stats:(this.state.stats=this.calcStats(),this.state.stats)}getEntry(l){const S=this.plugin.helpers.substructureParent.get(l,!0);if(!S)return;const T=S.transform.ref;if(!this.entries.has(T)){const A=new m(i.StructureElement.Loci(l,[]));return this.entries.set(T,A),A}return this.entries.get(T)}calcStats(){let l=0,S=0;const T=i.StructureElement.Stats.create();this.entries.forEach(x=>{const{elements:M}=x.selection;if(M.length){l+=1;for(let D=0,V=M.length;D<V;++D)S+=e.OrderedSet.size(M[D].indices);i.StructureElement.Stats.add(T,T,i.StructureElement.Stats.ofLoci(x.selection))}});const A=(0,s.structureElementStatsLabel)(T,{countsOnly:!0});return{structureCount:l,elementCount:S,label:A}}add(l){if(!i.StructureElement.Loci.is(l))return!1;const S=this.getEntry(l.structure);if(!S)return!1;const T=S.selection;return S.selection=i.StructureElement.Loci.union(S.selection,l),this.tryAddHistory(l),this.referenceLoci=l,this.events.loci.add.next(l),!i.StructureElement.Loci.areEqual(T,S.selection)}remove(l){if(!i.StructureElement.Loci.is(l))return!1;const S=this.getEntry(l.structure);if(!S)return!1;const T=S.selection;return S.selection=i.StructureElement.Loci.subtract(S.selection,l),this.referenceLoci=l,this.events.loci.remove.next(l),!i.StructureElement.Loci.areEqual(T,S.selection)}intersect(l){if(!i.StructureElement.Loci.is(l))return!1;const S=this.getEntry(l.structure);if(!S)return!1;const T=S.selection;return S.selection=i.StructureElement.Loci.intersect(S.selection,l),this.referenceLoci=l,!i.StructureElement.Loci.areEqual(T,S.selection)}set(l){if(!i.StructureElement.Loci.is(l))return!1;const S=this.getEntry(l.structure);if(!S)return!1;const T=S.selection;return S.selection=l,this.tryAddHistory(l),this.referenceLoci=void 0,!i.StructureElement.Loci.areEqual(T,S.selection)}modifyHistory(l,S,T,A=!1){const x=this.additionsHistory,M=x.indexOf(l);if(M<0)return;let D;switch(S){case"remove":(0,h.arrayRemoveAtInPlace)(x,M);break;case"up":D=M-1;break;case"down":D=M+1;break}if(D!==void 0){const V=T?Math.min(x.length,T):x.length;for(;;)if(D=D%V,D<0&&(D+=V),!A||x[M].loci.structure===x[D].loci.structure){const R=x[M];x[M]=x[D],x[D]=R;break}else D+=S==="up"?-1:1}this.events.additionsHistoryUpdated.next(void 0)}tryAddHistory(l){if(n.Loci.isEmpty(l))return;let S=0,T;for(const M of this.additionsHistory){if(n.Loci.areEqual(M.loci,l)){T=M;break}S++}if(T){(0,h.arrayRemoveAtInPlace)(this.additionsHistory,S),this.additionsHistory.unshift(T),this.events.additionsHistoryUpdated.next(void 0);return}const A=i.StructureElement.Stats.ofLoci(l),x=(0,s.structureElementStatsLabel)(A,{reverse:!0});this.additionsHistory.unshift({id:_.UUID.create22(),loci:l,label:x}),this.additionsHistory.length>d&&this.additionsHistory.pop(),this.events.additionsHistoryUpdated.next(void 0)}clearHistory(){this.state.additionsHistory.length!==0&&(this.state.additionsHistory=[],this.events.additionsHistoryUpdated.next(void 0))}clearHistoryForStructure(l){const S=[];for(const T of this.state.additionsHistory)T.loci.structure.root===l.root&&S.push(T);for(const T of S)this.modifyHistory(T,"remove");S.length!==0&&this.events.additionsHistoryUpdated.next(void 0)}onRemove(l,S){var T;this.entries.has(l)&&(this.entries.delete(l),S?.data&&this.clearHistoryForStructure(S.data),((T=this.referenceLoci)===null||T===void 0?void 0:T.structure)===S?.data&&(this.referenceLoci=void 0),this.state.stats=void 0,this.events.changed.next(void 0))}onUpdate(l,S,T){var A,x,M,D;if(S===T||S?.data===T.data)return;const V=this.plugin.helpers.substructureParent.get(T.data,!0);if(!V||l!==V.transform.ref||!this.entries.has(l))return;const R=(x=(A=this.plugin.helpers.substructureParent.get(T.data))===null||A===void 0?void 0:A.obj)===null||x===void 0?void 0:x.data;if(R)if(!S?.data||i.Structure.areUnitIdsAndIndicesEqual(S.data,T.data)){this.entries.set(l,v(this.entries.get(l),R)),((M=this.referenceLoci)===null||M===void 0?void 0:M.structure.root)===R.root&&(this.referenceLoci=i.StructureElement.Loci.remap(this.referenceLoci,R));let E=!1;for(const I of this.state.additionsHistory)I.loci.structure.root===R.root&&(I.loci=i.StructureElement.Loci.remap(I.loci,R),E=!0);E&&this.events.additionsHistoryUpdated.next(void 0)}else this.entries.set(l,new m(i.StructureElement.Loci(R,[]))),((D=this.referenceLoci)===null||D===void 0?void 0:D.structure.root)===R.root&&(this.referenceLoci=void 0),this.clearHistoryForStructure(R),this.state.stats=void 0,this.events.changed.next(void 0)}clear(){const l=this.entries.keys(),S=[];for(;;){const T=l.next();if(T.done)break;const A=this.entries.get(T.value);i.StructureElement.Loci.isEmpty(A.selection)||S.push(A.selection),A.selection=i.StructureElement.Loci(A.selection.structure,[])}return this.referenceLoci=void 0,this.state.stats=void 0,this.events.changed.next(void 0),this.events.loci.clear.next(void 0),this.clearHistory(),S}getLoci(l){const S=this.getEntry(l);return S?S.selection:n.EmptyLoci}getStructure(l){const S=this.getEntry(l);if(S)return S.structure}structureHasSelection(l){var S,T;const A=(T=(S=l.cell)===null||S===void 0?void 0:S.obj)===null||T===void 0?void 0:T.data;if(!A)return!1;const x=this.getEntry(A);return!!x&&!i.StructureElement.Loci.isEmpty(x.selection)}has(l){if(i.StructureElement.Loci.is(l)){const S=this.getEntry(l.structure);if(S)return i.StructureElement.Loci.isSubset(S.selection,l)}return!1}tryGetRange(l){if(i.StructureElement.Loci.is(l)&&this.getEntry(l.structure))return b(this.referenceLoci,l)}elementCount(){let l=0;
7087return this.entries.forEach(S=>{l+=i.StructureElement.Loci.size(S.selection)}),l}getBoundary(){const l=r.Vec3.create(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),S=r.Vec3.create(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);a.reset();const T=[];this.entries.forEach(A=>{const x=A.selection;i.StructureElement.Loci.isEmpty(x)||T.push(i.StructureElement.Loci.getBoundary(x))});for(let A=0,x=T.length;A<x;++A){const{box:M,sphere:D}=T[A];r.Vec3.min(l,l,M.min),r.Vec3.max(S,S,M.max),a.includePositionRadius(D.center,D.radius)}a.finishedIncludeStep();for(let A=0,x=T.length;A<x;++A){const{sphere:M}=T[A];a.radiusPositionRadius(M.center,M.radius)}return{box:{min:l,max:S},sphere:a.getSphere()}}getPrincipalAxes(){const l=(0,g.iterableToArray)(this.entries.values());return i.StructureElement.Loci.getPrincipalAxesMany(l.map(S=>S.selection))}modify(l,S){let T=!1;switch(l){case"add":T=this.add(S);break;case"remove":T=this.remove(S);break;case"intersect":T=this.intersect(S);break;case"set":T=this.set(S);break}T&&(this.state.stats=void 0,this.events.changed.next(void 0))}get applicableStructures(){return this.plugin.managers.structure.hierarchy.selection.structures.filter(l=>!!l.cell.obj).map(l=>l.cell.obj.data)}triggerInteraction(l,S,T=!0){switch(l){case"add":this.plugin.managers.interactivity.lociSelects.select({loci:S},T);break;case"remove":this.plugin.managers.interactivity.lociSelects.deselect({loci:S},T);break;case"intersect":this.plugin.managers.interactivity.lociSelects.selectJoin({loci:S},T);break;case"set":this.plugin.managers.interactivity.lociSelects.selectOnly({loci:S},T);break}}fromLoci(l,S,T=!0){this.triggerInteraction(l,S,T)}fromCompiledQuery(l,S,T=!0){for(const A of this.applicableStructures){const x=S(new i.QueryContext(A));this.triggerInteraction(l,i.StructureSelection.toLociWithSourceUnits(x),T)}}fromSelectionQuery(l,S,T=!0){this.plugin.runTask(o.Task.create("Structure Selection",async A=>{for(const x of this.applicableStructures){const M=await S.getSelection(this.plugin,A,x);this.triggerInteraction(l,i.StructureSelection.toLociWithSourceUnits(M),T)}}))}fromSelections(l){var S;const T=c.StateObjectRef.resolveAndCheck(this.plugin.state.data,l);if(!(!T||!T.obj)){if(!y.PluginStateObject.Molecule.Structure.Selections.is(T.obj)){console.warn("fromSelections applied to wrong object type.",T.obj);return}this.clear();for(const A of(S=T.obj)===null||S===void 0?void 0:S.data)this.fromLoci("set",A.loci)}}getSnapshot(){const l=[];return this.entries.forEach((S,T)=>{l.push({ref:T,bundle:i.StructureElement.Bundle.fromLoci(S.selection)})}),{entries:l}}setSnapshot(l){var S,T;this.entries.clear();for(const{ref:A,bundle:x}of l.entries){const M=(T=(S=this.plugin.state.data.select(c.StateSelection.Generators.byRef(A))[0])===null||S===void 0?void 0:S.obj)===null||T===void 0?void 0:T.data;if(!M)continue;const D=i.StructureElement.Bundle.toLoci(x,M);this.fromLoci("set",D,!1)}}constructor(l){super({entries:new Map,additionsHistory:[],stats:u()}),this.plugin=l,this.events={changed:this.ev(),additionsHistoryUpdated:this.ev(),loci:{add:this.ev(),remove:this.ev(),clear:this.ev()}},l.helpers.substructureParent.events.removed.subscribe(S=>this.onRemove(S.ref,S.obj)),l.helpers.substructureParent.events.updated.subscribe(S=>this.onUpdate(S.ref,S.oldObj,S.obj))}}of.StructureSelectionManager=p;function u(){return{structureCount:0,elementCount:0,label:"Nothing Selected"}}class m{get selection(){return this._selection}set selection(l){this._selection=l,this._structure=void 0}get structure(){return this._structure?this._structure:(n.Loci.isEmpty(this._selection)?this._structure=void 0:this._structure=i.StructureElement.Loci.toStructure(this._selection),this._structure)}constructor(l){this._structure=void 0,this._selection=l}}function v(C,l){return new m(i.StructureElement.Loci.remap(C.selection,l))}function b(C,l){if(!i.StructureElement.Loci.is(C)||!i.StructureElement.Loci.is(l)||C.structure!==l.structure||l.elements.length!==1)return;const S=l.elements[0];if(!S)return;let T;for(const A of C.elements)if(S.unit===A.unit){T=A;break}if(T&&S.unit===T.unit)return P(l.structure,T,S)}function P(C,l,S){const T=Math.min(e.OrderedSet.min(l.indices),e.OrderedSet.min(S.indices)),A=Math.max(e.OrderedSet.max(l.indices),e.OrderedSet.max(S.indices));return i.StructureElement.Loci(C,[{unit:l.unit,indices:e.OrderedSet.ofRange(T,A)}])}return of}var P7;function Rce(){if(P7)return a_;
7087P7=1,Object.defineProperty(a_,"__esModule",{value:!0}),a_.StructureFocusManager=void 0;const e=rt(),t=Ge(),r=gt(),n=Ke(),i=Et(),c=_a(),o=Vt(),s=Vi(),h=jt(),f=gZ(),y=8;class _ extends s.StatefulPluginComponent{get current(){return this.state.current}get history(){return this.state.history}tryAddHistory(d){if(n.StructureElement.Loci.isEmpty(d.loci))return;let p=0,u;for(const m of this.state.history){if(n.StructureElement.Loci.areEqual(m.loci,d.loci)){u=m;break}p++}if(u){(0,o.arrayRemoveAtInPlace)(this.state.history,p),this.state.history.unshift(d),this.events.historyUpdated.next(void 0);return}this.state.history.unshift(d),this.state.history.length>y&&this.state.history.pop(),this.events.historyUpdated.next(void 0)}set(d){this.tryAddHistory(d),(!this.state.current||!n.StructureElement.Loci.areEqual(this.state.current.loci,d.loci))&&(this.state.current=d,this.behaviors.current.next(d))}tryGetRange(d){return(0,f.getLociRange)(this.referenceLoci,d)}setFromLoci(d){const p=r.Loci.normalize(d);if(!n.StructureElement.Loci.is(p)||n.StructureElement.Loci.isEmpty(p)){this.clear();return}this.set({loci:p,label:(0,c.lociLabel)(p,{reverse:!0,hidePrefix:!0,htmlStyling:!1})}),this.referenceLoci=p}addFromLoci(d){const p=this.state.current&&n.StructureElement.Loci.is(d)&&d.structure===this.state.current.loci.structure?n.StructureElement.Loci.union(d,this.state.current.loci):d;this.setFromLoci(p);const u=r.Loci.normalize(d);this.referenceLoci=n.StructureElement.Loci.is(u)?u:void 0}toggleFromLoci(d){var p;const{kind:u,loci:m}=g((p=this.state.current)===null||p===void 0?void 0:p.loci,d);this.setFromLoci(m);const v=r.Loci.normalize(d);this.referenceLoci=n.StructureElement.Loci.is(v)&&u!=="subtract"?v:void 0}extendFromLoci(d){var p;const u=(p=this.tryGetRange(d))!==null&&p!==void 0?p:d;this.toggleFromLoci(u)}clear(){this.state.current&&(this.state.current=void 0,this.behaviors.current.next(void 0)),this.referenceLoci=void 0}getSnapshot(){if(!this.current)return{};const d=this.plugin.helpers.substructureParent.get(this.current.loci.structure),p=d?.transform.ref;return p?{current:{label:this.current.label,ref:p,bundle:n.StructureElement.Bundle.fromLoci(this.current.loci),category:this.current.category}}:{}}setSnapshot(d){var p,u;if(!d.current){this.clear();return}const{label:m,ref:v,bundle:b,category:P}=d.current,C=(u=(p=this.plugin.state.data.select(i.StateSelection.Generators.byRef(v))[0])===null||p===void 0?void 0:p.obj)===null||u===void 0?void 0:u.data;if(!C)return;const l=n.StructureElement.Bundle.toLoci(b,C);this.set({label:m,loci:l,category:P})}constructor(d){super({history:[]}),this.plugin=d,this.events={historyUpdated:this.ev()},this.behaviors={current:this.ev.behavior(void 0)},d.state.data.events.object.removed.subscribe(({obj:u})=>{var m;if(!h.PluginStateObject.Molecule.Structure.is(u))return;((m=this.current)===null||m===void 0?void 0:m.loci.structure)===u.data&&this.clear();const v=[];for(const b of this.history)b.loci.structure===u.data&&v.push(b);v.length!==this.history.length&&(this.history.length=0,this.history.push(...v),this.events.historyUpdated.next(void 0))});const p=(0,e.Sphere3D)();d.state.data.events.object.updated.subscribe(({oldData:u,obj:m,action:v})=>{var b;if(h.PluginStateObject.Molecule.Structure.is(m)&&u!==m.data&&v==="in-place"){const P=this.state.current,C=m.data;if(P&&P.loci.structure===u){const l=n.StructureElement.Loci.remap(P.loci,C);this.state.current={...P,loci:l},this.behaviors.current.next(this.state.current),r.Loci.getBoundingSphere(l,p);const S=(b=this.plugin.canvas3d)===null||b===void 0?void 0:b.camera,T=S.getTargetDistance(p.radius+4);(t.Vec3.distance(S.target,p.center)>p.radius||T>S.viewport.height/S.zoom)&&this.plugin.managers.camera.focusSphere(p,{durationMs:0})}}})}}a_.StructureFocusManager=_;function g(a,d){return a&&n.StructureElement.Loci.is(d)&&d.structure===a.structure?n.StructureElement.Loci.isSubset(a,d)?{kind:"subtract",loci:n.StructureElement.Loci.subtract(a,d)}:{kind:"add",loci:n.StructureElement.Loci.union(d,a)}:{kind:"new",loci:d}}return a_}var sf={},o_={},cf={},s_={},T7;
7087function Oce(){if(T7)return s_;T7=1,Object.defineProperty(s_,"__esModule",{value:!0}),s_.LRUCache=void 0;const e=zD();var t;return(function(r){function n(h,f){return{key:h,data:f}}function i(h){return{entries:(0,e.LinkedList)(),capacity:Math.max(1,h)}}r.create=i;function c(h,f){for(let y=h.entries.first;y;y=y.next)if(y.value.key===f)return h.entries.remove(y),h.entries.addLast(y.value),y.value.data}r.get=c;function o(h,f,y){let _;if(h.entries.count>=h.capacity){const g=h.entries.first;_=g.value.data,h.entries.remove(g)}return h.entries.addLast(n(f,y)),_}r.set=o;function s(h,f){for(let y=h.entries.first;y;y=y.next)if(y.value.key===f){h.entries.remove(y);break}}r.remove=s})(t||(s_.LRUCache=t={})),s_}var c_={},x7;function kce(){if(x7)return c_;x7=1,Object.defineProperty(c_,"__esModule",{value:!0}),c_.SingleAsyncQueue=void 0;class e{constructor(r=!1){this.isRunning=!1,this.queue=[],this.counter=0,this.log=r}enqueue(r){this.log&&console.log("SingleAsyncQueue enqueue",this.counter),this.queue[0]={id:this.counter,func:r},this.counter++,this.run()}async run(){if(this.isRunning)return;const r=this.queue.pop();if(r){this.isRunning=!0;try{this.log&&console.log("SingleAsyncQueue run",r.id),await r.func(),this.log&&console.log("SingleAsyncQueue complete",r.id)}finally{this.isRunning=!1,this.run()}}}}return c_.SingleAsyncQueue=e,c_}var A7;function yZ(){if(A7)return cf;A7=1,Object.defineProperty(cf,"__esModule",{value:!0}),cf.VolumeStreaming=void 0;const e=Ne(),t=jt(),r=sn(),n=rt(),i=Ge(),c=vt(),o=di(),s=Oce(),h=Ww(),f=Ti(),y=Tw(),_=Sn(),g=Et(),a=Ke(),d=gt(),p=Ha(),u=cI(),m=Rn(),v=kce();class b extends t.PluginStateObject.CreateBehavior({name:"Volume Streaming"}){}return cf.VolumeStreaming=b,(function(P){P.RootTag="volume-streaming-info";function C(D,V,R,E,I={}){var B,w,O,F;return e.ParamDefinition.Group({isoValue:r.Volume.createIsoValueParam((B=I.isoValue)!==null&&B!==void 0?B:R,E),color:e.ParamDefinition.Color((w=I.color)!==null&&w!==void 0?w:V),wireframe:e.ParamDefinition.Boolean((O=I.wireframe)!==null&&O!==void 0?O:!1),opacity:e.ParamDefinition.Numeric((F=I.opacity)!==null&&F!==void 0?F:.3,{min:0,max:1,step:.01})},{label:D,isExpanded:!0})}const l={byteOffset:0,rate:1,sampleCount:[1,1,1],valuesInfo:[{mean:0,min:-1,max:1,sigma:.1},{mean:0,min:-1,max:1,sigma:.1}]};function S(D={}){const{data:V,defaultView:R,channelParams:E}=D,I=new Map;V&&V.entries.forEach(O=>I.set(O.dataId,O));const B=V?V.entries.map(O=>[O.dataId,O.dataId]):[],w=V?V.entries[0].dataId:"";return{entry:e.ParamDefinition.Mapped(w,B,O=>e.ParamDefinition.Group(T({entryData:I.get(O),defaultView:R,structure:V&&V.structure,channelParams:E})))}}P.createParams=S;function T(D){const{entryData:V,defaultView:R,structure:E,channelParams:I={}}=D,B=V||{kind:"em",header:{sampling:[l],availablePrecisions:[{precision:0,maxVoxels:0}]},emDefaultContourLevel:r.Volume.IsoValue.relative(0)},w=E&&E.boundary.box||(0,n.Box3D)();return{view:e.ParamDefinition.MappedStatic(R||(B.kind==="em"?"auto":"selection-box"),{off:e.ParamDefinition.Group({}),box:e.ParamDefinition.Group({bottomLeft:e.ParamDefinition.Vec3(w.min),topRight:e.ParamDefinition.Vec3(w.max)},{description:"Static box defined by cartesian coords.",isFlat:!0}),"selection-box":e.ParamDefinition.Group({radius:e.ParamDefinition.Numeric(5,{min:0,max:50,step:.5},{description:"Radius in Å within which the volume is shown."}),bottomLeft:e.ParamDefinition.Vec3(i.Vec3.create(0,0,0),{},{isHidden:!0}),topRight:e.ParamDefinition.Vec3(i.Vec3.create(0,0,0),{},{isHidden:!0})},{description:"Box around focused element.",isFlat:!0}),"camera-target":e.ParamDefinition.Group({radius:e.ParamDefinition.Numeric(.5,{min:0,max:1,step:.05},{description:"Radius within which the volume is shown (relative to the field of view)."}),dynamicDetailLevel:A(B.header.availablePrecisions,0,{label:"Dynamic Detail"}),bottomLeft:e.ParamDefinition.Vec3(i.Vec3.create(0,0,0),{},{isHidden:!0}),topRight:e.ParamDefinition.Vec3(i.Vec3.create(0,0,0),{},{isHidden:!0})},{description:"Box around camera target.",isFlat:!0}),cell:e.ParamDefinition.Group({}
7087),auto:e.ParamDefinition.Group({radius:e.ParamDefinition.Numeric(5,{min:0,max:50,step:.5},{description:"Radius in Å within which the volume is shown."}),selectionDetailLevel:A(B.header.availablePrecisions,6,{label:"Selection Detail"}),isSelection:e.ParamDefinition.Boolean(!1,{isHidden:!0}),bottomLeft:e.ParamDefinition.Vec3(w.min,{},{isHidden:!0}),topRight:e.ParamDefinition.Vec3(w.max,{},{isHidden:!0})},{description:"Box around focused element.",isFlat:!0})},{options:P.ViewTypeOptions,description:'Controls what of the volume is displayed. "Off" hides the volume alltogether. "Bounded box" shows the volume inside the given box. "Around Interaction" shows the volume around the focused element/atom. "Whole Structure" shows the volume for the whole structure.'}),detailLevel:A(B.header.availablePrecisions,3),channels:B.kind==="em"?e.ParamDefinition.Group({em:C("EM",(0,c.Color)(6524815),B.emDefaultContourLevel||r.Volume.IsoValue.relative(1),B.header.sampling[0].valuesInfo[0],I.em)},{isFlat:!0}):e.ParamDefinition.Group({"2fo-fc":C("2Fo-Fc",(0,c.Color)(3367602),r.Volume.IsoValue.relative(1.5),B.header.sampling[0].valuesInfo[0],I["2fo-fc"]),"fo-fc(+ve)":C("Fo-Fc(+ve)",(0,c.Color)(3390259),r.Volume.IsoValue.relative(3),B.header.sampling[0].valuesInfo[1],I["fo-fc(+ve)"]),"fo-fc(-ve)":C("Fo-Fc(-ve)",(0,c.Color)(12268339),r.Volume.IsoValue.relative(-3),B.header.sampling[0].valuesInfo[1],I["fo-fc(-ve)"])},{isFlat:!0})}}P.createEntryParams=T;function A(D,V,R){return e.ParamDefinition.Select(Math.min(V,D.length-1),D.map((E,I)=>[I,`${I+1} [ ${Math.pow(E.maxVoxels,1/3)|0}^3 cells ]`]),{description:"Determines the maximum number of voxels. Depending on the size of the volume options are in the range from 1 (0.52M voxels) to 7 (25.17M voxels).",...R})}function x(D){return{entry:{name:D.entry.name,params:{detailLevel:D.entry.params.detailLevel,channels:D.entry.params.channels,view:{name:D.entry.params.view.name,params:{...D.entry.params.view.params}}}}}}P.copyParams=x,P.ViewTypeOptions=[["off","Off"],["box","Bounded Box"],["selection-box","Around Focus"],["camera-target","Around Camera"],["cell","Whole Structure"],["auto","Auto"]],P.ChannelTypeOptions=[["em","em"],["2fo-fc","2fo-fc"],["fo-fc(+ve)","fo-fc(+ve)"],["fo-fc(-ve)","fo-fc(-ve)"]];class M extends o.PluginBehavior.WithSubscribers{get info(){return this.infoMap.get(this.params.entry.name)}async queryData(V){let R=(0,h.urlCombine)(this.data.serverUrl,`${this.info.kind}/${this.info.dataId.toLowerCase()}`);if(V){const{min:L,max:U}=V;R+=`/box/${L.map(q=>Math.round(1e3*q)/1e3).join(",")}/${U.map(q=>Math.round(1e3*q)/1e3).join(",")}`}else R+="/cell";let E=this.params.entry.params.detailLevel;this.params.entry.params.view.name==="auto"&&this.params.entry.params.view.params.isSelection&&(E=this.params.entry.params.view.params.selectionDetailLevel),this.params.entry.params.view.name==="camera-target"&&V&&(E=this.decideDetail(V,this.params.entry.params.view.params.dynamicDetailLevel)),R+=`?detail=${E}`;const I=s.LRUCache.get(this.cache,R);if(I)return I.data;const B=p.Asset.getUrlAsset(this.plugin.managers.asset,R),w=await this.plugin.runTask(this.plugin.managers.asset.resolve(B,"binary")),O=await this.parseCif(w.data);if(!O)return;const F=s.LRUCache.set(this.cache,R,{data:O,asset:w});return F&&F.asset.dispose(),O}async parseCif(V){const R=await this.plugin.runTask(f.CIF.parseBinary(V));if(R.isError){this.plugin.log.error("VolumeStreaming, parsing CIF: "+R.toString());return}if(R.result.blocks.length<2){this.plugin.log.error("VolumeStreaming: Invalid data.");return}const E={};for(let I=1;I<R.result.blocks.length;I++){const B=R.result.blocks[I],w=f.CIF.schema.densityServer(B),O=await this.plugin.runTask((0,y.volumeFromDensityServerData)(w));E[B.header]=O}return E}async updateParams(V,R=!1){const E=x(this.params),I=E.entry.params.view.name;I!=="off"&&I!=="cell"&&(E.entry.params.view.params.bottomLeft=V?.min||i.Vec3.zero(),E.entry.params.view.params.topRight=V?.max||i.Vec3.zero()),I==="auto"&&(E.entry.params.view.params.isSelection=R);const B=this.plugin.state.data,w=B.build().to(this.ref).update(E);await _.PluginCommands.State.Update(this.plugin,{state:B,tree:w,options:{doNotUpdate
7087Current:!0}})}getStructureRoot(){return this.plugin.state.data.select(g.StateSelection.Generators.byRef(this.ref).rootOfType(t.PluginStateObject.Molecule.Structure))[0]}register(V){this.ref=V,this.subscribeObservable(this.plugin.state.events.object.removed,R=>{!t.PluginStateObject.Molecule.Structure.is(R.obj)||!a.StructureElement.Loci.is(this.lastLoci)||this.lastLoci.structure===R.obj.data&&(this.lastLoci=d.EmptyLoci)}),this.subscribeObservable(this.plugin.state.events.object.updated,R=>{!t.PluginStateObject.Molecule.Structure.is(R.oldObj)||!a.StructureElement.Loci.is(this.lastLoci)||this.lastLoci.structure===R.oldObj.data&&(this.lastLoci=d.EmptyLoci)}),this.subscribeObservable(this.plugin.managers.structure.focus.behaviors.current,R=>{if(!this.plugin.state.data.tree.children.has(this.ref))return;const E=R?R.loci:d.EmptyLoci;switch(this.params.entry.params.view.name){case"auto":this.updateAuto(E);break;case"selection-box":this.updateSelectionBox(E);break;default:this.lastLoci=E;break}})}unregister(){let V=this.cache.entries.first;for(;V;)V.value.data.asset.dispose(),V=V.next}isCameraTargetSame(V,R){if(!V||!R)return!1;const E=i.Vec3.equals(V.target,R.target),I=i.Vec3.squaredDistance(V.target,V.position),B=i.Vec3.squaredDistance(R.target,R.position),w=Math.abs(I-B)/I<.001;return E&&w}cameraTargetDistance(V){return i.Vec3.distance(V.target,V.position)}getBoxFromLoci(V){var R,E,I;if(d.Loci.isEmpty(V)||(0,d.isEmptyLoci)(V))return(0,n.Box3D)();const B=this.plugin.helpers.substructureParent.get(V.structure,!0);if(!B)return(0,n.Box3D)();const w=this.getStructureRoot();if(!w||((R=w.obj)===null||R===void 0?void 0:R.data)!==((E=B.obj)===null||E===void 0?void 0:E.data))return(0,n.Box3D)();const O=u.GlobalModelTransformInfo.get((I=w.obj)===null||I===void 0?void 0:I.data.models[0]);O&&i.Mat4.invert(this._invTransform,O);const F=a.StructureElement.Loci.extendToWholeResidues(V),L=a.StructureElement.Loci.getBoundary(F).box;return O&&!Number.isNaN(this._invTransform[0])&&n.Box3D.transform(L,L,this._invTransform),a.StructureElement.Loci.size(F)===1&&n.Box3D.expand(L,L,i.Vec3.create(1,1,1)),L}updateAuto(V){this.updateQueue.enqueue(async()=>{this.lastLoci=V,(0,d.isEmptyLoci)(V)?await this.updateParams(this.info.kind==="x-ray"?this.data.structure.boundary.box:void 0,!1):await this.updateParams(this.getBoxFromLoci(V),!0)})}updateSelectionBox(V){this.updateQueue.enqueue(async()=>{d.Loci.areEqual(this.lastLoci,V)?this.lastLoci=d.EmptyLoci:this.lastLoci=V;const R=this.getBoxFromLoci(this.lastLoci);await this.updateParams(R)})}updateCameraTarget(V){this.updateQueue.enqueue(async()=>{var R,E,I;const B=(R=this.plugin.canvas3d)===null||R===void 0?void 0:R.props.camera.manualReset;try{B||(E=this.plugin.canvas3d)===null||E===void 0||E.setProps({camera:{manualReset:!0}});const w=this.boxFromCameraTarget(V,!0);await this.updateParams(w)}finally{B||(I=this.plugin.canvas3d)===null||I===void 0||I.setProps({camera:{manualReset:B}})}})}boxFromCameraTarget(V,R){var E;const I=V.target,B=this.cameraTargetDistance(V);let O=Math.tan(.5*V.fov)*B;const F=(E=this.plugin.canvas3d)===null||E===void 0?void 0:E.camera.viewport;F&&F.width>F.height&&(O*=F.width/F.height);const L=this.params.entry.params.view.name==="camera-target"?this.params.entry.params.view.params.radius:.5;O*=L;let U,q,N;if(R){const k=i.Vec3.zero();n.Box3D.size(k,this.data.structure.boundary.box),U=Math.min(O,.5*k[0]),q=Math.min(O,.5*k[1]),N=Math.min(O,.5*k[2])}else U=q=N=O;return n.Box3D.create(i.Vec3.create(I[0]-U,I[1]-q,I[2]-N),i.Vec3.create(I[0]+U,I[1]+q,I[2]+N))}decideDetail(V,R){const E=this.info.kind==="x-ray"?n.Box3D.volume(this.data.structure.boundary.box):this.info.header.spacegroup.size.reduce((F,L)=>F*L,1);let B=n.Box3D.volume(V)/E;const w=this.info.header.availablePrecisions.length-1;let O=R;for(;B<=.5&&O<w;)B*=2,O+=1;return O}async update(V){const R=V.entry.params.view.name==="selection-box"&&this.params&&this.params.entry&&this.params.entry.params&&this.params.entry.params.view&&this.params.entry.params.view.name!=="selection-box";this.params=V;let E,I=!1;switch(V.entry.params.view.name!=="camera-target"&&this.cameraTargetSubscription&&(this.cameraTargetSubscription.unsubscribe(),this.cameraTargetSubscription=void 0),V.entry.params.view.name){case"off":I=!0;break;case"box":E=n.Box3D.create(V.entry.params.view.params.bottomLeft,V.entry.params.view.params.topRight),I=n.Box3D.volume(E)<1e-4;break;case"selection-box":{R?E=this.getBoxFromLoci(this.lastLoci)||(0,n.Box3D)():E=n.Box3D.create(i.Vec3.clone(V.entry.params.view.params.bottomLeft),i.Vec3.clone(V.entry.params.view.params.topRight));const O=V.entry.params.view.params.radius;I=n.Box3D.volume(E)<1e-4,n.Box3D.expand(E,E,i.Vec3.create(O,O,O));break}case"camera-target":this.cameraTargetSubscription||(this.cameraTargetSubscription=this.subscribeOb
7087servable(this.cameraTargetObservable,O=>this.updateCameraTarget(O))),E=this.boxFromCameraTarget(this.plugin.canvas3d.camera.getSnapshot(),!0);break;case"cell":E=this.info.kind==="x-ray"?this.data.structure.boundary.box:void 0;break;case"auto":if(E=V.entry.params.view.params.isSelection||this.info.kind==="x-ray"?n.Box3D.create(i.Vec3.clone(V.entry.params.view.params.bottomLeft),i.Vec3.clone(V.entry.params.view.params.topRight)):void 0,E&&(I=n.Box3D.volume(E)<1e-4,V.entry.params.view.params.isSelection)){const O=V.entry.params.view.params.radius;n.Box3D.expand(E,E,i.Vec3.create(O,O,O))}break}const B=I?{}:await this.queryData(E);if(!B)return!1;const w=V.entry.params.channels;return this.info.kind==="x-ray"?(this.channels["2fo-fc"]=this.createChannel(B["2FO-FC"]||r.Volume.One,w["2fo-fc"],this.info.header.sampling[0].valuesInfo[0]),this.channels["fo-fc(+ve)"]=this.createChannel(B["FO-FC"]||r.Volume.One,w["fo-fc(+ve)"],this.info.header.sampling[0].valuesInfo[1]),this.channels["fo-fc(-ve)"]=this.createChannel(B["FO-FC"]||r.Volume.One,w["fo-fc(-ve)"],this.info.header.sampling[0].valuesInfo[1])):this.channels.em=this.createChannel(B.EM||r.Volume.One,w.em,this.info.header.sampling[0].valuesInfo[0]),!0}createChannel(V,R,E){const I=R;return{data:V,color:I.color,wireframe:I.wireframe,opacity:I.opacity,isoValue:I.isoValue.kind==="relative"?I.isoValue:r.Volume.IsoValue.toRelative(I.isoValue,E)}}getDescription(){return this.params.entry.params.view.name==="selection-box"?"Selection":this.params.entry.params.view.name==="camera-target"?"Camera":this.params.entry.params.view.name==="box"?"Static Box":this.params.entry.params.view.name==="cell"?"Cell":""}constructor(V,R){super(V,{}),this.plugin=V,this.data=R,this.cache=s.LRUCache.create(25),this.params={},this.lastLoci=d.EmptyLoci,this.ref="",this.cameraTargetObservable=this.plugin.canvas3d.didDraw.pipe((0,m.throttleTime)(500,void 0,{leading:!0,trailing:!0}),(0,m.map)(()=>{var E;return(E=this.plugin.canvas3d)===null||E===void 0?void 0:E.camera.getSnapshot()}),(0,m.distinctUntilChanged)((E,I)=>this.isCameraTargetSame(E,I)),(0,m.filter)(E=>E!==void 0)),this.cameraTargetSubscription=void 0,this.channels={},this._invTransform=(0,i.Mat4)(),this.infoMap=new Map,this.data.entries.forEach(E=>this.infoMap.set(E.dataId,E)),this.updateQueue=new v.SingleAsyncQueue}}P.Behavior=M})(b||(cf.VolumeStreaming=b={})),cf}var M7;function Fce(){if(M7)return o_;M7=1,Object.defineProperty(o_,"__esModule",{value:!0}),o_.buildStructureHierarchy=i,o_.StructureHierarchy=c;const e=jt(),t=Et(),r=Dr(),n=yZ();function i(E,I){const B=v(E,I||c());return R(E.tree,B),I&&I.refs.forEach(M,B),{hierarchy:B.hierarchy,added:B.added,changed:B.changed}}function c(){return{trajectories:[],models:[],structures:[],refs:new Map}}function o(E){return{kind:"trajectory",cell:E,version:E.transform.version,models:[]}}function s(E,I){return{kind:"model",cell:E,version:E.transform.version,trajectory:I,structures:[]}}function h(E,I){return{kind:"model-properties",cell:E,version:E.transform.version,model:I}}function f(E,I){return{kind:"model-unitcell",cell:E,version:E.transform.version,model:I}}function y(E,I){return{kind:"structure",cell:E,version:E.transform.version,model:I,components:[]}}function _(E,I){return{kind:"structure-properties",cell:E,version:E.transform.version,structure:I}}function g(E,I){return{kind:"structure-transform",cell:E,version:E.transform.version,structure:I}}function a(E,I){return{kind:"structure-volume-streaming",cell:E,version:E.transform.version,structure:I}}function d(E){return E.transform.tags?[...E.transform.tags].sort().join():E.transform.ref}function p(E,I){return{kind:"structure-component",cell:E,version:E.transform.version,structure:I,key:d(E),representations:[]}}function u(E,I){return{kind:"structure-representation",cell:E,version:E.transform.version,component:I}}function m(E,I){return{kind:"generic-representation",cell:E,version:E.transform.version,parent:I}}function v(E,I){return{state:E,oldHierarchy:I,hierarchy:c(),changed:!1,added:new Set}}function b(E,I,B,w,...O){const F=w(...O);B.push(F),E.hierarchy.refs.set(I.transform.ref,F);const L=E.oldHierarchy.refs.get(I.transform.ref);return L?L.version!==I.transform.version&&(E.changed=!0):(E.added.add(F.cell.transform.ref),E.changed=!0),F}function P(E,I,B,...w){const O=B(...w);E.hierarchy.refs.set(I.transform.ref,O);const F=E.oldHierarchy.refs.get(I.transform.ref);return F?F.version!==I.transform.version&&(E.changed=!0):(E.added.add(O.cell.transform.ref),E.changed=!0),O}function C(E){return I=>E.is(I.obj)}function l(E,I){return(B,w)=>!I(w)&&E.is(B.obj)}function S(E){return I=>I.transform.transformer===E}function T(){}const A=[[C(e.PluginStateObject.Molecule.Trajectory),(E,I)=>{E.currentTrajectory=b(E,I,E.hierarchy.trajectories,o,I)},E=>E.currentTrajectory=void 0],[l(e.PluginStateObject.Molecule.Model,E=>E.currentModel),(E,I)=>{E.currentTrajectory?E.currentModel=b(E,I,E.currentTrajectory.models,s,I,E.currentTrajectory):E.currentModel=P
7087(E,I,s,I),E.hierarchy.models.push(E.currentModel)},E=>E.currentModel=void 0],[S(r.StateTransforms.Model.CustomModelProperties),(E,I)=>{if(!E.currentModel)return!1;E.currentModel.properties=P(E,I,h,I,E.currentModel)},T],[S(r.StateTransforms.Representation.ModelUnitcell3D),(E,I)=>{if(!E.currentModel)return!1;E.currentModel.unitcell=P(E,I,f,I,E.currentModel)},T],[l(e.PluginStateObject.Molecule.Structure,E=>E.currentStructure),(E,I)=>{E.currentModel?E.currentStructure=b(E,I,E.currentModel.structures,y,I,E.currentModel):E.currentStructure=P(E,I,y,I),E.hierarchy.structures.push(E.currentStructure)},E=>E.currentStructure=void 0],[S(r.StateTransforms.Model.CustomStructureProperties),(E,I)=>{if(!E.currentStructure)return!1;E.currentStructure.properties=P(E,I,_,I,E.currentStructure)},T],[S(r.StateTransforms.Model.TransformStructureConformation),(E,I)=>{if(!E.currentStructure)return!1;E.currentStructure.transform=P(E,I,g,I,E.currentStructure)},T],[C(n.VolumeStreaming),(E,I)=>(E.currentStructure&&(E.currentStructure.volumeStreaming=P(E,I,a,I,E.currentStructure)),!1),T],[(E,I)=>!I.currentStructure||E.transform.transformer.definition.isDecorator?!1:e.PluginStateObject.Molecule.Structure.is(E.obj),(E,I)=>{E.currentStructure&&(E.currentComponent&&(E.parentComponents||(E.parentComponents=[]),E.parentComponents.push(E.currentComponent)),E.currentComponent=b(E,I,E.currentStructure.components,p,I,E.currentStructure))},E=>{E.parentComponents&&E.parentComponents.length>0?E.currentComponent=E.parentComponents.pop():E.currentComponent=void 0}],[(E,I)=>!E.state.isGhost&&!!I.currentComponent&&e.PluginStateObject.Molecule.Structure.Representation3D.is(E.obj),(E,I)=>(E.currentComponent&&b(E,I,E.currentComponent.representations,u,I,E.currentComponent),!1),T],[E=>!E.state.isGhost&&e.PluginStateObject.isRepresentation3D(E.obj),(E,I)=>{const B=E.currentComponent||E.currentStructure||E.currentModel;B&&(B.genericRepresentations||(B.genericRepresentations=[]),b(E,I,B.genericRepresentations,m,I,B))},T]];function x(E){if(!E||!E?.parent||!E.parent.cells.has(E.transform.ref))return!1;const{obj:I}=E;return!(!I||I===t.StateObject.Null||E.status!=="ok"&&E.status!=="error")}function M(E){const{cell:I}=E;x(I)||(this.changed=!0)}function D(E){V(this,this.tree.transforms.get(E))}function V(E,I){const{state:B}=E,w=B.state.cells.get(I.ref);if(!x(w))return;let O,F=!1;for(const[U,q,N]of A)if(U(w,B)){if(q(B,w)===!1){F=!0;break}O=N;break}if(F)return;const L=E.tree.children.get(I.ref);L&&L.size&&L.forEach(D,E),O&&O(B)}function R(E,I){const B={tree:E,state:I};return V(B,E.root),B.state}return o_}var D7;function Lce(){if(D7)return sf;D7=1,Object.defineProperty(sf,"__esModule",{value:!0}),sf.StructureHierarchyManager=void 0;const e=eC(),t=Sn(),r=Et(),n=Hi(),i=Vi(),c=jt(),o=Fce();class s extends i.PluginComponent{get dataState(){return this.plugin.state.data}get currentComponentGroups(){return this._currentComponentGroups?this._currentComponentGroups:(this._currentComponentGroups=s.getComponentGroups(this.selection.structures),this._currentComponentGroups)}get seletionSet(){if(this._currentSelectionSet)return this._currentSelectionSet;this._currentSelectionSet=new Set;for(const f of this.selection.trajectories)this._currentSelectionSet.add(f.cell.transform.ref);for(const f of this.selection.models)this._currentSelectionSet.add(f.cell.transform.ref);for(const f of this.selection.structures)this._currentSelectionSet.add(f.cell.transform.ref);return this._currentSelectionSet}get current(){return this.sync(!1),this.state.hierarchy}get selection(){return this.sync(!1),this.state.selection}getStructuresWithSelection(){const f=this.plugin.managers.structure.hierarchy.current.structures,y=[];for(const _ of f)this.plugin.managers.structure.selection.structureHasSelection(_)&&y.push(_);return y}findStructure(f){if(!f)return;const y=this.plugin.helpers.substructureParent.get(f);if(!y)return;const _=this.plugin.state.data.selectQ(g=>g.byValue(y).rootOfType(c.PluginStateObject.Molecule.Structure))[0];if(_)return this.behaviors.selection.value.structures.find(g=>g.cell===_)}syncCurrent(f,y){const _=this.seletionSet,g=[];for(const a of f){const d=a.cell.transform.ref;(_.has(d)||y.has(d))&&g.push(a)}return g.length===0?f.length>0?[f[0]]:[]:g}
7087sync(f){if(!f&&this.dataState.inUpdate)return;if(this.state.syncedTree===this.dataState.tree){f&&!this.state.notified&&(this.state.notified=!0,this.behaviors.selection.next({hierarchy:this.state.hierarchy,...this.state.selection}));return}this.state.syncedTree=this.dataState.tree;const y=(0,o.buildStructureHierarchy)(this.plugin.state.data,this.current);if(!y.changed)return;const{hierarchy:_}=y,g=this.syncCurrent(_.trajectories,y.added),a=this.syncCurrent(_.models,y.added),d=this.syncCurrent(_.structures,y.added);this._currentComponentGroups=void 0,this._currentSelectionSet=void 0,this.state.hierarchy=_,this.state.selection.trajectories=g,this.state.selection.models=a,this.state.selection.structures=d,f?(this.state.notified=!0,this.behaviors.selection.next({hierarchy:_,trajectories:g,models:a,structures:d})):this.state.notified=!1}updateCurrent(f,y){const _=this.current,g=y==="add"?n.SetUtils.union(this.seletionSet,new Set(f.map(u=>u.cell.transform.ref))):n.SetUtils.difference(this.seletionSet,new Set(f.map(u=>u.cell.transform.ref))),a=[],d=[],p=[];for(const u of _.trajectories)g.has(u.cell.transform.ref)&&a.push(u);for(const u of _.models)g.has(u.cell.transform.ref)&&d.push(u);for(const u of _.structures)g.has(u.cell.transform.ref)&&p.push(u);this._currentComponentGroups=void 0,this._currentSelectionSet=void 0,this.state.selection.trajectories=a,this.state.selection.models=d,this.state.selection.structures=p,this.behaviors.selection.next({hierarchy:_,trajectories:a,models:d,structures:p})}remove(f,y){if(f.length===0)return;const _=this.plugin.state.data.build();for(const g of f)_.delete(typeof g=="string"?g:g.cell.transform.ref);return _.commit({canUndo:y?"Remove":!1})}toggleVisibility(f,y){if(f.length===0)return;const _=y!==void 0?y!=="show":!f[0].cell.state.isHidden;for(const g of f)(0,e.setSubtreeVisibility)(this.dataState,g.cell.transform.ref,_)}applyPreset(f,y,_){return this.plugin.dataTransaction(async()=>{for(const g of f)g.models.length>0&&await this.clearTrajectory(g),await this.plugin.builders.structure.hierarchy.applyPreset(g.cell,y,_)})}async updateStructure(f,y){await this.plugin.dataTransaction(async()=>{const _=r.StateTree.getDecoratorRoot(this.dataState.tree,f.cell.transform.ref),g=this.dataState.tree.children.get(_).toArray();await this.remove(g,!1),await this.plugin.state.updateTransform(this.plugin.state.data,f.cell.transform.ref,y,"Structure Type"),await this.plugin.builders.structure.representation.applyPreset(f.cell.transform.ref,"auto")},{canUndo:"Structure Type"}),t.PluginCommands.Camera.Reset(this.plugin)}clearTrajectory(f){const y=this.dataState.build();for(const _ of f.models)y.delete(_.cell);return y.commit()}constructor(f){super(),this.plugin=f,this.state={syncedTree:this.dataState.tree,notified:!1,hierarchy:(0,o.StructureHierarchy)(),selection:{trajectories:[],models:[],structures:[]}},this.behaviors={selection:this.ev.behavior({hierarchy:this.current,trajectories:this.selection.trajectories,models:this.selection.models,structures:this.selection.structures})},this._currentComponentGroups=void 0,this._currentSelectionSet=void 0,this.subscribe(f.state.data.events.changed,y=>{y.inTransaction||f.behaviors.state.isAnimating.value||this.sync(!0)}),this.subscribe(f.behaviors.state.isAnimating,y=>{!y&&!f.behaviors.state.isUpdating.value&&this.sync(!0)})}}return sf.StructureHierarchyManager=s,(function(h){function f(_){if(!_.length)return[];if(_.length===1)return _[0].components.map(d=>[d]);const g=[],a=new Map;for(const d of _)for(const p of d.components){const u=p.key;if(!u)continue;let m=a.get(u);m||(m=[],a.set(u,m),g.push(m)),m.push(p)}return g}h.getComponentGroups=f;function y(_){var g,a,d,p,u,m,v,b,P;const{structures:C}=_.managers.structure.hierarchy.selection;if(C.length===0)return"";if(C.length===1){const A=C[0],x=(g=A.cell.obj)===null||g===void 0?void 0:g.data;if(!x)return((a=A.cell.obj)===null||a===void 0?void 0:a.label)||"Structure";const M=x.models[0]||x.representativeModel||x.masterModel;if(!M)return((d=A.cell.obj)===null||d===void 0?void 0:d.label)||"Structure";const D=M.entryId;return!((u=(p=A.model)===null||p===void 0?void 0:p.trajectory)===null||u===void 0)&&u.models&&A.model.trajectory.models.length===1?D:A.model?`${(m=A.model.cell.obj)===null||m===void 0?void 0:m.label} | ${D}`:D}const l=C[0],S=(v=l?.model)===null||v===void 0?void 0:v.trajectory;let T=!0;for(const A of C)if(((b=A?.model)===null||b===void 0?void 0:b.trajectory)!==S){T=!1;break}return T&&S?`${(P=S.cell.obj)===null||P===void 0?void 0:P.label} | ${C.length} structures`:`${C.length} structures`}
7087h.getSelectedStructuresDescription=y})(s||(sf.StructureHierarchyManager=s={})),sf}var fM={},I7;function Nce(){return I7||(I7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureMeasurementParams=e.MeasurementOrderLabelTag=e.MeasurementGroupTag=e.StructureMeasurementManager=void 0;const t=Ke(),r=Et(),n=Dr(),i=Sn(),c=Vt(),o=jt(),s=Vi(),h=Ne(),f=GS(),y=vt();e.MeasurementGroupTag="measurement-group",e.MeasurementOrderLabelTag="measurement-order-label",e.StructureMeasurementParams={distanceUnitLabel:h.ParamDefinition.Text("Å",{isEssential:!0}),textColor:f.MeasurementRepresentationCommonTextParams.textColor};const _=h.ParamDefinition.getDefaultValues(e.StructureMeasurementParams);function g(d){return{bundle:t.StructureElement.Bundle.fromLoci(d)}}class a extends s.StatefulPluginComponent{stateUpdated(){this.behaviors.state.next(this.state)}getGroup(){const p=this.plugin.state.data,u=r.StateSelection.findTagInSubtree(p.tree,r.StateTransform.RootRef,e.MeasurementGroupTag),m=this.plugin.state.data.build();return u?m.to(u):m.toRoot().group(n.StateTransforms.Misc.CreateGroup,{label:"Measurements"},{tags:e.MeasurementGroupTag})}async setOptions(p){this.updateState({options:p})&&this.stateUpdated();const u=this.plugin.state.data.build();for(const m of this.state.distances)u.to(m).update(v=>{v.unitLabel=p.distanceUnitLabel,v.textColor=p.textColor});for(const m of this.state.labels)u.to(m).update(v=>{v.textColor=p.textColor});for(const m of this.state.angles)u.to(m).update(v=>{v.textColor=p.textColor});for(const m of this.state.dihedrals)u.to(m).update(v=>{v.textColor=p.textColor});u.editInfo.count!==0&&await i.PluginCommands.State.Update(this.plugin,{state:this.plugin.state.data,tree:u,options:{doNotLogTiming:!0}})}async addDistance(p,u,m){const v=this.plugin.helpers.substructureParent.get(p.structure),b=this.plugin.helpers.substructureParent.get(u.structure);if(!v||!b)return;const P=[v.transform.ref];(0,c.arraySetAdd)(P,b.transform.ref);const l=this.getGroup().apply(n.StateTransforms.Model.MultiStructureSelectionFromBundle,{selections:[{key:"a",groupId:"a",ref:v.transform.ref,...g(p)},{key:"b",groupId:"b",ref:b.transform.ref,...g(u)}],isTransitive:!0,label:"Distance"},{dependsOn:P,tags:m?.selectionTags}),S=l.apply(n.StateTransforms.Representation.StructureSelectionsDistance3D,{customText:m?.customText||"",unitLabel:this.state.options.distanceUnitLabel,textColor:this.state.options.textColor,...m?.lineParams,...m?.labelParams,...m?.visualParams},{tags:m?.reprTags}),T=this.plugin.state.data;return await i.PluginCommands.State.Update(this.plugin,{state:T,tree:S,options:{doNotLogTiming:!0}}),{selection:l.selector,representation:S.selector}}async addAngle(p,u,m,v){const b=this.plugin.helpers.substructureParent.get(p.structure),P=this.plugin.helpers.substructureParent.get(u.structure),C=this.plugin.helpers.substructureParent.get(m.structure);if(!b||!P||!C)return;const l=[b.transform.ref];(0,c.arraySetAdd)(l,P.transform.ref),(0,c.arraySetAdd)(l,C.transform.ref);const T=this.getGroup().apply(n.StateTransforms.Model.MultiStructureSelectionFromBundle,{selections:[{key:"a",ref:b.transform.ref,...g(p)},{key:"b",ref:P.transform.ref,...g(u)},{key:"c",ref:C.transform.ref,...g(m)}],isTransitive:!0,label:"Angle"},{dependsOn:l,tags:v?.selectionTags}),A=T.apply(n.StateTransforms.Representation.StructureSelectionsAngle3D,{customText:v?.customText||"",textColor:this.state.options.textColor,...v?.lineParams,...v?.labelParams,...v?.visualParams},{tags:v?.reprTags}),x=this.plugin.state.data;return await i.PluginCommands.State.Update(this.plugin,{state:x,tree:A,options:{doNotLogTiming:!0}}),{selection:T.selector,representation:A.selector}}async addDihedral(p,u,m,v,b){const P=this.plugin.helpers.substructureParent.get(p.structure),C=this.plugin.helpers.substructureParent.get(u.structure),l=this.plugin.helpers.substructureParent.get(m.structure),S=this.plugin.helpers.substructureParent.get(v.structure);if(!P||!C||!l||!S)return;const T=[P.transform.ref];(0,c.arraySetAdd)(T,C.transform.ref),(0,c.arraySetAdd)(T,l.transform.ref),(0,c.arraySetAdd)(T,S.transform.ref);const x=this.getGroup().apply(n.StateTransforms.Model.MultiStructureSelectionFromBundle,{selections:[{key:"a",ref:P.transform.ref,...g(p)},{key:"b",ref:C.transform.ref,...g(u)},{key:"c",ref:l.transform.ref,...g(m)},{key:"d",ref:S.transform.ref,...g(v)}],isTransitive:!0,label:"Dihedral"},{dependsOn:T,tags:b?.selectionTags}),M=x.apply(n.StateTransforms.Representation.StructureSelectionsDihedral3D,{customText:b?.customText||"",textColor:this.state.options.textColor,...b?.lineParams,...b?.labelParams,...b?.visualParams},{tags:b?.reprTags}),D=this.plugin.state.data;return await i.PluginCommands.State.Update(this.plugin,{state:D,tree:M,options:{doNotLogTiming:!0}}),{selection:x.selector,representation:M.selector}}async addLabel(p,u){const m=this.plugin.helpers.substructureParent.get(p.structure);if(!m)return;const v=[m.transform.ref],P=this.getGroup().apply(n.StateTransforms.Model.MultiStructureSelectionFromBundle,{selections:[{key:"a",ref:m.transform.ref,...g(p)}],isTransitive:!0,label:"Label"},{dependsOn:v,tags:u?.selectionTags}),C=P.apply(n.StateTransforms.Representation.StructureSelectionsLabel3D,{textColor:this.state.options.textColor,...u?.labelParams,...u?.visualParams},{tags:u?.reprTags}),l=this.plugin.state.data;return await i.PluginCommands.State.Update(this.plugin,{state:l,tree:C,options:{doNotLogTiming:!0}}),{selection:P.selector,representation:C.selector}}async addOrientation(p){const u=[],m=[];for(let l=0,S=p.length;l<S;++l){const T=p[l],A=this.plugin.helpers.substructureParent.get(T.structure);A&&((0,c.arraySetAdd)(m,A.transform.ref),u.push({key:`l${l}`,ref:A.transform.ref,...g(T)}))}if(u.length===0)return;const b=this.getGroup().apply(n.StateTransforms.Model.MultiStructureSelectionFromBundle,{selections:u,isTransitive:!0,label:"Orientation"},{dependsOn:m}),P=b.apply(n.StateTransforms.Representation.StructureSelectionsOrientation3D),C=this.plugin.state.data;return await i.PluginCommands.State.Update(this.plugin,{state:C,tree:P,options:{doNotLogTiming:!0}}),{selection:b.selector,representation:P.selector}}async addPlane(p){const u=[],m=[];for(let l=0,S=p.length;l<S;++l){const T=p[l],A=this.plugin.helpers.substructureParent.get(T.structure);A&&((0,c.arraySetAdd)(m,A.transform.ref),u.push({key:`l${l}`,ref:A.transform.ref,...g(T)}))}if(u.length===0)return;const v=this.getGroup(),b=v.apply(n.StateTransforms.Model.MultiStructureSelectionFromBundle,{selections:u,isTransitive:!0,label:"Plane"},{dependsOn:m}),P=b.apply(n.StateTransforms.Representation.StructureSelectionsPlane3D),C=this.plugin.state.data;return await i.PluginCommands.State.Update(this.plugin,{state:C,tree:v,options:{doNotLogTiming:!0}}),{selection:b.selector,representation:P.selector}}async addOrderLabels(p){const u=this.getGroup(),m=this.plugin.state.data.select(r.StateSelection.Generators.ofType(o.PluginStateObject.Molecule.Structure.Selections).withTag(e.MeasurementOrderLabelTag));for(const P of m)u.delete(P);let v=1;for(const P of p){const C=this.plugin.helpers.substructureParent.get(P.structure);if(!C)continue;const l=[C.transform.ref];u.apply(n.StateTransforms.Model.MultiStructureSelectionFromBundle,{selections:[{key:"a",ref:C.transform.ref,...g(P)}],isTransitive:!0,label:"Order"},{dependsOn:l,tags:e.MeasurementOrderLabelTag}).apply(n.StateTransforms.Representation.StructureSelectionsLabel3D,{textColor:y.Color.fromRgb(255,255,255),borderColor:y.Color.fromRgb(0,0,0),textSize:.33,borderWidth:.3,offsetZ:.75,customText:`${v++}`},{tags:e.MeasurementOrderLabelTag})}const b=this.plugin.state.data;return await i.PluginCommands.State.Update(this.plugin,{state:b,tree:u,options:{doNotLogTiming:!0}}),{representation:u.selector}}getTransforms(p){const u=this.plugin.state.data,m=r.StateSelection.findTagInSubtree(u.tree,r.StateTransform.RootRef,e.MeasurementGroupTag),v=m?u.select(r.StateSelection.Generators.ofTransformer(p,m)):this._empty;return v.length===0?this._empty:v}sync(){const p=[];for(const m of this.getTransforms(n.StateTransforms.Representation.StructureSelectionsLabel3D)){const v=m.obj.tags;(!v||!v.includes(e.MeasurementOrderLabelTag))&&p.push(m)}this.updateState({labels:p,distances:this.getTransforms(n.StateTransforms.Representation.StructureSelectionsDistance3D),angles:this.getTransforms(n.StateTransforms.Representation.StructureSelectionsAngle3D),dihedrals:this.getTransforms(n.StateTransforms.Representation.StructureSelectionsDihedral3D),orientations:this.getTransforms(n.StateTransforms.Representation.StructureSelectionsOrientation3D),planes:this.getTransforms(n.StateTransforms.Representation.StructureSelectionsPlane3D)})&&this.stateUpdated()}constructor(p){super({labels:[],distances:[],angles:[],dihedrals:[],orientations:[],planes:[],options:_}),this.plugin=p,this.behaviors={state:this.ev.behavior(this.state)},this._empty=[],p.state.data.events.changed.subscribe(u=>{u.inTransaction||p.behaviors.state.isAnimating.value||this.sync()}),p.behaviors.state.isAnimating.subscribe(u=>{!u&&!p.behaviors.state.isUpdating.value&&this.sync()})}}e.StructureMeasurementManager=a})(fM)),fM}var uf={},u_={},w7;function qce(){if(w7)return u_;
7087w7=1,Object.defineProperty(u_,"__esModule",{value:!0}),u_.buildVolumeHierarchy=r,u_.VolumeHierarchy=n;const e=jt(),t=Et();function r(m,v){const b=s(m,v||n());return u(m.tree,b),v&&v.refs.forEach(a,b),{hierarchy:b.hierarchy,added:b.added,changed:b.changed}}function n(){return{volumes:[],lazyVolumes:[],refs:new Map}}function i(m){return{kind:"volume",cell:m,version:m.transform.version,representations:[]}}function c(m){return{kind:"lazy-volume",cell:m,version:m.transform.version}}function o(m,v){return{kind:"volume-representation",cell:m,version:m.transform.version,volume:v}}function s(m,v){return{state:m,oldHierarchy:v,hierarchy:n(),changed:!1,added:new Set}}function h(m,v,b,P,...C){const l=P(...C);b.push(l),m.hierarchy.refs.set(v.transform.ref,l);const S=m.oldHierarchy.refs.get(v.transform.ref);return S?S.version!==v.transform.version&&(m.changed=!0):(m.added.add(l.cell.transform.ref),m.changed=!0),l}function f(m,v){return(b,P)=>!v(P)&&m.is(b.obj)}function y(){}const _=[[f(e.PluginStateObject.Volume.Data,m=>m.currentVolume),(m,v)=>{m.currentVolume=h(m,v,m.hierarchy.volumes,i,v)},m=>m.currentVolume=void 0],[m=>e.PluginStateObject.Volume.Lazy.is(m.obj),(m,v)=>{h(m,v,m.hierarchy.lazyVolumes,c,v)},y],[(m,v)=>!m.state.isGhost&&!!v.currentVolume&&e.PluginStateObject.Volume.Representation3D.is(m.obj),(m,v)=>(m.currentVolume&&h(m,v,m.currentVolume.representations,o,v,m.currentVolume),!1),y]];function g(m){if(!m||!m?.parent||!m.parent.cells.has(m.transform.ref))return!1;const{obj:v}=m;return!(!v||v===t.StateObject.Null||m.status!=="ok"&&m.status!=="error")}function a(m){const{cell:v}=m;g(v)||(this.changed=!0)}function d(m){p(this,this.tree.transforms.get(m))}function p(m,v){const{state:b}=m,P=b.state.cells.get(v.ref);if(!g(P))return;let C,l=!1;for(const[T,A,x]of _)if(T(P,b)){if(A(b,P)===!1){l=!0;break}C=x;break}if(l)return;const S=m.tree.children.get(v.ref);S&&S.size&&S.forEach(d,m),C&&C(b)}function u(m,v){const b={tree:m,state:v};return p(b,m.root),b.state}return u_}var V7;function Uce(){if(V7)return uf;V7=1,Object.defineProperty(uf,"__esModule",{value:!0}),uf.VolumeHierarchyManager=void 0;const e=eC(),t=Vi(),r=qce(),n=dZ(),i=Dr();class c extends t.PluginComponent{get dataState(){return this.plugin.state.data}get current(){return this.sync(!1),this.state.hierarchy}get selection(){return this.sync(!1),this.state.selection}sync(s){if(!s&&this.dataState.inUpdate)return;if(this.state.syncedTree===this.dataState.tree){s&&!this.state.notified&&(this.state.notified=!0,this.behaviors.selection.next({hierarchy:this.state.hierarchy,volume:this.state.selection}));return}this.state.syncedTree=this.dataState.tree;const h=(0,r.buildVolumeHierarchy)(this.plugin.state.data,this.current);if(!h.changed)return;const{hierarchy:f}=h;this.state.hierarchy=f,this.state.selection?this.state.selection=f.refs.has(this.state.selection.cell.transform.ref)?f.refs.get(this.state.selection.cell.transform.ref):f.volumes[0]:this.state.selection=f.volumes[0],s?(this.state.notified=!0,this.behaviors.selection.next({hierarchy:f,volume:this.state.selection})):this.state.notified=!1}setCurrent(s){this.state.selection=s||this.state.hierarchy.volumes[0],this.behaviors.selection.next({hierarchy:this.state.hierarchy,volume:s||this.state.hierarchy.volumes[0]})}remove(s,h){if(s.length===0)return;const f=this.plugin.state.data.build();for(const y of s)f.delete(typeof y=="string"?y:y.cell.transform.ref);return f.commit({canUndo:h?"Remove":!1})}toggleVisibility(s,h){if(s.length===0)return;const f=h!==void 0?h!=="show":!s[0].cell.state.isHidden;for(const y of s)(0,e.setSubtreeVisibility)(this.dataState,y.cell.transform.ref,f)}addRepresentation(s,h){var f;return this.dataState.build().to(s.cell).apply(i.StateTransforms.Representation.VolumeRepresentation3D,(0,n.createVolumeRepresentationParams)(this.plugin,(f=s.cell.obj)===null||f===void 0?void 0:f.data,{type:h})).commit({canUndo:"Add Representation"})}constructor(s){super(),this.plugin=s,this.state={syncedTree:this.dataState.tree,notified:!1,hierarchy:(0,r.VolumeHierarchy)(),selection:void 0},this.behaviors={selection:this.ev.behavior({hierarchy:this.current,volume:this.selection})},this.subscribe(s.state.data.events.changed,h=>{h.inTransaction||s.behaviors.state.isAnimating.value||this.sync(!0)}),this.subscribe(s.behaviors.state.isAnimating,h=>{!h&&!s.behaviors.state.isUpdating.value&&this.sync(!0)})}}return uf.VolumeHierarchyManager=c,(function(o){function s(h,f){var y,_;return!((y=f?.cell.obj)===null||y===void 0)&&y.data?h.representation.volume.registry.getApplicableTypes((_=f.cell.obj)===null||_===void 0?void 0:_.data):h.representation.volume.registry.types}o.getRepresentationTypes=s})(c||(uf.VolumeHierarchyManager=c={})),uf}var mM={},E7;function jce(){return E7||(E7=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.MarkdownExtensionManager=e.BuiltInMarkdownExtension=void 0,e.defaultParseMarkdownCommandArgs=_;const t=hZ(),r=jt(),n=Et(),i=va(),c=Ke(),o=Rn(),s=_2();e.BuiltInMarkdownExtension=[{name:"center-camera",execute:({event:g,args:a,manager:d})=>{g==="click"&&"center-camera"in a&&d.plugin.managers.camera.reset()}},{name:"apply-snapshot",execute:({event:g,args:a,manager:d})=>{if(g!=="click")return;const p=a["apply-snapshot"];p&&d.plugin.managers.snapshot.applyKey(p)}},{name:"next-snapshot",execute:({event:g,args:a,manager:d})=>{if(g!=="click"||!("next-snapshot"in a))return;let p=+a["next-snapshot"]||1;p&&(p<0?p=-1:p=1,d.plugin.managers.snapshot.applyNext(p))}},{name:"focus-refs",execute:({event:g,args:a,manager:d})=>{if(g!=="click")return;const p=f(a["focus-refs"]);if(!p?.length)return;const u=d.findCells(p);if(!u.length)return;const m=y(d.plugin,u);if(!m.length)return;const v=m.map(b=>(0,t.getCellBoundingSphere)(d.plugin,b.transform.ref)).filter(b=>!!b);v.length&&d.plugin.managers.camera.focusSpheres(v,b=>b,{extraRadius:3})}},{name:"highlight-refs",execute:({event:g,args:a,manager:d})=>{var p;const u=f(a["highlight-refs"]);if(u?.length){if(g==="mouse-leave"&&u.length){d.plugin.managers.interactivity.lociHighlights.clearHighlights();return}else if(g==="mouse-enter"){const m=d.findCells(u);for(const v of y(d.plugin,m)){if(!(!((p=v.obj)===null||p===void 0)&&p.data))continue;const{repr:b}=v.obj.data;for(const P of b.getAllLoci())d.plugin.managers.interactivity.lociHighlights.highlight({loci:P,repr:b},!1)}}}}},{name:"query",execute:({event:g,args:a,manager:d})=>{var p;const u=a.query;if(!u?.length)return;const m=a.lang||"mol-script",v=f(a.action||"highlight"),b=parseFloat(a["focus-radius"]||"3");if(g==="mouse-leave"){v.includes("highlight")&&d.plugin.managers.interactivity.lociHighlights.clearHighlights();return}let P;try{P=i.Script.toQuery({language:m,expression:u})}catch(l){console.warn(`Failed to parse query '${u}' (${m})`,l);return}const C=d.plugin.state.data.selectQ(l=>l.rootsOfType(r.PluginStateObject.Molecule.Structure));if(g==="mouse-enter"){if(!v.includes("focus"))return;d.plugin.managers.interactivity.lociHighlights.clearHighlights();for(const l of C){if(!(!((p=l.obj)===null||p===void 0)&&p.data))continue;const S=P(new c.QueryContext(l.obj.data)),T=c.StructureSelection.toLociWithSourceUnits(S);d.plugin.managers.interactivity.lociHighlights.highlight({loci:T},!1)}}if(g==="click"){if(!v.includes("focus"))return;const S=C.map(T=>n.StateSelection.getDecorated(d.plugin.state.data,T.transform.ref)).map(T=>{var A;if(!(!((A=T.obj)===null||A===void 0)&&A.data))return;const x=P(new c.QueryContext(T.obj.data));if(c.StructureSelection.isEmpty(x))return;const M=c.StructureSelection.toLociWithSourceUnits(x);return c.StructureElement.Loci.getBoundary(M).sphere}).filter(T=>!!T);S.length&&d.plugin.managers.camera.focusSpheres(S,T=>T,{extraRadius:b})}}},{name:"play-audio",execute:({event:g,args:a,manager:d})=>{if(g!=="click")return;const p=a["play-audio"];p?.length&&d.audio.play(p)}},{name:"toggle-audio",execute:({event:g,args:a,manager:d})=>{if(g!=="click"||!("toggle-audio"in a))return;const p=a["toggle-audio"];d.audio.play(p,{toggle:!0})}},{name:"pause-audio",execute:({event:g,args:a,manager:d})=>{g!=="click"||!("pause-audio"in a)||d.audio.pause()}},{name:"stop-audio",execute:({event:g,args:a,manager:d})=>{g!=="click"||!("stop-audio"in a)||d.audio.stop()}},{name:"dispose-audio",execute:({event:g,args:a,manager:d})=>{g!=="click"||!("dispose-audio"in a)||d.audio.dispose()}},{name:"play-transition",execute:({event:g,args:a,manager:d})=>{g!=="click"||!("play-transition"in a)||d.plugin.managers.animation.play(s.AnimateStateSnapshotTransition,{})}},{name:"play-snapshots",execute:({event:g,args:a,manager:d})=>{g!=="click"||!("play-snapshots"in a)||d.plugin.managers.snapshot.play({restart:!0})}},{name:"stop-animation",execute:({event:g,args:a,manager:d})=>{g!=="click"||!("stop-animation"in a)||d.plugin.managers.snapshot.stop()}}];class h{registerArgsParser(a,d,p){this.removeArgsParser(a),this.argsParsers.push([a,d,p]),this.argsParsers.sort((u,m)=>m[1]-u[1])}removeArgsParser(a){const d=this.argsParsers.findIndex(p=>p[0]===a);d>=0&&this.argsParsers.splice(d,1)}parseArgs(a){for(const[,,d]of this.argsParsers){const p=d(a);if(p)return p}}registerRefResolver(a,d){this.refResolvers[a]=d}removeRefResolver(a){delete this.refResolvers[a]}registerUriResolver(a,d){this.uriResolvers[a]=d}removeUriResolver(a){delete this.uriResolvers[a]}registerExtension(a){const d=this.extension.findIndex(p=>p.name===a.name);d>=0?this.extension[d]=a:this.extension.push(a)}removeExtension(a){const d=this.extension.findIndex(p=>p.name===a);d>=0&&this.extension.splice(d,1)}_tryRender(a,d){var p;try{return(p=a.reactRenderFn)===null||p===void 0?void 0:p.call(a,d)}catch(u){return console.error(`Failed to render markdown extension '${a.name}'`,u),null}}tryRender(a,d){const p={args:a,manager:this};for(const u of this.extension){const m=this._tryRender(u,p);if(m)return m}for(const u of d){const m=this._tryRender(u,p);if(m)return m}return null}tryExecute(a,d){var p;const u={event:a,args:d,manager:this};for(const m of this.extension)try{(p=m.execute)===null||p===void 0||p.call(m,u)}catch(v){console.error(`Failed to execute markdown extension '${m.name}'`,v)}}tryResolveUri(a){for(const d of Object.values(this.uriResolvers)){const p=d(this.plugin,a);if(p)return p}}findCells(a){const d=new Set,p=[];for(const u of Object.values(this.refResolvers))for(const m of u(this.plugin,a))m&&!d.has(m.transform.ref)&&(d.add(m.transform.ref),p.push(m));return p}resolveAudioPlayer(){if(this.state.audioPlayer.value)return this.state.audioPlayer.value;const a=document.createElement("audio");return a.controls=!0,a.preload="auto",a.style.width="100%",a.style.height="32px",this.state.audioPlayer.next(a),a}get audioPlayer(){return this.state.audioPlayer.value}constructor(a){this.plugin=a,this.state={audioPlayer:new o.BehaviorSubject(null)},this.extension=[],this.refResolvers={default:(d,p)=>p.map(u=>d.state.data.cells.get(u)).filter(u=>!!u)},this.uriResolvers={},this.argsParsers=[["default",100,_]],this.audio={play:async(d,p)=>{try{const u=this.resolveAudioPlayer();let m=!1;if(d?.trim()){const v=this.tryResolveUri(d);let b=d;typeof v?.then=="function"?b=await v:v&&(b=v),m=u.src!==b,m&&(u.src=b,u.load())}!m&&p?.toggle?u.paused?await u.play():u.pause():(u.currentTime=0,await u.play())}catch(u){console.error("Failed to play audio",u)}},pause:()=>{var d;(d=this.audioPlayer)===null||d===void 0||d.pause()},stop:()=>{this.audioPlayer&&(this.audioPlayer.pause(),this.audioPlayer.currentTime=0)},dispose:()=>{this.audioPlayer&&(this.audioPlayer.pause(),this.audioPlayer.currentTime=0,this.state.audioPlayer.next(null))}};for(const d of e.BuiltInMarkdownExtension)this.registerExtension(d)}}e.MarkdownExtensionManager=h;function f(g){var a;return(a=g?.split(",").map(d=>d.trim()).filter(d=>d.length>0))!==null&&a!==void 0?a:[]}function y(g,a){return a.length?g.state.data.selectQ(d=>d.byValue(...a).subtree().filter(p=>r.PluginStateObject.isRepresentation3D(p.obj))):[]}function _(g){if(!g?.startsWith("!"))return;const a=decodeURIComponent(g.substring(1)).split("&").map(d=>d.trim()).filter(d=>d.length>0).map(d=>d.split("=",2).map(p=>p.trim()));if(a.length!==0)return Object.fromEntries(a)}})(mM)),mM}var pM={},B7;function Gce(){return B7||(B7=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.PluginLayout=e.PluginLayoutStateParams=void 0;const t=Ne(),r=Vi(),n=Sn(),i=[["full","Full"],["collapsed","Collapsed"],["hidden","Hidden"]],c=[["full","Full"],["hidden","Hidden"]];e.PluginLayoutStateParams={isExpanded:t.ParamDefinition.Boolean(!1),showControls:t.ParamDefinition.Boolean(!0),regionState:t.ParamDefinition.Group({left:t.ParamDefinition.Select("full",i),top:t.ParamDefinition.Select("full",c),right:t.ParamDefinition.Select("full",c),bottom:t.ParamDefinition.Select("full",c)}),controlsDisplay:t.ParamDefinition.Value("outside",{isHidden:!0}),expandToFullscreen:t.ParamDefinition.Boolean(!1)};class o extends r.StatefulPluginComponent{updateProps(h){const f=!!this.state.isExpanded;if(this.updateState(h),this.root&&typeof h.isExpanded=="boolean"&&h.isExpanded!==f&&this.handleExpand(),this.state.expandToFullscreen){const y=document.getElementsByTagName("body")[0];y&&this.tryRequestFullscreen(y)}else document.fullscreenElement&&this.tryExitFullscreen();this.events.updated.next(void 0)}setProps(h){this.updateState(h)}setRoot(h){this.root=h,this.state.isExpanded&&this.handleExpand()}getScrollElement(){return document.scrollingElement?document.scrollingElement:document.documentElement?document.documentElement:document.body}async tryRequestFullscreen(h){if(!document.fullscreenElement)try{await h.requestFullscreen()}catch(f){console.error(f)}}async tryExitFullscreen(){if(document.fullscreenElement)try{await document.exitFullscreen()}catch(h){console.error(h)}}handleExpand(){try{const h=document.getElementsByTagName("body")[0],f=document.getElementsByTagName("head")[0];if(!h||!f||!this.root)return;if(this.state.isExpanded){const y=f.children,_=[];let g=!1;for(let m=0;m<y.length;m++)y[m]===this.expandedViewport?g=!0:(y[m].name||"").toLowerCase()==="viewport"&&_.push(y[m]);for(const m of _)f.removeChild(m);g||f.appendChild(this.expandedViewport);const a=h.style,d=this.getScrollElement(),p=d.scrollLeft,u=d.scrollTop;this.rootState={top:a.top,bottom:a.bottom,right:a.right,left:a.left,scrollTop:u,scrollLeft:p,position:a.position,overflow:a.overflow,viewports:_,zIndex:this.root.style.zIndex,width:a.width,height:a.height,maxWidth:a.maxWidth,maxHeight:a.maxHeight,margin:a.margin,marginLeft:a.marginLeft,marginRight:a.marginRight,marginTop:a.marginTop,marginBottom:a.marginBottom},a.overflow="hidden",a.position="fixed",a.top="0",a.bottom="0",a.right="0",a.left="0",a.width="100%",a.height="100%",a.maxWidth="100%",a.maxHeight="100%",a.margin="0",a.marginLeft="0",a.marginRight="0",a.marginTop="0",a.marginBottom="0"}else{const y=f.children;for(let _=0;_<y.length;_++)if(y[_]===this.expandedViewport){f.removeChild(this.expandedViewport);break}if(this.state.expandToFullscreen&&document.fullscreenElement&&document.exitFullscreen(),this.rootState){const _=this.rootState;for(const d of _.viewports)f.appendChild(d);const g=h.style;g.top=_.top,g.bottom=_.bottom,g.left=_.left,g.right=_.right,g.width=_.width,g.height=_.height,g.maxWidth=_.maxWidth,g.maxHeight=_.maxHeight,g.margin=_.margin,g.marginLeft=_.marginLeft,g.marginRight=_.marginRight,g.marginTop=_.marginTop,g.marginBottom=_.marginBottom,g.position=_.position,g.overflow=_.overflow||"";const a=this.getScrollElement();a.scrollTop=_.scrollTop,a.scrollLeft=_.scrollLeft,this.rootState=void 0,this.root.style.zIndex=_.zIndex}}}catch(h){const f="Layout change error, you might have to reload the page.";this.context.log.error(f),console.error(f,h)}}dispose(){super.dispose(),document.removeEventListener("fullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("webkitfullscreenchange",this.fullscreenChangeHandler)}constructor(h){super({...t.ParamDefinition.getDefaultValues(e.PluginLayoutStateParams),...h.spec.layout&&h.spec.layout.initial}),this.context=h,this.events={updated:this.ev()},this.rootState=void 0,this.fullscreenChangeHandler=()=>{document.fullscreenElement||this.updateProps({expandToFullscreen:!1})},document.addEventListener("fullscreenchange",this.fullscreenChangeHandler),document.addEventListener("webkitfullscreenchange",this.fullscreenChangeHandler),n.PluginCommands.Layout.Upd
7087ate.subscribe(h,f=>this.updateProps(f.state)),typeof document<"u"&&(this.expandedViewport=document.createElement("meta"),this.expandedViewport.name="viewport",this.expandedViewport.content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0")}}e.PluginLayout=o})(pM)),pM}var lf={},hM={},gM={},yM={},R7;function rC(){return R7||(R7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BondIterator=e.DefaultBondLineProps=e.BondLineParams=e.DefaultBondCylinderProps=e.BondCylinderParams=e.DefaultBondProps=e.BondParams=void 0,e.ignoreBondType=_,e.makeIntraBondIgnoreTest=g,e.makeInterBondIgnoreTest=a,e.hasUnitVisibleBonds=d,e.hasStructureVisibleBonds=p,e.getIntraBondLoci=m,e.eachIntraBond=v,e.getInterBondLoci=b,e.eachInterBond=C,e.getStructureGroupsBondLoci=l,e.eachStructureGroupsBond=S;const t=dt(),r=Ke(),n=Ne(),i=zt(),c=Ca(),o=Gt(),s=_n(),h=gt(),f=at(),y=Er();e.BondParams={includeTypes:n.ParamDefinition.MultiSelect((0,o.ObjectKeys)(t.BondType.Names),n.ParamDefinition.objectToOptions(t.BondType.Names)),excludeTypes:n.ParamDefinition.MultiSelect([],n.ParamDefinition.objectToOptions(t.BondType.Names)),ignoreHydrogens:n.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:n.ParamDefinition.Select("all",n.ParamDefinition.arrayToOptions(["all","non-polar"])),aromaticBonds:n.ParamDefinition.Boolean(!0,{description:"Display aromatic bonds with dashes"}),multipleBonds:n.ParamDefinition.Select("symmetric",n.ParamDefinition.arrayToOptions(["off","symmetric","offset"])),metalCoordination:n.ParamDefinition.Select("dashed",n.ParamDefinition.arrayToOptions(["dashed","solid"]))},e.DefaultBondProps=n.ParamDefinition.getDefaultValues(e.BondParams),e.BondCylinderParams={...c.LinkCylinderParams,...e.BondParams,adjustCylinderLength:n.ParamDefinition.Boolean(!1,{description:"Shorten cylinders to reduce overlap with spheres. Useful for for transparent bonds. Not working well with aromatic bonds."})},e.DefaultBondCylinderProps=n.ParamDefinition.getDefaultValues(e.BondCylinderParams),e.BondLineParams={...c.LinkLineParams,...e.BondParams},e.DefaultBondLineProps=n.ParamDefinition.getDefaultValues(e.BondLineParams);function _(T,A,x){return!t.BondType.is(T,x)||t.BondType.is(A,x)}function g(T,A,x){const M=A.elements,D=A.bonds,{a:V,b:R,edgeProps:E}=D,{flags:I}=E,{ignoreHydrogens:B,ignoreHydrogensVariant:w,includeTypes:O,excludeTypes:F}=x,L=t.BondType.fromNames(O),U=t.BondType.fromNames(F),q=t.BondType.isAll(L)&&t.BondType.Flag.None===U,{child:N}=T,k=N?.unitMap.get(A.id);if(N&&!k)throw new Error("expected childUnit to exist if child exists");if(!(q&&!B&&!N))return j=>{const H=V[j],G=R[j];return k&&!f.SortedArray.has(k.elements,M[H])||!q&&_(L,U,I[j])?!0:B?!!((0,y.isHydrogen)(T,A,M[H],w)||(0,y.isHydrogen)(T,A,M[G],w)):!1}}function a(T,A){const x=T.interUnitBonds,{edges:M}=x,{ignoreHydrogens:D,ignoreHydrogensVariant:V,includeTypes:R,excludeTypes:E}=A,I=t.BondType.fromNames(R),B=t.BondType.fromNames(E),w=t.BondType.isAll(I)&&t.BondType.Flag.None===B,{child:O}=T;if(!(w&&!D&&!O))return F=>{if(O){const L=M[F],U=O.unitMap.get(L.unitA);if(!U)return!0;const N=T.unitMap.get(L.unitA).elements[L.indexA];if(!f.SortedArray.has(U.elements,N))return!0}if(D){const L=M[F],U=T.unitMap.get(L.unitA),q=T.unitMap.get(L.unitB);if((0,y.isHydrogen)(T,U,U.elements[L.indexA],V)||(0,y.isHydrogen)(T,q,q.elements[L.indexB],V))return!0}return!!(!w&&_(I,B,M[F].props.flag))}}function d(T,A){return r.Unit.Traits.is(T.traits,r.Unit.Trait.Water)?!A.ignoreHydrogens||A.ignoreHydrogensVariant==="non-polar":!0}function p(T,A){for(const{units:x}of T.unitSymmetryGroups)if(r.Unit.isAtomic(x[0])&&d(x[0],A))return!0;return!1}var u;(function(T){function A(D,V){const{group:R,structure:E}=D,I=R.units[0],B=r.Unit.isAtomic(I)?I.bonds.edgeCount*2:0,w=R.units.length,O=r.Bond.Location(E,void 0,void 0,E,void 0,void 0),F=(L,U)=>{const q=R.units[U];return O.aUnit=q,O.bUnit=q,O.aIndex=q.bonds.a[L],O.bIndex=q.bonds.b[L],O};if(V?.includeLocation2){const L=r.Bond.Location(E,void 0,void 0,E,void 0,void 0),U=(q,N)=>{const k=R.units[N];return L.aUnit=k,L.bUnit=k,L.aIndex=k.bonds.b[q],L.bIndex=k.bonds.a[q],L};return(0,i.LocationIterator)(B,w,1,F,!1,()=>!1,U)}return(0,i.LocationIterator)(B,w,1,F)}T.fromGroup=A;function x(D,V){const R=D.interUnitBonds.edgeCount,E=1,I=r.Bond.Location(D,void 0,void 0,D,void 0,void 0),B=w=>{const O=D.interUnitBonds.edges[w];return I.aUnit=D.unitMap.get(O.unitA),I.aIndex=O.indexA,I.bUnit=D.unitMap.get(O.unitB),I.bIndex=O.indexB,I}
7087;if(V?.includeLocation2){const w=r.Bond.Location(D,void 0,void 0,D,void 0,void 0),O=F=>{const L=D.interUnitBonds.edges[F];return w.aUnit=D.unitMap.get(L.unitB),w.aIndex=L.indexB,w.bUnit=D.unitMap.get(L.unitA),w.bIndex=L.indexA,w};return(0,i.LocationIterator)(R,E,1,B,!0,()=>!1,O)}return(0,i.LocationIterator)(R,E,1,B,!0)}T.fromStructure=x;function M(D,V){const{bondCount:R,unitIndex:E,unitGroupIndex:I,unitEdgeIndex:B}=D.intraUnitBondMapping,w=R,O=1,F=r.Bond.Location(D,void 0,void 0,D,void 0,void 0),L=U=>{const N=D.unitSymmetryGroups[E[U]].units[I[U]],k=B[U];return F.aUnit=N,F.bUnit=N,F.aIndex=N.bonds.a[k],F.bIndex=N.bonds.b[k],F};if(V?.includeLocation2){const U=r.Bond.Location(D,void 0,void 0,D,void 0,void 0),q=N=>{const j=D.unitSymmetryGroups[E[N]].units[I[N]],H=B[N];return U.aUnit=j,U.bUnit=j,U.aIndex=j.bonds.b[H],U.bIndex=j.bonds.a[H],U};return(0,i.LocationIterator)(w,O,1,L,!0,()=>!1,q)}return(0,i.LocationIterator)(w,O,1,L,!0)}T.fromStructureGroups=M})(u||(e.BondIterator=u={}));function m(T,A,x){const{objectId:M,instanceId:D,groupId:V}=T;if(x===M){const{structure:R,group:E}=A,I=E.units[D];if(V===s.PickingId.Null){const B=f.OrderedSet.ofRange(0,I.elements.length);return r.StructureElement.Loci(R.target,[{unit:I,indices:B}])}else if(r.Unit.isAtomic(I)){const{target:B}=R,w=I.bonds.a[V],O=I.bonds.b[V];return r.Bond.Loci(B,[r.Bond.Location(B,I,w,B,I,O),r.Bond.Location(B,I,O,B,I,w)])}}return h.EmptyLoci}function v(T,A,x,M){let D=!1;if(r.Bond.isLoci(T)){const{structure:V,group:R}=A;if(!r.Structure.areEquivalent(T.structure,V))return!1;const E=R.units[0];if(!r.Unit.isAtomic(E))return!1;const I=E.bonds.edgeCount*2;for(const B of T.bonds){if(B.aUnit!==B.bUnit)continue;const w=R.unitIndexMap.get(B.aUnit.id);if(w!==void 0){const O=E.bonds.getDirectedEdgeIndex(B.aIndex,B.bIndex);O!==-1&&x(f.Interval.ofSingleton(w*I+O))&&(D=!0)}}}else if(r.StructureElement.Loci.is(T)){const{structure:V,group:R}=A;if(!r.Structure.areEquivalent(T.structure,V))return!1;const E=R.units[0];if(!r.Unit.isAtomic(E))return!1;const I=E.bonds.edgeCount*2;for(const B of T.elements){const w=R.unitIndexMap.get(B.unit.id);if(w!==void 0){const{offset:O,b:F}=E.bonds;f.OrderedSet.forEach(B.indices,L=>{for(let U=O[L],q=O[L+1];U<q;U++)(!M||f.OrderedSet.has(B.indices,F[U]))&&x(f.Interval.ofSingleton(w*I+U))&&(D=!0)})}}}return D}function b(T,A,x){const{objectId:M,groupId:D}=T;if(x===M){const{target:V}=A;if(D===s.PickingId.Null)return r.Structure.Loci(V);{const R=A.interUnitBonds.edges[D],E=A.unitMap.get(R.unitA),I=A.unitMap.get(R.unitB);return r.Bond.Loci(V,[r.Bond.Location(V,E,R.indexA,V,I,R.indexB),r.Bond.Location(V,I,R.indexB,V,E,R.indexA)])}}return h.EmptyLoci}const P=new Map;function C(T,A,x,M){let D=!1;if(r.Bond.isLoci(T)){if(!r.Structure.areEquivalent(T.structure,A))return!1;for(const V of T.bonds){const R=A.interUnitBonds.getBondIndexFromLocation(V);R!==-1&&x(f.Interval.ofSingleton(R))&&(D=!0)}}else if(r.StructureElement.Loci.is(T)){if(!r.Structure.areEquivalent(T.structure,A)||M&&T.elements.length===1)return!1;for(const V of T.elements)P.set(V.unit.id,V.indices);for(const V of T.elements){const{unit:R}=V;if(r.Unit.isAtomic(R))for(const E of A.interUnitBonds.getConnectedUnits(R.id)){const I=P.get(E.unitB);(!M||I)&&f.OrderedSet.forEach(V.indices,B=>{if(E.connectedIndices.includes(B)){for(const w of E.getEdges(B))if(!M||I&&f.OrderedSet.has(I,w.indexB)){const O=A.interUnitBonds.getEdgeIndex(B,R.id,w.indexB,E.unitB);x(f.Interval.ofSingleton(O))&&(D=!0)}}})}}P.clear()}return D}function l(T,A,x){const{objectId:M,groupId:D}=T;if(x===M){const V=A.intraUnitBondMapping;return m({objectId:M,instanceId:V.unitGroupIndex[D],groupId:V.unitEdgeIndex[D]},{structure:A,group:A.unitSymmetryGroups[V.unitIndex[D]]},x)}return h.EmptyLoci}function S(T,A,x,M){const{unitGroupOffset:D}=A.intraUnitBondMapping;let V=!1;if(r.Bond.isLoci(T)){if(!r.Structure.areEquivalent(T.structure,A))return!1;for(const R of T.bonds){if(R.aUnit!==R.bUnit)continue;const E=A.unitSymmetryGroupsIndexMap.get(R.aUnit.id),I=A.unitSymmetryGroups[E],B=I.units[0];if(!r.Unit.isAtomic(B))continue;const w=D[E],O=B.bonds.edgeCount*2,F=I.unitIndexMap.get(R.aUnit.id);if(F!==void 0){const L=B.bonds.getDirectedEdgeIndex(R.aIndex,R.bIndex);L!==-1&&x(f.Interval.ofSingleton(F*O+L+w))&&(V=!0)}}}else if(r.StructureElement.Loci.is(T)){if(!r.Structure.areEquivalent(T.structure,A))return!1;for(const R of T.elements){const E=A.unitSymmetryGroupsIndexMap.get(R.unit.id),I=A.unitSymmetryGroups[E],B=I.units[0];
7087if(!r.Unit.isAtomic(B))continue;const w=D[E],O=B.bonds.edgeCount*2,F=I.unitIndexMap.get(R.unit.id);if(F!==void 0){const{offset:L,b:U}=B.bonds;f.OrderedSet.forEach(R.indices,q=>{for(let N=L[q],k=L[q+1];N<k;N++)(!M||f.OrderedSet.has(R.indices,U[N]))&&x(f.Interval.ofSingleton(F*O+N+w))&&(V=!0)})}}}return V}})(yM)),yM}var O7;function vZ(){return O7||(O7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureIntraUnitBondCylinderParams=e.IntraUnitBondCylinderParams=void 0,e.IntraUnitBondCylinderVisual=S,e.IntraUnitBondCylinderImpostorVisual=T,e.IntraUnitBondCylinderMeshVisual=A,e.StructureIntraUnitBondCylinderVisual=V,e.StructureIntraUnitBondCylinderImpostorVisual=R,e.StructureIntraUnitBondCylinderMeshVisual=E;const t=Ne(),r=Ke(),n=Rt(),i=Ge(),c=et(),o=Ca(),s=mr(),h=dt(),f=rC(),y=rt(),_=is(),g=no(),a=at(),d=Vt(),p=Er(),u=ps(),m=Br(),v=zt(),b=h.BondType.is;function P(I,B,w,O){const F=I.elements,L=I.bonds,{edgeCount:U,a:q,b:N,edgeProps:k,offset:j}=L,{order:H,flags:G}=k,{sizeFactor:z,sizeAspectRatio:W,adjustCylinderLength:X,aromaticBonds:Y,includeTypes:K,excludeTypes:Q,multipleBonds:J,metalCoordination:ae}=O,te=J==="off",ne=J==="symmetric",$=ae==="dashed",ie=h.BondType.fromNames(K),Z=h.BondType.fromNames(Q),re=(0,f.ignoreBondType)(ie,Z,h.BondType.Flag.Computed),oe=(0,i.Vec3)(),ce=(0,i.Vec3)(),ue=I.conformation;let pe;const he=r.StructureElement.Location.create(B,I),fe=r.Bond.Location(B,I,void 0,B,I,void 0),{child:de}=B;if(O.includeParent&&de){const se=de.unitMap.get(I.id);if(!se)throw new Error("expected childUnit to exist");pe=ye=>{const Se=F[q[ye]],Ae=F[N[ye]];return a.SortedArray.has(se.elements,Se)&&!a.SortedArray.has(se.elements,Ae)}}const ge=se=>(fe.aIndex=q[se],fe.bIndex=N[se],w.size.size(fe)*z),Ce=se=>(he.element=F[q[se]],w.size.size(he)*z),ve=se=>(he.element=F[N[se]],w.size.size(he)*z),{elementRingIndices:le,elementAromaticRingIndices:me}=I.rings,ee=Y?I.resonance.delocalizedTriplets:void 0;return{linkCount:U*2,referencePosition:se=>{let ye=q[se],Se=N[se];const Ae=ee?.getThirdElement(ye,Se);if(Ae!==void 0)return ue.invariantPosition(F[Ae],oe);ye>Se&&([ye,Se]=[Se,ye]),j[ye+1]-j[ye]===1&&([ye,Se]=[Se,ye]);const _e=me.get(ye)||le.get(ye);let be=0;for(let xe=j[ye],we=j[ye+1];xe<we;++xe){const Be=N[xe];if(Be!==Se&&Be!==ye)if(_e){const Me=me.get(Be)||le.get(Be);if(!Me)continue;const Re=(0,d.arrayIntersectionSize)(_e,Me);Re>be&&(be=Re,ue.invariantPosition(F[Be],oe))}else return ue.invariantPosition(F[Be],oe)}return be>0?oe:null},position:(se,ye,Se,Ae)=>{if(ue.invariantPosition(F[q[Se]],se),ue.invariantPosition(F[N[Se]],ye),Ae&&X){const _e=Ce(Se),be=ve(Se),xe=Math.min(_e,be)*W,we=Math.sqrt(Math.max(0,_e*_e-xe*xe))-.05,Be=Math.sqrt(Math.max(0,be*be-xe*xe))-.05;if(we<=.01&&Be<=.01)return;i.Vec3.normalize(ce,i.Vec3.sub(ce,ye,se)),i.Vec3.scaleAndAdd(se,se,ce,we),i.Vec3.scaleAndAdd(ye,ye,ce,-Be)}},style:se=>{const ye=H[se],Se=G[se];if(b(Se,h.BondType.Flag.MetallicCoordination))return $?o.LinkStyle.Dashed:o.LinkStyle.Solid;if(b(Se,h.BondType.Flag.HydrogenBond))return o.LinkStyle.Dashed;if(ye===3)return te?o.LinkStyle.Solid:ne?o.LinkStyle.Triple:o.LinkStyle.OffsetTriple;if(Y){const Ae=q[se],_e=N[se],be=me.get(Ae),xe=me.get(_e),we=be&&xe?(0,d.arrayIntersectionSize)(be,xe):0;if(b(Se,h.BondType.Flag.Aromatic)||we&&!re)return we===2?o.LinkStyle.MirroredAromatic:o.LinkStyle.Aromatic}return ye!==2||te?o.LinkStyle.Solid:ne?o.LinkStyle.Double:o.LinkStyle.OffsetDouble},radius:se=>ge(se)*W,ignore:(0,f.makeIntraBondIgnoreTest)(B,I,O),stub:pe}}function C(I,B,w,O,F,L){if(!r.Unit.isAtomic(B)||!(0,f.hasUnitVisibleBonds)(B,F)||!B.bonds.edgeCount)return g.Cylinders.createEmpty(L);const{child:U}=w,q=U?.unitMap.get(B.id);if(U&&!q)return g.Cylinders.createEmpty(L);const N=P(B,w,O,F),{cylinders:k,boundingSphere:j}=(0,o.createLinkCylinderImpostors)(I,N,F,L);if(j)k.setBoundingSphere(j);else if(k.cylinderCount>0){const H=y.Sphere3D.expand((0,y.Sphere3D)(),(q??B).boundary.sphere,1*F.sizeFactor);k.setBoundingSphere(H)}return k}function l(I,B,w,O,F,L){if(!r.Unit.isAtomic(B)||!(0,f.hasUnitVisibleBonds)(B,F)||!B.bonds.edgeCount)return n.Mesh.createEmpty(L);const{child:U}=w,q=U?.unitMap.get(B.id);if(U&&!q)return n.Mesh.createEmpty(L);const N=P(B,w,O,F),{mesh:k,boundingSphere:j}
7087=(0,o.createLinkCylinderMesh)(I,N,F,L);if(j)k.setBoundingSphere(j);else if(k.triangleCount>0){const H=y.Sphere3D.expand((0,y.Sphere3D)(),(q??B).boundary.sphere,1*F.sizeFactor);k.setBoundingSphere(H)}return k}e.IntraUnitBondCylinderParams={...s.UnitsMeshParams,...s.UnitsCylindersParams,...f.BondCylinderParams,sizeFactor:t.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),sizeAspectRatio:t.ParamDefinition.Numeric(2/3,{min:0,max:3,step:.01}),tryUseImpostor:t.ParamDefinition.Boolean(!0),includeParent:t.ParamDefinition.Boolean(!1)};function S(I,B,w,O){return w.tryUseImpostor&&(0,p.checkCylinderImpostorSupport)(O)?T(I):A(I)}function T(I){return(0,s.UnitsCylindersVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.IntraUnitBondCylinderParams),createGeometry:C,createLocationIterator:(B,w)=>f.BondIterator.fromGroup(B,{includeLocation2:w.colorMode==="interpolate"}),getLoci:f.getIntraBondLoci,eachLocation:f.eachIntraBond,setUpdateState:(B,w,O,F,L,U,q)=>{B.createGeometry=w.sizeFactor!==O.sizeFactor||w.sizeAspectRatio!==O.sizeAspectRatio||w.linkScale!==O.linkScale||w.linkSpacing!==O.linkSpacing||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.linkCap!==O.linkCap||w.aromaticScale!==O.aromaticScale||w.aromaticSpacing!==O.aromaticSpacing||w.aromaticDashCount!==O.aromaticDashCount||w.dashCount!==O.dashCount||w.dashScale!==O.dashScale||w.dashCap!==O.dashCap||w.stubCap!==O.stubCap||!(0,c.arrayEqual)(w.includeTypes,O.includeTypes)||!(0,c.arrayEqual)(w.excludeTypes,O.excludeTypes)||w.adjustCylinderLength!==O.adjustCylinderLength||w.aromaticBonds!==O.aromaticBonds||w.multipleBonds!==O.multipleBonds||w.metalCoordination!==O.metalCoordination||w.adjustCylinderLength&&!u.SizeTheme.areEqual(F.size,L.size),w.colorMode!==O.colorMode&&(B.createGeometry=!0,B.updateTransform=!0,B.updateColor=!0);const N=U.group.units[0],k=q.group.units[0];r.Unit.isAtomic(N)&&r.Unit.isAtomic(k)&&(_.IntAdjacencyGraph.areEqual(N.bonds,k.bonds)||(B.createGeometry=!0,B.updateTransform=!0,B.updateColor=!0,B.updateSize=!0))},mustRecreate:(B,w,O)=>!w.tryUseImpostor||!O},I)}function A(I){return(0,s.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.IntraUnitBondCylinderParams),createGeometry:l,createLocationIterator:B=>f.BondIterator.fromGroup(B),getLoci:f.getIntraBondLoci,eachLocation:f.eachIntraBond,setUpdateState:(B,w,O,F,L,U,q)=>{B.createGeometry=w.sizeFactor!==O.sizeFactor||w.sizeAspectRatio!==O.sizeAspectRatio||w.radialSegments!==O.radialSegments||w.linkScale!==O.linkScale||w.linkSpacing!==O.linkSpacing||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.linkCap!==O.linkCap||w.aromaticScale!==O.aromaticScale||w.aromaticSpacing!==O.aromaticSpacing||w.aromaticDashCount!==O.aromaticDashCount||w.dashCount!==O.dashCount||w.dashScale!==O.dashScale||w.dashCap!==O.dashCap||w.stubCap!==O.stubCap||!(0,c.arrayEqual)(w.includeTypes,O.includeTypes)||!(0,c.arrayEqual)(w.excludeTypes,O.excludeTypes)||w.adjustCylinderLength!==O.adjustCylinderLength||w.aromaticBonds!==O.aromaticBonds||w.multipleBonds!==O.multipleBonds||w.metalCoordination!==O.metalCoordination;const N=U.group.units[0],k=q.group.units[0];r.Unit.isAtomic(N)&&r.Unit.isAtomic(k)&&(_.IntAdjacencyGraph.areEqual(N.bonds,k.bonds)||(B.createGeometry=!0,B.updateTransform=!0,B.updateColor=!0,B.updateSize=!0))},mustRecreate:(B,w,O)=>w.tryUseImpostor&&!!O},I)}function x(I,B,w){const O=[],{bondCount:F,unitIndex:L,unitEdgeIndex:U,unitGroupIndex:q}=I.intraUnitBondMapping,{child:N}=I;for(const k of I.unitSymmetryGroups){const j=k.units[0],H=N?.unitMap.get(j.id),G=r.Unit.isAtomic(j)&&!(N&&!H)?P(j,I,B,w):o.EmptyLinkBuilderProps;O.push({group:k,props:G})}return{linkCount:F,referencePosition:k=>{const{group:j,props:H}=O[L[k]];if(!H.referencePosition)return null;const G=H.referencePosition(U[k]);if(!G)return null;const z=j.units[q[k]];return i.Vec3.transformMat4(G,G,z.conformation.operator.matrix),G},position:(k,j,H,G)=>{const{group:z,props:W}=O[L[H]];W.position(k,j,U[H],G);const X=z.units[q[H]];i.Vec3.transformMat4(k,k,X.conformation.operator.matrix),i.Vec3.transformMat4(j,j,X.conformation.operator.matrix)},style:k=>{const{props:j}=O[L[k]];return j.style?j.style(U[k]):o.LinkStyle.Solid},radius:k=>{const{props:j}=O[L[k]];return j.radius(U[k])},ignore:k=>{const{props:j}=O[L[k]];return j.ignore?j.ignore(U[k]):!1},stub:k=>{const{props:j}=O[L[k]];return j.stub?j.stub(U[k]):!1}}}
7087function M(I,B,w,O,F){if(!(0,f.hasStructureVisibleBonds)(B,O)||!B.intraUnitBondMapping.bondCount)return g.Cylinders.createEmpty(F);const L=x(B,w,O),{cylinders:U,boundingSphere:q}=(0,o.createLinkCylinderImpostors)(I,L,O,F);if(q)U.setBoundingSphere(q);else if(U.cylinderCount>0){const{child:N}=B,k=y.Sphere3D.expand((0,y.Sphere3D)(),(N??B).boundary.sphere,1*O.sizeFactor);U.setBoundingSphere(k)}return U}function D(I,B,w,O,F){if(!(0,f.hasStructureVisibleBonds)(B,O)||!B.intraUnitBondMapping.bondCount)return n.Mesh.createEmpty(F);const L=x(B,w,O),{mesh:U,boundingSphere:q}=(0,o.createLinkCylinderMesh)(I,L,O,F);if(q)U.setBoundingSphere(q);else if(U.triangleCount>0){const{child:N}=B,k=y.Sphere3D.expand((0,y.Sphere3D)(),(N??B).boundary.sphere,1*O.sizeFactor);U.setBoundingSphere(k)}return U}e.StructureIntraUnitBondCylinderParams={...m.ComplexMeshParams,...m.ComplexCylindersParams,...f.BondCylinderParams,sizeFactor:t.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),sizeAspectRatio:t.ParamDefinition.Numeric(2/3,{min:0,max:3,step:.01}),tryUseImpostor:t.ParamDefinition.Boolean(!0),includeParent:t.ParamDefinition.Boolean(!1)};function V(I,B,w,O){return w.tryUseImpostor&&O&&O.extensions.fragDepth?R(I):E(I)}function R(I){return(0,m.ComplexCylindersVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureIntraUnitBondCylinderParams),createGeometry:M,createLocationIterator:(B,w)=>(0,f.hasStructureVisibleBonds)(B,w)?f.BondIterator.fromStructureGroups(B,{includeLocation2:w.colorMode==="interpolate"}):v.EmptyLocationIterator,getLoci:f.getStructureGroupsBondLoci,eachLocation:f.eachStructureGroupsBond,setUpdateState:(B,w,O,F,L,U,q)=>{B.createGeometry=w.sizeFactor!==O.sizeFactor||w.sizeAspectRatio!==O.sizeAspectRatio||w.linkScale!==O.linkScale||w.linkSpacing!==O.linkSpacing||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.linkCap!==O.linkCap||w.aromaticScale!==O.aromaticScale||w.aromaticSpacing!==O.aromaticSpacing||w.aromaticDashCount!==O.aromaticDashCount||w.dashCount!==O.dashCount||w.dashScale!==O.dashScale||w.dashCap!==O.dashCap||w.stubCap!==O.stubCap||!(0,c.arrayEqual)(w.includeTypes,O.includeTypes)||!(0,c.arrayEqual)(w.excludeTypes,O.excludeTypes)||w.adjustCylinderLength!==O.adjustCylinderLength||w.multipleBonds!==O.multipleBonds||w.metalCoordination!==O.metalCoordination,w.colorMode!==O.colorMode&&(B.createGeometry=!0,B.updateTransform=!0,B.updateColor=!0),(0,f.hasStructureVisibleBonds)(U,w)&&U.interUnitBonds!==q.interUnitBonds&&(B.createGeometry=!0,B.updateTransform=!0,B.updateColor=!0,B.updateSize=!0)},mustRecreate:(B,w,O)=>!w.tryUseImpostor||!O},I)}function E(I){return(0,m.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureIntraUnitBondCylinderParams),createGeometry:D,createLocationIterator:(B,w)=>(0,f.hasStructureVisibleBonds)(B,w)?f.BondIterator.fromStructureGroups(B):v.EmptyLocationIterator,getLoci:f.getStructureGroupsBondLoci,eachLocation:f.eachStructureGroupsBond,setUpdateState:(B,w,O,F,L,U,q)=>{B.createGeometry=w.sizeFactor!==O.sizeFactor||w.sizeAspectRatio!==O.sizeAspectRatio||w.radialSegments!==O.radialSegments||w.linkScale!==O.linkScale||w.linkSpacing!==O.linkSpacing||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.linkCap!==O.linkCap||w.aromaticScale!==O.aromaticScale||w.aromaticSpacing!==O.aromaticSpacing||w.aromaticDashCount!==O.aromaticDashCount||w.dashCount!==O.dashCount||w.dashScale!==O.dashScale||w.dashCap!==O.dashCap||w.stubCap!==O.stubCap||!(0,c.arrayEqual)(w.includeTypes,O.includeTypes)||!(0,c.arrayEqual)(w.excludeTypes,O.excludeTypes)||w.adjustCylinderLength!==O.adjustCylinderLength||w.multipleBonds!==O.multipleBonds||w.metalCoordination!==O.metalCoordination||w.adjustCylinderLength&&!u.SizeTheme.areEqual(F.size,L.size),(0,f.hasStructureVisibleBonds)(U,w)&&U.interUnitBonds!==q.interUnitBonds&&(B.createGeometry=!0,B.updateTransform=!0,B.updateColor=!0,B.updateSize=!0)},mustRecreate:(B,w,O)=>w.tryUseImpostor&&!!O},I)}})(gM)),gM}var vM={},k7;function bZ(){return k7||(k7=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.InterUnitBondCylinderParams=void 0,e.InterUnitBondCylinderVisual=l,e.InterUnitBondCylinderImpostorVisual=S,e.InterUnitBondCylinderMeshVisual=T;const t=Ne(),r=Ke(),n=Rt(),i=Ge(),c=et(),o=Ca(),s=Br(),h=dt(),f=rC(),y=rt(),_=no(),g=Na(),a=ps(),d=zt(),p=Er(),u=new r.Bond.ElementBondIterator;function m(A,x,M,D){for(u.setElement(x,M,D);u.hasNext;){const V=u.move();return V.otherUnit.conformation.position(V.otherUnit.elements[V.otherIndex],A),A}return null}const v=(0,i.Vec3)();function b(A,x,M){const D=r.StructureElement.Location.create(A),V=r.Bond.Location(A,void 0,void 0,A,void 0,void 0),R=A.interUnitBonds,{edgeCount:E,edges:I}=R,{sizeFactor:B,sizeAspectRatio:w,adjustCylinderLength:O,aromaticBonds:F,multipleBonds:L,metalCoordination:U}=M,q=L==="off",N=L==="symmetric",k=U==="dashed",j=(0,i.Vec3)();let H;const{child:G}=A;M.includeParent&&G&&(H=Y=>{const K=I[Y],Q=G.unitMap.get(K.unitA),J=G.unitMap.get(K.unitB),te=A.unitMap.get(K.unitA).elements[K.indexA],$=A.unitMap.get(K.unitB).elements[K.indexB];return Q&&g.SortedArray.has(Q.elements,te)&&(!J||!g.SortedArray.has(J.elements,$))});const z=Y=>{const K=I[Y];return V.aUnit=A.unitMap.get(K.unitA),V.aIndex=K.indexA,V.bUnit=A.unitMap.get(K.unitB),V.bIndex=K.indexB,x.size.size(V)*B},W=Y=>{const K=I[Y];return D.unit=A.unitMap.get(K.unitA),D.element=D.unit.elements[K.indexA],x.size.size(D)*B},X=Y=>{const K=I[Y];return D.unit=A.unitMap.get(K.unitB),D.element=D.unit.elements[K.indexB],x.size.size(D)*B};return{linkCount:E,referencePosition:Y=>{const K=I[Y];let Q,J,ae,te;if(K.unitA<K.unitB)Q=A.unitMap.get(K.unitA),J=A.unitMap.get(K.unitB),ae=K.indexA,te=K.indexB;else if(K.unitA>K.unitB)Q=A.unitMap.get(K.unitB),J=A.unitMap.get(K.unitA),ae=K.indexB,te=K.indexA;else throw new Error("same units in createInterUnitBondCylinderMesh");return m(v,A,Q,ae)||m(v,A,J,te)},position:(Y,K,Q,J)=>{const ae=I[Q],te=A.unitMap.get(ae.unitA),ne=A.unitMap.get(ae.unitB);if(te.conformation.position(te.elements[ae.indexA],Y),ne.conformation.position(ne.elements[ae.indexB],K),J&&O){const $=W(Q),ie=X(Q),Z=Math.min($,ie)*w,re=Math.sqrt(Math.max(0,$*$-Z*Z))-.05,oe=Math.sqrt(Math.max(0,ie*ie-Z*Z))-.05;if(re<=.01&&oe<=.01)return;i.Vec3.normalize(j,i.Vec3.sub(j,K,Y)),i.Vec3.scaleAndAdd(Y,Y,j,re),i.Vec3.scaleAndAdd(K,K,j,-oe)}},style:Y=>{const K=I[Y].props.order,Q=c.BitFlags.create(I[Y].props.flag);return h.BondType.is(Q,h.BondType.Flag.MetallicCoordination)?k?o.LinkStyle.Dashed:o.LinkStyle.Solid:h.BondType.is(Q,h.BondType.Flag.HydrogenBond)?o.LinkStyle.Dashed:K===3?q?o.LinkStyle.Solid:N?o.LinkStyle.Triple:o.LinkStyle.OffsetTriple:F&&h.BondType.is(Q,h.BondType.Flag.Aromatic)?o.LinkStyle.Aromatic:K!==2||q?o.LinkStyle.Solid:N?o.LinkStyle.Double:o.LinkStyle.OffsetDouble},radius:Y=>z(Y)*w,ignore:(0,f.makeInterBondIgnoreTest)(A,M),stub:H}}function P(A,x,M,D,V){if(!(0,f.hasStructureVisibleBonds)(x,D)||!x.interUnitBonds.edgeCount)return _.Cylinders.createEmpty(V);const R=b(x,M,D),{cylinders:E,boundingSphere:I}=(0,o.createLinkCylinderImpostors)(A,R,D,V);if(I)E.setBoundingSphere(I);else if(E.cylinderCount>0){const{child:B}=x,w=y.Sphere3D.expand((0,y.Sphere3D)(),(B??x).boundary.sphere,1*D.sizeFactor);E.setBoundingSphere(w)}return E}function C(A,x,M,D,V){if(!(0,f.hasStructureVisibleBonds)(x,D)||!x.interUnitBonds.edgeCount)return n.Mesh.createEmpty(V);const R=b(x,M,D),{mesh:E,boundingSphere:I}=(0,o.createLinkCylinderMesh)(A,R,D,V);if(I)E.setBoundingSphere(I);else if(E.triangleCount>0){const{child:B}=x,w=y.Sphere3D.expand((0,y.Sphere3D)(),(B??x).boundary.sphere,1*D.sizeFactor);E.setBoundingSphere(w)}return E}e.InterUnitBondCylinderParams={...s.ComplexMeshParams,...s.ComplexCylindersParams,...f.BondCylinderParams,sizeFactor:t.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),sizeAspectRatio:t.ParamDefinition.Numeric(2/3,{min:0,max:3,step:.01}),tryUseImpostor:t.ParamDefinition.Boolean(!0),includeParent:t.ParamDefinition.Boolean(!1)};function l(A,x,M,D){return M.tryUseImpostor&&(0,p.checkCylinderImpostorSupport)(D)?S(A):T(A)}function S(A){return(0,s.ComplexCylindersVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.InterUnitBondCylinderParams),createGeometry:P,createLocationIterator:(x,M)=>
7087(0,f.hasStructureVisibleBonds)(x,M)?f.BondIterator.fromStructure(x,{includeLocation2:M.colorMode==="interpolate"}):d.EmptyLocationIterator,getLoci:f.getInterBondLoci,eachLocation:f.eachInterBond,setUpdateState:(x,M,D,V,R,E,I)=>{x.createGeometry=M.sizeFactor!==D.sizeFactor||M.sizeAspectRatio!==D.sizeAspectRatio||M.linkScale!==D.linkScale||M.linkSpacing!==D.linkSpacing||M.ignoreHydrogens!==D.ignoreHydrogens||M.ignoreHydrogensVariant!==D.ignoreHydrogensVariant||M.linkCap!==D.linkCap||M.aromaticScale!==D.aromaticScale||M.aromaticSpacing!==D.aromaticSpacing||M.aromaticDashCount!==D.aromaticDashCount||M.dashCount!==D.dashCount||M.dashScale!==D.dashScale||M.dashCap!==D.dashCap||M.stubCap!==D.stubCap||!(0,c.arrayEqual)(M.includeTypes,D.includeTypes)||!(0,c.arrayEqual)(M.excludeTypes,D.excludeTypes)||M.adjustCylinderLength!==D.adjustCylinderLength||M.multipleBonds!==D.multipleBonds||M.metalCoordination!==D.metalCoordination,M.colorMode!==D.colorMode&&(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0),(0,f.hasStructureVisibleBonds)(E,M)&&E.interUnitBonds!==I.interUnitBonds&&(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0,x.updateSize=!0)},mustRecreate:(x,M,D)=>!M.tryUseImpostor||!D},A)}function T(A){return(0,s.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.InterUnitBondCylinderParams),createGeometry:C,createLocationIterator:(x,M)=>(0,f.hasStructureVisibleBonds)(x,M)?f.BondIterator.fromStructure(x):d.EmptyLocationIterator,getLoci:f.getInterBondLoci,eachLocation:f.eachInterBond,setUpdateState:(x,M,D,V,R,E,I)=>{x.createGeometry=M.sizeFactor!==D.sizeFactor||M.sizeAspectRatio!==D.sizeAspectRatio||M.radialSegments!==D.radialSegments||M.linkScale!==D.linkScale||M.linkSpacing!==D.linkSpacing||M.ignoreHydrogens!==D.ignoreHydrogens||M.ignoreHydrogensVariant!==D.ignoreHydrogensVariant||M.linkCap!==D.linkCap||M.aromaticScale!==D.aromaticScale||M.aromaticSpacing!==D.aromaticSpacing||M.aromaticDashCount!==D.aromaticDashCount||M.dashCount!==D.dashCount||M.dashScale!==D.dashScale||M.dashCap!==D.dashCap||M.stubCap!==D.stubCap||!(0,c.arrayEqual)(M.includeTypes,D.includeTypes)||!(0,c.arrayEqual)(M.excludeTypes,D.excludeTypes)||M.adjustCylinderLength!==D.adjustCylinderLength||M.multipleBonds!==D.multipleBonds||M.metalCoordination!==D.metalCoordination||M.adjustCylinderLength&&!a.SizeTheme.areEqual(V.size,R.size),(0,f.hasStructureVisibleBonds)(E,M)&&E.interUnitBonds!==I.interUnitBonds&&(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0,x.updateSize=!0)},mustRecreate:(x,M,D)=>M.tryUseImpostor&&!!D},A)}})(vM)),vM}var bM={},ii={},l_={},F7;function P2(){if(F7)return l_;
7087F7=1,Object.defineProperty(l_,"__esModule",{value:!0}),l_.SpheresBuilder=void 0;const e=_t(),t=ro(),r=e.ChunkedArray.add3,n=e.ChunkedArray.add;var i;return(function(c){function o(s=2048,h=1024,f){const y=e.ChunkedArray.create(Float32Array,3,h,f?f.centerBuffer.ref.value:s),_=e.ChunkedArray.create(Float32Array,1,h,f?f.groupBuffer.ref.value:s);return{add:(g,a,d,p)=>{r(y,g,a,d),n(_,p)},getSpheres:()=>{const g=e.ChunkedArray.compact(y,!0),a=e.ChunkedArray.compact(_,!0);return t.Spheres.create(g,a,y.elementCount,f)}}}c.create=o})(i||(l_.SpheresBuilder=i={})),l_}var L7;function zi(){if(L7)return ii;L7=1,Object.defineProperty(ii,"__esModule",{value:!0}),ii.ElementIterator=void 0,ii.makeElementIgnoreTest=p,ii.createElementSphereMesh=u,ii.createElementSphereImpostor=m,ii.eachElement=v,ii.getElementLoci=b,ii.createStructureElementSphereMesh=P,ii.createStructureElementSphereImpostor=C,ii.eachSerialElement=l,ii.getSerialElementLoci=S;const e=Ge(),t=Ke(),r=gt(),n=at(),i=Rt(),c=Xf(),o=$t(),s=Jn(),h=_n(),f=zt(),y=ro(),_=P2(),g=Er(),a=rt(),d=e.Vec3.add;function p(A,x,M){const{ignoreHydrogens:D,ignoreHydrogensVariant:V,traceOnly:R}=M,E=t.Unit.isCoarse(x),{child:I}=A,B=I?.unitMap.get(x.id);if(I&&!B)throw new Error("expected childUnit to exist if child exists");if(!(!I&&!D&&!R))return w=>!!B&&!n.SortedArray.has(B.elements,w)||!E&&D&&(0,g.isHydrogen)(A,x,w,V)||R&&!(0,g.isTrace)(x,w)}function u(A,x,M,D,V,R){const{child:E}=M,I=E?.unitMap.get(x.id);if(E&&!I)return i.Mesh.createEmpty(R);const{detail:B,sizeFactor:w,stride:O}=V,F=R?.hasBoundingSphere()?a.Sphere3D.clone(R.boundingSphere):void 0,{elements:L,conformation:U}=x,q=L.length,N=q*(0,c.sphereVertexCount)(B),k=o.MeshBuilder.createState(N,N/2,R),j=(0,e.Vec3)(),H=p(M,x,V),G=t.StructureElement.Location.create(M,x),z=D.size.size,W=(0,e.Vec3)();let X=0,Y=0;for(let J=0;J<q;J++){if(O&&J%O!==0||H&&H(L[J]))continue;U.invariantPosition(L[J],j),d(W,W,j),Y+=1,G.element=L[J];const ae=z(G);ae>X&&(X=ae),k.currentGroup=J,(0,s.addSphere)(k,j,ae*w,B)}const K=o.MeshBuilder.getMesh(k);if(Y===0)return K;let Q;return e.Vec3.scale(W,W,1/Y),F&&e.Vec3.distance(W,F.center)/F.radius<.1?Q=F:Q=a.Sphere3D.expand((0,a.Sphere3D)(),(I??x).boundary.sphere,X*w+.05),K.setBoundingSphere(Q),K}function m(A,x,M,D,V,R){const{child:E}=M,I=E?.unitMap.get(x.id);if(E&&!I)return y.Spheres.createEmpty(R);const{sizeFactor:B,stride:w}=V,O=R?.hasBoundingSphere()?a.Sphere3D.clone(R.boundingSphere):void 0,{elements:F,conformation:L}=x,U=F.length,q=_.SpheresBuilder.create(U,U/2,R),N=(0,e.Vec3)(),k=p(M,x,V),j=t.StructureElement.Location.create(M,x),H=D.size.size,G=(0,e.Vec3)();let z=0,W=0;if(w&&w>1||k||D.size.granularity!=="uniform")for(let K=0;K<U;K++){if(w&&K%w!==0||k&&k(F[K]))continue;L.invariantPosition(F[K],N),q.add(N[0],N[1],N[2],K),d(G,G,N),W+=1,j.element=F[K];const Q=H(j);Q>z&&(z=Q)}else{for(let K=0;K<U;K++)L.invariantPosition(F[K],N),q.add(N[0],N[1],N[2],K),d(G,G,N);W=U,z=H(j)}const X=q.getSpheres();if(W===0)return X;let Y;return e.Vec3.scale(G,G,1/W),O&&e.Vec3.distance(G,O.center)/O.radius<.1?Y=O:Y=a.Sphere3D.expand((0,a.Sphere3D)(),(I??x).boundary.sphere,z*B+.05),X.setBoundingSphere(Y),X}function v(A,x,M){let D=!1;if(!t.StructureElement.Loci.is(A))return!1;const{structure:V,group:R}=x;if(!t.Structure.areEquivalent(A.structure,V))return!1;const E=R.elements.length,{unitIndexMap:I}=R;for(const B of A.elements){const w=I.get(B.unit.id);if(w!==void 0){const O=w*E;if(n.Interval.is(B.indices)){const F=O+n.Interval.start(B.indices),L=O+n.Interval.end(B.indices);M(n.Interval.ofBounds(F,L))&&(D=!0)}else for(let F=0,L=B.indices.length;F<L;F++){const U=B.indices[F];let q=F+1;for(;q<L&&B.indices[q]===U;)q++;F=q-1;const N=B.indices[F];D=M(n.Interval.ofRange(O+U,O+N))||D}}}return D}function b(A,x,M){const{objectId:D,instanceId:V,groupId:R}=A;if(M===D){const{structure:E,group:I}=x,B=I.units[V],w=R===h.PickingId.Null?n.OrderedSet.ofRange(0,B.elements.length):n.OrderedSet.ofSingleton(R);return t.StructureElement.Loci(E.target,[{unit:B,indices:w}])}return r.EmptyLoci}function P(A,x,M,D,V){const{child:R}=x,{detail:E,sizeFactor:I,stride:B}=D,w=V?.hasBoundingSphere()?a.Sphere3D.clone(V.boundingSphere):void 0,{getSerialIndex:O}=x.serialMapping,L=x.elementCount*(0,c.sphereVertexCount)(E),U=o.MeshBuilder.createState(L,L/2,V),q=M.size.size,N=(0,e.Vec3)();let k=0,j=0;for(const z of x.units){const W=R?.unitMap.get(z.id);if(R&&!W)continue;const{elements:X,conformation:Y}=z,K=X.length,Q=(0,e.Vec3)(),J=p(x,z,D),ae=t.StructureElement.Location.create(x,z);for(let te=0;te<K;te++){const ne=X[te];if(B&&te%B!==0||J&&J(ne))continue;Y.position(ne,Q),d(N,N,Q),j+=1,ae.element=ne;const $=q(ae);$>k&&(k=$),U.currentGroup=O(z,ne),(0,s.addSphere)(U,Q,$*I,E)}}const H=o.MeshBuilder.getMesh(U);if(j===0)return H;let G;return e.Vec3.scale(N,N,1/j),w&&e.Vec3.distance(N,w.center)/w.radius<1?G=w:G=a.Sphere3D.expand((0,a.Sphere3D)(),(R??x).boundary.sphere,k*I+.05),H.setBoundingSphere(G),H}function C(A,x,M,D,V){const{child:R}=x,{sizeFactor:E,stride:I}=D,B=V?.hasBoundingSphere()?a.Sphere3D.clone(V.boundingSphere):void 0,{getSerialIndex:w}=x.serialMapping,O=x.elementCount,F=_.SpheresBuilder.create(O,O/2,V),L=M.size.size,U=(0,e.Vec3)();let q=0,N=0;for(const H of x.units){const G=R?.unitMap.get(H.id);if(R&&!G)continue;const{elements:z,conformation:W}=H,X=z.length,Y=(0,e.Vec3)(),K=p(x,H,D),Q=t.StructureElement.Location.create(x,H);if(I&&I>1||K||M.size.granularity!=="uniform")for(let J=0;J<X;J++){const ae=z[J];
7087if(I&&J%I!==0||K&&K(ae))continue;W.position(ae,Y),F.add(Y[0],Y[1],Y[2],w(H,ae)),d(U,U,Y),N+=1,Q.element=ae;const te=L(Q);te>q&&(q=te)}else{for(let J=0;J<X;J++){const ae=z[J];W.position(ae,Y),F.add(Y[0],Y[1],Y[2],w(H,ae)),d(U,U,Y)}N+=X,q=L(Q)}}const k=F.getSpheres();if(N===0)return k;let j;return e.Vec3.scale(U,U,1/N),B&&e.Vec3.distance(U,B.center)/B.radius<1?j=B:j=a.Sphere3D.expand((0,a.Sphere3D)(),(R??x).boundary.sphere,q*E+.05),k.setBoundingSphere(j),k}function l(A,x,M){let D=!1;if(!t.StructureElement.Loci.is(A)||!t.Structure.areEquivalent(A.structure,x))return!1;const{cumulativeUnitElementCount:V}=x.serialMapping;for(const R of A.elements){const E=x.unitIndexMap.get(R.unit.id);if(E!==void 0)if(n.Interval.is(R.indices)){const I=V[E]+n.Interval.start(R.indices),B=V[E]+n.Interval.end(R.indices);M(n.Interval.ofBounds(I,B))&&(D=!0)}else for(let I=0,B=R.indices.length;I<B;I++){const w=V[E]+R.indices[I];M(n.Interval.ofSingleton(w))&&(D=!0)}}return D}function S(A,x,M){const{objectId:D,groupId:V}=A;if(M===D){if(V===h.PickingId.Null)return t.Structure.Loci(x);{const{unitIndices:R,cumulativeUnitElementCount:E}=x.serialMapping,I=R[V],B=x.units[I],w=V-E[I],O=n.OrderedSet.ofSingleton(w);return t.StructureElement.Loci(x,[{unit:B,indices:O}])}}return r.EmptyLoci}var T;return(function(A){function x(D){const{group:V,structure:R}=D,E=V.elements.length,I=V.units.length,B=t.StructureElement.Location.create(R),w=(O,F)=>{const L=V.units[F];return B.unit=L,B.element=L.elements[O],B};return(0,f.LocationIterator)(E,I,1,w)}A.fromGroup=x;function M(D){const{units:V,elementCount:R}=D,E=R,I=1,{unitIndices:B,elementIndices:w}=D.serialMapping,O=t.StructureElement.Location.create(D),F=L=>(O.unit=V[B[L]],O.element=w[L],O);return(0,f.LocationIterator)(E,I,1,F,!0)}A.fromStructure=M})(T||(ii.ElementIterator=T={})),ii}var N7;function _Z(){return N7||(N7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureElementSphereParams=e.ElementSphereParams=e.CommonElementSphereParams=void 0,e.ElementSphereVisual=s,e.ElementSphereImpostorVisual=h,e.ElementSphereMeshVisual=f,e.StructureElementSphereVisual=y,e.StructureElementSphereImpostorVisual=_,e.StructureElementSphereMeshVisual=g;const t=Ne(),r=mr(),n=zi(),i=Tt(),c=Er(),o=Br();e.CommonElementSphereParams={sizeFactor:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},i.BaseGeometry.CustomQualityParamInfo),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:t.ParamDefinition.Boolean(!1),tryUseImpostor:t.ParamDefinition.Boolean(!0),stride:t.ParamDefinition.Numeric(1,{min:1,max:100,step:1})},e.ElementSphereParams={...r.UnitsMeshParams,...r.UnitsSpheresParams,...e.CommonElementSphereParams};function s(a,d,p,u){return p.tryUseImpostor&&(0,c.checkSphereImpostorSupport)(u)?h(a):f(a)}function h(a){return(0,r.UnitsSpheresVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.ElementSphereParams),createGeometry:n.createElementSphereImpostor,createLocationIterator:n.ElementIterator.fromGroup,getLoci:n.getElementLoci,eachLocation:n.eachElement,setUpdateState:(d,p,u)=>{d.createGeometry=p.ignoreHydrogens!==u.ignoreHydrogens||p.ignoreHydrogensVariant!==u.ignoreHydrogensVariant||p.traceOnly!==u.traceOnly||p.stride!==u.stride},mustRecreate:(d,p,u)=>!p.tryUseImpostor||!u},a)}function f(a){return(0,r.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.ElementSphereParams),createGeometry:n.createElementSphereMesh,createLocationIterator:n.ElementIterator.fromGroup,getLoci:n.getElementLoci,eachLocation:n.eachElement,setUpdateState:(d,p,u)=>{d.createGeometry=p.sizeFactor!==u.sizeFactor||p.detail!==u.detail||p.ignoreHydrogens!==u.ignoreHydrogens||p.ignoreHydrogensVariant!==u.ignoreHydrogensVariant||p.traceOnly!==u.traceOnly||p.stride!==u.stride},mustRecreate:(d,p,u)=>p.tryUseImpostor&&!!u},a)}e.StructureElementSphereParams={...o.ComplexMeshParams,...o.ComplexSpheresParams,...e.CommonElementSphereParams};function y(a,d,p,u){return p.tryUseImpostor&&u&&u.extensions.fragDepth&&u.extensions.textureFloat?_(a):g(a)}function _(a){return(0,o.ComplexSpheresVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureElementSphereParams),createGeometry:n.createStructureElementSphereImpostor,createLocationIterator:n.ElementIterator.fromStructure,getLoci:n.getSerialElementLoci,eachLocation:n.eachSerialElement,setUpdateState:(d,p,u)=>{d.createGeometry=p.ignoreHydrogens!==u.ignoreHydrogens||p.ignoreHydrogensVariant!==u.ignoreHydrogensVariant||p.traceOnly!==u.traceOnly||p.stride!==u.stride},mustRecreate:(d,p,u)=>
7087!p.tryUseImpostor||!u},a)}function g(a){return(0,o.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureElementSphereParams),createGeometry:n.createStructureElementSphereMesh,createLocationIterator:n.ElementIterator.fromStructure,getLoci:n.getSerialElementLoci,eachLocation:n.eachSerialElement,setUpdateState:(d,p,u)=>{d.createGeometry=p.sizeFactor!==u.sizeFactor||p.detail!==u.detail||p.ignoreHydrogens!==u.ignoreHydrogens||p.ignoreHydrogensVariant!==u.ignoreHydrogensVariant||p.traceOnly!==u.traceOnly||p.stride!==u.stride},mustRecreate:(d,p,u)=>p.tryUseImpostor&&!!u},a)}})(bM)),bM}var q7;function zce(){return q7||(q7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BallAndStickRepresentationProvider=e.BallAndStickParams=void 0,e.getBallAndStickParams=a,e.BallAndStickRepresentation=d;const t=vZ(),r=bZ(),n=_Z(),i=Ne(),c=Sa(),o=JS(),s=Yr(),h=Lt(),f=Ke(),y=Qf(),_=Tt(),g={"element-sphere":(p,u)=>(0,c.UnitsRepresentation)("Element sphere",p,u,n.ElementSphereVisual),"intra-bond":(p,u)=>(0,c.UnitsRepresentation)("Intra-unit bond cylinder",p,u,t.IntraUnitBondCylinderVisual),"inter-bond":(p,u)=>(0,o.ComplexRepresentation)("Inter-unit bond cylinder",p,u,r.InterUnitBondCylinderVisual),"structure-element-sphere":(p,u)=>(0,o.ComplexRepresentation)("Structure element sphere",p,u,n.StructureElementSphereVisual),"structure-intra-bond":(p,u)=>(0,o.ComplexRepresentation)("Structure intra-unit bond cylinder",p,u,t.StructureIntraUnitBondCylinderVisual)};e.BallAndStickParams={...n.ElementSphereParams,traceOnly:i.ParamDefinition.Boolean(!1,{isHidden:!0}),...t.IntraUnitBondCylinderParams,...r.InterUnitBondCylinderParams,includeParent:i.ParamDefinition.Boolean(!1),unitKinds:(0,y.getUnitKindsParam)(["atomic"]),sizeFactor:i.ParamDefinition.Numeric(.15,{min:.01,max:10,step:.01}),sizeAspectRatio:i.ParamDefinition.Numeric(2/3,{min:.01,max:3,step:.01}),visuals:i.ParamDefinition.MultiSelect(["element-sphere","intra-bond","inter-bond"],i.ParamDefinition.objectToOptions(g)),bumpFrequency:i.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},_.BaseGeometry.ShadingCategory),density:i.ParamDefinition.Numeric(.1,{min:0,max:1,step:.01},_.BaseGeometry.ShadingCategory)};function a(p,u){let m=e.BallAndStickParams;return f.Structure.getSize(u)>=f.Structure.Size.Huge?(m=i.ParamDefinition.clone(m),m.visuals.defaultValue=["element-sphere","intra-bond"]):u.unitSymmetryGroups.length>500&&(m=i.ParamDefinition.clone(m),m.visuals.defaultValue=["structure-element-sphere","structure-intra-bond"]),m}function d(p,u){return h.Representation.createMulti("Ball & Stick",p,u,s.StructureRepresentationStateBuilder,g)}e.BallAndStickRepresentationProvider=(0,s.StructureRepresentationProvider)({name:"ball-and-stick",label:"Ball & Stick",description:"Displays atoms as spheres and bonds as cylinders.",factory:d,getParams:a,defaultValues:i.ParamDefinition.getDefaultValues(e.BallAndStickParams),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"physical"},isApplicable:p=>p.elementCount>0,getData:(p,u)=>u.includeParent?p.asParent():p,mustRecreate:(p,u)=>p.includeParent!==u.includeParent})})(hM)),hM}var _M={},SM={},U7;function Hce(){return U7||(U7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CarbohydrateLinkParams=void 0,e.CarbohydrateLinkVisual=d;const t=Ke(),r=gt(),n=Ge(),i=Ca(),c=at(),o=Br(),s=mr(),h=Ne(),f=zt(),y=_n(),_=Er(),g=rt();function a(b,P,C,l,S){const{links:T,elements:A}=P.carbohydrates,{linkSizeFactor:x}=l,M=t.StructureElement.Location.create(P),D={linkCount:T.length,position:(E,I,B)=>{const w=T[B];n.Vec3.copy(E,A[w.carbohydrateIndexA].geometry.center),n.Vec3.copy(I,A[w.carbohydrateIndexB].geometry.center)},radius:E=>{const I=T[E],B=A[I.carbohydrateIndexA],w=B.unit.rings.all[B.ringIndex];return M.unit=B.unit,M.element=B.unit.elements[w[0]],C.size.size(M)*x}},{mesh:V,boundingSphere:R}=(0,i.createLinkCylinderMesh)(b,D,l,S);if(R)V.setBoundingSphere(R);else if(V.triangleCount>0){const E=g.Sphere3D.expand((0,g.Sphere3D)(),P.boundary.sphere,1*x);V.setBoundingSphere(E)}return V}e.CarbohydrateLinkParams={...s.UnitsMeshParams,...i.LinkCylinderParams,linkSizeFactor:h.ParamDefinition.Numeric(.3,{min:0,max:3,step:.01})};function d(b){return(0,o.ComplexMeshVisual)({defaultProps:h.ParamDefinition.getDefaultValues(e.CarbohydrateLinkParams),createGeometry:a,createLocationIterator:p,getLoci:u,eachLocation:v,setUpdateState:(P,C,l)=>{P.createGeometry=C.linkSizeFactor!==l.linkSizeFactor||C.radialSegments!==l.radialSegments||C.linkCap!==l.linkCap}},b)}function p(b){const{elements:P,links:C}=b.carbohydrates,l=C.length,S=1,T=t.StructureElement.Location.create(b),A=x=>{const M=C[x],D=P[M.carbohydrateIndexA],V=D.unit.rings.all[D.ringIndex];return T.unit=D.unit,T.element=D.unit.elements[V[0]],T};return(0,f.LocationIterator)(l,S,1,A,!0)}function u(b,P,C){const{objectId:l,groupId:S}=b;if(C===l){if(S===y.PickingId.Null)return t.Structure.Loci(P);{const{links:T,elements:A}=P.carbohydrates,x=T[S],M=A[x.carbohydrateIndexA],D=A[x.carbohydrateIndexB];return t.StructureElement.Loci.union((0,_.getAltResidueLociFromId)(P,M.unit,M.residueIndex,M.altId),(0,_.getAltResidueLociFromId)(P,D.unit,D.residueIndex,D.altId))}}return r.EmptyLoci}const m=new Set;function v(b,P,C){let l=!1;if(!t.StructureElement.Loci.is(b)||!t.Structure.areEquivalent(b.structure,P))return!1;const{getLinkIndices:S}=P.carbohydrates;for(const{unit:T,indices:A}of b.elements)t.Unit.isAtomic(T)&&(m.clear(),c.OrderedSet.forEach(A,x=>
7087{const M=S(T,T.elements[x]);for(let D=0,V=M.length;D<V;++D)m.has(M[D])||(m.add(M[D]),C(c.Interval.ofSingleton(M[D]))&&(l=!0))}));return l}})(SM)),SM}var CM={},es={},j7;function Wce(){if(j7)return es;j7=1,Object.defineProperty(es,"__esModule",{value:!0}),es.Pyramid=f,es.TriangularPyramid=_,es.OctagonalPyramid=a,es.PerforatedOctagonalPyramid=p,es.PyramidCage=u,es.OctagonalPyramidCage=v;const e=Ge(),t=to(),r=kS(),n=e.Vec3.create(0,0,-.5),i=e.Vec3.create(0,0,.5),c=(0,e.Vec3)(),o=(0,e.Vec3)(),s=(0,e.Vec3)(),h=(0,e.Vec3)();function f(b){const P=b.length/3,l=(P===3?1:P===4?2:P)+P,S=P===4?P*3+4:l*3,T=(0,t.PrimitiveBuilder)(l,S);for(let A=0;A<P;++A){const x=(A+1)%P;e.Vec3.set(c,b[A*3],b[A*3+1],-.5),e.Vec3.set(o,b[x*3],b[x*3+1],-.5),T.add(c,o,i)}if(P===3)e.Vec3.set(c,b[0],b[1],-.5),e.Vec3.set(o,b[3],b[4],-.5),e.Vec3.set(s,b[6],b[7],-.5),T.add(s,o,c);else if(P===4)e.Vec3.set(c,b[0],b[1],-.5),e.Vec3.set(o,b[3],b[4],-.5),e.Vec3.set(s,b[6],b[7],-.5),e.Vec3.set(h,b[9],b[10],-.5),T.addQuad(h,s,o,c);else for(let A=0;A<P;++A){const x=(A+1)%P;e.Vec3.set(c,b[A*3],b[A*3+1],-.5),e.Vec3.set(o,b[x*3],b[x*3+1],-.5),T.add(n,o,c)}return T.getPrimitive()}let y;function _(){return y||(y=f((0,r.polygon)(3,!0))),y}let g;function a(){return g||(g=f((0,r.polygon)(8,!0))),g}let d;function p(){if(!d){const b=(0,r.polygon)(8,!0),P=new Float32Array(30);for(let l=0;l<8;++l)P[l*3]=b[l*3],P[l*3+1]=b[l*3+1],P[l*3+2]=-.5;P[24]=0,P[25]=0,P[26]=-.5,P[27]=0,P[28]=0,P[29]=.5;const C=[0,1,8,1,2,8,4,5,8,5,6,8,2,3,9,3,4,9,6,7,9,7,0,9];d=(0,t.createPrimitive)(P,C)}return d}function u(b){const P=b.length/3,C=[],l=[];let S=1;C.push(i[0],i[1],i[2]);for(let T=0;T<P;++T)C.push(b[T*3],b[T*3+1],-.5),l.push(0,S),S+=1;for(let T=0;T<P;++T){const A=(T+1)%P;l.push(T+1,A+1)}return{vertices:C,edges:l}}let m;function v(){return m||(m=u((0,r.polygon)(8,!0))),m}return es}var PM={},G7;function $ce(){return G7||(G7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultStarProps=void 0,e.Star=h;
7087const t=Ge(),r=to();e.DefaultStarProps={pointCount:5,outerRadius:1,innerRadius:.5,thickness:.3};const n=t.Vec3.zero(),i=t.Vec3.zero(),c=t.Vec3.zero(),o=t.Vec3.zero(),s=t.Vec3.zero();function h(f){const{outerRadius:y,innerRadius:_,thickness:g,pointCount:a}={...e.DefaultStarProps,...f},d=a*2*2,p=(0,r.PrimitiveBuilder)(d),u=new Float32Array(a*2),m=new Float32Array(a*2);for(let v=0;v<a;++v){const b=v*2,P=v*2+1,C=(b+1)/a*Math.PI,l=(P+1)/a*Math.PI;m[b]=Math.cos(C)*y,m[P]=Math.sin(C)*y,u[b]=Math.cos(l)*_,u[P]=Math.sin(l)*_}t.Vec3.set(n,0,0,g/2),t.Vec3.set(i,0,0,-g/2);for(let v=0;v<a;++v){const b=(v+1)%a;t.Vec3.set(c,m[v*2],m[v*2+1],0),t.Vec3.set(o,u[v*2],u[v*2+1],0),t.Vec3.set(s,m[b*2],m[b*2+1],0),p.add(n,c,o),p.add(o,c,i),p.add(n,o,s),p.add(s,o,i)}return p.getPrimitive()}})(PM)),PM}var TM={},z7;function Xce(){return z7||(z7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.perforatedOctahedronIndices=e.octahedronIndices=e.octahedronVertices=void 0,e.Octahedron=c,e.PerforatedOctahedron=s,e.OctahedronCage=f;const t=to(),r=Gf();e.octahedronVertices=[.5,0,0,-.5,0,0,0,.5,0,0,-.5,0,0,0,.5,0,0,-.5],e.octahedronIndices=[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e.perforatedOctahedronIndices=[0,2,4,0,4,3,1,2,5,1,5,3];const n=[0,2,1,3,2,1,3,0,0,4,1,4,2,4,3,4,0,5,1,5,2,5,3,5];let i;function c(){return i||(i=(0,t.createPrimitive)(e.octahedronVertices,e.octahedronIndices)),i}let o;function s(){return o||(o=(0,t.createPrimitive)(e.octahedronVertices,e.perforatedOctahedronIndices)),o}const h=(0,r.createCage)(e.octahedronVertices,n);function f(){return h}})(TM)),TM}var H7;function Kce(){return H7||(H7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CarbohydrateSymbolParams=void 0,e.CarbohydrateSymbolVisual=F;
7087const t=Ge(),r=FS(),n=Wce(),i=$ce(),c=Xce(),o=Rw(),s=Ke(),h=$t(),f=xf(),y=Jn(),_=Br(),g=Ne(),a=zt(),d=_n(),p=at(),u=gt(),m=Er(),v=Tt(),b=t.Mat4.identity(),P=(0,t.Vec3)(),C=(0,t.Vec3)(),l=2*.806,S=(0,r.Box)(),T=(0,r.PerforatedBox)(),A=(0,n.OctagonalPyramid)(),x=(0,n.PerforatedOctagonalPyramid)(),M=(0,i.Star)({outerRadius:1,innerRadius:.5,thickness:.5,pointCount:5}),D=(0,c.Octahedron)(),V=(0,c.PerforatedOctahedron)(),R=(0,o.DiamondPrism)(),E=(0,o.PentagonalPrism)(),I=(0,o.HexagonalPrism)(),B=(0,o.ShiftedHexagonalPrism)(),w=(0,o.HeptagonalPrism)();function O(k,j,H,G,z){const W=h.MeshBuilder.createState(256,128,z),{detail:X,sizeFactor:Y}=G,K=j.carbohydrates,Q=K.elements.length,J=s.StructureElement.Location.create(j);for(let ae=0;ae<Q;++ae){const te=K.elements[ae],ne=te.unit.rings.all[te.ringIndex],$=(0,f.getSaccharideShape)(te.component.type,ne.length);J.unit=te.unit,J.element=te.unit.elements[ne[0]];const ie=H.size.size(J),Z=ie*Y,re=ie*Y*l,{center:oe,normal:ce,direction:ue}=te.geometry;switch(t.Vec3.add(C,oe,ue),t.Mat4.targetTo(b,oe,C,ce),t.Mat4.setTranslation(b,oe),W.currentGroup=ae*2,$){case f.SaccharideShape.FilledSphere:(0,y.addSphere)(W,oe,Z,X);break;case f.SaccharideShape.FilledCube:t.Mat4.scaleUniformly(b,b,re),h.MeshBuilder.addPrimitive(W,b,S);break;case f.SaccharideShape.CrossedCube:t.Mat4.scaleUniformly(b,b,re),h.MeshBuilder.addPrimitive(W,b,T),t.Mat4.mul(b,b,t.Mat4.rotZ90X180),W.currentGroup+=1,h.MeshBuilder.addPrimitive(W,b,T);break;case f.SaccharideShape.FilledCone:t.Mat4.scaleUniformly(b,b,re*1.2),h.MeshBuilder.addPrimitive(W,b,A);break;case f.SaccharideShape.DevidedCone:t.Mat4.scaleUniformly(b,b,re*1.2),h.MeshBuilder.addPrimitive(W,b,x),t.Mat4.mul(b,b,t.Mat4.rotZ90),W.currentGroup+=1,h.MeshBuilder.addPrimitive(W,b,x);break;case f.SaccharideShape.FlatBox:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re,re,re/2)),h.MeshBuilder.addPrimitive(W,b,S);break;case f.SaccharideShape.FilledStar:t.Mat4.scaleUniformly(b,b,re),t.Mat4.mul(b,b,t.Mat4.rotZY90),h.MeshBuilder.addPrimitive(W,b,M);break;case f.SaccharideShape.FilledDiamond:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re*1.4,re*1.4,re*1.4)),h.MeshBuilder.addPrimitive(W,b,D);break;case f.SaccharideShape.DividedDiamond:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re*1.4,re*1.4,re*1.4)),h.MeshBuilder.addPrimitive(W,b,V),t.Mat4.mul(b,b,t.Mat4.rotY90),W.currentGroup+=1,h.MeshBuilder.addPrimitive(W,b,V);break;case f.SaccharideShape.FlatDiamond:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re,re/2,re/2)),h.MeshBuilder.addPrimitive(W,b,R);break;case f.SaccharideShape.DiamondPrism:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re,re,re/2)),h.MeshBuilder.addPrimitive(W,b,R);break;case f.SaccharideShape.PentagonalPrism:case f.SaccharideShape.Pentagon:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re,re,re/2)),h.MeshBuilder.addPrimitive(W,b,E);break;case f.SaccharideShape.HexagonalPrism:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re,re,re/2)),h.MeshBuilder.addPrimitive(W,b,I);break;case f.SaccharideShape.HeptagonalPrism:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re,re,re/2)),h.MeshBuilder.addPrimitive(W,b,w);break;case f.SaccharideShape.FlatHexagon:default:t.Mat4.mul(b,b,t.Mat4.rotZYZ90),t.Mat4.scale(b,b,t.Vec3.set(P,re/1.5,re,re/2)),h.MeshBuilder.addPrimitive(W,b,B);break}}return h.MeshBuilder.getMesh(W)}e.CarbohydrateSymbolParams={..._.ComplexMeshParams,detail:g.ParamDefinition.Numeric(0,{min:0,max:3,step:1},v.BaseGeometry.CustomQualityParamInfo),sizeFactor:g.ParamDefinition.Numeric(1.75,{min:0,max:10,step:.01})};function F(k){return(0,_.ComplexMeshVisual)({defaultProps:g.ParamDefinition.getDefaultValues(e.CarbohydrateSymbolParams),createGeometry:O,createLocationIterator:L,getLoci:U,eachLocation:N,setUpdateState:(j,H,G)=>{j.createGeometry=H.sizeFactor!==G.sizeFactor||H.detail!==G.detail}},k)}function L(k){const j=k.carbohydrates.elements,H=j.length*2,G=1,z=s.StructureElement.Location.create(k);function W(Y,K){const Q=j[Math.floor(Y/2)],J=Q.unit.rings.all[Q.ringIndex];return z.unit=Q.unit,z.element=Q.unit.elements[J[0]],z}function X(Y,K){return Y%2===1}return(0,a.LocationIterator)(H,G,1,W,!0,X)}function U(k,j,H){const{objectId:G,groupId:z}=k;if(H===G){if(z===d.PickingId.Null)return s.Structure.Loci(j);{const W=j.carbohydrates.elements[Math.floor(z/2)];return(0,m.getAltResidueLociFromId)(j,W.unit,W.residueIndex,W.altId)}}return u.EmptyLoci}const q=new Set;function N(k,j,H){const{getElementIndices:G}=j.carbohydrates;let z=!1;if(!s.StructureElement.Loci.is(k)||!s.Structure.areEquivalent(k.structure,j))return!1;for(const{unit:W,indices:X}of k.elements)s.Unit.isAtomic(W)&&(q.clear(),p.OrderedSet.forEach(X,Y=>{const K=G(W,W.elements[Y]);for(let Q=0,J=K.length;Q<J;++Q)q.has(K[Q])||(q.add(K[Q]),H(p.Interval.ofSingleton(K[Q]*2))&&(z=!0))}));return z}})(CM)),CM}var xM={},W7;function Yce(){return W7||(W7=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.CarbohydrateTerminalLinkParams=void 0,e.CarbohydrateTerminalLinkVisual=p;const t=Ne(),r=Ke(),n=Ge(),i=Ca(),c=mr(),o=Br(),s=zt(),h=at(),f=_n(),y=gt(),_=AT(),g=Er(),a=rt();function d(P,C,l,S,T){const{terminalLinks:A,elements:x}=C.carbohydrates,{terminalLinkSizeFactor:M}=S,D=r.StructureElement.Location.create(C),V={linkCount:A.length,position:(I,B,w)=>{const O=A[w];O.fromCarbohydrate?(n.Vec3.copy(I,x[O.carbohydrateIndex].geometry.center),O.elementUnit.conformation.position(O.elementUnit.elements[O.elementIndex],B)):(O.elementUnit.conformation.position(O.elementUnit.elements[O.elementIndex],I),n.Vec3.copy(B,x[O.carbohydrateIndex].geometry.center))},radius:I=>{const B=A[I];if(B.fromCarbohydrate){const w=x[B.carbohydrateIndex],O=w.unit.rings.all[w.ringIndex];D.unit=w.unit,D.element=w.unit.elements[O[0]]}else D.unit=B.elementUnit,D.element=B.elementUnit.elements[B.elementIndex];return l.size.size(D)*M},style:I=>{const B=A[I],w=B.elementUnit.elements[B.elementIndex],O=(0,_.getElementIdx)(B.elementUnit.model.atomicHierarchy.atoms.type_symbol.value(w));return _.MetalsSet.has(O)?i.LinkStyle.Dashed:i.LinkStyle.Solid}},{mesh:R,boundingSphere:E}=(0,i.createLinkCylinderMesh)(P,V,S,T);if(E)R.setBoundingSphere(E);else if(R.triangleCount>0){const I=a.Sphere3D.expand((0,a.Sphere3D)(),C.boundary.sphere,1*M);R.setBoundingSphere(I)}return R}e.CarbohydrateTerminalLinkParams={...c.UnitsMeshParams,...i.LinkCylinderParams,terminalLinkSizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:3,step:.01})};function p(P){return(0,o.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.CarbohydrateTerminalLinkParams),createGeometry:d,createLocationIterator:u,getLoci:m,eachLocation:b,setUpdateState:(C,l,S)=>{C.createGeometry=l.terminalLinkSizeFactor!==S.terminalLinkSizeFactor||l.radialSegments!==S.radialSegments||l.linkCap!==S.linkCap}},P)}function u(P){const{elements:C,terminalLinks:l}=P.carbohydrates,S=l.length,T=1,A=r.StructureElement.Location.create(P),x=M=>{const D=l[M];if(D.fromCarbohydrate){const V=C[D.carbohydrateIndex],R=V.unit.rings.all[V.ringIndex];A.unit=V.unit,A.element=V.unit.elements[R[0]]}else A.unit=D.elementUnit,A.element=D.elementUnit.elements[D.elementIndex];return A};return(0,s.LocationIterator)(S,T,1,x,!0)}function m(P,C,l){const{objectId:S,groupId:T}=P;if(l===S){if(T===f.PickingId.Null)return r.Structure.Loci(C);{const{terminalLinks:A,elements:x}=C.carbohydrates,M=A[T],D=x[M.carbohydrateIndex];return r.StructureElement.Loci.union((0,g.getAltResidueLociFromId)(C,D.unit,D.residueIndex,D.altId),(0,g.getAltResidueLoci)(C,M.elementUnit,M.elementUnit.elements[M.elementIndex]))}}return y.EmptyLoci}const v=new Set;function b(P,C,l){let S=!1;if(!r.StructureElement.Loci.is(P)||!r.Structure.areEquivalent(P.structure,C))return!1;const{getTerminalLinkIndices:T}=C.carbohydrates;for(const{unit:A,indices:x}of P.elements)r.Unit.isAtomic(A)&&(v.clear(),h.OrderedSet.forEach(x,M=>{const D=T(A,A.elements[M]);for(let V=0,R=D.length;V<R;++V)v.has(D[V])||(v.add(D[V]),l(h.Interval.ofSingleton(D[V]))&&(S=!0))}));return S}})(xM)),xM}var $7;function Qce(){return $7||($7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CarbohydrateRepresentationProvider=e.CarbohydrateParams=void 0,e.getCarbohydrateParams=_,e.CarbohydrateRepresentation=g;const t=Tt(),r=Ke(),n=Lt(),i=Ne(),c=JS(),o=Yr(),s=Hce(),h=Kce(),f=Yce(),y={"carbohydrate-symbol":(a,d)=>(0,c.ComplexRepresentation)("Carbohydrate symbol mesh",a,d,h.CarbohydrateSymbolVisual),"carbohydrate-link":(a,d)=>(0,c.ComplexRepresentation)("Carbohydrate link cylinder",a,d,s.CarbohydrateLinkVisual),"carbohydrate-terminal-link":(a,d)=>(0,c.ComplexRepresentation)("Carbohydrate terminal link cylinder",a,d,f.CarbohydrateTerminalLinkVisual)};e.CarbohydrateParams={...h.CarbohydrateSymbolParams,...s.CarbohydrateLinkParams,...f.CarbohydrateTerminalLinkParams,visuals:i.ParamDefinition.MultiSelect(["carbohydrate-symbol","carbohydrate-link","carbohydrate-terminal-link"],i.ParamDefinition.objectToOptions(y)),bumpFrequency:i.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},t.BaseGeometry.ShadingCategory),density:i.ParamDefinition.Numeric(.2,{min:0,max:1,step:.
708701},t.BaseGeometry.ShadingCategory)};function _(a,d){return e.CarbohydrateParams}function g(a,d){return n.Representation.createMulti("Carbohydrate",a,d,o.StructureRepresentationStateBuilder,y)}e.CarbohydrateRepresentationProvider=(0,o.StructureRepresentationProvider)({name:"carbohydrate",label:"Carbohydrate",description:"Displays carbohydrate symbols (3D SNFG).",factory:g,getParams:_,defaultValues:i.ParamDefinition.getDefaultValues(e.CarbohydrateParams),defaultColorTheme:{name:"carbohydrate-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:a=>a.models.some(d=>r.Model.hasCarbohydrate(d))})})(_M)),_M}var AM={},MM={},Hn={},DM={},df={},X7;function Kw(){if(X7)return df;X7=1,Object.defineProperty(df,"__esModule",{value:!0}),df.eachPolymerBackboneLink=i,df.eachPolymerBackboneElement=s,df.eachAtomicPolymerBackboneElement=h;const e=J_(),t=Ga(),r=Ke(),n=io();function i(y,_){switch(y.kind){case r.Unit.Kind.Atomic:return c(y,_);case r.Unit.Kind.Spheres:case r.Unit.Kind.Gaussians:return o(y,_)}}function c(y,_){const g=y.model.atomicRanges.cyclicPolymerMap,a=t.SortedRanges.transientSegments((0,n.getPolymerRanges)(y),y.elements),d=e.Segmentation.transientSegments(y.model.atomicHierarchy.residueAtomSegments,y.elements),p=y.model.atomicHierarchy.derived.residue.traceElementIndex,{moleculeType:u}=y.model.atomicHierarchy.derived.residue;let m=-1,v=-1,b=!0,P=-1,C=0;for(;a.hasNext;){for(b=!0,P=C,d.setSegment(a.move());d.hasNext;){if(b){const S=d.move().index;if(++C,!d.hasNext)continue;b=!1,v=S}const l=d.move().index;m=v,v=l,_(p[m],p[v],C-1,C,u[m]),++C}g.has(v)&&(m=v,v=g.get(m),_(p[m],p[v],C-1,P,u[m]))}}function o(y,_){const g=t.SortedRanges.transientSegments((0,n.getPolymerRanges)(y),y.elements),{elements:a}=y;let d=!0,p=0;for(;g.hasNext;){d=!0;const u=g.move(),m=u.start,v=u.end;for(let b=m,P=v;b<P;++b){if(d){if(++b,++p,b>P)continue;d=!1}_(a[b-1],a[b],p-1,p,0),++p}}}function s(y,_){switch(y.kind){case r.Unit.Kind.Atomic:return h(y,_);case r.Unit.Kind.Spheres:case r.Unit.Kind.Gaussians:return f(y,_)}}function h(y,_){const g=t.SortedRanges.transientSegments((0,n.getPolymerRanges)(y),y.elements),a=e.Segmentation.transientSegments(y.model.atomicHierarchy.residueAtomSegments,y.elements),d=y.model.atomicHierarchy.derived.residue.traceElementIndex;let p=0;for(;g.hasNext;)for(a.setSegment(g.move());a.hasNext;){const u=a.move().index;_(d[u],p),++p}}function f(y,_){const g=t.SortedRanges.transientSegments((0,n.getPolymerRanges)(y),y.elements),{elements:a}=y;let d=0;for(;g.hasNext;){const p=g.move(),u=p.start,m=p.end;for(let v=u,b=m;v<b;++v)_(a[v],d),++d}}return df}var Ls={},K7;function Zce(){if(K7)return Ls;K7=1,Object.defineProperty(Ls,"__esModule",{value:!0}),Ls.CoarsePolymerGapIterator=Ls.AtomicPolymerGapIterator=void 0,Ls.PolymerGapIterator=n;const e=Ke(),t=Ga(),r=io();function n(s,h){switch(h.kind){case e.Unit.Kind.Atomic:return new c(s,h);case e.Unit.Kind.Spheres:case e.Unit.Kind.Gaussians:return new o(s,h)}}function i(s,h){return{centerA:e.StructureElement.Location.create(s,h),centerB:e.StructureElement.Location.create(s,h)}}class c{move(){const{elements:h,residueIndex:f}=this.unit,y=this.gapIt.move();return this.value.centerA.element=this.traceElementIndex[f[h[y.start]]],this.value.centerB.element=this.traceElementIndex[f[h[y.end-1]]],this.hasNext=this.gapIt.hasNext,this.value}constructor(h,f){this.unit=f,this.hasNext=!1,this.traceElementIndex=f.model.atomicHierarchy.derived.residue.traceElementIndex,this.gapIt=t.SortedRanges.transientSegments((0,r.getGapRanges)(f),f.elements),this.value=i(h,f),this.hasNext=this.gapIt.hasNext}}Ls.AtomicPolymerGapIterator=c;class o{move(){const h=this.gapIt.move();return this.value.centerA.element=this.unit.elements[h.start],this.value.centerB.element=this.unit.elements[h.end-1],this.hasNext=this.gapIt.hasNext,this.value}constructor(h,f){this.unit=f,this.hasNext=!1,this.gapIt=t.SortedRanges.transientSegments((0,r.getGapRanges)(f),f.elements),this.value=i(h,f),this.hasNext=this.gapIt.hasNext}}return Ls.CoarsePolymerGapIterator=o,Ls}var Ns={},ll={},tT={},Y7;function Jce(){if(Y7)return tT;
7087Y7=1,Object.defineProperty(tT,"__esModule",{value:!0}),tT.calcHelixOrientation=i;const e=J_(),t=Ga(),r=at(),n=Ge();function i(c){const{x:o,y:s,z:h}=c.atomicConformation,{polymerType:f,traceElementIndex:y}=c.atomicHierarchy.derived.residue,_=f.length,g=r.OrderedSet.ofBounds(0,c.atomicConformation.atomId.rowCount),a=t.SortedRanges.transientSegments(c.atomicRanges.polymerRanges,g),d=e.Segmentation.transientSegments(c.atomicHierarchy.residueAtomSegments,g),p=new Float32Array(_*3),u=new Float32Array(_*3);let m=0,v=-1,b=-1;const P=(0,n.Vec3)(),C=(0,n.Vec3)(),l=(0,n.Vec3)(),S=(0,n.Vec3)(),T=(0,n.Vec3)(),A=(0,n.Vec3)(),x=(0,n.Vec3)(),M=(0,n.Vec3)(),D=(0,n.Vec3)(),V=(0,n.Vec3)(),R=(0,n.Vec3)(),E=(0,n.Vec3)(),I=(0,n.Vec3)(),B=(0,n.Vec3)();for(;a.hasNext;){const w=a.move();for(d.setSegment(w),m=-1,b=-1;d.hasNext;){m+=1;const{index:N}=d.move();m===0&&(b=N),v=N-2;const k=v*3;n.Vec3.copy(P,C),n.Vec3.copy(C,l),n.Vec3.copy(l,S);const j=y[N];if(n.Vec3.set(S,o[j],s[j],h[j]),m<3)continue;n.Vec3.sub(T,C,P),n.Vec3.sub(A,l,C),n.Vec3.sub(x,S,l),n.Vec3.sub(R,T,A),n.Vec3.sub(E,A,x),n.Vec3.cross(I,R,E),n.Vec3.normalize(I,I),n.Vec3.toArray(I,u,k);const H=Math.cos(n.Vec3.angle(R,E)),G=n.Vec3.magnitude(R),z=n.Vec3.magnitude(E),W=Math.sqrt(z*G)/Math.max(2,2*(1-H));n.Vec3.scale(M,R,W/G),n.Vec3.sub(M,C,M),n.Vec3.toArray(M,p,k),n.Vec3.scale(D,E,W/z),n.Vec3.sub(D,l,D),n.Vec3.toArray(D,p,k+3),n.Vec3.copy(B,I)}const O=b*3;n.Vec3.fromArray(M,p,O+3),n.Vec3.fromArray(D,p,O+6),n.Vec3.normalize(I,n.Vec3.sub(I,M,D));const F=y[b];n.Vec3.set(P,o[F],s[F],h[F]),n.Vec3.copy(V,P),n.Vec3.projectPointOnVector(V,V,I,M),n.Vec3.toArray(V,p,O);const L=v+2,U=L*3;n.Vec3.fromArray(M,p,U-3),n.Vec3.fromArray(D,p,U-6),n.Vec3.normalize(I,n.Vec3.sub(I,M,D));const q=y[L];n.Vec3.set(P,o[q],s[q],h[q]),n.Vec3.copy(V,P),n.Vec3.projectPointOnVector(V,V,I,M),n.Vec3.toArray(V,p,U)}return{centers:p}}return tT}var Q7;function SZ(){if(Q7)return ll;
7087Q7=1,Object.defineProperty(ll,"__esModule",{value:!0}),ll.HelixOrientationProvider=ll.HelixOrientationParams=void 0;const e=Pr(),t=uI(),r=Jce();return ll.HelixOrientationParams={},ll.HelixOrientationProvider=t.CustomModelProperty.createProvider({label:"Helix Orientation",descriptor:(0,e.CustomPropertyDescriptor)({name:"molstar_helix_orientation"}),type:"dynamic",defaultParams:{},getParams:()=>({}),isApplicable:n=>!0,obtain:async(n,i)=>({value:(0,r.calcHelixOrientation)(i)})}),ll}var Z7;function eue(){if(Z7)return Ns;Z7=1,Object.defineProperty(Ns,"__esModule",{value:!0}),Ns.CoarsePolymerTraceIterator=Ns.AtomicPolymerTraceIterator=void 0,Ns.PolymerTraceIterator=y;const e=Ke(),t=dt(),r=Ge(),n=Ga(),i=io(),c=Pl(),o=SZ(),s=J_();function h(P){return t.SecondaryStructureType.is(P,t.SecondaryStructureType.Flag.Helix)}function f(P){return t.SecondaryStructureType.is(P,t.SecondaryStructureType.Flag.Beta)}function y(P,C,l={}){switch(P.kind){case e.Unit.Kind.Atomic:return new m(P,C,l);case e.Unit.Kind.Spheres:case e.Unit.Kind.Gaussians:return new b(P,C)}}const _=t.SecondaryStructureType.create(t.SecondaryStructureType.Flag.NA);function g(P,C){return{center:e.StructureElement.Location.create(P,C),centerPrev:e.StructureElement.Location.create(P,C),centerNext:e.StructureElement.Location.create(P,C),first:!1,last:!1,initial:!1,final:!1,secStrucFirst:!1,secStrucLast:!1,secStrucType:_,moleculeType:t.MoleculeType.Unknown,coarseBackboneFirst:!1,coarseBackboneLast:!1,p0:(0,r.Vec3)(),p1:(0,r.Vec3)(),p2:(0,r.Vec3)(),p3:(0,r.Vec3)(),p4:(0,r.Vec3)(),d12:(0,r.Vec3)(),d23:(0,r.Vec3)()}}var a;(function(P){P[P.nextPolymer=0]="nextPolymer",P[P.nextResidue=1]="nextResidue"})(a||(a={}));const d=(0,r.Vec3)(),p=(0,r.Vec3)(),u=(0,r.Vec3)();class m{atomicPos(C,l){l!==-1&&(C[0]=this.atomicConformation.x[l],C[1]=this.atomicConformation.y[l],C[2]=this.atomicConformation.z[l])}pos(C,l,S){const T=this.traceElementIndex[l];this.helixOrientationCenters&&h(S)?r.Vec3.fromArray(C,this.helixOrientationCenters,l*3):this.atomicPos(C,T)}updateResidueSegmentRange(C){const{index:l}=this.residueAtomSegments;this.residueSegmentMin=l[this.polymerRanges[C.index*2]],this.residueSegmentMax=l[this.polymerRanges[C.index*2+1]]}getResidueIndex(C){if(C<this.residueSegmentMin){const l=this.cyclicPolymerMap.get(this.residueSegmentMin);l!==void 0?C=l-(this.residueSegmentMin-C-1):C=this.residueSegmentMin}else if(C>this.residueSegmentMax){const l=this.cyclicPolymerMap.get(this.residueSegmentMax);l!==void 0?C=l+(C-this.residueSegmentMax-1):C=this.residueSegmentMax}return C}getSecStruc(C){if(this.secondaryStructure){const{type:l,getIndex:S}=this.secondaryStructure,T=l[S(C)];return h(T)?t.SecondaryStructureType.Flag.Helix:T}else return _}setControlPoint(C,l,S,T,A){f(A)||this.helixOrientationCenters&&h(A)?r.Vec3.scale(C,r.Vec3.add(C,l,r.Vec3.add(C,T,r.Vec3.add(C,S,S))),1/4):r.Vec3.copy(C,S)}setFromToVector(C,l,S){this.helixOrientationCenters&&h(S)?r.Vec3.set(C,1,0,0):(this.atomicPos(p,this.directionFromElementIndex[l]),this.atomicPos(u,this.directionToElementIndex[l]),r.Vec3.sub(C,u,p))}setDirection(C,l,S,T){r.Vec3.matchDirection(p,l,S),r.Vec3.matchDirection(u,T,S),r.Vec3.scale(C,r.Vec3.add(C,p,r.Vec3.add(C,u,r.Vec3.add(C,S,S))),1/4)}move(){const{residueIt:C,polymerIt:l,value:S}=this;if(this.state===a.nextPolymer){for(;l.hasNext;)if(this.polymerSegment=l.move(),C.setSegment(this.polymerSegment),this.updateResidueSegmentRange(this.polymerSegment),C.hasNext){this.state=a.nextResidue;const T=this.residueAtomSegments.index[this.unit.elements[this.polymerSegment.start]],A=this.getResidueIndex(T-1);this.currSecStrucType=T===A?_:this.getSecStruc(A),this.nextSecStrucType=this.getSecStruc(T),this.currCoarseBackbone=this.directionFromElementIndex[A]===-1||this.directionToElementIndex[A]===-1,this.nextCoarseBackbone=this.directionFromElementIndex[T]===-1||this.directionToElementIndex[T]===-1;break}}if(this.state===a.nextResidue){const{index:T}=C.move(),A=this.getResidueIndex(T-3),x=this.getResidueIndex(T-2),M=this.getResidueIndex(T-1),D=this.getResidueIndex(T+1),V=this.getResidueIndex(T+2),R=this.getResidueIndex(T+3);this.prevSecStrucType=this.getSecStruc(M),this.currSecStrucType=this.getSecStruc(T),this.nextSecStrucType=T===D?_:this.getSecStruc(D),this.prevCoarseBackbone=this.currCoarseBackbone,this.currCoarseBackbone=this.nextCoarseBackbone,this.nextCoarseBackbone=this.directionFromElementIndex[D]===-1||this.directionToElementIndex[D]===-1,S.secStrucType=this.currSecStrucType,S.secStrucFirst=this.prevSecStrucType!==this.currSecStrucType,S.secStrucLast=this.currSecStrucType!==this.nextSecStrucType,S.coarseBackboneFirst=this.prevCoarseBackbone!==this.currCoarseBackbone,S.coarseBackboneLast=this.currCoarseBackbone!==this.nextCoarseBackbone,S.first=T===this.residueSegmentMin,S.last=T===this.residueSegmentMax,S.moleculeType=this.moleculeType[T],S.initial=T===M,S.final=T===D,S.centerPrev.element=this.traceElementIndex[M],S.center.element=this.traceElementIndex[T],S.centerNext.element=this.traceElementIndex[D];const E=this.getSecStruc(A),I=this.getSecStruc(x),B=this.getSecStruc(M),w=this.getSecStruc(T),O=this.getSecStruc(D),F=this.getSecStruc(V),L=this.getSecStruc(R);this.pos(this.p0,A,E),this.pos(this.p1,x,I),this.pos(this.p2,M,B),this.pos(this.p3,T,
7087w),this.pos(this.p4,D,O),this.pos(this.p5,V,F),this.pos(this.p6,R,L);const U=h(E),q=h(I),N=h(B),k=h(w),j=h(O),H=h(F),G=h(L);this.helixOrientationCenters&&!(k&&S.secStrucFirst&&S.secStrucLast)&&(k!==N?k?(r.Vec3.copy(this.p0,this.p3),r.Vec3.copy(this.p1,this.p3),r.Vec3.copy(this.p2,this.p3)):N&&(r.Vec3.scale(d,r.Vec3.sub(d,this.p2,this.p3),2),r.Vec3.add(this.p2,this.p3,d),r.Vec3.add(this.p1,this.p2,d),r.Vec3.add(this.p0,this.p1,d)):k!==q?k?(r.Vec3.copy(this.p0,this.p2),r.Vec3.copy(this.p1,this.p2)):q&&(r.Vec3.scale(d,r.Vec3.sub(d,this.p1,this.p2),2),r.Vec3.add(this.p1,this.p2,d),r.Vec3.add(this.p0,this.p1,d)):k!==U&&(k?r.Vec3.copy(this.p0,this.p1):U&&(r.Vec3.scale(d,r.Vec3.sub(d,this.p0,this.p1),2),r.Vec3.add(this.p0,this.p1,d))),k!==j?k?(r.Vec3.copy(this.p4,this.p3),r.Vec3.copy(this.p5,this.p3),r.Vec3.copy(this.p6,this.p3)):j&&(r.Vec3.scale(d,r.Vec3.sub(d,this.p4,this.p3),2),r.Vec3.add(this.p4,this.p3,d),r.Vec3.add(this.p5,this.p4,d),r.Vec3.add(this.p6,this.p5,d)):k!==H?k?(r.Vec3.copy(this.p5,this.p4),r.Vec3.copy(this.p6,this.p4)):H&&(r.Vec3.scale(d,r.Vec3.sub(d,this.p5,this.p4),2),r.Vec3.add(this.p5,this.p4,d),r.Vec3.add(this.p6,this.p5,d)):k!==G&&(k?r.Vec3.copy(this.p6,this.p5):G&&(r.Vec3.scale(d,r.Vec3.sub(d,this.p6,this.p5),2),r.Vec3.add(this.p6,this.p5,d)))),this.currCoarseBackbone?(r.Vec3.triangleNormal(this.d01,this.p1,this.p2,this.p3),r.Vec3.triangleNormal(this.d12,this.p2,this.p3,this.p4),r.Vec3.triangleNormal(this.d23,this.p3,this.p4,this.p5),r.Vec3.triangleNormal(this.d34,this.p4,this.p5,this.p6)):(this.setFromToVector(this.d01,M,B),this.setFromToVector(this.d12,T,w),this.setFromToVector(this.d23,D,O),this.setFromToVector(this.d34,V,F));const z=k&&this.helixOrientationCenters,W=1.5;T===M||w!==B&&z?(r.Vec3.setMagnitude(d,r.Vec3.sub(d,this.p3,this.p4),W),r.Vec3.add(this.p2,this.p3,d),r.Vec3.add(this.p1,this.p2,d),r.Vec3.add(this.p0,this.p1,d)):M===x||w!==I&&z?(r.Vec3.setMagnitude(d,r.Vec3.sub(d,this.p2,this.p3),W),r.Vec3.add(this.p1,this.p2,d),r.Vec3.add(this.p0,this.p1,d)):(x===A||w!==E&&z)&&(r.Vec3.setMagnitude(d,r.Vec3.sub(d,this.p1,this.p2),W),r.Vec3.add(this.p0,this.p1,d)),T===D||w!==O&&z?(r.Vec3.setMagnitude(d,r.Vec3.sub(d,this.p3,this.p2),W),r.Vec3.add(this.p4,this.p3,d),r.Vec3.add(this.p5,this.p4,d),r.Vec3.add(this.p6,this.p5,d)):D===V||w!==F&&z?(r.Vec3.setMagnitude(d,r.Vec3.sub(d,this.p4,this.p3),W),r.Vec3.add(this.p5,this.p4,d),r.Vec3.add(this.p6,this.p5,d)):(V===R||w!==L&&z)&&(r.Vec3.setMagnitude(d,r.Vec3.sub(d,this.p5,this.p4),W),r.Vec3.add(this.p6,this.p5,d)),this.setControlPoint(S.p0,this.p0,this.p1,this.p2,I),this.setControlPoint(S.p1,this.p1,this.p2,this.p3,B),this.setControlPoint(S.p2,this.p2,this.p3,this.p4,w),this.setControlPoint(S.p3,this.p3,this.p4,this.p5,O),this.setControlPoint(S.p4,this.p4,this.p5,this.p6,F),this.setDirection(S.d12,this.d01,this.d12,this.d23),this.setDirection(S.d23,this.d12,this.d23,this.d34),C.hasNext||(this.state=a.nextPolymer)}return this.hasNext=C.hasNext||l.hasNext,this.value}constructor(C,l,S={}){var T;if(this.unit=C,this.state=a.nextPolymer,this.p0=(0,r.Vec3)(),this.p1=(0,r.Vec3)(),this.p2=(0,r.Vec3)(),this.p3=(0,r.Vec3)(),this.p4=(0,r.Vec3)(),this.p5=(0,r.Vec3)(),this.p6=(0,r.Vec3)(),this.d01=(0,r.Vec3)(),this.d12=(0,r.Vec3)(),this.d23=(0,r.Vec3)(),this.d34=(0,r.Vec3)(),this.hasNext=!1,this.atomicConformation=C.model.atomicConformation,this.residueAtomSegments=C.model.atomicHierarchy.residueAtomSegments,this.polymerRanges=C.model.atomicRanges.polymerRanges,this.traceElementIndex=C.model.atomicHierarchy.derived.residue.traceElementIndex,this.directionFromElementIndex=C.model.atomicHierarchy.derived.residue.directionFromElementIndex,this.directionToElementIndex=C.model.atomicHierarchy.derived.residue.directionToElementIndex,this.moleculeType=C.model.atomicHierarchy.derived.residue.moleculeType,this.cyclicPolymerMap=C.model.atomicRanges.cyclicPolymerMap,this.polymerIt=n.SortedRanges.transientSegments(this.polymerRanges,C.elements),this.residueIt=s.Segmentation.transientSegments(this.residueAtomSegments,C.elements),this.value=g(l,C),this.hasNext=this.residueIt.hasNext&&this.polymerIt.hasNext,S.ignoreSecondaryStructure||(this.secondaryStructure=(T=c.SecondaryStructureProvider.get(l).value)===null||T===void 0?void 0:T.get(C.invariantId)),S.useHelixOrientation){const A=o.HelixOrientationProvider.get(C.model).value;if(!A)throw new Error("missing helix-orientation");this.helixOrientationCenters=A.centers}}}Ns.AtomicPolymerTraceIterator=m;var v;(function(P){P[P.nextPolymer=0]="nextPolymer",P[P.nextElement=1]="nextElement"})(v||(v={}));class b{getElementIndex(C){return Math.min(Math.max(this.polymerSegment.start,C),this.polymerSegment.end-1)}pos(C,l){const S=this.unit.elements[l];C[0]=this.conformation.x[S],C[1]=this.conformation.y[S],C[2]=this.conformation.z[S]}move(){if(this.state===v.nextPolymer){for(;this.polymerIt.hasNext;)if(this.polymerSegment=this.polymerIt.move(),this.elementIndex=this.polymerSegment.start,this.elementIndex<this.polymerSegment.end
7087){this.state=v.nextElement;break}}if(this.state===v.nextElement){const C=this.getElementIndex(this.elementIndex-2),l=this.getElementIndex(this.elementIndex-1),S=this.getElementIndex(this.elementIndex+1),T=this.getElementIndex(this.elementIndex+2);this.value.centerPrev.element=this.value.center.unit.elements[l],this.value.center.element=this.value.center.unit.elements[this.elementIndex],this.value.centerNext.element=this.value.center.unit.elements[S],this.pos(this.value.p0,C),this.pos(this.value.p1,l),this.pos(this.value.p2,this.elementIndex),this.pos(this.value.p3,S),this.pos(this.value.p4,T);const A=.5;this.elementIndex===l?(r.Vec3.scale(d,r.Vec3.sub(d,this.value.p2,this.value.p3),A),r.Vec3.add(this.value.p1,this.value.p2,d),r.Vec3.add(this.value.p0,this.value.p1,d)):l===C&&(r.Vec3.scale(d,r.Vec3.sub(d,this.value.p1,this.value.p2),A),r.Vec3.add(this.value.p0,this.value.p1,d)),this.elementIndex===S?(r.Vec3.scale(d,r.Vec3.sub(d,this.value.p2,this.value.p1),A),r.Vec3.add(this.value.p3,this.value.p2,d),r.Vec3.add(this.value.p4,this.value.p3,d)):S===T&&(r.Vec3.scale(d,r.Vec3.sub(d,this.value.p3,this.value.p2),A),r.Vec3.add(this.value.p4,this.value.p3,d)),this.value.first=this.elementIndex===this.polymerSegment.start,this.value.last=this.elementIndex===this.polymerSegment.end-1,this.elementIndex+1>=this.polymerSegment.end&&(this.state=v.nextPolymer)}return this.hasNext=this.elementIndex+1<this.polymerSegment.end||this.polymerIt.hasNext,this.elementIndex+=1,this.value}constructor(C,l){switch(this.unit=C,this.state=v.nextPolymer,this.hasNext=!1,this.polymerIt=n.SortedRanges.transientSegments((0,i.getPolymerRanges)(C),C.elements),this.value=g(l,C),r.Vec3.set(this.value.d12,1,0,0),r.Vec3.set(this.value.d23,1,0,0),C.kind){case e.Unit.Kind.Spheres:this.conformation=C.model.coarseConformation.spheres;break;case e.Unit.Kind.Gaussians:this.conformation=C.model.coarseConformation.gaussians;break}this.hasNext=this.polymerIt.hasNext}}return Ns.CoarsePolymerTraceIterator=b,Ns}var qs={},J7;function tue(){if(J7)return qs;J7=1,Object.defineProperty(qs,"__esModule",{value:!0}),qs.createCurveSegmentState=d,qs.interpolateCurveSegment=p,qs.interpolatePointsAndTangents=b,qs.interpolateNormals=R,qs.interpolateSizes=E;const e=Ge(),t=ir(),r=e.Vec3.fromArray,n=e.Vec3.toArray,i=e.Vec3.normalize,c=e.Vec3.sub,o=e.Vec3.spline,s=e.Vec3.slerp,h=e.Vec3.copy,f=e.Vec3.cross,y=e.Vec3.orthogonalize,_=e.Vec3.matchDirection,g=e.Vec3.scale,a=e.Vec3.add;function d(I){const B=I+1,w=B*3;return{curvePoints:new Float32Array(w),tangentVectors:new Float32Array(w),normalVectors:new Float32Array(w),binormalVectors:new Float32Array(w),widthValues:new Float32Array(B),heightValues:new Float32Array(B),linearSegments:I}}function p(I,B,w,O){b(I,B,w,O),R(I,B)}const u=(0,e.Vec3)(),m=(0,e.Vec3)(),v=(0,e.Vec3)();function b(I,B,w,O){const{curvePoints:F,tangentVectors:L,linearSegments:U}=I,{p0:q,p1:N,p2:k,p3:j,p4:H,secStrucFirst:G,secStrucLast:z}=B,W=1-O,X=G?.5:w,Y=z?.5:w;for(let K=0;K<=U;++K){const Q=K*1/U;if(Q<W){const J=(0,t.lerp)(X,w,Q);o(v,q,N,k,j,Q+O,J),o(u,q,N,k,j,Q+O+.01,X),o(m,q,N,k,j,Q+O-.01,X)}else{const J=(0,t.lerp)(w,Y,Q);o(v,N,k,j,H,Q-W,J),o(u,N,k,j,H,Q-W+.01,J),o(m,N,k,j,H,Q-W-.01,J)}n(v,F,K*3),i(C,c(C,u,m)),n(C,L,K*3)}}const P=(0,e.Vec3)(),C=(0,e.Vec3)(),l=(0,e.Vec3)(),S=(0,e.Vec3)(),T=(0,e.Vec3)(),A=(0,e.Vec3)(),x=(0,e.Vec3)(),M=(0,e.Vec3)(),D=(0,e.Vec3)(),V=(0,e.Vec3)();function R(I,B){const{curvePoints:w,tangentVectors:O,normalVectors:F,binormalVectors:L}=I,{d12:U,d23:q}=B,N=w.length/3;r(x,O,0),r(M,O,(N-1)*3),y(D,x,U),y(V,M,q),_(V,V,D),h(T,D);const k=N-1;for(let j=0;j<N;++j){const H=(0,t.smoothstep)(0,k,j)*k,G=j===0?0:1/(N-H);r(C,O,j*3),y(l,C,s(P,T,V,G)),n(l,F,j*3),h(T,l),i(S,f(S,C,l)),n(S,L,j*3)}for(let j=1;j<k;++j)r(T,F,(j-1)*3),r(l,F,j*3),r(A,F,(j+1)*3),g(l,a(l,T,a(l,A,l)),1/3),n(l,F,j*3),r(C,O,j*3),i(S,f(S,C,l)),n(S,L,j*3)}function E(I,B,w,O,F,L,U,q){const{widthValues:N,heightValues:k,linearSegments:j}=I,H=1-q;for(let G=0;G<=j;++G){const z=G*1/j;z<H?(N[G]=(0,t.lerp)(B,w,z+q),k[G]=(0,t.lerp)(F,L,z+q)):(N[G]=(0,t.lerp)(w,O,z-H),k[G]=(0,t.lerp)(L,U,z-H))}}return qs}var eW;function io(){return eW||(eW=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.PolymerGapLocationIterator=e.PolymerLocationIterator=e.OverhangFactor=e.NucleicShift=e.StandardShift=e.HelixTension=e.StandardTension=void 0,e.getPolymerRanges=h,e.getGapRanges=f,e.getPolymerElementLoci=g,e.eachAtomicUnitTracedElement=d,e.eachPolymerElement=u,e.getPolymerGapElementLoci=m,e.eachPolymerGapElement=v;const t=At,r=Ke(),n=at(),i=gt(),c=zt(),o=_n(),s=Er();t.__exportStar(Kw(),e),t.__exportStar(Zce(),e),t.__exportStar(eue(),e),t.__exportStar(tue(),e),e.StandardTension=.5,e.HelixTension=.9,e.StandardShift=.5,e.NucleicShift=.3,e.OverhangFactor=2;function h(b){switch(b.kind){case r.Unit.Kind.Atomic:return b.model.atomicRanges.polymerRanges;case r.Unit.Kind.Spheres:return b.model.coarseHierarchy.spheres.polymerRanges;case r.Unit.Kind.Gaussians:return b.model.coarseHierarchy.gaussians.polymerRanges}}function f(b){switch(b.kind){case r.Unit.Kind.Atomic:return b.model.atomicRanges.gapRanges;case r.Unit.Kind.Spheres:return b.model.coarseHierarchy.spheres.gapRanges;case r.Unit.Kind.Gaussians:return b.model.coarseHierarchy.gaussians.gapRanges}}var y;(function(b){function P(C,l){const{group:S,structure:T}=C,A=S.units[0].polymerElements,x=A.length,M=S.units.length,D=r.StructureElement.Location.create(T),V=(I,B)=>{const w=S.units[B];return D.unit=w,D.element=A[I],D},R=!!l?.asSecondary;function E(I,B){return R}return(0,c.LocationIterator)(x,M,1,V,!1,E)}b.fromGroup=P})(y||(e.PolymerLocationIterator=y={}));var _;(function(b){function P(C,l){const{group:S,structure:T}=C,A=S.units[0].gapElements,x=A.length,M=S.units.length,D=r.StructureElement.Location.create(T),V=(I,B)=>{const w=S.units[B];return D.unit=w,D.element=A[I],D},R=!!l?.asSecondary;function E(I,B){return R}return(0,c.LocationIterator)(x,M,1,V,!1,E)}b.fromGroup=P})(_||(e.PolymerGapLocationIterator=_={}));function g(b,P,C){const{objectId:l,instanceId:S,groupId:T}=b;if(C===l){const{structure:A,group:x}=P,M=x.units[S];if(T===o.PickingId.Null){const D=n.OrderedSet.ofRange(0,M.elements.length);return r.StructureElement.Loci(A.target,[{unit:M,indices:D}])}else{if(r.Unit.isAtomic(M))return(0,s.getResidueLoci)(A,M,M.polymerElements[T]);{const{elements:D}=M,V=M.polymerElements[T],R=n.OrderedSet.indexOf(D,V);if(R!==-1){const E=n.OrderedSet.ofSingleton(R);return r.StructureElement.Loci(A,[{unit:M,indices:E}])}}}}return i.EmptyLoci}function a(b,P,C,l,S,T){let A=-1,x=-1;for(let D=S;D<=T;D++){const V=C[D];if(!(V<0)&&(A=n.OrderedSet.indexOf(P,V),A>=0)){x=D;break}}if(A<0)return!1;let M=A;for(let D=T;D>x;D--){const V=C[D];if(V<0)continue;const R=n.OrderedSet.indexOf(P,V);if(R>=0){M=R;break}}return l(n.Interval.ofRange(b+A,b+M))}function d(b,P,C,l,S){let T=!1;const{elements:A}=S.unit,{traceElementIndex:x}=S.unit.model.atomicHierarchy.derived.residue,{index:M}=S.unit.model.atomicHierarchy.residueAtomSegments,D=C(S.unit);if(n.Interval.is(S.indices))if(n.Interval.start(S.indices)===0&&n.Interval.end(S.indices)===S.unit.elements.length)T=l(n.Interval.ofBounds(b,b+P))||T;else{const V=M[A[n.Interval.min(S.indices)]],R=M[A[n.Interval.max(S.indices)]];T=a(b,D,x,l,V,R)||T}else{const{indices:V}=S;for(let R=0,E=V.length;R<E;R++){const I=M[A[V[R]]];let B=I,w=R+1;for(;w<E;){const O=M[A[V[w]]];if(O-B>1)break;B=O,w++}R=w-1,T=a(b,D,x,l,I,B)||T}}return T}function p(b){return b.polymerElements}function u(b,P,C){let l=!1;if(!r.StructureElement.Loci.is(b))return!1;const{structure:S,group:T}=P;if(!r.Structure.areEquivalent(b.structure,S))return!1;const A=T.units[0].polymerElements.length;for(const x of b.elements){if(!T.unitIndexMap.has(x.unit.id))continue;const M=T.unitIndexMap.get(x.unit.id)*A;if(r.Unit.isAtomic(x.unit))l=d(M,A,p,C,x)||l;else if(n.Interval.is(x.indices)){const D=M+n.Interval.start(x.indices),V=M+n.Interval.end(x.indices);l=C(n.Interval.ofBounds(D,V))||l}else for(let D=0,V=x.indices.length;D<V;D++){const R=x.indices[D];let E=D+1;for(;E<V&&x.indices[E]===R;)E++;D=E-1;const I=x.indices[D];l=C(n.Interval.ofRange(M+R,M+I))||l}}return l}function m(b,P,C){const{objectId:l,instanceId:S,groupId:T}=b;if(C===l){const{structure:A,group:x}=P,M=x.units[S],D=n.OrderedSet.indexOf(M.elements,M.gapElements[T]),V=n.OrderedSet.indexOf(M.elements,M.gapElements[T%2?T-1:T+1]);if(D!==-1&&V!==-1)return r.Bond.Loci(A,[r.Bond.Location(A,M,D,A,M,V),r.Bond.Location(A,M,V,A,M,D)])}return i.EmptyLoci}function v(b,P,C){let l=!1;if(r.Bond.isLoci(b)){const{structure:S,group:T}=P;if(!r.Structure.areRootsEquivalent(b.structure,S))return!1;b=r.Bond.remapLoci(b,S);const A=T.units[0].gapElements.length;for(const x of b.bonds){const M=T.unitIndexMap.get(x.aUnit.id);if(M!==void 0){const D=n.OrderedSet.indexOf(x.aUnit.gapElements,x.aUnit.elements[x.aIndex]),V=n.OrderedSet.indexOf(x.bUnit.gapElements,x.bUnit.elements[x.bIndex]);D!==-1&&V!==-1&&C(n.Interval.ofSingleton(M*A+D))&&(l=!0)}}}else if(r.StructureElement.Loci.is(b)){const{structure:S,group:T}=P;if(!r.Structure.areRootsEquivalent(b.structure,S))return!1;b=r.StructureElement.Loci.remap(b,S);const A=T.units[0].gapElements.length;for(const x of b.elements){const M=T.unitIndexMap.get(x.unit.id);M!==void 0&&n.OrderedSet.forEach(x.indices,D=>{const V=n.OrderedSet.indexOf(x.unit.gapElements,x.unit.elements[D]);V!==-1&&(C(n.Interval.ofSingleton(M*A+V))&&(l=!0),n.OrderedSet.getAt(x.unit.gapElements,V+1)===x.unit.elements[D]&&C(n.Interval.ofSingleton(M*A+V+1))&&(l=!0))})}}return l}})(DM)),DM}var tW;function nC(){if(tW)return Hn;tW=1,Object.defineProperty(Hn,"__esModule",{value:!0}),Hn.NucleotideLocationIterator=void 0,Hn.getNucleotideElementLoci=y,Hn.eachNucleotideElement=g,Hn.getNucleotideBaseType=p,Hn.createNucleicIndices=u,Hn.setPurinIndices=m,Hn.hasPurinIndices=v,Hn.setPyrimidineIndices=b,Hn.hasPyrimidineIndices=P,Hn.setSugarIndices=C,Hn.hasSugarIndices=l;
7087const e=Ke(),t=gt(),r=at(),n=zt(),i=_n(),c=Er(),o=io(),s=dt(),h=wt();var f;(function(S){function T(A){const{group:x,structure:M}=A,D=x.units[0],V=e.Unit.isAtomic(D)?D.nucleotideElements:[],R=V.length,E=x.units.length,I=e.StructureElement.Location.create(M),B=(w,O)=>{const F=x.units[O];return I.unit=F,I.element=V[w],I};return(0,n.LocationIterator)(R,E,1,B)}S.fromGroup=T})(f||(Hn.NucleotideLocationIterator=f={}));function y(S,T,A){const{objectId:x,instanceId:M,groupId:D}=S;if(A===x){const{structure:V,group:R}=T,E=R.units[M];if(e.Unit.isAtomic(E))if(D===i.PickingId.Null){const I=r.Interval.ofRange(0,E.elements.length);return e.StructureElement.Loci(V.target,[{unit:E,indices:I}])}else return(0,c.getResidueLoci)(V,E,E.nucleotideElements[D])}return t.EmptyLoci}function _(S){return S.nucleotideElements}function g(S,T,A){let x=!1;if(!e.StructureElement.Loci.is(S))return!1;const{structure:M,group:D}=T;if(!e.Structure.areEquivalent(S.structure,M))return!1;const V=D.units[0];if(!e.Unit.isAtomic(V))return!1;const{nucleotideElements:R}=V,E=R.length;for(const I of S.elements){if(!e.Unit.isAtomic(I.unit)||!D.unitIndexMap.has(I.unit.id))continue;const B=D.unitIndexMap.get(I.unit.id)*E;e.Unit.isAtomic(I.unit)&&(x=(0,o.eachAtomicUnitTracedElement)(B,E,_,A,I)||x)}return x}const a=(0,h.Vec3)(),d=(0,h.Vec3)();function p(S,T){const{model:A,conformation:x}=S,{residueAtomSegments:M,atoms:D,index:V}=A.atomicHierarchy,{label_comp_id:R}=D,E=R.value(M.offsets[T]);let I=(0,s.isPurineBase)(E),B=(0,s.isPyrimidineBase)(E);if(!I&&!B){const w=V.findAtomOnResidue(T,"C4"),O=V.findAtomOnResidue(T,"N9");w!==-1&&O!==-1&&h.Vec3.distance(x.invariantPosition(w,a),x.invariantPosition(O,d))<1.6?I=!0:B=!0}return{isPurine:I,isPyrimidine:B}}function u(){return{trace:-1,N1:-1,C2:-1,N3:-1,C4:-1,C5:-1,C6:-1,N7:-1,C8:-1,N9:-1,C1_1:-1,C2_1:-1,C3_1:-1,C4_1:-1,O4_1:-1}}function m(S,T,A){const x=T.model.atomicHierarchy.index,{traceElementIndex:M}=T.model.atomicHierarchy.derived.residue;return S.trace=M[A],S.N1=x.findAtomOnResidue(A,"N1"),S.C2=x.findAtomOnResidue(A,"C2"),S.N3=x.findAtomOnResidue(A,"N3"),S.C4=x.findAtomOnResidue(A,"C4"),S.C5=x.findAtomOnResidue(A,"C5"),S.C5===-1&&(S.C5=x.findAtomOnResidue(A,"N5")),S.C6=x.findAtomOnResidue(A,"C6"),S.N7=x.findAtomOnResidue(A,"N7"),S.N7===-1&&(S.N7=x.findAtomOnResidue(A,"C7")),S.C8=x.findAtomOnResidue(A,"C8"),S.N9=x.findAtomOnResidue(A,"N9"),S}function v(S){return S.trace!==-1&&S.N1!==-1&&S.C2!==-1&&S.N3!==-1&&S.C4!==-1&&S.C5!==-1&&S.C6!==-1&&S.N7!==-1&&S.C8!==-1&&S.N9!==-1}function b(S,T,A){const x=T.model.atomicHierarchy.index,{traceElementIndex:M}=T.model.atomicHierarchy.derived.residue;return S.trace=M[A],S.N1=x.findAtomOnResidue(A,"N1"),S.N1===-1&&(S.N1=x.findAtomOnResidue(A,"C1")),S.C2=x.findAtomOnResidue(A,"C2"),S.N3=x.findAtomOnResidue(A,"N3"),S.C4=x.findAtomOnResidue(A,"C4"),S.C5=x.findAtomOnResidue(A,"C5"),S.C6=x.findAtomOnResidue(A,"C6"),S}function P(S){return S.trace!==-1&&S.N1!==-1&&S.C2!==-1&&S.N3!==-1&&S.C4!==-1&&S.C5!==-1&&S.C6!==-1}function C(S,T,A){const x=T.model.atomicHierarchy.index,{traceElementIndex:M}=T.model.atomicHierarchy.derived.residue;return S.trace=M[A],S.C1_1=x.findAtomOnResidue(A,"C1'"),S.C2_1=x.findAtomOnResidue(A,"C2'"),S.C3_1=x.findAtomOnResidue(A,"C3'"),S.C4_1=x.findAtomOnResidue(A,"C4'"),S.O4_1=x.findAtomOnResidue(A,"O4'"),S}function l(S){return S.trace!==-1&&S.C1_1!==-1&&S.C2_1!==-1&&S.C3_1!==-1&&S.C4_1!==-1&&S.O4_1!==-1}return Hn}var rW;function rue(){return rW||(rW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.NucleotideBlockParams=e.DefaultNucleotideBlockMeshProps=e.NucleotideBlockMeshParams=void 0,e.NucleotideBlockVisual=D;const t=Ne(),r=Ge(),n=FS(),i=Ke(),c=Rt(),o=$t(),s=at(),h=dt(),f=ba(),y=mr(),_=nC(),g=Tt(),a=rt(),d=(0,r.Vec3)(),p=(0,r.Vec3)(),u=(0,r.Vec3)(),m=(0,r.Vec3)(),v=(0,r.Vec3)(),b=(0,r.Vec3)(),P=(0,r.Vec3)(),C=(0,r.Vec3)(),l=(0,r.Vec3)(),S=(0,r.Vec3)(),T=r.Mat4.identity(),A=(0,r.Vec3)(),x=(0,n.Box)();e.NucleotideBlockMeshParams={sizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),thicknessFactor:t.ParamDefinition.Numeric(1,{min:0,max:2,step:.01}),radialSegments:t.ParamDefinition.Numeric(16,{min:2,max:56,step:2},g.BaseGeometry.CustomQualityParamInfo)},e.DefaultNucleotideBlockMeshProps=t.ParamDefinition.getDefaultValues(e.NucleotideBlockMeshParams);function M(V,R,E,I,B,w){if(!i.Unit.isAtomic(R))return c.Mesh.createEmpty(w);const O=R.nucleotideElements.length;if(!O)return c.Mesh.createEmpty(w);const{sizeFactor:F,thicknessFactor:L,radialSegments:U}=B,q=O*(x.vertices.length/3+U*2),N=o.MeshBuilder.createState(q,q/4,w),{elements:k,model:j,conformation:H}=R,{chainAtomSegments:G,residueAtomSegments:z}=j.atomicHierarchy,{moleculeType:W}=j.atomicHierarchy.derived.residue,X=s.Segmentation.transientSegments(G,k),Y=s.Segmentation.transientSegments(z,k),K=1*F,Q=4.5,J=L*F*2,ae={radiusTop:K,radiusBottom:K,radialSegments:U,bottomCap:!0};let te=0;for(;X.hasNext;)for(Y.setSegment(X.move());Y.hasNext;){const{index:ie}=Y.move();if((0,h.isNucleic)(W[ie])){const Z=(0,_.createNucleicIndices)();let re=-1,oe=-1,ce=-1,ue=-1,pe=-1,he=4.5;const{isPurine:fe,isPyrimidine:de}=(0,_.getNucleotideBaseType)(R,ie);fe?(he=4.5,(0,_.setPurinIndices)(Z,R,ie),re=Z.N1,oe=Z.C4,ce=Z.C6,ue=Z.C2,pe=Z.N9):de&&(he=3,(0,_.setPyrimidineIndices)(Z,R,ie),re=Z.N3,oe=Z.C6,ce=Z.C4,ue=Z.C2,pe=Z.N1),pe!==-1&&Z.trace!==-1&&(H.invariantPosition(pe,v),H.invariantPosition(Z.trace,b),N.currentGroup=te,(0,f.addCylinder)(N,v,b,1,ae),re!==-1&&oe!==-1&&ce!==-1&&ue!==-1&&(H.invariantPosition(re,d),H.invariantPosition(oe,p),H.invariantPosition(ce,u),H.invariantPosition(ue,m),r.Vec3.normalize(P,r.Vec3.sub(P,p,d)),r.Vec3.normalize(C,r.Vec3.sub(C,m,u)),r.Vec3.normalize(l,r.Vec3.cross(l,P,C)),r.Mat4.targetTo(T,d,p,l),r.Vec3.scaleAndAdd(S,d,P,he/2-.2),r.Mat4.scale(T,T,r.Vec3.set(A,Q,J,he)),r.Mat4.setTranslation(T,S),o.MeshBuilder.addPrimitive(N,T,x))),++te}}const ne=o.MeshBuilder.getMesh(N),$=a.Sphere3D.expand((0,a.Sphere3D)(),R.boundary.sphere,K);return ne.setBoundingSphere($),ne}e.NucleotideBlockParams={...y.UnitsMeshParams,...e.NucleotideBlockMeshParams};function D(V){return(0,y.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.NucleotideBlockParams),createGeometry:M,createLocationIterator:_.NucleotideLocationIterator.fromGroup,getLoci:_.getNucleotideElementLoci,eachLocation:_.eachNucleotideElement,setUpdateState:(R,E,I)=>{R.createGeometry=E.sizeFactor!==I.sizeFactor||E.thicknessFactor!==I.thicknessFactor||E.radialSegments!==I.radialSegments}},V)}})(MM)),MM}var IM={},nW;function nue(){return nW||(nW=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.NucleotideRingParams=e.DefaultNucleotideRingMeshProps=e.NucleotideRingMeshParams=void 0,e.NucleotideRingVisual=F;const t=Ne(),r=Ge(),n=Ke(),i=Rt(),c=$t(),o=at(),s=dt(),h=ba(),f=Jn(),y=mr(),_=nC(),g=Tt(),a=rt(),d=(0,r.Vec3)(),p=(0,r.Vec3)(),u=(0,r.Vec3)(),m=(0,r.Vec3)(),v=(0,r.Vec3)(),b=(0,r.Vec3)(),P=(0,r.Vec3)(),C=(0,r.Vec3)(),l=(0,r.Vec3)(),S=(0,r.Vec3)(),T=(0,r.Vec3)();e.NucleotideRingMeshParams={sizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),thicknessFactor:t.ParamDefinition.Numeric(1,{min:0,max:2,step:.01}),radialSegments:t.ParamDefinition.Numeric(16,{min:2,max:56,step:2},g.BaseGeometry.CustomQualityParamInfo),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},g.BaseGeometry.CustomQualityParamInfo)},e.DefaultNucleotideRingMeshProps=t.ParamDefinition.getDefaultValues(e.NucleotideRingMeshParams);const A=new Float32Array(54),x=new Uint32Array([0,1,2,3,4,5,6,7,16,17,14,15,12,13,8,9,10,11,0,1]),M=new Uint32Array([8,12,14,16,6,4,2,0,10]),D=new Uint32Array([9,11,1,3,5,7,17,15,13]),V=new Float32Array(36),R=new Uint32Array([0,1,2,3,4,5,6,7,8,9,10,11,0,1]),E=new Uint32Array([0,10,8,6,4,2]),I=new Uint32Array([1,3,5,7,9,11]),B=(0,r.Vec3)();function w(L,U,...q){for(let N=0,k=q.length;N<k;++N){const j=q[N];
7087r.Vec3.toArray(r.Vec3.add(B,j,U),L,N*2*3),r.Vec3.toArray(r.Vec3.sub(B,j,U),L,(N*2+1)*3)}}function O(L,U,q,N,k,j){if(!n.Unit.isAtomic(U))return i.Mesh.createEmpty(j);const H=U.nucleotideElements.length;if(!H)return i.Mesh.createEmpty(j);const{sizeFactor:G,thicknessFactor:z,radialSegments:W,detail:X}=k,Y=H*(26+W*2),K=c.MeshBuilder.createState(Y,Y/4,j),{elements:Q,model:J,conformation:ae}=U,{chainAtomSegments:te,residueAtomSegments:ne}=J.atomicHierarchy,{moleculeType:$}=J.atomicHierarchy.derived.residue,ie=o.Segmentation.transientSegments(te,Q),Z=o.Segmentation.transientSegments(ne,Q),re=1*G,oe=z*G,ce={radiusTop:re,radiusBottom:re,radialSegments:W};let ue=0;for(;ie.hasNext;)for(Z.setSegment(ie.move());Z.hasNext;){const{index:fe}=Z.move();if((0,s.isNucleic)($[fe])){const de=(0,_.createNucleicIndices)();K.currentGroup=ue;const{isPurine:ge,isPyrimidine:Ce}=(0,_.getNucleotideBaseType)(U,fe);ge?((0,_.setPurinIndices)(de,U,fe),de.N9!==-1&&de.trace!==-1&&(ae.invariantPosition(de.N9,S),ae.invariantPosition(de.trace,d),K.currentGroup=ue,(0,h.addCylinder)(K,S,d,1,ce),(0,f.addSphere)(K,S,re,X)),(0,_.hasPurinIndices)(de)&&(ae.invariantPosition(de.N1,p),ae.invariantPosition(de.C2,u),ae.invariantPosition(de.N3,m),ae.invariantPosition(de.C4,v),ae.invariantPosition(de.C5,b),ae.invariantPosition(de.C6,P),ae.invariantPosition(de.N7,C),ae.invariantPosition(de.C8,l),r.Vec3.triangleNormal(T,p,v,b),r.Vec3.scale(T,T,oe),w(A,T,p,u,m,v,b,P,C,l,S),c.MeshBuilder.addTriangleStrip(K,A,x),c.MeshBuilder.addTriangleFan(K,A,M),c.MeshBuilder.addTriangleFan(K,A,D))):Ce&&((0,_.setPyrimidineIndices)(de,U,fe),de.N1!==-1&&de.trace!==-1&&(ae.invariantPosition(de.N1,p),ae.invariantPosition(de.trace,d),K.currentGroup=ue,(0,h.addCylinder)(K,p,d,1,ce),(0,f.addSphere)(K,p,re,X)),(0,_.hasPyrimidineIndices)(de)&&(ae.invariantPosition(de.C2,u),ae.invariantPosition(de.N3,m),ae.invariantPosition(de.C4,v),ae.invariantPosition(de.C5,b),ae.invariantPosition(de.C6,P),r.Vec3.triangleNormal(T,p,v,b),r.Vec3.scale(T,T,oe),w(V,T,p,u,m,v,b,P),c.MeshBuilder.addTriangleStrip(K,V,R),c.MeshBuilder.addTriangleFan(K,V,E),c.MeshBuilder.addTriangleFan(K,V,I))),++ue}}const pe=c.MeshBuilder.getMesh(K),he=a.Sphere3D.expand((0,a.Sphere3D)(),U.boundary.sphere,re);return pe.setBoundingSphere(he),pe}e.NucleotideRingParams={...y.UnitsMeshParams,...e.NucleotideRingMeshParams};function F(L){return(0,y.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.NucleotideRingParams),createGeometry:O,createLocationIterator:_.NucleotideLocationIterator.fromGroup,getLoci:_.getNucleotideElementLoci,eachLocation:_.eachNucleotideElement,setUpdateState:(U,q,N)=>{U.createGeometry=q.sizeFactor!==N.sizeFactor||q.thicknessFactor!==N.thicknessFactor||q.radialSegments!==N.radialSegments}},L)}})(IM)),IM}var wM={},iW;function iue(){return iW||(iW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.NucleotideAtomicRingFillParams=e.DefaultNucleotideAtomicRingFillMeshProps=e.NucleotideAtomicRingFillMeshParams=void 0,e.NucleotideAtomicRingFillVisual=H;const t=Ne(),r=Ge(),n=Ke(),i=Rt(),c=$t(),o=at(),s=dt(),h=mr(),f=nC(),y=rt(),_=(0,r.Vec3)(),g=(0,r.Vec3)(),a=(0,r.Vec3)(),d=(0,r.Vec3)(),p=(0,r.Vec3)(),u=(0,r.Vec3)(),m=(0,r.Vec3)(),v=(0,r.Vec3)(),b=(0,r.Vec3)(),P=(0,r.Vec3)(),C=(0,r.Vec3)(),l=(0,r.Vec3)(),S=(0,r.Vec3)(),T=(0,r.Vec3)(),A=(0,r.Vec3)(),x=(0,r.Vec3)(),M=(0,r.Vec3)();e.NucleotideAtomicRingFillMeshParams={sizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),thicknessFactor:t.ParamDefinition.Numeric(1,{min:0,max:2,step:.01})},e.DefaultNucleotideAtomicRingFillMeshProps=t.ParamDefinition.getDefaultValues(e.NucleotideAtomicRingFillMeshParams);const D=new Float32Array(54),V=new Uint32Array([0,1,2,3,4,5,6,7,16,17,14,15,12,13,8,9,10,11,0,1]),R=new Uint32Array([8,12,14,16,6,4,2,0,10]),E=new Uint32Array([9,11,1,3,5,7,17,15,13]),I=new Float32Array(36),B=new Uint32Array([2,3,4,5,6,7,8,9,10,11,2,3]),w=new Uint32Array([0,10,8,6,4,2,10]),O=new Uint32Array([1,3,5,7,9,11,3]),F=new Float32Array(36),L=new Uint32Array([0,1,2,3,4,5,6,7,8,9,10,11,0,1]),U=new Uint32Array([0,10,8,6,4,2]),q=new Uint32Array([1,3,5,7,9,11]),N=(0,r.Vec3)();function k(G,z,...W){for(let X=0,Y=W.length;X<Y;++X){const K=W[X];r.Vec3.toArray(r.Vec3.add(N,K,z),G,X*2*3),r.Vec3.toArray(r.Vec3.sub(N,K,z),G,(X*2+1)*3)}}function j(G,z,W,X,Y,K){if(!n.Unit.isAtomic(z))return i.Mesh.createEmpty(K);const Q=z.nucleotideElements.length;if(!Q)return i.Mesh.createEmpty(K);const{sizeFactor:J,thicknessFactor:ae}=Y,te=Q*25,ne=c.MeshBuilder.createState(te,te/4,K),{elements:$,model:ie,conformation:Z}=z,{chainAtomSegments:re,residueAtomSegments:oe}=ie.atomicHierarchy,{moleculeType:ce}=ie.atomicHierarchy.derived.residue,ue=o.Segmentation.transientSegments(re,$),pe=o.Segmentation.transientSegments(oe,$),he=J*ae;let fe=0;for(;ue.hasNext;)for(pe.setSegment(ue.move());pe.hasNext;){const{index:Ce}=pe.move();if((0,s.isNucleic)(ce[Ce])){const ve=(0,f.createNucleicIndices)();ne.currentGroup=fe,(0,f.setSugarIndices)(ve,z,Ce),(0,f.hasSugarIndices)(ve)&&(Z.invariantPosition(ve.C1_1,P),Z.invariantPosition(ve.C2_1,C),Z.invariantPosition(ve.C3_1,l),Z.invariantPosition(ve.C4_1,S),Z.invariantPosition(ve.O4_1,T),r.Vec3.triangleNormal(x,l,S,P),r.Vec3.scale(A,r.Vec3.add(A,T,r.Vec3.add(A,S,r.Vec3.add(A,l,r.Vec3.add(A,P,C)))),.2),r.Vec3.scale(M,x,he),k(I,M,A,l,S,T,P,C),c.MeshBuilder.addTriangleStrip(ne,I,B),c.MeshBuilder.addTriangleFanWithNormal(ne,I,w,x),r.Vec3.negate(x,x),c.MeshBuilder.addTriangleFanWithNormal(ne,I,O,x));const{isPurine:le,isPyrimidine:me}=(0,f.getNucleotideBaseType)(z,Ce);le?((0,f.setPurinIndices)(ve,z,Ce),(0,f.hasPurinIndices)(ve)&&(Z.invariantPosition(ve.N1,_),Z.invariantPosition(ve.C2,g),Z.invariantPosition(ve.N3,a),Z.invariantPosition(ve.C4,d),Z.invariantPosition(ve.C5,p),Z.invariantPosition(ve.C6,u),Z.invariantPosition(ve.N7,m),Z.invariantPosition(ve.C8,v),Z.invariantPosition(ve.N9,b),r.Vec3.triangleNormal(x,_,d,p),r.Vec3.scale(M,x,he),k(D,M,_,g,a,d,p,u,m,v,b),c.MeshBuilder.addTriangleStrip(ne,D,V),c.MeshBuilder.addTriangleFanWithNormal(ne,D,R,x),r.Vec3.negate(x,x),c.MeshBuilder.addTriangleFanWithNormal(ne,D,E,x))):me&&((0,f.setPyrimidineIndices)(ve,z,Ce),(0,f.hasPyrimidineIndices)(ve)&&(Z.invariantPosition(ve.N1,_),Z.invariantPosition(ve.C2,g),Z.invariantPosition(ve.N3,a),Z.invariantPosition(ve.C4,d),Z.invariantPosition(ve.C5,p),Z.invariantPosition(ve.C6,u),r.Vec3.triangleNormal(x,_,d,p),r.Vec3.scale(M,x,he),k(F,M,_,g,a,d,p,u),c.MeshBuilder.addTriangleStrip(ne,F,L),c.MeshBuilder.addTriangleFanWithNormal(ne,F,U,x),r.Vec3.negate(x,x),c.MeshBuilder.addTriangleFanWithNormal(ne,F,q,x))),++fe}}const de=c.MeshBuilder.getMesh(ne),ge=y.Sphere3D.expand((0,y.Sphere3D)(),z.boundary.sphere,he);return de.setBoundingSphere(ge),de}
7087e.NucleotideAtomicRingFillParams={...h.UnitsMeshParams,...e.NucleotideAtomicRingFillMeshParams};function H(G){return(0,h.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.NucleotideAtomicRingFillParams),createGeometry:j,createLocationIterator:f.NucleotideLocationIterator.fromGroup,getLoci:f.getNucleotideElementLoci,eachLocation:f.eachNucleotideElement,setUpdateState:(z,W,X)=>{z.createGeometry=W.sizeFactor!==X.sizeFactor||W.thicknessFactor!==X.thicknessFactor}},G)}})(wM)),wM}var VM={},aW;function aue(){return aW||(aW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.NucleotideAtomicBondParams=void 0,e.NucleotideAtomicBondVisual=E,e.NucleotideAtomicBondImpostorVisual=B,e.NucleotideAtomicBondMeshVisual=O;const t=Ne(),r=Ge(),n=Ke(),i=Rt(),c=$t(),o=at(),s=dt(),h=ba(),f=mr(),y=nC(),_=Tt(),g=rt(),a=no(),d=qw(),p=Er(),u=(0,r.Vec3)(),m=(0,r.Vec3)(),v=(0,r.Vec3)(),b=(0,r.Vec3)(),P=(0,r.Vec3)(),C=(0,r.Vec3)(),l=(0,r.Vec3)(),S=(0,r.Vec3)(),T=(0,r.Vec3)(),A=(0,r.Vec3)(),x=(0,r.Vec3)(),M=(0,r.Vec3)(),D=(0,r.Vec3)(),V=(0,r.Vec3)(),R=(0,r.Vec3)();e.NucleotideAtomicBondParams={...f.UnitsMeshParams,...f.UnitsCylindersParams,sizeFactor:t.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),radialSegments:t.ParamDefinition.Numeric(16,{min:2,max:56,step:2},_.BaseGeometry.CustomQualityParamInfo),tryUseImpostor:t.ParamDefinition.Boolean(!0)};
7087function E(F,L,U,q){return U.tryUseImpostor&&(0,p.checkCylinderImpostorSupport)(q)?B(F):O(F)}function I(F,L,U,q,N,k){if(!n.Unit.isAtomic(L))return a.Cylinders.createEmpty(k);const j=L.nucleotideElements.length;if(!j)return a.Cylinders.createEmpty(k);const H=j*15,G=d.CylindersBuilder.create(H,H/4,k),{elements:z,model:W,conformation:X}=L,{chainAtomSegments:Y,residueAtomSegments:K}=W.atomicHierarchy,{moleculeType:Q}=W.atomicHierarchy.derived.residue,J=o.Segmentation.transientSegments(Y,z),ae=o.Segmentation.transientSegments(K,z);let te=0;const ne=2;for(;J.hasNext;)for(ae.setSegment(J.move());ae.hasNext;){const{index:Z}=ae.move();if((0,s.isNucleic)(Q[Z])){const re=(0,y.createNucleicIndices)();(0,y.setSugarIndices)(re,L,Z),(0,y.hasSugarIndices)(re)&&(X.invariantPosition(re.C1_1,x),X.invariantPosition(re.C2_1,M),X.invariantPosition(re.C3_1,D),X.invariantPosition(re.C4_1,V),X.invariantPosition(re.O4_1,R),X.invariantPosition(re.trace,u),G.add(D[0],D[1],D[2],u[0],u[1],u[2],1,!0,!0,ne,te),G.add(D[0],D[1],D[2],V[0],V[1],V[2],1,!0,!0,ne,te),G.add(V[0],V[1],V[2],R[0],R[1],R[2],1,!0,!0,ne,te),G.add(R[0],R[1],R[2],x[0],x[1],x[2],1,!0,!0,ne,te),G.add(x[0],x[1],x[2],M[0],M[1],M[2],1,!0,!0,ne,te),G.add(M[0],M[1],M[2],D[0],D[1],D[2],1,!0,!0,ne,te));const{isPurine:oe,isPyrimidine:ce}=(0,y.getNucleotideBaseType)(L,Z);oe?((0,y.setPurinIndices)(re,L,Z),re.C1_1!==-1&&re.N9!==-1?(X.invariantPosition(re.C1_1,x),X.invariantPosition(re.N9,A),G.add(A[0],A[1],A[2],x[0],x[1],x[2],1,!0,!0,ne,te)):re.N9!==-1&&re.trace!==-1&&(X.invariantPosition(re.N9,A),X.invariantPosition(re.trace,u),G.add(A[0],A[1],A[2],u[0],u[1],u[2],1,!0,!0,ne,te)),(0,y.hasPurinIndices)(re)&&(X.invariantPosition(re.N1,m),X.invariantPosition(re.C2,v),X.invariantPosition(re.N3,b),X.invariantPosition(re.C4,P),X.invariantPosition(re.C5,C),X.invariantPosition(re.C6,l),X.invariantPosition(re.N7,S),X.invariantPosition(re.C8,T),X.invariantPosition(re.N9,A),G.add(A[0],A[1],A[2],T[0],T[1],T[2],1,!0,!0,ne,te),G.add(T[0],T[1],T[2],S[0],S[1],S[2],1,!0,!0,ne,te),G.add(S[0],S[1],S[2],C[0],C[1],C[2],1,!0,!0,ne,te),G.add(C[0],C[1],C[2],l[0],l[1],l[2],1,!0,!0,ne,te),G.add(l[0],l[1],l[2],m[0],m[1],m[2],1,!0,!0,ne,te),G.add(m[0],m[1],m[2],v[0],v[1],v[2],1,!0,!0,ne,te),G.add(v[0],v[1],v[2],b[0],b[1],b[2],1,!0,!0,ne,te),G.add(b[0],b[1],b[2],P[0],P[1],P[2],1,!0,!0,ne,te),G.add(P[0],P[1],P[2],C[0],C[1],C[2],1,!0,!0,ne,te),G.add(P[0],P[1],P[2],A[0],A[1],A[2],1,!0,!0,ne,te))):ce&&((0,y.setPyrimidineIndices)(re,L,Z),re.C1_1!==-1&&re.N1!==-1?(X.invariantPosition(re.N1,m),X.invariantPosition(re.C1_1,x),G.add(m[0],m[1],m[2],x[0],x[1],x[2],1,!0,!0,ne,te)):re.N1!==-1&&re.trace!==-1&&(X.invariantPosition(re.N1,m),X.invariantPosition(re.trace,u),G.add(m[0],m[1],m[2],u[0],u[1],u[2],1,!0,!0,ne,te)),(0,y.hasPyrimidineIndices)(re)&&(X.invariantPosition(re.N1,m),X.invariantPosition(re.C2,v),X.invariantPosition(re.N3,b),X.invariantPosition(re.C4,P),X.invariantPosition(re.C5,C),X.invariantPosition(re.C6,l),G.add(m[0],m[1],m[2],l[0],l[1],l[2],1,!0,!0,ne,te),G.add(l[0],l[1],l[2],C[0],C[1],C[2],1,!0,!0,ne,te),G.add(C[0],C[1],C[2],P[0],P[1],P[2],1,!0,!0,ne,te),G.add(P[0],P[1],P[2],b[0],b[1],b[2],1,!0,!0,ne,te),G.add(b[0],b[1],b[2],v[0],v[1],v[2],1,!0,!0,ne,te),G.add(v[0],v[1],v[2],m[0],m[1],m[2],1,!0,!0,ne,te))),++te}}const $=G.getCylinders(),ie=g.Sphere3D.expand((0,g.Sphere3D)(),L.boundary.sphere,1*N.sizeFactor);return $.setBoundingSphere(ie),$}function B(F){return(0,f.UnitsCylindersVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.NucleotideAtomicBondParams),createGeometry:I,createLocationIterator:y.NucleotideLocationIterator.fromGroup,getLoci:y.getNucleotideElementLoci,eachLocation:y.eachNucleotideElement,setUpdateState:(L,U,q)=>{L.createGeometry=U.sizeFactor!==q.sizeFactor},mustRecreate:(L,U,q)=>!U.tryUseImpostor||!q},F)}function w(F,L,U,q,N,k){if(!n.Unit.isAtomic(L))return i.Mesh.createEmpty(k);const j=L.nucleotideElements.length;if(!j)return i.Mesh.createEmpty(k);const{sizeFactor:H,radialSegments:G}=N,z=j*(G*15),W=c.MeshBuilder.createState(z,z/4,k),{elements:X,model:Y,conformation:K}=L,{chainAtomSegments:Q,residueAtomSegments:J}=Y.atomicHierarchy,{moleculeType:ae}=Y.atomicHierarchy.derived.residue,te=o.Segmentation.transientSegments(Q,X),ne=o.Segmentation.transientSegments(J,X),$={radiusTop:1*H,radiusBottom:1*H,radialSegments:G};let ie=0;for(;te.hasNext;)for(ne.setSegment(te.move());ne.hasNext;){const{index:oe}=ne.move();if((0,s.isNucleic)(ae[oe])){const ce=(0,y.createNucleicIndices)();W.currentGroup=ie,(0,y.setSugarIndices)(ce,L,oe),(0,y.hasSugarIndices)(ce)&&(K.invariantPosition(ce.C1_1,x),K.invariantPosition(ce.C2_1,M),K.invariantPosition(ce.C3_1,D),K.invariantPosition(ce.C4_1,V),K.invariantPosition(ce.O4_1,R),K.invariantPosition(ce.trace,u),(0,h.addCylinder)(W,D,u,1,$),(0,h.addCylinder)(W,D,V,1,$),(0,h.addCylinder)(W,V,R,1,$),(0,h.addCylinder)(W,R,x,1,$),(0,h.addCylinder)(W,x,M,1,$),(0,h.addCylinder)(W,M,D,1,$));const{isPurine:ue,isPyrimidine:pe}=(0,y.getNucleotideBaseType)(L,oe);ue?((0,y.setPurinIndices)(ce,L,oe),ce.C1_1!==-1&&ce.N9!==-1?(K.invariantPosition(ce.C1_1,x),K.invariantPosition(ce.N9,A),(0,h.addCylinder)(W,A,x,1,$)):ce.N9!==-1&&ce.trace!==-1&&(K.invariantPosition(ce.N9,A),K.invariantPosition(ce.trace,u),(0,h.addCylinder)(W,A,u,1,$)),(0,y.hasPurinIndices)(ce)&&(K.invariantPosition(ce.N1,m),K.invariantPosition(ce.C2,v),K.invariantPosition(ce.N3,b),K.invariantPosition(ce.C4,P),K.invariantPosition(ce.C5,C),K.invariantPosition(ce.C6,l),K.invariantPosition(ce.N7,S),K.invariantPosition(ce.C8,T),K.invariantPosition(ce.N9,A),(0,h.addCylinder)(W,A,T,1,$),(0,h.addCylinder)(W,T,S,1,$),(0,h.addCylinder)(W,S,C,1,$),(0,h.addCylinder)(W,C,l,1,$),(0,h.addCylinder)(W,l,m,1,$),(0,h.addCylinder)(W,m,v,1,$),(0,h.addCylinder)(W,v,b,1,$),(0,h.addCylinder)(W,b,P,1,$),(0,h.addCylinder)(W,P,C,1,$),(0,h.addCylinder)(W,P,A,1,$))):pe&&((0,y.setPyrimidineIndices)(ce,L,oe),ce.C1_1!==-1&&ce.N1!==-1?(K.invariantPosition(ce.N1,m),K.invariantPosition(ce.C1_1,x),(0,h.addCylinder)(W,m,x,1,$)):ce.N1!==-1&&ce.trace!==-1&&(K.invariantPosition(ce.N1,m),K.invariantPosition(ce.trace,u),(0,h.addCylinder)(W,m,u,1,$)),(0,y.hasPyrimidineIndices)(ce)&&(K.invariantPosition(ce.N1,m),K.invariantPosition(ce.C2,v),K.invariantPosition(ce.N3,b),K.invariantPosition(ce.C4,P),K.invariantPosition(ce.C5,C),K.invariantPosition(ce.C6,l),(0,h.addCylinder)(W,m,l,1,$),(0,h.addCylinder)(W,l,C,1,$),(0,h.addCylinder)(W,C,P,1,$),(0,h.addCylinder)(W,P,b,1,$),(0,h.addCylinder)(W,b,v,1,$),(0,h.addCylinder)(W,v,m,1,$))),++ie}}const Z=c.MeshBuilder.getMesh(W),re=g.Sphere3D.expand((0,g.Sphere3D)(),L.boundary.sphere,1*N.sizeFactor);return Z.setBoundingSphere(re),Z}function O(F){return(0,f.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.NucleotideAtomicBondParams),createGeometry:w,createLocationIterator:y.NucleotideLocationIterator.fromGroup,getLoci:y.getNucleotideElementLoci,eachLocation:y.eachNucleotideElement,setUpdateState:(L,U,q)=>{L.createGeometry=U.sizeFactor!==q.sizeFactor||U.radialSegments!==q.radialSegments},mustRecreate:(L,U,q)=>U.tryUseImpostor&&!!q},F)}})(VM)),VM}var EM={},oW;function oue(){return oW||(oW=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.NucleotideAtomicElementParams=void 0,e.NucleotideAtomicElementVisual=I,e.NucleotideAtomicElementImpostorVisual=w,e.NucleotideAtomicElementMeshVisual=F;const t=Ne(),r=Ge(),n=Ke(),i=Rt(),c=$t(),o=at(),s=dt(),h=Jn(),f=mr(),y=nC(),_=Tt(),g=rt(),a=ro(),d=Xf(),p=P2(),u=Er(),m=(0,r.Vec3)(),v=(0,r.Vec3)(),b=(0,r.Vec3)(),P=(0,r.Vec3)(),C=(0,r.Vec3)(),l=(0,r.Vec3)(),S=(0,r.Vec3)(),T=(0,r.Vec3)(),A=(0,r.Vec3)(),x=(0,r.Vec3)(),M=(0,r.Vec3)(),D=(0,r.Vec3)(),V=(0,r.Vec3)(),R=(0,r.Vec3)(),E=(0,r.Vec3)();e.NucleotideAtomicElementParams={...f.UnitsMeshParams,...f.UnitsSpheresParams,sizeFactor:t.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},_.BaseGeometry.CustomQualityParamInfo),tryUseImpostor:t.ParamDefinition.Boolean(!0)};function I(L,U,q,N){return q.tryUseImpostor&&(0,u.checkSphereImpostorSupport)(N)?w(L):F(L)}function B(L,U,q,N,k,j){if(!n.Unit.isAtomic(U))return a.Spheres.createEmpty(j);const H=U.nucleotideElements.length;if(!H)return a.Spheres.createEmpty(j);const G=H*15,z=p.SpheresBuilder.create(G,G/4,j),{elements:W,model:X,conformation:Y}=U,{chainAtomSegments:K,residueAtomSegments:Q}=X.atomicHierarchy,{moleculeType:J}=X.atomicHierarchy.derived.residue,ae=o.Segmentation.transientSegments(K,W),te=o.Segmentation.transientSegments(Q,W);let ne=0;for(;ae.hasNext;)for(te.setSegment(ae.move());te.hasNext;){const{index:Z}=te.move();if((0,s.isNucleic)(J[Z])){const re=(0,y.createNucleicIndices)();(0,y.setSugarIndices)(re,U,Z),(0,y.hasSugarIndices)(re)&&(Y.invariantPosition(re.C1_1,M),Y.invariantPosition(re.C2_1,D),Y.invariantPosition(re.C3_1,V),Y.invariantPosition(re.C4_1,R),Y.invariantPosition(re.O4_1,E),Y.invariantPosition(re.trace,m),z.add(m[0],m[1],m[2],ne),z.add(V[0],V[1],V[2],ne),z.add(R[0],R[1],R[2],ne),z.add(E[0],E[1],E[2],ne),z.add(M[0],M[1],M[2],ne),z.add(D[0],D[1],D[2],ne));const{isPurine:oe,isPyrimidine:ce}=(0,y.getNucleotideBaseType)(U,Z);oe?((0,y.setPurinIndices)(re,U,Z),(0,y.hasPurinIndices)(re)&&(Y.invariantPosition(re.N1,v),Y.invariantPosition(re.C2,b),Y.invariantPosition(re.N3,P),Y.invariantPosition(re.C4,C),Y.invariantPosition(re.C5,l),Y.invariantPosition(re.C6,S),Y.invariantPosition(re.N7,T),Y.invariantPosition(re.C8,A),Y.invariantPosition(re.N9,x),z.add(x[0],x[1],x[2],ne),z.add(A[0],A[1],A[2],ne),z.add(T[0],T[1],T[2],ne),z.add(l[0],l[1],l[2],ne),z.add(S[0],S[1],S[2],ne),z.add(v[0],v[1],v[2],ne),z.add(b[0],b[1],b[2],ne),z.add(P[0],P[1],P[2],ne),z.add(C[0],C[1],C[2],ne))):ce&&((0,y.setPyrimidineIndices)(re,U,Z),(0,y.hasPyrimidineIndices)(re)&&(Y.invariantPosition(re.N1,v),Y.invariantPosition(re.C2,b),Y.invariantPosition(re.N3,P),Y.invariantPosition(re.C4,C),Y.invariantPosition(re.C5,l),Y.invariantPosition(re.C6,S),z.add(v[0],v[1],v[2],ne),z.add(S[0],S[1],S[2],ne),z.add(l[0],l[1],l[2],ne),z.add(C[0],C[1],C[2],ne),z.add(P[0],P[1],P[2],ne),z.add(b[0],b[1],b[2],ne))),++ne}}const $=z.getSpheres(),ie=g.Sphere3D.expand((0,g.Sphere3D)(),U.boundary.sphere,1*k.sizeFactor);return $.setBoundingSphere(ie),$}function w(L){return(0,f.UnitsSpheresVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.NucleotideAtomicElementParams),createGeometry:B,createLocationIterator:y.NucleotideLocationIterator.fromGroup,getLoci:y.getNucleotideElementLoci,eachLocation:y.eachNucleotideElement,setUpdateState:(U,q,N)=>{U.createGeometry=q.sizeFactor!==N.sizeFactor},mustRecreate:(U,q,N)=>!q.tryUseImpostor||!N},L)}function O(L,U,q,N,k,j){if(!n.Unit.isAtomic(U))return i.Mesh.createEmpty(j);const H=U.nucleotideElements.length;if(!H)return i.Mesh.createEmpty(j);
7087const{sizeFactor:G,detail:z}=k,W=H*(0,d.sphereVertexCount)(z),X=c.MeshBuilder.createState(W,W/2,j),{elements:Y,model:K,conformation:Q}=U,{chainAtomSegments:J,residueAtomSegments:ae}=K.atomicHierarchy,{moleculeType:te}=K.atomicHierarchy.derived.residue,ne=o.Segmentation.transientSegments(J,Y),$=o.Segmentation.transientSegments(ae,Y),ie=1*G;let Z=0;for(;ne.hasNext;)for($.setSegment(ne.move());$.hasNext;){const{index:ce}=$.move();if((0,s.isNucleic)(te[ce])){const ue=(0,y.createNucleicIndices)();X.currentGroup=Z,(0,y.setSugarIndices)(ue,U,ce),(0,y.hasSugarIndices)(ue)&&(Q.invariantPosition(ue.C1_1,M),Q.invariantPosition(ue.C2_1,D),Q.invariantPosition(ue.C3_1,V),Q.invariantPosition(ue.C4_1,R),Q.invariantPosition(ue.O4_1,E),Q.invariantPosition(ue.trace,m),(0,h.addSphere)(X,m,ie,z),(0,h.addSphere)(X,R,ie,z),(0,h.addSphere)(X,E,ie,z),(0,h.addSphere)(X,M,ie,z),(0,h.addSphere)(X,D,ie,z),(0,h.addSphere)(X,V,ie,z));const{isPurine:pe,isPyrimidine:he}=(0,y.getNucleotideBaseType)(U,ce);pe?((0,y.setPurinIndices)(ue,U,ce),(0,y.hasPurinIndices)(ue)&&(Q.invariantPosition(ue.N1,v),Q.invariantPosition(ue.C2,b),Q.invariantPosition(ue.N3,P),Q.invariantPosition(ue.C4,C),Q.invariantPosition(ue.C5,l),Q.invariantPosition(ue.C6,S),Q.invariantPosition(ue.N7,T),Q.invariantPosition(ue.C8,A),Q.invariantPosition(ue.N9,x),(0,h.addSphere)(X,A,ie,z),(0,h.addSphere)(X,T,ie,z),(0,h.addSphere)(X,l,ie,z),(0,h.addSphere)(X,S,ie,z),(0,h.addSphere)(X,v,ie,z),(0,h.addSphere)(X,b,ie,z),(0,h.addSphere)(X,P,ie,z),(0,h.addSphere)(X,C,ie,z),(0,h.addSphere)(X,l,ie,z),(0,h.addSphere)(X,x,ie,z))):he&&((0,y.setPyrimidineIndices)(ue,U,ce),(0,y.hasPyrimidineIndices)(ue)&&(Q.invariantPosition(ue.N1,v),Q.invariantPosition(ue.C2,b),Q.invariantPosition(ue.N3,P),Q.invariantPosition(ue.C4,C),Q.invariantPosition(ue.C5,l),Q.invariantPosition(ue.C6,S),(0,h.addSphere)(X,S,ie,z),(0,h.addSphere)(X,l,ie,z),(0,h.addSphere)(X,C,ie,z),(0,h.addSphere)(X,P,ie,z),(0,h.addSphere)(X,b,ie,z),(0,h.addSphere)(X,v,ie,z))),++Z}}const re=c.MeshBuilder.getMesh(X),oe=g.Sphere3D.expand((0,g.Sphere3D)(),U.boundary.sphere,1*k.sizeFactor);return re.setBoundingSphere(oe),re}function F(L){return(0,f.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.NucleotideAtomicElementParams),createGeometry:O,createLocationIterator:y.NucleotideLocationIterator.fromGroup,getLoci:y.getNucleotideElementLoci,eachLocation:y.eachNucleotideElement,setUpdateState:(U,q,N)=>{U.createGeometry=q.sizeFactor!==N.sizeFactor||q.detail!==N.detail},mustRecreate:(U,q,N)=>q.tryUseImpostor&&!!N},L)}})(EM)),EM}var BM={},ff={},sW;function sue(){if(sW)return ff;sW=1,Object.defineProperty(ff,"__esModule",{value:!0}),ff.createWedge=f,ff.Wedge=_,ff.WedgeCage=a;const e=Ge(),t=to(),r=kS(),n=Rw(),i=e.Vec3.zero(),c=e.Vec3.zero(),o=e.Vec3.zero(),s=e.Vec3.zero(),h=(0,r.polygon)(3,!1);function f(){const d=(0,t.PrimitiveBuilder)(8);for(let p=0;p<3;++p){const u=(p+1)%3;e.Vec3.set(i,h[p*3],h[p*3+1],-.5),e.Vec3.set(c,h[u*3],h[u*3+1],-.5),e.Vec3.set(o,h[u*3],h[u*3+1],.5),e.Vec3.set(s,h[p*3],h[p*3+1],.5),d.add(i,c,o),d.add(o,s,i)}return e.Vec3.set(i,h[0],h[1],-.5),e.Vec3.set(c,h[3],h[4],-.5),e.Vec3.set(o,h[6],h[7],-.5),d.add(o,c,i),e.Vec3.set(i,h[0],h[1],.5),e.Vec3.set(c,h[3],h[4],.5),e.Vec3.set(o,h[6],h[7],.5),d.add(i,c,o),d.getPrimitive()}let y;function _(){return y||(y=f()),y}let g;function a(){return g||(g=(0,n.PrismCage)(h)),g}return ff}var cW;function cue(){return cW||(cW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PolymerDirectionParams=e.DefaultPolymerDirectionWedgeProps=e.PolymerDirectionWedgeParams=void 0,e.PolymerDirectionVisual=P;const t=Ne(),r=Ge(),n=sue(),i=Rt(),c=$t(),o=io(),s=dt(),h=mr(),f=rt(),y=r.Mat4.identity(),_=r.Vec3.zero(),g=r.Vec3.zero(),a=r.Vec3.zero(),d=r.Vec3.zero(),p=4,u=4,m=6,v=(0,n.Wedge)();e.PolymerDirectionWedgeParams={sizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01})},e.DefaultPolymerDirectionWedgeProps=t.ParamDefinition.getDefaultValues(e.PolymerDirectionWedgeParams);function b(C,l,S,T,A,x){const M=l.polymerElements.length;if(!M)return i.Mesh.createEmpty(x);
7087const{sizeFactor:D}=A,V=M*24,R=c.MeshBuilder.createState(V,V/10,x),I=(0,o.createCurveSegmentState)(1),{normalVectors:B,binormalVectors:w}=I;let O=0;const F=(0,o.PolymerTraceIterator)(l,S);for(;F.hasNext;){const q=F.move();R.currentGroup=O;const N=(0,s.isNucleic)(q.moleculeType),k=s.SecondaryStructureType.is(q.secStrucType,s.SecondaryStructureType.Flag.Beta),j=N||k?.5:.9,H=N?.3:.5;if((0,o.interpolateCurveSegment)(I,q,j,H),k&&!q.secStrucLast||!k){const G=T.size.size(q.center)*D,z=p*G,W=u*G,X=m*G,Y=N?w:B;r.Vec3.fromArray(g,Y,0),r.Vec3.fromArray(a,Y,3),r.Vec3.normalize(d,r.Vec3.add(d,g,a)),r.Mat4.targetTo(y,q.p3,q.p1,d),r.Mat4.mul(y,y,r.Mat4.rotY90Z180),r.Mat4.scale(y,y,r.Vec3.set(_,X,W,z)),r.Mat4.setTranslation(y,q.p2),c.MeshBuilder.addPrimitive(R,y,v)}++O}const L=c.MeshBuilder.getMesh(R),U=f.Sphere3D.expand((0,f.Sphere3D)(),l.boundary.sphere,1*A.sizeFactor);return L.setBoundingSphere(U),L}e.PolymerDirectionParams={...h.UnitsMeshParams,...e.PolymerDirectionWedgeParams};function P(C){return(0,h.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerDirectionParams),createGeometry:b,createLocationIterator:l=>o.PolymerLocationIterator.fromGroup(l),getLoci:o.getPolymerElementLoci,eachLocation:o.eachPolymerElement,setUpdateState:(l,S,T)=>{l.createGeometry=S.sizeFactor!==T.sizeFactor}},C)}})(BM)),BM}var RM={},uW;function Yw(){return uW||(uW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PolymerGapParams=e.DefaultPolymerGapCylinderProps=e.PolymerGapCylinderParams=void 0,e.PolymerGapVisual=g;const t=Ne(),r=Rt(),n=$t(),i=Ge(),c=io(),o=ba(),s=mr(),h=Tt(),f=rt(),y=10;e.PolymerGapCylinderParams={sizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),radialSegments:t.ParamDefinition.Numeric(16,{min:2,max:56,step:2},h.BaseGeometry.CustomQualityParamInfo)},e.DefaultPolymerGapCylinderProps=t.ParamDefinition.getDefaultValues(e.PolymerGapCylinderParams);function _(a,d,p,u,m,v){const b=d.gapElements.length;if(!b)return r.Mesh.createEmpty(v);const{sizeFactor:P,radialSegments:C}=m,l=y*C*2*b*2,S=n.MeshBuilder.createState(l,l/10,v),T=(0,i.Vec3)(),A=(0,i.Vec3)(),x={radiusTop:1,radiusBottom:1,topCap:!0,bottomCap:!0,radialSegments:C};let M=0;const D=(0,c.PolymerGapIterator)(p,d);for(;D.hasNext;){const{centerA:E,centerB:I}=D.move();E.element===I.element||(d.conformation.invariantPosition(E.element,T),d.conformation.invariantPosition(I.element,A),x.radiusTop=x.radiusBottom=u.size.size(E)*P,S.currentGroup=M,(0,o.addFixedCountDashedCylinder)(S,T,A,.5,y,!1,x),x.radiusTop=x.radiusBottom=u.size.size(I)*P,S.currentGroup=M+1,(0,o.addFixedCountDashedCylinder)(S,A,T,.5,y,!1,x)),M+=2}const V=n.MeshBuilder.getMesh(S),R=f.Sphere3D.expand((0,f.Sphere3D)(),d.boundary.sphere,1*m.sizeFactor);return V.setBoundingSphere(R),V}e.PolymerGapParams={...s.UnitsMeshParams,...e.PolymerGapCylinderParams};function g(a){return(0,s.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerGapParams),createGeometry:_,createLocationIterator:d=>c.PolymerGapLocationIterator.fromGroup(d,{asSecondary:!0}),getLoci:c.getPolymerGapElementLoci,eachLocation:c.eachPolymerGapElement,setUpdateState:(d,p,u)=>{d.createGeometry=p.sizeFactor!==u.sizeFactor||p.radialSegments!==u.radialSegments}},a)}})(RM)),RM}var OM={},rT={},lW;function CZ(){if(lW)return rT;lW=1,Object.defineProperty(rT,"__esModule",{value:!0}),rT.addSheet=V;const e=Ge(),t=_t(),r=(0,e.Vec3)(),n=(0,e.Vec3)(),i=(0,e.Vec3)(),c=(0,e.Vec3)(),o=(0,e.Vec3)(),s=(0,e.Vec3)(),h=(0,e.Vec3)(),f=(0,e.Vec3)(),y=(0,e.Vec3)(),_=(0,e.Vec3)(),g=(0,e.Vec3)(),a=(0,e.Vec3)(),d=(0,e.Vec3)(),p=(0,e.Vec3)(),u=(0,e.Vec3)(),m=e.Vec3.fromArray,v=e.Vec3.scale,b=e.Vec3.add,P=e.Vec3.sub,C=e.Vec3.magnitude,l=e.Vec3.negate,S=e.Vec3.copy,T=e.Vec3.cross,A=e.Vec3.set,x=t.ChunkedArray.add3,M=t.ChunkedArray.add;function D(R,E,I,B,w,O,F,L,U){const{vertices:q,normals:N,indices:k}=E,j=q.elementCount;if(m(r,B,R),v(h,r,F),v(s,r,L),m(n,w,R),v(c,n,O),T(_,n,r),m(y,I,R),b(a,b(a,y,c),s),P(d,b(d,y,c),h),P(p,P(p,y,c),h),b(u,P(u,y,c),s),F<L?(x(q,u[0],u[1],u[2]),x(q,p[0],p[1],p[2]),x(q,d[0],d[1],d[2]),x(q,a[0],a[1],a[2]),S(o,s)):(x(q,a[0],a[1],a[2]),x(q,d[0],d[1],d[2]),x(q,p[0],p[1],p[2]),x(q,u[0],u[1],u[2]),S(o,h)),U){for(let H=0;H<4;++H)x(N,-_[0],-_[1],-_[2]);
7087x(k,j,j+1,j+2),x(k,j+2,j+3,j)}else{for(let H=0;H<4;++H)x(N,_[0],_[1],_[2]);x(k,j+2,j+1,j),x(k,j,j+3,j+2)}}function V(R,E,I,B,w,O,F,L,U,q){const{currentGroup:N,vertices:k,normals:j,indices:H,groups:G}=R,z=k.elementCount;let W=0;L>0?(m(r,E,0),m(n,E,w*3),W=L/C(P(i,n,r))):A(f,0,0,0);for(let Y=0;Y<=w;++Y){const K=O[Y],Q=F[Y],J=L===0?Q:L*(1-Y/w),ae=Y*3;m(o,I,ae),v(o,o,J),m(c,B,ae),v(c,c,K),L>0&&(m(r,I,ae),m(n,B,ae),v(f,T(f,r,n),W)),m(y,E,ae),m(_,I,ae),m(g,B,ae),b(r,b(r,y,c),o),b(n,_,f),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2]),b(r,P(r,y,c),o),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2]),l(n,g),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2]),P(r,P(r,y,c),o),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2]),b(n,l(n,_),f),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2]),P(r,b(r,y,c),o),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2]),S(n,g),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2]),b(r,b(r,y,c),o),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2])}for(let Y=0;Y<w;++Y){for(let K=0;K<2;K++)x(H,z+Y*8+2*K,z+(Y+1)*8+2*K+1,z+Y*8+2*K+1),x(H,z+Y*8+2*K,z+(Y+1)*8+2*K,z+(Y+1)*8+2*K+1);for(let K=2;K<4;K++)x(H,z+Y*8+2*K,z+(Y+1)*8+2*K,z+Y*8+2*K+1),x(H,z+(Y+1)*8+2*K,z+(Y+1)*8+2*K+1,z+Y*8+2*K+1)}if(U){const Y=O[0],K=F[0],Q=L===0?K:L;D(0,R,E,I,B,Y,Q,Q,!1)}else if(L>0){const Y=O[0],K=F[0];D(0,R,E,I,B,Y,L,-K,!1),D(0,R,E,I,B,Y,-L,K,!1)}if(q&&L===0){const Y=O[w],K=F[w];D(w*3,R,E,I,B,Y,K,K,!0)}const X=(w+1)*8+(U?4:L>0?8:0)+(q&&L===0?4:0);for(let Y=0,K=X;Y<K;++Y)M(G,N)}return rT}var nT={},dW;function PZ(){if(dW)return nT;dW=1,Object.defineProperty(nT,"__esModule",{value:!0}),nT.addRibbon=C;const e=Ge(),t=_t(),r=e.Vec3.fromArray,n=e.Vec3.magnitude,i=e.Vec3.sub,c=e.Vec3.add,o=e.Vec3.scale,s=e.Vec3.negate,h=e.Vec3.copy,f=e.Vec3.cross,y=t.ChunkedArray.add3,_=t.ChunkedArray.add,g=(0,e.Vec3)(),a=(0,e.Vec3)(),d=(0,e.Vec3)(),p=(0,e.Vec3)(),u=(0,e.Vec3)(),m=(0,e.Vec3)(),v=(0,e.Vec3)(),b=(0,e.Vec3)(),P=(0,e.Vec3)();function C(l,S,T,A,x,M,D,V){const{currentGroup:R,vertices:E,normals:I,indices:B,groups:w}=l,O=E.elementCount;let F=0;V>0&&(r(g,S,0),r(a,S,x*3),F=V/n(i(d,a,g)));for(let U=0;U<=x;++U){const q=M[U],N=D[U],k=V===0?N:V*(1-U/x),j=U*3;r(u,T,j),o(u,u,k),r(p,A,j),o(p,p,q),V>0&&(r(g,T,j),r(a,A,j),o(m,f(m,g,a),F)),r(v,S,j),r(b,T,j),r(P,A,j),c(g,v,u),s(a,P),y(E,g[0],g[1],g[2]),y(I,a[0],a[1],a[2]),i(g,v,u),y(E,g[0],g[1],g[2]),y(I,a[0],a[1],a[2]),c(g,v,u),h(a,P),y(E,g[0],g[1],g[2]),y(I,a[0],a[1],a[2]),i(g,v,u),y(E,g[0],g[1],g[2]),y(I,a[0],a[1],a[2])}for(let U=0;U<x;++U)y(B,O+U*4,O+(U+1)*4+1,O+U*4+1),y(B,O+U*4,O+(U+1)*4,O+(U+1)*4+1),y(B,O+U*4+2+1,O+(U+1)*4+2+1,O+U*4+2),y(B,O+U*4+2,O+(U+1)*4+2+1,O+(U+1)*4+2);const L=(x+1)*4;for(let U=0,q=L;U<q;++U)_(w,R)}return nT}var fW;function uue(){return fW||(fW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PolymerTraceParams=e.DefaultPolymerTraceMeshProps=e.PolymerTraceMeshParams=void 0,e.PolymerTraceVisual=v;const t=Ne(),r=Ke(),n=Rt(),i=$t(),c=io(),o=dt(),s=CZ(),h=Gw(),f=mr(),y=Pl(),_=PZ(),g=Jn(),a=Ge(),d=Tt(),p=rt();e.PolymerTraceMeshParams={sizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),aspectRatio:t.ParamDefinition.Numeric(5,{min:.1,max:10,step:.1}),arrowFactor:t.ParamDefinition.Numeric(1.5,{min:0,max:3,step:.1},{description:"Size factor for sheet arrows"}),tubularHelices:t.ParamDefinition.Boolean(!1,{description:"Draw alpha helices as tubes"}),roundCap:t.ParamDefinition.Boolean(!1,{description:"Draw round caps on tubular alpha helices"}),helixProfile:t.ParamDefinition.Select("elliptical",t.ParamDefinition.arrayToOptions(["elliptical","rounded","square"]),{description:"Protein helix trace profile"}),nucleicProfile:t.ParamDefinition.Select("square",t.ParamDefinition.arrayToOptions(["elliptical","rounded","square"]),{description:"Nucleic strand trace profile"}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},d.BaseGeometry.CustomQualityParamInfo),linearSegments:t.ParamDefinition.Numeric(8,{min:1,max:48,step:1},d.BaseGeometry.CustomQualityParamInfo),radialSegments:t.ParamDefinition.Numeric(16,{min:2,max:56,step:2},d.BaseGeometry.CustomQualityParamInfo)},e.DefaultPolymerTraceMeshProps=t.ParamDefinition.getDefaultValues(e.PolymerTraceMeshParams);const u=(0,a.Vec3)();function m(b,P,C,l,S,T){const A=P.polymerElements.length;if(!A)return n.Mesh.createEmpty(T);const{sizeFactor:x,detail:M,linearSegments:D,radialSegments:V,aspectRatio:R,arrowFactor:E,tubularHelices:I,roundCap:B,helixProfile:w,nucleicProfile:O}=S,F=D*V*A+(V+1)*A*2,L=i.MeshBuilder.createState(F,F/10,T),U=r.Unit.isCoarse(P),q=(0,c.createCurveSegmentState)(D),{curvePoints:N,normalVectors:k,binormalVectors:j,widthValues:H,heightValues:G}=q;let z=0;const W=(0,c.PolymerTraceIterator)(P,C,{ignoreSecondaryStructure:!1,useHelixOrientation:I});for(;W.hasNext;){const K=W.move();L.currentGroup=z;const Q=(0,o.isNucleic)(K.moleculeType),J=o.SecondaryStructureType.is(K.secStrucType,o.SecondaryStructureType.Flag.Beta),ae=o.SecondaryStructureType.is(K.secStrucType,o.SecondaryStructureType.Flag.Helix),te=ae&&!I?c.HelixTension:c.StandardTension,ne=Q?c.NucleicShift:c.StandardShift;(0,c.interpolateCurveSegment)(q,K,te,ne);let $=l.size.size(K.centerPrev)*x,ie=l.size.size(K.center)*x,Z=l.size.size(K.centerNext)*x;
7087U&&($*=R/2,ie*=R/2,Z*=R/2);const re=K.secStrucFirst||K.coarseBackboneFirst||K.first,oe=K.secStrucLast||K.coarseBackboneLast||K.last,ce=ae&&I&&B;let ue=D;if(K.initial){ue=Math.max(Math.round(D*ne),1);const pe=D-ue;N.copyWithin(0,pe*3),j.copyWithin(0,pe*3),k.copyWithin(0,pe*3),a.Vec3.fromArray(u,N,3),a.Vec3.normalize(u,a.Vec3.sub(u,K.p2,u)),a.Vec3.scaleAndAdd(u,K.p2,u,ie*c.OverhangFactor),a.Vec3.toArray(u,N,0)}else K.final&&(ue=Math.max(Math.round(D*(1-ne)),1),a.Vec3.fromArray(u,N,ue*3-3),a.Vec3.normalize(u,a.Vec3.sub(u,K.p2,u)),a.Vec3.scaleAndAdd(u,K.p2,u,ie*c.OverhangFactor),a.Vec3.toArray(u,N,ue*3));if(K.initial===!0&&K.final===!0)(0,g.addSphere)(L,K.p2,ie*2,M);else if(J){const pe=$*R,he=ie*R,fe=Z*R,de=K.secStrucLast?he*E:0;(0,c.interpolateSizes)(q,$,ie,Z,pe,he,fe,ne),V===2?(0,_.addRibbon)(L,N,k,j,ue,H,G,de):(0,s.addSheet)(L,N,k,j,ue,H,G,de,re,oe)}else{let pe,he,fe;ae?I?($*=R*1.5,ie*=R*1.5,Z*=R*1.5,pe=$,he=ie,fe=Z):(pe=$*R,he=ie*R,fe=Z*R):Q?(pe=$*R,he=ie*R,fe=Z*R):(pe=$,he=ie,fe=Z),(0,c.interpolateSizes)(q,$,ie,Z,pe,he,fe,ne);const[de,ge]=Q?[j,k]:[k,j];if(Q)for(let ve=0,le=de.length;ve<le;ve++)de[ve]*=-1;const Ce=Q?O:w;V===2?Q?(0,_.addRibbon)(L,N,de,ge,ue,G,H,0):(0,_.addRibbon)(L,N,de,ge,ue,H,G,0):V===4?(0,s.addSheet)(L,N,de,ge,ue,H,G,0,re,oe):he===ie?(0,h.addTube)(L,N,de,ge,ue,V,H,G,re,oe,"elliptical",ce):Ce==="square"?(0,s.addSheet)(L,N,de,ge,ue,H,G,0,re,oe):(0,h.addTube)(L,N,de,ge,ue,V,H,G,re,oe,Ce)}++z}const X=i.MeshBuilder.getMesh(L),Y=p.Sphere3D.expand((0,p.Sphere3D)(),P.boundary.sphere,1*S.sizeFactor);return X.setBoundingSphere(Y),X}e.PolymerTraceParams={...f.UnitsMeshParams,...e.PolymerTraceMeshParams};function v(b){return(0,f.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerTraceParams),createGeometry:m,createLocationIterator:P=>c.PolymerLocationIterator.fromGroup(P,{asSecondary:!0}),getLoci:c.getPolymerElementLoci,eachLocation:c.eachPolymerElement,setUpdateState:(P,C,l,S,T,A,x)=>{P.createGeometry=C.sizeFactor!==l.sizeFactor||C.tubularHelices!==l.tubularHelices||C.roundCap!==l.roundCap||C.detail!==l.detail||C.linearSegments!==l.linearSegments||C.radialSegments!==l.radialSegments||C.aspectRatio!==l.aspectRatio||C.arrowFactor!==l.arrowFactor||C.helixProfile!==l.helixProfile||C.nucleicProfile!==l.nucleicProfile;const M=y.SecondaryStructureProvider.get(A.structure).version;P.info.secondaryStructureHash!==M&&(P.info.secondaryStructureHash!==void 0&&(P.createGeometry=!0),P.info.secondaryStructureHash=M)},initUpdateState:(P,C,l,S)=>{const T=y.SecondaryStructureProvider.get(S.structure).version;P.info.secondaryStructureHash=T}},b)}})(OM)),OM}var mW;function lue(){return mW||(mW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CartoonRepresentationProvider=e.CartoonParams=void 0,e.getCartoonParams=v,e.CartoonRepresentation=b;const t=Ke(),r=Lt(),n=Ne(),i=Yr(),c=Sa(),o=rue(),s=nue(),h=iue(),f=aue(),y=oue(),_=cue(),g=Yw(),a=uue(),d=Pl(),p=SZ(),u=Tt(),m={"polymer-trace":(P,C)=>(0,c.UnitsRepresentation)("Polymer trace mesh",P,C,a.PolymerTraceVisual),"polymer-gap":(P,C)=>(0,c.UnitsRepresentation)("Polymer gap cylinder",P,C,g.PolymerGapVisual),"nucleotide-block":(P,C)=>(0,c.UnitsRepresentation)("Nucleotide block mesh",P,C,o.NucleotideBlockVisual),"nucleotide-ring":(P,C)=>(0,c.UnitsRepresentation)("Nucleotide ring mesh",P,C,s.NucleotideRingVisual),"nucleotide-atomic-ring-fill":(P,C)=>(0,c.UnitsRepresentation)("Nucleotide atomic ring fill",P,C,h.NucleotideAtomicRingFillVisual),"nucleotide-atomic-bond":(P,C)=>(0,c.UnitsRepresentation)("Nucleotide atomic bond",P,C,f.NucleotideAtomicBondVisual),"nucleotide-atomic-element":(P,C)=>(0,c.UnitsRepresentation)("Nucleotide atomic element",P,C,y.NucleotideAtomicElementVisual),"direction-wedge":(P,C)=>(0,c.UnitsRepresentation)("Polymer direction wedge",P,C,_.PolymerDirectionVisual)};e.CartoonParams={...a.PolymerTraceParams,...g.PolymerGapParams,...o.NucleotideBlockParams,...s.NucleotideRingParams,...f.NucleotideAtomicBondParams,...y.NucleotideAtomicElementParams,...h.NucleotideAtomicRingFillParams,..._.PolymerDirectionParams,sizeFactor:n.ParamDefinition.Numeric(.2,{min:0,max:10,step:.
708701}),visuals:n.ParamDefinition.MultiSelect(["polymer-trace","polymer-gap","nucleotide-ring","nucleotide-atomic-ring-fill","nucleotide-atomic-bond","nucleotide-atomic-element"],n.ParamDefinition.objectToOptions(m)),bumpFrequency:n.ParamDefinition.Numeric(2,{min:0,max:10,step:.1},u.BaseGeometry.ShadingCategory),density:n.ParamDefinition.Numeric(.1,{min:0,max:1,step:.01},u.BaseGeometry.ShadingCategory),colorMode:n.ParamDefinition.Select("default",n.ParamDefinition.arrayToOptions(["default","interpolate"]),{...u.BaseGeometry.ShadingCategory,isHidden:!0})};function v(P,C){const l=n.ParamDefinition.clone(e.CartoonParams);let S=!1,T=!1;return C.units.forEach(A=>{!S&&t.Unit.isAtomic(A)&&A.nucleotideElements.length&&(S=!0),!T&&A.gapElements.length&&(T=!0)}),l.visuals.defaultValue=["polymer-trace"],S&&l.visuals.defaultValue.push("nucleotide-ring"),T&&l.visuals.defaultValue.push("polymer-gap"),l}function b(P,C){return r.Representation.createMulti("Cartoon",P,C,i.StructureRepresentationStateBuilder,m)}e.CartoonRepresentationProvider=(0,i.StructureRepresentationProvider)({name:"cartoon",label:"Cartoon",description:"Displays ribbons, planks, tubes smoothly following the trace atoms of polymers.",factory:b,getParams:v,defaultValues:n.ParamDefinition.getDefaultValues(e.CartoonParams),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uniform"},isApplicable:P=>P.polymerResidueCount>0,ensureCustomProperties:{attach:async(P,C)=>{await d.SecondaryStructureProvider.attach(P,C,void 0,!0);for(const l of C.models)await p.HelixOrientationProvider.attach(P,l,void 0,!0)},detach:P=>{d.SecondaryStructureProvider.ref(P,!1);for(const C of P.models)p.HelixOrientationProvider.ref(C,!1)}}})})(AM)),AM}var kM={},FM={},pW;function due(){return pW||(pW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureEllipsoidMeshParams=e.EllipsoidMeshParams=void 0,e.createEllipsoidMesh=m,e.EllipsoidMeshVisual=v,e.createStructureEllipsoidMesh=b,e.StructureEllipsoidMeshVisual=P;const t=Ne(),r=mr(),n=zi(),i=Ke(),c=Rt(),o=Xf(),s=$t(),h=Ge(),f=Ow(),y=FT(),_=rn(),g=Jn(),a=rt(),d=Tt(),p=Br(),u=h.Vec3.add;function m(C,l,S,T,A,x){const{child:M}=S,D=M?.unitMap.get(l.id);if(M&&!D)return c.Mesh.createEmpty(x);const{detail:V,sizeFactor:R}=A,E=x?.hasBoundingSphere()?a.Sphere3D.clone(x.boundingSphere):void 0,{elements:I,model:B}=l,w=I.length,O=w*(0,o.sphereVertexCount)(V),F=s.MeshBuilder.createState(O,O/2,x),L=y.AtomSiteAnisotrop.Provider.get(B);if(!L)return c.Mesh.createEmpty(x);const U=(0,h.Vec3)(),q=(0,h.Mat3)(),N=(0,h.Vec3)(),k=(0,h.Vec3)(),j=(0,h.Vec3)(),{elementToAnsiotrop:H,data:G}=L,{U:z}=G,W=G._schema.U.space,X=l.conformation,Y=i.StructureElement.Location.create(S);Y.unit=l;const K=(0,n.makeElementIgnoreTest)(S,l,A),Q=(0,h.Vec3)();let J=0;for(let ne=0;ne<w;ne++){const $=I[ne],ie=H[$];if(ie!==-1&&!(K&&K(I[ne]))){Y.element=$,X.invariantPosition($,U),u(Q,Q,U),J+=1,F.currentGroup=ne,h.Tensor.toMat3(q,W,z.value(ie)),h.Mat3.symmtricFromLower(q,q),h.Mat3.symmetricEigenvalues(N,q),h.Mat3.eigenvector(k,q,N[1]),h.Mat3.eigenvector(j,q,N[2]);for(let Z=0;Z<3;++Z)N[Z]=R*1.5958*Math.sqrt(Math.abs(N[Z]));(0,_.equalEps)(N[0],N[1],h.EPSILON)&&(0,_.equalEps)(N[1],N[2],h.EPSILON)?(0,g.addSphere)(F,U,N[0],V):(0,f.addEllipsoid)(F,U,j,k,N,V)}}const ae=s.MeshBuilder.getMesh(F);if(J===0)return ae;let te;return h.Vec3.scale(Q,Q,1/J),E&&h.Vec3.distance(Q,E.center)/E.radius<.1?te=E:te=a.Sphere3D.expand((0,a.Sphere3D)(),(D??l).boundary.sphere,1*R*2),ae.setBoundingSphere(te),ae}e.EllipsoidMeshParams={...r.UnitsMeshParams,sizeFactor:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},d.BaseGeometry.CustomQualityParamInfo),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:t.ParamDefinition.Boolean(!1)};function v(C){return(0,r.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.EllipsoidMeshParams),createGeometry:m,createLocationIterator:n.ElementIterator.fromGroup,getLoci:n.getElementLoci,eachLocation:n.eachElement,setUpdateState:(l,S,T)=>{l.createGeometry=S.sizeFactor!==T.sizeFactor||S.detail!==T.detail||S.ignoreHydrogens!==T.ignoreHydrogens}},C)}function b(C,l,S,T,A){const{child:x}=l,M=A?.hasBoundingSphere()?a.Sphere3D.clone(A.boundingSphere):void 0,{detail:D,sizeFactor:V}=T,{getSerialIndex:R}=l.serialMapping,I=l.elementCount*(0,o.sphereVertexCount)(D),B=s.MeshBuilder.createState(I,I/2,A),w=(0,h.Vec3)(),O=(0,h.Mat3)(),F=(0,h.Vec3)(),L=(0,h.Vec3)(),U=(0,h.Vec3)(),q=(0,h.Vec3)();let N=0;for(const H of l.units){const G=x?.unitMap.get(H.id);if(x&&!G)return c.Mesh.createEmpty(A);const{elements:z,model:W}=H,X=z.length,Y=y.AtomSiteAnisotrop.Provider.get(W);if(!Y)return c.Mesh.createEmpty(A);const K=(0,n.makeElementIgnoreTest)(l,H,T),{elementToAnsiotrop:Q,data:J}=Y,{U:ae}=J,te=J._schema.U.space,ne=H.conformation,$=i.StructureElement.Location.create(l);$.unit=H;for(let ie=0;ie<X;ie++){const Z=z[ie],re=Q[Z];if(re!==-1&&!(K&&K(z[ie]))){$.element=Z,ne.position(Z,w),u(q,q,w),N+=1,B.currentGroup=R(H,z[ie]),h.Tensor.toMat3(O,te,ae.value(re)),h.Mat3.symmtricFromLower(O,O),h.Mat3.symmetricEigenvalues(F,O),h.Mat3.eigenvector(L,O,F[1]),h.Mat3.eigenvector(U,O,F[2]);for(let oe=0;oe<3;++oe)F[oe]=V*1.5958*Math.sqrt(Math.abs(F[oe]));(0,_.equalEps)(F[0],F[1],h.EPSILON)&&(0,_.equalEps)(F[1],F[2],h.EPSILON)?(0,g.addSphere)(B,w,F[0],D):(0,f.addEllipsoid)(B,w,U,L,F,D)}}}const k=s.MeshBuilder.getMesh(B);if(N===0)return k;let j;return h.Vec3.scale(q,q,1/N),M&&h.Vec3.distance(q,M.center)/M.radius<1?j=M:j=a.Sphere3D.expand((0,a.Sphere3D)(),(x??l).boundary.sphere,1*V*2),k.setBoundingSphere(j),k}
7087e.StructureEllipsoidMeshParams={...p.ComplexMeshParams,sizeFactor:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},d.BaseGeometry.CustomQualityParamInfo),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:t.ParamDefinition.Boolean(!1)};function P(C){return(0,p.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureEllipsoidMeshParams),createGeometry:b,createLocationIterator:n.ElementIterator.fromStructure,getLoci:n.getSerialElementLoci,eachLocation:n.eachSerialElement,setUpdateState:(l,S,T)=>{l.createGeometry=S.sizeFactor!==T.sizeFactor||S.detail!==T.detail||S.ignoreHydrogens!==T.ignoreHydrogens}},C)}})(FM)),FM}var hW;function fue(){return hW||(hW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.EllipsoidRepresentationProvider=e.EllipsoidParams=void 0,e.getEllipsoidParams=g,e.EllipsoidRepresentation=a;const t=Ne(),r=Lt(),n=Ke(),i=Yr(),c=due(),o=FT(),s=vZ(),h=bZ(),f=Qf(),y=Tt(),_={"ellipsoid-mesh":(d,p)=>(0,i.UnitsRepresentation)("Ellipsoid Mesh",d,p,c.EllipsoidMeshVisual),"intra-bond":(d,p)=>(0,i.UnitsRepresentation)("Intra-unit bond cylinder",d,p,s.IntraUnitBondCylinderVisual),"inter-bond":(d,p)=>(0,i.ComplexRepresentation)("Inter-unit bond cylinder",d,p,h.InterUnitBondCylinderVisual),"structure-ellipsoid-mesh":(d,p)=>(0,i.ComplexRepresentation)("Structure Ellipsoid Mesh",d,p,c.StructureEllipsoidMeshVisual),"structure-intra-bond":(d,p)=>(0,i.ComplexRepresentation)("Structure intra-unit bond cylinder",d,p,s.StructureIntraUnitBondCylinderVisual)};e.EllipsoidParams={...c.EllipsoidMeshParams,...s.IntraUnitBondCylinderParams,...h.InterUnitBondCylinderParams,includeParent:t.ParamDefinition.Boolean(!1),adjustCylinderLength:t.ParamDefinition.Boolean(!1,{isHidden:!0}),unitKinds:(0,f.getUnitKindsParam)(["atomic"]),sizeFactor:t.ParamDefinition.Numeric(1,{min:.01,max:10,step:.01}),sizeAspectRatio:t.ParamDefinition.Numeric(.1,{min:.01,max:3,step:.01}),linkCap:t.ParamDefinition.Boolean(!0),visuals:t.ParamDefinition.MultiSelect(["ellipsoid-mesh","intra-bond","inter-bond"],t.ParamDefinition.objectToOptions(_)),bumpFrequency:t.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},y.BaseGeometry.ShadingCategory)};function g(d,p){let u=e.EllipsoidParams;return n.Structure.getSize(p)>=n.Structure.Size.Huge?(u=t.ParamDefinition.clone(u),u.visuals.defaultValue=["ellipsoid-mesh","intra-bond"]):p.unitSymmetryGroups.length>500&&(u=t.ParamDefinition.clone(u),u.visuals.defaultValue=["structure-ellipsoid-mesh","structure-intra-bond"]),u}function a(d,p){return r.Representation.createMulti("Ellipsoid",d,p,i.StructureRepresentationStateBuilder,_)}e.EllipsoidRepresentationProvider=(0,i.StructureRepresentationProvider)({name:"ellipsoid",label:"Ellipsoid",description:"Displays anisotropic displacement ellipsoids of atomic elements plus bonds as cylinders.",factory:a,getParams:g,defaultValues:t.ParamDefinition.getDefaultValues(e.EllipsoidParams),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:d=>d.elementCount>0&&d.models.some(p=>o.AtomSiteAnisotrop.Provider.isApplicable(p)),getData:(d,p)=>p.includeParent?d.asParent():d,mustRecreate:(d,p)=>d.includeParent!==p.includeParent})})(kM)),kM}var LM={},NM={},qM={},dl={},d_={},gW;function mue(){return gW||(gW=1,Object.defineProperty(d_,"__esModule",{value:!0}),d_.gaussianDensity_vert=void 0,d_.gaussianDensity_vert=`
7088precision highp float;
7089
7090attribute vec3 aPosition;
7091attribute float aRadius;
7092
7093varying vec3 vPosition;
7094varying float vRadiusSqInv;
7095
7096#if defined(dCalcType_groupId)
7097    attribute float aGroup;
7098    varying float vGroup;
7099#endif
7100
7101uniform vec3 uBboxSize;
7102uniform vec3 uBboxMin;
7103uniform float uResolution;
7104
7105void main() {
7106    vRadiusSqInv = 1.0 / (aRadius * aRadius);
7107    #if defined(dCalcType_groupId)
7108        vGroup = aGroup;
7109    #endif
7110    gl_PointSize = ceil(((aRadius * 3.0) / uResolution) + uResolution);
7111    vPosition = (aPosition - uBboxMin) / uResolution;
7112    gl_Position = vec4(((aPosition - uBboxMin) / uBboxSize) * 2.0 - 1.0, 1.0);
7113}
7114`),d_}var f_={},yW;function pue(){return yW||(yW=1,Object.defineProperty(f_,"__esMo
7114dule",{value:!0}),f_.gaussianDensity_frag=void 0,f_.gaussianDensity_frag=`
7115precision highp float;
7116
7117varying vec3 vPosition;
7118varying float vRadiusSqInv;
7119#if defined(dCalcType_groupId)
7120    #if defined(dGridTexType_2d)
7121        precision highp sampler2D;
7122        uniform sampler2D tMinDistanceTex;
7123        uniform vec3 uGridTexDim;
7124    #elif defined(dGridTexType_3d)
7125        precision highp sampler3D;
7126        uniform sampler3D tMinDistanceTex;
7127    #endif
7128    varying float vGroup;
7129#endif
7130
7131#include common
7132
7133uniform vec3 uGridDim;
7134uniform vec2 uGridTexScale;
7135uniform float uCurrentSlice;
7136uniform float uCurrentX;
7137uniform float uCurrentY;
7138uniform float uAlpha;
7139uniform float uResolution;
7140uniform float uRadiusFactorInv;
7141
7142void main() {
7143    vec2 v = gl_FragCoord.xy - vec2(uCurrentX, uCurrentY) - 0.5;
7144    vec3 fragPos = vec3(v.x, v.y, uCurrentSlice);
7145    float dist = distance(fragPos, vPosition) * uResolution;
7146
7147    #if defined(dCalcType_density)
7148        float density = exp(-uAlpha * ((dist * dist) * vRadiusSqInv));
7149        gl_FragColor.a = density * uRadiusFactorInv;
7150    #elif defined(dCalcType_minDistance)
7151        gl_FragColor.a = 1.0 - dist * uRadiusFactorInv;
7152    #elif defined(dCalcType_groupId)
7153        #if defined(dGridTexType_2d)
7154            float minDistance = 1.0 - texture2D(tMinDistanceTex, (gl_FragCoord.xy) / (uGridTexDim.xy / uGridTexScale)).a;
7155        #elif defined(dGridTexType_3d)
7156            float minDistance = 1.0 - texelFetch(tMinDistanceTex, ivec3(gl_FragCoord.xy, uCurrentSlice), 0).a;
7157        #endif
7158        if (dist * uRadiusFactorInv > minDistance + uResolution * 0.05)
7159            discard;
7160        gl_FragColor.rgb = packIntToRGB(vGroup);
7161    #endif
7162}
7163`),f_}var vW;function hue(){if(vW)return dl;vW=1,Object.defineProperty(dl,"__esModule",{value:!0}),dl.GaussianDensityGPU=u,dl.GaussianDensityTexture=m,dl.GaussianDensityTexture2d=v,dl.GaussianDensityTexture3d=b;const e=rt(),t=at(),r=Ge(),n=et(),i=Jt(),c=nc(),o=Kt(),s=Zt(),h=Yt(),f=mue(),y=pue(),_=Ct(),g={drawCount:(0,h.ValueSpec)("number"),instanceCount:(0,h.ValueSpec)("number"),aRadius:(0,h.AttributeSpec)("float32",1,0),aPosition:(0,h.AttributeSpec)("float32",3,0),aGroup:(0,h.AttributeSpec)("float32",1,0),uCurrentSlice:(0,h.UniformSpec)("f"),uCurrentX:(0,h.UniformSpec)("f"),uCurrentY:(0,h.UniformSpec)("f"),uBboxMin:(0,h.UniformSpec)("v3","material"),uBboxSize:(0,h.UniformSpec)("v3","material"),uGridDim:(0,h.UniformSpec)("v3","material"),uGridTexDim:(0,h.UniformSpec)("v3","material"),uGridTexScale:(0,h.UniformSpec)("v2","material"),uAlpha:(0,h.UniformSpec)("f","material"),uResolution:(0,h.UniformSpec)("f","material"),uRadiusFactorInv:(0,h.UniformSpec)("f","material"),tMinDistanceTex:(0,h.TextureSpec)("texture","rgba","float","nearest","material"),dGridTexType:(0,h.DefineSpec)("string",["2d","3d"]),dCalcType:(0,h.DefineSpec)("string",["density","minDistance","groupId"])},a="gaussian-density";function d(B){return B.namedFramebuffers[a]||(B.namedFramebuffers[a]=B.resources.framebuffer()),B.namedFramebuffers[a]}function p(B,w,O,F,L,U){const q=`${a}-${B}`;return w.namedTextures[q]||(w.namedTextures[q]=w.resources.texture(O,F,L,U)),w.namedTextures[q]}function u(B,w,O,F,L){const U=p("tmp",L,"image-uint8","rgba","ubyte","linear"),{scale:q,bbox:N,texture:k,gridDim:j,gridTexDim:H,radiusFactor:G,resolution:z,maxRadius:W}=l(L,B,w,O,!1,F,U),{field:X,idField:Y}=I(L,k,j,H);return{field:X,idField:Y,transform:C(q,N),radiusFactor:G,resolution:z,maxRadius:W}}function m(B,w,O,F,L,U){return B.isWebGL2?b(B,w,O,F,L,U):v(B,w,O,F,!1,L,U)}function v(B,w,O,F,L,U,q){_.isTimingMode&&B.timer.mark("GaussianDensityTexture2d");const N=l(B,w,O,F,L,U,q);return _.isTimingMode&&B.timer.markEnd("GaussianDensityTexture2d"),P(N)}function b(B,w,O,F,L,U){_.isTimingMode&&B.timer.mark("GaussianDensityTexture3d");const q=S(B,w,O,F,L,U);return _.isTimingMode&&B.timer.markEnd("GaussianDensityTexture3d"),P(q)}function P({texture:B,scale:w,bbox:O,gridDim:F,gridTexDim:L,gridDataDim:U,gridTexScale:q,radiusFactor:N,resolution:k,maxRadius:j}){return{transform:C(w,O),texture:B,bbox:O,gridDim:F,gridTexDim:L,gridDataDim:U,gridTexScale:q,radiu
7163sFactor:N,resolution:k,maxRadius:j}}function C(B,w){const O=r.Mat4.identity();return r.Mat4.fromScaling(O,B),r.Mat4.setTranslation(O,w.min),O}function l(B,w,O,F,L,U,q){const{gl:N,resources:k,state:j,extensions:{colorBufferFloat:H,textureFloat:G,colorBufferHalfFloat:z,textureHalfFloat:W,blendMinMax:X}}=B,{smoothness:Y,resolution:K}=U,{drawCount:Q,positions:J,radii:ae,groups:te,scale:ne,expandedBox:$,dim:ie,maxRadius:Z}=T(w,O,F,U),[re,oe,ce]=ie,{texDimX:ue,texDimY:pe,texCols:he,powerOfTwoSize:fe}=E(ie),de=r.Vec3.create(ue,pe,0),ge=r.Vec2.create(ue/fe,pe/fe),Ce=Z*2,ve=L?fe:ue,le=L?fe:pe,me=p("min-dist-2d",B,"image-uint8","rgba","ubyte","nearest");me.define(ve,le);const ee=A(B,Q,J,ae,te,me,$,ie,de,ge,Y,K,Ce),{uCurrentSlice:se,uCurrentX:ye,uCurrentY:Se}=ee.values,Ae=d(B);Ae.bind(),M(B),q||(q=z&&W?k.texture("image-float16","rgba","fp16","linear"):H&&G?k.texture("image-float32","rgba","float","linear"):k.texture("image-uint8","rgba","ubyte","linear")),q.define(ve,le);function _e(be,xe){j.currentRenderItemId=-1,be.attachFramebuffer(Ae,0),xe&&(j.viewport(0,0,ve,le),j.scissor(0,0,ve,le),N.clear(N.COLOR_BUFFER_BIT)),n.ValueCell.update(Se,0);let we=0,Be=0,Me=0;for(let Re=0;Re<ce;++Re)we>=he&&(we-=he,Be+=oe,Me=0,n.ValueCell.update(Se,Be)),n.ValueCell.update(ye,Me),n.ValueCell.update(se,Re),j.viewport(Me,Be,re,oe),j.scissor(Me,Be,re,oe),ee.render(),++we,Me+=re;N.flush()}return V(B,ee),_e(q,!0),X&&(D(B,ee),_e(me,!0),R(B,ee),_e(q,!1)),{texture:q,scale:ne,bbox:$,gridDim:ie,gridTexDim:de,gridDataDim:ie,gridTexScale:ge,radiusFactor:Ce,resolution:K,maxRadius:Z}}function S(B,w,O,F,L,U){const{gl:q,resources:N,state:k,extensions:{colorBufferFloat:j,textureFloat:H,colorBufferHalfFloat:G,textureHalfFloat:z}}=B,{smoothness:W,resolution:X}=L,{drawCount:Y,positions:K,radii:Q,groups:J,scale:ae,expandedBox:te,dim:ne,maxRadius:$}=T(w,O,F,L),[ie,Z,re]=ne,oe=p("min-dist-3d",B,"volume-uint8","rgba","ubyte","nearest");oe.define(ie,Z,re);const ce=r.Vec2.create(1,1),ue=$*2,pe=A(B,Y,K,Q,J,oe,te,ne,ne,ce,W,X,ue),{uCurrentSlice:he}=pe.values,fe=d(B);fe.bind(),M(B),k.viewport(0,0,ie,Z),k.scissor(0,0,ie,Z),U||(U=G&&z?N.texture("volume-float16","rgba","fp16","linear"):j&&H?N.texture("volume-float32","rgba","float","linear"):N.texture("volume-uint8","rgba","ubyte","linear")),U.define(ie,Z,re);function de(ge,Ce){k.currentRenderItemId=-1;for(let ve=0;ve<re;++ve)n.ValueCell.update(he,ve),ge.attachFramebuffer(fe,0,ve),Ce&&q.clear(q.COLOR_BUFFER_BIT),pe.render();q.flush()}return V(B,pe),de(U,!0),D(B,pe),de(oe,!0),R(B,pe),de(U,!1),{texture:U,scale:ae,bbox:te,gridDim:ne,gridTexDim:ne,gridDataDim:ne,gridTexScale:ce,radiusFactor:ue,resolution:X,maxRadius:$}}function T(B,w,O,F){const{resolution:L,radiusOffset:U}=F,q=1/L,{indices:N,x:k,y:j,z:H,id:G}=B,z=t.OrderedSet.size(N),W=new Float32Array(z*3),X=new Float32Array(z),Y=new Float32Array(z);let K=0;for(let $=0;$<z;++$){const ie=t.OrderedSet.getAt(N,$);W[$*3]=k[ie],W[$*3+1]=j[ie],W[$*3+2]=H[ie];
7163const Z=O(ie)+U;K<Z&&(K=Z),X[$]=Z,Y[$]=G?G[$]:$}const Q=K*2+L*4,J=e.Box3D.expand((0,e.Box3D)(),w,r.Vec3.create(Q,Q,Q)),ae=e.Box3D.scale((0,e.Box3D)(),J,q),te=e.Box3D.size((0,r.Vec3)(),ae);r.Vec3.ceil(te,te);const ne=r.Vec3.create(L,L,L);return{drawCount:z,positions:W,radii:X,groups:Y,scale:ne,expandedBox:J,dim:te,maxRadius:K}}function A(B,w,O,F,L,U,q,N,k,j,H,G,z){if(B.namedComputeRenderables[a]){const W=r.Vec3.sub((0,r.Vec3)(),q.max,q.min),X=B.namedComputeRenderables[a].values;n.ValueCell.updateIfChanged(X.drawCount,w),n.ValueCell.updateIfChanged(X.instanceCount,1),n.ValueCell.update(X.aRadius,F),n.ValueCell.update(X.aPosition,O),n.ValueCell.update(X.aGroup,L),n.ValueCell.updateIfChanged(X.uCurrentSlice,0),n.ValueCell.updateIfChanged(X.uCurrentX,0),n.ValueCell.updateIfChanged(X.uCurrentY,0),n.ValueCell.update(X.uBboxMin,q.min),n.ValueCell.update(X.uBboxSize,W),n.ValueCell.update(X.uGridDim,N),n.ValueCell.update(X.uGridTexDim,k),n.ValueCell.update(X.uGridTexScale,j),n.ValueCell.updateIfChanged(X.uAlpha,H),n.ValueCell.updateIfChanged(X.uResolution,G),n.ValueCell.updateIfChanged(X.uRadiusFactorInv,1/z),n.ValueCell.update(X.tMinDistanceTex,U),n.ValueCell.updateIfChanged(X.dGridTexType,U.getDepth()>0?"3d":"2d"),n.ValueCell.updateIfChanged(X.dCalcType,"density"),B.namedComputeRenderables[a].update()}else B.namedComputeRenderables[a]=x(B,w,O,F,L,U,q,N,k,j,H,G,z);return B.namedComputeRenderables[a]}function x(B,w,O,F,L,U,q,N,k,j,H,G,z){const W=r.Vec3.sub((0,r.Vec3)(),q.max,q.min),X={drawCount:n.ValueCell.create(w),instanceCount:n.ValueCell.create(1),aRadius:n.ValueCell.create(F),aPosition:n.ValueCell.create(O),aGroup:n.ValueCell.create(L),uCurrentSlice:n.ValueCell.create(0),uCurrentX:n.ValueCell.create(0),uCurrentY:n.ValueCell.create(0),uBboxMin:n.ValueCell.create(q.min),uBboxSize:n.ValueCell.create(W),uGridDim:n.ValueCell.create(N),uGridTexDim:n.ValueCell.create(k),uGridTexScale:n.ValueCell.create(j),uAlpha:n.ValueCell.create(H),uResolution:n.ValueCell.create(G),uRadiusFactorInv:n.ValueCell.create(1/z),tMinDistanceTex:n.ValueCell.create(U),dGridTexType:n.ValueCell.create(U.getDepth()>0?"3d":"2d"),dCalcType:n.ValueCell.create("density")},Y={...g},K=(0,o.ShaderCode)(a,f.gaussianDensity_vert,y.gaussianDensity_frag),Q=(0,s.createComputeRenderItem)(B,"points",K,Y,X);return(0,i.createComputeRenderable)(Q,X)}function M(B){const{gl:w,state:O}=B;O.disable(w.CULL_FACE),O.enable(w.BLEND),O.disable(w.DEPTH_TEST),O.enable(w.SCISSOR_TEST),O.depthMask(!1),O.clearColor(0,0,0,0)}function D(B,w){const{gl:O,state:F}=B;if(n.ValueCell.update(w.values.dCalcType,"minDistance"),w.update(),F.colorMask(!1,!1,!1,!0),F.blendFunc(O.ONE,O.ONE),!B.extensions.blendMinMax)throw new Error("GPU gaussian surface calculation requires EXT_blend_minmax");F.blendEquation(B.extensions.blendMinMax.MAX)}function V(B,w){const{gl:O,state:F}=B;n.ValueCell.update(w.values.dCalcType,"density"),w.update(),F.colorMask(!1,!1,!1,!0),F.blendFunc(O.ONE,O.ONE),F.blendEquation(O.FUNC_ADD)}function R(B,w){const{gl:O,state:F}=B;n.ValueCell.update(w.values.dCalcType,"groupId"),w.update(),F.colorMask(!0,!0,!0,!1),F.blendFunc(O.ONE,O.ZERO),F.blendEquation(O.FUNC_ADD)}function E(B){const w=B[0]*B[1]*B[2],O=Math.sqrt(w),F=Math.pow(2,Math.ceil(Math.log(O)/Math.log(2)));let L=0,U=B[1],q=1,N=B[2];return F<B[0]*B[2]?(N=Math.floor(F/B[0]),q=Math.ceil(B[2]/N),L=N*B[
71630],U*=q):L=B[0]*B[2],{texDimX:L,texDimY:U,texRows:q,texCols:N,powerOfTwoSize:U<F?F:F*2}}function I(B,w,O,F){const[L,U,q]=O,[N,k]=F,j=Math.floor(N/L),H=r.Tensor.Space(O,[2,1,0],Float32Array),G=H.create(),z=r.Tensor.create(H,G),W=H.create(),X=r.Tensor.create(H,W),Y=new Uint8Array(N*k*4),K=d(B);K.bind(),w.attachFramebuffer(K,0),B.readPixels(0,0,N,k,Y);let Q=0,J=0,ae=0;for(let te=0;te<q;++te){J>=j&&(J=0,ae+=U);for(let ne=0;ne<U;++ne)for(let $=0;$<L;++$){const ie=4*(J*L+(ne+ae)*N+$);G[Q]=Y[ie+3]/255,W[Q]=(0,c.unpackRGBToInt)(Y[ie],Y[ie+1],Y[ie+2]),Q++}J++}return{field:z,idField:X}}return dl}var iT={},bW;function gue(){if(bW)return iT;bW=1,Object.defineProperty(iT,"__esModule",{value:!0}),iT.GaussianDensityCPU=s;const e=UD(),t=nn(),r=QQ(),n=os(),i=wt(),c=Tf(),o=Xr();async function s(h,f,y,_,g){const{resolution:a,radiusOffset:d,smoothness:p}=g,u=1/a,{indices:m,x:v,y:b,z:P,id:C}=f,l=t.OrderedSet.size(m),S=new Float32Array(l);let T=0;for(let Q=0;Q<l;++Q){const J=_(t.OrderedSet.getAt(m,Q))+d;T<J&&(T=J),S[Q]=J}const A=T*2+a,x=n.Box3D.expand((0,n.Box3D)(),y,i.Vec3.create(A,A,A)),M=x.min,D=n.Box3D.scale((0,n.Box3D)(),x,u),V=n.Box3D.size((0,i.Vec3)(),D);i.Vec3.ceil(V,V);const R=c.Tensor.Space(V,[0,1,2],Float32Array),E=R.create(),I=c.Tensor.create(R,E),B=R.create();B.fill(-1);const w=c.Tensor.create(R,B),[O,F,L]=V,U=L,q=F,N=U*q,k=(0,e.fillGridDim)(V[0],M[0],a),j=(0,e.fillGridDim)(V[1],M[1],a),H=(0,e.fillGridDim)(V[2],M[2],a),G=R.create(),z=p,W=Math.ceil(1e5/(Math.pow(Math.pow(T,3),3)*u));function X(Q,J){for(let ae=Q;ae<J;++ae){const te=t.OrderedSet.getAt(m,ae),ne=v[te],$=b[te],ie=P[te],Z=S[ae],oe=1/(Z*Z),ce=Z*2,ue=ce*ce,pe=Math.ceil(ce*u),he=Math.floor(u*(ne-M[0])),fe=Math.floor(u*($-M[1])),de=Math.floor(u*(ie-M[2])),ge=Math.max(0,he-pe),Ce=Math.max(0,fe-pe),ve=Math.max(0,de-pe),le=Math.min(O,he+pe+2),me=Math.min(F,fe+pe+2),ee=Math.min(L,de+pe+2);for(let se=ge;se<le;++se){const ye=k[se]-ne,Se=se*N;for(let Ae=Ce;Ae<me;++Ae){const _e=j[Ae]-$,be=ye*ye+_e*_e,xe=Ae*U+Se;for(let we=ve;we<ee;++we){const Be=H[we]-ie,Me=be+Be*Be;if(Me<=ue){const Re=(0,r.fasterExp)(-z*(Me*oe)),Te=we+xe;E[Te]+=Re,Re>G[Te]&&(G[Te]=Re,B[Te]=C?C[ae]:ae)}}}}}}async function Y(){for(let Q=0;Q<l;Q+=W)X(Q,Math.min(Q+W,l)),h.shouldUpdate&&await h.update({message:"filling density grid",current:Q,max:l})}await Y();const K=o.Mat4.identity();return o.Mat4.fromScaling(K,i.Vec3.create(a,a,a)),o.Mat4.setTranslation(K,x.min),{field:I,idField:w,transform:K,radiusFactor:1,resolution:a,maxRadius:T}}return iT}var _W;function Qw(){return _W||(_W=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultGaussianDensityProps=e.GaussianDensityParams=void 0,e.getTextureMaxCells=s,e.computeUnitGaussianDensity=h,e.computeUnitGaussianDensityTexture=f,e.computeUnitGaussianDensityTexture2d=y,e.computeStructureGaussianDensity=_,e.computeStructureGaussianDensityTexture=g,e.computeStructureGaussianDensityTexture2d=a;const t=nt(),r=Ne(),n=hue(),i=Er(),c=Tt(),o=gue();e.GaussianDensityParams={resolution:r.ParamDefinition.Numeric(1,{min:.1,max:20,step:.1},{description:"Grid resolution/cell spacing.",...c.BaseGeometry.CustomQualityParamInfo}),radiusOffset:r.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},{description:"Extra/offset radius added to the atoms/coarse elements for gaussian calculation. Useful to create coarse, low resolution surfaces."}),smoothness:r.ParamDefinition.Numeric(1.5,{min:1,max:3,step:.1},{description:"Smoothness of the gausian surface, lower is smoother."}),floodfill:r.ParamDefinition.Select("off",r.ParamDefinition.arrayToOptions(["off","inside","outside"]),{description:"If and how to floodfill the gaussian surface. Note that this disables GPU support."}),...i.CommonSurfaceParams},e.DefaultGaussianDensityProps=r.ParamDefinition.getDefaultValues(e.GaussianDensityParams);function s(d,p){const u=d.maxTextureSize/3;return u*u/Math.max(1,p?p.units.length/16:1)}function h(d,p,u,m){const{position:v,boundary:b,radius:P}=(0,i.getUnitConformationAndRadius)(d,p,u,m),C=(0,i.ensureReasonableResolution)(b.box,m);return t.Task.create("Gaussian Density",async l=>await(0,o.GaussianDensityCPU)(l,v,b.box,P,C))}function f(d,p,u,m,v,b){const{position:P,boundary:C,radius:l}=(0,i.getUnitConformationAndRadius)(d,p,u,m),S=(0,i.ensureReasonableResolution)(C.box,m,s(v,d));return(0,n.GaussianDensityTexture)(v,P,C.box,l,S,b)}
7163function y(d,p,u,m,v,b,P){const{position:C,boundary:l,radius:S}=(0,i.getUnitConformationAndRadius)(d,p,u,v),T=(0,i.ensureReasonableResolution)(l.box,v,s(b,d));return(0,n.GaussianDensityTexture2d)(b,C,l.box,S,m,T,P)}function _(d,p,u){const{position:m,boundary:v,radius:b}=(0,i.getStructureConformationAndRadius)(d,p,u),P=(0,i.ensureReasonableResolution)(v.box,u);return t.Task.create("Gaussian Density",async C=>await(0,o.GaussianDensityCPU)(C,m,v.box,b,P))}function g(d,p,u,m,v){const{position:b,boundary:P,radius:C}=(0,i.getStructureConformationAndRadius)(d,p,u),l=(0,i.ensureReasonableResolution)(P.box,u);return(0,n.GaussianDensityTexture)(m,b,P.box,C,l,v)}function a(d,p,u,m,v,b){const{box:P}=d.lookup3d.boundary,{position:C,boundary:l,radius:S}=(0,i.getStructureConformationAndRadius)(d,p,m),T=(0,i.ensureReasonableResolution)(l.box,m);return(0,n.GaussianDensityTexture2d)(v,C,P,S,u,T,b)}})(qM)),qM}var m_={},UM={},SW;function Zw(){return SW||(SW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.AllowedContours=e.TriTable=e.EdgeTable=e.EdgeIdInfo=e.CubeEdges=e.CubeVertices=e.EdgesYZ=e.EdgesXZ=e.EdgesXY=void 0,e.Index=t,e.IndexPair=r;function t(n,i,c){return{i:n,j:i,k:c}}function r(n,i){return{a:n,b:i}}e.EdgesXY=[[],[0,3],[0,1],[1,3],[1,2],[0,1,1,2,2,3,0,3],[0,2],[2,3],[2,3],[0,2],[0,1,1,2,2,3,0,3],[1,2],[1,3],[0,1],[0,3],[]],e.EdgesXZ=[[],[0,8],[0,9],[9,8],[9,4],[0,9,9,4,4,8,0,8],[0,4],[4,8],[4,8],[0,4],[0,9,9,4,4,8,0,8],[9,4],[9,8],[0,9],[0,8],[]],e.EdgesYZ=[[],[3,8],[3,11],[11,8],[11,7],[3,11,11,7,7,8,3,8],[3,7],[7,8],[7,8],[3,7],[3,11,11,7,7,8,3,8],[11,7],[11,8],[3,11],[3,8],[]],e.CubeVertices=[t(0,0,0),t(1,0,0),t(1,1,0),t(0,1,0),t(0,0,1),t(1,0,1),t(1,1,1),t(0,1,1)],e.CubeEdges=[r(e.CubeVertices[0],e.CubeVertices[1]),r(e.CubeVertices[1],e.CubeVertices[2]),r(e.CubeVertices[2],e.CubeVertices[3]),r(e.CubeVertices[3],e.CubeVertices[0]),r(e.CubeVertices[4],e.CubeVertices[5]),r(e.CubeVertices[5],e.CubeVertices[6]),r(e.CubeVertices[6],e.CubeVertices[7]),r(e.CubeVertices[7],e.CubeVertices[4]),r(e.CubeVertices[0],e.CubeVertices[4]),r(e.CubeVertices[1],e.CubeVertices[5]),r(e.CubeVertices[2],e.CubeVertices[6]),r(e.CubeVertices[3],e.CubeVertices[7])],e.EdgeIdInfo=[{i:0,j:0,k:0,e:0},{i:1,j:0,k:0,e:1},{i:0,j:1,k:0,e:0},{i:0,j:0,k:0,e:1},{i:0,j:0,k:1,e:0},{i:1,j:0,k:1,e:1},{i:0,j:1,k:1,e:0},{i:0,j:0,k:1,e:1},{i:0,j:0,k:0,e:2},{i:1,j:0,k:0,e:2},{i:1,j:1,k:0,e:2},{i:0,j:1,k:0,e:2}],e.EdgeTable=[0,265,515,778,1030,1295,1541,1804,2060,2309,2575,2822,3082,3331,3593,3840,400,153,915,666,1430,1183,1941,1692,2460,2197,2975,2710,3482,3219,3993,3728,560,825,51,314,1590,1855,1077,1340,2620,2869,2111,2358,3642,3891,3129,3376,928,681,419,170,1958,1711,1445,1196,2988,2725,2479,2214,4010,3747,3497,3232,1120,1385,1635,1898,102,367,613,876,3180,3429,3695,3942,2154,2403,2665,2912,1520,1273,2035,1786,502,255,1013,764,3580,3317,4095,3830,2554,2291,3065,2800,1616,1881,1107,1370,598,863,85,348,3676,3925,3167,3414,2650,2899,2137,2384,1984,1737,1475,1226,966,719,453,204,4044,3781,3535,3270,3018,2755,2505,2240,2240,2505,2755,3018,3270,3535,3781,4044,204,453,719,966,1226,1475,1737,1984,2384,2137,2899,2650,3414,3167,3925,3676,348,85,863,598,1370,1107,1881,1616,2800,3065,2291,2554,3830,4095,3317,3580,764,1013,255,502,1786,2035,1273,1520,2912,2665,2403,2154,3942,3695,3429,3180,876,613,367,102,1898,1635,1385,1120,3232,3497,3747,4010,2214,2479,2725,2988,1196,1445,1711,1958,170,419,681,928,3376,3129,3891,3642,2358,2111,2869,2620,1340,1077,1855,1590,314,51,825,560,3728,3993,3219,3482,2710,2975,2197,2460,1692,1941,1183,1430,666,915,153,400,3840,3593,3331,3082,2822,2575,2309,2060,1804,1541,1295,1030,778,515,265,0],e.TriTable=[[],[0,8,3],[0,1,9],[1,8,3,9,8,1],[1,2,10],[0,8,3,1,2,10],[9,2,10,0,2,9],[2,8,3,2,10,8,10,9,8],[3,11,2],[0,11,2,8,11,0],[1,9,0,2,3,11],[1,11,2,1,9,11,9,8,11],[3,10,1,11,10,3],[0,10,1,0,8,10,8,11,10],[3,9,0,3,11,9,11,10,9],[9,8,10,10,8,11],[4,7,8],[4,3,0,7,3,4],[0,1,9,8,4,7],[4,1,9,4,7,1,7,3,1],[1,2,10,8,4,7],[3,4,7,3,0,4,1,2,10],[9,2,10,9,0,2,8,4,7],[2,10,9,2,9,7,2,7,3,7,9,4],[8,4,7,3,11,2],[11,4,7,11,2,4,2,0,4],[9,0,1,8,4,7,2,3,11],[4,7,11,9,4,11,9,11,2,9,2,1],[3,10,1,3,11,10,7,8,4],[1,11,10,1,4,11,1,0,4,7,11,4],[4,7,8,9,0,11,9,11,10,11,0,3],[4,7,11,4,11,9,9,11,10],[9,5,4],[9,5,4,0,8,3],[0,5,4,1,5,0],[8,5,4,8,3,5,3,1,5],[1,2,10,9,5,4],[3,0,8,1,2,10,4,9,5],[5,2,10,5,4,2,4,0,2],[2,10,5,3,2,5,3,5,4,3,4,8],[9,5,4,2,3,11],[0,11,2,0,8,11,4,9,5],[0,5,4,0,1,5,2,3,11],[2,1,5,2,5,8,2,8,11,4,8,5],[10,3,11,10,1,3,9,5,4],[4,9,5,0,8,1,8,10,1,8,11,10],[5,4,0,5,0,11,5,11,10,11,0,3],[5,4,8,5,8,10,10,8,11],[9,7,8,5,7,9],[9,3,0,9,5,3,5,7,3],[0,7,8,0,1,7,1,5,7],[1,5,3,3,5,7],[9,7,8,9,5,7,10,1,2],[10,1,2,9,5,0,5,3,0,5,7,3],[8,0,2,8,2,5,8,5,7,10,5,2],[2,10,5,2,5,3,3,5,7],[7,9,5,7,8,9,3,11,2],[9,5,7,9,7,2,9,2,0,2,7,11],[2,3,11,0,1,8,1,7,8,1,5,7],[11,2,1,11,1,7,7,1,5],[9,5,8,8,5,7,10,1,3,10,3,11],[5,7,0,5,0,9,7,11,0,1,0,10,11,10,0],[11,10,0,11,0,3,10,5,0,8,0,7,5,7,0],[11,10,5,7,11,5],[10,6,5],[0,8,3,5,10,6],[9,0,1,5,10,
71636],[1,8,3,1,9,8,5,10,6],[1,6,5,2,6,1],[1,6,5,1,2,6,3,0,8],[9,6,5,9,0,6,0,2,6],[5,9,8,5,8,2,5,2,6,3,2,8],[2,3,11,10,6,5],[11,0,8,11,2,0,10,6,5],[0,1,9,2,3,11,5,10,6],[5,10,6,1,9,2,9,11,2,9,8,11],[6,3,11,6,5,3,5,1,3],[0,8,11,0,11,5,0,5,1,5,11,6],[3,11,6,0,3,6,0,6,5,0,5,9],[6,5,9,6,9,11,11,9,8],[5,10,6,4,7,8],[4,3,0,4,7,3,6,5,10],[1,9,0,5,10,6,8,4,7],[10,6,5,1,9,7,1,7,3,7,9,4],[6,1,2,6,5,1,4,7,8],[1,2,5,5,2,6,3,0,4,3,4,7],[8,4,7,9,0,5,0,6,5,0,2,6],[7,3,9,7,9,4,3,2,9,5,9,6,2,6,9],[3,11,2,7,8,4,10,6,5],[5,10,6,4,7,2,4,2,0,2,7,11],[0,1,9,4,7,8,2,3,11,5,10,6],[9,2,1,9,11,2,9,4,11,7,11,4,5,10,6],[8,4,7,3,11,5,3,5,1,5,11,6],[5,1,11,5,11,6,1,0,11,7,11,4,0,4,11],[0,5,9,0,6,5,0,3,6,11,6,3,8,4,7],[6,5,9,6,9,11,4,7,9,7,11,9],[10,4,9,6,4,10],[4,10,6,4,9,10,0,8,3],[10,0,1,10,6,0,6,4,0],[8,3,1,8,1,6,8,6,4,6,1,10],[1,4,9,1,2,4,2,6,4],[3,0,8,1,2,9,2,4,9,2,6,4],[0,2,4,4,2,6],[8,3,2,8,2,4,4,2,6],[10,4,9,10,6,4,11,2,3],[0,8,2,2,8,11,4,9,10,4,10,6],[3,11,2,0,1,6,0,6,4,6,1,10],[6,4,1,6,1,10,4,8,1,2,1,11,8,11,1],[9,6,4,9,3,6,9,1,3,11,6,3],[8,11,1,8,1,0,11,6,1,9,1,4,6,4,1],[3,11,6,3,6,0,0,6,4],[6,4,8,11,6,8],[7,10,6,7,8,10,8,9,10],[0,7,3,0,10,7,0,9,10,6,7,10],[10,6,7,1,10,7,1,7,8,1,8,0],[10,6,7,10,7,1,1,7,3],[1,2,6,1,6,8,1,8,9,8,6,7],[2,6,9,2,9,1,6,7,9,0,9,3,7,3,9],[7,8,0,7,0,6,6,0,2],[7,3,2,6,7,2],[2,3,11,10,6,8,10,8,9,8,6,7],[2,0,7,2,7,11,0,9,7,6,7,10,9,10,7],[1,8,0,1,7,8,1,10,7,6,7,10,2,3,11],[11,2,1,11,1,7,10,6,1,6,7,1],[8,9,6,8,6,7,9,1,6,11,6,3,1,3,6],[0,9,1,11,6,7],[7,8,0,7,0,6,3,11,0,11,6,0],[7,11,6],[7,6,11],[3,0,8,11,7,6],[0,1,9,11,7,6],[8,1,9,8,3,1,11,7,6],[10,1,2,6,11,7],[1,2,10,3,0,8,6,11,7],[2,9,0,2,10,9,6,11,7],[6,11,7,2,10,3,10,8,3,10,9,8],[7,2,3,6,2,7],[7,0,8,7,6,0,6,2,0],[2,7,6,2,3,7,0,1,9],[1,6,2,1,8,6,1,9,8,8,7,6],[10,7,6,10,1,7,1,3,7],[10,7,6,1,7,10,1,8,7,1,0,8],[0,3,7,0,7,10,0,10,9,6,10,7],[7,6,10,7,10,8,8,10,9],[6,8,4,11,8,6],[3,6,11,3,0,6,0,4,6],[8,6,11,8,4,6,9,0,1],[9,4,6,9,6,3,9,3,1,11,3,6],[6,8,4,6,11,8,2,10,1],[1,2,10,3,0,11,0,6,11,0,4,6],[4,11,8,4,6,11,0,2,9,2,10,9],[10,9,3,10,3,2,9,4,3,11,3,6,4,6,3],[8,2,3,8,4,2,4,6,2],[0,4,2,4,6,2],[1,9,0,2,3,4,2,4,6,4,3,8],[1,9,4,1,4,2,2,4,6],[8,1,3,8,6,1,8,4,6,6,10,1],[10,1,0,10,0,6,6,0,4],[4,6,3,4,3,8,6,10,3,0,3,9,10,9,3],[10,9,4,6,10,4],[4,9,5,7,6,11],[0,8,3,4,9,5,11,7,6],[5,0,1,5,4,0,7,6,11],[11,7,6,8,3,4,3,5,4,3,1,5],[9,5,4,10,1,2,7,6,11],[6,11,7,1,2,10,0,8,3,4,9,5],[7,6,11,5,4,10,4,2,10,4,0,2],[3,4,8,3,5,4,3,2,5,10,5,2,11,7,6],[7,2,3,7,6,2,5,4,9],[9,5,4,0,8,6,0,6,2,6,8,7],[3,6,2,3,7,6,1,5,0,5,4,0],[6,2,8,6,8,7,2,1,8,4,8,5,1,5,8],[9,5,4,10,1,6,1,7,6,1,3,7],[1,6,10,1,7,6,1,0,7,8,7,0,9,5,4],[4,0,10,4,10,5,0,3,10,6,10,7,3,7,10],[7,6,10,7,10,8,5,4,10,4,8,10],[6,9,5,6,11,9,11,8,9],[3,6,11,0,6,3,0,5,6,0,9,5],[0,11,8,0,5,11,0,1,5,5,6,11],[6,11,3,6,3,5,5,3,1],[1,2,10,9,5,11,9,11,8,11,5,6],[0,11,3,0,6,11,0,9,6,5,6,9,1,2,10],[11,8,5,11,5,6,8,0,5,10,5,2,0,2,5],[6,11,3,6,3,5,2,10,3,10,5,3],[5,8,9,5,2,8,5,6,2,3,8,2],[9,5,6,9,6,0,0,6,2],[1,5,8,1,8,0,5,6,8,3,8,2,6,2,8],[1,5,6,2,1,6],[1,3,6,1,6,10,3,8,6,5,6,9,8,9,6],[10,1,0,10,0,6,9,5,0,5,6,0],[0,3,8,5,6,10],[10,5,6],[11,5,10,7,5,11],[11,5,10,11,7,5,8,3,0],[5,11,7,5,10,11,1,9,0],[10,7,5,10,11,7,9,8,1,8,3,1],[11,1,2,11,7,1,7,5,1],[0,8,3,1,2,7,1,7,5,7,2,11],[9,7,5,9,2,7,9,0,2,2,11,7],[7,5,2,7,2,11,5,9,2,3,2,8,9,8,2],[2,5,10,2,3,5,3,7,5],[8,2,0,8,5,2,8,7,5,10,2,5],[9,0,1,5,10,3,5,3,7,3,10,2],[9,8,2,9,2,1,8,7,2,10,2,5,7,5,2],[1,3,5,3,7,5],[0,8,7,0,7,1,1,7,5],[9,0,3,9,3,5,5,3,7],[9,8,7,5,9,7],[5,8,4,5,10,8,10,11,8],[5,0,4,5,11,0,5,10,11,11,3,0],[0,1,9,8,4,10,8,10,11,10,4,5],[10,11,4,10,4,5,11,3,4,9,4,1,3,1,4],[2,5,1,2,8,5,2,11,8,4,5,8],[0,4,11,0,11,3,4,5,11,2,11,1,5,1,11],[0,2,5,0,5,9,2,11,5,4,5,8,11,8,5],[9,4,5,2,11,3],[2,5,10,3,5,2,3,4,5,3,8,4],[5,10,2,5,2,4,4,2,0],[3,10,2,3,5,10,3,8,5,4,5,8,0,1,9],[5,10,2,5,2,4,1,9,2,9,4,2],[8,4,5,8,5,3,3,5,1],[0,4,5,1,0,5],[8,4,5,8,5,3,9,0,5,0,3,5],[9,4,5],[4,11,7,4,9,11,9,10,11],[0,8,3,4,9,7,9,11,7,9,10,11],[1,10,11,1,11,4,1,4,0,7,4,11],[3,1,4,3,4,8,1,10,4,7,4,11,10,11,4],[4,11,7,9,11,4,9,2,11,9,1,2],[9,7,4,9,11,7,9,1,11,2,11,1,0,8,3],[11,7,4,11,4,2,2,4,0],[11,7,4,11,4,2,8,3,4,3,2,4],[2,9,10,2,7,9,2,3,7,7,4,9],[9,10,7,9,7,4,10,2,7,8,7,0,2,0,7],[3,7,10,3,10,2,7,4,10,1,10,0,4,0,10],[1,10,2,8,7,4],[4,9,1,4,1,7,7,1,3],[4,9,1,4,1,7,0,8,1,8,7,1],[4,0,3,7,4,3],[4,8,7],[9,10,8,10,11,8],[3,0,9,3,9,11,11,9,10],[0,1,10,0,10,8,8,10,11],[3,1,10,11,3,10],[1,2,11,1,11,9,9,11,8],[3,0,9,3,9,11,1,2,9,2,11,9],[0,2,11,8,0,11],[3,2,11],[2,3,8,2,8,10,10,8,9],[9,10,2,0,9,2],[2,3,8,2,8,10,0,1,8,1,10,8],[1,10,2],[1,3,8,9,1,8],[0,9,1],[0,3,8],[]],e.AllowedContours=[[0,4,4,4,2,0,0,0,2,2,0,0],[4,0,4,4,0,8,0,0,0,8,8,0],[4,4,0,4,0,0,8,0,0,0,8,8],[4,4,4,0,0,0,0,1,1,0,0,1],[2,0,0,0,0,8,8,8,2,2,0,0],[0,8,0,0,8,0,8,8,0,8,8,0],[0,0,8,0,8,8,0,8,0,0,8,8],[0,0,0,1,8,8,8,0,1,0,0,1],[2,0,0,1,2,0,0,1,0,2,0,1],[2,8,0,0,2,8,0,0,2,0,8,0],[0,8,8,0,0,8,8,0,0,8,0,8],[0,0,8,1,0,0,8,1,1,0,8,0]]})(UM)),UM}var p_={},CW;function yue(){if(CW)return p_;
7163CW=1,Object.defineProperty(p_,"__esModule",{value:!0}),p_.MarchingCubesMeshBuilder=c,p_.MarchingCubesLinesBuilder=o;const e=_t(),t=et(),r=Rt(),n=Zw(),i=ac();function c(s,h){const f=Math.min(65536,s*4),y=e.ChunkedArray.create(Float32Array,3,s,h&&h.vertexBuffer.ref.value),_=e.ChunkedArray.create(Float32Array,3,s,h&&h.normalBuffer.ref.value),g=e.ChunkedArray.create(Float32Array,1,s,h&&h.groupBuffer.ref.value),a=e.ChunkedArray.create(Uint32Array,3,f,h&&h.indexBuffer.ref.value);let d=0,p=0;return{addVertex:(u,m,v)=>(++d,e.ChunkedArray.add3(y,u,m,v)),addNormal:(u,m,v)=>{e.ChunkedArray.add3(_,u,m,v)},addGroup:u=>{e.ChunkedArray.add(g,u)},addTriangle:(u,m,v,b)=>{const P=u[m],C=u[v],l=u[b];P>=0&&C>=0&&l>=0&&(++p,e.ChunkedArray.add3(a,P,C,l))},get:()=>{const u=e.ChunkedArray.compact(y,!0),m=e.ChunkedArray.compact(_,!0),v=e.ChunkedArray.compact(a,!0),b=e.ChunkedArray.compact(g,!0);return r.Mesh.create(u,v,m,b,d,p,h)}}}function o(s,h){const f=e.ChunkedArray.create(Float32Array,3,s),y=e.ChunkedArray.create(Float32Array,1,s),_=e.ChunkedArray.create(Float32Array,2,s);let g=0;return{addVertex:(a,d,p)=>e.ChunkedArray.add3(f,a,d,p),addNormal:()=>t.noop,addGroup:a=>{e.ChunkedArray.add(y,a)},addTriangle:(a,d,p,u,m)=>{const v=a[d],b=a[p],P=a[u];v>=0&&b>=0&&P>=0&&(n.AllowedContours[d][p]&m&&(++g,e.ChunkedArray.add2(_,a[d],a[p])),n.AllowedContours[p][u]&m&&(++g,e.ChunkedArray.add2(_,a[p],a[u])),n.AllowedContours[d][u]&m&&(++g,e.ChunkedArray.add2(_,a[d],a[u])))},get:()=>{const a=e.ChunkedArray.compact(f,!0),d=e.ChunkedArray.compact(_,!0),p=e.ChunkedArray.compact(y,!0),u=i.LinesBuilder.create(g,g/10,h);for(let m=0;m<g;++m){const v=d[m*2],b=d[m*2+1];u.add(a[v*3],a[v*3+1],a[v*3+2],a[b*3],a[b*3+1],a[b*3+2],p[v])}return u.getLines()}}}return p_}var PW;function em(){if(PW)return m_;PW=1,Object.defineProperty(m_,"__esModule",{value:!0}),m_.computeMarchingCubesMesh=o,m_.computeMarchingCubesLines=s;const e=nt(),t=Zw(),r=et(),n=yue();function i(y){return{...y,bottomLeft:(0,r.defaults)(y.bottomLeft,[0,0,0]),topRight:(0,r.defaults)(y.topRight,y.scalarField.space.dimensions)}}function c(y){return{dX:y.topRight[0]-y.bottomLeft[0],dY:y.topRight[1]-y.bottomLeft[1],dZ:y.topRight[2]-y.bottomLeft[2]}}function o(y,_){return e.Task.create("Marching Cubes Mesh",async g=>{const a=i(y),{dX:d,dY:p,dZ:u}=c(a),m=Math.min(262144,Math.max(d*p*u/32,1024)),v=(0,n.MarchingCubesMeshBuilder)(m,_);return await new h(g,v,a).run(),v.get()})}function s(y,_){return e.Task.create("Marching Cubes Lines",async g=>{const a=i(y),{dX:d,dY:p,dZ:u}=c(a),m=Math.min(262144,Math.max(d*p*u/32,1024)),v=(0,n.MarchingCubesLinesBuilder)(m,_);return await new h(g,v,a).run(),v.get()})}class h{async doSlices(){let _=0;this.edgeFilter=15;for(let g=this.minZ;g<this.maxZ;g++,this.edgeFilter&=-5)this.slice(g),_+=this.sliceSize,this.ctx.shouldUpdate&&await this.ctx.update({message:"Computing surface...",current:_,max:this.size})}slice(_){this.edgeFilter|=2;for(let g=this.minY;g<this.maxY;g++,this.edgeFilter&=-3){this.edgeFilter|=1;for(let a=this.minX;a<this.maxX;a++,this.edgeFilter&=-2)this.state.processCell(a,g,_,this.edgeFilter)}this.state.clearEdgeVertexIndexSlice(_)}async run(){await this.doSlices()}constructor(_,g,a){this.ctx=_,this.minX=0,this.minY=0,this.minZ=0,this.maxX=0,this.maxY=0,this.maxZ=0,this.state=new f(g,a),this.minX=a.bottomLeft[0],this.minY=a.bottomLeft[1],this.minZ=a.bottomLeft[2],this.maxX=a.topRight[0]-1,this.maxY=a.topRight[1]-1,this.maxZ=a.topRight[2]-1,this.size=(this.maxX-this.minX)*(this.maxY-this.minY)*(this.maxZ-this.minZ),this.sliceSize=(this.maxX-this.minX)*(this.maxY-this.minY)}}class f{get3dOffsetFromEdgeInfo(_){return this.nX*((this.k+_.k)%2*this.nY+this.j+_.j)+this.i+_.i}clearEdgeVertexIndexSlice(_){const g=_%2===0?0:3*this.nX*this.nY,a=_%2===0?3*this.nX*this.nY:this.verticesOnEdges.length;this.verticesOnEdges.fill(0,g,a)}interpolate(_){const g=t.EdgeIdInfo[_],a=3*this.get3dOffsetFromEdgeInfo(g)+g.e,d=this.verticesOnEdges[a];if(d>0)return d-1;const p=this.scalarField,u=this.scalarFieldGet,m=t.CubeEdges[_],v=m.a,b=m.b,P=v.i+this.i,C=v.j+this.j,l=v.k+this.k,S=b.i+this.i,T=b.j+this.j,A=b.k+this.k,x=u(p,P,C,l),M=u(p,S,T,A),D=(this.isoLevel-x)/(x-M);if(this.idField){const q=this.idFieldGet(this.idField,P,C,l),N=this.idFieldGet(this.idField,S,T,A);let k=D<.5?q:N;if(k===-1&&(k=D<.5?N:q),k===-2)return-1;this.builder.addGroup(k)}else this.builder.addGroup(0);const V=this.builder.addVertex(P+D*(P-S),C+D*(C-T),l+D*(l-A));this.verticesOnEdges[a]=V+1;const R=u(p,Math.max(0,P-1),C,l)-u(p,Math.min(this.nX-1,P+1),C,l),E=u(p,P,Math.max(0,C-1),l)-u(p,P,Math.min(this.nY-1,C+1),l),I=u(p,P,C,Math.max(0,l-1))-u(p,P,C,Math.min(this.nZ-1,l+1)),B=u(p,Math.max(0,S-1),T,A)-u(p,Math.min(this.nX-1,S+1),T,A),w=u(p,S,Math.max(0,T-1),A)-u(p,S,Math.min(this.nY-1,T+1),A),O=u(p,S,T,Math.max(0,A-1))-u(p,S,T,Math.min(this.nZ-1,A+1)),F=R+D*(R-B),L=E+D*(E-w),U=I+D*(I-O);return this.isoLevel>=0?this.builder.addNormal(F,L,U):this.builder.addNormal(-F,-L,-U),V}constructor(_,g){this.builder=_,this.vertList=[0,0,0,0,0,0,0,0,0,0,0,0],this.i=0,this.j=0,this.k=0;const a=g.scalarField.space.dimensions;this.nX=a[0],this.nY=a[1],this.nZ=a[2],this.isoLevel=g.isoLevel,this.scalarFieldGet=g.scalarField.space.get,this.scalarField=g.scalarField.data,g.idField&&(this.idField=g.idField.data,this.idFieldGet=g.idField.space.get),this.verticesOnEdges=new Int32Array(3*this.nX*this.nY*2)}get(_,g,a){return this.scalarFieldGet(this.scalarField,_,g,a)}processCell(_,g,a,d){let p=0;if(this.get(_,g,a)<this.isoLevel&&(p|=1),this.get(_+1,g,a)<this.isoLevel&&(p|=2),this.get(_+1,g+1,a)<this.isoLevel&&(p|=4),this.get(_,g+1,a)<this.isoLevel&&(p|=8),this.get(_,g,a+1)<this.isoLevel&&(p|=16),this.get(_+1,g,a+1)<this.isoLevel&&(p|=32),this.get(_+1,g+1,a+1)<this.isoLevel&&(p|=64),this.get(_,g+1,a+1)<this.isoLevel&&(p|=128),p===0||p===255)return;this.i=_,this.j=g,this.k=a;const u=t.EdgeTable[p];(u&1)>0&&(this.vertList[0]=this.interpolate(0)),(u&2)>0&&(this.vertList[1]=this.interpolate(1)),(u&4)>0&&(this.vertList[2]=this.interpolate(2)),(u&8)>0&&(this.vertList[3]=this.interpolate(3)),(u&16)>0&&(this.vertList[4]=this.interpolate(4)),(u&32)>0&&(this.vertList[5]=this.interpolate(5)),(u&64)>0&&(this.vertList[6]=this.interpolate(6)),(u&128)>0&&(this.vertList[7]=this.interpolate(7)),(u&256)>0&&(this.vertList[8]=this.interpolate(8)),(u&512)>0&&(this.vertList[9]=this.interpolate(9)),(u&1024)>
71630&&(this.vertList[10]=this.interpolate(10)),(u&2048)>0&&(this.vertList[11]=this.interpolate(11));const m=t.TriTable[p];for(let v=0;v<m.length;v+=3){const b=m[v],P=m[v+1],C=m[v+2];this.isoLevel>=0?this.builder.addTriangle(this.vertList,b,P,C,d):this.builder.addTriangle(this.vertList,C,P,b,d)}}}return m_}var h_={},aT={},oT={},g_={},TW;function vue(){return TW||(TW=1,Object.defineProperty(g_,"__esModule",{value:!0}),g_.sum_frag=void 0,g_.sum_frag=`
7164precision highp float;
7165precision highp int;
7166
7167#if __VERSION__ == 100
7168    precision highp sampler2D;
7169    uniform sampler2D tTexture;
7170#else
7171    precision highp isampler2D;
7172    uniform isampler2D tTexture;
7173#endif
7174
7175void main(void) {
7176    #if __VERSION__ == 100
7177        gl_FragColor = texture2D(tTexture, vec2(0.5));
7178    #else
7179        gl_FragColor = ivec4(texture2D(tTexture, vec2(0.5)).r);
7180    #endif
7181}
7182`),g_}var xW;function bue(){if(xW)return oT;xW=1,Object.defineProperty(oT,"__esModule",{value:!0}),oT.getHistopyramidSum=v;const e=Jt(),t=Zt(),r=Yt(),n=Kt(),i=et(),c=nc(),o=Mr(),s=Gr(),h=vue(),f=on(),y=Ct(),_={...o.QuadSchema,tTexture:(0,r.TextureSpec)("texture","rgba","float","nearest")},g="histopyramid-sum";function a(b,P){if(b.namedComputeRenderables[g]){const C=b.namedComputeRenderables[g].values;i.ValueCell.update(C.tTexture,P),b.namedComputeRenderables[g].update()}else b.namedComputeRenderables[g]=d(b,P);return b.namedComputeRenderables[g]}function d(b,P){const C={...o.QuadValues,tTexture:i.ValueCell.create(P)},l={..._},S=(0,n.ShaderCode)("sum",s.quad_vert,h.sum_frag,{},{0:"ivec4"}),T=(0,t.createComputeRenderItem)(b,"triangles",S,l,C);return(0,e.createComputeRenderable)(T,C)}function p(b){const{gl:P,state:C}=b;C.disable(P.CULL_FACE),C.disable(P.BLEND),C.disable(P.DEPTH_TEST),C.disable(P.SCISSOR_TEST),C.depthMask(!1),C.colorMask(!0,!0,!0,!0),C.clearColor(0,0,0,0)}const u=new Uint8Array(4),m=new Int32Array(4);function v(b,P){y.isTimingMode&&b.timer.mark("getHistopyramidSum");const{gl:C,state:l,resources:S}=b,T=a(b,P);b.state.currentRenderItemId=-1,b.namedFramebuffers[g]||(b.namedFramebuffers[g]=S.framebuffer());const A=b.namedFramebuffers[g];return b.namedTextures[g]||(b.namedTextures[g]=(0,f.isWebGL2)(C)?S.texture("image-int32","rgba","int","nearest"):S.texture("image-uint8","rgba","ubyte","nearest"),b.namedTextures[g].define(1,1)),b.namedTextures[g].attachFramebuffer(A,0),p(b),l.viewport(0,0,1,1),T.render(),C.finish(),b.readPixels(0,0,1,1,(0,f.isWebGL2)(C)?m:u),C.bindFramebuffer(C.FRAMEBUFFER,null),y.isTimingMode&&b.timer.markEnd("getHistopyramidSum"),(0,f.isWebGL2)(C)?m[0]:(0,c.unpackRGBToInt)(u[0],u[1],u[2])}return oT}var y_={},AW;function _ue(){return AW||(AW=1,Object.defineProperty(y_,"__esModule",{value:!0}),y_.reduction_frag=void 0,y_.reduction_frag=`
7183precision highp float;
7184precision highp int;
7185precision highp sampler2D;
7186
7187uniform sampler2D tInputLevel;
7188
7189// previous level used to evaluate the new level
7190#if __VERSION__ == 100
7191    uniform sampler2D tPreviousLevel;
7192#else
7193    precision highp isampler2D;
7194    uniform isampler2D tPreviousLevel;
7195#endif
7196
7197// inverted size of the previous level texture.
7198uniform float uSize;
7199uniform float uTexSize;
7200uniform bool uFirst;
7201
7202#include common
7203
7204void main(void) {
7205    float k = 0.5 * uSize;
7206    vec2 position = floor((gl_FragCoord.xy / uTexSize) / uSize) * uSize;
7207
7208    #if __VERSION__ == 100
7209        float a, b, c, d;
7210
7211        if (uFirst) {
7212            a = texture2D(tInputLevel, position).r * 255.0;
7213            b = texture2D(tInputLevel, position + vec2(k, 0.0)).r * 255.0;
7214            c = texture2D(tInputLevel, position + vec2(0.0, k)).r * 255.0;
7215            d = texture2D(tInputLevel, position + vec2(k, k)).r * 255.0;
7216        } else {
7217            a = unpackRGBToInt(texture2D(tPreviousLevel, position).rgb);
7218            b = unpackRGBToInt(texture2D(tPreviousLevel, position + vec2(k, 0.0)).rgb);
7219            c = unpackRGBToInt(texture2D(tPreviousLevel, position + vec2(0.0, k)).rgb);
7220            d = unpackRGBToInt(texture2D(tPreviousLevel, position + vec2(k, k)).rgb);
7221        }
7222        gl_FragColor = vec4(packIntToRGB(a + b + c + d), 1.0);
7223    #else
7224        int a, b, c, d;
7225
7226        if (uFirst) {
7227            a = int(texture2D(tInputLevel, position).r * 255.0);
7228            b = int(texture2D(tInputLevel, position + vec2(k, 0.0
7228)).r * 255.0);
7229            c = int(texture2D(tInputLevel, position + vec2(0.0, k)).r * 255.0);
7230            d = int(texture2D(tInputLevel, position + vec2(k, k)).r * 255.0);
7231        } else {
7232            a = texture2D(tPreviousLevel, position).r;
7233            b = texture2D(tPreviousLevel, position + vec2(k, 0.0)).r;
7234            c = texture2D(tPreviousLevel, position + vec2(0.0, k)).r;
7235            d = texture2D(tPreviousLevel, position + vec2(k, k)).r;
7236        }
7237        gl_FragColor = ivec4(a + b + c + d);
7238    #endif
7239}
7240`),y_}var MW;function Sue(){if(MW)return aT;MW=1,Object.defineProperty(aT,"__esModule",{value:!0}),aT.createHistogramPyramid=C;const e=Jt(),t=Zt(),r=Yt(),n=Kt(),i=et(),c=Mr(),o=bue(),s=er(),h=Gr(),f=_ue(),y=on(),_=Ct(),g={...c.QuadSchema,tInputLevel:(0,r.TextureSpec)("texture","rgba","float","nearest"),tPreviousLevel:(0,r.TextureSpec)("texture","rgba","float","nearest"),uSize:(0,r.UniformSpec)("f"),uTexSize:(0,r.UniformSpec)("f"),uFirst:(0,r.UniformSpec)("b")},a="histogram-pyramid";function d(l,S,T){if(l.namedComputeRenderables[a]){const A=l.namedComputeRenderables[a].values;i.ValueCell.update(A.tInputLevel,S),i.ValueCell.update(A.tPreviousLevel,T),l.namedComputeRenderables[a].update()}else l.namedComputeRenderables[a]=p(l,S,T);return l.namedComputeRenderables[a]}function p(l,S,T){const A={...c.QuadValues,tInputLevel:i.ValueCell.create(S),tPreviousLevel:i.ValueCell.create(T),uSize:i.ValueCell.create(0),uTexSize:i.ValueCell.create(0),uFirst:i.ValueCell.create(!0)},x={...g},M=(0,n.ShaderCode)("reduction",h.quad_vert,f.reduction_frag,{},{0:"ivec4"}),D=(0,t.createComputeRenderItem)(l,"triangles",M,x,A);return(0,e.createComputeRenderable)(D,A)}function u(l,S){const T=Math.pow(2,S),A=`level${S}`,x=l.isWebGL2?b(A,l,"image-int32","alpha","int","nearest"):b(A,l,"image-uint8","rgba","ubyte","nearest");x.define(T,T);let M=P(A,l);return M||(M=v(A,l)),x.attachFramebuffer(M,0),{texture:x,framebuffer:M}}function m(l){const{gl:S,state:T}=l;T.disable(S.CULL_FACE),T.disable(S.BLEND),T.disable(S.DEPTH_TEST),T.enable(S.SCISSOR_TEST),T.depthMask(!1),T.colorMask(!0,!0,!0,!0),T.clearColor(0,0,0,0)}function v(l,S){const T=`${a}-${l}`;return S.namedFramebuffers[T]||(S.namedFramebuffers[T]=S.resources.framebuffer()),S.namedFramebuffers[T]}function b(l,S,T,A,x,M){const D=`${a}-${l}`;return S.namedTextures[D]||(S.namedTextures[D]=S.resources.texture(T,A,x,M)),S.namedTextures[D]}function P(l,S){const T=`${a}-${l}`;return S.namedFramebuffers[T]}function C(l,S,T,A){_.isTimingMode&&l.timer.mark("createHistogramPyramid");const{gl:x,state:M}=l,D=S.getWidth(),V=S.getHeight();if(D!==V||!(0,s.isPowerOfTwo)(D))throw new Error("inputTexture must be of square power-of-two size");const R=Math.ceil(Math.log(D)/Math.log(2)),E=Math.pow(2,R),I=Math.pow(2,R),B=Math.pow(2,R-1),w=l.isWebGL2?b("pyramid",l,"image-int32","alpha","int","nearest"):b("pyramid",l,"image-uint8","rgba","ubyte","nearest");w.define(I,B);const O=v("pyramid",l);w.attachFramebuffer(O,0),M.viewport(0,0,I,B),(0,y.isWebGL2)(x)?x.clearBufferiv(x.COLOR,0,[0,0,0,0]):x.clear(x.COLOR_BUFFER_BIT);const F=[];for(let k=0;k<R;++k)F.push(u(l,k));const L=d(l,S,F[0].texture);M.currentRenderItemId=-1,m(l);let U=0;for(let k=0;k<R;k++){const j=R-1-k;F[j].framebuffer.bind();const G=Math.pow(2,j);i.ValueCell.update(L.values.uSize,Math.pow(2,k+1)/E),i.ValueCell.update(L.values.uTexSize,G),i.ValueCell.updateIfChanged(L.values.uFirst,k===0),k>0&&(i.ValueCell.update(L.values.tPreviousLevel,F[R-k].texture),L.update()),M.currentRenderItemId=-1,M.viewport(0,0,G,G),M.scissor(0,0,G,G),(0,y.isWebGL2)(x)?x.clearBufferiv(x.COLOR,0,[0,0,0,0]):x.clear(x.COLOR_BUFFER_BIT),M.scissor(0,0,A[0],A[1]),L.render(),w.bind(0),x.copyTexSubImage2D(x.TEXTURE_2D,0,U,0,0,0,G,G),w.unbind(0),U+=G}x.finish(),_.isTimingMode&&l.timer.markEnd("createHistogramPyramid");const q=Math.max(1,(0,o.getHistopyramidSum)(l,F[0].texture)),N=Math.ceil(q/Math.pow(2,R));return{pyramidTex:w,count:q,height:N,levels:R,scale:T}}return aT}var v_={},DW;function TZ(){if(DW)return v_;
7240DW=1,Object.defineProperty(v_,"__esModule",{value:!0}),v_.getTriCount=n,v_.getTriIndices=c;const e=Zw(),t=kr();let r;function n(){if(r!==void 0)return r;r=(0,t.createTextureImage)(256,1,Uint8Array);const{array:o}=r;for(let s=0,h=e.TriTable.length;s<h;++s)o[s]=e.TriTable[s].length/3;return r}let i;function c(){if(i!==void 0)return i;i=(0,t.createTextureImage)(4096,1,Uint8Array);const{array:o}=i;for(let s=0,h=e.TriTable.length;s<h;++s)for(let f=0;f<16;++f)f<e.TriTable[s].length?o[s*16+f]=e.TriTable[s][f]:o[s*16+f]=255;return i}return v_}var b_={},IW;function Cue(){return IW||(IW=1,Object.defineProperty(b_,"__esModule",{value:!0}),b_.isosurface_frag=void 0,b_.isosurface_frag=`
7241precision highp float;
7242precision highp int;
7243precision highp sampler2D;
7244
7245#if __VERSION__ == 100
7246    uniform sampler2D tActiveVoxelsPyramid;
7247#else
7248    precision highp isampler2D;
7249    uniform isampler2D tActiveVoxelsPyramid;
7250#endif
7251
7252uniform sampler2D tActiveVoxelsBase;
7253uniform sampler2D tVolumeData;
7254uniform sampler2D tTriIndices;
7255
7256uniform float uIsoValue;
7257uniform float uLevels;
7258uniform float uSize;
7259uniform float uCount;
7260uniform bool uInvert;
7261
7262uniform vec3 uGridDim;
7263uniform vec3 uGridTexDim;
7264uniform vec3 uGridDataDim;
7265uniform mat4 uGridTransform;
7266uniform mat3 uGridTransformAdjoint;
7267
7268// scale to volume data coord
7269uniform vec2 uScale;
7270
7271#include common
7272
7273// cube corners (excluding origin)
7274const vec3 c1 = vec3(1., 0., 0.);
7275const vec3 c2 = vec3(1., 1., 0.);
7276const vec3 c3 = vec3(0., 1., 0.);
7277const vec3 c4 = vec3(0., 0., 1.);
7278const vec3 c5 = vec3(1., 0., 1.);
7279const vec3 c6 = vec3(1., 1., 1.);
7280const vec3 c7 = vec3(0., 1., 1.);
7281
7282vec3 index3dFrom2d(vec2 coord) {
7283    vec2 gridTexPos = coord * uGridTexDim.xy;
7284    vec2 columnRow = ivec2Div(gridTexPos, uGridDim.xy);
7285    vec2 posXY = gridTexPos - columnRow * uGridDim.xy;
7286    float posZ = columnRow.y * intDiv(uGridTexDim.x, uGridDim.x) + columnRow.x;
7287    return vec3(posXY, posZ);
7288}
7289
7290vec4 texture3dFrom2dNearest(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) {
7291    float zSlice = floor(pos.z * gridDim.z + 0.5); // round to nearest z-slice
7292    float column = intDiv(intMod(zSlice * gridDim.x, texDim.x), gridDim.x);
7293    float row = intDiv(zSlice * gridDim.x, texDim.x);
7294    vec2 coord = (vec2(column * gridDim.x, row * gridDim.y) + (pos.xy * gridDim.xy)) / (texDim / uScale);
7295    return texture2D(tex, coord + 0.5 / (texDim / uScale));
7296}
7297
7298vec4 voxel(vec3 pos) {
7299    pos = min(max(vec3(0.0), pos), uGridDim - vec3(1.0));
7300    return texture3dFrom2dNearest(tVolumeData, pos / uGridDim, uGridDim, uGridTexDim.xy);
7301}
7302
7303float voxelValuePadded(vec3 pos) {
7304    pos = min(max(vec3(0.0), pos), uGridDim - vec3(vec2(2.0), 1.0)); // remove xy padding
7305    vec4 v = texture3dFrom2dNearest(tVolumeData, pos / uGridDim, uGridDim, uGridTexDim.xy);
7306    #ifdef dValueChannel_red
7307        return v.r;
7308    #else
7309        return v.a;
7310    #endif
7311}
7312
7313int idot2(const in ivec2 a, const in ivec2 b) {
7314    return a.x * b.x + a.y * b.y;
7315}
7316
7317int idot4(const in ivec4 a, const in ivec4 b) {
7318    return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;
7319}
7320
7321#if __VERSION__ == 100
7322    int pyramidVoxel(vec2 pos) {
7323        return int(unpackRGBToInt(texture2D(tActiveVoxelsPyramid, pos / (vec2(1.0, 0.5) * uSize)).rgb));
7324    }
7325#else
7326    int pyramidVoxel(vec2 pos) {
7327        return texture2D(tActiveVoxelsPyramid, pos / (vec2(1.0, 0.5) * uSize)).r;
7328    }
7329#endif
7330
7331vec4 baseVoxel(vec2 pos) {
7332    return texture2D(tActiveVoxelsBase, pos / uSize);
7333}
7334
7335vec4 getGroup(const in vec3 p) {
7336    // note that we swap x and z because the texture is flipped around y
7337    #if defined(dAxisOrder_012)
7338        float group = p.z + p.y * uGridDataDim.z + p.x * uGridDataDim.z * uGridDataDim.y; // 210
7339    #elif defined(dAxisOrder_021)
7340        float group = p.y + p.z * uGridDataDim.y + p.x * uGridDataDim.y * uGridDataDim.z; // 120
7341    #elif defined(dAxisOrder_102)
7342        float group = p.z + p.x * uGridDataDim.z + p.y * uGridDataDim.z * uGridDataDim.x; // 201
7343    #elif defined(dAxisOrder_120)
7344        float group = p.x + p.z * uGridDataDim.x + p.y * uGridDataDim.x * uGridDataDim.z; // 021
7345    #elif defined(dAxisOrder_201)
7346        float group = p.y + p.x * uGridDataDim.y + p.z * uGridDataDim.y * uGridDataDim.x; // 102
7347    #elif defined(dAxisOrder_210)
7348        float group = p.x + p.y * uGridDataDim.x + p.z * uGridDataDim.x * uGridDataDim.y; // 012
7349    #endif
7350    return vec4(group > 16777215.5 ? vec3(1.0) : packIntToRGB(group), 1.0);
7351}
7352
7353void main(void) {
7354    // get 1D index
7355    int vI = int(gl_FragCoord.x) + int(gl_FragCoord.y) * int(uSize);
7356
7357    // ignore 1D indices outside of the grid
7358    if(vI >= int(uCount)) discard;
7359
7360    ivec2 offset = ivec2(int(uSize) - 2, 0);
7361
7362    int start = 0;
7363    ivec4 starts = ivec4(0);
7364    ivec4 ends = ivec4(0);
7365    int diff = 2;
7366    ivec4 m = ivec4(0);
7367    ivec2 position = ivec2(0);
7368    ivec4 vI4 = ivec4(vI);
7369
7370    ivec2 relativePosition = ivec2(0);
7371    int end = 0;
7372    ivec2 pos1 = ivec2(0);
7373    ivec2 pos2 = ivec2(0);
7374    ivec2 pos3 = ivec2(0);
7375    ivec2 pos4 = ivec2(0);
7376    ivec3 vI3 = ivec3(vI);
7377    ivec3 mask = ivec3(0);
7378
7379    // traverse the different levels of the pyramid
7380    for(int i = 1; i < 14; i++) {
7381        if(float(i) >= uLevels) break;
7382
7383        offset.x -= diff;
7384        diff *= 2;
7385        relativePosition = position + offset;
7386
7387        end = start + pyramidVoxel(vec2(relativePosition));
7388        pos1 = ivec2(relativePosition);
7389        starts.x = start;
7390        ends.x = end;
7391        pos2 = ivec2(relativePosition + ivec2(1, 0));
7392        starts.y = ends.x;
7393        ends.y = ends.x + pyramidVoxel(vec2(pos2));
7394        pos3 = relativePosition + ivec2(0, 1);
7395        starts.z = ends.y;
7396        ends.z = ends.y + pyramidVoxel(vec2(pos3));
7397        pos4 = relativePosition + ivec2(1, 1);
7398        starts.w = ends.z;
7399        mask = ivec3(greaterThanEqual(vI3, starts.rgb)) * ivec3(lessThan(vI3, ends.rgb));
7400        m = ivec4(mask, 1 - int(any(bvec3(mask))));
7401
7402        relativePosition = m.x * pos1 + m.y * pos2 + m.z * pos3 + m.w * pos4;
7403        start = idot4(m, starts);
7404        position = 2 * (relativePosition - offset);
7405    }
7406
7407    end = start + int(baseVoxel(vec2(position)).r * 255.0);
7408    pos1 = position;
7409    starts.x = start;
7410    ends.x = end;
7411    pos2 = position + ivec2(1, 0);
7412    starts.y = ends.x;
7413    ends.y = ends.x + int(baseVoxel(vec2(pos2)).r * 255.0);
7414    pos3 = position + ivec2(0, 1);
7415    starts.z = ends.y;
7416    ends.z = ends.y + int(baseVoxel(vec2(pos3)).r * 255.0);
7417    pos4 = position + ivec2(1, 1);
7418    starts.w = ends.z;
7419    mask = ivec3(greaterThanEqual(vI3, starts.rgb)) * ivec3(lessThan(vI3, ends.rgb));
7420    m = ivec4(mask, 1 - int(any(bvec3(mask))));
7421    position = m.x * pos1 + m.y * pos2 + m.z * pos3 + m.w * pos4;
7422
7423    vec2 coord2d = (vec2(position) / uSize) / uScale;
7424    vec3 coord3d = floor(index3dFrom2d(coord2d) + 0.5);
7425
7426    float edgeIndex = floor(baseVoxel(vec2(position)).a * 255.0 + 0.5);
7427
7428    // current vertex for the up to 15 MC cases
7429    int currentVertex = vI - idot4(m, starts);
7430
7431    // ensure winding-order is the same for negative and positive iso-levels
7432    if (uInvert) {
7433        int v = imod(currentVertex + 1, 3);
7434        if (v == 1) currentVertex += 2;
7435        else if (v == 0) currentVertex -= 2;
7436    }
7437
7438    // get index into triIndices table
7439    int mcIndex = 16 * int(edgeIndex) + currentVertex;
7440    vec4 mcData = texture2D(tTriIndices, vec2(imod(mcIndex, 64), mcIndex / 64) / 64.);
7441
7442    // bit mask to avoid conditionals (see comment below) for getting MC case corner
7443    vec4 m0 = vec4(floor(mcData.a * 255.0 + 0.5));
7444
7445    // get edge value masks
7446    vec4 m1 = vec4(equal(m0, vec4(0., 1., 2., 3.)));
7447    vec4 m2 = vec4(equal(m0, vec4(4., 5., 6., 7.)));
7448    vec4 m3 = vec4(equal(m0, vec4(8., 9., 10., 11.)));
7449
7450    // apply bit masks
7451    vec3 b0 = coord3d +
7452                m1.y * c1 +
7453                m1.z * c2 +
7454                m1.w * c3 +
7455                m2.x * c4 +
7456                m2.y * c5 +
7457                m2.z * c6 +
7458                m2.w * c7 +
7459                m3.y * c1 +
7460                m3.z * c2 +
7461                m3.w * c3;
7462    vec3 b1 = coord3d +
7463                m1.x * c1 +
7464                m1.y * c2 +
7465                m1.z * c3 +
7466                m2.x * c5 +
7467                m2.y * c6 +
7468                m2.z * c7 +
7469                m2.w * c4 +
7470                m3.x * c4 +
7471                m3.y * c5 +
7472                m3.z * c6 +
7473                m3.w * c7;
7474
7475    // the conditionals that are avoided by above bitmasks
7476    // vec3 b0 = coord3d;
7477    // vec3 b1 = coord3d;
7478    // if (mcIndex == 0.0) {
7479    //     b1 += c1;
7480    // } else if (mcIndex == 1.0) {
7481    //     b0 += c1; b1 += c2;
7482    // } else if (mcIndex == 2.0) {
7483    //     b0 += c2; b1 += c3;
7484    // } else if (mcIndex == 3.0) {
7485    //     b0 += c3;
7486    // } else if (mcIndex == 4.0) {
7487    //     b0 += c4; b1 += c5;
7488    // } else if (mcIndex == 5.0) {
7489    //     b0 += c5; b1 += c6;
7490    // } else if (mcIndex == 6.0) {
7491    //     b0 += c6; b1 += c7;
7492    // } else if (mcIndex == 7.0) {
7493    //     b0 += c7; b1 += c4;
7494    // } else if (mcIndex == 8.0) {
7495    //     b1 += c4;
7496    // } else if (mcIndex == 9.0) {
7497    //     b0 += c1; b1 += c5;
7498    // } else if (mcIndex == 10.0) {
7499    //     b0 += c2; b1 += c6;
7500    // } else if (mcIndex == 11.0) {
7501    //     b0 += c3; b1 += c7;
7502    // }
7503    // b0 = floor(b0 + 0.5);
7504    // b1 = floor(b1 + 0.5);
7505
7506    vec4 d0 = voxel(b0);
7507    vec4 d1 = voxel(b1);
7508
7509    #ifdef dValueChannel_red
7510        float v0 = d0.r;
7511        float v1 = d1.r;
7512    #else
7513        float v0 = d0.a;
7514        float v1 = d1.a;
7515    #endif
7516
7517    float t = (uIsoValue - v0) / (v0 - v1);
7518    gl_FragData[0].xyz = (uGridTransform * vec4(b0 + t * (b0 - b1), 1.0)).xyz;
7519
7520    // group id
7521    #if __VERSION__ == 100 || defined(dConstantGroup)
7522        // webgl1 does not support 'flat' interpolation (i.e. no interpolation)
7523        // ensure a constant group id per triangle as needed
7524        #ifdef dPackedGroup
7525            gl_FragData[1] = vec4(voxel(coord3d).rgb, 1.0);
7526        #else
7527            gl_FragData[1] = getGroup(coord3d);
7528        #endif
7529    #else
7530        #ifdef dPackedGroup
7531            gl_FragData[1] = vec4(t < 0.5 ? d0.rgb : d1.rgb, 1.0);
7532        #else
7533            gl_FragData[1] = getGroup(t < 0.5 ? b0 : b1);
7534        #endif
7535    #endif
7536
7537    // normals from gradients
7538    vec3 n0 = -normalize(vec3(
7539        voxelValuePadded(b0 - c1) - voxelValuePadded(b0 + c1),
7540        voxelValuePadded(b0 - c3) - voxelValuePadded(b0 + c3),
7541        voxelValuePadded(b0 - c4) - voxelValuePadded(b0 + c4)
7542    ));
7543    vec3 n1 = -normalize(vec3(
7544        voxelValuePadded(b1 - c1) - voxelValuePadded(b1 + c1),
7545        voxelValuePadded(b1 - c3) - voxelValuePadded(b1 + c3),
7546        voxelValuePadded(b1 - c4) - voxelValuePadded(b1 + c4)
7547    ));
7548    gl_FragData[2].xyz = -vec3(
7549        n0.x + t * (n0.x - n1.x),
7550        n0.y + t * (n0.y - n1.y),
7551        n0.z + t * (n0.z - n1.z)
7552    );
7553
7554    // ensure normal-direction is the same for negative and positive iso-levels
7555    if (uInvert) {
7556        gl_FragData[2].xyz *= -1.0;
7557    }
7558
7559    // apply normal matrix
7560    gl_FragData[2].xyz = uGridTransformAdjoint * gl_FragData[2].xyz;
7561}
7562`),b_}var sT={},__={},wW;function Pue(){return wW||(wW=1,Object.defineProperty(__,"__esMo
7562dule",{value:!0}),__.activeVoxels_frag=void 0,__.activeVoxels_frag=`
7563precision highp float;
7564precision highp int;
7565precision highp sampler2D;
7566
7567uniform sampler2D tTriCount;
7568uniform sampler2D tVolumeData;
7569
7570uniform float uIsoValue;
7571uniform vec3 uGridDim;
7572uniform vec3 uGridTexDim;
7573uniform vec2 uScale;
7574
7575#include common
7576
7577// cube corners (excluding origin)
7578const vec3 c1 = vec3(1., 0., 0.);
7579const vec3 c2 = vec3(1., 1., 0.);
7580const vec3 c3 = vec3(0., 1., 0.);
7581const vec3 c4 = vec3(0., 0., 1.);
7582const vec3 c5 = vec3(1., 0., 1.);
7583const vec3 c6 = vec3(1., 1., 1.);
7584const vec3 c7 = vec3(0., 1., 1.);
7585
7586vec3 index3dFrom2d(vec2 coord) {
7587    vec2 gridTexPos = coord * uGridTexDim.xy;
7588    vec2 columnRow = ivec2Div(gridTexPos, uGridDim.xy);
7589    vec2 posXY = gridTexPos - columnRow * uGridDim.xy;
7590    float posZ = columnRow.y * intDiv(uGridTexDim.x, uGridDim.x) + columnRow.x;
7591    return vec3(posXY, posZ);
7592}
7593
7594vec4 texture3dFrom2dNearest(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) {
7595    float zSlice = floor(pos.z * gridDim.z + 0.5); // round to nearest z-slice
7596    float column = intDiv(intMod(zSlice * gridDim.x, texDim.x), gridDim.x);
7597    float row = intDiv(zSlice * gridDim.x, texDim.x);
7598    vec2 coord = (vec2(column * gridDim.x, row * gridDim.y) + (pos.xy * gridDim.xy)) / (texDim / uScale);
7599    return texture2D(tex, coord);
7600}
7601
7602float voxelValue(vec3 pos) {
7603    pos = min(max(vec3(0.0), pos), uGridDim - vec3(1.0));
7604    vec4 v = texture3dFrom2dNearest(tVolumeData, pos / uGridDim, uGridDim, uGridTexDim.xy);
7605    #ifdef dValueChannel_red
7606        return v.r;
7607    #else
7608        return v.a;
7609    #endif
7610}
7611
7612void main(void) {
7613    vec2 uv = gl_FragCoord.xy / uGridTexDim.xy;
7614    vec3 posXYZ = index3dFrom2d(uv);
7615
7616    // get MC case as the sum of corners that are below the given iso level
7617    float c = step(voxelValue(posXYZ), uIsoValue)
7618        + 2. * step(voxelValue(posXYZ + c1), uIsoValue)
7619        + 4. * step(voxelValue(posXYZ + c2), uIsoValue)
7620        + 8. * step(voxelValue(posXYZ + c3), uIsoValue)
7621        + 16. * step(voxelValue(posXYZ + c4), uIsoValue)
7622        + 32. * step(voxelValue(posXYZ + c5), uIsoValue)
7623        + 64. * step(voxelValue(posXYZ + c6), uIsoValue)
7624        + 128. * step(voxelValue(posXYZ + c7), uIsoValue);
7625    c *= step(c, 254.);
7626
7627    // handle out of bounds positions
7628    posXYZ += 1.0;
7629    posXYZ.xy += 1.0; // pixel padding (usually ok even if the texture has no padding)
7630    if (posXYZ.x >= uGridDim.x || posXYZ.y >= uGridDim.y || posXYZ.z >= uGridDim.z)
7631        c = 0.0;
7632
7633    // get total triangles to generate for calculated MC case from triCount texture
7634    float totalTrianglesToGenerate = texture2D(tTriCount, vec2(intMod(c, 16.), floor(c / 16.)) / 16.).a;
7635    gl_FragColor = vec4(vec3(totalTrianglesToGenerate * 3.0), c / 255.0);
7636}
7637`),__}var VW;function Tue(){if(VW)return sT;VW=1,Object.defineProperty(sT,"__esModule",{value:!0}),sT.calcActiveVoxels=m;const e=Jt(),t=Zt(),r=Yt(),n=Kt(),i=et(),c=Mr(),o=TZ(),s=Gr(),h=Pue(),f=Ct(),y=on(),_={...c.QuadSchema,tTriCount:(0,r.TextureSpec)("image-uint8","alpha","ubyte","nearest"),tVolumeData:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),dValueChannel:(0,r.DefineSpec)("string",["red","alpha"]),uIsoValue:(0,r.UniformSpec)("f"),uGridDim:(0,r.UniformSpec)("v3"),uGridTexDim:(0,r.UniformSpec)("v3"),uScale:(0,r.UniformSpec)("v2")},g="active-voxels";function a(v,b){return(0,y.isWebGL2)(v.gl)&&b.format===v.gl.RED?"red":"alpha"}function d(v,b,P,C,l,S){if(v.namedComputeRenderables[g]){const T=v.namedComputeRenderables[g].values;i.ValueCell.update(T.uQuadScale,S),i.ValueCell.update(T.tVolumeData,b),i.ValueCell.update(T.dValueChannel,a(v,b)),i.ValueCell.updateIfChanged(T.uIsoValue,l),i.ValueCell.update(T.uGridDim,P),i.ValueCell.update(T.uGridTexDim,C),i.ValueCell.update(T.uScale,S),v.namedComputeRenderables[g].update()}else v.namedComputeRenderables[g]=p(v,b,P,C,l,S);return v.namedComputeRenderables[g]}function p(v,b,P,C,l,S){const T={...c.QuadValues,tTriCount:i.ValueCell.create((0,o.getTriCount)()),uQuadScale:i.ValueCell.create(S),tVolumeData:i.ValueCell.create(b),dValueChannel:i.ValueCell.create(a(v,b)),uIsoValue:i.ValueCell.create(l),uGridDim:i.ValueCell.create(P),uGridTexDim:i.ValueCell.create(C),uScale:i.ValueCell.create(S)},A={..._},x=(0,n.ShaderCode)("active-voxels",s.quad_vert,h.activeVoxels_frag),M=(0,t.createComputeRenderItem)(v,"triangles",x,A,T);return(0,e.createComputeRenderable)(M,T)}function u(v){const{gl:b,state:P}=v;P.disable(b.CULL_FACE),P.disable(b.BLEND),P.disable(b.DEPTH_TEST),P.enable(b.SCISSOR_TEST),P.depthMask(!1),P.colorMask(!0,!0,
7637!0,!0),P.clearColor(0,0,0,0)}function m(v,b,P,C,l,S){f.isTimingMode&&v.timer.mark("calcActiveVoxels");const{gl:T,state:A,resources:x}=v,M=b.getWidth(),D=b.getHeight();v.namedFramebuffers[g]||(v.namedFramebuffers[g]=x.framebuffer());const V=v.namedFramebuffers[g];V.bind(),v.namedTextures[g]||(v.namedTextures[g]=x.texture("image-uint8","rgba","ubyte","nearest"));const R=v.namedTextures[g];R.define(M,D);const E=d(v,b,P,C,l,S);return v.state.currentRenderItemId=-1,R.attachFramebuffer(V,0),u(v),A.viewport(0,0,M,D),A.scissor(0,0,M,D),T.clear(T.COLOR_BUFFER_BIT),A.scissor(0,0,C[0],C[1]),E.render(),T.finish(),f.isTimingMode&&v.timer.markEnd("calcActiveVoxels"),R}return sT}var EW;function Jw(){if(EW)return h_;EW=1,Object.defineProperty(h_,"__esModule",{value:!0}),h_.createIsosurfaceBuffers=P,h_.extractIsosurface=C;const e=Jt(),t=Zt(),r=Yt(),n=Kt(),i=et(),c=Ge(),o=Mr(),s=Sue(),h=TZ(),f=Gr(),y=Cue(),_=Tue(),g=on(),a=Ct(),d={...o.QuadSchema,tTriIndices:(0,r.TextureSpec)("image-uint8","alpha","ubyte","nearest"),tActiveVoxelsPyramid:(0,r.TextureSpec)("texture","rgba","float","nearest"),tActiveVoxelsBase:(0,r.TextureSpec)("texture","rgba","float","nearest"),tVolumeData:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),dValueChannel:(0,r.DefineSpec)("string",["red","alpha"]),uIsoValue:(0,r.UniformSpec)("f"),uSize:(0,r.UniformSpec)("f"),uLevels:(0,r.UniformSpec)("f"),uCount:(0,r.UniformSpec)("f"),uInvert:(0,r.UniformSpec)("b"),uGridDim:(0,r.UniformSpec)("v3"),uGridTexDim:(0,r.UniformSpec)("v3"),uGridDataDim:(0,r.UniformSpec)("v3"),uGridTransform:(0,r.UniformSpec)("m4"),uGridTransformAdjoint:(0,r.UniformSpec)("m3"),uScale:(0,r.UniformSpec)("v2"),dPackedGroup:(0,r.DefineSpec)("boolean"),dAxisOrder:(0,r.DefineSpec)("string",["012","021","102","120","201","210"]),dConstantGroup:(0,r.DefineSpec)("boolean")},p="isosurface";function u(l,S){return(0,g.isWebGL2)(l.gl)&&S.format===l.gl.RED?"red":"alpha"}function m(l,S,T,A,x,M,D,V,R,E,I,B,w,O,F,L){if(l.namedComputeRenderables[p]){const U=l.namedComputeRenderables[p].values;i.ValueCell.update(U.tActiveVoxelsPyramid,S),i.ValueCell.update(U.tActiveVoxelsBase,T),i.ValueCell.update(U.tVolumeData,A),i.ValueCell.update(U.dValueChannel,u(l,A)),i.ValueCell.updateIfChanged(U.uIsoValue,R),i.ValueCell.updateIfChanged(U.uSize,Math.pow(2,E)),i.ValueCell.updateIfChanged(U.uLevels,E),i.ValueCell.updateIfChanged(U.uCount,B),i.ValueCell.updateIfChanged(U.uInvert,w),i.ValueCell.update(U.uGridDim,x),i.ValueCell.update(U.uGridTexDim,M),i.ValueCell.update(U.uGridDataDim,D),i.ValueCell.update(U.uGridTransform,V),i.ValueCell.update(U.uGridTransformAdjoint,c.Mat3.adjointFromMat4((0,c.Mat3)(),V)),i.ValueCell.update(U.uScale,I),i.ValueCell.updateIfChanged(U.dPackedGroup,O),i.ValueCell.updateIfChanged(U.dAxisOrder,F.join("")),i.ValueCell.updateIfChanged(U.dConstantGroup,L),l.namedComputeRenderables[p].update()}else l.namedComputeRenderables[p]=v(l,S,T,A,x,M,D,V,R,E,I,B,w,O,F,L);return l.namedComputeRenderables[p]}function v(l,S,T,A,x,M,D,V,R,E,I,B,w,O,F,L){const U={...o.QuadValues,tTriIndices:i.ValueCell.create((0,h.getTriIndices)()),tActiveVoxelsPyramid:i.ValueCell.create(S),tActiveVoxelsBase:i.ValueCell.create(T),tVolumeData:i.ValueCell.create(A),dValueChannel:i.ValueCell.create(u(l,A)),uIsoValue:i.ValueCell.create(R),uSize:i.ValueCell.create(Math.pow(2,E)),uLevels:i.ValueCell.create(E),uCount:i.ValueCell.create(B),uInvert:i.ValueCell.create(w),uGridDim:i.ValueCell.create(x),uGridTexDim:i.ValueCell.create(M),uGridDataDim:i.ValueCell.create(D),uGridTransform:i.ValueCell.create(V),uGridTransformAdjoint:i.ValueCell.create(c.Mat3.adjointFromMat4((0,c.Mat3)(),V)),uScale:i.ValueCell.create(I),dPackedGroup:i.ValueCell.create(O),dAxisOrder:i.ValueCell.create(F.join("")),dConstantGroup:i.ValueCell.create(L)},q={...d},N=(0,n.ShaderCode)("isosurface",f.quad_vert,y.isosurface_frag,{drawBuffers:"required"}),k=(0,t.createComputeRenderItem)(l,"triangles",N,q,U);return(0,e.createComputeRenderable)(k,U)}function b(l){const{gl:S,state:T}=l;T.disable(S.CULL_FACE),T.disable(S.BLEND),T.disable(S.DEPTH_TEST),T.disable(S.SCISSOR_TEST),T.depthMask(!1),T.colorMask(!0,!0,
7637!0,!0),T.clearColor(0,0,0,0)}function P(l,S,T,A,x,M,D,V,R,E,I,B,w,O,F,L){const{drawBuffers:U}=l.extensions;if(!U)throw new Error("need WebGL draw buffers");a.isTimingMode&&l.timer.mark("createIsosurfaceBuffers");const{gl:q,state:N,resources:k,extensions:j}=l,{pyramidTex:H,height:G,levels:z,scale:W,count:X}=A,Y=H.getWidth();l.namedFramebuffers[p]||(l.namedFramebuffers[p]=k.framebuffer());const K=l.namedFramebuffers[p];(0,g.isWebGL2)(q)?(O||(O=k.texture("image-float32","rgba","float","nearest")),F||(F=k.texture("image-uint8","rgba","ubyte","nearest")),L||(L=j.colorBufferHalfFloat&&j.textureHalfFloat?k.texture("image-float16","rgba","fp16","nearest"):k.texture("image-float32","rgba","float","nearest"))):(O||(O=k.texture("image-float32","rgba","float","nearest")),F||(F=k.texture("image-float32","rgba","float","nearest")),L||(L=k.texture("image-float32","rgba","float","nearest"))),O.define(Y,G),F.define(Y,G),L.define(Y,G),O.attachFramebuffer(K,0),F.attachFramebuffer(K,1),L.attachFramebuffer(K,2);const Q=m(l,H,S,T,x,M,D,V,R,z,W,X,E,I,B,w);return l.state.currentRenderItemId=-1,K.bind(),U.drawBuffers([U.COLOR_ATTACHMENT0,U.COLOR_ATTACHMENT1,U.COLOR_ATTACHMENT2]),b(l),N.viewport(0,0,Y,G),q.clear(q.COLOR_BUFFER_BIT),Q.render(),q.finish(),a.isTimingMode&&l.timer.markEnd("createIsosurfaceBuffers"),{vertexTexture:O,groupTexture:F,normalTexture:L,vertexCount:X}}function C(l,S,T,A,x,M,D,V,R,E,I,B,w,O,F){a.isTimingMode&&l.timer.mark("extractIsosurface");const L=(0,_.calcActiveVoxels)(l,S,T,A,V,M),U=(0,s.createHistogramPyramid)(l,L,M,A),q=P(l,L,S,U,T,A,x,D,V,R,E,I,B,w,O,F);return a.isTimingMode&&l.timer.markEnd("extractIsosurface"),q}return h_}var BW;function xue(){return BW||(BW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureGaussianSurfaceMeshParams=e.GaussianSurfaceMeshParams=void 0,e.GaussianSurfaceVisual=C,e.StructureGaussianSurfaceVisual=l,e.GaussianSurfaceMeshVisual=T,e.StructureGaussianSurfaceMeshVisual=x,e.GaussianSurfaceTextureMeshVisual=V,e.StructureGaussianSurfaceTextureMeshVisual=E;const t=Ne(),r=mr(),n=Qw(),i=Rt(),c=em(),o=zi(),s=Fl(),h=Jw(),f=rt(),y=Br(),_=Er(),g=Bw(),a=jQ(),d=Tt(),p=Ge(),u=Ct(),m=Kr(),v={...n.GaussianDensityParams,...d.ColorSmoothingParams,tryUseGpu:t.ParamDefinition.Boolean(!0)};e.GaussianSurfaceMeshParams={...r.UnitsMeshParams,...r.UnitsTextureMeshParams,...v},e.StructureGaussianSurfaceMeshParams={...y.ComplexMeshParams,...y.ComplexTextureMeshParams,...v};function b(I){return I.extensions.colorBufferFloat&&I.extensions.textureFloat&&I.extensions.textureFloatLinear&&I.extensions.blendMinMax&&I.extensions.drawBuffers}function P(I,B,w){if(B.resolution>1)return!1;const O=w.maxTextureSize/3,{areaCells:F,maxAreaCells:L}=(0,_.getVolumeSliceInfo)(I.boundary.box,B.resolution,O*O);return F<L}function C(I,B,w,O){return!w.includeParent&&w.floodfill==="off"&&w.tryUseGpu&&O&&b(O)&&P(B,w,O)?V(I):T(I)}function l(I,B,w,O){return!w.includeParent&&w.floodfill==="off"&&w.tryUseGpu&&O&&b(O)&&P(B,w,O)?E(I):x(I)}async function S(I,B,w,O,F,L){const{smoothness:U,floodfill:q,includeParent:N,radiusOffset:k}=F,{transform:j,field:H,idField:G,radiusFactor:z,resolution:W,maxRadius:X}=await(0,n.computeUnitGaussianDensity)(w,B,O.size,F).runInContext(I.runtime),Y=Math.exp(-U)/z,K={isoLevel:Y,scalarField:q!=="off"?p.Tensor.createFloodfilled(H,Y,q):H,idField:G},Q=await(0,c.computeMarchingCubesMesh)(K,L).runAsChild(I.runtime);if(Q.meta.resolution=W,N){const te=Math.ceil(2/W);i.Mesh.smoothEdges(Q,{iterations:te,maxNewEdgeLength:Math.sqrt(2)})}i.Mesh.transform(Q,j),I.webgl&&!I.webgl.isWebGL2?(i.Mesh.uniformTriangleGroup(Q),m.ValueCell.updateIfChanged(Q.varyingGroup,!1)):m.ValueCell.updateIfChanged(Q.varyingGroup,!0);const J=k*(1+Math.exp(-U)),ae=f.Sphere3D.expand((0,f.Sphere3D)(),B.boundary.sphere,X+J);return Q.setBoundingSphere(ae),Q}function T(I){return(0,r.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.GaussianSurfaceMeshParams),createGeometry:S,createLocationIterator:o.ElementIterator.fromGroup,getLoci:o.getElementLoci,eachLocation:o.eachElement,setUpdateState:(B,w,O)=>{B.createGeometry=w.resolution!==O.resolution||w.radiusOffset!==O.radiusOffset||w.smoothness!==O.smoothness||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.traceOnly!==O.traceOnly||w.includeParent!==O.includeParent||w.floodfill!==O.floodfill,w.smoothColors.name!==O.smoothColors.name?B.updateColor=!0:w.smoothColors.name==="on"&&O.smoothColors.name==="on"&&(w.smoothColors.params.resolutionFactor!==O.smoothColors.params.resolutionFactor&&(B.updateColor=!0),w.smoothColors.params.sampleStride!==O.smoothColors.params.sampleStride&&(B.updateColor=!0))},mustRecreate:(B,w,O)=>w.tryUseGpu&&!!O&&P(B.structure,w,O),processValues:(B,w,O,F,L)=>{const{resolution:U,colorTexture:q}=w.meta,N=(0,d.getColorSmoothingProps)(O.smoothColors,F.color.preferSmoothing,U);N&&((0,g.applyMeshColorSmoothing)(B,N,L,q),w.meta.colorTexture=B.tColorGrid.ref.value)},dispose:B=>{var w;(w=B.meta.colorTexture)===null||w===void 0||w.destroy()}},I)}async function A(I,B,w,O,F){const{smoothness:L,floodfill:U,includeParent:q,radiu
7637sOffset:N}=O,{transform:k,field:j,idField:H,radiusFactor:G,resolution:z,maxRadius:W}=await(0,n.computeStructureGaussianDensity)(B,w.size,O).runInContext(I.runtime),X=Math.exp(-L)/G,Y={isoLevel:X,scalarField:U!=="off"?p.Tensor.createFloodfilled(j,X,U):j,idField:H},K=await(0,c.computeMarchingCubesMesh)(Y,F).runAsChild(I.runtime);if(K.meta.resolution=z,q){const ae=Math.ceil(2/z);i.Mesh.smoothEdges(K,{iterations:ae,maxNewEdgeLength:Math.sqrt(2)})}i.Mesh.transform(K,k),I.webgl&&!I.webgl.isWebGL2?(i.Mesh.uniformTriangleGroup(K),m.ValueCell.updateIfChanged(K.varyingGroup,!1)):m.ValueCell.updateIfChanged(K.varyingGroup,!0);const Q=N*(1+Math.exp(-L)),J=f.Sphere3D.expand((0,f.Sphere3D)(),B.boundary.sphere,W+Q);return K.setBoundingSphere(J),K}function x(I){return(0,y.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureGaussianSurfaceMeshParams),createGeometry:A,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(B,w,O)=>{B.createGeometry=w.resolution!==O.resolution||w.radiusOffset!==O.radiusOffset||w.smoothness!==O.smoothness||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.traceOnly!==O.traceOnly||w.includeParent!==O.includeParent||w.floodfill!==O.floodfill,w.smoothColors.name!==O.smoothColors.name?B.updateColor=!0:w.smoothColors.name==="on"&&O.smoothColors.name==="on"&&(w.smoothColors.params.resolutionFactor!==O.smoothColors.params.resolutionFactor&&(B.updateColor=!0),w.smoothColors.params.sampleStride!==O.smoothColors.params.sampleStride&&(B.updateColor=!0))},mustRecreate:(B,w,O)=>w.tryUseGpu&&!!O&&P(B,w,O),processValues:(B,w,O,F,L)=>{const{resolution:U,colorTexture:q}=w.meta,N=(0,d.getColorSmoothingProps)(O.smoothColors,F.color.preferSmoothing,U);N&&((0,g.applyMeshColorSmoothing)(B,N,L,q),w.meta.colorTexture=B.tColorGrid.ref.value)},dispose:B=>{var w;(w=B.meta.colorTexture)===null||w===void 0||w.destroy()}},I)}const M="gaussian-surface";function D(I,B,w,O,F,L){const{webgl:U}=I;if(!U)throw new Error("webgl context required to create gaussian surface texture-mesh");const{namedTextures:q,resources:N,extensions:{colorBufferFloat:k,textureFloat:j,colorBufferHalfFloat:H,textureHalfFloat:G}}=U;q[M]||(q[M]=H&&G?N.texture("image-float16","rgba","fp16","linear"):k&&j?N.texture("image-float32","rgba","float","linear"):N.texture("image-uint8","rgba","ubyte","linear"));const z=p.Vec3.create(0,1,2),W=B.elements.length,X=K=>{u.isTimingMode&&U.timer.mark("createGaussianSurfaceTextureMesh");const Q=(0,n.computeUnitGaussianDensityTexture2d)(w,B,O.size,!0,F,U,q[M]),J=Math.exp(-F.smoothness)/Q.radiusFactor,ae=K?.doubleBuffer.get(),te=(0,h.extractIsosurface)(U,Q.texture,Q.gridDim,Q.gridTexDim,Q.gridDataDim,Q.gridTexScale,Q.transform,J,!1,!0,z,!0,ae?.vertex,ae?.group,ae?.normal);u.isTimingMode&&U.timer.markEnd("createGaussianSurfaceTextureMesh");const ne=F.radiusOffset*(1+Math.exp(-F.smoothness)),$=f.Sphere3D.expand((0,f.Sphere3D)(),B.boundary.sphere,Q.maxRadius+ne),ie=s.TextureMesh.create(te.vertexCount,W,te.vertexTexture,te.groupTexture,te.normalTexture,$,K);return ie.meta.resolution=Q.resolution,ie},Y=X(L);return Y.meta.webgl=U,Y.meta.reset=()=>{X(Y)},Y}function V(I){return(0,r.UnitsTextureMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.GaussianSurfaceMeshParams),createGeometry:D,createLocationIterator:o.ElementIterator.fromGroup,getLoci:o.getElementLoci,eachLocation:o.eachElement,setUpdateState:(B,w,O)=>{B.createGeometry=w.resolution!==O.resolution||w.radiusOffset!==O.radiusOffset||w.smoothness!==O.smoothness||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.traceOnly!==O.traceOnly,w.smoothColors.name!==O.smoothColors.name?B.updateColor=!0:w.smoothColors.name==="on"&&O.smoothColors.name==="on"&&(w.smoothColors.params.resolutionFactor!==O.smoothColors.params.resolutionFactor&&(B.updateColor=!0),w.smoothColors.params.sampleStride!==O.smoothColors.params.sampleStride&&(B.updateColor=!0))},mustRecreate:(B,w,O)=>w.includeParent||w.floodfill!=="off"||!w.tryUseGpu||!O||!P(B.structure,w,O),processValues:(B,w,O,F,L)=>{const{resolution:U,colorTexture:q}=w.meta,N=(0,d.getColorSmoothingProps)(O.smoothColors,F.color.preferSmoothing,U);N&&L&&((0,a.applyTextureMeshColorSmoothing)(B,N,L,q),w.meta.colorTexture=B.tColorGrid.ref.value)},dispose:B=>{var w;B.vertexTexture.ref.value.destroy(),B.groupTexture.ref.value.destroy(),B.normalTexture.ref.value.destroy(),B.doubleBuffer.destroy(),(w=B.meta.colorTexture)===null||w===void 0||w.destroy()}},I)}function R(I,B,w,O,F){const{webgl:L}=I;if(!L)throw new Error("webgl context required to create structure gaussian surface texture-mesh");const{namedTextures:U,resources:q,extensions:{colorBufferFloat:N,textureFloat:k,colorBufferHalfFloat:j,textureHalfFloat:H}}=L;U[M]||(U[M]=j&&H?q.texture("image-float16","rgba","fp16","linear"):N&&k?q.texture("image-float32","rgba","float","linear"):q.texture("image-uint8","rgba","ubyte","linear"));const G=p.Vec3.create(0,1,2),z=B.elementCount,W=Y=>{u.isTimingMode&&L.timer.mark("createStructureGaussianSurfaceTextureMesh");const K=(0,n.computeStructureGaussianDensityTexture2d)(B,w.size,!0,O,L,U[M]),Q=Math.exp(-O.
7637smoothness)/K.radiusFactor,J=Y?.doubleBuffer.get(),ae=(0,h.extractIsosurface)(L,K.texture,K.gridDim,K.gridTexDim,K.gridDataDim,K.gridTexScale,K.transform,Q,!1,!0,G,!0,J?.vertex,J?.group,J?.normal);u.isTimingMode&&L.timer.markEnd("createStructureGaussianSurfaceTextureMesh");const te=O.radiusOffset*(1+Math.exp(-O.smoothness)),ne=f.Sphere3D.expand((0,f.Sphere3D)(),B.boundary.sphere,K.maxRadius+te),$=s.TextureMesh.create(ae.vertexCount,z,ae.vertexTexture,ae.groupTexture,ae.normalTexture,ne,Y);return $.meta.resolution=K.resolution,$},X=W(F);return X.meta.webgl=L,X.meta.reset=()=>{W(X)},X}function E(I){return(0,y.ComplexTextureMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureGaussianSurfaceMeshParams),createGeometry:R,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(B,w,O)=>{B.createGeometry=w.resolution!==O.resolution||w.radiusOffset!==O.radiusOffset||w.smoothness!==O.smoothness||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.traceOnly!==O.traceOnly,w.smoothColors.name!==O.smoothColors.name?B.updateColor=!0:w.smoothColors.name==="on"&&O.smoothColors.name==="on"&&(w.smoothColors.params.resolutionFactor!==O.smoothColors.params.resolutionFactor&&(B.updateColor=!0),w.smoothColors.params.sampleStride!==O.smoothColors.params.sampleStride&&(B.updateColor=!0))},mustRecreate:(B,w,O)=>w.includeParent||w.floodfill!=="off"||!w.tryUseGpu||!O||!P(B,w,O),processValues:(B,w,O,F,L)=>{const{resolution:U,colorTexture:q}=w.meta,N=(0,d.getColorSmoothingProps)(O.smoothColors,F.color.preferSmoothing,U);N&&L&&((0,a.applyTextureMeshColorSmoothing)(B,N,L,q),w.meta.colorTexture=B.tColorGrid.ref.value)},dispose:B=>{var w;B.vertexTexture.ref.value.destroy(),B.groupTexture.ref.value.destroy(),B.normalTexture.ref.value.destroy(),B.doubleBuffer.destroy(),(w=B.meta.colorTexture)===null||w===void 0||w.destroy()}},I)}})(NM)),NM}var jM={},RW;function Aue(){return RW||(RW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureGaussianWireframeParams=e.GaussianWireframeParams=void 0,e.GaussianWireframeVisual=_,e.StructureGaussianWireframeVisual=a;const t=Ne(),r=kn(),n=Qw(),i=em(),c=mr(),o=zi(),s=rt(),h=Br(),f={...n.GaussianDensityParams,sizeFactor:t.ParamDefinition.Numeric(3,{min:0,max:10,step:.1}),lineSizeAttenuation:t.ParamDefinition.Boolean(!1)};e.GaussianWireframeParams={...c.UnitsLinesParams,...f},e.StructureGaussianWireframeParams={...h.ComplexLinesParams,...f};async function y(d,p,u,m,v,b){const{smoothness:P}=v,{transform:C,field:l,idField:S,maxRadius:T}=await(0,n.computeUnitGaussianDensity)(u,p,m.size,v).runInContext(d.runtime),A={isoLevel:Math.exp(-P),scalarField:l,idField:S},x=await(0,i.computeMarchingCubesLines)(A,b).runAsChild(d.runtime);r.Lines.transform(x,C);const M=s.Sphere3D.expand((0,s.Sphere3D)(),p.boundary.sphere,T);return x.setBoundingSphere(M),x}function _(d){return(0,c.UnitsLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.GaussianWireframeParams),createGeometry:y,createLocationIterator:o.ElementIterator.fromGroup,getLoci:o.getElementLoci,eachLocation:o.eachElement,setUpdateState:(p,u,m)=>{p.createGeometry=u.resolution!==m.resolution||u.radiusOffset!==m.radiusOffset||u.smoothness!==m.smoothness||u.ignoreHydrogens!==m.ignoreHydrogens||u.ignoreHydrogensVariant!==m.ignoreHydrogensVariant||u.traceOnly!==m.traceOnly||u.includeParent!==m.includeParent||u.floodfill!==m.floodfill}},d)}async function g(d,p,u,m,v){const{smoothness:b}=m,{transform:P,field:C,idField:l,maxRadius:S}=await(0,n.computeStructureGaussianDensity)(p,u.size,m).runInContext(d.runtime),T={isoLevel:Math.exp(-b),scalarField:C,idField:l},A=await(0,i.computeMarchingCubesLines)(T,v).runAsChild(d.runtime);r.Lines.transform(A,P);const x=s.Sphere3D.expand((0,s.Sphere3D)(),p.boundary.sphere,S);return A.setBoundingSphere(x),A}function a(d){return(0,h.ComplexLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureGaussianWireframeParams),createGeometry:g,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(p,u,m)=>{p.createGeometry=u.resolution!==m.resolution||u.radiusOffset!==m.radiusOffset||u.smoothness!==m.smoothness||u.ignoreHydrogens!==m.ignoreHydrogens||u.ignoreHydrogensVariant!==m.ignoreHydrogensVariant||u.traceOnly!==m.traceOnly||u.includeParent!==m.includeParent||u.floodfill!==m.floodfill}},d)}})(jM)),jM}var OW;function Mue(){return OW||(OW=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.GaussianSurfaceRepresentationProvider=e.GaussianSurfaceParams=void 0,e.getGaussianSurfaceParams=f,e.GaussianSurfaceRepresentation=y;const t=xue(),r=Sa(),n=Aue(),i=Ne(),c=Yr(),o=Lt(),s=Tt(),h={"gaussian-surface-mesh":(_,g)=>(0,r.UnitsRepresentation)("Gaussian surface mesh",_,g,t.GaussianSurfaceVisual),"structure-gaussian-surface-mesh":(_,g)=>(0,c.ComplexRepresentation)("Structure-Gaussian surface mesh",_,g,t.StructureGaussianSurfaceVisual),"gaussian-surface-wireframe":(_,g)=>(0,r.UnitsRepresentation)("Gaussian surface wireframe",_,g,n.GaussianWireframeVisual),"structure-gaussian-surface-wireframe":(_,g)=>(0,c.ComplexRepresentation)("Structure-Gaussian surface wireframe",_,g,n.StructureGaussianWireframeVisual)};e.GaussianSurfaceParams={...t.GaussianSurfaceMeshParams,...n.GaussianWireframeParams,visuals:i.ParamDefinition.MultiSelect(["gaussian-surface-mesh"],i.ParamDefinition.objectToOptions(h)),bumpFrequency:i.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},s.BaseGeometry.ShadingCategory),density:i.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},s.BaseGeometry.ShadingCategory)};function f(_,g){return e.GaussianSurfaceParams}function y(_,g){return o.Representation.createMulti("Gaussian Surface",_,g,c.StructureRepresentationStateBuilder,h)}e.GaussianSurfaceRepresentationProvider=(0,c.StructureRepresentationProvider)({name:"gaussian-surface",label:"Gaussian Surface",description:"Displays a gaussian molecular surface.",factory:y,getParams:f,defaultValues:i.ParamDefinition.getDefaultValues(e.GaussianSurfaceParams),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"physical"},isApplicable:_=>_.elementCount>0})})(LM)),LM}var GM={},zM={},kW;function Due(){return kW||(kW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.LabelTextParams=void 0,e.LabelTextVisual=y;const t=Ne(),r=Ke(),n=Kf(),i=Br(),c=zi(),o=Vr(),s=Ge(),h=Ki(),f=zi();e.LabelTextParams={...i.ComplexTextParams,background:t.ParamDefinition.Boolean(!1),backgroundMargin:t.ParamDefinition.Numeric(0,{min:0,max:1,step:.01}),backgroundColor:t.ParamDefinition.Color(o.ColorNames.black),backgroundOpacity:t.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01}),borderWidth:t.ParamDefinition.Numeric(.25,{min:0,max:.5,step:.01}),level:t.ParamDefinition.Select("residue",[["chain","Chain"],["residue","Residue"],["element","Element"]],{isEssential:!0}),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),chainScale:t.ParamDefinition.Numeric(10,{min:0,max:20,step:.1}),residueScale:t.ParamDefinition.Numeric(1,{min:0,max:20,step:.1}),elementScale:t.ParamDefinition.Numeric(.5,{min:0,max:20,step:.1})};function y(m){return(0,i.ComplexTextVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.LabelTextParams),createGeometry:_,createLocationIterator:c.ElementIterator.fromStructure,getLoci:c.getSerialElementLoci,eachLocation:c.eachSerialElement,setUpdateState:(v,b,P)=>{v.createGeometry=b.level!==P.level||b.level==="chain"&&b.chainScale!==P.chainScale||b.level==="residue"&&b.residueScale!==P.residueScale||b.level==="element"&&b.elementScale!==P.elementScale||b.ignoreHydrogens!==P.ignoreHydrogens||b.ignoreHydrogensVariant!==P.ignoreHydrogensVariant}},m)}function _(m,v,b,P,C){switch(P.level){case"chain":return d(m,v,b,P,C);case"residue":return p(m,v,b,P,C);case"element":return u(m,v,b,P,C)}}const g=(0,s.Vec3)(),a=new h.BoundaryHelper("98");function d(m,v,b,P,C){const l=r.StructureElement.Location.create(v),{units:S,serialMapping:T}=v,{auth_asym_id:A,label_asym_id:x}=r.StructureProperties.chain,{cumulativeUnitElementCount:M}=T,D=S.length,{chainScale:V}=P,R=n.TextBuilder.create(P,D,D/2,C);for(let E=0,I=S.length;E<I;++E){const B=S[E];l.unit=B,l.element=B.elements[0];const{center:w,radius:O}=B.lookup3d.boundary.sphere;s.Vec3.transformMat4(g,w,B.conformation.operator.matrix);const F=A(l),L=x(l),U=F===L?L:`${L} [${F}]`;R.add(U,g[0],g[1],g[2],O,V,M[E])}return R.getText()}function p(m,v,b,P,C){const l=r.StructureElement.Location.create(v),{units:S,serialMapping:T}=v,{label_comp_id:A}=r.StructureProperties.atom,{auth_seq_id:x}=r.StructureProperties.residue,{cumulativeUnitElementCount:M}=T,D=v.polymerResidueCount*2,{residueScale:V}=P,R=n.TextBuilder.create(P,D,D/2,C);for(let E=0,I=S.length;E<I;++E){const B=S[E],w=B.conformation,{elements:O}=B;l.unit=B,l.element=B.elements[0];const F=B.model.atomicHierarchy.residueAtomSegments.index,L=M[E];let U=0;const q=O.length;for(;U<q;){const N=U,k=F[O[U]];for(U++;U<q&&F[O[U]]===k;)U++;a.reset();for(let X=N;X<U;X++)w.position(O[X],g),a.includePosition(g);a.finishedIncludeStep();for(let X=N;X<U;X++)w.position(O[X],g),a.radiusPosition(g);l.element=O[N];const{center:j,radius:H}=a.getSphere(),G=x(l),W=`${A(l)} ${G}`;R.add(W,j[0],j[1],j[2],H,V,L+N)}}return R.getText()}function u(m,v,b,P,C){const l=r.StructureElement.Location.create(v),{units:S,serialMapping:T}=v,{label_atom_id:A,label_alt_id:x}=r.StructureProperties.atom,{cumulativeUnitElementCount:M}=T,D=b.size,V=v.elementCount,{elementScale:R}=P,E=n.TextBuilder.create(P,V,V/2,C);for(let I=0,B=S.length;I<B;++I){const w=S[I],O=w.conformation,{elements:F}=w;l.unit=w;const L=M[I],U=(0,f.makeElementIgnoreTest)(v,w,{...P,traceOnly:!1});for(let q=0,N=F.length;q<N;q++){if(U&&U(F[q]))continue;l.element=F[q],O.position(l.element,g);const k=A(l),j=x(l),H=j?`${k}%${j}`:k;E.add(H,g[0],g[1],g[2],D.size(l),R,L+q)}}return E.getText()}})(zM)),zM}var FW;function Iue(){return FW||(FW=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.LabelRepresentationProvider=e.LabelParams=void 0,e.getLabelParams=s,e.LabelRepresentation=h;const t=Ne(),r=Yr(),n=Lt(),i=Due(),c=cn(),o={"label-text":(f,y)=>(0,r.ComplexRepresentation)("Label text",f,y,i.LabelTextVisual)};e.LabelParams={...i.LabelTextParams,visuals:t.ParamDefinition.MultiSelect(["label-text"],t.ParamDefinition.objectToOptions(o))};function s(f,y){return e.LabelParams}function h(f,y){const _=n.Representation.createMulti("Label",f,y,r.StructureRepresentationStateBuilder,o);return _.setState({pickable:!1,markerActions:c.MarkerAction.None}),_}e.LabelRepresentationProvider=(0,r.StructureRepresentationProvider)({name:"label",label:"Label",description:"Displays labels.",factory:h,getParams:s,defaultValues:t.ParamDefinition.getDefaultValues(e.LabelParams),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"physical"},isApplicable:f=>f.elementCount>0})})(GM)),GM}var HM={},WM={},fl={},$M={},LW;function wue(){return LW||(LW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultMolecularSurfaceCalculationProps=e.MolecularSurfaceCalculationParams=void 0,e.calcMolecularSurface=_;const t=Ne(),r=nn(),n=UD(),i=jD(),c=os(),o=wt(),s=Tf(),h=Xr();function f(g,a){return g[0]=g[1]=g[2]=1,a[0]!==0?g[0]=(a[1]+a[2])/-a[0]:a[1]!==0?g[1]=(a[0]+a[2])/-a[1]:a[2]!==0&&(g[2]=(a[0]+a[1])/-a[2]),g}function y(g){let a=0;const d=2*Math.PI/g,p=new Float32Array(g),u=new Float32Array(g);for(let m=0;m<g;m++)p[m]=Math.cos(a),u[m]=Math.sin(a),a+=d;return{cosTable:p,sinTable:u}}e.MolecularSurfaceCalculationParams={probeRadius:t.ParamDefinition.Numeric(1.4,{min:0,max:10,step:.1},{description:"Radius of the probe tracing the molecular surface."}),resolution:t.ParamDefinition.Numeric(.5,{min:.01,max:20,step:.01},{description:"Grid resolution/cell spacing."}),probePositions:t.ParamDefinition.Numeric(36,{min:12,max:90,step:1},{description:"Number of positions tested for probe target intersection."})},e.DefaultMolecularSurfaceCalculationProps=t.ParamDefinition.getDefaultValues(e.MolecularSurfaceCalculationParams);async function _(g,a,d,p,u,m){let v=-1;function b(ee,se,ye,Se,Ae){if(v!==-1){const _e=v;if(_e!==Se&&_e!==Ae&&P(_e,ee,se,ye))return _e;v=-1}for(let _e=0,be=U.count;_e<be;++_e){const xe=r.OrderedSet.getAt(q,U.indices[_e]);if(xe!==Se&&xe!==Ae&&P(xe,ee,se,ye))return v=xe,xe}return-1}function P(ee,se,ye,Se){const Ae=G[ee],_e=N[ee]-se,be=k[ee]-ye,xe=j[ee]-Se;return _e*_e+be*be+xe*xe<Ae*Ae}function C(ee,se){for(let ye=ee;ye<se;++ye){const Se=r.OrderedSet.getAt(q,ye),Ae=N[Se],_e=k[Se],be=j[Se],xe=G[Se],we=xe*xe,Be=O>0;L.find(Ae,_e,be,xe);const Me=Math.ceil(xe*B)+O,Re=Math.floor(B*(Ae-Y)),Te=Math.floor(B*(_e-K)),Ve=Math.floor(B*(be-Q)),qe=Math.max(0,Re-Me),ke=Math.max(0,Te-Me),ze=Math.max(0,Ve-Me),We=Math.min(te,Re+Me+2),Je=Math.min(ne,Te+Me+2),De=Math.min($,Ve+Me+2);for(let Oe=qe;Oe<We;++Oe){const Fe=fe[Oe]-Ae,Le=Oe*re;for(let He=ke;He<Je;++He){const Pe=de[He]-_e,Ie=Fe*Fe+Pe*Pe,Ee=He*ie+Le;for(let Ue=ze;Ue<De;++Ue){const $e=ge[Ue]-be,Ye=Ie+$e*$e;if(Be||Ye<we){const Qe=Ue+Ee,it=Math.sqrt(Ye),ht=xe/it,mt=Fe*ht+Ae,St=Pe*ht+_e,Bt=$e*ht+be,Ot=b(mt,St,Bt,Se,-1);if(Ye<we){if(pe[Qe]<0&&(pe[Qe]*=-1),Ot===-1){const br=xe-it;br<pe[Qe]&&(pe[Qe]=br,he[Qe]=H[ye])}}else if(Be&&Ot===-1){const br=xe-it;br>pe[Qe]&&(pe[Qe]=br)}}}}}}}async function l(){for(let ee=0;ee<z;ee+=Ce)C(ee,Math.min(ee+Ce,z)),g.shouldUpdate&&await g.update({message:"projecting points",current:ee,max:z})}const S=(0,o.Vec3)(),T=(0,o.Vec3)(),A=(0,o.Vec3)(),x=(0,o.Vec3)();function M(ee,se){const ye=G[ee],Se=G[se],Ae=S[0]=N[se]-N[ee],_e=S[1]=k[se]-k[ee],be=S[2]=j[se]-j[ee],xe=Ae*Ae+_e*_e+be*be,we=Math.sqrt(xe),Be=(ye*ye+we*we-Se*Se)/(2*ye*we),Me=ye*Be;o.Vec3.normalize(S,S),f(A,S),o.Vec3.normalize(A,A),o.Vec3.cross(x,S,A),o.Vec3.normalize(x,x);const Re=Math.sqrt(ye*ye-Me*Me);o.Vec3.scale(A,A,Re),o.Vec3.scale(x,x,Re),o.Vec3.scale(S,S,Me),T[0]=S[0]+N[ee],T[1]=S[1]+k[ee],T[2]=S[2]+j[ee],v=-1;for(let Te=0;Te<I;++Te){const Ve=oe[Te],qe=ce[Te],ke=T[0]+Ve*A[0]+qe*x[0],ze=T[1]+Ve*A[1]+qe*x[1],We=T[2]+Ve*A[2]+qe*x[2];if(b(ke,ze,We,ee,se)===-1){const Je=Math.floor(B*(ke-Y)),De=Math.floor(B*(ze-K)),Oe=Math.floor(B*(We-Q)),Fe=Math.max(0,Je-w),Le=Math.max(0,De-w),He=Math.max(0,Oe-w),Pe=Math.min(te,Je+w+2),Ie=Math.min(ne,De+w+2),Ee=Math.min($,Oe+w+2);for(let Ue=Fe;Ue<Pe;++Ue){const $e=ke-fe[Ue],Ye=Ue*re;for(let Qe=Le;Qe<Ie;++Qe){const it=ze-de[Qe],ht=$e*$e+it*it,mt=Qe*ie+Ye;for(let St=He;St<Ee;++St){const Bt=We-ge[St],Ot=ht+Bt*Bt,br=St+mt,Ir=pe[br];if(Ir>0&&Ot<Ir*Ir){pe[br]=Math.sqrt(Ot);const Cn=$e*S[0]+it*S[1]+Bt*S[2];he[br]=H[r.OrderedSet.indexOf(q,Cn<0?se:ee)]}}}}}}}function D(ee,se){for(let ye=ee;ye<se;++ye){const Se=r.OrderedSet.getAt(q,ye);L.find(N[Se],k[Se],j[Se],G[Se]);for(let Ae=0,_e=U.count;Ae<_e;++Ae){const be=r.OrderedSet.getAt(q,U.indices[Ae]);Se<be&&M(Se,be)}}}async function V(){for(let ee=0;ee<z;ee+=Ce)D(ee,Math.min(ee+Ce,z)),g.shouldUpdate&&await g.update({message:"projecting torii",current:ee,max:z})}const{resolution:R,probeRadius:E,probePositions:I}=m,B=1/R,w=2+Math.floor(E*B),O=E<R*2?1:0,F=o.Vec3.create(p,p,p);o.Vec3.scale(F,F,2);const L=(0,i.GridLookup3D)(a,d,F),U=L.result;u===null&&(u=L.boundary.box);const{indices:q,x:N,y:k,z:j,id:H,radius:G}=a,z=r.OrderedSet.size(q),W=p+R,X=c.Box3D.expand((0,c.Box3D)(),u,o.Vec3.create(W,W,W)),[Y,K,Q]=X.min,J=c.Box3D.scale((0,c.Box3D)(),X,B),ae=c.Box3D.size((0,o.Vec3)(),J);o.Vec3.ceil(ae,ae);const[te,ne,$]=ae,ie=$,Z=ne,re=ie*Z,{cosTable:oe,sinTable:ce}=y(I),ue=s.Tensor.Space(ae,[0,1,2],Float32Array),pe=ue.create(),he=ue.create();pe.fill(-1001),he.fill(-1);const fe=(0,n.fillGridDim)(te,Y,R),de=(0,n.fillGridDim)(ne,K,R),ge=(0,n.fillGridDim)($,Q,R),Ce=Math.ceil(1e5/(Math.pow(Math.pow(p,3),3)*B));await l(),await V();const ve=s.Tensor.create(ue,pe),le=s.Tensor.create(ue,he),me=h.Mat4.identity();return h.Mat4.fromScaling(me,o.Vec3.create(R,R,R)),h.Mat4.setTranslation(me,X.min),{field:ve,idField:le,transform:me,resolution:R,maxRadius:p}}})($M)),$M}var NW;function xZ(){if(NW)return fl;
7637NW=1,Object.defineProperty(fl,"__esModule",{value:!0}),fl.CommonMolecularSurfaceCalculationParams=void 0,fl.computeUnitMolecularSurface=s,fl.computeStructureMolecularSurface=f;const e=nt(),t=Er(),r=wue(),n=at(),i=Tt(),c=Ne();fl.CommonMolecularSurfaceCalculationParams={...r.MolecularSurfaceCalculationParams,resolution:{...r.MolecularSurfaceCalculationParams.resolution,...i.BaseGeometry.CustomQualityParamInfo},probePositions:{...r.MolecularSurfaceCalculationParams.probePositions,...i.BaseGeometry.CustomQualityParamInfo},floodfill:c.ParamDefinition.Select("off",c.ParamDefinition.arrayToOptions(["off","inside","outside"]),{description:"If and how to floodfill the molecular surface."})};function o(_,g,a,d){const{probeRadius:p}=d,{position:u,boundary:m,radius:v}=(0,t.getUnitConformationAndRadius)(_,g,a,d),{indices:b}=u,P=n.OrderedSet.size(b),C=new Float32Array(n.OrderedSet.end(b));let l=0;for(let S=0;S<P;++S){const T=n.OrderedSet.getAt(b,S),A=v(T);l<A&&(l=A),C[T]=A+p}return{position:{...u,radius:C},boundary:m,maxRadius:l}}function s(_,g,a,d){const{position:p,boundary:u,maxRadius:m}=o(_,g,a,d),v=(0,t.ensureReasonableResolution)(u.box,d);return e.Task.create("Molecular Surface",async b=>await y(b,p,u,m,u.box,v))}function h(_,g,a){const{probeRadius:d}=a,{position:p,boundary:u,radius:m}=(0,t.getStructureConformationAndRadius)(_,g,a),{indices:v}=p,b=n.OrderedSet.size(v),P=new Float32Array(n.OrderedSet.end(v));let C=0;for(let l=0;l<b;++l){const S=n.OrderedSet.getAt(v,l),T=m(S);C<T&&(C=T),P[S]=T+d}return{position:{...p,radius:P},boundary:u,maxRadius:C}}function f(_,g,a){const{position:d,boundary:p,maxRadius:u}=h(_,g,a),m=(0,t.ensureReasonableResolution)(p.box,a);return e.Task.create("Molecular Surface",async v=>await y(v,d,p,u,p.box,m))}async function y(_,g,a,d,p,u){return(0,r.calcMolecularSurface)(_,g,a,d,p,u)}return fl}var qW;function Vue(){return qW||(qW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.MolecularSurfaceMeshParams=void 0,e.MolecularSurfaceMeshVisual=p,e.StructureMolecularSurfaceMeshVisual=m;const t=Ne(),r=mr(),n=Rt(),i=xZ(),c=em(),o=zi(),s=Er(),h=rt(),f=Bw(),y=Tt(),_=et(),g=Br(),a=Tf();e.MolecularSurfaceMeshParams={...r.UnitsMeshParams,...i.CommonMolecularSurfaceCalculationParams,...s.CommonSurfaceParams,...y.ColorSmoothingParams};async function d(v,b,P,C,l,S){const{transform:T,field:A,idField:x,resolution:M,maxRadius:D}=await(0,i.computeUnitMolecularSurface)(P,b,C.size,l).runInContext(v.runtime),V={isoLevel:l.probeRadius,scalarField:l.floodfill!=="off"?a.Tensor.createFloodfilled(A,l.probeRadius,l.floodfill):A,idField:x},R=await(0,c.computeMarchingCubesMesh)(V,S).runAsChild(v.runtime);if(l.includeParent){const I=Math.ceil(2/l.resolution);n.Mesh.smoothEdges(R,{iterations:I,maxNewEdgeLength:Math.sqrt(2)})}n.Mesh.transform(R,T),v.webgl&&!v.webgl.isWebGL2?(n.Mesh.uniformTriangleGroup(R),_.ValueCell.updateIfChanged(R.varyingGroup,!1)):_.ValueCell.updateIfChanged(R.varyingGroup,!0);const E=h.Sphere3D.expand((0,h.Sphere3D)(),b.boundary.sphere,D);return R.setBoundingSphere(E),R.meta.resolution=M,R}function p(v){return(0,r.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.MolecularSurfaceMeshParams),createGeometry:d,createLocationIterator:o.ElementIterator.fromGroup,getLoci:o.getElementLoci,eachLocation:o.eachElement,setUpdateState:(b,P,C)=>{b.createGeometry=P.resolution!==C.resolution||P.probeRadius!==C.probeRadius||P.probePositions!==C.probePositions||P.ignoreHydrogens!==C.ignoreHydrogens||P.ignoreHydrogensVariant!==C.ignoreHydrogensVariant||P.traceOnly!==C.traceOnly||P.includeParent!==C.includeParent||P.floodfill!==C.floodfill,P.smoothColors.name!==C.smoothColors.name?b.updateColor=!0:P.smoothColors.name==="on"&&C.smoothColors.name==="on"&&(P.smoothColors.params.resolutionFactor!==C.smoothColors.params.resolutionFactor&&(b.updateColor=!0),P.smoothColors.params.sampleStride!==C.smoothColors.params.sampleStride&&(b.updateColor=!0))},processValues:(b,P,C,l,S)=>{const{resolution:T,colorTexture:A}=P.meta,x=(0,y.getColorSmoothingProps)(C.smoothColors,l.color.preferSmoothing,T);x&&((0,f.applyMeshColorSmoothing)(b,x,S,A),P.meta.colorTexture=b.tColorGrid.ref.value)},dispose:b=>{var P;(P=b.meta.colorTexture)===null||P===void 0||P.destroy()}},v)}async function u(v,b,P,C,l){const{transform:S,field:T,idField:A,resolution:x,maxRadius:M}=await(0,i.computeStructureMolecularSurface)(b,P.size,C).runInContext(v.runtime),D={isoLevel:C.probeRadius,scalarField:C.floodfill!=="off"?a.Tensor.createFloodfilled(T,C.probeRadius,C.floodfill):T,idField:A},V=await(0,c.computeMarchingCubesMesh)(D,l).runAsChild(v.runtime);if(C.includeParent){const E=Math.ceil(2/C.resolution);n.Mesh.smoothEdges(V,{iterations:E,maxNewEdgeLength:Math.sqrt(2)})}n.Mesh.transform(V,S),v.webgl&&!v.webgl.isWebGL2?(n.Mesh.uniformTriangleGroup(V),_.ValueCell.updateIfChanged(V.varyingGroup,!1)):_.ValueCell.updateIfChanged(V.varyingGroup,!0);const R=h.Sphere3D.expand((0,h.Sphere3D)(),b.boundary.sphere,M);return V.setBoundingSphere(R),V.meta.resolution=x,V}function m(v){return(0,g.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.MolecularSurfaceMeshParams),createGeometry:u,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(b,P,C)=>{b.createGeometry=P.resolution!==C.resolution||P.probeRadius!==C.probeRadius||P.probePositions!==C.probePositions||P.ignoreHydrogens!==C.ignoreHydrogens||P.ignoreHydrogensVariant!==C.ignoreHydrogensVariant||P.traceOnly!==C.traceOnly||P.includeParent!==C.includeParent||P.floodfill!==C.floodfill,P.smoothColors.name!==C.smoothColors.name?b.updateColor=!0:P.smoothColors.name==="on"&&C.smoothColors.name==="on"&&(P.smoothColors.params.resolutionFactor!==C.smoothColors.params.resolutionFactor&&(b.updateColor=!0),P.smoothColors.params.sampleStride!==C.smoothColors.params.sampleStride&&(b.updateColor=!0))},processValues:(b,P,C,l,S)=>{const{resolution:T,colorTexture:A}=P.meta,x=(0,y.getColorSmoothingProps)(C.smoothColors,l.color.preferSmoothing,T);x&&((0,f.applyMeshColorSmoothing)(b,x,S,A),P.meta.colorTexture=b.tColorGrid.ref.value)},dispose:b=>{var P;(P=b.meta.colorTexture)===null||P===void 0||P.destroy()}},v)}})(WM)),WM}var XM={},UW;function Eue(){return UW||(UW=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.StructureMolecularSurfaceWireframeParams=e.MolecularSurfaceWireframeParams=void 0,e.MolecularSurfaceWireframeVisual=a,e.StructureMolecularSurfaceWireframeVisual=p;const t=Ne(),r=mr(),n=kn(),i=xZ(),c=em(),o=zi(),s=Er(),h=rt(),f=Tf(),y=Br(),_={...i.CommonMolecularSurfaceCalculationParams,...s.CommonSurfaceParams,sizeFactor:t.ParamDefinition.Numeric(1.5,{min:0,max:10,step:.1})};e.MolecularSurfaceWireframeParams={...r.UnitsLinesParams,..._},e.StructureMolecularSurfaceWireframeParams={...y.ComplexLinesParams,..._};async function g(u,m,v,b,P,C){const{transform:l,field:S,idField:T,maxRadius:A}=await(0,i.computeUnitMolecularSurface)(v,m,b.size,P).runInContext(u.runtime),x={isoLevel:P.probeRadius,scalarField:P.floodfill!=="off"?f.Tensor.createFloodfilled(S,P.probeRadius,P.floodfill):S,idField:T},M=await(0,c.computeMarchingCubesLines)(x,C).runAsChild(u.runtime);n.Lines.transform(M,l);const D=h.Sphere3D.expand((0,h.Sphere3D)(),m.boundary.sphere,A);return M.setBoundingSphere(D),M}function a(u){return(0,r.UnitsLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.MolecularSurfaceWireframeParams),createGeometry:g,createLocationIterator:o.ElementIterator.fromGroup,getLoci:o.getElementLoci,eachLocation:o.eachElement,setUpdateState:(m,v,b)=>{m.createGeometry=v.resolution!==b.resolution||v.probeRadius!==b.probeRadius||v.probePositions!==b.probePositions||v.ignoreHydrogens!==b.ignoreHydrogens||v.ignoreHydrogensVariant!==b.ignoreHydrogensVariant||v.includeParent!==b.includeParent||v.floodfill!==b.floodfill}},u)}async function d(u,m,v,b,P){const{transform:C,field:l,idField:S,maxRadius:T}=await(0,i.computeStructureMolecularSurface)(m,v.size,b).runInContext(u.runtime),A={isoLevel:b.probeRadius,scalarField:b.floodfill!=="off"?f.Tensor.createFloodfilled(l,b.probeRadius,b.floodfill):l,idField:S},x=await(0,c.computeMarchingCubesLines)(A,P).runAsChild(u.runtime);n.Lines.transform(x,C);const M=h.Sphere3D.expand((0,h.Sphere3D)(),m.boundary.sphere,T);return x.setBoundingSphere(M),x}function p(u){return(0,y.ComplexLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureMolecularSurfaceWireframeParams),createGeometry:d,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(m,v,b)=>{m.createGeometry=v.resolution!==b.resolution||v.probeRadius!==b.probeRadius||v.probePositions!==b.probePositions||v.ignoreHydrogens!==b.ignoreHydrogens||v.ignoreHydrogensVariant!==b.ignoreHydrogensVariant||v.includeParent!==b.includeParent||v.floodfill!==b.floodfill}},u)}})(XM)),XM}var jW;function Bue(){return jW||(jW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.MolecularSurfaceRepresentationProvider=e.MolecularSurfaceParams=void 0,e.getMolecularSurfaceParams=f,e.MolecularSurfaceRepresentation=y;const t=Vue(),r=Sa(),n=Ne(),i=Yr(),c=Lt(),o=Eue(),s=Tt(),h={"molecular-surface-mesh":(_,g)=>(0,r.UnitsRepresentation)("Molecular surface mesh",_,g,t.MolecularSurfaceMeshVisual),"structure-molecular-surface-mesh":(_,g)=>(0,i.ComplexRepresentation)("Structure Molecular surface mesh",_,g,t.StructureMolecularSurfaceMeshVisual),"molecular-surface-wireframe":(_,g)=>(0,r.UnitsRepresentation)("Molecular surface wireframe",_,g,o.MolecularSurfaceWireframeVisual),"structure-molecular-surface-wireframe":(_,g)=>(0,i.ComplexRepresentation)("Structure Molecular surface mesh",_,g,o.StructureMolecularSurfaceWireframeVisual)};e.MolecularSurfaceParams={...t.MolecularSurfaceMeshParams,...o.MolecularSurfaceWireframeParams,visuals:n.ParamDefinition.MultiSelect(["molecular-surface-mesh"],n.ParamDefinition.objectToOptions(h)),bumpFrequency:n.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},s.BaseGeometry.ShadingCategory),density:n.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},s.BaseGeometry.ShadingCategory)};function f(_,g){return e.MolecularSurfaceParams}function y(_,g){return c.Representation.createMulti("Molecular Surface",_,g,i.StructureRepresentationStateBuilder,h)}e.MolecularSurfaceRepresentationProvider=(0,i.StructureRepresentationProvider)({name:"molecular-surface",label:"Molecular Surface",description:"Displays a molecular surface.",factory:y,getParams:f,defaultValues:n.ParamDefinition.getDefaultValues(e.MolecularSurfaceParams),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"physical"},isApplicable:_=>_.elementCount>0})})(HM)),HM}var KM={},YM={},GW;function Rue(){return GW||(GW=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.OrientationEllipsoidMeshParams=void 0,e.OrientationEllipsoidMeshVisual=d,e.createOrientationEllipsoidMesh=u;const t=Ne(),r=mr(),n=Ke(),i=Rt(),c=$t(),o=Ge(),s=Ow(),h=rt(),f=at(),y=gt(),_=zt(),g=dt(),a=Tt();e.OrientationEllipsoidMeshParams={...r.UnitsMeshParams,sizeFactor:t.ParamDefinition.Numeric(1,{min:0,max:2,step:.1}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},a.BaseGeometry.CustomQualityParamInfo)};function d(P){return(0,r.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.OrientationEllipsoidMeshParams),createGeometry:u,createLocationIterator:m,getLoci:v,eachLocation:b,setUpdateState:(C,l,S)=>{C.createGeometry=l.sizeFactor!==S.sizeFactor||l.detail!==S.detail}},P)}function p(P){if(n.Unit.Traits.is(P.traits,n.Unit.Trait.MultiChain)||n.Unit.Traits.is(P.traits,n.Unit.Trait.Partitioned))return!1;if(n.Unit.isCoarse(P))return!0;if(P.elements.length===0)return!1;P.model.atomicHierarchy.derived.residue.moleculeType;const C=P.residueIndex[P.elements[0]],l=P.model.atomicHierarchy.derived.residue.moleculeType[C];return!(l===g.MoleculeType.Ion||l===g.MoleculeType.Water)}function u(P,C,l,S,T,A){if(!p(C))return i.Mesh.createEmpty(A);const{detail:x,sizeFactor:M}=T,D=256,V=c.MeshBuilder.createState(D,D/2,A),R=C.principalAxes.boxAxes,{origin:E,dirA:I,dirB:B}=R,w=h.Axes3D.size((0,o.Vec3)(),R);o.Vec3.scale(w,w,M/2);const O=o.Vec3.create(w[2],w[1],w[0]);V.currentGroup=0,(0,s.addEllipsoid)(V,E,I,B,O,x+1);const F=c.MeshBuilder.getMesh(V),L=h.Sphere3D.expand((0,h.Sphere3D)(),C.boundary.sphere,1*T.sizeFactor);return F.setBoundingSphere(L),F}function m(P){const{group:C,structure:l}=P,S=1,T=C.units.length,A=n.StructureElement.Location.create(l),x=(M,D)=>{const V=C.units[D];return A.unit=V,A.element=V.elements[M],A};return(0,_.LocationIterator)(S,T,1,x)}function v(P,C,l){const{objectId:S,instanceId:T}=P;if(l===S){const{structure:A,group:x}=C,M=x.units[T],D=f.OrderedSet.ofBounds(0,M.elements.length);return n.StructureElement.Loci(A,[{unit:M,indices:D}])}return y.EmptyLoci}function b(P,C,l){let S=!1;if(!n.StructureElement.Loci.is(P))return!1;const{structure:T,group:A}=C;if(!n.Structure.areEquivalent(P.structure,T))return!1;const x=A.elements.length;for(const M of P.elements){const D=A.unitIndexMap.get(M.unit.id);D!==void 0&&f.OrderedSet.size(M.indices)===x&&l(f.Interval.ofSingleton(D))&&(S=!0)}return S}})(YM)),YM}var zW;function Oue(){return zW||(zW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.OrientationRepresentationProvider=e.OrientationParams=void 0,e.getOrientationParams=h,e.OrientationRepresentation=f;const t=Sa(),r=Ne(),n=Yr(),i=Lt(),c=Rue(),o=Tt(),s={"orientation-ellipsoid-mesh":(y,_)=>(0,t.UnitsRepresentation)("Orientation ellipsoid mesh",y,_,c.OrientationEllipsoidMeshVisual)};e.OrientationParams={...c.OrientationEllipsoidMeshParams,visuals:r.ParamDefinition.MultiSelect(["orientation-ellipsoid-mesh"],r.ParamDefinition.objectToOptions(s)),bumpFrequency:r.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},o.BaseGeometry.ShadingCategory)};function h(y,_){return e.OrientationParams}function f(y,_){return i.Representation.createMulti("Orientation",y,_,n.StructureRepresentationStateBuilder,s)}e.OrientationRepresentationProvider=(0,n.StructureRepresentationProvider)({name:"orientation",label:"Orientation",description:"Displays orientation ellipsoids for polymer chains.",factory:f,getParams:h,defaultValues:r.ParamDefinition.getDefaultValues(e.OrientationParams),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uniform"},isApplicable:y=>y.elementCount>0})})(KM)),KM}var QM={},ZM={},S_={},HW;function AZ(){if(HW)return S_;HW=1,Object.defineProperty(S_,"__esModule",{value:!0}),S_.PointsBuilder=void 0;const e=_t(),t=ic(),r=e.ChunkedArray.add3,n=e.ChunkedArray.add;var i;return(function(c){function o(s=2048,h=1024,f){const y=e.ChunkedArray.create(Float32Array,3,h,f?f.centerBuffer.ref.value:s),_=e.ChunkedArray.create(Float32Array,1,h,f?f.groupBuffer.ref.value:s);return{add:(g,a,d,p)=>{r(y,g,a,d),n(_,p)},getPoints:()=>{const g=e.ChunkedArray.compact(y,!0),a=e.ChunkedArray.compact(_,!0);return t.Points.create(g,a,y.elementCount,f)}}}c.create=o})(i||(S_.PointsBuilder=i={})),S_}var WW;function MZ(){return WW||(WW=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.StructureElementPointParams=e.ElementPointParams=void 0,e.createElementPoint=y,e.ElementPointVisual=_,e.createStructureElementPoint=g,e.StructureElementPointVisual=a;const t=Ne(),r=mr(),n=ic(),i=AZ(),c=Ge(),o=zi(),s=rt(),h=Br(),f=c.Vec3.add;e.ElementPointParams={...r.UnitsPointsParams,pointSizeAttenuation:t.ParamDefinition.Boolean(!1),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:t.ParamDefinition.Boolean(!1),stride:t.ParamDefinition.Numeric(1,{min:1,max:100,step:1})};function y(d,p,u,m,v,b){const{child:P}=u,C=P?.unitMap.get(p.id);if(P&&!C)return n.Points.createEmpty(b);const{stride:l}=v,S=b?.hasBoundingSphere()?s.Sphere3D.clone(b.boundingSphere):void 0,T=p.elements,A=T.length,x=i.PointsBuilder.create(A,A/10,b),M=(0,c.Vec3)(),D=p.conformation,V=(0,o.makeElementIgnoreTest)(u,p,v),R=(0,c.Vec3)();let E=0;if(l&&l>1||V)for(let w=0;w<A;++w)l&&w%l!==0||V&&V(T[w])||(D.invariantPosition(T[w],M),f(R,R,M),E+=1,x.add(M[0],M[1],M[2],w));else for(let w=0;w<A;++w)D.invariantPosition(T[w],M),f(R,R,M),E+=1,x.add(M[0],M[1],M[2],w);const I=x.getPoints();if(E===0)return I;let B;return c.Vec3.scale(R,R,1/E),S&&c.Vec3.distance(R,S.center)/S.radius<.1?B=S:B=s.Sphere3D.expand((0,s.Sphere3D)(),(C??p).boundary.sphere,1*v.sizeFactor),I.setBoundingSphere(B),I}function _(d){return(0,r.UnitsPointsVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.ElementPointParams),createGeometry:y,createLocationIterator:o.ElementIterator.fromGroup,getLoci:o.getElementLoci,eachLocation:o.eachElement,setUpdateState:(p,u,m)=>{p.createGeometry=u.ignoreHydrogens!==m.ignoreHydrogens||u.ignoreHydrogensVariant!==m.ignoreHydrogensVariant||u.traceOnly!==m.traceOnly||u.stride!==m.stride}},d)}function g(d,p,u,m,v){const{child:b}=p,{stride:P}=m,C=v?.hasBoundingSphere()?s.Sphere3D.clone(v.boundingSphere):void 0,{getSerialIndex:l}=p.serialMapping,S=p.elementCount,T=i.PointsBuilder.create(S,S/2,v),A=(0,c.Vec3)();let x=0;for(const V of p.units){const R=b?.unitMap.get(V.id);if(b&&!R)return n.Points.createEmpty(v);const{elements:E,conformation:I}=V,B=E.length,w=(0,c.Vec3)(),O=(0,o.makeElementIgnoreTest)(p,V,m);if(P&&P>1||O)for(let F=0;F<B;F++){const L=E[F];P&&F%P!==0||O&&O(L)||(I.position(L,w),T.add(w[0],w[1],w[2],l(V,L)),f(A,A,w),x+=1)}else{for(let F=0;F<B;F++){const L=E[F];I.position(L,w),T.add(w[0],w[1],w[2],l(V,L)),f(A,A,w)}x+=B}}const M=T.getPoints();if(x===0)return M;let D;return c.Vec3.scale(A,A,1/x),C&&c.Vec3.distance(A,C.center)/C.radius<1?D=C:D=s.Sphere3D.expand((0,s.Sphere3D)(),(b??p).boundary.sphere,1*m.sizeFactor),M.setBoundingSphere(D),M}e.StructureElementPointParams={...h.ComplexPointsParams,pointSizeAttenuation:t.ParamDefinition.Boolean(!1),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:t.ParamDefinition.Boolean(!1),stride:t.ParamDefinition.Numeric(1,{min:1,max:100,step:1})};function a(d){return(0,h.ComplexPointsVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureElementPointParams),createGeometry:g,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(p,u,m)=>{p.createGeometry=u.ignoreHydrogens!==m.ignoreHydrogens||u.ignoreHydrogensVariant!==m.ignoreHydrogensVariant||u.traceOnly!==m.traceOnly||u.stride!==m.stride}},d)}})(ZM)),ZM}var $W;function kue(){return $W||($W=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PointRepresentationProvider=e.PointParams=void 0,e.getPointParams=h,e.PointRepresentation=f;const t=MZ(),r=Sa(),n=Ne(),i=Yr(),c=Lt(),o=Tt(),s={"element-point":(y,_)=>(0,r.UnitsRepresentation)("Element points",y,_,t.ElementPointVisual),"structure-element-point":(y,_)=>(0,i.ComplexRepresentation)("Structure element points",y,_,t.StructureElementPointVisual)};e.PointParams={...t.ElementPointParams,density:n.ParamDefinition.Numeric(.1,{min:0,max:1,step:.01},o.BaseGeometry.ShadingCategory),visuals:n.ParamDefinition.MultiSelect(["element-point"],n.ParamDefinition.objectToOptions(s))};function h(y,_){let g=e.PointParams;return _.unitSymmetryGroups.length>500&&(g=n.ParamDefinition.clone(g),g.visuals.defaultValue=["structure-element-point"]),g}function f(y,_){return c.Representation.createMulti("Point",y,_,i.StructureRepresentationStateBuilder,s)}e.PointRepresentationProvider=(0,i.StructureRepresentationProvider)({n
7637ame:"point",label:"Point",description:"Displays elements (atoms, coarse spheres) as points.",factory:f,getParams:h,defaultValues:n.ParamDefinition.getDefaultValues(e.PointParams),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:y=>y.elementCount>0})})(QM)),QM}var JM={},eD={},XW;function Fue(){return XW||(XW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PolymerTubeParams=e.DefaultPolymerTubeMeshProps=e.PolymerTubeMeshParams=void 0,e.PolymerTubeVisual=u;const t=Ne(),r=Rt(),n=$t(),i=io(),c=dt(),o=Gw(),s=mr(),h=CZ(),f=PZ(),y=Ge(),_=Jn(),g=Tt(),a=rt();e.PolymerTubeMeshParams={sizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},g.BaseGeometry.CustomQualityParamInfo),linearSegments:t.ParamDefinition.Numeric(8,{min:1,max:48,step:1},g.BaseGeometry.CustomQualityParamInfo),radialSegments:t.ParamDefinition.Numeric(16,{min:2,max:56,step:2},g.BaseGeometry.CustomQualityParamInfo)},e.DefaultPolymerTubeMeshProps=t.ParamDefinition.getDefaultValues(e.PolymerTubeMeshParams);const d=(0,y.Vec3)();function p(m,v,b,P,C,l){const S=v.polymerElements.length;if(!S)return r.Mesh.createEmpty(l);const{sizeFactor:T,detail:A,linearSegments:x,radialSegments:M}=C,D=x*M*S+(M+1)*S*2,V=n.MeshBuilder.createState(D,D/10,l),R=(0,i.createCurveSegmentState)(x),{curvePoints:E,normalVectors:I,binormalVectors:B,widthValues:w,heightValues:O}=R;let F=0;const L=(0,i.PolymerTraceIterator)(v,b,{ignoreSecondaryStructure:!0});for(;L.hasNext;){const N=L.move();V.currentGroup=F;const j=(0,c.isNucleic)(N.moleculeType)?i.NucleicShift:i.StandardShift;(0,i.interpolateCurveSegment)(R,N,i.StandardTension,j);const H=N.coarseBackboneFirst||N.first,G=N.coarseBackboneLast||N.last,z=P.size.size(N.centerPrev)*T,W=P.size.size(N.center)*T,X=P.size.size(N.centerNext)*T;(0,i.interpolateSizes)(R,z,W,X,z,W,X,j);let Y=x;if(N.initial){Y=Math.max(Math.round(x*j),1);const K=x-Y;E.copyWithin(0,K*3),B.copyWithin(0,K*3),I.copyWithin(0,K*3),w.copyWithin(0,K*3),O.copyWithin(0,K*3),y.Vec3.fromArray(d,E,3),y.Vec3.normalize(d,y.Vec3.sub(d,N.p2,d)),y.Vec3.scaleAndAdd(d,N.p2,d,W*i.OverhangFactor),y.Vec3.toArray(d,E,0)}else N.final&&(Y=Math.max(Math.round(x*(1-j)),1),y.Vec3.fromArray(d,E,Y*3-3),y.Vec3.normalize(d,y.Vec3.sub(d,N.p2,d)),y.Vec3.scaleAndAdd(d,N.p2,d,W*i.OverhangFactor),y.Vec3.toArray(d,E,Y*3));N.initial===!0&&N.final===!0?(0,_.addSphere)(V,N.p2,W*2,A):M===2?(0,f.addRibbon)(V,E,I,B,Y,w,O,0):M===4?(0,h.addSheet)(V,E,I,B,Y,w,O,0,H,G):(0,o.addTube)(V,E,I,B,Y,M,w,O,H,G,"elliptical"),++F}const U=n.MeshBuilder.getMesh(V),q=a.Sphere3D.expand((0,a.Sphere3D)(),v.boundary.sphere,1*C.sizeFactor);return U.setBoundingSphere(q),U}e.PolymerTubeParams={...s.UnitsMeshParams,...e.PolymerTubeMeshParams};function u(m){return(0,s.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerTubeParams),createGeometry:p,createLocationIterator:v=>i.PolymerLocationIterator.fromGroup(v,{asSecondary:!0}),getLoci:i.getPolymerElementLoci,eachLocation:i.eachPolymerElement,setUpdateState:(v,b,P)=>{v.createGeometry=b.sizeFactor!==P.sizeFactor||b.detail!==P.detail||b.linearSegments!==P.linearSegments||b.radialSegments!==P.radialSegments}},m)}})(eD)),eD}var KW;function Lue(){return KW||(KW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PuttyRepresentationProvider=e.PuttyParams=void 0,e.getPuttyParams=y,e.PuttyRepresentation=_;const t=Fue(),r=Yw(),n=Ne(),i=Sa(),c=Yr(),o=Lt(),s=Ke(),h=Tt(),f={"polymer-tube":(g,a)=>(0,i.UnitsRepresentation)("Polymer tube mesh",g,a,t.PolymerTubeVisual),"polymer-gap":(g,a)=>(0,i.UnitsRepresentation)("Polymer gap cylinder",g,a,r.PolymerGapVisual)};e.PuttyParams={...t.PolymerTubeParams,...r.PolymerGapParams,sizeFactor:n.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),visuals:n.ParamDefinition.MultiSelect(["polymer-tube","polymer-gap"],n.ParamDefinition.objectToOptions(f)),bumpFrequency:n.ParamDefinition.Numeric(2,{min:0,max:10,step:.1},h.BaseGeometry.ShadingCategory),density:n.ParamDefinition.Numeric(.1,{min:0,max:1,step:.01},h.BaseGeometry.ShadingCategory)};function y(g,a){const d=n.ParamDefinition.clone(e.PuttyParams);let p=!1,u=!1;
7637return a.units.forEach(m=>{!p&&s.Unit.isAtomic(m)&&m.nucleotideElements.length&&(p=!0),!u&&m.gapElements.length&&(u=!0)}),d.visuals.defaultValue=["polymer-tube"],u&&d.visuals.defaultValue.push("polymer-gap"),d}function _(g,a){return o.Representation.createMulti("Putty",g,a,c.StructureRepresentationStateBuilder,f)}e.PuttyRepresentationProvider=(0,c.StructureRepresentationProvider)({name:"putty",label:"Putty",description:"Displays a tube smoothly following the trace atoms of polymers.",factory:_,getParams:y,defaultValues:n.ParamDefinition.getDefaultValues(e.PuttyParams),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uncertainty"},isApplicable:g=>g.polymerResidueCount>0})})(JM)),JM}var tD={},YW;function Nue(){return YW||(YW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SpacefillRepresentationProvider=e.SpacefillParams=void 0,e.getSpacefillParams=f,e.SpacefillRepresentation=y;const t=_Z(),r=Sa(),n=Ne(),i=Yr(),c=Lt(),o=Tt(),s={"element-sphere":(_,g)=>(0,r.UnitsRepresentation)("Sphere mesh/impostor",_,g,t.ElementSphereVisual),"structure-element-sphere":(_,g)=>(0,i.ComplexRepresentation)("Structure sphere mesh/impostor",_,g,t.StructureElementSphereVisual)};e.SpacefillParams={...t.ElementSphereParams,bumpFrequency:n.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},o.BaseGeometry.ShadingCategory),density:n.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},o.BaseGeometry.ShadingCategory),visuals:n.ParamDefinition.MultiSelect(["element-sphere"],n.ParamDefinition.objectToOptions(s))};let h;function f(_,g){let a=e.SpacefillParams;return g.isCoarseGrained&&(h||(h=n.ParamDefinition.clone(e.SpacefillParams),h.sizeFactor.defaultValue=2),a=h),g.unitSymmetryGroups.length>500&&(a=n.ParamDefinition.clone(a),a.visuals.defaultValue=["structure-element-sphere"]),a}function y(_,g){return c.Representation.createMulti("Spacefill",_,g,i.StructureRepresentationStateBuilder,s)}e.SpacefillRepresentationProvider=(0,i.StructureRepresentationProvider)({name:"spacefill",label:"Spacefill",description:"Displays atomic/coarse elements as spheres.",factory:y,getParams:f,defaultValues:n.ParamDefinition.getDefaultValues(e.SpacefillParams),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"physical"},isApplicable:_=>_.elementCount>0})})(tD)),tD}var rD={},nD={},QW;function que(){return QW||(QW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureIntraUnitBondLineParams=e.IntraUnitBondLineParams=void 0,e.IntraUnitBondLineVisual=v,e.StructureIntraUnitBondLineVisual=C;const t=Ne(),r=Ke(),n=Ge(),i=et(),c=Ca(),o=mr(),s=dt(),h=rC(),f=rt(),y=kn(),_=is(),g=Vt(),a=Br(),d=zt(),p=s.BondType.is;function u(l,S,T,A){const x=r.StructureElement.Location.create(S,l),M=l.elements,D=l.bonds,{edgeCount:V,a:R,b:E,edgeProps:I,offset:B}=D,{order:w,flags:O}=I,{sizeFactor:F,aromaticBonds:L,includeTypes:U,excludeTypes:q,multipleBonds:N,metalCoordination:k}=A,j=N==="off",H=N==="symmetric",G=k==="dashed",z=s.BondType.fromNames(U),W=s.BondType.fromNames(q),X=(0,h.ignoreBondType)(z,W,s.BondType.Flag.Computed),Y=(0,n.Vec3)(),K=l.conformation,{elementRingIndices:Q,elementAromaticRingIndices:J}=l.rings,ae=L?l.resonance.delocalizedTriplets:void 0;return{linkCount:V*2,referencePosition:te=>{let ne=R[te],$=E[te];const ie=ae?.getThirdElement(ne,$);if(ie!==void 0)return K.invariantPosition(M[ie],Y);ne>$&&([ne,$]=[$,ne]),B[ne+1]-B[ne]===1&&([ne,$]=[$,ne]);const Z=J.get(ne)||Q.get(ne);let re=0;for(let oe=B[ne],ce=B[ne+1];oe<ce;++oe){const ue=E[oe];if(ue!==$&&ue!==ne)if(Z){const pe=J.get(ue)||Q.get(ue);if(!pe)continue;const he=(0,g.arrayIntersectionSize)(Z,pe);he>re&&(re=he,K.invariantPosition(M[ue],Y))}else return K.invariantPosition(M[ue],Y)}return re>0?Y:null},position:(te,ne,$,ie)=>{K.invariantPosition(M[R[$]],te),K.invariantPosition(M[E[$]],ne)},style:te=>{const ne=w[te],$=O[te];if(p($,s.BondType.Flag.MetallicCoordination))return G?c.LinkStyle.Dashed:c.LinkStyle.Solid;if(p($,s.BondType.Flag.HydrogenBond))return c.LinkStyle.Dashed;if(ne===3)return j?c.LinkStyle.Solid:H?c.LinkStyle.Triple:c.LinkStyle.OffsetTriple;if(L){const ie=R[te],Z=E[te],re=J.get(ie),oe=J.get(Z),ce=re&&oe?(0,g.arrayIntersectionSize)(re,oe):0;if(p($,s.BondType.Flag.Aromatic)||ce&&!X)return ce===2?c.LinkStyle.MirroredAromatic:c.LinkStyle.Aromatic}return ne!==2||j?c.LinkStyle.Solid:H?c.LinkStyle.Double:c.LinkStyle.OffsetDouble},radius:te=>{x.element=M[R[te]];const ne=T.size.size(x);x.element=M[E[te]];const $=T.size.size(x);return Math.min(ne,$)*F},ignore:(0,h.makeIntraBondIgnoreTest)(S,l,A)}}function m(l,S,T,A,x,M){if(!r.Unit.isAtomic(S)||!(0,h.hasUnitVisibleBonds)(S,x)||!S.bonds.edgeCount)return y.Lines.createEmpty(M);const{child:D}=T,V=D?.unitMap.get(S.id);if(D&&!V)return y.Lines.createEmpty(M);const R=u(S,T,A,x),{lines:E,boundingSphere:I}
7637=(0,c.createLinkLines)(l,R,x,M);if(I)E.setBoundingSphere(I);else if(E.lineCount>0){const B=f.Sphere3D.expand((0,f.Sphere3D)(),(V??S).boundary.sphere,1*x.sizeFactor);E.setBoundingSphere(B)}return E}e.IntraUnitBondLineParams={...o.UnitsLinesParams,...h.BondLineParams,includeParent:t.ParamDefinition.Boolean(!1)};function v(l){return(0,o.UnitsLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.IntraUnitBondLineParams),createGeometry:m,createLocationIterator:S=>h.BondIterator.fromGroup(S),getLoci:h.getIntraBondLoci,eachLocation:h.eachIntraBond,setUpdateState:(S,T,A,x,M,D,V)=>{S.createGeometry=T.sizeFactor!==A.sizeFactor||T.linkScale!==A.linkScale||T.linkSpacing!==A.linkSpacing||T.aromaticDashCount!==A.aromaticDashCount||T.dashCount!==A.dashCount||T.ignoreHydrogens!==A.ignoreHydrogens||T.ignoreHydrogensVariant!==A.ignoreHydrogensVariant||!(0,i.arrayEqual)(T.includeTypes,A.includeTypes)||!(0,i.arrayEqual)(T.excludeTypes,A.excludeTypes)||T.aromaticBonds!==A.aromaticBonds||T.multipleBonds!==A.multipleBonds||T.metalCoordination!==A.metalCoordination;const R=D.group.units[0],E=V.group.units[0];r.Unit.isAtomic(R)&&r.Unit.isAtomic(E)&&(_.IntAdjacencyGraph.areEqual(R.bonds,E.bonds)||(S.createGeometry=!0,S.updateTransform=!0,S.updateColor=!0,S.updateSize=!0))}},l)}function b(l,S,T){const A=[],{bondCount:x,unitIndex:M,unitEdgeIndex:D,unitGroupIndex:V}=l.intraUnitBondMapping,{child:R}=l;for(const E of l.unitSymmetryGroups){const I=E.units[0],B=R?.unitMap.get(I.id),w=r.Unit.isAtomic(I)&&!(R&&!B)?u(I,l,S,T):c.EmptyLinkBuilderProps;A.push({group:E,props:w})}return{linkCount:x,referencePosition:E=>{const{group:I,props:B}=A[M[E]];if(!B.referencePosition)return null;const w=B.referencePosition(D[E]);if(!w)return null;const O=I.units[V[E]];return n.Vec3.transformMat4(w,w,O.conformation.operator.matrix),w},position:(E,I,B,w)=>{const{group:O,props:F}=A[M[B]];F.position(E,I,D[B],w);const L=O.units[V[B]];n.Vec3.transformMat4(E,E,L.conformation.operator.matrix),n.Vec3.transformMat4(I,I,L.conformation.operator.matrix)},style:E=>{const{props:I}=A[M[E]];return I.style?I.style(D[E]):c.LinkStyle.Solid},radius:E=>{const{props:I}=A[M[E]];return I.radius(D[E])},ignore:E=>{const{props:I}=A[M[E]];return I.ignore?I.ignore(D[E]):!1},stub:E=>{const{props:I}=A[M[E]];return I.stub?I.stub(D[E]):!1}}}function P(l,S,T,A,x){if(!(0,h.hasStructureVisibleBonds)(S,A)||!S.intraUnitBondMapping.bondCount)return y.Lines.createEmpty(x);const M=b(S,T,A),{lines:D,boundingSphere:V}=(0,c.createLinkLines)(l,M,A,x);if(V)D.setBoundingSphere(V);else if(D.lineCount>0){const{child:R}=S,E=f.Sphere3D.expand((0,f.Sphere3D)(),(R??S).boundary.sphere,1*A.sizeFactor);D.setBoundingSphere(E)}return D}e.StructureIntraUnitBondLineParams={...a.ComplexLinesParams,...h.BondLineParams,includeParent:t.ParamDefinition.Boolean(!1)};function C(l){return(0,a.ComplexLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureIntraUnitBondLineParams),createGeometry:P,createLocationIterator:(S,T)=>(0,h.hasStructureVisibleBonds)(S,T)?h.BondIterator.fromStructureGroups(S):d.EmptyLocationIterator,getLoci:h.getStructureGroupsBondLoci,eachLocation:h.eachStructureGroupsBond,setUpdateState:(S,T,A,x,M,D,V)=>{S.createGeometry=T.sizeFactor!==A.sizeFactor||T.linkScale!==A.linkScale||T.linkSpacing!==A.linkSpacing||T.aromaticDashCount!==A.aromaticDashCount||T.dashCount!==A.dashCount||T.ignoreHydrogens!==A.ignoreHydrogens||T.ignoreHydrogensVariant!==A.ignoreHydrogensVariant||!(0,i.arrayEqual)(T.includeTypes,A.includeTypes)||!(0,i.arrayEqual)(T.excludeTypes,A.excludeTypes)||T.multipleBonds!==A.multipleBonds||T.metalCoordination!==A.metalCoordination,(0,h.hasStructureVisibleBonds)(D,T)&&D.interUnitBonds!==V.interUnitBonds&&(S.createGeometry=!0,S.updateTransform=!0,S.updateColor=!0,S.updateSize=!0)}},l)}})(nD)),nD}var iD={},ZW;function Uue(){return ZW||(ZW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InterUnitBondLineParams=void 0,e.getInterUnitBondLineBuilderProps=d,e.InterUnitBondLineVisual=u;const t=Ne(),r=Ke(),n=Ge(),i=et(),c=Ca(),o=Br(),s=dt(),h=rC(),f=kn(),y=rt(),_=zt(),g=new r.Bond.ElementBondIterator;function a(m,v,b,P){for(g.setElement(v,b,P);g.hasNext;){const C=g.move();return C.otherUnit.conformation.position(C.otherUnit.elements[C.otherIndex],m),m}return null}function d(m,v,b){const P=m.interUnitBonds,{edgeCount:C,edges:l}=P,{sizeFactor:S,aromaticBonds:T,multipleBonds:A,metalCoordination:x}=b,M=A==="off",D=A==="symmetric",V=x==="dashed",R=(0,n.Vec3)(),E=r.StructureElement.Location.create();return{linkCount:C,referencePosition:I=>{const B=l[I];let w,O,F,L;if(B.unitA<B.unitB)w=m.unitMap.get(B.unitA),O=m.unitMap.get(B.unitB),F=B.indexA,L=B.indexB;else if(B.unitA>B.unitB)w=m.unitMap.get(B.unitB),O=m.unitMap.get(B.unitA),F=B.indexB,L=B.indexA;else throw new Error("same units in createInterUnitBondLines");return a(R,m,w,F)||a(R,m,O,L)},position:(I,B,w,O)=>{const F=l[w],L=m.unitMap.get(F.unitA),U=m.unitMap.get(F.unitB);L.conformation.position(L.elements[F.indexA],I),U.conformation.position(U.elements[F.indexB],B)},style:I=>{const B=l[I].props.order,w=i.BitFlags.create(l[I].props.flag);return s.BondType.is(w,s.BondType.Flag.MetallicCoordination)?V?c.LinkStyle.Dashed:c.LinkStyle.Solid:s.BondType.is(w,s.BondType.Flag.HydrogenBond)?c.LinkStyle.Dashed:B===3?M?c.LinkStyle.Solid:D?c.LinkStyle.Triple:c.LinkStyle.OffsetTriple:T&&s.BondType.is(w,s.BondType.Flag.Aromatic)?c.LinkStyle.Aromatic:B!==2||M?c.LinkStyle.Solid:D?c.LinkStyle.Double:c.LinkStyle.OffsetDouble},radius:I=>{const B=l[I];E.structure=m,E.unit=m.unitMap.get(B.unitA),E.element=E.unit.elements[B.indexA];const w=v.size.size(E);E.unit=m.unitMap.get(B.unitB),E.element=E.unit.elements[B.indexB];const O=v.size.size(E);return Math.min(w,O)*S},ignore:(0,h.makeInterBondIgnoreTest)(m,b)}}function p(m,v,b,P,C){if(!(0,h.hasStructureVisibleBonds)(v,P)||!v.interUnitBonds.edgeCount)return f.Lines.createEmpty(C);const l=d(v,b,P),{lines:S,boundingSphere:T}
7637=(0,c.createLinkLines)(m,l,P,C);if(T)S.setBoundingSphere(T);else if(S.lineCount>0){const{child:A}=v,x=y.Sphere3D.expand((0,y.Sphere3D)(),(A??v).boundary.sphere,1*P.sizeFactor);S.setBoundingSphere(x)}return S}e.InterUnitBondLineParams={...o.ComplexLinesParams,...h.BondLineParams,includeParent:t.ParamDefinition.Boolean(!1)};function u(m){return(0,o.ComplexLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.InterUnitBondLineParams),createGeometry:p,createLocationIterator:(v,b)=>(0,h.hasStructureVisibleBonds)(v,b)?h.BondIterator.fromStructure(v):_.EmptyLocationIterator,getLoci:h.getInterBondLoci,eachLocation:h.eachInterBond,setUpdateState:(v,b,P,C,l,S,T)=>{v.createGeometry=b.sizeFactor!==P.sizeFactor||b.linkScale!==P.linkScale||b.linkSpacing!==P.linkSpacing||b.aromaticDashCount!==P.aromaticDashCount||b.dashCount!==P.dashCount||b.ignoreHydrogens!==P.ignoreHydrogens||b.ignoreHydrogensVariant!==P.ignoreHydrogensVariant||!(0,i.arrayEqual)(b.includeTypes,P.includeTypes)||!(0,i.arrayEqual)(b.excludeTypes,P.excludeTypes)||b.multipleBonds!==P.multipleBonds||b.metalCoordination!==P.metalCoordination,(0,h.hasStructureVisibleBonds)(S,b)&&S.interUnitBonds!==T.interUnitBonds&&(v.createGeometry=!0,v.updateTransform=!0,v.updateColor=!0,v.updateSize=!0)}},m)}})(iD)),iD}var aD={},JW;function jue(){return JW||(JW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureElementCrossParams=e.ElementCrossParams=void 0,e.createElementCross=m,e.ElementCrossVisual=v,e.createStructureElementCross=b,e.StructureElementCrossVisual=P;const t=Ne(),r=mr(),n=Ke(),i=Ge(),c=zi(),o=rt(),s=kn(),h=ac(),f=ra(),y=rC(),_=Br(),g=i.Vec3.add,a=i.Vec3.scaleAndAdd,d=i.Vec3.unitX,p=i.Vec3.unitY,u=i.Vec3.unitZ;e.ElementCrossParams={...r.UnitsLinesParams,lineSizeAttenuation:t.ParamDefinition.Boolean(!1),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:t.ParamDefinition.Boolean(!1),crosses:t.ParamDefinition.Select("lone",t.ParamDefinition.arrayToOptions(["lone","all"])),crossSize:t.ParamDefinition.Numeric(.35,{min:0,max:2,step:.01})};function m(C,l,S,T,A,x){const{child:M}=S;if(M&&!M.unitMap.get(l.id))return s.Lines.createEmpty(x);const D=x?.hasBoundingSphere()?o.Sphere3D.clone(x.boundingSphere):void 0,V=l.elements,R=V.length,E=h.LinesBuilder.create(R,R/10,x),I=(0,i.Vec3)(),B=(0,i.Vec3)(),w=(0,i.Vec3)(),O=l.conformation,F=(0,c.makeElementIgnoreTest)(S,l,A),L=A.crossSize/2,U=A.crosses==="lone",q=(0,i.Vec3)();let N=0;for(let H=0;H<R;++H)F&&F(V[H])||U&&n.Unit.isAtomic(l)&&(0,y.hasUnitVisibleBonds)(l,A)&&(0,f.bondCount)(S,l,H)!==0||(O.invariantPosition(V[H],I),g(q,q,I),N+=1,a(B,I,d,L),a(w,I,d,-L),E.add(B[0],B[1],B[2],w[0],w[1],w[2],H),a(B,I,p,L),a(w,I,p,-L),E.add(B[0],B[1],B[2],w[0],w[1],w[2],H),a(B,I,u,L),a(w,I,u,-L),E.add(B[0],B[1],B[2],w[0],w[1],w[2],H));const k=E.getLines();if(N===0)return k;let j;return i.Vec3.scale(q,q,1/N),D&&i.Vec3.distance(q,D.center)/D.radius<.1?j=D:j=o.Sphere3D.expand((0,o.Sphere3D)(),l.boundary.sphere,1*A.sizeFactor),k.setBoundingSphere(j),k}function v(C){return(0,r.UnitsLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.ElementCrossParams),createGeometry:m,createLocationIterator:c.ElementIterator.fromGroup,getLoci:c.getElementLoci,eachLocation:c.eachElement,setUpdateState:(l,S,T)=>{l.createGeometry=S.ignoreHydrogens!==T.ignoreHydrogens||S.ignoreHydrogensVariant!==T.ignoreHydrogensVariant||S.traceOnly!==T.traceOnly||S.crosses!==T.crosses||S.crossSize!==T.crossSize}},C)}function b(C,l,S,T,A){const{child:x}=l,M=A?.hasBoundingSphere()?o.Sphere3D.clone(A.boundingSphere):void 0,{getSerialIndex:D}=l.serialMapping,V=l.elementCount,R=h.LinesBuilder.create(V,V/2,A),E=(0,i.Vec3)(),I=(0,i.Vec3)(),B=(0,i.Vec3)(),w=T.crossSize/2,O=T.crosses==="lone",F=(0,i.Vec3)();let L=0;for(const N of l.units){const k=x?.unitMap.get(N.id);if(x&&!k)return s.Lines.createEmpty(A);const{elements:j,conformation:H}=N,G=j.length,z=(0,c.makeElementIgnoreTest)(l,N,T);for(let W=0;W<G;W++){if(z&&z(j[W])||O&&n.Unit.isAtomic(N)&&(0,y.hasUnitVisibleBonds)(N,T)&&(0,f.bondCount)(l,N,W)!==0)continue;H.position(j[W],E),g(F,F,E),L+=1;const X=D(N,j[W]);a(I,E,d,w),a(B,E,d,-w),R.add(I[0],I[1],I[2],B[0],B[1],B[2],X),a(I,E,p,w),a(B,E,p,-w),R.add(I[0],I[1],I[2],B[0],B[1],B[2],X),a(I,E,u,w),a(B,E,u,-w),R.add(I[0],I[1],I[2],B[0],B[1],B[2],X)}}const U=R.getLines();if(L===0)return U;let q;return i.Vec3.scale(F,F,1/L),M&&i.Vec3.distance(F,M.center)/M.radius<1?q=M:q=o.Sphere3D.expand((0,o.Sphere3D)(),(x??l).boundary.sphere,1*T.sizeFactor),U.setBoundingSphere(q),U}e.StructureElementCrossParams={..._.ComplexLinesParams,lineSizeAttenuation:t.ParamDefinition.Boolean(!1),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:t.ParamDefinition.Boolean(!1),crosses:t.ParamDefinition.Select("lone",t.ParamDefinition.arrayToOptions(["lone","all"])),crossSize:t.ParamDefinition.Numeric(.35,{min:0,max:2,step:.01})};function P(C){return(0,_.ComplexLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureElementCrossParams),createGeometry:b,createLocationIterator:c.ElementIterator.fromStructure,getLoci:c.getSerialElementLoci,eachLocation:c.eachSerialElement,setUpdateState:(l,S,T)=>{l.createGeometry=S.ignoreHydrogens!==T.ignoreHydrogens||S.ignoreHydrogensVariant!==T.ignoreHydrogensVariant||S.traceOnly!==T.traceOnly||S.crosses!==T.crosses||S.crossSize!==T.crossSize}},C)}})(aD)),aD}var e$;function Gue(){return e$||(e$=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.LineRepresentationProvider=e.LineParams=void 0,e.getLineParams=p,e.LineRepresentation=u;const t=que(),r=Uue(),n=Ne(),i=Sa(),c=JS(),o=Yr(),s=Lt(),h=Ke(),f=Qf(),y=MZ(),_=jue(),g=ic(),a=Tt(),d={"intra-bond":(m,v)=>(0,i.UnitsRepresentation)("Intra-unit bond line",m,v,t.IntraUnitBondLineVisual),"inter-bond":(m,v)=>(0,c.ComplexRepresentation)("Inter-unit bond line",m,v,r.InterUnitBondLineVisual),"element-point":(m,v)=>(0,i.UnitsRepresentation)("Points",m,v,y.ElementPointVisual),"element-cross":(m,v)=>(0,i.UnitsRepresentation)("Crosses",m,v,_.ElementCrossVisual),"structure-intra-bond":(m,v)=>(0,c.ComplexRepresentation)("Structure intra-unit bond line",m,v,t.StructureIntraUnitBondLineVisual),"structure-element-point":(m,v)=>(0,c.ComplexRepresentation)("Structure element points",m,v,y.StructureElementPointVisual),"structure-element-cross":(m,v)=>(0,c.ComplexRepresentation)("Structure element crosses",m,v,_.StructureElementCrossVisual)};e.LineParams={...t.IntraUnitBondLineParams,...r.InterUnitBondLineParams,...y.ElementPointParams,..._.ElementCrossParams,pointStyle:n.ParamDefinition.Select("circle",n.ParamDefinition.objectToOptions(g.Points.StyleTypes)),multipleBonds:n.ParamDefinition.Select("offset",n.ParamDefinition.arrayToOptions(["off","symmetric","offset"])),includeParent:n.ParamDefinition.Boolean(!1),sizeFactor:n.ParamDefinition.Numeric(2,{min:.01,max:10,step:.01}),unitKinds:(0,f.getUnitKindsParam)(["atomic"]),visuals:n.ParamDefinition.MultiSelect(["intra-bond","inter-bond","element-point","element-cross"],n.ParamDefinition.objectToOptions(d)),density:n.ParamDefinition.Numeric(.1,{min:0,max:1,step:.01},a.BaseGeometry.ShadingCategory)};function p(m,v){let b=e.LineParams;return h.Structure.getSize(v)>=h.Structure.Size.Huge?(b=n.ParamDefinition.clone(b),b.visuals.defaultValue=["intra-bond","element-point","element-cross"]):v.unitSymmetryGroups.length>500&&(b=n.ParamDefinition.clone(b),b.visuals.defaultValue=["structure-intra-bond","structure-element-point","structure-element-cross"]),b}function u(m,v){return s.Representation.createMulti("Line",m,v,o.StructureRepresentationStateBuilder,d)}e.LineRepresentationProvider=(0,o.StructureRepresentationProvider)({name:"line",label:"Line",description:"Displays bonds as lines and atoms as points or croses.",factory:u,getParams:p,defaultValues:n.ParamDefinition.getDefaultValues(e.LineParams),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:m=>m.elementCount>0,getData:(m,v)=>v.includeParent?m.asParent():m,mustRecreate:(m,v)=>m.includeParent!==v.includeParent})})(rD)),rD}var oD={},sD={},t$;function zue(){return t$||(t$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.UnitsGaussianDensityVolumeParams=e.GaussianDensityVolumeParams=void 0,e.GaussianDensityVolumeVisual=y,e.UnitsGaussianDensityVolumeVisual=g;const t=Ne(),r=Qw(),n=Hf(),i=Br(),c=Ge(),o=zi(),s=rt(),h=mr();function f(a,d,p,u,m){const{webgl:v}=a;if(!v)throw new Error("GaussianDensityVolume requires `webgl`");const b=c.Vec3.create(0,1,2),P={min:0,max:1,mean:.04,sigma:.01},C=S=>{const T=S?S.gridTexture.ref.value:void 0,A=(0,r.computeStructureGaussianDensityTexture)(d,p.size,u,v,T),{transform:x,texture:M,bbox:D,gridDim:V}=A,R=c.Mat4.mul((0,c.Mat4)(),x,c.Mat4.fromScaling((0,c.Mat4)(),V)),E=c.Mat4.getScaling((0,c.Vec3)(),x),I=n.DirectVolume.create(D,V,x,R,E,M,P,!0,b,"byte",S),B=s.Sphere3D.expand((0,s.Sphere3D)(),d.boundary.sphere,A.maxRadius);return I.setBoundingSphere(B),I},l=C(m);return l.meta.reset=()=>{C(l)},l}e.GaussianDensityVolumeParams={...i.ComplexDirectVolumeParams,...r.GaussianDensityParams,ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),includeParent:t.ParamDefinition.Boolean(!1,{isHidden:!0})};function y(a){return(0,i.ComplexDirectVolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.GaussianDensityVolumeParams),createGeometry:f,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(d,p,u)=>{p.resolution!==u.resolution&&(d.createGeometry=!0),p.radiusOffset!==u.radiusOffset&&(d.createGeometry=!0),p.smoothness!==u.smoothness&&(d.createGeometry=!0),p.ignoreHydrogens!==u.ignoreHydrogens&&(d.createGeometry=!0),p.ignoreHydrogensVariant!==u.ignoreHydrogensVariant&&(d.createGeometry=!0),p.traceOnly!==u.traceOnly&&(d.createGeometry=!0),p.includeParent!==u.includeParent&&(d.createGeometry=!0)},dispose:d=>{d.gridTexture.ref.value.destroy()}},a)}function _(a,d,p,u,m,v){const{webgl:b}=a;if(!b)throw new Error("GaussianDensityVolume requires `webgl`");const P=c.Vec3.create(0,1,2),C={min:0,max:1,mean:.04,sigma:.01},l=T=>{const A=T?T.gridTexture.ref.value:void 0,x=(0,r.computeUnitGaussianDensityTexture)(p,d,u.size,m,b,A),{transform:M,texture:D,bbox:V,gridDim:R}=x,E=c.Mat4.mul((0,c.Mat4)(),M,c.Mat4.fromScaling((0,c.Mat4)(),R)),I=c.Mat4.getScaling((0,c.Vec3)(),M),B=n.DirectVolume.create(V,R,M,E,I,D,C,!0,P,"byte",T),w=s.Sphere3D.expand((0,s.Sphere3D)(),d.boundary.sphere,x.maxRadius);return B.setBoundingSphere(w),B},S=l(v);return S.meta.reset=()=>{l(S)},S}e.UnitsGaussianDensityVolumeParams={...h.UnitsDirectVolumeParams,...r.GaussianDensityParams,ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),includeParent:t.ParamDefinition.Boolean(!1,{isHidden:!0})};
7637function g(a){return(0,h.UnitsDirectVolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.UnitsGaussianDensityVolumeParams),createGeometry:_,createLocationIterator:o.ElementIterator.fromGroup,getLoci:o.getElementLoci,eachLocation:o.eachElement,setUpdateState:(d,p,u)=>{p.resolution!==u.resolution&&(d.createGeometry=!0),p.radiusOffset!==u.radiusOffset&&(d.createGeometry=!0),p.smoothness!==u.smoothness&&(d.createGeometry=!0),p.ignoreHydrogens!==u.ignoreHydrogens&&(d.createGeometry=!0),p.ignoreHydrogensVariant!==u.ignoreHydrogensVariant&&(d.createGeometry=!0),p.traceOnly!==u.traceOnly&&(d.createGeometry=!0),p.includeParent!==u.includeParent&&(d.createGeometry=!0)},dispose:d=>{d.gridTexture.ref.value.destroy()}},a)}})(sD)),sD}var r$;function Hue(){return r$||(r$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.GaussianVolumeRepresentationProvider=e.GaussianVolumeParams=void 0,e.getGaussianVolumeParams=o,e.GaussianVolumeRepresentation=s;const t=Ne(),r=zue(),n=Yr(),i=Lt(),c={"gaussian-volume":(h,f)=>(0,n.ComplexRepresentation)("Gaussian volume",h,f,r.GaussianDensityVolumeVisual),"units-gaussian-volume":(h,f)=>(0,n.UnitsRepresentation)("Units-Gaussian volume",h,f,r.UnitsGaussianDensityVolumeVisual)};e.GaussianVolumeParams={...r.GaussianDensityVolumeParams,jumpLength:t.ParamDefinition.Numeric(4,{min:0,max:20,step:.1}),visuals:t.ParamDefinition.MultiSelect(["gaussian-volume"],t.ParamDefinition.objectToOptions(c))};function o(h,f){return e.GaussianVolumeParams}function s(h,f){return i.Representation.createMulti("Gaussian Volume",h,f,n.StructureRepresentationStateBuilder,c)}e.GaussianVolumeRepresentationProvider=(0,n.StructureRepresentationProvider)({name:"gaussian-volume",label:"Gaussian Volume",description:"Displays a gaussian molecular density using direct volume rendering.",factory:s,getParams:o,defaultValues:t.ParamDefinition.getDefaultValues(e.GaussianVolumeParams),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"physical"},isApplicable:h=>h.elementCount>0})})(oD)),oD}var cD={},uD={},n$;function Wue(){return n$||(n$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PolymerBackboneCylinderParams=void 0,e.PolymerBackboneCylinderVisual=b,e.PolymerBackboneCylinderImpostorVisual=C,e.PolymerBackboneCylinderMeshVisual=S;const t=Ne(),r=Ke(),n=Rt(),i=$t(),c=Ge(),o=io(),s=ba(),h=mr(),f=Tt(),y=rt(),_=dt(),g=no(),a=qw(),d=Kw(),p=Er(),u=c.Vec3.scale,m=c.Vec3.add,v=c.Vec3.sub;e.PolymerBackboneCylinderParams={...h.UnitsMeshParams,...h.UnitsCylindersParams,sizeFactor:t.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),radialSegments:t.ParamDefinition.Numeric(16,{min:2,max:56,step:2},f.BaseGeometry.CustomQualityParamInfo),tryUseImpostor:t.ParamDefinition.Boolean(!0)};function b(T,A,x,M){return x.tryUseImpostor&&(0,p.checkCylinderImpostorSupport)(M)?C(T):S(T)}function P(T,A,x,M,D,V){const R=A.polymerElements.length;if(!R)return g.Cylinders.createEmpty(V);const E=R*2,I=a.CylindersBuilder.create(E,E/4,V),B=A.conformation,w=(0,c.Vec3)(),O=(0,c.Vec3)(),F=(0,c.Vec3)(),L=function(N,k,j,H,G){B.invariantPosition(N,w),B.invariantPosition(k,O);const W=(0,_.isNucleic)(G)?o.NucleicShift:o.StandardShift;m(F,w,u(F,v(F,O,w),W)),I.add(w[0],w[1],w[2],F[0],F[1],F[2],1,!1,!1,2,j),I.add(F[0],F[1],F[2],O[0],O[1],O[2],1,!1,!1,2,H)};(0,d.eachPolymerBackboneLink)(A,L);const U=I.getCylinders(),q=y.Sphere3D.expand((0,y.Sphere3D)(),A.boundary.sphere,1*D.sizeFactor);return U.setBoundingSphere(q),U}function C(T){return(0,h.UnitsCylindersVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerBackboneCylinderParams),createGeometry:P,createLocationIterator:A=>o.PolymerLocationIterator.fromGroup(A),getLoci:o.getPolymerElementLoci,eachLocation:o.eachPolymerElement,setUpdateState:(A,x,M)=>{},mustRecreate:(A,x,M)=>!x.tryUseImpostor||!M},T)}function l(T,A,x,M,D,V){const R=A.polymerElements.length;if(!R)return n.Mesh.createEmpty(V);const{radialSegments:E,sizeFactor:I}=D,B=E*2*R*2,w=i.MeshBuilder.createState(B,B/10,V),O=A.conformation,F=(0,c.Vec3)(),L=(0,c.Vec3)(),U={radiusTop:1,radiusBottom:1,radialSegments:E},q=r.StructureElement.Location.create(x,A),N=r.StructureElement.Location.create(x,A),k=function(G,z,W,X,Y){q.element=G,N.element=z,O.invariantPosition(q.element,F),O.invariantPosition(N.element,L);const Q=(0,_.isNucleic)(Y)?o.NucleicShift:o.StandardShift;U.radiusTop=U.radiusBottom=M.size.size(q)*I,w.currentGroup=W,(0,s.addCylinder)(w,F,L,Q,U),U.radiusTop=U.radiusBottom=M.size.size(N)*I,w.currentGroup=X,(0,s.addCylinder)(w,L,F,1-Q,U)};(0,d.eachPolymerBackboneLink)(A,k);const j=i.MeshBuilder.getMesh(w),H=y.Sphere3D.expand((0,y.Sphere3D)(),A.boundary.sphere,1*D.sizeFactor);return j.setBoundingSphere(H),j}function S(T){return(0,h.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerBackboneCylinderParams),createGeometry:l,createLocationIterator:A=>o.PolymerLocationIterator.fromGroup(A),getLoci:o.getPolymerElementLoci,eachLocation:o.eachPolymerElement,setUpdateState:(A,x,M)=>{A.createGeometry=x.sizeFactor!==M.sizeFactor||x.radialSegments!==M.radialSegments},mustRecreate:(A,x,M)=>x.tryUseImpostor&&!!M},T)}})(uD)),uD}var lD={},i$;function $ue(){return i$||(i$=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.PolymerBackboneSphereParams=void 0,e.PolymerBackboneSphereVisual=u,e.PolymerBackboneSphereImpostorVisual=v,e.PolymerBackboneSphereMeshVisual=P;const t=Ne(),r=Ke(),n=Rt(),i=$t(),c=Ge(),o=io(),s=mr(),h=Tt(),f=rt(),y=Jn(),_=Xf(),g=ro(),a=P2(),d=Kw(),p=Er();e.PolymerBackboneSphereParams={...s.UnitsMeshParams,...s.UnitsSpheresParams,sizeFactor:t.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},h.BaseGeometry.CustomQualityParamInfo),tryUseImpostor:t.ParamDefinition.Boolean(!0)};function u(C,l,S,T){return S.tryUseImpostor&&(0,p.checkSphereImpostorSupport)(T)?v(C):P(C)}function m(C,l,S,T,A,x){const M=l.polymerElements.length;if(!M)return g.Spheres.createEmpty(x);const D=a.SpheresBuilder.create(M,M/2,x),V=l.conformation,R=(0,c.Vec3)(),E=(w,O)=>{V.invariantPosition(w,R),D.add(R[0],R[1],R[2],O)};(0,d.eachPolymerBackboneElement)(l,E);const I=D.getSpheres(),B=f.Sphere3D.expand((0,f.Sphere3D)(),l.boundary.sphere,1*A.sizeFactor);return I.setBoundingSphere(B),I}function v(C){return(0,s.UnitsSpheresVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerBackboneSphereParams),createGeometry:m,createLocationIterator:l=>o.PolymerLocationIterator.fromGroup(l),getLoci:o.getPolymerElementLoci,eachLocation:o.eachPolymerElement,setUpdateState:(l,S,T)=>{},mustRecreate:(l,S,T)=>!S.tryUseImpostor||!T},C)}function b(C,l,S,T,A,x){const M=l.polymerElements.length;if(!M)return n.Mesh.createEmpty(x);const{detail:D,sizeFactor:V}=A,R=M*(0,_.sphereVertexCount)(D),E=i.MeshBuilder.createState(R,R/2,x),I=l.conformation,B=(0,c.Vec3)(),w=r.StructureElement.Location.create(S,l),O=(U,q)=>{w.element=U,I.invariantPosition(w.element,B),E.currentGroup=q,(0,y.addSphere)(E,B,T.size.size(w)*V,D)};(0,d.eachPolymerBackboneElement)(l,O);const F=i.MeshBuilder.getMesh(E),L=f.Sphere3D.expand((0,f.Sphere3D)(),l.boundary.sphere,1*A.sizeFactor);return F.setBoundingSphere(L),F}function P(C){return(0,s.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerBackboneSphereParams),createGeometry:b,createLocationIterator:l=>o.PolymerLocationIterator.fromGroup(l),getLoci:o.getPolymerElementLoci,eachLocation:o.eachPolymerElement,setUpdateState:(l,S,T)=>{l.createGeometry=S.sizeFactor!==T.sizeFactor||S.detail!==T.detail},mustRecreate:(l,S,T)=>S.tryUseImpostor&&!!T},C)}})(lD)),lD}var a$;function Xue(){return a$||(a$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BackboneRepresentationProvider=e.BackboneParams=void 0,e.getBackboneParams=y,e.BackboneRepresentation=_;const t=Wue(),r=Ne(),n=Sa(),i=Yr(),c=Lt(),o=$ue(),s=Yw(),h=Tt(),f={"polymer-backbone-cylinder":(g,a)=>(0,n.UnitsRepresentation)("Polymer backbone cylinder",g,a,t.PolymerBackboneCylinderVisual),"polymer-backbone-sphere":(g,a)=>(0,n.UnitsRepresentation)("Polymer backbone sphere",g,a,o.PolymerBackboneSphereVisual),"polymer-gap":(g,a)=>(0,n.UnitsRepresentation)("Polymer gap cylinder",g,a,s.PolymerGapVisual)};e.BackboneParams={...o.PolymerBackboneSphereParams,...t.PolymerBackboneCylinderParams,...s.PolymerGapParams,sizeAspectRatio:r.ParamDefinition.Numeric(1,{min:.1,max:3,step:.1}),visuals:r.ParamDefinition.MultiSelect(["polymer-backbone-cylinder","polymer-backbone-sphere","polymer-gap"],r.ParamDefinition.objectToOptions(f)),bumpFrequency:r.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},h.BaseGeometry.ShadingCategory),density:r.ParamDefinition.Numeric(.1,{min:0,max:1,step:.01},h.BaseGeometry.ShadingCategory),colorMode:r.ParamDefinition.Select("default",r.ParamDefinition.arrayToOptions(["default","interpolate"]),{...h.BaseGeometry.ShadingCategory,isHidden:!0})};function y(g,a){const d=r.ParamDefinition.clone(e.BackboneParams);let p=!1;return a.units.forEach(u=>{!p&&u.gapElements.length&&(p=!0)}),d.visuals.defaultValue=["polymer-backbone-cylinder","polymer-backbone-sphere"],p&&d.visuals.defaultValue.push("polymer-gap"),d}function _(g,a){return c.Representation.createMulti("Backbone",g,a,i.StructureRepresentationStateBuilder,f)}e.BackboneRepresentationProvider=(0,i.StructureRepresentationProvider)({name:"backbone",label:"Backbone",description:"Displays polymer backbone with cylinders and spheres.",factory:_,getParams:y,defaultValues:r.ParamDefinition.getDefaultValues(e.BackboneParams),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uniform"},isApplicable:g=>g.polymerResidueCount>0})})(cD)),cD}var dD={},fD={},cT={},o$;function Kue(){if(o$)return cT;
7637o$=1,Object.defineProperty(cT,"__esModule",{value:!0}),cT.convexHull=o;const e=wt(),t=1e-8,r=(0,e.Vec3)(),n=(0,e.Vec3)(),i=(0,e.Vec3)(),c=(0,e.Vec3)();function o(f){const y=f.length;if(y<4)return{indices:[]};const _=h(f);if(!_)return{indices:[]};const[g,a,d,p]=_;e.Vec3.sub(r,f[a],f[g]),e.Vec3.sub(n,f[d],f[g]),e.Vec3.cross(i,r,n),e.Vec3.sub(c,f[p],f[g]);const u=e.Vec3.dot(i,c);let m;u>0?m=[[g,d,a],[g,a,p],[a,d,p],[g,p,d]]:m=[[g,a,d],[g,p,a],[a,p,d],[g,d,p]];for(let b=0;b<y;++b){if(b===g||b===a||b===d||b===p)continue;const P=f[b],C=[];let l=!1;for(let A=0;A<m.length;A++){const x=m[A];s(f,x,P)?(C.push(!0),l=!0):C.push(!1)}if(!l)continue;const S=[];for(let A=0;A<m.length;A++){if(!C[A])continue;const x=m[A];for(let M=0;M<3;M++){const D=x[M],V=x[(M+1)%3];let R=!1;for(let E=0;E<m.length;E++){if(C[E])continue;const I=m[E];for(let B=0;B<3;B++)if(I[B]===V&&I[(B+1)%3]===D){R=!0;break}if(R)break}R&&S.push([D,V])}}const T=[];for(let A=0;A<m.length;A++)C[A]||T.push(m[A]);for(const[A,x]of S)T.push([A,x,b]);m=T}const v=[];for(const b of m)v.push(b[0],b[1],b[2]);return{indices:v}}function s(f,y,_){const g=f[y[0]],a=f[y[1]],d=f[y[2]];return e.Vec3.sub(r,a,g),e.Vec3.sub(n,d,g),e.Vec3.cross(i,r,n),e.Vec3.sub(c,_,g),e.Vec3.dot(i,c)>t}function h(f){const y=f.length,_=0;let g=-1;for(let m=1;m<y;m++)if(e.Vec3.distance(f[_],f[m])>t){g=m;break}if(g<0)return null;let a=-1,d=0;for(let m=0;m<y;m++){if(m===_||m===g)continue;e.Vec3.sub(r,f[g],f[_]),e.Vec3.sub(n,f[m],f[_]),e.Vec3.cross(i,r,n);const v=e.Vec3.magnitude(i);v>d&&(d=v,a=m)}if(a<0||d<t)return null;let p=-1,u=0;e.Vec3.sub(r,f[g],f[_]),e.Vec3.sub(n,f[a],f[_]),e.Vec3.cross(i,r,n),e.Vec3.normalize(i,i);for(let m=0;m<y;m++){if(m===_||m===g||m===a)continue;e.Vec3.sub(c,f[m],f[_]);const v=Math.abs(e.Vec3.dot(i,c));v>u&&(u=v,p=m)}return p<0||u<t?null:[_,g,a,p]}return cT}var s$;function Yue(){return s$||(s$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CoordinationPolyhedronMeshParams=void 0,e.CoordinationPolyhedronMeshVisual=u;const t=Ge(),r=Ke(),n=$t(),i=Br(),c=Ne(),o=zt(),s=_n(),h=at(),f=gt(),y=Kue(),_=Na();e.CoordinationPolyhedronMeshParams={...i.ComplexMeshParams,includeParent:c.ParamDefinition.Boolean(!1),minCoordination:c.ParamDefinition.Numeric(4,{min:4,max:12,step:1},{description:"Minimum number of coordinating atoms to draw a polyhedron"}),maxCoordination:c.ParamDefinition.Numeric(12,{min:4,max:24,step:1},{description:"Maximum coordination number"})};function g(m,v,b,P,C){const{minCoordination:l,maxCoordination:S}=P,{child:T,coordination:{sites:A,eachLigand:x}}=v,M=A.count*4,D=n.MeshBuilder.createState(M,M/2,C);for(let V=0;V<A.count;V++){const R=A.numbers[V];if(R<l||R>S)continue;if(T){const B=v.unitMap.get(A.unitIds[V]),w=T.unitMap.get(B.id),O=B.elements[A.indices[V]];if(!w||!_.SortedArray.has(w.elements,O))continue}const E=[];x(V,B=>{const w=B.unit.conformation.position(B.element,(0,t.Vec3)());E.push(w)});const I=(0,y.convexHull)(E);if(I){D.currentGroup=V;for(let B=0;B<I.indices.length;B+=3){const w=E[I.indices[B]],O=E[I.indices[B+1]],F=E[I.indices[B+2]];n.MeshBuilder.addTriangle(D,w,O,F)}}}return n.MeshBuilder.getMesh(D)}function a(m,v){const{sites:b}=m.coordination,P=b.count,C=1,l=r.StructureElement.Location.create(m);function S(T){if(T<b.count){const A=m.unitMap.get(b.unitIds[T]);l.unit=A,l.element=A.elements[b.indices[T]]}return l}return(0,o.LocationIterator)(P,C,1,S,!0)}function d(m,v,b){const{objectId:P,groupId:C}=m;if(b===P){if(C===s.PickingId.Null)return r.Structure.Loci(v);const{sites:l}=v.coordination;return C<l.count?r.StructureElement.Loci(v,[{unit:v.unitMap.get(l.unitIds[C]),indices:h.OrderedSet.ofSingleton(l.indices[C])}]):r.Structure.Loci(v)}return f.EmptyLoci}function p(m,v,b){let P=!1;if(!r.StructureElement.Loci.is(m)||!r.Structure.areEquivalent(m.structure,v))return!1;const{getSiteIndex:C}=v.coordination;for(const{unit:l,indices:S}of m.elements)r.Unit.isAtomic(l)&&h.OrderedSet.forEach(S,T=>{const A=C(l,l.elements[T]);A>=0&&b(h.Interval.ofSingleton(A))&&(P=!0)});return P}function u(m){return(0,i.ComplexMeshVisual)({defaultProps:c.ParamDefinition.getDefaultValues(e.CoordinationPolyhedronMeshParams),createGeometry:g,createLocationIterator:a,getLoci:d,eachLocation:p,setUpdateState:(v,b,P)=>{v.createGeometry=b.minCoordination!==P.minCoordination||b.maxCoordination!==P.maxCoordination}},m)}})(fD)),fD}var c$;function Que(){return c$||(c$=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.PolyhedronRepresentationProvider=e.PolyhedronParams=void 0,e.getPolyhedronParams=h,e.PolyhedronRepresentation=f;const t=Tt(),r=Lt(),n=Ne(),i=JS(),c=Yr(),o=Yue(),s={"coordination-polyhedron-mesh":(y,_)=>(0,i.ComplexRepresentation)("Coordination Polyhedron mesh",y,_,o.CoordinationPolyhedronMeshVisual)};e.PolyhedronParams={...o.CoordinationPolyhedronMeshParams,bumpFrequency:n.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},t.BaseGeometry.ShadingCategory),density:n.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},t.BaseGeometry.ShadingCategory),visuals:n.ParamDefinition.MultiSelect(["coordination-polyhedron-mesh"],n.ParamDefinition.objectToOptions(s))};function h(y,_){return e.PolyhedronParams}function f(y,_){return r.Representation.createMulti("Polyhedron",y,_,c.StructureRepresentationStateBuilder,s)}e.PolyhedronRepresentationProvider=(0,c.StructureRepresentationProvider)({name:"polyhedron",label:"Polyhedron",description:"Displays coordination polyhedra around atoms with enough bonds.",factory:f,getParams:h,defaultValues:n.ParamDefinition.getDefaultValues(e.PolyhedronParams),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:y=>y.elementCount>0,getData:(y,_)=>_.includeParent?y.asParent():y,mustRecreate:(y,_)=>y.includeParent!==_.includeParent})})(dD)),dD}var mD={},pD={},u$;function Zue(){return u$||(u$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PlaneImageParams=void 0,e.PlaneImageVisual=C,e.createPlaneImage=S;const t=Ne(),r=Ke(),n=Ge(),i=rt(),c=Br(),o=zi(),s=Wf(),h=us(),f=Tt(),y=zt(),_=wn(),g=ir(),a=ms(),d=nc(),p=ps(),u=DS(),m=er(),v=n.Vec3.set,b=n.Vec3.transformMat4,P=n.Vec3.squaredDistance;e.PlaneImageParams={...c.ComplexImageParams,interpolation:t.ParamDefinition.Select("nearest",t.ParamDefinition.objectToOptions(s.InterpolationTypes)),imageResolution:t.ParamDefinition.Numeric(.5,{min:.01,max:20,step:.01},{description:"Grid resolution/cell spacing.",...f.BaseGeometry.CustomQualityParamInfo}),mode:t.ParamDefinition.Select("frame",t.ParamDefinition.arrayToOptions(["frame","plane"]),{description:"Frame: slice through the structure along arbitrary axes in any step size. Plane: an arbitrary plane defined by point and normal."}),offset:t.ParamDefinition.Numeric(0,{min:-1,max:1,step:.01},{isEssential:!0,immediateUpdate:!0,hideIf:T=>T.mode!=="frame",description:"Relative offset from center."}),axis:t.ParamDefinition.Select("c",t.ParamDefinition.arrayToOptions(["a","b","c"]),{isEssential:!0,hideIf:T=>T.mode!=="frame"}),rotation:t.ParamDefinition.Group({axis:t.ParamDefinition.Vec3(n.Vec3.create(1,0,0),{},{description:"Axis of rotation"}),angle:t.ParamDefinition.Numeric(0,{min:-180,max:180,step:1},{immediateUpdate:!0,description:"Axis rotation angle in Degrees"})},{isExpanded:!0,hideIf:T=>T.mode!=="frame"}),plane:t.ParamDefinition.Group({point:t.ParamDefinition.Vec3(n.Vec3.create(0,0,0),{},{description:"Plane point"}),normal:t.ParamDefinition.Vec3(n.Vec3.create(1,0,0),{},{description:"Plane normal"})},{isExpanded:!0,hideIf:T=>T.mode!=="plane"}),extent:t.ParamDefinition.Select("frame",t.ParamDefinition.arrayToOptions(["frame","sphere"]),{description:"Extent of the plane, either box (frame) or sphere."}),margin:t.ParamDefinition.Numeric(4,{min:0,max:50,step:1},{immediateUpdate:!0,description:"Margin around the structure in Angstrom"}),frame:t.ParamDefinition.Select("principalAxes",t.ParamDefinition.arrayToOptions(["principalAxes","boundingBox"])),antialias:t.ParamDefinition.Boolean(!0,{description:"Antialiasing of structure edges."}),cutout:t.ParamDefinition.Boolean(!1,{description:"Cutout the structure from the image."}),defaultColor:t.ParamDefinition.Color((0,_.Color)(13421772),{description:"Default color for parts of the image that are not covered by the color theme."}),includeParent:t.ParamDefinition.Boolean(!1,{description:"Show parent structure (but within extent of this structure)."})};function C(T){return(0,c.ComplexImageVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PlaneImageParams),createGeometry:S,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(A,x,M,D,V)=>{A.createGeometry=x.imageResolution!==M.imageResolution||x.mode!==M.mode||x.margin!==M.margin||x.frame!==M.frame||x.extent!==M.extent||!n.Vec3.equals(x.rotation.axis,M.rotation.axis)||x.rotation.angle!==M.rotation.angle||x.offset!==M.offset||x.axis!==M.axis||!n.Vec3.equals(x.plane.point,M.plane.point)||!n.Vec3.equals(x.plane.normal,M.plane.normal)||x.antialias!==M.antialias||x.cutout!==M.cutout||x.defaultColor!==M.defaultColor||!
7637a.ColorTheme.areEqual(D.color,V.color)||!p.SizeTheme.areEqual(D.size,V.size)}},T)}function l(T,A){const{mode:x,axis:M,frame:D,extent:V,margin:R,rotation:E,plane:I,includeParent:B}=A;B&&T.child&&(T=T.child);const w=(0,n.Vec3)(),O=(0,n.Vec3)(),F=(0,n.Vec3)(),L=(0,n.Vec3)(),U=(0,n.Vec3)(),q=(0,n.Vec3)();let N=0,k=0,j=0,H,G,z;if(D==="principalAxes"){const Y=r.Structure.getPrincipalAxes(T).boxAxes;[N,k,j]=i.Axes3D.size((0,n.Vec3)(),Y),H=Y.dirA,G=Y.dirB,z=Y.dirC,n.Vec3.copy(q,Y.origin)}else[N,k,j]=i.Box3D.size((0,n.Vec3)(),T.boundary.box),H=n.Vec3.create(1,0,0),G=n.Vec3.create(0,1,0),z=n.Vec3.create(0,0,1),n.Vec3.copy(q,T.boundary.sphere.center);if(n.Vec3.set(O,N,k,j),M==="c"?(n.Vec3.set(w,N,k,j),n.Vec3.copy(F,H),n.Vec3.copy(L,G),n.Vec3.copy(U,z)):M==="b"?(n.Vec3.set(w,N,j,k),n.Vec3.copy(F,H),n.Vec3.copy(U,G),n.Vec3.copy(L,z)):(n.Vec3.set(w,k,j,N),n.Vec3.copy(U,H),n.Vec3.copy(F,G),n.Vec3.copy(L,z)),E.angle!==0){const Y=(0,n.Vec3)();n.Vec3.scaleAndAdd(Y,Y,H,E.axis[0]),n.Vec3.scaleAndAdd(Y,Y,G,E.axis[1]),n.Vec3.scaleAndAdd(Y,Y,z,E.axis[2]),n.Vec3.normalize(Y,Y);const K=n.Mat4.fromRotation((0,n.Mat4)(),(0,m.degToRad)(E.angle),Y);n.Vec3.transformDirection(F,F,K),n.Vec3.transformDirection(L,L,K),n.Vec3.transformDirection(U,U,K)}if(V==="sphere"||E.angle!==0){const Y=T.boundary.sphere.radius*2,K=n.Vec3.magnitude(i.Box3D.size((0,n.Vec3)(),i.Box3D.fromSphere3D((0,i.Box3D)(),T.boundary.sphere)));n.Vec3.set(w,K,K,Y),V==="sphere"&&n.Vec3.set(O,Y,Y,Y)}n.Vec3.addScalar(w,w,R*2),n.Vec3.addScalar(O,O,R*2);const W=n.Quat.identity();D==="principalAxes"&&n.Quat.fromBasis(W,n.Vec3.normalize((0,n.Vec3)(),H),n.Vec3.normalize((0,n.Vec3)(),G),n.Vec3.normalize((0,n.Vec3)(),z)),x==="plane"&&(n.Vec3.copy(q,I.point),n.Vec3.copy(U,I.normal),n.Vec3.cross(F,U,n.Vec3.unitX),n.Vec3.dot(F,F)<n.EPSILON&&n.Vec3.cross(F,U,n.Vec3.unitY),n.Vec3.normalize(F,F),n.Vec3.cross(L,U,F),n.Vec3.normalize(L,L));const X={type:V==="sphere"?2:3,center:q,scale:O,rotation:W,transform:n.Mat4.identity()};return{size:w,major:F,minor:L,normal:U,center:q,trim:X}}function S(T,A,x,M,D){const{imageResolution:V,offset:R,antialias:E,cutout:I,defaultColor:B}=M,w=1/V,O="color"in x.color&&x.color.color?x.color.color:()=>(0,_.Color)(16777215),{size:F,major:L,minor:U,normal:q,center:N,trim:k}=l(A,M),j=n.Vec3.create(F[0],F[1],1),H=n.Vec3.setMagnitude((0,n.Vec3)(),q,F[2]/2),G=Math.floor(F[1]*w),z=Math.floor(F[0]*w),W=n.Mat4.identity(),X=(0,n.Vec3)(),Y=(0,n.Vec3)();n.Vec3.add(X,N,L),n.Mat4.targetTo(W,N,X,U),n.Vec3.scaleAndAdd(Y,N,H,R),n.Mat4.setTranslation(W,Y),n.Mat4.mul(W,W,n.Mat4.rotY90),n.Mat4.scale(W,W,j);const{getSerialIndex:K}=A.serialMapping,Q=x.color.granularity.startsWith("vertex"),J=u.Plane3D.fromNormalAndCoplanarPoint((0,u.Plane3D)(),n.Vec3.normalize((0,n.Vec3)(),q),Y),ae=n.Mat4.invert((0,n.Mat4)(),W),te=(0,y.PositionLocation)((0,n.Vec3)(),(0,n.Vec3)()),ne=r.StructureElement.Location.create(A),{units:$}=A;let ie=0;for(let Ce=0,ve=$.length;Ce<ve;++Ce){const{elements:le}=$[Ce];ne.unit=$[Ce];for(let me=0,ee=le.length;me<ee;++me){ne.element=le[me];const se=x.size.size(ne);se>ie&&(ie=se)}}const Z=new Uint8Array(G*z*4),re=new Uint8Array(G*z*4),oe=new Float32Array(G*z);oe.fill(Number.MAX_VALUE);const ce=(0,n.Vec3)(),ue=(0,n.Vec3)(),pe=(0,n.Vec3)();if(Q){let Ce=0;for(let ve=0;ve<z;++ve)for(let le=0;le<G;++le){const me=(0,g.clamp)(le+.5,0,G-1)/G-.5,ee=(0,g.clamp)(ve+.5,0,z-1)/z-.5;n.Vec3.set(X,ee,-me,0),n.Vec3.transformMat4(X,X,W),n.Vec3.copy(te.position,X);const se=O(te,!1);_.Color.toArray(se,Z,Ce),Z[Ce+3]=I?0:255,Ce+=4}}else for(let Ce=0,ve=G*z*4;Ce<ve;Ce+=4)_.Color.toArray(B,Z,Ce),Z[Ce+3]=I?0:255;for(let Ce=0,ve=$.length;Ce<ve;++Ce){const le=$[Ce],{elements:me,conformation:ee}=le;ne.unit=$[Ce];for(let se=0,ye=me.length;se<ye;++se){const Se=me[se];ne.element=Se,ee.position(Se,ce);const Ae=u.Plane3D.distanceToPoint(J,ce);if(Math.abs(Ae)>ie)continue;const _e=x.size.size(ne);if(Math.abs(Ae)>_e)continue;const be=Math.cos(Math.abs(Ae)/_e),xe=E?V*be:0,we=_e+xe/2,Be=we*we;n.Vec3.scaleAndAdd(ue,ce,J.normal,-Ae),n.Vec3.transformMat4(pe,ue,ae),n.Vec3.addScalar(pe,pe,.5);const Me=Math.floor(pe[0]*z),Re=G-Math.ceil(pe[1]*G),Te=Math.ceil(_e*w),Ve=Math.max(0,Me-Te),qe=Math.max(0,Re-Te),ke=Math.min(z,Me+Te+2),ze=Math.min(G,Re+Te+2);n.Vec3.copy(te.position,ue);const We=Q?B:O(ne,!1),Je=K(ne.unit,ne.element);for(let De=Ve;De<ke;++De)for(let Oe=qe;Oe<ze;++Oe){const Fe=(0,g.clamp)(De+.5,0,z-1)/z-.5,Le=(0,g.clamp)(Oe+.5,0,G-1)/G-.5;v(X,Fe,-Le,0),b(X,X,W);const He=P(X,ce);
7637if(He>Be)continue;const Pe=De*G+Oe;if(He<oe[Pe]){const Ie=Pe*4,Ee=Math.sqrt(He)-_e+xe/2;let Ue=Ee>0?1-Ee/xe:1;Q?Ue===1?oe[Pe]=He:I&&(re[Ie]!==0||re[Ie+1]!==0||re[Ie+2]!==0)&&(Ue=1):Ue===1?(oe[Pe]=He,_.Color.toArray(We,Z,Ie)):I?(_.Color.toArray(We,Z,Ie),(re[Ie]!==0||re[Ie+1]!==0||re[Ie+2]!==0)&&(Ue=1)):_.Color.toArray(_.Color.interpolate(_.Color.fromArray(Z,Ie),We,Ue),Z,Ie),(0,d.packIntToRGBArray)(Je,re,Ie),re[Ie+3]=E?Math.round(255*Ue):255,I&&(Z[Pe*4+3]=E?Math.round(255*Ue):255)}}}}const he={width:G,height:z,array:Z,flipY:!0},fe={width:G,height:z,array:re,flipY:!0},de={width:1,height:1,array:new Float32Array(1),flipY:!0},ge=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]);return(0,h.transformPositionArray)(W,ge,0,4),s.Image.create(he,ge,fe,de,k,-1,D)}})(pD)),pD}var l$;function Jue(){return l$||(l$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PlaneRepresentationProvider=e.PlaneParams=void 0,e.getPlaneParams=o,e.PlaneRepresentation=s;const t=Ne(),r=Yr(),n=Lt(),i=Zue(),c={"plane-image":(h,f)=>(0,r.ComplexRepresentation)("Plane image",h,f,i.PlaneImageVisual)};e.PlaneParams={...i.PlaneImageParams,visuals:t.ParamDefinition.MultiSelect(["plane-image"],t.ParamDefinition.objectToOptions(c))};function o(h,f){return e.PlaneParams}function s(h,f){return n.Representation.createMulti("Plane",h,f,r.StructureRepresentationStateBuilder,c)}e.PlaneRepresentationProvider=(0,r.StructureRepresentationProvider)({name:"plane",label:"Plane",description:"Displays planes.",factory:s,getParams:o,defaultValues:t.ParamDefinition.getDefaultValues(e.PlaneParams),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"physical"},isApplicable:h=>h.elementCount>0,getData:(h,f)=>f.includeParent?h.asParent():h,mustRecreate:(h,f)=>h.includeParent!==f.includeParent})})(mD)),mD}var d$;function ele(){if(d$)return lf;d$=1,Object.defineProperty(lf,"__esModule",{value:!0}),lf.StructureRepresentationRegistry=void 0;const e=vr(),t=Lt(),r=zce(),n=Qce(),i=lue(),c=fue(),o=Mue(),s=Iue(),h=Bue(),f=Oue(),y=kue(),_=Lue(),g=Nue(),a=Gue(),d=Hue(),p=Xue(),u=Que(),m=Jue();class v extends t.RepresentationRegistry{constructor(){super(),(0,e.objectForEach)(v.BuiltIn,(P,C)=>{if(P.name!==C)throw new Error(`Fix BuiltInStructureRepresentations to have matching names. ${P.name} ${C}`);this.add(P)})}}return lf.StructureRepresentationRegistry=v,(function(b){b.BuiltIn={cartoon:i.CartoonRepresentationProvider,backbone:p.BackboneRepresentationProvider,"ball-and-stick":r.BallAndStickRepresentationProvider,carbohydrate:n.CarbohydrateRepresentationProvider,ellipsoid:c.EllipsoidRepresentationProvider,"gaussian-surface":o.GaussianSurfaceRepresentationProvider,"gaussian-volume":d.GaussianVolumeRepresentationProvider,label:s.LabelRepresentationProvider,line:a.LineRepresentationProvider,"molecular-surface":h.MolecularSurfaceRepresentationProvider,orientation:f.OrientationRepresentationProvider,plane:m.PlaneRepresentationProvider,point:y.PointRepresentationProvider,putty:_.PuttyRepresentationProvider,spacefill:g.SpacefillRepresentationProvider,polyhedron:u.PolyhedronRepresentationProvider}})(v||(lf.StructureRepresentationRegistry=v={})),lf}var mf={},hD={},f$;function tle(){return f$||(f$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.IsosurfaceRepresentationProvider=e.IsosurfaceParams=e.IsosurfaceWireframeParams=e.IsosurfaceMeshParams=e.VolumeIsosurfaceTextureParams=e.VolumeIsosurfaceParams=void 0,e.IsosurfaceVisual=A,e.eachIsosurface=D,e.createVolumeIsosurfaceMesh=V,e.IsosurfaceMeshVisual=R,e.IsosurfaceTextureMeshVisual=B,e.createVolumeIsosurfaceWireframe=w,e.IsosurfaceWireframeVisual=O,e.getIsosurfaceParams=L,e.IsosurfaceRepresentation=U;const t=Ne(),r=sn(),n=Rt(),i=em(),c=Zf(),o=kn(),s=Lt(),h=_n(),f=gt(),y=Ge(),_=Vt(),g=$f(),a=Fl(),d=Jw(),p=Pr(),u=Tt(),m=Kr(),v=In(),b=nn(),P=Jf();e.VolumeIsosurfaceParams={isoValue:r.Volume.IsoValueParam,wrap:t.ParamDefinition.Select("auto",t.ParamDefinition.arrayToOptions(["off","on","auto"])),floodfill:t.ParamDefinition.Select("off",t.ParamDefinition.arrayToOptions(["off","inside","outside"]),{description:"If and how to floodfill the volume. Note that this disables GPU support."})}
7637,e.VolumeIsosurfaceTextureParams={...e.VolumeIsosurfaceParams,tryUseGpu:t.ParamDefinition.Boolean(!0,{hideIf:q=>q.floodfill!=="off"}),gpuDataType:t.ParamDefinition.Select("byte",t.ParamDefinition.arrayToOptions(["byte","float","halfFloat"]),{hideIf:q=>!q.tryUseGpu||q.floodfill!=="off"})};function C(q){return q.extensions.colorBufferFloat&&q.extensions.textureFloat&&q.extensions.drawBuffers}function l(q,N){return N==="on"?!0:N==="off"?!1:r.Volume.isPeriodic(q)}const S=1;function T(q,N){if(q.grid.cells.data.length<Math.pow(10,3))return!1;const k=q.grid.cells.space.dimensions,{powerOfTwoSize:j}=(0,g.getVolumeTexture2dLayout)(k,S);return j<=N.maxTextureSize/2}function A(q,N,k,j,H){return j.floodfill==="off"&&j.tryUseGpu&&H&&C(H)&&T(N,H)?B(q):R(q)}function x(q,N){const k=v.Interval.ofLength(q.instances.length);return r.Volume.Isosurface.Loci(q,N.isoValue,k)}function M(q,N,k,j,H){const{objectId:G,groupId:z,instanceId:W}=q;if(H===G){const X=r.Volume.PickingGranularity.get(N),Y=b.OrderedSet.ofSingleton(W);if(X==="volume")return r.Volume.Loci(N,Y);if(X==="object"||z===h.PickingId.Null)return r.Volume.Isosurface.Loci(N,j.isoValue,Y);{const K=v.Interval.ofSingleton(z);return r.Volume.Cell.Loci(N,[{indices:K,instances:Y}])}}return f.EmptyLoci}function D(q,N,k,j,H){return(0,g.eachVolumeLoci)(q,N,{isoValue:j.isoValue},H)}async function V(q,N,k,j,H,G){q.runtime.update({message:"Marching cubes..."});const z=r.Volume.IsoValue.toAbsolute(H.isoValue,N.grid.stats).absoluteValue;let W=N.grid.cells;H.floodfill!=="off"&&(W=y.Tensor.createFloodfilled(W,z,H.floodfill)),l(N,H.wrap)&&(W=(0,g.createWrappedTensor)(W));const X=(0,_.fillSerial)(new Int32Array(N.grid.cells.data.length)),Y=await(0,i.computeMarchingCubesMesh)({isoLevel:z,scalarField:W,idField:y.Tensor.create(W.space,y.Tensor.Data1(X))},G).runAsChild(q.runtime),K=r.Grid.getGridToCartesianTransform(N.grid);return n.Mesh.transform(Y,K),q.webgl&&!q.webgl.isWebGL2?(n.Mesh.uniformTriangleGroup(Y,!1),m.ValueCell.updateIfChanged(Y.varyingGroup,!1)):m.ValueCell.updateIfChanged(Y.varyingGroup,!0),Y.setBoundingSphere(r.Grid.getIsosurfaceBoundingSphere(N.grid,r.Volume.IsoValue.toAbsolute(H.isoValue,N.grid.stats).absoluteValue)),Y}e.IsosurfaceMeshParams={...n.Mesh.Params,...a.TextureMesh.Params,...e.VolumeIsosurfaceParams,...e.VolumeIsosurfaceTextureParams,quality:{...n.Mesh.Params.quality,isEssential:!1}};function R(q){return(0,P.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.IsosurfaceMeshParams),createGeometry:V,createLocationIterator:g.createVolumeCellLocationIterator,getLoci:M,eachLocation:D,setUpdateState:(N,k,j,H,G)=>{N.createGeometry=!r.Volume.IsoValue.areSame(H.isoValue,G.isoValue,k.grid.stats)||H.wrap!==G.wrap||H.floodfill!==G.floodfill},geometryUtils:n.Mesh.Utils,mustRecreate:(N,k,j)=>k.tryUseGpu&&!!j&&T(N.volume,j)},q)}var E;(function(q){const N="volume-isosurface-texture";q.descriptor=(0,p.CustomPropertyDescriptor)({name:N});function k(H){delete H._propertyData[N]}q.clear=k;function j(H,G,z){var W,X;const{gpuDataType:Y}=z,K=l(H,z.wrap),Q=r.Grid.getGridToCartesianTransform(H.grid),J=y.Vec3.clone(H.grid.cells.space.dimensions),{width:ae,height:te,powerOfTwoSize:ne}=(0,g.getVolumeTexture2dLayout)(J,S),$=y.Vec3.create(ae,te,0),ie=y.Vec3.subScalar((0,y.Vec3)(),J,K?1:0),Z=y.Vec2.create(ae/ne,te/ne);if(ne>G.maxTextureSize/2)throw new Error("volume too large for gpu isosurface extraction");const re=Y==="halfFloat"&&!G.extensions.textureHalfFloat?"float":Y;if(((W=H._propertyData[N])===null||W===void 0?void 0:W.dataType)!==re||((X=H._propertyData[N])===null||X===void 0?void 0:X.wrap)!==K){const oe=re==="byte"?G.resources.texture("image-uint8","alpha","ubyte","linear"):re==="halfFloat"?G.resources.texture("image-float16","alpha","fp16","linear"):G.resources.texture("image-float32","alpha","float","linear");H._propertyData[N]={texture:oe,dataType:re,wrap:K},oe.define(ne,ne),oe.load((0,g.createVolumeTexture2d)(H,"data",S,re),!0),H.customProperties.add(q.descriptor),H.customProperties.assets(q.descriptor,[{dispose:()=>oe.destroy()}])}return J[0]+=S,J[1]+=S,{texture:H._propertyData[N].texture,transform:Q,gridDimension:J,gridTexDim:$,gridDataDim:ie,gridTexScale:Z}}q.get=j})(E||(E={}));function I(q,N,k,j,H,G){const{webgl:z}=q;if(!z)throw new Error("webgl context required to create volume isosurface texture-mesh");if(N.grid.cells.data.length<=1)return a.TextureMesh.createEmpty(G);l(N,H.wrap)&&(N=(0,g.createWrappedVolume)(N));const{max:W,min:X}=N.grid.stats,Y=W-X,K=r.Volume.IsoValue.toAbsolute(H.isoValue,N.grid.stats).absoluteValue,Q=(K-X)/Y,J=N.grid.cells.space.axisOrderSlowToFast,ae=N.grid.cells.data.length,te=r.Grid.getBoundingSphere(N.grid),ne=ie=>{const{texture:Z,gridDimension:re,gridTexDim:oe,gridDataDim:ce,gridTexScale:ue,transform:pe}=E.get(N,z,H),he=ie?.doubleBuffer.get(),fe=(0,d.extractIsosurface)(z,Z,re,oe,ce,ue,pe,Q,K<0,!1,J,!0,he?.vertex,he?.group,he?.
7637normal);return a.TextureMesh.create(fe.vertexCount,ae,fe.vertexTexture,fe.groupTexture,fe.normalTexture,te,ie)},$=ne(G);return $.meta.webgl=z,$.meta.reset=()=>{E.clear(N),ne($)},$}function B(q){return(0,P.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.IsosurfaceMeshParams),createGeometry:I,createLocationIterator:g.createVolumeCellLocationIterator,getLoci:M,eachLocation:D,setUpdateState:(N,k,j,H,G)=>{N.createGeometry=!r.Volume.IsoValue.areSame(H.isoValue,G.isoValue,k.grid.stats)||H.gpuDataType!==G.gpuDataType||H.wrap!==G.wrap},geometryUtils:a.TextureMesh.Utils,mustRecreate:(N,k,j)=>k.floodfill!=="off"||!k.tryUseGpu||!j||!T(N.volume,j),dispose:N=>{N.vertexTexture.ref.value.destroy(),N.groupTexture.ref.value.destroy(),N.normalTexture.ref.value.destroy(),N.doubleBuffer.destroy()}},q)}async function w(q,N,k,j,H,G){q.runtime.update({message:"Marching cubes..."});const z=r.Volume.IsoValue.toAbsolute(H.isoValue,N.grid.stats).absoluteValue;let W=N.grid.cells;H.floodfill!=="off"&&(W=y.Tensor.createFloodfilled(W,z,H.floodfill)),l(N,H.wrap)&&(W=(0,g.createWrappedTensor)(W));const X=(0,_.fillSerial)(new Int32Array(N.grid.cells.data.length)),Y=await(0,i.computeMarchingCubesLines)({isoLevel:z,scalarField:W,idField:y.Tensor.create(W.space,y.Tensor.Data1(X))},G).runAsChild(q.runtime),K=r.Grid.getGridToCartesianTransform(N.grid);return o.Lines.transform(Y,K),Y.setBoundingSphere(r.Grid.getIsosurfaceBoundingSphere(N.grid,r.Volume.IsoValue.toAbsolute(H.isoValue,N.grid.stats).absoluteValue)),Y}e.IsosurfaceWireframeParams={...o.Lines.Params,...e.VolumeIsosurfaceParams,quality:{...o.Lines.Params.quality,isEssential:!1},sizeFactor:t.ParamDefinition.Numeric(3,{min:0,max:10,step:.1})};function O(q){return(0,P.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.IsosurfaceWireframeParams),createGeometry:w,createLocationIterator:g.createVolumeCellLocationIterator,getLoci:M,eachLocation:D,setUpdateState:(N,k,j,H,G)=>{N.createGeometry=!r.Volume.IsoValue.areSame(H.isoValue,G.isoValue,k.grid.stats)||H.wrap!==G.wrap||H.floodfill!==G.floodfill},geometryUtils:o.Lines.Utils},q)}const F={solid:(q,N)=>(0,c.VolumeRepresentation)("Isosurface mesh",q,N,A,x),wireframe:(q,N)=>(0,c.VolumeRepresentation)("Isosurface wireframe",q,N,O,x)};e.IsosurfaceParams={...e.IsosurfaceMeshParams,...e.IsosurfaceWireframeParams,visuals:t.ParamDefinition.MultiSelect(["solid"],t.ParamDefinition.objectToOptions(F)),bumpFrequency:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},u.BaseGeometry.ShadingCategory)};function L(q,N){const k=t.ParamDefinition.clone(e.IsosurfaceParams);return k.isoValue=r.Volume.createIsoValueParam(r.Volume.IsoValue.relative(2),N.grid.stats),k}function U(q,N){return s.Representation.createMulti("Isosurface",q,N,s.Representation.StateBuilder,F)}e.IsosurfaceRepresentationProvider=(0,c.VolumeRepresentationProvider)({name:"isosurface",label:"Isosurface",description:"Displays a triangulated isosurface of volumetric data.",factory:U,getParams:L,defaultValues:t.ParamDefinition.getDefaultValues(e.IsosurfaceParams),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"uniform"},isApplicable:q=>!r.Volume.isEmpty(q)&&!r.Volume.Segmentation.get(q)})})(hD)),hD}var gD={},m$;function rle(){return m$||(m$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SliceRepresentationProvider=e.SliceParams=void 0,e.getSliceParams=S,e.createImage=T,e.applySliceObjectLoci=O,e.applySliceGroupIntervals=F,e.SliceVisual=U,e.SliceRepresentation=q;const t=Ne(),r=Wf(),n=sn(),i=Zf(),c=zt(),o=_n(),s=gt(),h=us(),f=vt(),y=ms(),_=nc(),g=$f(),a=wt(),d=rs(),p=er(),u=Xr(),m=ir(),v=Gt(),b=nn(),P=In(),C=Jf(),l=Dn();e.SliceParams={...r.Image.Params,quality:{...r.Image.Params.quality,isEssential:!1},dimension:t.ParamDefinition.MappedStatic("x",{x:t.ParamDefinition.Numeric(0,{min:0,max:0,step:1},{immediateUpdate:!0}),y:t.ParamDefinition.Numeric(0,{min:0,max:0,step:1},{immediateUpdate:!0}),z:t.ParamDefinition.Numeric(0,{min:0,max:0,step:1},{immediateUpdate:!0}),relativeX:t.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{immediateUpdate:!0}
7637),relativeY:t.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{immediateUpdate:!0}),relativeZ:t.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{immediateUpdate:!0})},{isEssential:!0,hideIf:N=>N.mode!=="grid",description:"Slice position in grid coordinates."}),isoValue:n.Volume.IsoValueParam,mode:t.ParamDefinition.Select("grid",t.ParamDefinition.arrayToOptions(["grid","frame","plane"]),{description:"Grid: slice through the volume along the grid axes in integer steps. Frame: slice through the volume along arbitrary axes in any step size. Plane: an arbitrary plane defined by point and normal."}),offset:t.ParamDefinition.Numeric(0,{min:-1,max:1,step:.01},{isEssential:!0,immediateUpdate:!0,hideIf:N=>N.mode!=="frame",description:"Relative offset from center."}),axis:t.ParamDefinition.Select("a",t.ParamDefinition.arrayToOptions(["a","b","c"]),{isEssential:!0,hideIf:N=>N.mode!=="frame",description:"Axis of the frame."}),rotation:t.ParamDefinition.Group({axis:t.ParamDefinition.Vec3(a.Vec3.create(1,0,0),{},{description:"Axis of rotation"}),angle:t.ParamDefinition.Numeric(0,{min:-180,max:180,step:1},{immediateUpdate:!0,description:"Axis rotation angle in Degrees"})},{isExpanded:!0,hideIf:N=>N.mode!=="frame"}),plane:t.ParamDefinition.Group({point:t.ParamDefinition.Vec3(a.Vec3.create(0,0,0),{},{description:"Plane point"}),normal:t.ParamDefinition.Vec3(a.Vec3.create(1,0,0),{},{description:"Plane normal"})},{isExpanded:!0,hideIf:N=>N.mode!=="plane"})};function S(N,k){const j=n.Volume.getPeriodicRange(k);if(j){const{min:z,max:W}=j;k=(0,g.createPeriodicVolume)(k,z,W)}const H=t.ParamDefinition.clone(e.SliceParams),G=k.grid.cells.space.dimensions;return H.dimension=t.ParamDefinition.MappedStatic("x",{x:t.ParamDefinition.Numeric(0,{min:0,max:G[0]-1,step:1},{immediateUpdate:!0}),y:t.ParamDefinition.Numeric(0,{min:0,max:G[1]-1,step:1},{immediateUpdate:!0}),z:t.ParamDefinition.Numeric(0,{min:0,max:G[2]-1,step:1},{immediateUpdate:!0}),relativeX:t.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{immediateUpdate:!0}),relativeY:t.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{immediateUpdate:!0}),relativeZ:t.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{immediateUpdate:!0})},{isEssential:!0,hideIf:z=>z.mode!=="grid"}),H.isoValue=n.Volume.createIsoValueParam(n.Volume.IsoValue.absolute(k.grid.stats.min),k.grid.stats),H}async function T(N,k,j,H,G,z){const W=n.Volume.getPeriodicRange(k);if(W){const{min:X,max:Y}=W;k=(0,g.createPeriodicVolume)(k,X,Y)}switch(G.mode){case"frame":return M(N,k,j,H,G,z);case"grid":return V(N,k,j,H,G,z);case"plane":return D(N,k,j,H,G,z);default:(0,v.assertUnreachable)(G.mode)}}function A(N,k){const{axis:j,rotation:H,mode:G}=k,z=n.Grid.getGridToCartesianTransform(N.grid),W=u.Mat4.invert((0,u.Mat4)(),z),[X,Y,K]=N.grid.cells.space.dimensions,Q=X,J=Y,ae=K,te=a.Vec3.create(Q,0,0),ne=a.Vec3.create(0,J,0),$=a.Vec3.create(0,0,ae),ie=Math.max(Q,J,ae)/Math.max(X,Y,K),Z=a.Vec3.create(0,0,0),re=a.Vec3.create(Q,J,ae);a.Vec3.transformMat4(Z,Z,z),a.Vec3.transformMat4(re,re,z);const oe=a.Vec3.center((0,a.Vec3)(),re,Z),ce=(0,a.Vec3)(),ue=(0,a.Vec3)(),pe=(0,a.Vec3)(),he=(0,a.Vec3)();if(j==="c"?(a.Vec3.set(ce,Q,J,ae),a.Vec3.copy(ue,te),a.Vec3.copy(pe,ne),a.Vec3.copy(he,$)):j==="b"?(a.Vec3.set(ce,Q,ae,J),a.Vec3.copy(ue,te),a.Vec3.copy(he,ne),a.Vec3.copy(pe,$)):(a.Vec3.set(ce,J,ae,Q),a.Vec3.copy(he,te),a.Vec3.copy(ue,ne),a.Vec3.copy(pe,$)),H.angle!==0){const de=(0,a.Vec3)();a.Vec3.scaleAndAdd(de,de,te,H.axis[0]),a.Vec3.scaleAndAdd(de,de,ne,H.axis[1]),a.Vec3.scaleAndAdd(de,de,$,H.axis[2]),a.Vec3.normalize(de,de);const ge=u.Mat4.fromRotation((0,u.Mat4)(),(0,p.degToRad)(H.angle),de);a.Vec3.transformDirection(ue,ue,ge),a.Vec3.transformDirection(pe,pe,ge),a.Vec3.transformDirection(he,he,ge)}if(G==="frame"){const de=a.Vec3.distance(Z,re),ge=a.Vec3.distance(Z,re);a.Vec3.set(ce,ge,ge,de)}a.Vec3.transformDirection(ue,ue,z),a.Vec3.transformDirection(pe,pe,z),a.Vec3.transformDirection(he,he,z);const fe={type:3,center:a.Vec3.create(Q/2,J/2,ae/2),scale:a.Vec3.create(Q,J,ae),rotation:d.Quat.identity(),transform:W};return{size:ce,major:ue,minor:pe,normal:he,center:oe,trim:fe,resolution:ie}}function x(N,k,j,H,G,z){const{m:W,width:X,height:Y}=j,{cells:{space:K},stats:Q}=N.grid,{min:J,max:ae}=Q,te=k.color.granularity==="uniform",ne="color"in k.color&&k.color.color?k.color.color:()=>(0,f.Color)(16777215),$=(0,a.Vec3)(),ie=n.Grid.getGridToCartesianTransform(N.grid),Z=u.Mat4.invert((0,u.Mat4)(),ie),[re,oe,ce]=K.dimensions,ue=new Uint8Array(X*Y*4),pe=new 
7637Uint8Array(X*Y*4),he=new Float32Array(X*Y),fe={instance:new Int16Array(X*Y),cell:new Uint32Array(X*Y),index:new Map},de=(0,a.Vec3)(),ge=(0,c.PositionLocation)((0,a.Vec3)(),(0,a.Vec3)()),Ce=n.Grid.makeGetTrilinearlyInterpolated(N.grid,"none"),ve=n.Volume.getPeriodicMapping(N);let le=0;for(let _e=0;_e<Y;++_e)for(let be=0;be<X;++be){const xe=le*4,we=(0,m.clamp)(be+.5,0,X-1)/X-.5,Be=(0,m.clamp)(_e+.5,0,Y-1)/Y-.5;a.Vec3.set($,Be,-we,0),a.Vec3.transformMat4($,$,W),a.Vec3.copy(de,$),a.Vec3.transformMat4(de,de,Z);const Me=Math.trunc(de[0]),Re=Math.trunc(de[1]),Te=Math.trunc(de[2]);a.Vec3.copy(ge.position,$);const Ve=ne(ge,!1);f.Color.toArray(Ve,ue,xe);const qe=(0,m.normalize)(Ce($),J,ae);if(te&&(ue[xe]*=qe,ue[xe+1]*=qe,ue[xe+2]*=qe),he[le]=qe,Me>=0&&Me<re&&Re>=0&&Re<oe&&Te>=0&&Te<ce)if((0,_.packIntToRGBArray)(le,pe,xe),ve){const ke=ve.get(Me,Re,Te);if(ke){fe.instance[le]=ke.instance,fe.cell[le]=ke.cell;const ze=(0,l.cantorPairing)(ke.instance,ke.cell);fe.index.has(ze)?fe.index.get(ze).push(le):fe.index.set(ze,[le])}else ue[xe]=0,ue[xe+1]=0,ue[xe+2]=0,ue[xe+3]=0,he[le]=NaN}else{const ke=K.dataOffset(Me,Re,Te);fe.instance[le]=-1,fe.cell[le]=ke,fe.index.has(ke)?fe.index.get(ke).push(le):fe.index.set(ke,[le])}le+=1}const me={width:X,height:Y,array:ue,flipY:!0},ee={width:X,height:Y,array:pe,flipY:!0},se={width:X,height:Y,array:he,flipY:!0},ye=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]);(0,h.transformPositionArray)(W,ye,0,4);const Se=(0,m.clamp)((0,m.normalize)(n.Volume.IsoValue.toAbsolute(H,Q).absoluteValue,J,ae),0,1),Ae=r.Image.create(me,ye,ee,se,G,Se,z);return Ae.setBoundingSphere(n.Volume.isPeriodic(N)?n.Volume.getBoundingSphere(N,P.Interval.ofLength(N.instances.length)):n.Grid.getBoundingSphere(N.grid)),Ae.meta.mapping=fe,Ae}async function M(N,k,j,H,G,z){const{offset:W,isoValue:X}=G,{size:Y,major:K,minor:Q,normal:J,center:ae,trim:te,resolution:ne}=A(k,G),$=1/ne,ie=a.Vec3.create(Y[0],Y[1],1),Z=a.Vec3.setMagnitude((0,a.Vec3)(),J,Y[2]/2),re=Math.floor(Y[1]*$),oe=Math.floor(Y[0]*$),ce=u.Mat4.identity(),ue=(0,a.Vec3)(),pe=(0,a.Vec3)();return a.Vec3.add(ue,ae,K),u.Mat4.targetTo(ce,ae,ue,Q),a.Vec3.scaleAndAdd(pe,ae,Z,W),u.Mat4.setTranslation(ce,pe),u.Mat4.mul(ce,ce,u.Mat4.rotY90),u.Mat4.scale(ce,ce,ie),x(k,H,{m:ce,width:re,height:oe},X,te,z)}async function D(N,k,j,H,G,z){const{plane:{point:W,normal:X},isoValue:Y}=G,K=a.Vec3.normalize((0,a.Vec3)(),X),Q=n.Grid.getGridToCartesianTransform(k.grid),J=u.Mat4.invert((0,u.Mat4)(),Q),[ae,te,ne]=k.grid.cells.space.dimensions,$=ae,ie=te,Z=ne,oe=1/(Math.max($,ie,Z)/Math.max(ae,te,ne)),ce=a.Vec3.distance(a.Vec3.create(0,0,0),a.Vec3.create($,ie,Z)),ue=a.Vec3.create($/2,ie/2,Z/2);a.Vec3.transformMat4(ue,ue,Q);const pe=a.Vec3.sub((0,a.Vec3)(),ue,W),he=a.Vec3.dot(pe,K),fe=a.Vec3.scaleAndAdd((0,a.Vec3)(),ue,K,-he),de=u.Mat4.fromPlane((0,u.Mat4)(),K,fe),ge=a.Vec3.set((0,a.Vec3)(),ce,ce,ce);u.Mat4.scale(de,de,ge);const Ce=Math.floor(ce*oe),ve=Math.floor(ce*oe),le={type:3,center:a.Vec3.create($/2,ie/2,Z/2),scale:a.Vec3.create($,ie,Z),rotation:d.Quat.identity(),transform:J};return x(k,H,{m:de,width:Ce,height:ve},Y,le,z)}async function V(N,k,j,H,G,z){const{dimension:{name:W},isoValue:X}=G,{cells:{space:Y,data:K},stats:Q}=k.grid,{min:J,max:ae}=Q,te=H.color.granularity==="uniform",ne="color"in H.color&&H.color.color?H.color.color:()=>(0,f.Color)(16777215),{width:$,height:ie,x:Z,y:re,z:oe,x0:ce,y0:ue,z0:pe,nx:he,ny:fe,nz:de}=E(k.grid,G),ge=new Float32Array(W==="x"||W==="relativeX"?[Z,0,0,Z,re,0,Z,0,oe,Z,re,oe]:W==="y"||W==="relativeY"?[0,re,0,Z,re,0,0,re,oe,Z,re,oe]:[0,0,oe,0,re,oe,Z,0,oe,Z,re,oe]),Ce=new Uint8Array($*ie*4),ve=new Uint8Array($*ie*4),le=new Float32Array($*ie),me={instance:new Int16Array($*ie),cell:new Uint32Array($*ie),index:new Map},ee=n.Grid.getGridToCartesianTransform(k.grid),se=(0,c.PositionLocation)((0,a.Vec3)(),(0,a.Vec3)()),ye=n.Volume.getPeriodicMapping(k);let Se=0;for(let Re=ue;Re<fe;++Re)for(let Te=ce;Te<he;++Te)for(let Ve=pe;Ve<de;++Ve){const qe=Se*4;a.Vec3.set(se.position,Te,Re,Ve),a.Vec3.transformMat4(se.position,se.position,ee),f.Color.toArray(ne(se,!1),Ce,qe);const ke=(0,m.normalize)(Y.get(K,Te,Re,Ve),J,ae);if(te&&(Ce[qe]*=ke,Ce[qe+1]*=ke,Ce[qe+2]*=ke),le[Se]=ke,(0,_.packIntToRGBArray)(Se,ve,qe),ye){const ze=ye.get(Te,Re,Ve);ze?(me.instance[Se]=ze.instance,me.cell[Se]=ze.cell,me.index.set((0,l.cantorPairing)(ze.
7637instance,ze.cell),[Se])):(Ce[qe]=0,Ce[qe+1]=0,Ce[qe+2]=0,Ce[qe+3]=0,le[Se]=NaN)}else{const ze=Y.dataOffset(Te,Re,Ve);me.instance[Se]=-1,me.cell[Se]=ze,me.index.set(ze,[Se])}Se+=1}const Ae={width:$,height:ie,array:Ce,flipY:!0},_e={width:$,height:ie,array:ve,flipY:!0},be={width:$,height:ie,array:le,flipY:!0},xe=n.Grid.getGridToCartesianTransform(k.grid);(0,h.transformPositionArray)(xe,ge,0,4);const we=r.Image.createEmptyTrim(),Be=(0,m.clamp)((0,m.normalize)(n.Volume.IsoValue.toAbsolute(X,Q).absoluteValue,J,ae),0,1),Me=r.Image.create(Ae,ge,_e,be,we,Be,z);return Me.setBoundingSphere(n.Volume.isPeriodic(k)?n.Volume.getBoundingSphere(k,P.Interval.ofLength(k.instances.length)):n.Grid.getBoundingSphere(k.grid)),Me.meta.mapping=me,Me}function R(N,k){return(0,m.clamp)(Math.round((N-1)*k),0,N-1)}function E(N,k){const{dimension:{name:j,params:H}}=k,{space:G}=N.cells;let z,W,X,Y,K,Q=0,J=0,ae=0,[te,ne,$]=G.dimensions;return j==="x"?(X=H,Y=ne,K=$,z=$,W=ne,Q=X,te=Q+1):j==="y"?(X=te,Y=H,K=$,z=$,W=te,J=Y,ne=J+1):j==="z"?(X=te,Y=ne,K=H,z=te,W=ne,ae=K,$=ae+1):j==="relativeX"?(X=R(te,H),Y=ne,K=$,z=$,W=ne,Q=X,te=Q+1):j==="relativeY"?(X=te,Y=R(ne,H),K=$,z=$,W=te,J=Y,ne=J+1):(X=te,Y=ne,K=R($,H),z=te,W=ne,ae=K,$=ae+1),{width:z,height:W,x:X,y:Y,z:K,x0:Q,y0:J,z0:ae,nx:te,ny:ne,nz:$}}function I(N,k,j){return n.Volume.Loci(N,k)}function B(N,k){const j=P.Interval.ofLength(N.instances.length);return I(N,j)}function w(N,k,j,H,G,z){let{objectId:W,groupId:X,instanceId:Y}=N;if(G===W){const K=z.meta.mapping;if(K){const ae=K.instance[X];ae>=0&&(Y=ae),X=K.cell[X]}const Q=n.Volume.PickingGranularity.get(k),J=b.OrderedSet.ofSingleton(Y);if(Q==="volume")return n.Volume.Loci(k,J);if(Q==="object"||X===o.PickingId.Null)return I(k,J);{const ae=P.Interval.ofSingleton(X);return n.Volume.Cell.Loci(k,[{indices:ae,instances:J}])}}return s.EmptyLoci}function O(N,k,j,H){if(n.Volume.isLociEmpty(N)||!n.Volume.areEquivalent(N.volume,k))return!1;if(n.Volume.isPeriodic(k))return H(P.Interval.ofBounds(0,j));let G=!1;if(P.Interval.is(N.instances)){const z=P.Interval.start(N.instances)*j,W=P.Interval.end(N.instances)*j;H(P.Interval.ofBounds(z,W))&&(G=!0)}else b.OrderedSet.forEach(N.instances,z=>{const W=z*j;H(P.Interval.ofBounds(W,W+j))&&(G=!0)});return G}function F(N,k,j){if(!N||N.length===0)return!1;let H=!1,G=N[0]+k,z=G;for(let W=1,X=N.length;W<X;++W){const Y=N[W]+k;if(Y===z+1){z=Y;continue}j(P.Interval.ofBounds(G,z+1))&&(H=!0),G=Y,z=Y}return j(P.Interval.ofBounds(G,z+1))&&(H=!0),H}function L(N,k,j,H,G,z){const W=z.meta.mapping;if(W){const X=W.cell.length,Y=k.grid.cells.data.length,K=n.Volume.isPeriodic(k);return n.Volume.isLoci(N)?O(N,k,X,G):(0,g.eachVolumeLoci)(N,k,void 0,Q=>{let J=!1;for(let ae=P.Interval.start(Q),te=P.Interval.end(Q);ae<te;++ae){const ne=Math.floor(ae/Y),$=ae%Y;if(K)F(W.index.get((0,l.cantorPairing)(ne,$)),0,G)&&(J=!0);else{const ie=ne*X;F(W.index.get($),ie,G)&&(J=!0)}}return J})}else return(0,g.eachVolumeLoci)(N,k,void 0,G)}function U(N,k,j){return(0,C.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.SliceParams),createGeometry:T,createLocationIterator:g.createVolumeSliceCellLocationIterator,getLoci:w,eachLocation:L,setUpdateState:(H,G,z,W,X,Y,K)=>{H.createGeometry=W.dimension.name!==X.dimension.name||W.dimension.params!==X.dimension.params||W.mode!==X.mode||!a.Vec3.equals(W.rotation.axis,X.rotation.axis)||W.rotation.angle!==X.rotation.angle||W.offset!==X.offset||W.axis!==X.axis||!a.Vec3.equals(W.plane.point,X.plane.point)||!a.Vec3.equals(W.plane.normal,X.plane.normal)||!n.Volume.IsoValue.areSame(W.isoValue,X.isoValue,G.grid.stats)||!y.ColorTheme.areEqual(Y.color,K.color)||!n.Volume.areInstanceTransformsEqual(G,z)},geometryUtils:r.Image.Utils},N)}function q(N,k){return(0,i.VolumeRepresentation)("Slice",N,k,U,B)}e.SliceRepresentationProvider=(0,i.VolumeRepresentationProvider)({name:"slice",label:"Slice",description:"Slice of volume rendered as image with interpolation.",factory:q,getParams:S,defaultValues:t.ParamDefinition.getDefaultValues(e.SliceParams),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"uniform"},isApplicable:N=>!n.Volume.isEmpty(N)&&!n.Volume.Segmentation.get(N)})})(gD)),gD}var yD={},p$;function nle(){return p$||(p$=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.DirectVolumeRepresentationProvider=e.DirectVolumeParams=void 0,e.createDirectVolume2d=d,e.createDirectVolume3d=u,e.createDirectVolume=m,e.getDirectVolumeLoci=b,e.eachDirectVolume=P,e.getDirectVolumeParams=C,e.DirectVolumeVisual=l,e.DirectVolumeRepresentation=S;const t=Ne(),r=Ge(),n=rt(),i=sn(),c=Hf(),o=Zf(),s=gt(),h=$f(),f=In(),y=nn(),_=Jf(),g=ir();function a(N,k){const j=(0,n.Box3D)();return n.Box3D.add(j,N),n.Box3D.transform(j,j,k),j}function d(N,k,j,H,G){const z=j.grid.cells.space.dimensions,{width:W,height:X}=(0,h.getVolumeTexture2dLayout)(z);if(Math.max(W,X)>k.maxTextureSize/2)throw new Error("volume too large for direct-volume rendering");const Y=H.dataType==="halfFloat"&&!k.extensions.textureHalfFloat?"float":H.dataType,K=(0,h.createVolumeTexture2d)(j,"normals",0,Y),Q=i.Grid.getGridToCartesianTransform(j.grid),J=a(z,Q);let ae;G&&G.dataType.ref.value===Y?ae=G.gridTexture.ref.value:ae=Y==="byte"?k.resources.texture("image-uint8","rgba","ubyte","linear"):Y==="halfFloat"?k.resources.texture("image-float16","rgba","fp16","linear"):k.resources.texture("image-float32","rgba","float","linear"),ae.load(K);const{unitToCartn:te,cellDim:ne}=p(j.grid),$=j.grid.cells.space.axisOrderSlowToFast;return c.DirectVolume.create(J,z,Q,te,ne,ae,j.grid.stats,!1,$,Y,G)}function p(N){if(N.transform.kind==="matrix")return{unitToCartn:r.Mat4.mul((0,r.Mat4)(),N.transform.matrix,r.Mat4.fromScaling((0,r.Mat4)(),N.cells.space.dimensions)),cellDim:r.Mat4.getScaling((0,r.Vec3)(),N.transform.matrix)};const k=N.transform.fractionalBox,j=n.Box3D.size((0,r.Vec3)(),k);return{unitToCartn:r.Mat4.mul3((0,r.Mat4)(),N.transform.cell.fromFractional,r.Mat4.fromTranslation((0,r.Mat4)(),k.min),r.Mat4.fromScaling((0,r.Mat4)(),j)),cellDim:r.Vec3.div((0,r.Vec3)(),N.transform.cell.size,N.cells.space.dimensions)}}function u(N,k,j,H,G){const z=j.grid.cells.space.dimensions;if(Math.max(...z)>k.max3dTextureSize/2)throw new Error("volume too large for direct-volume rendering");const W=H.dataType==="halfFloat"&&!k.extensions.textureHalfFloat?"float":H.dataType,X=(0,h.createVolumeTexture3d)(j,W),Y=i.Grid.getGridToCartesianTransform(j.grid),K=a(z,Y);let Q;G&&G.dataType.ref.value===W?Q=G.gridTexture.ref.value:Q=W==="byte"?k.resources.texture("volume-uint8","rgba","ubyte","linear"):W==="halfFloat"?k.resources.texture("volume-float16","rgba","fp16","linear"):k.resources.texture("volume-float32","rgba","float","linear"),Q.load(X);const{unitToCartn:J,cellDim:ae}=p(j.grid),te=j.grid.cells.space.axisOrderSlowToFast;return c.DirectVolume.create(K,z,Y,J,ae,Q,j.grid.stats,!1,te,W,G)}async function m(N,k,j,H,G,z){const{runtime:W,webgl:X}=N;if(X===void 0)throw new Error("DirectVolumeVisual requires `webgl` in VisualContext");return X.isWebGL2?u(W,X,k,G,z):d(W,X,k,G,z)}function v(N,k){const j=f.Interval.ofLength(N.instances.length);return i.Volume.Loci(N,j)}function b(N,k,j,H,G){const{objectId:z,groupId:W,instanceId:X}=N;if(G===z){const Y=y.OrderedSet.ofSingleton(X),K=f.Interval.ofSingleton(W);return i.Volume.Cell.Loci(k,[{indices:K,instances:Y}])}return s.EmptyLoci}function P(N,k,j,H,G){return(0,h.eachVolumeLoci)(N,k,void 0,G)}e.DirectVolumeParams={...c.DirectVolume.Params,quality:{...c.DirectVolume.Params.quality,isEssential:!1},dataType:t.ParamDefinition.Select("byte",t.ParamDefinition.arrayToOptions(["byte","float","halfFloat"]))};function C(N,k){const j=t.ParamDefinition.clone(e.DirectVolumeParams);return j.controlPoints.getVolume=()=>k,j.controlPoints.defaultValue=D(k.grid),j.controlPoints.getPresets=()=>q(k.grid),j}function l(N){return(0,_.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.DirectVolumeParams),createGeometry:m,createLocationIterator:h.createVolumeCellLocationIterator,getLoci:b,eachLocation:P,setUpdateState:(k,j,H,G,z)=>{k.createGeometry=G.dataType!==z.dataType},geometryUtils:c.DirectVolume.Utils,dispose:k=>{k.gridTexture.ref.value.destroy()}},N)}function S(N,k){return(0,o.VolumeRepresentation)("Direct Volume",N,k,l,v)}e.DirectVolumeRepresentationProvider=(0,o.VolumeRepresentationProvider)({name:"direct-volume",label:"Direct Volume",description:"Direct rendering of volumetric data.",factory:S,getParams:C,defaultValues:t.ParamDefinition.getDefaultValues(e.DirectVolumeParams),defaultColorTheme:{name:"volume-value"},defaultSizeTheme:{name:"uniform"},locationKinds:["position-location","direct-location"],isApplicable:N=>!i.Volume.isEmpty(N)&&!i.Volume.Segmentation.get(N)});const T=.05,A=.005,x=.05,M=.95;function D(N){const{min:k,max:j}=N.stats,H=j-k;if(H<=0||!isFinite(H))return R();const G=i.Grid.getRobustStats(N,{ignoreZero:!0}),{mean:z,sigma:W,p99:X}=G;if(!isFinite(W)||W<=0||G.count===0)return R();const Y=te=>(0,g.clamp)((te-k)/H,.001,.999);
7637if(k<0){const te=[],ne=Y(Math.min(z-3*W,-W)),$=Y(-W),ie=Y(0),Z=Y(W),re=Y(Math.max(z+3*W,W)),oe=[ne,$,ie,Z,re].sort((ce,ue)=>ce-ue);return te.push(r.Vec2.create(oe[0],T)),te.push(r.Vec2.create(oe[1],T*.5)),te.push(r.Vec2.create(oe[2],0)),te.push(r.Vec2.create(oe[3],T*.5)),te.push(r.Vec2.create(oe[4],T)),te}const K=Y(z),Q=Y(z+W),J=Y(Math.min(z+3*W,X));return V(K,Q,J,T)}function V(N,k,j,H){const z=(0,g.clamp)(N,.001,.997);let W=(0,g.clamp)(k,z+.002,.998),X=(0,g.clamp)(j,W+.002,.999);X-z<3*.002&&(W=z+.002,X=z+2*.002);const Y=[];Y.push(r.Vec2.create(z,0)),Y.push(r.Vec2.create(W,H*.5)),Y.push(r.Vec2.create(X,H));const K=(0,g.clamp)(X+.002,X+1e-4,.9995);return Y.push(r.Vec2.create(K,H)),Y}function R(){return[r.Vec2.create(.19,0),r.Vec2.create(.2,T),r.Vec2.create(.25,T),r.Vec2.create(.26,0),r.Vec2.create(.79,0),r.Vec2.create(.8,T),r.Vec2.create(.85,T),r.Vec2.create(.86,0)]}function E(N,k,j,H){const{min:G,max:z}=N.stats,W=z-G;if(W<=0||!isFinite(W))return R();const X=i.Grid.getRobustStats(N,{ignoreZero:!0}),{mean:Y,sigma:K}=X;if(!isFinite(K)||K<=0||X.count===0)return R();const Q=(0,g.clamp)((Y+k*K-G)/W,x,M),J=(0,g.clamp)(j,A+.001,.2),ae=(0,g.clamp)(Q-J,.001,.999),te=(0,g.clamp)(Q-J+A,.001,.999),ne=(0,g.clamp)(Q+J-A,.001,.999),$=(0,g.clamp)(Q+J,.001,.999);return ae<te&&te<ne&&ne<$?[r.Vec2.create(ae,0),r.Vec2.create(te,H),r.Vec2.create(ne,H),r.Vec2.create($,0)]:R()}function I(N){return E(N,2,.012,T)}function B(N){return E(N,3,.015,.08)}function w(N){const{min:k,max:j}=N.stats,H=j-k;if(H<=0||!isFinite(H))return R();const G=i.Grid.getRobustStats(N,{ignoreZero:!0}),{mean:z,sigma:W}=G;if(!isFinite(W)||W<=0||G.count===0)return R();const X=J=>(0,g.clamp)((J-k)/H,.001,.999),Y=X(z-.5*W),K=X(z+.5*W),Q=X(z+1.5*W);return V(Y,K,Q,T)}function O(N){const{min:k,max:j}=N.stats,H=j-k;if(H<=0||!isFinite(H))return R();const G=i.Grid.getRobustStats(N,{ignoreZero:!0}),{mean:z,sigma:W,p1:X}=G;if(!isFinite(W)||W<=0||G.count===0)return R();const Y=$=>(0,g.clamp)(($-k)/H,.001,.999),K=Y(Math.max(z-3*W,X)),Q=Y(z-W),J=Y(z),ae=(0,g.clamp)(K,.001,.997),te=(0,g.clamp)(Q,ae+.002,.998),ne=(0,g.clamp)(J,te+.002,.999);return[r.Vec2.create(ae,T),r.Vec2.create(te,T*.5),r.Vec2.create(ne,0)]}function F(N){const{min:k,max:j}=N.stats,H=j-k;if(H<=0||!isFinite(H)||k>=0)return R();const G=i.Grid.getRobustStats(N,{ignoreZero:!0}),{mean:z,sigma:W}=G;if(!isFinite(W)||W<=0||G.count===0)return R();const X=J=>(0,g.clamp)((J-k)/H,x,M),Y=[X(z-3*W),X(z+3*W)];Y.sort((J,ae)=>J-ae);const K=[];let Q=.012;Y[1]-Y[0]<2*(Q+A)&&(Q=Math.max(A+.001,(Y[1]-Y[0])/2-A));for(const J of Y){const ae=(0,g.clamp)(J,x,M),te=(0,g.clamp)(ae-Q,.001,.999),ne=(0,g.clamp)(ae-Q+A,.001,.999),$=(0,g.clamp)(ae+Q-A,.001,.999),ie=(0,g.clamp)(ae+Q,.001,.999);K.push(r.Vec2.create(te,0)),K.push(r.Vec2.create(ne,T)),K.push(r.Vec2.create($,T)),K.push(r.Vec2.create(ie,0))}return K}function L(N){const{min:k,max:j}=N.stats,H=j-k;if(H<=0||!isFinite(H))return R();const G=i.Grid.getRobustStats(N,{ignoreZero:!0}),{p1:z,p99:W}=G;if(!isFinite(W-z)||W<=z)return R();const X=ae=>(0,g.clamp)((ae-k)/H,.001,.999),Y=X(z),K=X(W),Q=(0,g.clamp)((Y+K)*.5,Y+.002,K-.002),J=[r.Vec2.create(Y,0),r.Vec2.create(Q,T*.5),r.Vec2.create(K,T)];return K<.997&&J.push(r.Vec2.create(.999,T)),J}function U(N){const{min:k,max:j}=N.stats,H=j-k;if(H<=0||!isFinite(H))return R();const G=i.Grid.getRobustStats(N,{ignoreZero:!0}),{mean:z,sigma:W,p99:X}=G;if(!isFinite(W)||W<=0)return R();const Y=ae=>(0,g.clamp)((ae-k)/H,.001,.999),K=Y(Math.max(z-W,k)),Q=Y(z+W),J=Y(X);return V(K,Q,J,.02)}function q(N){const k=N._directVolumeControlPointsPresets;if(k)return k;const{min:j,max:H}=N.stats,G=j<0,z=[[D(N),"Ramp (auto)"],[I(N),"Sharp surface (~+2σ)"],[B(N),"High contour (~+3σ)"],[w(N),"Low contour (~+1σ)"]];return(G||isFinite(H-j)&&N.stats.mean-j>H-N.stats.mean)&&z.push([O(N),"Tomogram (inverted)"]),G&&z.push([F(N),"Difference map (±3σ)"]),z.push([L(N),"Occupancy / probability"]),z.push([U(N),"Wide volumetric"]),N._directVolumeControlPointsPresets=z,z}})(yD)),yD}var vD={},h$;function ile(){return h$||(h$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}
7637),e.SegmentRepresentationProvider=e.SegmentParams=e.SegmentMeshParams=e.VolumeSegmentParams=void 0,e.SegmentVisual=M,e.eachSegment=R,e.createVolumeSegmentMesh=I,e.SegmentMeshVisual=B,e.SegmentTextureMeshVisual=L,e.getSegmentParams=N,e.SegmentRepresentation=k;const t=Ne(),r=sn(),n=Rt(),i=em(),c=Zf(),o=zt(),s=Lt(),h=_n(),f=gt(),y=Ge(),_=Vt(),g=$f(),a=Fl(),d=Tt(),p=Kr(),u=Jw(),m=os(),v=Na(),b=In(),P=nn(),C=Jf();e.VolumeSegmentParams={segments:t.ParamDefinition.Converted(j=>j.map(H=>`${H}`),j=>j.map(H=>parseInt(H)),t.ParamDefinition.MultiSelect(["0"],t.ParamDefinition.arrayToOptions(["0"]),{isEssential:!0}))};function l(j){return j.extensions.colorBufferFloat&&j.extensions.textureFloat&&j.extensions.drawBuffers}const S=1;function T(j,H){if(j.grid.cells.data.length<Math.pow(10,3))return!1;const G=j.grid.cells.space.dimensions,{powerOfTwoSize:z}=(0,g.getVolumeTexture2dLayout)(G,S);return z<=H.maxTextureSize/2}const A=(0,y.Mat4)();function x(j,H){const G=r.Grid.getGridToCartesianTransform(j),z=y.Mat4.fromTranslation(A,H.min);return y.Mat4.mul((0,y.Mat4)(),G,z)}function M(j,H,G,z,W){return z.tryUseGpu&&W&&l(W)&&T(H,W)?L(j):B(j)}function D(j,H){const G=v.SortedArray.ofUnsortedArray(H.segments),z=b.Interval.ofLength(j.instances.length);return r.Volume.Segment.Loci(j,[{segments:G,instances:z}])}function V(j,H,G,z,W){const{objectId:X,groupId:Y,instanceId:K}=j;if(W===X){const Q=r.Volume.PickingGranularity.get(H),J=P.OrderedSet.ofSingleton(K);if(Q==="volume")return r.Volume.Loci(H,J);if(Q==="object"||Y===h.PickingId.Null){const ae=P.OrderedSet.ofSingleton(G);return r.Volume.Segment.Loci(H,[{segments:ae,instances:J}])}else{const ae=b.Interval.ofSingleton(Y);return r.Volume.Cell.Loci(H,[{indices:ae,instances:J}])}}return f.EmptyLoci}function R(j,H,G,z,W){const X=v.SortedArray.ofSingleton(G);return(0,g.eachVolumeLoci)(j,H,{segments:X},W)}function E(j,H,G){const z=G.data,W=G.space.dataOffset,X=m.Box3D.size((0,y.Vec3)(),H),[Y,K,Q]=X,J=Y-1,ae=K-1,te=Q-1,[ne,$,ie]=H.min,[Z,re,oe]=H.max,ce=[...G.space.axisOrderSlowToFast],ue=y.Tensor.Space(X,ce,Uint8Array),pe=y.Tensor.create(ue,ue.create()),he=pe.data,fe=ue.set;for(let de=0;de<Q;++de)for(let ge=0;ge<K;++ge)for(let Ce=0;Ce<Y;++Ce){const ve=j.includes(z[W(Ce+ne,ge+$,de+ie)])?255:0,le=j.includes(z[W(Math.min(J+Z,Ce+1+ne),ge+$,de+ie)])?255:0,me=j.includes(z[W(Math.max(0,Ce-1+ne),ge+$,de+ie)])?255:0,ee=j.includes(z[W(Ce+ne,Math.min(ae+re,ge+1+$),de+ie)])?255:0,se=j.includes(z[W(Ce+ne,Math.max(0,ge-1+$),de+ie)])?255:0,ye=j.includes(z[W(Ce+ne,ge+$,Math.min(te+oe,de+1+ie))])?255:0,Se=j.includes(z[W(Ce+ne,ge+$,Math.max(0,de-1+ie))])?255:0;fe(he,Ce,ge,de,Math.round((ve+ve+le+me+ee+se+ye+Se)/8))}return pe}async function I(j,H,G,z,W,X){const Y=r.Volume.Segmentation.get(H);if(!Y)throw new Error("missing volume segmentation");j.runtime.update({message:"Marching cubes..."});const K=m.Box3D.clone(Y.bounds[G]);m.Box3D.expand(K,K,y.Vec3.create(2,2,2));const Q=Array.from(Y.segments.get(G).values()),J=E(Q,K,H.grid.cells),ae=(0,_.fillSerial)(new Int32Array(J.data.length)),te=await(0,i.computeMarchingCubesMesh)({isoLevel:128,scalarField:J,idField:y.Tensor.create(J.space,y.Tensor.Data1(ae))},X).runAsChild(j.runtime),ne=x(H.grid,K);n.Mesh.transform(te,ne),j.webgl&&!j.webgl.isWebGL2?(n.Mesh.uniformTriangleGroup(te,!1),p.ValueCell.updateIfChanged(te.varyingGroup,!1)):p.ValueCell.updateIfChanged(te.varyingGroup,!0);const $=b.Interval.ofLength(H.instances.length),ie=P.OrderedSet.ofSingleton(G);return te.setBoundingSphere(r.Volume.Segment.getBoundingSphere(H,[{segments:ie,instances:$}])),te}e.SegmentMeshParams={...n.Mesh.Params,...a.TextureMesh.Params,...e.VolumeSegmentParams,quality:{...n.Mesh.Params.quality,isEssential:!1},tryUseGpu:t.ParamDefinition.Boolean(!0)};function B(j){return(0,C.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.SegmentMeshParams),createGeometry:I,createLocationIterator:(H,G)=>{const z=r.Volume.Segment.Location(H,G);return(0,o.LocationIterator)(H.grid.cells.data.length,H.instances?H.instances.length:1,1,()=>z)},getLoci:V,eachLocation:R,setUpdateState:(H,G,z,W,X)=>{},geometryUtils:n.Mesh.Utils,mustRecreate:(H,G,z)=>G.tryUseGpu&&!!z&&T(H.volume,z)},j)}const w="segment-texture";function O(j,H,G){const z=r.Volume.Segmentation.get(j);if(!z)throw new Error("missing volume segmentation");const{resources:W}
7637=G,X=m.Box3D.clone(z.bounds[H]);m.Box3D.expand(X,X,y.Vec3.create(2,2,2));const Y=x(j.grid,X),K=m.Box3D.size((0,y.Vec3)(),X),{width:Q,height:J,powerOfTwoSize:ae}=(0,g.getVolumeTexture2dLayout)(K,S),te=y.Vec3.create(Q,J,0),ne=y.Vec3.clone(K),$=y.Vec2.create(Q/ae,J/ae);if(ae>G.maxTextureSize/2)throw new Error("volume too large for gpu segment extraction");G.namedTextures[w]||(G.namedTextures[w]=W.texture("image-uint8","alpha","ubyte","linear"));const ie=G.namedTextures[w];ie.define(ae,ae);const Z=Array.from(z.segments.get(H).values());return ie.load((0,g.createSegmentTexture2d)(j,Z,X,S),!0),K[0]+=S,K[1]+=S,{texture:ie,transform:Y,gridDimension:K,gridTexDim:te,gridDataDim:ne,gridTexScale:$}}async function F(j,H,G,z,W,X){if(!j.webgl)throw new Error("webgl context required to create volume segment texture-mesh");if(H.grid.cells.data.length<=1)return a.TextureMesh.createEmpty(X);const{texture:Y,gridDimension:K,gridTexDim:Q,gridDataDim:J,gridTexScale:ae,transform:te}=O(H,G,j.webgl),ne=H.grid.cells.space.axisOrderSlowToFast,$=X?.doubleBuffer.get(),ie=(0,u.extractIsosurface)(j.webgl,Y,K,Q,J,ae,te,.5,!1,!1,ne,!0,$?.vertex,$?.group,$?.normal),Z=H.grid.cells.data.length,re=b.Interval.ofLength(H.instances.length),oe=P.OrderedSet.ofSingleton(G),ce=r.Volume.Segment.getBoundingSphere(H,[{segments:oe,instances:re}]);return a.TextureMesh.create(ie.vertexCount,Z,ie.vertexTexture,ie.groupTexture,ie.normalTexture,ce,X)}function L(j){return(0,C.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.SegmentMeshParams),createGeometry:F,createLocationIterator:(H,G)=>{const z=r.Volume.Segment.Location(H,G);return(0,o.LocationIterator)(H.grid.cells.data.length,H.instances?H.instances.length:1,1,()=>z)},getLoci:V,eachLocation:R,setUpdateState:(H,G,z,W,X)=>{},geometryUtils:a.TextureMesh.Utils,mustRecreate:(H,G,z)=>!G.tryUseGpu||!z||!T(H.volume,z),dispose:H=>{H.vertexTexture.ref.value.destroy(),H.groupTexture.ref.value.destroy(),H.normalTexture.ref.value.destroy(),H.doubleBuffer.destroy()}},j)}function U(j,H){return v.SortedArray.ofUnsortedArray(j.segments)}const q={segment:(j,H)=>(0,c.VolumeRepresentation)("Segment mesh",j,H,M,D,U)};e.SegmentParams={...e.SegmentMeshParams,visuals:t.ParamDefinition.MultiSelect(["segment"],t.ParamDefinition.objectToOptions(q)),bumpFrequency:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},d.BaseGeometry.ShadingCategory)};function N(j,H){const G=t.ParamDefinition.clone(e.SegmentParams),z=r.Volume.Segmentation.get(H);if(z){const W=Array.from(z.segments.keys());G.segments=t.ParamDefinition.Converted(X=>X.map(Y=>`${Y}`),X=>X.map(Y=>parseInt(Y)),t.ParamDefinition.MultiSelect(W.map(X=>`${X}`),t.ParamDefinition.arrayToOptions(W.map(X=>`${X}`)),{isEssential:!0}))}return G}function k(j,H){return s.Representation.createMulti("Segment",j,H,s.Representation.StateBuilder,q)}e.SegmentRepresentationProvider=(0,c.VolumeRepresentationProvider)({name:"segment",label:"Segment",description:"Displays a triangulated segment of volumetric data.",factory:k,getParams:N,defaultValues:t.ParamDefinition.getDefaultValues(e.SegmentParams),defaultColorTheme:{name:"volume-segment"},defaultSizeTheme:{name:"uniform"},isApplicable:j=>!r.Volume.isEmpty(j)&&!!r.Volume.Segmentation.get(j)})})(vD)),vD}var bD={},g$;function ale(){return g$||(g$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DotRepresentationProvider=e.DotParams=e.VolumePointParams=e.VolumeSphereParams=e.VolumeDotParams=void 0,e.VolumeSphereVisual=S,e.VolumeSphereImpostorVisual=T,e.VolumeSphereMeshVisual=A,e.createVolumeSphereImpostor=R,e.createVolumeSphereMesh=E,e.VolumePointVisual=I,e.createVolumePoint=B,e.getDotParams=U,e.DotRepresentation=q;const t=Ne(),r=sn(),n=Rt(),i=Zf(),c=Lt(),o=_n(),s=gt(),h=$f(),f=Tt(),y=ro(),_=$t(),g=P2(),a=wt(),d=Jn(),p=Xf(),u=ic(),m=AZ(),v=Ge(),b=In(),P=nn(),C=Dn(),l=Jf();e.VolumeDotParams={isoValue:r.Volume.IsoValueParam,perturbPositions:t.ParamDefinition.Boolean(!1)},e.VolumeSphereParams={...y.Spheres.Params,...n.Mesh.Params,...e.VolumeDotParams,tryUseImpostor:t.ParamDefinition.Boolean(!0),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},f.BaseGeometry.CustomQualityParamInfo)};function S(N,k,j,H,G){return H.tryUseImpostor&&G&&G.extensions.fragDepth&&G.extensions.textureFloat?T(N):A(N)}function T(N){return(0,l.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.VolumeSphereParams),createGeometry:R,createLocationIterator:h.createV
7637olumeCellLocationIterator,getLoci:O,eachLocation:F,setUpdateState:(k,j,H,G,z,W,X)=>{k.createGeometry=!r.Volume.IsoValue.areSame(G.isoValue,z.isoValue,j.grid.stats)||G.perturbPositions!==z.perturbPositions||G.lodLevels.length>0&&z.lodLevels.length===0},geometryUtils:y.Spheres.Utils,mustRecreate:(k,j,H)=>!j.tryUseImpostor||!H},N)}function A(N){return(0,l.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.VolumeSphereParams),createGeometry:E,createLocationIterator:h.createVolumeCellLocationIterator,getLoci:O,eachLocation:F,setUpdateState:(k,j,H,G,z,W,X)=>{k.createGeometry=!r.Volume.IsoValue.areSame(G.isoValue,z.isoValue,j.grid.stats)||G.perturbPositions!==z.perturbPositions||G.sizeFactor!==z.sizeFactor||G.detail!==z.detail},geometryUtils:n.Mesh.Utils,mustRecreate:(k,j,H)=>j.tryUseImpostor&&!!H},N)}function x(N){return{...v.Mat4.extractBasis(N),maxScale:v.Mat4.getMaxScaleOnAxis(N)}}const M=new C.PCG,D=(0,a.Vec3)();function V({x:N,y:k,z:j,maxScale:H}){const G=(M.float()-.5)*H,z=(M.float()-.5)*H,W=(M.float()-.5)*H;return a.Vec3.scale(D,N,G),a.Vec3.scaleAndAdd(D,D,k,z),a.Vec3.scaleAndAdd(D,D,j,W),D}function R(N,k,j,H,G,z){const{cells:{space:W,data:X},stats:Y}=k.grid,K=r.Grid.getGridToCartesianTransform(k.grid),Q=r.Volume.IsoValue.toAbsolute(G.isoValue,Y).absoluteValue,J=(0,a.Vec3)(),[ae,te,ne]=W.dimensions,$=Q<0,ie=G.perturbPositions?x(K):void 0,Z=Math.ceil(ae*te*ne/10),re=g.SpheresBuilder.create(Z,Math.ceil(Z/2),z),oe=(pe,he,fe)=>{const de=W.get(X,pe,he,fe);if(!$&&de<Q||$&&de>Q)return;const ge=W.dataOffset(pe,he,fe);a.Vec3.set(J,pe,he,fe),a.Vec3.transformMat4(J,J,K),ie&&a.Vec3.add(J,J,V(ie)),re.add(J[0],J[1],J[2],ge)};if(G.lodLevels.length>0){let pe=1;for(;pe<ae||pe<te||pe<ne;)pe<<=1;const he=(fe,de,ge,Ce)=>{if(fe>=ae||de>=te||ge>=ne)return;if(Ce===1){oe(fe,de,ge);return}const ve=Ce>>1;he(fe,de,ge,ve),he(fe,de,ge+ve,ve),he(fe,de+ve,ge,ve),he(fe,de+ve,ge+ve,ve),he(fe+ve,de,ge,ve),he(fe+ve,de,ge+ve,ve),he(fe+ve,de+ve,ge,ve),he(fe+ve,de+ve,ge+ve,ve)};he(0,0,0,pe)}else for(let pe=0;pe<ne;++pe)for(let he=0;he<te;++he)for(let fe=0;fe<ae;++fe)oe(fe,he,pe);const ue=re.getSpheres();return ue.setBoundingSphere(r.Grid.getIsosurfaceBoundingSphere(k.grid,r.Volume.IsoValue.toAbsolute(G.isoValue,k.grid.stats).absoluteValue)),ue}function E(N,k,j,H,G,z){const{detail:W,sizeFactor:X}=G,{cells:{space:Y,data:K},stats:Q}=k.grid,J=r.Grid.getGridToCartesianTransform(k.grid),ae=r.Volume.IsoValue.toAbsolute(G.isoValue,Q).absoluteValue,te=(0,a.Vec3)(),[ne,$,ie]=Y.dimensions,re=Math.ceil(ne*$*ie/10)*(0,p.sphereVertexCount)(W),oe=_.MeshBuilder.createState(re,Math.ceil(re/2),z),ce=r.Volume.Cell.Location(k),ue=H.size.size,pe=ae<0,he=G.perturbPositions?x(J):void 0;for(let de=0;de<ie;++de)for(let ge=0;ge<$;++ge)for(let Ce=0;Ce<ne;++Ce){const ve=Y.get(K,Ce,ge,de);if(!pe&&ve<ae||pe&&ve>ae)continue;const le=Y.dataOffset(Ce,ge,de);ce.cell=le;const me=ue(ce)*X;if(he){a.Vec3.set(te,Ce,ge,de),a.Vec3.transformMat4(te,te,J);const ee=V(he);a.Vec3.add(te,te,ee)}else a.Vec3.set(te,Ce,ge,de),a.Vec3.transformMat4(te,te,J);oe.currentGroup=le,(0,d.addSphere)(oe,te,me,W)}const fe=_.MeshBuilder.getMesh(oe);return fe.setBoundingSphere(r.Grid.getIsosurfaceBoundingSphere(k.grid,r.Volume.IsoValue.toAbsolute(G.isoValue,k.grid.stats).absoluteValue)),fe}e.VolumePointParams={...u.Points.Params,...e.VolumeDotParams};function I(N){return(0,l.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.VolumePointParams),createGeometry:B,createLocationIterator:h.createVolumeCellLocationIterator,getLoci:O,eachLocation:F,setUpdateState:(k,j,H,G,z,W,X)=>{k.createGeometry=!r.Volume.IsoValue.areSame(G.isoValue,z.isoValue,j.grid.stats)||G.perturbPositions!==z.perturbPositions},geometryUtils:u.Points.Utils},N)}function B(N,k,j,H,G,z){const{cells:{space:W,data:X},stats:Y}=k.grid,K=r.Grid.getGridToCartesianTransform(k.grid),Q=r.Volume.IsoValue.toAbsolute(G.isoValue,Y).absoluteValue,J=(0,a.Vec3)(),[ae,te,ne]=W.dimensions,$=Math.ceil(ae*te*ne/10),ie=m.PointsBuilder.create($,Math.ceil($/2),z),Z=Q<0,re=G.perturbPositions?x(K):void 0;for(let ce=0;ce<ne;++ce)for(let ue=0;ue<te;++ue)for(let pe=0;pe<ae;++pe){const he=W.get(X,pe,ue,ce);if(!Z&&he<Q||Z&&he>Q)continue;const fe=W.dataOffset(pe,ue,ce);if(re){a.Vec3.set(J,pe,ue,ce),a.Vec3.transformMat4(J,J,K);const de=V(re);a.Vec3.add(J,J,de)}else a.Vec3.set(J,pe,ue,ce),a.Vec3.transformMat4(J,J,K);ie.add(J[0],J[1],J[2],fe)}const oe=ie.getPoints();return oe.setBoundingSphere(r.Grid.getIsosurfaceBoundingSphere(k.grid,r.Volume.IsoValue.toAbsolute(G.isoValue,k.grid.stats).absoluteValue)),oe}function w(N,k){const j=b.Interval.ofLength(N.instances.length);return r.Volume.Isosurface.Loci(N,k.isoValue,j)}function O(N,k,j,H,G){const{objectId:z,groupId:W,instanceId:X}=N;if(G===z){const Y=r.Volume.PickingGranularity.get(k),K=P.OrderedSet.ofSingleton(X);if(Y==="volume")return r.Volume.Loci(k,K);if(Y==="object"||W===o.PickingId.Null)return r.Volume.Isosurface.Loci(k,H.isoValue,K);{const Q=b.Interval.ofSingleton(W);return r.Volume.Cell.Loci(k,[{indices:Q,instances:K}])}}return s.EmptyLoci}function F(N,k,j,H,G){return(0,h.eachVolumeLoci)(N,k,{isoValue:H.isoValue},G)}
7637const L={sphere:(N,k)=>(0,i.VolumeRepresentation)("Dot sphere",N,k,S,w),point:(N,k)=>(0,i.VolumeRepresentation)("Dot point",N,k,I,w)};e.DotParams={...e.VolumeSphereParams,...e.VolumePointParams,sizeFactor:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),visuals:t.ParamDefinition.MultiSelect(["sphere"],t.ParamDefinition.objectToOptions(L)),bumpFrequency:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},f.BaseGeometry.ShadingCategory)};function U(N,k){const j=t.ParamDefinition.clone(e.DotParams);return j.isoValue=r.Volume.createIsoValueParam(r.Volume.IsoValue.relative(2),k.grid.stats),j}function q(N,k){return c.Representation.createMulti("Dot",N,k,c.Representation.StateBuilder,L)}e.DotRepresentationProvider=(0,i.VolumeRepresentationProvider)({name:"dot",label:"Dot",description:"Displays dots of volumetric data.",factory:q,getParams:U,defaultValues:t.ParamDefinition.getDefaultValues(e.DotParams),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"uniform"},locationKinds:["cell-location","position-location"],isApplicable:N=>!r.Volume.isEmpty(N)&&!r.Volume.Segmentation.get(N)})})(bD)),bD}var y$;function DZ(){if(y$)return mf;y$=1,Object.defineProperty(mf,"__esModule",{value:!0}),mf.VolumeRepresentationRegistry=void 0;const e=Lt(),t=tle(),r=vr(),n=rle(),i=nle(),c=ile(),o=ale();class s extends e.RepresentationRegistry{constructor(){super(),(0,r.objectForEach)(s.BuiltIn,(f,y)=>{if(f.name!==y)throw new Error(`Fix BuiltInVolumeRepresentations to have matching names. ${f.name} ${y}`);this.add(f)})}}return mf.VolumeRepresentationRegistry=s,(function(h){h.BuiltIn={"direct-volume":i.DirectVolumeRepresentationProvider,dot:o.DotRepresentationProvider,isosurface:t.IsosurfaceRepresentationProvider,segment:c.SegmentRepresentationProvider,slice:n.SliceRepresentationProvider}})(s||(mf.VolumeRepresentationRegistry=s={})),mf}var C_={},v$;function ole(){if(v$)return C_;v$=1,Object.defineProperty(C_,"__esModule",{value:!0}),C_.PluginAnimationLoop=void 0;const e=ci(),t=Ct(),r=Cw(),n=1e3/30;class i{get isAnimating(){return this._isAnimating}async tick(o,s){var h,f;if(await this.plugin.managers.animation.tick(o,s?.isSynchronous,s?.animation),(h=this.plugin.canvas3d)===null||h===void 0||h.tick(o,s),t.isTimingMode){const y=(f=this.plugin.canvas3d)===null||f===void 0?void 0:f.webgl.timer.resolve();if(y)for(const _ of y)(0,r.printTimerResults)([_])}}resetTime(o){var s;(s=this.plugin.canvas3d)===null||s===void 0||s.resetTime(o)}start(o){var s,h;(s=this.plugin.canvas3d)===null||s===void 0||s.resume(),this._isAnimating=!0,this.resetTime(0),this.properTimeT=0,this.lastTickT=(0,e.now)(),o?.immediate?this.frame():this.currentFrame=(h=this.plugin.canvas3d)===null||h===void 0?void 0:h.requestAnimationFrame(this.frame)}stop(o){var s,h;this._isAnimating=!1,this.currentFrame!==void 0&&((s=this.plugin.canvas3d)===null||s===void 0||s.cancelAnimationFrame(this.currentFrame),this.currentFrame=void 0),o?.noDraw&&((h=this.plugin.canvas3d)===null||h===void 0||h.pause(o?.noDraw))}constructor(o){this.plugin=o,this.lastTickT=0,this.properTimeT=0,this.currentFrame=void 0,this._isAnimating=!1,this.frame=(s,h)=>{var f;const y=(0,e.now)(),_=y-this.lastTickT;this.lastTickT=y,this.properTimeT+=Math.min(_,n),this.tick(this.properTimeT,{xrFrame:h}),this._isAnimating&&(this.currentFrame=(f=this.plugin.canvas3d)===null||f===void 0?void 0:f.requestAnimationFrame(this.frame))}}}return C_.PluginAnimationLoop=i,C_}var P_={},b$;function sle(){if(b$)return P_;b$=1,Object.defineProperty(P_,"__esModule",{value:!0}),P_.SubstructureParentHelper=void 0;const e=jt(),t=Et(),r=Nl();class n{getDecorator(c){const o=this.plugin.state.data.tree,s=o.children.get(c);if(s.size!==1)return c;const h=s.first();return h&&o.transforms.get(h).transformer.definition.isDecorator?this.getDecorator(h):c}get(c,o=!1){const s=this.root.get(c);if(s)return o?this.plugin.state.data.cells.get(s.ref):this.plugin.state.data.cells.get(this.getDecorator(s.ref))}addMapping(c,o,s){if(!e.PluginStateObject.Molecule.Structure.is(s))return!1;if(this.tracked.set(o,s.data),this.root.has(s.data)){const h=this.root.get(s.data);h.count++}else{const h=c.select(t.StateSelection.Generators.byRef(o).rootOfType([e.PluginStateObject.Molecule.Structure]))[0];h?this.root.set(s.data,{ref:h.transform.ref,count:1}):this.root.set(s.data,{ref:o,count:1})}return!0}removeMapping(c){if(!this.tracked.has(c))return!1;const o=this.tracked.get(c);this.tracked.delete(c);const s=this.root.get(o);return s.count>1?s.count--:this.root.delete(o),!0}updateMapping(c,o,s,h){return e.PluginStateObject.Molecule.Structure.is(h)?(this.removeMapping(o),this.addMapping(c,o,h),!0):!1}dispose(){this.ev.dispose()}constructor(c){this.plugin=c,this.ev=r.RxEventHelper.create(),this.events={updated:this.ev(),removed:this.ev()},this.root=new Map,this.tracked=new Map,c.state.data.events.object.created.subscribe(o=>{this.addMapping(o.state,o.ref,o.obj)}),c.state.data.events.object.removed.subscribe(o=>{this.removeMapping(o.ref)&&this.events.removed.next({ref:o.ref,obj:o.obj})}),c.state.data.events.object.updated.subscribe(o=>{this.updateMapping(o.state,o.ref,o.oldObj,o.obj)&&this.events.updated.next({ref:o.ref,oldObj:o.oldObj,obj:o.obj})})}}return P_.SubstructureParentHelper=n,P_}var pf={},_$;function cle(){if(_$)return pf;
7637_$=1,Object.defineProperty(pf,"__esModule",{value:!0}),pf.TaskManager=void 0;const e=nt(),t=Nl(),r=ci(),n=$$(),i=Vt();class c{constructor(){this.ev=t.RxEventHelper.create(),this.id=0,this.runningTasks=new Set,this.abortRequests=new Map,this.options=new Map,this.currentContext=[],this.events={progress:this.ev(),finished:this.ev()}}tryGetAbortTaskId(s){if(this.abortRequests.has(s.progress.taskId))return s.progress.taskId;for(const h of s.children){const f=this.tryGetAbortTaskId(h);if(f!==void 0)return f}}track(s,h){return f=>{var y;if(f.canAbort&&f.requestAbort){const g=this.tryGetAbortTaskId(f.root);g!==void 0&&f.requestAbort(this.abortRequests.get(g))}const _=(0,r.now)()-f.root.progress.startedTime;this.events.progress.next({id:s,useOverlay:(y=this.options.get(h))===null||y===void 0?void 0:y.useOverlay,level:_<250?"none":"background",progress:f})}}async run(s,h){const f=this.id++;let y;h?.createNewContext||this.currentContext.length===0?y={ctx:(0,n.CreateObservableCtx)(s,this.track(f,s.id),100),refCount:1}:(y=this.currentContext[this.currentContext.length-1],y.refCount++);try{return this.options.set(s.id,{useOverlay:!!h?.useOverlay}),this.runningTasks.add(s.id),await(0,n.ExecuteInContext)(y.ctx,s)}finally{this.options.delete(s.id),this.runningTasks.delete(s.id),this.events.finished.next({id:f}),this.abortRequests.delete(s.id),y.refCount--,y.refCount===0&&(0,i.arrayRemoveInPlace)(this.currentContext,y)}}requestAbortAll(s){this.runningTasks.forEach(h=>this.abortRequests.set(h,s))}requestAbort(s,h){const f=typeof s=="number"?s:s.root.progress.taskId;this.abortRequests.set(f,h)}dispose(){this.ev.dispose()}}return pf.TaskManager=c,(function(o){function s(f){return new Promise(y=>setTimeout(y,f))}function h(f){return e.Task.create("Test",async y=>{let _=0;for(;_<f;)await s(100+Math.random()*200),y.shouldUpdate&&await y.update({message:"Step "+_,current:_,max:f,isIndeterminate:!1}),_++})}o.testTask=h})(c||(pf.TaskManager=c={})),pf}var T_={},S$;function ule(){if(S$)return T_;S$=1,Object.defineProperty(T_,"__esModule",{value:!0}),T_.PluginToastManager=void 0;const e=Vi(),t=Ff,r=Sn();class n extends e.StatefulPluginComponent{findByKey(c){return this.state.entries.find(o=>!!o&&o.key===c)}show(c){let o=this.state.entries,s;const h=++this.serialId;let f;c.key&&(s=this.findByKey(c.key))?(s.timeout!==void 0&&clearTimeout(s.timeout),f=s.serialNumber,o=o.remove(s.id)):f=++this.serialNumber,s={id:h,serialNumber:f,key:c.key,title:c.title,message:c.message,timeout:this.timeout(h,c.timeoutMs),hide:()=>this.hideId(h)},this.updateState({entries:o.set(h,s)})&&this.events.changed.next(void 0)}timeout(c,o){if(o!==void 0)return o<0&&(o=500),setTimeout(()=>{const s=this.state.entries.get(c);s.timeout=void 0,this.hide(s)},o)}hideId(c){this.hide(this.state.entries.get(c))}hide(c){c&&(c.timeout!==void 0&&clearTimeout(c.timeout),c.hide=void 0,this.updateState({entries:this.state.entries.delete(c.id)})&&this.events.changed.next(void 0))}constructor(c){super({entries:(0,t.OrderedMap)()}),this.events={changed:this.ev()},this.serialNumber=0,this.serialId=0,r.PluginCommands.Toast.Show.subscribe(c,o=>this.show(o)),r.PluginCommands.Toast.Hide.subscribe(c,o=>this.hide(this.findByKey(o.key)))}}return T_.PluginToastManager=n,T_}var x_={},C$;function lle(){if(C$)return x_;C$=1,Object.defineProperty(x_,"__esModule",{value:!0}),x_.ViewportScreenshotHelper=void 0;const e=YS(),t=Hw(),r=rn(),n=Vi(),i=jt(),c=Et(),o=nt(),s=vt(),h=uZ(),f=Ne(),y=Hi();function _(){const a=document.createElement("canvas");return a.getContext&&a.getContext("2d")?a.toDataURL("image/webp").indexOf("data:image/webp")===0:!1}class g extends n.PluginComponent{createParams(){let d=8192;if(this.plugin.canvas3d){const{webgl:p}=this.plugin.canvas3d;d=Math.floor(Math.min(p.maxRenderbufferSize,p.maxTextureSize)/2)}return{resolution:f.ParamDefinition.MappedStatic("viewport",{viewport:f.ParamDefinition.Group({}),hd:f.ParamDefinition.Group({}),"full-hd":f.ParamDefinition.Group({}),"ultra-hd":f.ParamDefinition.Group({}),"8k-ultra-hd":f.ParamDefinition.Group({}),custom:f.ParamDefinition.Group({width:f.ParamDefinition.Numeric(1920,{min:128,max:d,step:1}),height:f.ParamDefinition.Numeric(1080,{min:128,max:d,step:1})},{isFlat:!0})},{options:[["viewport","Viewport"],["hd","HD (1280 x 720)"],["full-hd","Full HD (1920 x 1080)"],["ultra-hd","Ultra HD (3840 x 2160)"],["8k-ultra-hd","8K Ultra HD (7680 x 4320)"],["custom","Custom"]]}),format:f.ParamDefinition.MappedStatic("png",{png:f.ParamDefinition.Group({}),webp:f.ParamDefinition.Group({quality:f.ParamDefinition.Numeric(.9,{min:0,max:1,step:.
763701})}),jpeg:f.ParamDefinition.Group({quality:f.ParamDefinition.Numeric(.9,{min:0,max:1,step:.01})})},{options:[["png","PNG"],["jpeg","JPEG"],..._()?[["webp","WebP"]]:[]]}),transparent:f.ParamDefinition.Boolean(!1),axes:e.CameraHelperParams.axes,illumination:f.ParamDefinition.Group({extraIterations:f.ParamDefinition.Numeric(1,{min:0,max:5,step:1}),targetIterationTimeMs:f.ParamDefinition.Numeric(300,{min:100,max:3e3,step:10})})}}get params(){return this._params?this._params:this._params=this.createParams()}get values(){return this.behaviors.values.value}get cropParams(){return this.behaviors.cropParams.value}get relativeCrop(){return this.behaviors.relativeCrop.value}getCanvasSize(){var d,p;return{width:((d=this.plugin.canvas3d)===null||d===void 0?void 0:d.webgl.gl.drawingBufferWidth)||0,height:((p=this.plugin.canvas3d)===null||p===void 0?void 0:p.webgl.gl.drawingBufferHeight)||0}}getSize(){const d=this.values;switch(d.resolution.name){case"viewport":return this.getCanvasSize();case"hd":return{width:1280,height:720};case"full-hd":return{width:1920,height:1080};case"ultra-hd":return{width:3840,height:2160};case"8k-ultra-hd":return{width:7680,height:4320};default:return{width:d.resolution.params.width,height:d.resolution.params.height}}}getPostprocessingProps(){const d=this.plugin.canvas3d,p=d.props.postprocessing.occlusion;return{...d.props.postprocessing,occlusion:p.name==="on"?{name:"on",params:{...p.params,samples:128,resolutionScale:d.webgl.pixelRatio,transparentThreshold:1}}:p}}getIlluminationProps(d){const u=this.plugin.canvas3d.props.illumination,{extraIterations:m,targetIterationTimeMs:v}=this.values.illumination;return{...u,enabled:d?!1:u.enabled,maxIterations:Math.ceil(Math.log2(Math.pow(2,u.maxIterations+m)*u.rendersPerFrame[1])),targetFps:1e3/v,denoiseThreshold:[u.denoiseThreshold[0],u.denoiseThreshold[0]],rendersPerFrame:[1,1]}}createPass(d){const p=this.plugin.canvas3d,{colorBufferFloat:u,textureFloat:m}=p.webgl.extensions;return p.getImagePass({transparentBackground:this.values.transparent,cameraHelper:{axes:this.values.axes},multiSample:{...p.props.multiSample,mode:d?"off":"on",sampleLevel:u&&m?4:2,reuseOcclusion:!1},postprocessing:this.getPostprocessingProps(),marking:{...p.props.marking},illumination:this.getIlluminationProps(d)})}get previewPass(){return this._previewPass||(this._previewPass=this.createPass(!0))}get imagePass(){if(this._imagePass){const d=this.plugin.canvas3d;return this._imagePass.setProps({cameraHelper:{axes:this.values.axes},transparentBackground:this.values.transparent,postprocessing:this.getPostprocessingProps(),marking:{...d.props.marking},illumination:this.getIlluminationProps(!1)}),this._imagePass}return this._imagePass=this.createPass(!1)}getFilename(d){typeof d!="string"&&(d=this.extension);const p=this.plugin.state.data.select(c.StateSelection.Generators.rootsOfType(i.PluginStateObject.Molecule.Model)).map(v=>v.obj.data),u=new Set;return p.forEach(v=>u.add(v.entryId.toUpperCase())),`${y.SetUtils.toArray(u).join("-")||"molstar-image"}${d}`}resetCrop(){this.behaviors.relativeCrop.next({x:0,y:0,width:1,height:1})}toggleAutocrop(){this.cropParams.auto?(this.behaviors.cropParams.next({...this.cropParams,auto:!1}),this.resetCrop()):this.behaviors.cropParams.next({...this.cropParams,auto:!0})}get isFullFrame(){const d=this.relativeCrop;return(0,r.equalEps)(d.x,0,1e-5)&&(0,r.equalEps)(d.y,0,1e-5)&&(0,r.equalEps)(d.width,1,1e-5)&&(0,r.equalEps)(d.height,1,1e-5)}autocrop(d=this.cropParams.relativePadding){const{data:p,width:u,height:m}=this.previewData.image,v=this.previewData.transparent,b=v?this.previewData.background:4278190080|this.previewData.background;let P=u,C=0,l=m,S=0;for(let M=0;M<m;M++){const D=M*u;for(let V=0;V<u;V++){const R=4*(D+V);if(v){if(p[R+3]===0)continue}else if((p[R]<<16|p[R+1]<<8|p[R+2]|p[R+3]<<24)===b)continue;V<P&&(P=V),V>C&&(C=V),M<l&&(l=M),M>S&&(S=M)}}if(P>C){const M=P;P=C,C=M}if(l>S){const M=l;l=S,S=M}const T=C-P+1,A=S-l+1;P-=d*T,C+=d*T,l-=d*A,S+=d*A;const x={x:Math.max(0,P/u),y:Math.max(0,l/m),width:Math.min(1,(C-P+1)/u),height:Math.min(1,(S-l+1)/m)};this.behaviors.relativeCrop.next(x)}async getPreview(d,p=320){const{width:u,height:m}=this.getSize();if(u<=0||m<=0)return;const v=u/m;let b=0,P=0;v>1?(b=p,P=Math.round(p/v)):(P=p,b=Math.round(p*v));const C=this.plugin.canvas3d.props;this.previewPass.setProps({cameraHelper:{axes:this.values.axes}
7637,transparentBackground:this.values.transparent,postprocessing:C.postprocessing,marking:C.marking});const l=await this.previewPass.getImageData(d,b,P),S=this.previewCanvas;S.width=l.width,S.height=l.height,this.previewData.image=l,this.previewData.background=C.renderer.backgroundColor,this.previewData.transparent=this.values.transparent;const T=S.getContext("2d");if(!T)throw new Error("Could not create canvas 2d context");return T.putImageData(l,0,0),this.cropParams.auto&&this.autocrop(),this.events.previewed.next(void 0),{canvas:S,width:b,height:P}}getSizeAndViewport(){const{width:d,height:p}=this.getSize(),u=this.relativeCrop,m={x:Math.floor(u.x*d),y:Math.floor(u.y*p),width:Math.ceil(u.width*d),height:Math.ceil(u.height*p)};return m.width+m.x>d&&(m.width=d-m.x),m.height+m.y>p&&(m.height=p-m.y),{width:d,height:p,viewport:m}}async draw(d){const{width:p,height:u,viewport:m}=this.getSizeAndViewport();if(!(p<=0||u<=0)){this.plugin.animationLoop.stop({noDraw:!0});try{await d.update("Rendering image...");const v=this.imagePass;
7637await v.updateBackground();const b=await v.getImageData(d,p,u,m);await d.update("Encoding image...");const P=this.canvas;P.width=b.width,P.height=b.height;const C=P.getContext("2d");if(!C)throw new Error("Could not create canvas 2d context");C.putImageData(b,0,0)}finally{this.plugin.animationLoop.start({immediate:!0})}}}copyToClipboardTask(){const d=navigator.clipboard;if(!d?.write){this.plugin.log.error("clipboard.write not supported!");return}return o.Task.create("Copy Image",async p=>{await this.draw(p),await p.update("Converting image...");const u=this.mimeType,m=await(0,t.canvasToBlob)(this.canvas,u,this.quality),v=new ClipboardItem({[u]:m});await d.write([v]),this.plugin.log.message("Image copied to clipboard.")})}get mimeType(){var d,p;return`image/${(p=(d=this.values.format)===null||d===void 0?void 0:d.name)!==null&&p!==void 0?p:"png"}`}get extension(){var d,p,u;return((d=this.values.format)===null||d===void 0?void 0:d.name)==="jpeg"?".jpg":`.${(u=(p=this.values.format)===null||p===void 0?void 0:p.name)!==null&&u!==void 0?u:"png"}`}get quality(){var d,p,u,m;switch((d=this.values.format)===null||d===void 0?void 0:d.name){case"webp":case"jpeg":return(m=(u=(p=this.values.format)===null||p===void 0?void 0:p.params)===null||u===void 0?void 0:u.quality)!==null&&m!==void 0?m:.9;default:return}}getImageDataUri(){return this.plugin.runTask(o.Task.create("Generate Image",async d=>(await this.draw(d),await d.update("Converting image..."),this.canvas.toDataURL(this.mimeType))))}copyToClipboard(){const d=this.copyToClipboardTask();if(d)return this.plugin.runTask(d)}downloadTask(d){return o.Task.create("Download Image",async p=>{await this.draw(p),await p.update("Downloading image...");const u=await(0,t.canvasToBlob)(this.canvas,this.mimeType,this.quality);(0,h.download)(u,d??this.getFilename(this.extension))})}download(d){return this.plugin.runTask(this.downloadTask(d),{useOverlay:!0})}constructor(d){super(),this.plugin=d,this._params=void 0,this.behaviors={values:this.ev.behavior({transparent:this.params.transparent.defaultValue,format:{name:"png",params:{}},axes:{name:"off",params:{}},resolution:this.params.resolution.defaultValue,illumination:this.params.illumination.defaultValue}),cropParams:this.ev.behavior({auto:!0,relativePadding:.1}),relativeCrop:this.ev.behavior({x:0,y:0,width:1,height:1})},this.events={previewed:this.ev()},this.canvas=(function(){return document.createElement("canvas")})(),this.previewCanvas=(function(){return document.createElement("canvas")})(),this.previewData={image:{data:new Uint8ClampedArray(1),width:1,height:0},background:(0,s.Color)(0),transparent:!1}}}return x_.ViewportScreenshotHelper=g,x_}var A_={},ml={},P$;function IZ(){if(P$)return ml;P$=1,Object.defineProperty(ml,"__esModule",{value:!0}),ml.DownloadFile=ml.OpenFiles=void 0;const e=Et(),t=nt(),r=Ha(),n=S2(),i=Ne(),c=iS(),o=jt();async function s(h,f,y,_){var g,a,d,p;const u=(0,n.getFileNameInfo)((a=(g=h.file)===null||g===void 0?void 0:g.name)!==null&&a!==void 0?a:""),m=f.dataFormats.binaryExtensions.has(u.ext),{data:v}=await f.builders.data.readFile({file:h,isBinary:m}),b=y==="auto"?f.dataFormats.auto(u,(d=v.cell)===null||d===void 0?void 0:d.obj):f.dataFormats.get(y);if(!b){f.log.warn(`OpenFiles: could not find data provider for '${u.ext}'`),await f.state.data.build().delete(v).commit();return}const P=await b.parse(f,v);_&&await((p=b.visuals)===null||p===void 0?void 0:p.call(b,f,P))}return ml.OpenFiles=e.StateAction.build({display:{name:"Open Files",description:"Load one or more files and optionally create default visuals"},from:o.PluginStateObject.Root,params:(h,f)=>{const{extensions:y,options:_}=f.dataFormats;return{files:i.ParamDefinition.FileList({accept:Array.from(y.values()).map(g=>`.${g}`).join(",")+",.gz,.zip",multiple:!0}),format:i.ParamDefinition.MappedStatic("auto",{auto:i.ParamDefinition.EmptyGroup(),specific:i.ParamDefinition.Select(_[0][0],_)}),visuals:i.ParamDefinition.Boolean(!0,{description:"Add default visuals"})}}})(({params:h,state:f},y)=>t.Task.create("Open Files",async _=>{y.behaviors.layout.leftPanelTabName.next("data"),await f.transaction(async()=>
7637{if(h.files===null){y.log.error("No file(s) selected");return}for(const g of h.files)try{if(g.file&&g.name.toLowerCase().endsWith(".zip")){const a=await(0,c.unzip)(_,await g.file.arrayBuffer());for(const[d,p]of Object.entries(a)){if(!(p instanceof Uint8Array)||p.length===0)continue;const u=r.Asset.File(new File([p],d));await s(u,y,"auto",h.visuals)}}else{const a=h.format.name==="auto"?"auto":h.format.params;await s(g,y,a,h.visuals)}}catch(a){console.error(a),y.log.error(`Error opening file '${g.name}'`)}}).runInContext(_)})),ml.DownloadFile=e.StateAction.build({display:{name:"Download File",description:"Load one or more file from an URL"},from:o.PluginStateObject.Root,params:(h,f)=>{const y=[...f.dataFormats.options,["zip","Zip"],["gzip","Gzip"]];return{url:i.ParamDefinition.Url(""),format:i.ParamDefinition.Select(y[0][0],y),isBinary:i.ParamDefinition.Boolean(!1),visuals:i.ParamDefinition.Boolean(!0,{description:"Add default visuals"})}}})(({params:h,state:f},y)=>t.Task.create("Open Files",async _=>{y.behaviors.layout.leftPanelTabName.next("data"),await f.transaction(async()=>{var g,a,d;try{if(h.format==="zip"||h.format==="gzip"){const p=await y.builders.data.download({url:h.url,isBinary:!0});if(h.format==="zip"){const u=await(0,c.unzip)(_,((g=p.obj)===null||g===void 0?void 0:g.data).buffer);for(const[m,v]of Object.entries(u)){if(!(v instanceof Uint8Array)||v.length===0)continue;const b=r.Asset.File(new File([v],m));await s(b,y,"auto",h.visuals)}}else{const u=r.Asset.getUrl(h.url),m=(0,n.getFileNameInfo)(u).name;await s(r.Asset.File(new File([(a=p.obj)===null||a===void 0?void 0:a.data],m)),y,"auto",h.visuals)}}else{const p=y.dataFormats.get(h.format);if(!p){y.log.warn(`DownloadFile: could not find data provider for '${h.format}'`);return}const u=await y.builders.data.download({url:h.url,isBinary:h.isBinary}),m=await p.parse(y,u);h.visuals&&await((d=p.visuals)===null||d===void 0?void 0:d.call(p,y,m))}}catch(p){console.error(p),y.log.error(`Error downloading '${typeof h.url=="string"?h.url:h.url.url}'`)}}).runInContext(_)})),ml}var T$;function dle(){if(T$)return A_;T$=1,Object.defineProperty(A_,"__esModule",{value:!0}),A_.DragAndDropManager=void 0;const e=IZ(),t=Ha(),r=Sn();class n{addHandler(o,s){const h=this.handlers.findIndex(f=>f[0]===o);h<0?this.handlers.push([o,s]):this.handlers[h][1]=s}removeHandler(o){const s=this.handlers.findIndex(h=>h[0]===o);s>=0&&this.handlers.splice(s,1)}async handle(o){for(let s=this.handlers.length-1;s>=0;s--){const h=this.handlers[s][1];if(await h(o,this.plugin))return}i(this.plugin,o)}dispose(){this.handlers.length=0}constructor(o){this.plugin=o,this.handlers=[]}}A_.DragAndDropManager=n;function i(c,o){const s=o.filter(h=>{const f=h.name.toLowerCase();return f.endsWith(".molx")||f.endsWith(".molj")});s.length>0?r.PluginCommands.State.Snapshots.OpenFile(c,{file:s[0]}):c.runTask(c.state.data.applyAction(e.OpenFiles,{files:o.map(h=>t.Asset.File(h)),format:{name:"auto",params:{}},visuals:!0}))}return A_}var M_={},x$;function fle(){if(x$)return M_;x$=1,Object.defineProperty(M_,"__esModule",{value:!0}),M_.ErrorContext=void 0;class e{constructor(){this.errors=Object.create(null)}get(r){var n;return(n=this.errors[r])!==null&&n!==void 0?n:[]}add(r,n){r in this.errors&&Array.isArray(this.errors[r])?this.errors[r].push(n):this.errors[r]=[n]}clear(r){delete this.errors[r]}}return M_.ErrorContext=e,M_}var D_={},A$;function mle(){if(A$)return D_;A$=1,Object.defineProperty(D_,"__esModule",{value:!0}),D_.PluginContainer=void 0;class e{mount(r){var n;this.parent.parentElement!==r&&((n=this.parent.parentElement)===null||n===void 0||n.removeChild(this.parent)),r.appendChild(this.parent)}unmount(){var r;(r=this.parent.parentElement)===null||r===void 0||r.removeChild(this.parent)}constructor(r){this.options=r;const n=document.createElement("div");Object.assign(n.style,{position:"absolute",left:0,top:0,right:0,bottom:0,"-webkit-user-select":"none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","-webkit-touch-callout":"none","touch-action":"manipulation"});let i=r?.canvas;i||(i=document.createElement("canvas"),n.appendChild(i)),this.canvas=i,this.parent=n}}return D_.PluginContainer=e,D_}var M$;function ple(){if(M$)return jb;
7637M$=1,Object.defineProperty(jb,"__esModule",{value:!0}),jb.PluginContext=void 0;const e=Lf(),t=Ff,r=Rn(),n=cce(),i=y2(),c=Hw(),o=Ge(),s=uce(),h=lce(),f=pce(),y=vce(),_=jl(),g=bce(),a=Tce(),d=xce(),p=Ace(),u=cZ(),m=Bce(),v=Rce(),b=Lce(),P=Nce(),C=gZ(),l=Uce(),S=jce(),T=_2(),A=Gce(),x=Lt(),M=ele(),D=DZ(),V=Et(),R=nt(),E=ms(),I=ps(),B=Ha(),w=vt(),O=ET(),F=Ct(),L=cs(),U=wQ(),q=vr(),N=Nl(),k=ole(),j=b2(),H=di(),G=ZQ(),z=Sn(),W=gs(),X=zw(),Y=sle(),K=cle(),Q=ule(),J=lle(),ae=sZ,te=xf(),ne=dle(),$=fle(),ie=mle();class Z{get isInitialized(){return this._isInitialized}build(){return this.state.data.build()}async initViewerAsync(oe,ce,ue){return this._initViewer(oe,ce,ue)}async initContainerAsync(oe){return this._initContainer(oe)}async mountAsync(oe,ce){return this._mount(oe,ce)}_initContainer(oe){var ce,ue;if(this.container)return!0;const pe=new ie.PluginContainer({checkeredCanvasBackground:oe?.checkeredCanvasBackground,canvas:(ce=oe?.canvas3dContext)===null||ce===void 0?void 0:ce.canvas});return this._initViewer(pe.canvas,pe.parent,oe?.canvas3dContext)?(oe?.checkeredCanvasBackground&&((ue=this.canvas3d)===null||ue===void 0||ue.setProps({checkeredTransparentBackground:!0})),this.container=pe,!0):!1}_mount(oe,ce){var ue;if(this.disposed)throw new Error("Cannot mount a disposed context");return this._initContainer(ce)?((ue=this.container)===null||ue===void 0||ue.mount(oe),this.handleResize(),!0):!1}unmount(){var oe;(oe=this.container)===null||oe===void 0||oe.unmount()}_initViewer(oe,ce,ue){var pe,he,fe,de,ge,Ce;try{this.layout.setRoot(ce),this.spec.layout&&this.spec.layout.initial&&this.layout.setProps(this.spec.layout.initial),ue||(ue=i.Canvas3DContext.fromCanvas(oe,this.managers.asset,{antialias:!((pe=this.config.get(W.PluginConfig.General.DisableAntialiasing))!==null&&pe!==void 0&&pe),preserveDrawingBuffer:!((he=this.config.get(W.PluginConfig.General.DisablePreserveDrawingBuffer))!==null&&he!==void 0&&he),preferWebGl1:this.config.get(W.PluginConfig.General.PreferWebGl1)||!1,failIfMajorPerformanceCaveat:!((fe=this.config.get(W.PluginConfig.General.AllowMajorPerformanceCaveat))!==null&&fe!==void 0&&fe),powerPreference:this.config.get(W.PluginConfig.General.PowerPreference)||"high-performance",handleResize:this.handleResize},{pixelScale:this.config.get(W.PluginConfig.General.PixelScale)||1,pickScale:this.config.get(W.PluginConfig.General.PickScale)||.25,transparency:this.config.get(W.PluginConfig.General.Transparency)||"wboit",resolutionMode:this.config.get(W.PluginConfig.General.ResolutionMode)||"auto"})),this.canvas3dContext=ue,this.canvas3d=i.Canvas3D.create(this.canvas3dContext),this.canvas3dInit.next(!0);let ve=this.spec.canvas3d;const le=(0,w.Color)(16579577);return ve?(((ge=ve.renderer)===null||ge===void 0?void 0:ge.backgroundColor)===void 0&&(ve=(0,e.produce)(ve,me=>{me.renderer?me.renderer.backgroundColor=le:me.renderer={backgroundColor:le}})),(Ce=this.canvas3d)===null||Ce===void 0||Ce.setProps(ve)):(de=this.canvas3d)===null||de===void 0||de.setProps({renderer:{backgroundColor:le}}),this.animationLoop.start(),this.helpers.viewportScreenshot=new J.ViewportScreenshotHelper(this),this.subs.push(this.canvas3d.interaction.click.subscribe(me=>this.behaviors.interaction.click.next(me))),this.subs.push(this.canvas3d.interaction.drag.subscribe(me=>this.behaviors.interaction.drag.next(me))),this.subs.push(this.canvas3d.interaction.hover.subscribe(me=>this.behaviors.interaction.hover.next(me))),this.subs.push(this.canvas3d.input.resize.pipe((0,n.debounceTime)(50),(0,n.throttleTime)(100,void 0,{leading:!1,trailing:!0})).subscribe(()=>this.handleResize())),this.subs.push(this.canvas3d.input.keyDown.subscribe(me=>this.behaviors.interaction.key.next(me))),this.subs.push(this.canvas3d.input.keyUp.subscribe(me=>this.behaviors.interaction.keyReleased.next(me))),this.subs.push(this.canvas3d.xr.isPresenting.subscribe(me=>this.log.info(`WebXR ${me?"enabled":"disabled"}`))),this.subs.push(this.canvas3d.xr.requestFailed.subscribe(me=>this.log.error(`WebXR request failed: ${me}`))),this.subs.push(this.layout.events.updated.subscribe(()=>requestAnimationFrame(()=>this.handleResize()))),this.handleResize(),R.Scheduler.setImmediate(()=>this.initCanvas3dPromiseCallbacks[0]()),!0}catch(ve){return this.log.error(""+ve),console.error(ve),R.Scheduler.setImmediate(()=>this.initCanvas3dPromiseCallbacks[1](ve)),!1}}get isBusy(){return this.behaviors.state.isAnimating.value||this.behaviors.state.isUpdating.value}get selectionMode(){return this.behaviors.interaction.selectionMode.value}set selectionMode(oe){this.behaviors.interaction.selectionMode.next(oe)}dataTransaction(oe,ce){return this.runTask(this.state.data.transaction(oe,ce))}clear(oe=!1){var ce;return oe&&((ce=this.canvas3d)===null||ce===void 0||ce.setProps(i.DefaultCanvas3DParams)),z.PluginCommands.State.RemoveObject(this,{state:this.state.data,ref:V.StateTransform.RootRef})}dispose(oe){var ce,ue;if(!this.disposed){for(const pe of this.subs)pe.unsubscribe();this.subs=[],this.layout.dispose(),this.managers.markdownExtensions.audio.dispose(),this.animationLoop.stop(),this.commands.dispose(),(ce=this.canvas3d)===null||ce===void 0||ce.dispose(),oe?.doNotDisposeCanvas3DContext||(ue=this.canvas3dContext)===null||ue===void 0||ue.dispose(oe),this.ev.dispose(),this.state.dispose(),this.helpers.substructureParent.dispose(),(0,q.objectForEach)(this.managers,pe=>{var he;return(he=pe?.dispose)===null||he===void 0?void 0:he.call(pe)}),(0,q.objectForEach)(this.managers.structure,pe=>{var he;return(he=pe?.dispose)===null||he===void 0?void 0:he.call(pe)}),(0,q.objectForEach)(this.managers.volume,pe=>{var he;return(he=pe?.dispose)===null||he===void 0?void 0:he.call(pe)}),this.unmount(),this.container=void 0,this.customState={},this.disposed=!0}}initBehaviorEvents(){this.subs.push((0,r.merge)(this.state.data.behaviors.isUpdating,this.state.behaviors.behaviors.isUpdating).subscribe(fe=>{this.behaviors.state.isUpdating.value!==fe&&this.behaviors.state.isUpdating.next(fe)}));const oe=this.config.get(W.PluginConfig.General.IsBusyTimeoutMs)||750,ce=this.behaviors.state.isBusy;let ue;const pe=()=>{ce.value||ce.next(!0)},he=()=>{ue!==void 0&&clearTimeout(ue),ue=void 0};this.subs.push((0,r.merge)(this.behaviors.state.isUpdating,this.behaviors.state.isAnimating).subscribe(fe=>{const de=this.behaviors.state.isUpdating.value,ge=this.behaviors.state.isAnimating.value;de||ge?ce.value||(he(),ue=setTimeout(pe,oe)):(he(),ce.next(!1))})),this.subs.push(this.behaviors.interaction.selectionMode.subscribe(fe=>{var de;fe||(de=this.managers.interactivity)===null||de===void 0||de.lociSelects.deselectAll()}))}initBuiltInBehavior(){j.BuiltInPluginBehaviors.State.registerDefault(this),j.BuiltInPluginBehaviors.Representation.registerDefault(this),j.BuiltInPluginBehaviors.Camera.registerDefault(this),j.BuiltInPluginBehaviors.Misc.registerDefault(this),this.subs.push((0,r.merge)(this.state.data.events.log,this.state.behaviors.events.log).subscribe(oe=>this.events.log.next(oe)))}async initBehaviors(){let oe=this.state.behaviors.build();for(const ce of Object.keys(H.PluginBehavior.Categories))oe.toRoot().apply(H.PluginBehavior.CreateCategory,{label:H.PluginBehavior.Categories[ce]},{ref:ce,state:{isLocked:!0}});for(const ce of this.spec.behaviors)H.PluginBehavior.getCategoryId(ce.transformer)==="custom-props"&&oe.to(H.PluginBehavior.getCategoryId(ce.transformer)).apply(ce.transformer,ce.defaultParams,{ref:ce.transformer.id});await this.runTask(this.state.behaviors.updateTree(oe,{doNotUpdate
7637Current:!0,doNotLogTiming:!0})),oe=this.state.behaviors.build();for(const ce of this.spec.behaviors)H.PluginBehavior.getCategoryId(ce.transformer)!=="custom-props"&&oe.to(H.PluginBehavior.getCategoryId(ce.transformer)).apply(ce.transformer,ce.defaultParams,{ref:ce.transformer.id});await this.runTask(this.state.behaviors.updateTree(oe,{doNotUpdateCurrent:!0,doNotLogTiming:!0}))}initCustomFormats(){if(this.spec.customFormats)for(const oe of this.spec.customFormats)this.dataFormats.add(oe[0],oe[1])}initAnimations(){var oe;if(!(!((oe=this.spec.animations)===null||oe===void 0)&&oe.length)){this.managers.animation.register(T.AnimateStateSnapshotTransition);return}for(const ce of this.spec.animations)this.managers.animation.register(ce)}initDataActions(){if(this.spec.actions)for(const oe of this.spec.actions)this.state.data.actions.add(oe.action)}async init(){try{this.subs.push(this.events.log.subscribe(oe=>this.log.entries=this.log.entries.push(oe))),this.initCustomFormats(),this.initBehaviorEvents(),this.initBuiltInBehavior(),this.managers.interactivity=new d.InteractivityManager(this),this.managers.lociLabels=new p.LociLabelManager(this),this.builders.structure=new f.StructureBuilder(this),this.initAnimations(),this.initDataActions(),await this.initBehaviors(),this.log.message(`Mol* Plugin ${ae.PLUGIN_VERSION} [${ae.PLUGIN_VERSION_DATE.toLocaleString()}]`),F.isProductionMode||this.log.message("Development mode enabled"),F.isDebugMode&&this.log.message("Debug mode enabled"),this._isInitialized=!0,this.initializedPromiseCallbacks[0]()}catch(oe){throw this.initializedPromiseCallbacks[1](oe),oe}}constructor(oe){var ce;this.spec=oe,this.runTask=(ue,pe)=>this.managers.task.run(ue,pe),this.resolveTask=ue=>{if(ue)return R.Task.is(ue)?this.runTask(ue):ue},this.subs=[],this.initCanvas3dPromiseCallbacks=[()=>{},()=>{}],this._isInitialized=!1,this.initializedPromiseCallbacks=[()=>{},()=>{}],this.disposed=!1,this.container=void 0,this.ev=N.RxEventHelper.create(),this.config=new W.PluginConfigManager(this.spec.config),this.state=new X.PluginState(this),this.commands=new G.PluginCommandManager,this.canvas3dInit=this.ev.behavior(!1),this.behaviors={state:{isAnimating:this.ev.behavior(!1),isUpdating:this.ev.behavior(!1),isBusy:this.ev.behavior(!1)},interaction:{hover:this.ev.behavior({current:x.Representation.Loci.Empty,modifiers:L.ModifiersKeys.None,buttons:0,button:0}),click:this.ev.behavior({current:x.Representation.Loci.Empty,modifiers:L.ModifiersKeys.None,buttons:0,button:0}),drag:this.ev.behavior({current:x.Representation.Loci.Empty,modifiers:L.ModifiersKeys.None,buttons:0,button:0,pageStart:(0,o.Vec2)(),pageEnd:(0,o.Vec2)()}),key:this.ev.behavior(L.EmptyKeyInput),keyReleased:this.ev.behavior(L.EmptyKeyInput),selectionMode:this.ev.behavior(!1)},labels:{highlight:this.ev.behavior({labels:[]})},layout:{leftPanelTabName:this.ev.behavior("root")},canvas3d:{initialized:this.canvas3dInit.pipe((0,n.filter)(ue=>!!ue),(0,n.take)(1))}},this.canvas3dInitialized=new Promise((ue,pe)=>{this.initCanvas3dPromiseCallbacks=[ue,pe]}),this.initialized=new Promise((ue,pe)=>{this.initializedPromiseCallbacks=[ue,pe]}),this.layout=new A.PluginLayout(this),this.animationLoop=new k.PluginAnimationLoop(this),this.representation={structure:{registry:new M.StructureRepresentationRegistry,themes:{colorThemeRegistry:E.ColorTheme.createRegistry(),sizeThemeRegistry:I.SizeTheme.createRegistry()}},volume:{registry:new D.VolumeRepresentationRegistry,themes:{colorThemeRegistry:E.ColorTheme.createRegistry(),sizeThemeRegistry:I.SizeTheme.createRegistry()}}},this.query={structure:{registry:new _.StructureSelectionQueryRegistry}},this.dataFormats=new y.DataFormatRegistry,this.builders={data:new h.DataBuilder(this),structure:void 0},this.helpers={substructureParent:new Y.SubstructureParentHelper(this),viewportScreenshot:void 0},this.managers={structure:{hierarchy:new b.StructureHierarchyManager(this),component:new m.StructureComponentManager(this),measurement:new P.StructureMeasurementManager(this),selection:new C.StructureSelectionManager(this),focus:new v.StructureFocusManager(this)},volume:{hierarchy:new l.VolumeHierarchyManager(this)},interactivity:void 0,camera:new a.CameraManager(this),animation:new g.PluginAnimationManager(this),snapshot:new u.PluginStateSnapshotManager(this),lociLabels:void 0,toast:new Q.PluginToastManager(this),asset:new B.AssetManager,task:new K.TaskManager,markdownExtensions:new S.MarkdownExtensionManager(this),dragAndDrop:new ne.DragAndDropManager(this)},this.events={log:this.ev(),task:this.managers.task.events,canvas3d:{settingsUpdated:this.ev()}},this.customModelProperties=new s.CustomProperty.Registry,this.customStructureProperties=new s.CustomProperty.Registry,this.customVolumeProperties=new s.CustomProperty.Registry,this.customStructureControls=new Map,this.customImportControls=new Map,this.genericRepresentationControls=new Map,this.errorContext=new $.ErrorContext,this.customState=Object.create(null),this.handleResize=()=>{var ue,pe;const he=(ue=this.canvas3dContext)===null||ue===void 0?void 0:ue.canvas,fe=this.layout.root;fe&&he&&((0,c.resizeCanvas)(he,fe,this.canvas3dContext.pixelScale),this.canvas3dContext.syncPixelScale(),(pe=this.canvas3d)===null||pe===void 0||pe.requestResize())},this.log={entries:(0,t.List)(),entry:ue=>this.events.log.next(ue),error:ue=>this.events.log.next(U.LogEntry.error(ue)),message:ue=>this.events.log.next(U.LogEntry.message(ue)),info:ue=>this.events.log.next(U.LogEntry.info(ue)),warn:ue=>this.events.log.next(U.LogEntry.warning(ue))},this.fetch=O.ajaxGet,(0,te.setSaccharideCompIdMapType)((ce=this.config.get(W.PluginConfig.Structure.SaccharideCompIdMapType))!==null&&ce!==void 0?ce:"default")}}return jb.PluginContext=Z,jb}var hle=ple(),pl={},I_={},D$;function gle(){if(D$)return I_;
7637D$=1,Object.defineProperty(I_,"__esModule",{value:!0}),I_.AnimateAssemblyUnwind=void 0;const e=dc(),t=jt(),r=Dr(),n=Et(),i=Sn(),c=Ne();return I_.AnimateAssemblyUnwind=e.PluginStateAnimation.create({name:"built-in.animate-assembly-unwind",display:{name:"Unwind Assembly"},isExportable:!0,params:o=>{const s=[["all","All"]],h=o.state.data.select(n.StateSelection.Generators.rootsOfType(t.PluginStateObject.Molecule.Structure));for(const f of h)s.push([f.transform.ref,f.obj.data.models[0].label]);return{durationInMs:c.ParamDefinition.Numeric(3e3,{min:100,max:1e4,step:100}),playOnce:c.ParamDefinition.Boolean(!1),target:c.ParamDefinition.Select(s[0][0],s)}},canApply(o){const s=o.state.data,h=n.StateTransform.RootRef;return{canApply:s.select(n.StateSelection.Generators.ofType(t.PluginStateObject.Molecule.Structure.Representation3D,h)).length>0}},getDuration:o=>({kind:"fixed",durationMs:o.durationInMs}),initialState:()=>({t:0}),setup(o,s,h){const f=h.state.data,y=!o.target||o.target==="all"?n.StateTransform.RootRef:o.target,_=f.select(n.StateSelection.Generators.ofType(t.PluginStateObject.Molecule.Structure.Representation3D,y)),g=f.build();let a=!1;for(const d of _)f.select(n.StateSelection.Generators.ofTransformer(r.StateTransforms.Representation.UnwindStructureAssemblyRepresentation3D,d.transform.ref)).length>0||(a=!0,g.to(d).apply(r.StateTransforms.Representation.UnwindStructureAssemblyRepresentation3D,{t:0},{tags:"animate-assembly-unwind"}));if(a)return g.commit({doNotUpdateCurrent:!0})},teardown(o,s,h){const f=h.state.data,y=f.select(n.StateSelection.Generators.ofType(t.PluginStateObject.Molecule.Structure.Representation3DState).withTag("animate-assembly-unwind"));if(y.length===0)return;const _=f.build();for(const g of y)_.delete(g.transform.ref);return _.commit()},async apply(o,s,h){const f=h.plugin.state.data,y=!h.params.target||h.params.target==="all"?n.StateTransform.RootRef:h.params.target,_=f.select(n.StateSelection.Generators.ofTransformer(r.StateTransforms.Representation.UnwindStructureAssemblyRepresentation3D,y));if(_.length===0)return{kind:"finished"};const g=f.build(),a=(s.current-s.lastApplied)/h.params.durationInMs;let d=o.t+a,p=!1;h.params.playOnce&&d>=1?(p=!0,d=1):d=d%1;for(const u of _)g.to(u).update({t:d});return await i.PluginCommands.State.Update(h.plugin,{state:f,tree:g,options:{doNotLogTiming:!0}}),p?{kind:"finished"}:{kind:"next",state:{t:d}}}}),I_}var w_={},I$;function yle(){if(I$)return w_;I$=1,Object.defineProperty(w_,"__esModule",{value:!0}),w_.AnimateCameraSpin=void 0;const e=ir(),t=rs(),r=wt(),n=Ne(),i=dc(),c=(0,r.Vec3)(),o=(0,r.Vec3)(),s=(0,t.Quat)(),h=(0,r.Vec3)(),f=(0,r.Vec3)();return w_.AnimateCameraSpin=i.PluginStateAnimation.create({name:"built-in.animate-camera-spin",display:{name:"Camera Spin",description:"Spin the 3D scene around the x-axis in view space"},isExportable:!0,params:()=>({durationInMs:n.ParamDefinition.Numeric(4e3,{min:100,max:2e4,step:100}),speed:n.ParamDefinition.Numeric(1,{min:1,max:10,step:1},{description:"How many times to spin in the specified duration."}),axis:n.ParamDefinition.Vec3(r.Vec3.create(0,-1,0),{},{description:"Axis of rotation in camera space"})}),initialState:(y,_)=>{var g;return{snapshot:(g=_.canvas3d)===null||g===void 0?void 0:g.camera.getSnapshot()}},getDuration:y=>({kind:"fixed",durationMs:y.durationInMs}),teardown:(y,_,g)=>{var a;(a=g.canvas3d)===null||a===void 0||a.requestCameraReset({snapshot:_.snapshot,durationMs:0})},async apply(y,_,g){var a,d,p;if(_.current===0)return{kind:"next",state:y};const u=y.snapshot;if(u.radiusMax<1e-4)return{kind:"finished"};const m=_.animation?((a=_.animation)===null||a===void 0?void 0:a.currentFrame)/(_.animation.frameCount+1):(0,e.clamp)(_.current/g.params.durationInMs,0,1),v=2*Math.PI*m*g.params.speed;r.Vec3.sub(c,u.position,u.target),r.Vec3.normalize(o,c),r.Vec3.normalize(h,u.up),r.Vec3.cross(f,h,o),r.Vec3.normalize(f,f);const b=(d=g.params.axis)!==null&&d!==void 0?d:r.Vec3.create(0,-1,0);r.Vec3.set(o,b[0]*f[0]+b[1]*h[0]+b[2]*o[0],b[0]*f[1]+b[1]*h[1]+b[2]*o[1],b[0]*f[2]+b[1]*h[2]+b[2]*o[2]),r.Vec3.normalize(o,o),t.Quat.setAxisAngle(s,o,v),r.Vec3.transformQuat(c,c,s),r.Vec3.transformQuat(h,u.up,s);const P=r.Vec3.add((0,r.Vec3)(),u.target,c);return(p=g.plugin.canvas3d)===null||p===void 0||p.requestCameraReset({snapshot:{...u,position:P,up:h},durationMs:0}),m>=.99999?{kind:"finished"}:{kind:"next",state:y}}}),w_}var V_={},w$;function vle(){if(w$)return V_;
7637w$=1,Object.defineProperty(V_,"__esModule",{value:!0}),V_.AnimateModelIndex=void 0;const e=Sn(),t=Et(),r=Ne(),n=jt(),i=Dr(),c=dc();return V_.AnimateModelIndex=c.PluginStateAnimation.create({name:"built-in.animate-model-index",display:{name:"Animate Trajectory"},isExportable:!0,params:()=>({mode:r.ParamDefinition.MappedStatic("loop",{palindrome:r.ParamDefinition.Group({}),loop:r.ParamDefinition.Group({direction:r.ParamDefinition.Select("forward",[["forward","Forward"],["backward","Backward"]])}),once:r.ParamDefinition.Group({direction:r.ParamDefinition.Select("forward",[["forward","Forward"],["backward","Backward"]])},{isFlat:!0})},{options:[["palindrome","Palindrome"],["loop","Loop"],["once","Once"]]}),duration:r.ParamDefinition.MappedStatic("fixed",{fixed:r.ParamDefinition.Group({durationInS:r.ParamDefinition.Numeric(5,{min:1,max:120,step:.1},{description:"Duration in seconds"})},{isFlat:!0}),computed:r.ParamDefinition.Group({targetFps:r.ParamDefinition.Numeric(30,{min:5,max:250,step:1},{label:"Target FPS"})},{isFlat:!0}),sequential:r.ParamDefinition.Group({maxFps:r.ParamDefinition.Numeric(30,{min:5,max:60,step:1})},{isFlat:!0})})}),canApply(o){const s=o.state.data,h=s.select(t.StateSelection.Generators.ofTransformer(i.StateTransforms.Model.ModelFromTrajectory));for(const f of h){const y=t.StateSelection.findAncestorOfType(s.tree,s.cells,f.transform.ref,n.PluginStateObject.Molecule.Trajectory);if(y&&y.obj&&y.obj.data.frameCount>1)return{canApply:!0}}return{canApply:!1,reason:"No trajectory to animate"}},getDuration:(o,s)=>{var h;if(((h=o.duration)===null||h===void 0?void 0:h.name)==="fixed")return{kind:"fixed",durationMs:o.duration.params.durationInS*1e3};if(o.duration.name==="computed"){const f=s.state.data,y=f.select(t.StateSelection.Generators.ofTransformer(i.StateTransforms.Model.ModelFromTrajectory));let _=0;for(const g of y){const a=t.StateSelection.findAncestorOfType(f.tree,f.cells,g.transform.ref,n.PluginStateObject.Molecule.Trajectory);if(!a||!a.obj)continue;const d=a.obj;_=Math.max(Math.ceil(1e3*d.data.frameCount/o.duration.params.targetFps),_)}return{kind:"fixed",durationMs:_}}return{kind:"unknown"}},initialState:()=>({}),async apply(o,s,h){if(h.params.duration.name==="sequential"&&s.current>0&&s.current-s.lastApplied<1e3/h.params.duration.params.maxFps)return{kind:"skip"};const f=h.plugin.state.data,y=f.select(t.StateSelection.Generators.ofTransformer(i.StateTransforms.Model.ModelFromTrajectory));if(y.length===0)return{kind:"finished"};const _=f.build(),g=h.params,a=o.palindromeDirections||{};let d=!1,p=!0;for(const u of y){const m=t.StateSelection.findAncestorOfType(f.tree,f.cells,u.transform.ref,n.PluginStateObject.Molecule.Trajectory);if(!m||!m.obj)continue;const v=m.obj;v.data.frameCount<=1||_.to(u).update(b=>{const P=v.data.frameCount;if(P!==1)p=!1;else return b;if(g.duration.name==="sequential"){let C=1;if(g.mode.name==="once"){if(C=g.mode.params.direction==="backward"?-1:1,C===-1&&b.modelIndex===0||C===1&&b.modelIndex===P-1)return d=!0,b}else g.mode.name==="palindrome"&&(b.modelIndex===0?C=1:b.modelIndex===P-1?C=-1:C=a[u.transform.ref]||1);a[u.transform.ref]=C;let l=(b.modelIndex+C)%P;return l<0&&(l+=P),d=d||C===-1&&l===0||C===1&&l===P-1,{modelIndex:l}}else{const C=g.duration.name==="fixed"?g.duration.params.durationInS*1e3:Math.ceil(1e3*v.data.frameCount/g.duration.params.targetFps);if(g.mode.name==="once"&&s.current>=C)return d=!0,{modelIndex:v.data.frameCount-1};let l=s.current%C/C;return g.mode.name==="loop"&&g.mode.params.direction==="backward"&&(l=1-l),g.mode.name==="palindrome"&&(l=2*l,l>1&&(l=2-l)),{modelIndex:Math.min(Math.floor(v.data.frameCount*l),v.data.frameCount-1)}}})}return p||await e.PluginCommands.State.Update(h.plugin,{state:f,tree:_,options:{doNotLogTiming:!0}}),p||g.mode.name==="once"&&d?{kind:"finished"}:g.mode.name==="palindrome"?{kind:"next",state:{palindromeDirections:a}}:{kind:"next",state:{}}}}),V_}var E_={},_D={},V$;function ble(){return V$||(V$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.LoadTrajectory=e.AddTrajectory=e.EnableStructureCustomProps=e.EnableModelCustomProps=e.Upd
7637ateTrajectory=e.DownloadStructure=e.PdbDownloadProvider=void 0;const t=Et(),r=nt(),n=Ne(),i=Xw(),c=lZ(),o=Dw(),s=jt(),h=Dr(),f=NQ(),y=Ha(),_=gs(),g=S2(),a=Gt(),d=mZ(),p=pZ(),u=l=>{const S=l.config.get(_.PluginConfig.Structure.DefaultRepresentationPreset)||i.PresetStructureRepresentations.auto.id;return n.ParamDefinition.Group({type:o.RootStructureDefinition.getParams(void 0,"auto").type,representation:n.ParamDefinition.Select(S,l.builders.structure.representation.getPresets().map(T=>[T.id,T.display.name,T.display.group]),{description:"Which representation preset to use."}),representationParams:n.ParamDefinition.Group(i.StructureRepresentationPresetProvider.CommonParams,{isHidden:!0}),asTrajectory:n.ParamDefinition.Optional(n.ParamDefinition.Boolean(!1,{description:"Load all entries into a single trajectory."}))},{isExpanded:!1})};e.PdbDownloadProvider={rcsb:n.ParamDefinition.Group({encoding:n.ParamDefinition.Select("bcif",n.ParamDefinition.arrayToOptions(["cif","bcif"]))},{label:"RCSB PDB",isFlat:!0}),pdbe:n.ParamDefinition.Group({variant:n.ParamDefinition.Select("updated-bcif",[["updated-bcif","Updated (bcif)"],["updated","Updated"],["archival","Archival"]])},{label:"PDBe",isFlat:!0}),pdbj:n.ParamDefinition.EmptyGroup({label:"PDBj"})};const m=t.StateAction.build({from:s.PluginStateObject.Root,display:{name:"Download Structure",description:"Load a structure from the provided source and create its representation."},params:(l,S)=>{const T=u(S),A=S.config.get(_.PluginConfig.Download.DefaultPdbProvider)||"pdbe";return{source:n.ParamDefinition.MappedStatic("pdb",{pdb:n.ParamDefinition.Group({provider:n.ParamDefinition.Group({id:n.ParamDefinition.Text("1tqn",{label:"PDB Id(s)",description:"One or more comma/space separated PDB ids."}),server:n.ParamDefinition.MappedStatic(A,e.PdbDownloadProvider)},{pivot:"id"}),options:T},{isFlat:!0,label:"PDB"}),"pdb-ihm":n.ParamDefinition.Group({provider:n.ParamDefinition.Group({id:n.ParamDefinition.Text("8zzc",{label:"PDB-IHM Id(s)",description:"One or more comma/space separated ids."}),encoding:n.ParamDefinition.Select("bcif",n.ParamDefinition.arrayToOptions(["cif","bcif"]))},{pivot:"id"}),options:T},{isFlat:!0,label:"PDB-IHM"}),swissmodel:n.ParamDefinition.Group({id:n.ParamDefinition.Text("Q9Y2I8",{label:"UniProtKB AC(s)",description:"One or more comma/space separated ACs."}),options:T},{isFlat:!0,label:"SWISS-MODEL",description:"Loads the best homology model or experimental structure"}),alphafolddb:n.ParamDefinition.Group({provider:n.ParamDefinition.Group({id:n.ParamDefinition.Text("Q8W3K0",{label:"ID(s)",description:"One or more comma/space separated IDs. Each ID can be either UniProt accession (e.g. Q14676, Q14676-2) or AlphaFoldDB model entity ID (e.g. AF-Q14676-F1, AF-Q14676-2-F1, AF-0000000066074510). Version suffixes (e.g. -v1) will be ignored and the newest model version will be downloaded."}),encoding:n.ParamDefinition.Select("bcif",n.ParamDefinition.arrayToOptions(["cif","bcif"]))},{pivot:"id"}),options:T},{isFlat:!0,label:"AlphaFold DB",description:"Loads the predicted model if available"}),modelarchive:n.ParamDefinition.Group({id:n.ParamDefinition.Text("ma-bak-cepc-0003",{label:"Accession Code(s)",description:"One or more comma/space separated ACs."}),options:T},{isFlat:!0,label:"Model Archive"}),pubchem:n.ParamDefinition.Group({id:n.ParamDefinition.Text("2244,2245",{label:"PubChem ID",description:"One or more comma/space separated IDs."}),options:T},{isFlat:!0,label:"PubChem",description:"Loads 3D conformer from PubChem."}),url:n.ParamDefinition.Group({url:n.ParamDefinition.Url(""),format:n.ParamDefinition.Select("mmcif",n.ParamDefinition.arrayToOptions(c.BuiltInTrajectoryFormats.map(x=>x[0]),x=>x)),isBinary:n.ParamDefinition.Boolean(!1),label:n.ParamDefinition.Optional(n.ParamDefinition.Text("")),options:T},{isFlat:!0,label:"URL"})})}}})(({params:l,state:S},T)=>r.Task.create("Download Structure",async A=>{T.behaviors.layout.leftPanelTabName.next("data");const x=l.source;let M,D=!1,V="mmcif";
7637switch(x.name){case"url":M=[{url:x.params.url,isBinary:x.params.isBinary,label:x.params.label||void 0}],V=x.params.format;break;case"pdb":M=await(x.params.provider.server.name==="pdbe"?b(x):x.params.provider.server.name==="pdbj"?P(x):x.params.provider.server.name==="rcsb"?C(x):(0,a.assertUnreachable)(x)),D=!!x.params.options.asTrajectory;break;case"pdb-ihm":const B=w=>w.startsWith("PDBDEV_")?w:`PDBDEV_${w.padStart(8,"0")}`;M=await v(x.params.provider.id,w=>{if(w.match(/^[1-9][A-Z0-9]{3}$/i)!==null)return x.params.provider.encoding==="bcif"?`https://pdb-ihm.org/bcif/${w.toLowerCase()}.bcif`:`https://pdb-ihm.org/cif/${w.toLowerCase()}.cif`;const O=B(w.toUpperCase());return x.params.provider.encoding==="bcif"?`https://pdb-ihm.org/bcif/${O}.bcif`:`https://pdb-ihm.org/cif/${O}.cif`},w=>{const O=w.toUpperCase();return O.match(/^[1-9][A-Z0-9]{3}$/)?`PDB-IHM: ${O}`:B(O)},x.params.provider.encoding==="bcif"),D=!!x.params.options.asTrajectory;break;case"swissmodel":M=await v(x.params.id,w=>`https://swissmodel.expasy.org/repository/uniprot/${w.toUpperCase()}.pdb`,w=>`SWISS-MODEL: ${w}`,!1),D=!!x.params.options.asTrajectory,V="pdb";break;case"alphafolddb":M=await v(x.params.provider.id,async w=>{const F=`https://www.alphafold.ebi.ac.uk/api/prediction/${w.replace(/-v\d+$/i,"").toUpperCase()}`,L=await T.runTask(T.fetch({url:F,type:"json"}));if(Array.isArray(L)&&L.length>0){const U=x.params.provider.encoding==="bcif"?"bcifUrl":"cifUrl";return L[0][U]}throw new Error(`No AlphaFold DB entry for '${w}'`)},w=>`AlphaFold DB: ${w}`,x.params.provider.encoding==="bcif"),D=!!x.params.options.asTrajectory,V="mmcif";break;case"modelarchive":M=await v(x.params.id,w=>`https://www.modelarchive.org/doi/10.5452/${w.toLowerCase()}.cif`,w=>`Model Archive: ${w}`,!1),D=!!x.params.options.asTrajectory,V="mmcif";break;case"pubchem":M=await v(x.params.id,w=>`https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/CID/${w.trim()}/record/SDF/?record_type=3d`,w=>`PubChem: ${w}`,!1),D=!!x.params.options.asTrajectory,V="mol";break;default:(0,a.assertUnreachable)(x)}const R=l.source.params.options.representation||T.config.get(_.PluginConfig.Structure.DefaultRepresentationPreset)||i.PresetStructureRepresentations.auto.id,E=R!==i.PresetStructureRepresentations.empty.id,I=x.params.options.type.name==="auto"?void 0:x.params.options.type;await S.transaction(async()=>{if(M.length>0&&D){const B=await T.builders.data.downloadBlob({sources:M.map((O,F)=>({id:""+F,url:O.url,isBinary:O.isBinary})),maxConcurrency:6},{state:{isGhost:!0}}),w=await T.builders.structure.parseTrajectory(B,{formats:M.map((O,F)=>({id:""+F,format:"cif"}))});await T.builders.structure.hierarchy.applyPreset(w,"default",{structure:I,showUnitcell:E,representationPreset:R,representationPresetParams:l.source.params.options.representationParams})}else for(const B of M){const w=await T.builders.data.download(B,{state:{isGhost:!0}}),O=T.dataFormats.get(V);if(!O)throw new Error("unknown file format");const F=await T.builders.structure.parseTrajectory(w,O);await T.builders.structure.hierarchy.applyPreset(F,"default",{structure:I,showUnitcell:E,representationPreset:R,representationPresetParams:l.source.params.options.representationParams})}}).runInContext(A)}));e.DownloadStructure=m;async function v(l,S,T,A){const x=l.split(/[,\s]/).map(D=>D.trim()).filter(D=>!!D&&(D.length>=4||/^[1-9][0-9]*$/.test(D))),M=[];for(const D of x)M.push({url:y.Asset.Url(await S(D)),isBinary:A,label:T(D)});return M}async function b(l){if(l.name!=="pdb"||l.params.provider.server.name!=="pdbe")throw new Error("expected pdbe");return l.params.provider.server.params.variant==="updated"?v(l.params.provider.id,S=>`https://www.ebi.ac.uk/pdbe/static/entry/${S.toLowerCase()}_updated.cif`,S=>`PDBe: ${S} (updated cif)`,!1):l.params.provider.server.params.variant==="updated-bcif"?v(l.params.provider.id,S=>`https://www.ebi.ac.uk/pdbe/entry-files/download/${S.toLowerCase()}.bcif`,S=>`PDBe: ${S} (updated cif)`,!0):v(l.params.provider.id,S=>`https://www.ebi.ac.uk/pdbe/static/entry/${S.toLowerCase()}.cif`,S=>`PDBe: ${S} (cif)`,!1)}async function P(l){if(l.name!=="pdb"||l.params.provider.server.name!=="pdbj")throw new Error("expected pdbj");return v(l.params.provider.id,S=>`https://data.pdbjlc1.pdbj.org/pub/pdb/data/structures/divided/mmCIF/${S.toLowerCase().substring(1,3)}/${S.toLowerCase()}.cif`,S=>`PDBj: ${S} (cif)`,!1)}async function C(l){if(l.name!=="pdb"||l.params.provider.server.name!=="rcsb")throw new Error("expected rcsb");return l.params.provider.server.params.encoding==="cif"?v(l.params.provider.id,S=>`https://files.rcsb.org/download/${S.toUpperCase()}.cif`,S=>`RCSB PDB: ${S} (cif)`,!1):v(l.params.provider.id,S=>`https://models.rcsb.org/${S.toUpperCase()}.bcif`,S=>`RCSB PDB: ${S} (bcif)`,!0)}e.UpdateTrajectory=t.StateAction.build({display:{name:"Update Trajectory"},params:{action:n.ParamDefinition.Select("advance",n.ParamDefinition.arrayToOptions(["advance","reset"])),by:n.ParamDefinition.Optional(n.ParamDefinition.Numeric(1,{min:-1,max:1,step:1}))}})(({params:l,state:S})=>{const T=S.selectQ(x=>x.ofTransformer(h.StateTransforms.Model.ModelFromTrajectory)),A=S.build();if(l.action==="reset")for(const x of T)A.to(x).update({modelIndex:0});
7637else for(const x of T){const M=t.StateSelection.findAncestorOfType(S.tree,S.cells,x.transform.ref,s.PluginStateObject.Molecule.Trajectory);if(!M||!M.obj)continue;const D=M.obj;A.to(x).update(V=>{let R=(V.modelIndex+l.by)%D.data.frameCount;return R<0&&(R+=D.data.frameCount),{modelIndex:R}})}return S.updateTree(A)}),e.EnableModelCustomProps=t.StateAction.build({display:{name:"Custom Model Properties",description:"Enable parameters for custom properties of the model."},from:s.PluginStateObject.Molecule.Model,params(l,S){return S.customModelProperties.getParams(l?.data)},isApplicable(l,S,T){return S.transformer!==f.CustomModelProperties}})(({ref:l,params:S},T)=>T.builders.structure.insertModelProperties(l,S)),e.EnableStructureCustomProps=t.StateAction.build({display:{name:"Custom Structure Properties",description:"Enable parameters for custom properties of the structure."},from:s.PluginStateObject.Molecule.Structure,params(l,S){return S.customStructureProperties.getParams(l?.data)},isApplicable(l,S,T){return S.transformer!==f.CustomStructureProperties}})(({ref:l,params:S},T)=>T.builders.structure.insertStructureProperties(l,S)),e.AddTrajectory=t.StateAction.build({display:{name:"Add Trajectory",description:"Add trajectory from existing model/topology and coordinates."},from:s.PluginStateObject.Root,params(l,S){const T=S.state.data,x=[...T.selectQ(V=>V.rootsOfType(s.PluginStateObject.Molecule.Model)),...T.selectQ(V=>V.rootsOfType(s.PluginStateObject.Molecule.Topology))].map(V=>[V.transform.ref,V.obj.label]),D=T.selectQ(V=>V.rootsOfType(s.PluginStateObject.Molecule.Coordinates)).map(V=>[V.transform.ref,V.obj.label]);return{model:n.ParamDefinition.Select(x.length?x[0][0]:"",x),coordinates:n.ParamDefinition.Select(D.length?D[0][0]:"",D)}}})(({params:l,state:S},T)=>r.Task.create("Add Trajectory",A=>S.transaction(async()=>{const x=[l.model,l.coordinates],M=S.build().toRoot().apply(f.TrajectoryFromModelAndCoordinates,{modelRef:l.model,coordinatesRef:l.coordinates},{dependsOn:x}).apply(h.StateTransforms.Model.ModelFromTrajectory,{modelIndex:0});await S.updateTree(M).runInContext(A);const D=await T.builders.structure.createStructure(M.selector);await T.builders.structure.representation.applyPreset(D,"auto")}).runInContext(A))),e.LoadTrajectory=t.StateAction.build({display:{name:"Load Trajectory",description:"Load trajectory of model/topology and coordinates from URL or file."},from:s.PluginStateObject.Root,params(l,S){const{options:T}=S.dataFormats,A=T.filter(V=>V[2]===c.TrajectoryFormatCategory||V[2]===d.TopologyFormatCategory),x=T.filter(V=>V[2]===p.CoordinatesFormatCategory),M=[],D=[];for(const{provider:V}of S.dataFormats.list)V.category===c.TrajectoryFormatCategory||V.category===d.TopologyFormatCategory?(V.binaryExtensions&&M.push(...V.binaryExtensions),V.stringExtensions&&M.push(...V.stringExtensions)):V.category===p.CoordinatesFormatCategory&&(V.binaryExtensions&&D.push(...V.binaryExtensions),V.stringExtensions&&D.push(...V.stringExtensions));return{source:n.ParamDefinition.MappedStatic("file",{url:n.ParamDefinition.Group({model:n.ParamDefinition.Group({url:n.ParamDefinition.Url(""),format:n.ParamDefinition.Select(A[0][0],A),isBinary:n.ParamDefinition.Boolean(!1)},{isExpanded:!0}),coordinates:n.ParamDefinition.Group({url:n.ParamDefinition.Url(""),format:n.ParamDefinition.Select(x[0][0],x)},{isExpanded:!0})},{isFlat:!0}),file:n.ParamDefinition.Group({model:n.ParamDefinition.File({accept:M.map(V=>`.${V}`).join(","),label:"Model"}),coordinates:n.ParamDefinition.File({accept:D.map(V=>`.${V}`).join(","),label:"Coordinates"})},{isFlat:!0})},{options:[["url","URL"],["file","File"]]})}}})(({params:l,state:S},T)=>r.Task.create("Load Trajectory",A=>S.transaction(async()=>{const x=l.source;if(x.name==="file"&&(x.params.model===null||x.params.coordinates===null)){T.log.error("No file(s) selected");return}if(x.name==="url"&&(!x.params.model||!x.params.coordinates)){T.log.error("No URL(s) given");return}const M=async(V,R,E)=>{const I=await T.builders.data.download({url:V,isBinary:E}),B=T.dataFormats.get(R);if(!B){T.log.warn(`LoadTrajectory: could not find data provider for '${R}'`);return}return B.parse(T,I)},D=async V=>{var R,E,I;if(!V)throw new Error("No file selected");const B=(0,g.getFileNameInfo)((E=(R=V.file)===null||R===void 0?void 0:R.name)!==null&&E!==void 0?E:""),w=T.dataFormats.binaryExtensions.has(B.ext),{data:O}=await T.builders.data.readFile({file:V,isBinary:w}),F=T.dataFormats.auto(B,(I=O.cell)===null||I===void 0?void 0:I.obj);if(!F){T.log.warn(`LoadTrajectory: could not find data provider for '${B.ext}'`),await T.state.data.build().delete(O).commit();return}return F.parse(T,O)};try{const V=x.name==="url"?await M(x.params.model.url,x.params.model.format,x.params.model.isBinary):await D(x.params.model);let R;"trajectory"in V?R=await S.build().to(V.trajectory).apply(f.ModelFromTrajectory,{modelIndex:0}).commit():R=V.topology;const E=x.name==="url"?await M(x.params.coordinates.url,x.params.coordinates.format,!0):await D(x.params.coordinates),I=S.build().toRoot().apply(f.TrajectoryFromModelAndCoordinates,{modelRef:R.ref,coordinatesRef:E.ref}).apply(h.StateTransforms.Model.ModelFromTrajectory,{modelIndex:0});await S.updateTree(I).runInContext(A);const B=await T.builders.structure.createStructure(I.selector);await T.builders.structure.representation.applyPreset(B,"auto")}catch(V){console.error(V),T.log.error("Error loading trajectory")}}).runInContext(A)))})(_D)),_D}var hl={},E$;function wZ(){if(E$)return hl;
7637E$=1,Object.defineProperty(hl,"__esModule",{value:!0}),hl.AssignColorVolume=hl.DownloadDensity=void 0;const e=Et(),t=nt(),r=S2(),n=Ne(),i=jt(),c=Ha(),o=Dr(),s=Gt(),h=e.StateAction.build({from:i.PluginStateObject.Root,display:{name:"Download Density",description:"Load a density from the provided source and create its default visual."},params:(f,y)=>{const{options:_}=y.dataFormats;return{source:n.ParamDefinition.MappedStatic("pdb-xray",{"pdb-xray":n.ParamDefinition.Group({provider:n.ParamDefinition.Group({id:n.ParamDefinition.Text("1tqn",{label:"Id"}),server:n.ParamDefinition.Select("pdbe",[["pdbe","PDBe"]])},{pivot:"id"}),type:n.ParamDefinition.Select("2fofc",[["2fofc","2Fo-Fc"],["fofc","Fo-Fc"]])},{isFlat:!0}),"pdb-xray-ds":n.ParamDefinition.Group({provider:n.ParamDefinition.Group({id:n.ParamDefinition.Text("1tqn",{label:"Id"}),server:n.ParamDefinition.Select("pdbe",[["pdbe","PDBe"],["rcsb","RCSB PDB"]])},{pivot:"id"}),detail:n.ParamDefinition.Numeric(3,{min:0,max:6,step:1},{label:"Detail"})},{isFlat:!0}),"pdb-emd-ds":n.ParamDefinition.Group({provider:n.ParamDefinition.Group({id:n.ParamDefinition.Text("emd-8004",{label:"Id"}),server:n.ParamDefinition.Select("pdbe",[["pdbe","PDBe"],["rcsb","RCSB PDB"]])},{pivot:"id"}),detail:n.ParamDefinition.Numeric(3,{min:0,max:6,step:1},{label:"Detail"})},{isFlat:!0}),url:n.ParamDefinition.Group({url:n.ParamDefinition.Url(""),isBinary:n.ParamDefinition.Boolean(!1),format:n.ParamDefinition.Select("auto",_)},{isFlat:!0})},{options:[["pdb-xray","PDB X-ray maps"],["pdb-emd-ds","PDB EMD Density Server"],["pdb-xray-ds","PDB X-ray Density Server"],["url","URL"]]})}}})(({params:f},y)=>t.Task.create("Download Density",async _=>{var g,a;const d=f.source;let p,u;switch(d.name){case"url":p=d.params;break;case"pdb-xray":p={url:c.Asset.Url(d.params.type==="2fofc"?`https://www.ebi.ac.uk/pdbe/coordinates/files/${d.params.provider.id.toLowerCase()}.ccp4`:`https://www.ebi.ac.uk/pdbe/coordinates/files/${d.params.provider.id.toLowerCase()}_diff.ccp4`),isBinary:!0,label:`PDBe X-ray map: ${d.params.provider.id}`};break;case"pdb-emd-ds":p=d.params.provider.server==="pdbe"?{url:c.Asset.Url(`https://www.ebi.ac.uk/pdbe/densities/emd/${d.params.provider.id.toLowerCase()}/cell?detail=${d.params.detail}`),isBinary:!0,label:`PDBe EMD Density Server: ${d.params.provider.id}`}:{url:c.Asset.Url(`https://maps.rcsb.org/em/${d.params.provider.id.toLowerCase()}/cell?detail=${d.params.detail}`),isBinary:!0,label:`RCSB PDB EMD Density Server: ${d.params.provider.id}`};break;case"pdb-xray-ds":p=d.params.provider.server==="pdbe"?{url:c.Asset.Url(`https://www.ebi.ac.uk/pdbe/densities/x-ray/${d.params.provider.id.toLowerCase()}/cell?detail=${d.params.detail}`),isBinary:!0,label:`PDBe X-ray Density Server: ${d.params.provider.id}`}:{url:c.Asset.Url(`https://maps.rcsb.org/x-ray/${d.params.provider.id.toLowerCase()}/cell?detail=${d.params.detail}`),isBinary:!0,label:`RCSB PDB X-ray Density Server: ${d.params.provider.id}`};break;default:(0,s.assertUnreachable)(d)}const m=await y.builders.data.download(p);let v;switch(d.name){case"url":p=d.params,u=d.params.format==="auto"?y.dataFormats.auto((0,r.getFileNameInfo)(c.Asset.getUrl(p.url)),(g=m.cell)===null||g===void 0?void 0:g.obj):y.dataFormats.get(d.params.format);break;case"pdb-xray":v=d.params.provider.id,u=y.dataFormats.get("ccp4");break;case"pdb-emd-ds":case"pdb-xray-ds":v=d.params.provider.id,u=y.dataFormats.get("dscif");break;default:(0,s.assertUnreachable)(d)}if(!u){y.log.warn("DownloadDensity: Format provider not found.");return}const b=await u.parse(y,m,{entryId:v});await((a=u.visuals)===null||a===void 0?void 0:a.call(u,y,b))}));return hl.DownloadDensity=h,hl.AssignColorVolume=e.StateAction.build({display:{name:"Assign Volume Colors",description:"Assigns another volume to be available for coloring."},from:i.PluginStateObject.Volume.Data,isApplicable(f){return!f.data.colorVolume},params(f,y){const _=y.state.data.select(e.StateSelection.Generators.root.subtree().ofType(i.PluginStateObject.Volume.Data).filter(g=>{var a;return!!g.obj&&!(!((a=g.obj)===null||a===void 0)&&a.data.colorVolume)&&g.obj!==f}));return _.length===0?{ref:n.ParamDefinition.Text("",{isHidden:!0,label:"Volume"})}:{ref:n.ParamDefinition.Select(_[0].transform.ref,_.map(g=>[g.transform.ref,g.obj.label]),{label:"Volume"})}}})(({ref:f,params:y,state:_},g)=>g.build().to(f).apply(o.StateTransforms.Volume.AssignColorVolume,{ref:y.ref},{dependsOn:[y.ref]}).commit()),hl}var B$;function _le(){if(B$)return E_;
7637B$=1,Object.defineProperty(E_,"__esModule",{value:!0}),E_.StateActions=void 0;const e=At,t=e.__importStar(ble()),r=e.__importStar(wZ()),n=e.__importStar(IZ());return E_.StateActions={Structure:t,Volume:r,DataFormat:n},E_}var bi={},gl={},R$;function Sle(){if(R$)return gl;R$=1,Object.defineProperty(gl,"__esModule",{value:!0}),gl.VolumeServerHeader=gl.VolumeServerInfo=void 0;const e=jt();class t extends e.PluginStateObject.Create({name:"Volume Streaming",typeClass:"Object"}){}gl.VolumeServerInfo=t;var r;return(function(n){(function(i){i.Float32="float32",i.Int8="int8"})(n.ValueType||(n.ValueType={}))})(r||(gl.VolumeServerHeader=r={})),gl}var O$;function Cle(){if(O$)return bi;O$=1,Object.defineProperty(bi,"__esModule",{value:!0}),bi.VolumeStreamingVisual=bi.CreateVolumeStreamingBehavior=bi.CreateVolumeStreamingInfo=bi.BoxifyVolumeStreaming=bi.InitVolumeStreaming=void 0;const e=rt(),t=Ge(),r=Ke(),n=cI(),i=sn(),c=jt(),o=$S(),s=DZ(),h=Et(),f=nt(),y=ea(),_=et(),g=Ne(),a=Ww(),d=gs(),p=yZ(),u=Sle(),m=fZ();function v(A,x,M){return{dataId:x,source:A==="em"?{name:"em",params:{isoValue:i.Volume.IsoValue.absolute(M||0)}}:{name:"x-ray",params:{}}}}async function b(A,x,M,D,V){const R=[];for(const E of A){const I=E.toLowerCase();if(x==="em"){let B;I.startsWith("emd")?B=[I]:(await V.update("Getting EMDB info..."),B=await(0,m.getEmdbIds)(D,V,I));for(const w of B){let O;try{O=await(0,m.getContourLevel)(M,D,V,w)}catch(F){console.info(`Could not get map info for ${w}: ${F}`);continue}R.push(v(x,w,O||0))}}else R.push(v(x,I,0))}return R}bi.InitVolumeStreaming=h.StateAction.build({display:{name:"Volume Streaming"},from:c.PluginStateObject.Molecule.Structure,params(A,x){const M=(0,m.getStreamingMethod)(A&&A.data),D=(0,m.getIds)(M,A&&A.data);return{method:g.ParamDefinition.Select(M,[["em","EM"],["x-ray","X-Ray"]]),entries:g.ParamDefinition.ObjectList({id:g.ParamDefinition.Text(D[0]||"")},({id:V})=>V,{defaultValue:D.map(V=>({id:V}))}),defaultView:g.ParamDefinition.Select(M==="em"?"auto":"selection-box",p.VolumeStreaming.ViewTypeOptions),options:g.ParamDefinition.Group({serverUrl:g.ParamDefinition.Text(x.config.get(d.PluginConfig.VolumeStreaming.DefaultServer)||"https://ds.litemol.org"),behaviorRef:g.ParamDefinition.Text("",{isHidden:!0}),emContourProvider:g.ParamDefinition.Select("emdb",[["emdb","EMDB"],["pdbe","PDBe"]],{isHidden:!0}),channelParams:g.ParamDefinition.Value({},{isHidden:!0})})}},isApplicable:(A,x,M)=>{const D=M.config.get(d.PluginConfig.VolumeStreaming.CanStream);return D?D(A.data,M):A.data.models.length===1&&r.Model.probablyHasDensityMap(A.data.models[0])}})(({ref:A,state:x,params:M},D)=>f.Task.create("Volume Streaming",async V=>{const R=await b(M.entries.map(F=>F.id),M.method,M.options.emContourProvider,D,V),E=x.build().to(A).applyOrUpdateTagged(p.VolumeStreaming.RootTag,C,{serverUrl:M.options.serverUrl,entries:R});await E.commit();const I=E.selector;if(!I.isOk)return;const B=x.tree.children.get(I.ref);B?.size>0&&await D.managers.structure.hierarchy.remove(B?.toArray());const w=I.cell.obj,O=x.build().to(E.ref).apply(l,g.ParamDefinition.getDefaultValues(p.VolumeStreaming.createParams({data:w.data,defaultView:M.defaultView,channelParams:M.options.channelParams})),{ref:M.options.behaviorRef?M.options.behaviorRef:void 0});M.method==="em"?O.apply(S,{channel:"em"},{state:{isGhost:!0},tags:"em"}):(O.apply(S,{channel:"2fo-fc"},{state:{isGhost:!0},tags:"2fo-fc"}),O.apply(S,{channel:"fo-fc(+ve)"},{state:{isGhost:!0},tags:"fo-fc(+ve)"}),O.apply(S,{channel:"fo-fc(-ve)"},{state:{isGhost:!0},tags:"fo-fc(-ve)"})),await x.updateTree(O).runInContext(V)})),bi.BoxifyVolumeStreaming=h.StateAction.build({display:{name:"Boxify Volume Streaming",description:"Make the current box permanent."},from:p.VolumeStreaming,isApplicable:A=>A.data.params.entry.params.view.name==="selection-box"})(({a:A,ref:x,state:M},D)=>{const V=A.data.params;if(V.entry.params.view.name!=="selection-box")return;const R=e.Box3D.create(t.Vec3.clone(V.entry.params.view.params.bottomLeft),t.Vec3.clone(V.entry.params.view.params.topRight)),E=V.entry.params.view.params.radius;e.Box3D.expand(R,R,t.Vec3.create(E,E,E));const I={...V,entry:{name:V.entry.name,params:{...V.entry.params,view:{name:"box",params:{bottomLeft:R.min,top
7637Right:R.max}}}}};return M.updateTree(M.build().to(x).update(I))});const P={dataId:g.ParamDefinition.Text(""),source:g.ParamDefinition.MappedStatic("x-ray",{em:g.ParamDefinition.Group({isoValue:i.Volume.createIsoValueParam(i.Volume.IsoValue.relative(1))}),"x-ray":g.ParamDefinition.Group({})})},C=c.PluginStateTransform.BuiltIn({name:"create-volume-streaming-info",display:{name:"Volume Streaming Info"},from:c.PluginStateObject.Molecule.Structure,to:u.VolumeServerInfo,params(A,x){return{serverUrl:g.ParamDefinition.Text(x.config.get(d.PluginConfig.VolumeStreaming.DefaultServer)||"https://ds.litemol.org"),autoEntries:g.ParamDefinition.Boolean(!1,{description:'Create "entries" list automatically based on the input structure'}),entries:g.ParamDefinition.ObjectList(P,({dataId:M})=>M,{defaultValue:[{dataId:"",source:{name:"x-ray",params:{}}}],hideIf:M=>M.autoEntries}),defaultView:g.ParamDefinition.Select((0,m.getStreamingMethod)(A?.data)==="em"?"auto":"selection-box",p.VolumeStreaming.ViewTypeOptions,{isHidden:!0}),defaultChannelParams:g.ParamDefinition.Value({},{isHidden:!0})}}})({apply:({a:A,params:x},M)=>f.Task.create("",async D=>{let V;if(x.autoEntries){await D.update("Creating entry list...");const I=(0,m.getStreamingMethod)(A?.data),B=(0,m.getIds)(I,A?.data);V=await b(B,I,"emdb",M,D)}else V=x.entries;const R=[];for(const I of V){const B=I.dataId,w=I.source.name==="em"?I.source.params.isoValue:i.Volume.IsoValue.relative(1);await D.update("Getting server header...");const O=await M.fetch({url:(0,a.urlCombine)(x.serverUrl,`${I.source.name}/${B.toLocaleLowerCase()}`),type:"json"}).runInContext(D);R.push({dataId:B,kind:I.source.name,header:O,emDefaultContourLevel:w})}const E={serverUrl:x.serverUrl,entries:R,structure:A.data,defaultView:x.defaultView,defaultChannelParams:x.defaultChannelParams};return new u.VolumeServerInfo(E,{label:"Volume Server",description:`${R.map(I=>I.dataId).join(", ")}`})}),update({a:A,b:x,oldParams:M,newParams:D}){return A.data===x.data.structure&&(0,_.deepEqual)(M,D)?h.StateTransformer.UpdateResult.Unchanged:h.StateTransformer.UpdateResult.Recreate}});bi.CreateVolumeStreamingInfo=C;const l=c.PluginStateTransform.BuiltIn({name:"create-volume-streaming-behavior",display:{name:"Volume Streaming Behavior"},from:u.VolumeServerInfo,to:p.VolumeStreaming,params(A){return p.VolumeStreaming.createParams({data:A?.data,defaultView:A?.data.defaultView,channelParams:A?.data.defaultChannelParams})}})({canAutoUpdate:({oldParams:A,newParams:x})=>A.entry.params.view===x.entry.params.view||x.entry.params.view.name==="selection-box"||x.entry.params.view.name==="camera-target"||x.entry.params.view.name==="off",apply:({a:A,params:x},M)=>f.Task.create("Volume streaming",async D=>{const V=new p.VolumeStreaming.Behavior(M,A.data);return await V.update(x),new p.VolumeStreaming(V,{label:"Volume Streaming",description:V.getDescription()})}),update({a:A,b:x,oldParams:M,newParams:D}){return f.Task.create("Update Volume Streaming",async V=>{if(M.entry.name!==D.entry.name&&"em"in D.entry.params.channels){const{emDefaultContourLevel:E}=x.data.infoMap.get(D.entry.name);E&&(D.entry.params.channels.em.isoValue=E)}const R=await x.data.update(D)?h.StateTransformer.UpdateResult.Updated:h.StateTransformer.UpdateResult.Unchanged;return x.description=x.data.getDescription(),R})}});bi.CreateVolumeStreamingBehavior=l;const S=c.PluginStateTransform.BuiltIn({name:"create-volume-streaming-visual",display:{name:"Volume Streaming Visual"},from:p.VolumeStreaming,to:c.PluginStateObject.Volume.Representation3D,params:{channel:g.ParamDefinition.Select("em",p.VolumeStreaming.ChannelTypeOptions,{isHidden:!0})}})({apply:({a:A,params:x,spine:M},D)=>f.Task.create("Volume Representation",async V=>{var R,E;const I=A.data.channels[x.channel];if(!I)return h.StateObject.Null;const B=T(A.data,x.channel),w=s.VolumeRepresentationRegistry.BuiltIn.isosurface,O=B.type.params||{},F=w.factory({webgl:(R=D.canvas3d)===null||R===void 0?void 0:R.webgl,...D.representation.volume.themes},w.getParams);F.setTheme(y.Theme.create(D.representation.volume.themes,{volume:I.data},B));const L=(E=M.getAncestorOfType(c.PluginStateObject.Molecule.Structure))===null||E===void 0?void 0:E.data,U=L?.models.length===0?void 0:n.GlobalModelTransformInfo.get(L?.models[0]);return await F.createOrUpdate(O,I.data).runInContext(V),U&&F.setState({transform:U}),new c.PluginStateObject.Volume.Representation3D({repr:F,sourceData:I.data},{label:`${Math.round(I.isoValue.relativeValue*100)/100} σ [${x.channel}]`})}),update:({a:A,b:x,newParams:M,spine:D},V)=>f.Task.create("Volume Representation",async R=>{const E=A.data.channels[M.channel];
7637if(!E)return h.StateTransformer.UpdateResult.Unchanged;const I=x.data.repr.state.visible,B=T(A.data,M.channel),w={...x.data.repr.props,...B.type.params};return x.data.repr.setTheme(y.Theme.create(V.representation.volume.themes,{volume:E.data},B)),await x.data.repr.createOrUpdate(w,E.data).runInContext(R),x.data.repr.setState({visible:I}),x.data.sourceData=E.data,h.StateTransformer.UpdateResult.Updated})});bi.VolumeStreamingVisual=S;function T(A,x){const M=A.channels[x];return o.VolumeRepresentation3DHelpers.getDefaultParamsStatic(A.plugin,"isosurface",{isoValue:M.isoValue,alpha:M.opacity,visuals:M.wireframe?["wireframe"]:["solid"]},"uniform",{value:M.color})}return bi}var B_={},k$;function Ple(){if(k$)return B_;k$=1,Object.defineProperty(B_,"__esModule",{value:!0}),B_.AnimateStateInterpolation=void 0;const e=Sn(),t=Et(),r=et(),n=Ne(),i=dc();return B_.AnimateStateInterpolation=i.PluginStateAnimation.create({name:"built-in.animate-state-interpolation",display:{name:"Animate State (experimental)"},params:()=>({transtionDurationInMs:n.ParamDefinition.Numeric(2e3,{min:100,max:3e4,step:10})}),canApply(c){return{canApply:c.managers.snapshot.state.entries.size>1}},initialState:()=>({}),async apply(c,o,s){const h=s.plugin.managers.snapshot.state.entries;if(h.size<2)return{kind:"finished"};const f=o.current%s.params.transtionDurationInMs/s.params.transtionDurationInMs,y=Math.floor(o.current/s.params.transtionDurationInMs)%h.size;let _=Math.ceil(o.current/s.params.transtionDurationInMs);_===y&&_++,_=_%h.size;const g=h.get(y).snapshot,a=h.get(_).snapshot;if(!g.data||!a.data)return{kind:"skip"};const d=g.data.tree.transforms,p=a.data.tree.transforms,u=s.plugin.state.data,m=u.build();for(const v of d)for(const b of p){if(b.ref!==v.ref||b.version===v.version)continue;const P=t.StateTransform.fromJSON(v),C=t.StateTransform.fromJSON(b),l=u.cells.get(v.ref);if(!l)continue;let S;P.transformer.definition.interpolate?S=P.transformer.definition.interpolate(P.params,C.params,f,s.plugin):S=f<=.5?P.params:C.params,(0,r.shallowEqual)(l,S)||m.to(v.ref).update(S)}return await e.PluginCommands.State.Update(s.plugin,{state:u,tree:m,options:{doNotLogTiming:!0}}),{kind:"next",state:{}}}}),B_}var R_={},F$;function Tle(){if(F$)return R_;F$=1,Object.defineProperty(R_,"__esModule",{value:!0}),R_.AnimateStructureSpin=void 0;const e=Sn(),t=Et(),r=Ne(),n=jt(),i=Dr(),c=dc();return R_.AnimateStructureSpin=c.PluginStateAnimation.create({name:"built-in.animate-structure-spin",display:{name:"Spin Structure"},isExportable:!0,params:()=>({durationInMs:r.ParamDefinition.Numeric(3e3,{min:100,max:1e4,step:100})}),initialState:()=>({t:0}),getDuration:o=>({kind:"fixed",durationMs:o.durationInMs}),async setup(o,s,h){const f=h.state.data,y=f.select(t.StateSelection.Generators.ofType(n.PluginStateObject.Molecule.Structure.Representation3D)),_=f.build();let g=!1;for(const a of y)f.select(t.StateSelection.Generators.ofTransformer(i.StateTransforms.Representation.SpinStructureRepresentation3D,a.transform.ref)).length>0||(g=!0,_.to(a.transform.ref).apply(i.StateTransforms.Representation.SpinStructureRepresentation3D,{t:0},{tags:"animate-structure-spin"}));if(g)return _.commit({doNotUpdateCurrent:!0})},teardown(o,s,h){const f=h.state.data,y=f.select(t.StateSelection.Generators.ofType(n.PluginStateObject.Molecule.Structure.Representation3DState).withTag("animate-structure-spin"));if(y.length===0)return;const _=f.build();for(const g of y)_.delete(g.transform.ref);return _.commit()},async apply(o,s,h){var f;const y=h.plugin.state.data,_=y.select(t.StateSelection.Generators.ofTransformer(i.StateTransforms.Representation.SpinStructureRepresentation3D));if(_.length===0)return{kind:"finished"};const g=y.build(),a=(s.current-s.lastApplied)/h.params.durationInMs,d=(o.t+a)%1;for(const p of _)g.to(p).update({...(f=p.params)===null||f===void 0?void 0:f.values,t:d});return await e.PluginCommands.State.Update(h.plugin,{state:y,tree:g,options:{doNotLogTiming:!0}}),{kind:"next",state:{t:d}}}}),R_}var O_={},L$;function xle(){if(L$)return O_;L$=1,Object.defineProperty(O_,"__esModule",{value:!0}),O_.AnimateCameraRock=void 0;const e=ir(),t=rs(),r=wt(),n=er(),i=Ne(),c=dc(),o=(0,r.Vec3)(),s=(0,r.Vec3)(),h=(0,t.Quat)(),f=(0,r.Vec3)(),y=(0,r.Vec3)();return O_.AnimateCameraRock=c.PluginStateAnimation.create({name:"built-in.animate-camera-rock",display:{name:"Camera Rock",description:"Rock the 3D scene around the x-axis in view space"},isExportable:!0,params:()=>({durationInMs:i.ParamDefinition.Numeric(4e3,{min:100,max:2e4,step:100}),speed:i.ParamDefinition.Numeric(1,{min:1,max:10,step:1},{description:"How many times to rock from side to side."}),angle:i.ParamDefinition.Numeric(10,{min:0,max:180,step:1},{description:"How many degrees to rotate in each direction."}),axis:i.ParamDefinition.Vec3(r.Vec3.create(0,-1,0),{},{description:"Axis of rotation in camera space"})}),initialState:(_,g)=>({snapshot:g.canvas3d.camera.getSnapshot()}),getDuration:_=>({kind:"fixed",durationMs:_.durationInMs}),teardown:(_,g,a)=>{var d;(d=a.canvas3d)===null||d===void 0||d.requestCameraReset({snapshot:g.snapshot,durationMs:0})},async apply(_,g,a){var d,p,u;if(g.current===0)return{kind:"next",state:_};const m=_.snapshot;
7637if(m.radiusMax<1e-4)return{kind:"finished"};const v=g.animation?((d=g.animation)===null||d===void 0?void 0:d.currentFrame)/(g.animation.frameCount+1):(0,e.clamp)(g.current/a.params.durationInMs,0,1),b=Math.sin(v*a.params.speed*Math.PI*2)*(0,n.degToRad)(a.params.angle);r.Vec3.sub(o,m.position,m.target),r.Vec3.normalize(s,o),r.Vec3.normalize(f,m.up),r.Vec3.cross(y,f,s),r.Vec3.normalize(y,y);const P=(p=a.params.axis)!==null&&p!==void 0?p:r.Vec3.create(0,-1,0);r.Vec3.set(s,P[0]*y[0]+P[1]*f[0]+P[2]*s[0],P[0]*y[1]+P[1]*f[1]+P[2]*s[1],P[0]*y[2]+P[1]*f[2]+P[2]*s[2]),r.Vec3.normalize(s,s),t.Quat.setAxisAngle(h,s,b),r.Vec3.transformQuat(o,o,h),r.Vec3.transformQuat(f,m.up,h);const C=r.Vec3.add((0,r.Vec3)(),m.target,o);return(u=a.plugin.canvas3d)===null||u===void 0||u.requestCameraReset({snapshot:{...m,position:C,up:f},durationMs:0}),v>=.99999?{kind:"finished"}:{kind:"next",state:_}}}),O_}var k_={},N$;function Ale(){if(N$)return k_;N$=1,Object.defineProperty(k_,"__esModule",{value:!0}),k_.AnimateTime=void 0;const e=Ne(),t=dc();return k_.AnimateTime=t.PluginStateAnimation.create({name:"built-in.animate-time",display:{name:"Animate Time",description:"Animate the passage of time in the 3D scene"},isExportable:!0,params:()=>({durationInMs:e.ParamDefinition.Numeric(4e3,{min:100,max:2e4,step:100})}),initialState:()=>({}),getDuration:r=>({kind:"fixed",durationMs:r.durationInMs}),async apply(r,n,i){return n.current<i.params.durationInMs?{kind:"next",state:r}:{kind:"finished"}}}),k_}var q$;function Mle(){if(q$)return pl;q$=1,Object.defineProperty(pl,"__esModule",{value:!0}),pl.DefaultPluginSpec=pl.PluginSpec=void 0;const e=gle(),t=yle(),r=vle(),n=_2(),i=b2(),c=$w(),o=_le(),s=wZ(),h=Dr(),f=Cle(),y=Ple(),_=Tle(),g=xle(),a=Ale();var d;(function(u){function m(b,P){return{action:b,customControl:P&&P.customControl,autoUpdate:P&&P.autoUpdate}}u.Action=m;function v(b,P={}){return{transformer:b,defaultParams:P}}u.Behavior=v})(d||(pl.PluginSpec=d={}));const p=()=>({actions:[d.Action(o.StateActions.Structure.DownloadStructure),d.Action(o.StateActions.Volume.DownloadDensity),d.Action(o.StateActions.DataFormat.DownloadFile),d.Action(o.StateActions.DataFormat.OpenFiles),d.Action(o.StateActions.Structure.LoadTrajectory),d.Action(o.StateActions.Structure.EnableModelCustomProps),d.Action(o.StateActions.Structure.EnableStructureCustomProps),d.Action(f.InitVolumeStreaming),d.Action(f.BoxifyVolumeStreaming),d.Action(f.CreateVolumeStreamingBehavior),d.Action(h.StateTransforms.Data.Download),d.Action(h.StateTransforms.Data.ParseCif),d.Action(h.StateTransforms.Data.ParseCcp4),d.Action(h.StateTransforms.Data.ParseDsn6),d.Action(h.StateTransforms.Model.TrajectoryFromMmCif),d.Action(h.StateTransforms.Model.TrajectoryFromCifCore),d.Action(h.StateTransforms.Model.TrajectoryFromPDB),d.Action(h.StateTransforms.Model.TransformStructureConformation),d.Action(h.StateTransforms.Model.StructureInstances),d.Action(h.StateTransforms.Model.StructureFromModel),d.Action(h.StateTransforms.Model.StructureFromTrajectory),d.Action(h.StateTransforms.Model.ModelFromTrajectory),d.Action(h.StateTransforms.Model.StructureSelectionFromScript),d.Action(h.StateTransforms.Representation.StructureRepresentation3D),d.Action(h.StateTransforms.Representation.StructureSelectionsDistance3D),d.Action(h.StateTransforms.Representation.StructureSelectionsAngle3D),d.Action(h.StateTransforms.Representation.StructureSelectionsDihedral3D),d.Action(h.StateTransforms.Representation.StructureSelectionsLabel3D),d.Action(h.StateTransforms.Representation.StructureSelectionsOrientation3D),d.Action(h.StateTransforms.Representation.ModelUnitcell3D),d.Action(h.StateTransforms.Representation.StructureBoundingBox3D),d.Action(h.StateTransforms.Representation.ExplodeStructureRepresentation3D),d.Action(h.StateTransforms.Representation.SpinStructureRepresentation3D),d.Action(h.StateTransforms.Representation.UnwindStructureAssemblyRepresentation3D),d.Action(h.StateTransforms.Representation.OverpaintStructureRepresentation3DFromScript),d.Action(h.StateTransforms.Representation.TransparencyStructureRepresentation3DFromScript),d.Action(h.StateTransforms.Representation.ClippingStructureRepresentation3DFromScript),d.Action(h.StateTransforms.Representation.SubstanceStructureRepresentation3DFromScript),d.Action(h.StateTransforms.Representation.WiggleStructureRepresentation3DFromScript),d.Action(h.StateTransforms.Representation.ThemeStrengthRepresentation3D),d.Action(s.AssignColorVolume),d.Action(h.StateTransforms.Volume.VolumeFromCcp4),d.Action(h.StateTransforms.Volume.VolumeFromDsn6),d.Action(h.StateTransforms.Volume.VolumeFromCube),d.Action(h.StateTransforms.Volume.VolumeFromDx),d.Action(h.StateTransforms.Representation.VolumeRepresentation3D),d.Action(h.StateTransforms.Volume.VolumeTransform),d.Action(h.StateTransforms.Volume.VolumeInstances)],behaviors:[d.Behavior(i.PluginBehaviors.Representation.HighlightLoci),d.Behavior(i.PluginBehaviors.Representation.SelectLoci),d.Behavior(i.PluginBehaviors.Representation.DefaultLociLabelProvider),d.Behavior(i.PluginBehaviors.Representation.FocusLoci),d.Behavior(i.PluginBehaviors.Camera.FocusLoci),d.Behavior(i.PluginBehaviors.Camera.CameraAxisHelper),d.Behavior(i.PluginBehaviors.Camera.CameraControls),d.Behavior(i.PluginBehaviors.State.SnapshotControls),d.Behavior(c.StructureFocusRepresentation),d.Behavior(i.PluginBehaviors.CustomProps.StructureInfo),d.Behavior(i.PluginBehaviors.CustomProps.AccessibleSurfaceArea),d.Behavior(i.PluginBehaviors.CustomProps.BestDatabaseSequenceMapping),d.Behavior(i.PluginBehaviors.CustomProps.Interactions),d.Behavior(i.PluginBehaviors.CustomProps.SecondaryStructure),d.Behavior(i.PluginBehaviors.CustomProps.ValenceModel),d.Behavior(i.PluginBehaviors.CustomProps.CrossLinkRestraint),d.Behavior(i.PluginBehaviors.CustomProps.Streamlines)],animations:[r.AnimateModelIndex,t.AnimateCameraSpin,g.AnimateCameraRock,n.AnimateStateSnapshots,n.AnimateStateSnapshotTransition,e.AnimateAssemblyUnwind,_.AnimateStructureSpin,y.AnimateStateInterpolation,a.AnimateTime]});return pl.DefaultPluginSpec=p,pl}var Dle=Mle(),G_=vt(),wD=ta();function U$(e){const{width:t,height:r}=e.viewport;if(t<=0||r<=0)return;const n=r/t>1.4?.15*r:0;e.viewOffset.enabled=n>
76370,wD.Camera.setViewOffset(e.viewOffset,t,r,0,n,t,r),e.update()}function Ile(e,t,r){if(e.state.radius<=0||t.width<=0||t.height<=0||r.width<=0||r.height<=0)return;const{mode:n,fov:i,position:c,target:o}=e.state,s=wD.Camera.targetDistance(1,n,i,t.width,t.height),f=wD.Camera.targetDistance(1,n,i,r.width,r.height)/s;if(!Number.isFinite(f)||Math.abs(f-1)<1e-4)return;const y=F_.Vec3.sub(F_.Vec3(),c,o);e.setState({position:F_.Vec3.scaleAndAdd(F_.Vec3(),o,y,f)},0)}var j$=Ke();const wle={asymId:"auth",palette:{name:"colors",params:{list:{kind:"set",colors:[5467575,9608415,3493260,8295623,6846627,11582946,6716883,9210301].map(G_.Color)}}}};function Vle(e,t){const r=new Map;return j$.Structure.eachAtomicHierarchyElement(e,{chain:n=>{const i=j$.StructureProperties.chain.auth_asym_id(n);r.has(i)||r.set(i,G_.Color.toHexStyle(t.color(n,!1)))}}),Array.from(r,([n,i])=>({chain:n,color:i}))}var Ele=Qn(),hf=dr();function Ble(e){return hf.MolScriptBuilder.struct.generator.atomGroups({"chain-test":hf.MolScriptBuilder.core.set.has([hf.MolScriptBuilder.set(...e),hf.MolScriptBuilder.struct.atomProperty.macromolecular.auth_asym_id()]),"entity-test":hf.MolScriptBuilder.core.rel.eq([hf.MolScriptBuilder.struct.atomProperty.macromolecular.entityType(),"polymer"])})}function Rle(e,t){const r=Ele.ModelSymmetry.Provider.get(e)?.assemblies??[];if(!t.length)return r[0];const n=new Set;return e.properties.structAsymMap.forEach(i=>{t.includes(i.auth_id)&&n.add(i.id)}),r.find(i=>i.operatorGroups.some(c=>c.asymIds?.some(o=>n.has(o))))}function Ole(e,t){function r(o){const s=new Map;let h="";const f=t.split(/\r?\n/).filter(y=>y.startsWith(o)).map(y=>y.slice(10,80).trim()).join(" ");for(const y of f.split(";")){const _=y.indexOf(":");if(_<0)continue;const g=y.slice(0,_).trim(),a=y.slice(_+1).trim();if(g==="MOL_ID"&&(h=a),!h)continue;const d=s.get(h)??{};d[g]=a,s.set(h,d)}return s}const n=r("COMPND"),i=r("SOURCE"),c=new Map;for(const o of e){const s=[...n.entries()].find(([,_])=>{const g=(_.CHAIN??"").split(",").map(a=>a.trim());return o.chains.length>0&&o.chains.every(a=>g.includes(a))}),h=s?`molecule_${s[0]}`:o.id,f=s?i.get(s[0]):void 0,y=c.get(h);y?(y.chains=[...new Set([...y.chains,...o.chains])],(o.sequence?.length??0)>(y.sequence?.length??0)&&(y.sequence=o.sequence)):c.set(h,{...o,name:s?.[1].MOLECULE||o.name,organism:f?.ORGANISM_SCIENTIFIC,genes:f?.GENE?f.GENE.split(",").map(_=>_.trim()).filter(Boolean):[]})}return[...c.values()]}async function Lle(e,t,r,n,i){const c=new hle.PluginContext({...Dle.DefaultPluginSpec(),animations:[],canvas3d:{transparentBackground:!0,renderer:{backgroundColor:G_.Color(16777215),ambientIntensity:.6},camera:{mode:"orthographic",helper:{axes:{name:"off",params:{}}}},cameraFog:{name:"off",params:{}},multiSample:{mode:"off"},cameraResetDurationMs:0,postprocessing:{outline:{name:"on",params:{scale:1,threshold:.33,color:G_.Color(2439e3),includeTransparent:!1}},occlusion:{name:"off",params:{}},shadow:{name:"off",params:{}}}}});let o=!1,s;const h=()=>{o||(o=!0,s?.disconnect(),c.dispose({doNotForceWebGLContextLoss:!0}))},f=()=>{if(n.aborted||o)throw new DOMException("Aborted","AbortError")};try{await c.init(),f();const y=await c.builders.data.rawData({data:typeof r.data=="string"?r.data:new Uint8Array(r.data)}),_=await c.builders.structure.parseTrajectory(y,r.pdbId?"mmcif":"pdb"),g=await c.builders.structure.createModel(_),a=g.obj?.data;if(!a?.atomicHierarchy.atoms._rowCount)throw new Error("No atomic coordinates were found. Upload a PDB containing protein coordinates, not only a sequence.");f();const d=[],p=a.entities.data,u=a.atomicHierarchy.chains;for(let M=0;M<p._rowCount;M++){if(p.type.value(M)!=="polymer"||!a.entities.subtype.value(M).includes("peptide"))continue;const D=p.id.value(M),V=[];for(let R=0;R<u._rowCount;R++)u.label_entity_id.value(R)===D&&V.push(u.auth_asym_id.value(R));d.push({id:`${r.pdbId??"uploaded"}_${D}`,name:p.pdbx_description.value(M).join(", ")||`Protein ${d.length+1}`,chains:[...new Set(V)],accessions:[],genes:[],sequence:a.sequence.byEntityKey[M]?Array.from(a.sequence.byEntityKey[M].sequence.code.toArray()).join(""):void 0})}if(!d.length)throw new Error("No protein coordinates were found in this structure.");
7637const m=!r.pdbId&&typeof r.data=="string"?Ole(d,r.data):d;if(i(m),!await c.initViewerAsync(t,e))throw new Error("The 3D preview needs WebGL. You can still use the protein details on the left.");f();let v,b="",P,C="surface",l=[];async function S(M){f();const D=r.pdbId&&a?Rle(a,M):void 0,V=`${D?.id??"model"}:${[...M].sort().join(",")}`;if(V===b)return l;P=void 0,v&&await c.state.data.build().delete(v.ref).commit(),v=await c.builders.structure.createStructure(g,D?{name:"assembly",params:{id:D.id}}:{name:"model",params:{}}),f();const R=await c.builders.structure.tryCreateComponentFromExpression(v,Ble(M.length?M:m.flatMap(w=>w.chains)),"protein",{label:"Protein"});if(!R)throw new Error("The selected protein is not present in this structure.");const E=await c.builders.structure.representation.addRepresentation(R,{type:"cartoon",typeParams:{quality:"medium",celShaded:!1,metalness:0,roughness:1},color:"chain-id",colorParams:wle});f();const I=E.obj?.data.repr.theme.color;l=R.obj&&I&&"color"in I?Vle(R.obj.data,I):[];const B=await c.builders.structure.representation.addRepresentation(R,{type:"molecular-surface",typeParams:{quality:"medium",alpha:.14,metalness:0,roughness:1},color:"uniform",colorParams:{value:G_.Color(16185599)}},{initialState:{isHidden:C==="ribbon"}});return f(),P=B.ref,k9.setSubtreeVisibility(c.state.data,P,C==="ribbon"),b=V,c.canvas3d&&U$(c.canvas3d.camera),c.canvas3d?.requestCameraReset({durationMs:0}),l}let T=Promise.resolve();const A=M=>{const D=T.then(()=>S(M));return T=D.then(()=>{},()=>{}),D};let x={width:e.clientWidth,height:e.clientHeight};return s=new ResizeObserver(()=>{const M={width:e.clientWidth,height:e.clientHeight};c.canvas3d&&Ile(c.canvas3d.camera,x,M),c.handleResize(),c.canvas3d&&U$(c.canvas3d.camera),x=M}),s.observe(e),n.addEventListener("abort",h,{once:!0}),f(),{dispose:h,showProtein:A,setRepresentation:M=>{C=M,!o&&P&&k9.setSubtreeVisibility(c.state.data,P,M==="ribbon")},setRotation:M=>{o||c.canvas3d?.setProps({trackball:{animate:M?{name:"spin",params:{speed:.025,axis:F_.Vec3.create(0,1,0)}}:{name:"off",params:{}}}})},reset:()=>c.canvas3d?.requestCameraReset({durationMs:0}),zoom:M=>{const D=c.canvas3d?.camera;D&&c.canvas3d?.requestCameraReset({snapshot:D.getFocus(D.state.target,D.state.radius*M),durationMs:0})}}}catch(y){throw h(),y}}export{Lle as createMolecule};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.