@vizbl/shopify-room-viewer 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@
3
3
 
4
4
  If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
5
5
 
6
- For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return rd.useEffect(()=>{e&&(document.getElementById(e)||console.error(r))},[r,e]),null},u1=({contentRef:e,descriptionId:t})=>{let r=u$("DialogDescriptionWarning"),n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${r.contentName}}.`;return rd.useEffect(()=>{let r=e.current?.getAttribute("aria-describedby");t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null};let u2=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)},u3=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim();var u4={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let u5=(0,rd.forwardRef)(({color:e="currentColor",size:t=24,strokeWidth:r=2,absoluteStrokeWidth:n,className:i="",children:a,iconNode:s,...o},l)=>(0,rd.createElement)("svg",{ref:l,...u4,width:t,height:t,stroke:e,strokeWidth:n?24*Number(r)/Number(t):r,className:u3("lucide",i),...!a&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0})(o)&&{"aria-hidden":"true"},...o},[...s.map(([e,t])=>(0,rd.createElement)(e,t)),...Array.isArray(a)?a:[a]])),u9=(e,t)=>{let r=(0,rd.forwardRef)(({className:r,...n},i)=>(0,rd.createElement)(u5,{ref:i,iconNode:t,className:u3(`lucide-${u2(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,r),...n}));return r.displayName=u2(e),r},u8=u9("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),u6=u9("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]),u7=u9("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]),ce=u9("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]),ct=u9("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),cr=u9("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]),cn=u9("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);var ci="horizontal",ca=["horizontal","vertical"],cs=rd.forwardRef((e,t)=>{var r;let{decorative:n,orientation:i=ci,...a}=e,s=(r=i,ca.includes(r))?i:ci;return(0,rp.jsx)(ly.div,{"data-orientation":s,...n?{role:"none"}:{"aria-orientation":"vertical"===s?s:void 0,role:"separator"},...a,ref:t})});cs.displayName="Separator";var co=rd.forwardRef((e,t)=>(0,rp.jsx)(ly.label,{...e,ref:t,onMouseDown:t=>{t.target.closest("button, input, select, textarea")||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));function cl(e,[t,r]){return Math.min(r,Math.max(t,e))}function cu(e){let t=e+"CollectionProvider",[r,n]=lc(t),[i,a]=r(t,{collectionRef:{current:null},itemMap:new Map}),s=e=>{let{scope:t,children:r}=e,n=rd.useRef(null),a=rd.useRef(new Map).current;return(0,rp.jsx)(i,{scope:t,itemMap:a,collectionRef:n,children:r})};s.displayName=t;let o=e+"CollectionSlot",l=lm(o),u=rd.forwardRef((e,t)=>{let{scope:r,children:n}=e,i=on(t,a(o,r).collectionRef);return(0,rp.jsx)(l,{ref:i,children:n})});u.displayName=o;let c=e+"CollectionItemSlot",d="data-radix-collection-item",h=lm(c),p=rd.forwardRef((e,t)=>{let{scope:r,children:n,...i}=e,s=rd.useRef(null),o=on(t,s),l=a(c,r);return rd.useEffect(()=>(l.itemMap.set(s,{ref:s,...i}),()=>void l.itemMap.delete(s))),(0,rp.jsx)(h,{...{[d]:""},ref:o,children:n})});return p.displayName=c,[{Provider:s,Slot:u,ItemSlot:p},function(t){let r=a(e+"CollectionConsumer",t);return rd.useCallback(()=>{let e=r.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${d}]`));return Array.from(r.itemMap.values()).sort((e,r)=>t.indexOf(e.ref.current)-t.indexOf(r.ref.current))},[r.collectionRef,r.itemMap])},n]}co.displayName="Label";var cc=rd.createContext(void 0);function cd(e){let t=rd.useContext(cc);return e||t||"ltr"}let ch=["top","right","bottom","left"],cp=Math.min,cf=Math.max,cA=Math.round,cg=Math.floor,cm=e=>({x:e,y:e}),cv={left:"right",right:"left",bottom:"top",top:"bottom"},cb={start:"end",end:"start"};function cy(e,t){return"function"==typeof e?e(t):e}function cw(e){return e.split("-")[0]}function cx(e){return e.split("-")[1]}function cC(e){return"x"===e?"y":"x"}function cE(e){return"y"===e?"height":"width"}let cS=new Set(["top","bottom"]);function cM(e){return cS.has(cw(e))?"y":"x"}function cI(e){return e.replace(/start|end/g,e=>cb[e])}let cB=["left","right"],cT=["right","left"],ck=["top","bottom"],c_=["bottom","top"];function cR(e){return e.replace(/left|right|bottom|top/g,e=>cv[e])}function cP(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function cD(e){let{x:t,y:r,width:n,height:i}=e;return{width:n,height:i,top:r,left:t,right:t+n,bottom:r+i,x:t,y:r}}function cL(e,t,r){let n,{reference:i,floating:a}=e,s=cM(t),o=cC(cM(t)),l=cE(o),u=cw(t),c="y"===s,d=i.x+i.width/2-a.width/2,h=i.y+i.height/2-a.height/2,p=i[l]/2-a[l]/2;switch(u){case"top":n={x:d,y:i.y-a.height};break;case"bottom":n={x:d,y:i.y+i.height};break;case"right":n={x:i.x+i.width,y:h};break;case"left":n={x:i.x-a.width,y:h};break;default:n={x:i.x,y:i.y}}switch(cx(t)){case"start":n[o]-=p*(r&&c?-1:1);break;case"end":n[o]+=p*(r&&c?-1:1)}return n}let cF=async(e,t,r)=>{let{placement:n="bottom",strategy:i="absolute",middleware:a=[],platform:s}=r,o=a.filter(Boolean),l=await (null==s.isRTL?void 0:s.isRTL(t)),u=await s.getElementRects({reference:e,floating:t,strategy:i}),{x:c,y:d}=cL(u,n,l),h=n,p={},f=0;for(let r=0;r<o.length;r++){let{name:a,fn:A}=o[r],{x:g,y:m,data:v,reset:b}=await A({x:c,y:d,initialPlacement:n,placement:h,strategy:i,middlewareData:p,rects:u,platform:s,elements:{reference:e,floating:t}});c=null!=g?g:c,d=null!=m?m:d,p={...p,[a]:{...p[a],...v}},b&&f<=50&&(f++,"object"==typeof b&&(b.placement&&(h=b.placement),b.rects&&(u=!0===b.rects?await s.getElementRects({reference:e,floating:t,strategy:i}):b.rects),{x:c,y:d}=cL(u,h,l)),r=-1)}return{x:c,y:d,placement:h,strategy:i,middlewareData:p}};async function cO(e,t){var r;void 0===t&&(t={});let{x:n,y:i,platform:a,rects:s,elements:o,strategy:l}=e,{boundary:u="clippingAncestors",rootBoundary:c="viewport",elementContext:d="floating",altBoundary:h=!1,padding:p=0}=cy(t,e),f=cP(p),A=o[h?"floating"===d?"reference":"floating":d],g=cD(await a.getClippingRect({element:null==(r=await (null==a.isElement?void 0:a.isElement(A)))||r?A:A.contextElement||await (null==a.getDocumentElement?void 0:a.getDocumentElement(o.floating)),boundary:u,rootBoundary:c,strategy:l})),m="floating"===d?{x:n,y:i,width:s.floating.width,height:s.floating.height}:s.reference,v=await (null==a.getOffsetParent?void 0:a.getOffsetParent(o.floating)),b=await (null==a.isElement?void 0:a.isElement(v))&&await (null==a.getScale?void 0:a.getScale(v))||{x:1,y:1},y=cD(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:m,offsetParent:v,strategy:l}):m);return{top:(g.top-y.top+f.top)/b.y,bottom:(y.bottom-g.bottom+f.bottom)/b.y,left:(g.left-y.left+f.left)/b.x,right:(y.right-g.right+f.right)/b.x}}function cN(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function cQ(e){return ch.some(t=>e[t]>=0)}let cU=new Set(["left","top"]);async function cz(e,t){let{placement:r,platform:n,elements:i}=e,a=await (null==n.isRTL?void 0:n.isRTL(i.floating)),s=cw(r),o=cx(r),l="y"===cM(r),u=cU.has(s)?-1:1,c=a&&l?-1:1,d=cy(t,e),{mainAxis:h,crossAxis:p,alignmentAxis:f}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return o&&"number"==typeof f&&(p="end"===o?-1*f:f),l?{x:p*c,y:h*u}:{x:h*u,y:p*c}}function cH(){return"u">typeof window}function cG(e){return cW(e)?(e.nodeName||"").toLowerCase():"#document"}function cj(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function cV(e){var t;return null==(t=(cW(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function cW(e){return!!cH()&&(e instanceof Node||e instanceof cj(e).Node)}function cq(e){return!!cH()&&(e instanceof Element||e instanceof cj(e).Element)}function cY(e){return!!cH()&&(e instanceof HTMLElement||e instanceof cj(e).HTMLElement)}function cJ(e){return!(!cH()||"u"<typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof cj(e).ShadowRoot)}let cK=new Set(["inline","contents"]);function cX(e){let{overflow:t,overflowX:r,overflowY:n,display:i}=c6(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+r)&&!cK.has(i)}let cZ=new Set(["table","td","th"]),c$=[":popover-open",":modal"];function c0(e){return c$.some(t=>{try{return e.matches(t)}catch(e){return!1}})}let c1=["transform","translate","scale","rotate","perspective"],c2=["transform","translate","scale","rotate","perspective","filter"],c3=["paint","layout","strict","content"];function c4(e){let t=c5(),r=cq(e)?c6(e):e;return c1.some(e=>!!r[e]&&"none"!==r[e])||!!r.containerType&&"normal"!==r.containerType||!t&&!!r.backdropFilter&&"none"!==r.backdropFilter||!t&&!!r.filter&&"none"!==r.filter||c2.some(e=>(r.willChange||"").includes(e))||c3.some(e=>(r.contain||"").includes(e))}function c5(){return!("u"<typeof CSS)&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}let c9=new Set(["html","body","#document"]);function c8(e){return c9.has(cG(e))}function c6(e){return cj(e).getComputedStyle(e)}function c7(e){return cq(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function de(e){if("html"===cG(e))return e;let t=e.assignedSlot||e.parentNode||cJ(e)&&e.host||cV(e);return cJ(t)?t.host:t}function dt(e,t,r){var n;void 0===t&&(t=[]),void 0===r&&(r=!0);let i=function e(t){let r=de(t);return c8(r)?t.ownerDocument?t.ownerDocument.body:t.body:cY(r)&&cX(r)?r:e(r)}(e),a=i===(null==(n=e.ownerDocument)?void 0:n.body),s=cj(i);if(a){let e=dr(s);return t.concat(s,s.visualViewport||[],cX(i)?i:[],e&&r?dt(e):[])}return t.concat(i,dt(i,[],r))}function dr(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function dn(e){let t=c6(e),r=parseFloat(t.width)||0,n=parseFloat(t.height)||0,i=cY(e),a=i?e.offsetWidth:r,s=i?e.offsetHeight:n,o=cA(r)!==a||cA(n)!==s;return o&&(r=a,n=s),{width:r,height:n,$:o}}function di(e){return cq(e)?e:e.contextElement}function da(e){let t=di(e);if(!cY(t))return cm(1);let r=t.getBoundingClientRect(),{width:n,height:i,$:a}=dn(t),s=(a?cA(r.width):r.width)/n,o=(a?cA(r.height):r.height)/i;return s&&Number.isFinite(s)||(s=1),o&&Number.isFinite(o)||(o=1),{x:s,y:o}}let ds=cm(0);function dl(e){let t=cj(e);return c5()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:ds}function du(e,t,r,n){var i;void 0===t&&(t=!1),void 0===r&&(r=!1);let a=e.getBoundingClientRect(),s=di(e),o=cm(1);t&&(n?cq(n)&&(o=da(n)):o=da(e));let l=(void 0===(i=r)&&(i=!1),n&&(!i||n===cj(s))&&i)?dl(s):cm(0),u=(a.left+l.x)/o.x,c=(a.top+l.y)/o.y,d=a.width/o.x,h=a.height/o.y;if(s){let e=cj(s),t=n&&cq(n)?cj(n):n,r=e,i=dr(r);for(;i&&n&&t!==r;){let e=da(i),t=i.getBoundingClientRect(),n=c6(i),a=t.left+(i.clientLeft+parseFloat(n.paddingLeft))*e.x,s=t.top+(i.clientTop+parseFloat(n.paddingTop))*e.y;u*=e.x,c*=e.y,d*=e.x,h*=e.y,u+=a,c+=s,i=dr(r=cj(i))}}return cD({width:d,height:h,x:u,y:c})}function dc(e,t){let r=c7(e).scrollLeft;return t?t.left+r:du(cV(e)).left+r}function dd(e,t){let r=e.getBoundingClientRect();return{x:r.left+t.scrollLeft-dc(e,r),y:r.top+t.scrollTop}}let dh=new Set(["absolute","fixed"]);function dp(e,t,r){var n;let i;if("viewport"===t)i=function(e,t){let r=cj(e),n=cV(e),i=r.visualViewport,a=n.clientWidth,s=n.clientHeight,o=0,l=0;if(i){a=i.width,s=i.height;let e=c5();(!e||e&&"fixed"===t)&&(o=i.offsetLeft,l=i.offsetTop)}let u=dc(n);if(u<=0){let e=n.ownerDocument,t=e.body,r=getComputedStyle(t),i="CSS1Compat"===e.compatMode&&parseFloat(r.marginLeft)+parseFloat(r.marginRight)||0,s=Math.abs(n.clientWidth-t.clientWidth-i);s<=25&&(a-=s)}else u<=25&&(a+=u);return{width:a,height:s,x:o,y:l}}(e,r);else if("document"===t){let t,r,a,s,o,l,u;n=cV(e),t=cV(n),r=c7(n),a=n.ownerDocument.body,s=cf(t.scrollWidth,t.clientWidth,a.scrollWidth,a.clientWidth),o=cf(t.scrollHeight,t.clientHeight,a.scrollHeight,a.clientHeight),l=-r.scrollLeft+dc(n),u=-r.scrollTop,"rtl"===c6(a).direction&&(l+=cf(t.clientWidth,a.clientWidth)-s),i={width:s,height:o,x:l,y:u}}else if(cq(t)){let e,n,a,s,o,l;n=(e=du(t,!0,"fixed"===r)).top+t.clientTop,a=e.left+t.clientLeft,s=cY(t)?da(t):cm(1),o=t.clientWidth*s.x,l=t.clientHeight*s.y,i={width:o,height:l,x:a*s.x,y:n*s.y}}else{let r=dl(e);i={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return cD(i)}function df(e){return"static"===c6(e).position}function dA(e,t){if(!cY(e)||"fixed"===c6(e).position)return null;if(t)return t(e);let r=e.offsetParent;return cV(e)===r&&(r=r.ownerDocument.body),r}function dg(e,t){var r;let n=cj(e);if(c0(e))return n;if(!cY(e)){let t=de(e);for(;t&&!c8(t);){if(cq(t)&&!df(t))return t;t=de(t)}return n}let i=dA(e,t);for(;i&&(r=i,cZ.has(cG(r)))&&df(i);)i=dA(i,t);return i&&c8(i)&&df(i)&&!c4(i)?n:i||function(e){let t=de(e);for(;cY(t)&&!c8(t);){if(c4(t))return t;if(c0(t))break;t=de(t)}return null}(e)||n}let dm=async function(e){let t=this.getOffsetParent||dg,r=this.getDimensions,n=await r(e.floating);return{reference:function(e,t,r){let n=cY(t),i=cV(t),a="fixed"===r,s=du(e,!0,a,t),o={scrollLeft:0,scrollTop:0},l=cm(0);if(n||!n&&!a)if(("body"!==cG(t)||cX(i))&&(o=c7(t)),n){let e=du(t,!0,a,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else i&&(l.x=dc(i));a&&!n&&i&&(l.x=dc(i));let u=!i||n||a?cm(0):dd(i,o);return{x:s.left+o.scrollLeft-l.x-u.x,y:s.top+o.scrollTop-l.y-u.y,width:s.width,height:s.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}},dv={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:r,offsetParent:n,strategy:i}=e,a="fixed"===i,s=cV(n),o=!!t&&c0(t.floating);if(n===s||o&&a)return r;let l={scrollLeft:0,scrollTop:0},u=cm(1),c=cm(0),d=cY(n);if((d||!d&&!a)&&(("body"!==cG(n)||cX(s))&&(l=c7(n)),cY(n))){let e=du(n);u=da(n),c.x=e.x+n.clientLeft,c.y=e.y+n.clientTop}let h=!s||d||a?cm(0):dd(s,l);return{width:r.width*u.x,height:r.height*u.y,x:r.x*u.x-l.scrollLeft*u.x+c.x+h.x,y:r.y*u.y-l.scrollTop*u.y+c.y+h.y}},getDocumentElement:cV,getClippingRect:function(e){let{element:t,boundary:r,rootBoundary:n,strategy:i}=e,a=[..."clippingAncestors"===r?c0(t)?[]:function(e,t){let r=t.get(e);if(r)return r;let n=dt(e,[],!1).filter(e=>cq(e)&&"body"!==cG(e)),i=null,a="fixed"===c6(e).position,s=a?de(e):e;for(;cq(s)&&!c8(s);){let t=c6(s),r=c4(s);r||"fixed"!==t.position||(i=null),(a?!r&&!i:!r&&"static"===t.position&&!!i&&dh.has(i.position)||cX(s)&&!r&&function e(t,r){let n=de(t);return!(n===r||!cq(n)||c8(n))&&("fixed"===c6(n).position||e(n,r))}(e,s))?n=n.filter(e=>e!==s):i=t,s=de(s)}return t.set(e,n),n}(t,this._c):[].concat(r),n],s=a[0],o=a.reduce((e,r)=>{let n=dp(t,r,i);return e.top=cf(n.top,e.top),e.right=cp(n.right,e.right),e.bottom=cp(n.bottom,e.bottom),e.left=cf(n.left,e.left),e},dp(t,s,i));return{width:o.right-o.left,height:o.bottom-o.top,x:o.left,y:o.top}},getOffsetParent:dg,getElementRects:dm,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:r}=dn(e);return{width:t,height:r}},getScale:da,isElement:cq,isRTL:function(e){return"rtl"===c6(e).direction}};function db(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}let dy=e=>({name:"arrow",options:e,async fn(t){let{x:r,y:n,placement:i,rects:a,platform:s,elements:o,middlewareData:l}=t,{element:u,padding:c=0}=cy(e,t)||{};if(null==u)return{};let d=cP(c),h={x:r,y:n},p=cC(cM(i)),f=cE(p),A=await s.getDimensions(u),g="y"===p,m=g?"clientHeight":"clientWidth",v=a.reference[f]+a.reference[p]-h[p]-a.floating[f],b=h[p]-a.reference[p],y=await (null==s.getOffsetParent?void 0:s.getOffsetParent(u)),w=y?y[m]:0;w&&await (null==s.isElement?void 0:s.isElement(y))||(w=o.floating[m]||a.floating[f]);let x=w/2-A[f]/2-1,C=cp(d[g?"top":"left"],x),E=cp(d[g?"bottom":"right"],x),S=w-A[f]-E,M=w/2-A[f]/2+(v/2-b/2),I=cf(C,cp(M,S)),B=!l.arrow&&null!=cx(i)&&M!==I&&a.reference[f]/2-(M<C?C:E)-A[f]/2<0,T=B?M<C?M-C:M-S:0;return{[p]:h[p]+T,data:{[p]:I,centerOffset:M-I-T,...B&&{alignmentOffset:T}},reset:B}}});var dw="u">typeof document?rd.useLayoutEffect:function(){};function dx(e,t){let r,n,i;if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if((r=e.length)!==t.length)return!1;for(n=r;0!=n--;)if(!dx(e[n],t[n]))return!1;return!0}if((r=(i=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(n=r;0!=n--;)if(!({}).hasOwnProperty.call(t,i[n]))return!1;for(n=r;0!=n--;){let r=i[n];if(("_owner"!==r||!e.$$typeof)&&!dx(e[r],t[r]))return!1}return!0}return e!=e&&t!=t}function dC(e){return"u"<typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function dE(e,t){let r=dC(e);return Math.round(t*r)/r}function dS(e){let t=rd.useRef(e);return dw(()=>{t.current=e}),t}var dM=rd.forwardRef((e,t)=>{let{children:r,width:n=10,height:i=5,...a}=e;return(0,rp.jsx)(ly.svg,{...a,ref:t,width:n,height:i,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?r:(0,rp.jsx)("polygon",{points:"0,0 30,0 15,10"})})});function dI(e){let[t,r]=rd.useState(void 0);return ld(()=>{if(e){r({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let n,i;if(!Array.isArray(t)||!t.length)return;let a=t[0];if("borderBoxSize"in a){let e=a.borderBoxSize,t=Array.isArray(e)?e[0]:e;n=t.inlineSize,i=t.blockSize}else n=e.offsetWidth,i=e.offsetHeight;r({width:n,height:i})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}r(void 0)},[e]),t}dM.displayName="Arrow";var dB="Popper",[dT,dk]=lc(dB),[d_,dR]=dT(dB),dP=e=>{let{__scopePopper:t,children:r}=e,[n,i]=rd.useState(null);return(0,rp.jsx)(d_,{scope:t,anchor:n,onAnchorChange:i,children:r})};dP.displayName=dB;var dD="PopperAnchor",dL=rd.forwardRef((e,t)=>{let{__scopePopper:r,virtualRef:n,...i}=e,a=dR(dD,r),s=rd.useRef(null),o=on(t,s),l=rd.useRef(null);return rd.useEffect(()=>{let e=l.current;l.current=n?.current||s.current,e!==l.current&&a.onAnchorChange(l.current)}),n?null:(0,rp.jsx)(ly.div,{...i,ref:o})});dL.displayName=dD;var dF="PopperContent",[dO,dN]=dT(dF),dQ=rd.forwardRef((e,t)=>{var r,n,i,a,s,o,l,u,c,d,h,p,f,A,g,m,v,b,y,w,x;let{__scopePopper:C,side:E="bottom",sideOffset:S=0,align:M="center",alignOffset:I=0,arrowPadding:B=0,avoidCollisions:T=!0,collisionBoundary:k=[],collisionPadding:_=0,sticky:R="partial",hideWhenDetached:P=!1,updatePositionStrategy:D="optimized",onPlaced:L,...F}=e,O=dR(dF,C),[N,Q]=rd.useState(null),U=on(t,e=>Q(e)),[z,H]=rd.useState(null),G=dI(z),j=G?.width??0,V=G?.height??0,W="number"==typeof _?_:{top:0,right:0,bottom:0,left:0,..._},q=Array.isArray(k)?k:[k],Y=q.length>0,J={padding:W,boundary:q.filter(dG),altBoundary:Y},{refs:K,floatingStyles:X,placement:Z,isPositioned:$,middlewareData:ee}=function(e){void 0===e&&(e={});let{placement:t="bottom",strategy:r="absolute",middleware:n=[],platform:i,elements:{reference:a,floating:s}={},transform:o=!0,whileElementsMounted:l,open:u}=e,[c,d]=rd.useState({x:0,y:0,strategy:r,placement:t,middlewareData:{},isPositioned:!1}),[h,p]=rd.useState(n);dx(h,n)||p(n);let[f,A]=rd.useState(null),[g,m]=rd.useState(null),v=rd.useCallback(e=>{e!==x.current&&(x.current=e,A(e))},[]),b=rd.useCallback(e=>{e!==C.current&&(C.current=e,m(e))},[]),y=a||f,w=s||g,x=rd.useRef(null),C=rd.useRef(null),E=rd.useRef(c),S=null!=l,M=dS(l),I=dS(i),B=dS(u),T=rd.useCallback(()=>{var e,n;let i,a,s;if(!x.current||!C.current)return;let o={placement:t,strategy:r,middleware:h};I.current&&(o.platform=I.current),(e=x.current,n=C.current,i=new Map,s={...(a={platform:dv,...o}).platform,_c:i},cF(e,n,{...a,platform:s})).then(e=>{let t={...e,isPositioned:!1!==B.current};k.current&&!dx(E.current,t)&&(E.current=t,al.flushSync(()=>{d(t)}))})},[h,t,r,I,B]);dw(()=>{!1===u&&E.current.isPositioned&&(E.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[u]);let k=rd.useRef(!1);dw(()=>(k.current=!0,()=>{k.current=!1}),[]),dw(()=>{if(y&&(x.current=y),w&&(C.current=w),y&&w){if(M.current)return M.current(y,w,T);T()}},[y,w,T,M,S]);let _=rd.useMemo(()=>({reference:x,floating:C,setReference:v,setFloating:b}),[v,b]),R=rd.useMemo(()=>({reference:y,floating:w}),[y,w]),P=rd.useMemo(()=>{let e={position:r,left:0,top:0};if(!R.floating)return e;let t=dE(R.floating,c.x),n=dE(R.floating,c.y);return o?{...e,transform:"translate("+t+"px, "+n+"px)",...dC(R.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:t,top:n}},[r,o,R.floating,c.x,c.y]);return rd.useMemo(()=>({...c,update:T,refs:_,elements:R,floatingStyles:P}),[c,T,_,R,P])}({strategy:"fixed",placement:E+("center"!==M?"-"+M:""),whileElementsMounted:(...e)=>(function(e,t,r,n){let i;void 0===n&&(n={});let{ancestorScroll:a=!0,ancestorResize:s=!0,elementResize:o="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:u=!1}=n,c=di(e),d=a||s?[...c?dt(c):[],...dt(t)]:[];d.forEach(e=>{a&&e.addEventListener("scroll",r,{passive:!0}),s&&e.addEventListener("resize",r)});let h=c&&l?function(e,t){let r,n=null,i=cV(e);function a(){var e;clearTimeout(r),null==(e=n)||e.disconnect(),n=null}return!function s(o,l){void 0===o&&(o=!1),void 0===l&&(l=1),a();let u=e.getBoundingClientRect(),{left:c,top:d,width:h,height:p}=u;if(o||t(),!h||!p)return;let f={rootMargin:-cg(d)+"px "+-cg(i.clientWidth-(c+h))+"px "+-cg(i.clientHeight-(d+p))+"px "+-cg(c)+"px",threshold:cf(0,cp(1,l))||1},A=!0;function g(t){let n=t[0].intersectionRatio;if(n!==l){if(!A)return s();n?s(!1,n):r=setTimeout(()=>{s(!1,1e-7)},1e3)}1!==n||db(u,e.getBoundingClientRect())||s(),A=!1}try{n=new IntersectionObserver(g,{...f,root:i.ownerDocument})}catch(e){n=new IntersectionObserver(g,f)}n.observe(e)}(!0),a}(c,r):null,p=-1,f=null;o&&(f=new ResizeObserver(e=>{let[n]=e;n&&n.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var e;null==(e=f)||e.observe(t)})),r()}),c&&!u&&f.observe(c),f.observe(t));let A=u?du(e):null;return u&&function t(){let n=du(e);A&&!db(A,n)&&r(),A=n,i=requestAnimationFrame(t)}(),r(),()=>{var e;d.forEach(e=>{a&&e.removeEventListener("scroll",r),s&&e.removeEventListener("resize",r)}),null==h||h(),null==(e=f)||e.disconnect(),f=null,u&&cancelAnimationFrame(i)}})(...e,{animationFrame:"always"===D}),elements:{reference:O.anchor},middleware:[{...{name:"offset",options:i=r={mainAxis:S+V,alignmentAxis:I},async fn(e){var t,r;let{x:n,y:a,placement:s,middlewareData:o}=e,l=await cz(e,i);return s===(null==(t=o.offset)?void 0:t.placement)&&null!=(r=o.arrow)&&r.alignmentOffset?{}:{x:n+l.x,y:a+l.y,data:{...l,placement:s}}}},options:[r,n]},T&&{...{name:"shift",options:c=l={mainAxis:!0,crossAxis:!1,limiter:"partial"===R?{...(void 0===(o=a)&&(o={}),{options:o,fn(e){let{x:t,y:r,placement:n,rects:i,middlewareData:a}=e,{offset:s=0,mainAxis:l=!0,crossAxis:u=!0}=cy(o,e),c={x:t,y:r},d=cM(n),h=cC(d),p=c[h],f=c[d],A=cy(s,e),g="number"==typeof A?{mainAxis:A,crossAxis:0}:{mainAxis:0,crossAxis:0,...A};if(l){let e="y"===h?"height":"width",t=i.reference[h]-i.floating[e]+g.mainAxis,r=i.reference[h]+i.reference[e]-g.mainAxis;p<t?p=t:p>r&&(p=r)}if(u){var m,v;let e="y"===h?"width":"height",t=cU.has(cw(n)),r=i.reference[d]-i.floating[e]+(t&&(null==(m=a.offset)?void 0:m[d])||0)+(t?0:g.crossAxis),s=i.reference[d]+i.reference[e]+(t?0:(null==(v=a.offset)?void 0:v[d])||0)-(t?g.crossAxis:0);f<r?f=r:f>s&&(f=s)}return{[h]:p,[d]:f}}}),options:[a,s]}:void 0,...J},async fn(e){let{x:t,y:r,placement:n}=e,{mainAxis:i=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:r}=e;return{x:t,y:r}}},...o}=cy(c,e),l={x:t,y:r},u=await cO(e,o),d=cM(cw(n)),h=cC(d),p=l[h],f=l[d];if(i){let e="y"===h?"top":"left",t="y"===h?"bottom":"right",r=p+u[e],n=p-u[t];p=cf(r,cp(p,n))}if(a){let e="y"===d?"top":"left",t="y"===d?"bottom":"right",r=f+u[e],n=f-u[t];f=cf(r,cp(f,n))}let A=s.fn({...e,[h]:p,[d]:f});return{...A,data:{x:A.x-t,y:A.y-r,enabled:{[h]:i,[d]:a}}}}},options:[l,u]},T&&{...{name:"flip",options:p=d={...J},async fn(e){var t,r,n,i,a,s,o,l;let u,c,d,{placement:h,middlewareData:f,rects:A,initialPlacement:g,platform:m,elements:v}=e,{mainAxis:b=!0,crossAxis:y=!0,fallbackPlacements:w,fallbackStrategy:x="bestFit",fallbackAxisSideDirection:C="none",flipAlignment:E=!0,...S}=cy(p,e);if(null!=(t=f.arrow)&&t.alignmentOffset)return{};let M=cw(h),I=cM(g),B=cw(g)===g,T=await (null==m.isRTL?void 0:m.isRTL(v.floating)),k=w||(B||!E?[cR(g)]:(u=cR(g),[cI(g),u,cI(u)])),_="none"!==C;!w&&_&&k.push(...(c=cx(g),d=function(e,t,r){switch(e){case"top":case"bottom":if(r)return t?cT:cB;return t?cB:cT;case"left":case"right":return t?ck:c_;default:return[]}}(cw(g),"start"===C,T),c&&(d=d.map(e=>e+"-"+c),E&&(d=d.concat(d.map(cI)))),d));let R=[g,...k],P=await cO(e,S),D=[],L=(null==(r=f.flip)?void 0:r.overflows)||[];if(b&&D.push(P[M]),y){let e,t,r,n,i=(s=h,o=A,void 0===(l=T)&&(l=!1),e=cx(s),r=cE(t=cC(cM(s))),n="x"===t?e===(l?"end":"start")?"right":"left":"start"===e?"bottom":"top",o.reference[r]>o.floating[r]&&(n=cR(n)),[n,cR(n)]);D.push(P[i[0]],P[i[1]])}if(L=[...L,{placement:h,overflows:D}],!D.every(e=>e<=0)){let e=((null==(n=f.flip)?void 0:n.index)||0)+1,t=R[e];if(t&&("alignment"!==y||I===cM(t)||L.every(e=>cM(e.placement)!==I||e.overflows[0]>0)))return{data:{index:e,overflows:L},reset:{placement:t}};let r=null==(i=L.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:i.placement;if(!r)switch(x){case"bestFit":{let e=null==(a=L.filter(e=>{if(_){let t=cM(e.placement);return t===I||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:a[0];e&&(r=e);break}case"initialPlacement":r=g}if(h!==r)return{reset:{placement:r}}}return{}}},options:[d,h]},{...{name:"size",options:g=f={...J,apply:({elements:e,rects:t,availableWidth:r,availableHeight:n})=>{let{width:i,height:a}=t.reference,s=e.floating.style;s.setProperty("--radix-popper-available-width",`${r}px`),s.setProperty("--radix-popper-available-height",`${n}px`),s.setProperty("--radix-popper-anchor-width",`${i}px`),s.setProperty("--radix-popper-anchor-height",`${a}px`)}},async fn(e){var t,r;let n,i,{placement:a,rects:s,platform:o,elements:l}=e,{apply:u=()=>{},...c}=cy(g,e),d=await cO(e,c),h=cw(a),p=cx(a),f="y"===cM(a),{width:A,height:m}=s.floating;"top"===h||"bottom"===h?(n=h,i=p===(await (null==o.isRTL?void 0:o.isRTL(l.floating))?"start":"end")?"left":"right"):(i=h,n="end"===p?"top":"bottom");let v=m-d.top-d.bottom,b=A-d.left-d.right,y=cp(m-d[n],v),w=cp(A-d[i],b),x=!e.middlewareData.shift,C=y,E=w;if(null!=(t=e.middlewareData.shift)&&t.enabled.x&&(E=b),null!=(r=e.middlewareData.shift)&&r.enabled.y&&(C=v),x&&!p){let e=cf(d.left,0),t=cf(d.right,0),r=cf(d.top,0),n=cf(d.bottom,0);f?E=A-2*(0!==e||0!==t?e+t:cf(d.left,d.right)):C=m-2*(0!==r||0!==n?r+n:cf(d.top,d.bottom))}await u({...e,availableWidth:E,availableHeight:C});let S=await o.getDimensions(l.floating);return A!==S.width||m!==S.height?{reset:{rects:!0}}:{}}},options:[f,A]},z&&{...{name:"arrow",options:b=m={element:z,padding:B},fn(e){let{element:t,padding:r}="function"==typeof b?b(e):b;return t&&({}).hasOwnProperty.call(t,"current")?null!=t.current?dy({element:t.current,padding:r}).fn(e):{}:t?dy({element:t,padding:r}).fn(e):{}}},options:[m,v]},dj({arrowWidth:j,arrowHeight:V}),P&&{...{name:"hide",options:x=y={strategy:"referenceHidden",...J},async fn(e){let{rects:t}=e,{strategy:r="referenceHidden",...n}=cy(x,e);switch(r){case"referenceHidden":{let r=cN(await cO(e,{...n,elementContext:"reference"}),t.reference);return{data:{referenceHiddenOffsets:r,referenceHidden:cQ(r)}}}case"escaped":{let r=cN(await cO(e,{...n,altBoundary:!0}),t.floating);return{data:{escapedOffsets:r,escaped:cQ(r)}}}default:return{}}}},options:[y,w]}]}),[et,er]=dV(Z),en=lw(L);ld(()=>{$&&en?.()},[$,en]);let ei=ee.arrow?.x,ea=ee.arrow?.y,es=ee.arrow?.centerOffset!==0,[eo,el]=rd.useState();return ld(()=>{N&&el(window.getComputedStyle(N).zIndex)},[N]),(0,rp.jsx)("div",{ref:K.setFloating,"data-radix-popper-content-wrapper":"",style:{...X,transform:$?X.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:eo,"--radix-popper-transform-origin":[ee.transformOrigin?.x,ee.transformOrigin?.y].join(" "),...ee.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,rp.jsx)(dO,{scope:C,placedSide:et,onArrowChange:H,arrowX:ei,arrowY:ea,shouldHideArrow:es,children:(0,rp.jsx)(ly.div,{"data-side":et,"data-align":er,...F,ref:U,style:{...F.style,animation:$?void 0:"none"}})})})});dQ.displayName=dF;var dU="PopperArrow",dz={top:"bottom",right:"left",bottom:"top",left:"right"},dH=rd.forwardRef(function(e,t){let{__scopePopper:r,...n}=e,i=dN(dU,r),a=dz[i.placedSide];return(0,rp.jsx)("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:(0,rp.jsx)(dM,{...n,ref:t,style:{...n.style,display:"block"}})})});function dG(e){return null!==e}dH.displayName=dU;var dj=e=>({name:"transformOrigin",options:e,fn(t){let{placement:r,rects:n,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,s=a?0:e.arrowWidth,o=a?0:e.arrowHeight,[l,u]=dV(r),c={start:"0%",center:"50%",end:"100%"}[u],d=(i.arrow?.x??0)+s/2,h=(i.arrow?.y??0)+o/2,p="",f="";return"bottom"===l?(p=a?c:`${d}px`,f=`${-o}px`):"top"===l?(p=a?c:`${d}px`,f=`${n.floating.height+o}px`):"right"===l?(p=`${-o}px`,f=a?c:`${h}px`):"left"===l&&(p=`${n.floating.width+o}px`,f=a?c:`${h}px`),{data:{x:p,y:f}}}});function dV(e){let[t,r="center"]=e.split("-");return[t,r]}function dW(e){let t=rd.useRef({value:e,previous:e});return rd.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var dq=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"});rd.forwardRef((e,t)=>(0,rp.jsx)(ly.span,{...e,ref:t,style:{...dq,...e.style}})).displayName="VisuallyHidden";var dY=[" ","Enter","ArrowUp","ArrowDown"],dJ=[" ","Enter"],dK="Select",[dX,dZ,d$]=cu(dK),[d0,d1]=lc(dK,[d$,dk]),d2=dk(),[d3,d4]=d0(dK),[d5,d9]=d0(dK),d8=e=>{let{__scopeSelect:t,children:r,open:n,defaultOpen:i,onOpenChange:a,value:s,defaultValue:o,onValueChange:l,dir:u,name:c,autoComplete:d,disabled:h,required:p,form:f}=e,A=d2(t),[g,m]=rd.useState(null),[v,b]=rd.useState(null),[y,w]=rd.useState(!1),x=cd(u),[C,E]=lg({prop:n,defaultProp:i??!1,onChange:a,caller:dK}),[S,M]=lg({prop:s,defaultProp:o,onChange:l,caller:dK}),I=rd.useRef(null),B=!g||f||!!g.closest("form"),[T,k]=rd.useState(new Set),_=Array.from(T).map(e=>e.props.value).join(";");return(0,rp.jsx)(dP,{...A,children:(0,rp.jsxs)(d3,{required:p,scope:t,trigger:g,onTriggerChange:m,valueNode:v,onValueNodeChange:b,valueNodeHasChildren:y,onValueNodeHasChildrenChange:w,contentId:lf(),value:S,onValueChange:M,open:C,onOpenChange:E,dir:x,triggerPointerDownPosRef:I,disabled:h,children:[(0,rp.jsx)(dX.Provider,{scope:t,children:(0,rp.jsx)(d5,{scope:e.__scopeSelect,onNativeOptionAdd:rd.useCallback(e=>{k(t=>new Set(t).add(e))},[]),onNativeOptionRemove:rd.useCallback(e=>{k(t=>{let r=new Set(t);return r.delete(e),r})},[]),children:r})}),B?(0,rp.jsxs)(hD,{"aria-hidden":!0,required:p,tabIndex:-1,name:c,autoComplete:d,value:S,onChange:e=>M(e.target.value),disabled:h,form:f,children:[void 0===S?(0,rp.jsx)("option",{value:""}):null,Array.from(T)]},_):null]})})};d8.displayName=dK;var d6="SelectTrigger",d7=rd.forwardRef((e,t)=>{let{__scopeSelect:r,disabled:n=!1,...i}=e,a=d2(r),s=d4(d6,r),o=s.disabled||n,l=on(t,s.onTriggerChange),u=dZ(r),c=rd.useRef("touch"),[d,h,p]=hF(e=>{let t=u().filter(e=>!e.disabled),r=t.find(e=>e.value===s.value),n=hO(t,e,r);void 0!==n&&s.onValueChange(n.value)}),f=e=>{o||(s.onOpenChange(!0),p()),e&&(s.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,rp.jsx)(dL,{asChild:!0,...a,children:(0,rp.jsx)(ly.button,{type:"button",role:"combobox","aria-controls":s.contentId,"aria-expanded":s.open,"aria-required":s.required,"aria-autocomplete":"none",dir:s.dir,"data-state":s.open?"open":"closed",disabled:o,"data-disabled":o?"":void 0,"data-placeholder":hL(s.value)?"":void 0,...i,ref:l,onClick:lu(i.onClick,e=>{e.currentTarget.focus(),"mouse"!==c.current&&f(e)}),onPointerDown:lu(i.onPointerDown,e=>{c.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&"mouse"===e.pointerType&&(f(e),e.preventDefault())}),onKeyDown:lu(i.onKeyDown,e=>{let t=""!==d.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||h(e.key),(!t||" "!==e.key)&&dY.includes(e.key)&&(f(),e.preventDefault())})})})});d7.displayName=d6;var he="SelectValue",ht=rd.forwardRef((e,t)=>{let{__scopeSelect:r,className:n,style:i,children:a,placeholder:s="",...o}=e,l=d4(he,r),{onValueNodeHasChildrenChange:u}=l,c=void 0!==a,d=on(t,l.onValueNodeChange);return ld(()=>{u(c)},[u,c]),(0,rp.jsx)(ly.span,{...o,ref:d,style:{pointerEvents:"none"},children:hL(l.value)?(0,rp.jsx)(rp.Fragment,{children:s}):a})});ht.displayName=he;var hr=rd.forwardRef((e,t)=>{let{__scopeSelect:r,children:n,...i}=e;return(0,rp.jsx)(ly.span,{"aria-hidden":!0,...i,ref:t,children:n||"▼"})});hr.displayName="SelectIcon";var hn=e=>(0,rp.jsx)(lF,{asChild:!0,...e});hn.displayName="SelectPortal";var hi="SelectContent",ha=rd.forwardRef((e,t)=>{let r=d4(hi,e.__scopeSelect),[n,i]=rd.useState();return(ld(()=>{i(new DocumentFragment)},[]),r.open)?(0,rp.jsx)(hu,{...e,ref:t}):n?al.createPortal((0,rp.jsx)(hs,{scope:e.__scopeSelect,children:(0,rp.jsx)(dX.Slot,{scope:e.__scopeSelect,children:(0,rp.jsx)("div",{children:e.children})})}),n):null});ha.displayName=hi;var[hs,ho]=d0(hi),hl=lm("SelectContent.RemoveScroll"),hu=rd.forwardRef((e,t)=>{let{__scopeSelect:r,position:n="item-aligned",onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:s,side:o,sideOffset:l,align:u,alignOffset:c,arrowPadding:d,collisionBoundary:h,collisionPadding:p,sticky:f,hideWhenDetached:A,avoidCollisions:g,...m}=e,v=d4(hi,r),[b,y]=rd.useState(null),[w,x]=rd.useState(null),C=on(t,e=>y(e)),[E,S]=rd.useState(null),[M,I]=rd.useState(null),B=dZ(r),[T,k]=rd.useState(!1),_=rd.useRef(!1);rd.useEffect(()=>{if(b)return uC(b)},[b]),lU();let R=rd.useCallback(e=>{let[t,...r]=B().map(e=>e.ref.current),[n]=r.slice(-1),i=document.activeElement;for(let r of e)if(r===i||(r?.scrollIntoView({block:"nearest"}),r===t&&w&&(w.scrollTop=0),r===n&&w&&(w.scrollTop=w.scrollHeight),r?.focus(),document.activeElement!==i))return},[B,w]),P=rd.useCallback(()=>R([E,b]),[R,E,b]);rd.useEffect(()=>{T&&P()},[T,P]);let{onOpenChange:D,triggerPointerDownPosRef:L}=v;rd.useEffect(()=>{if(b){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(L.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(L.current?.y??0))}},r=r=>{e.x<=10&&e.y<=10?r.preventDefault():b.contains(r.target)||D(!1),document.removeEventListener("pointermove",t),L.current=null};return null!==L.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",r,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",r,{capture:!0})}}},[b,D,L]),rd.useEffect(()=>{let e=()=>D(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}},[D]);let[F,O]=hF(e=>{let t=B().filter(e=>!e.disabled),r=t.find(e=>e.ref.current===document.activeElement),n=hO(t,e,r);n&&setTimeout(()=>n.ref.current.focus())}),N=rd.useCallback((e,t,r)=>{let n=!_.current&&!r;(void 0!==v.value&&v.value===t||n)&&(S(e),n&&(_.current=!0))},[v.value]),Q=rd.useCallback(()=>b?.focus(),[b]),U=rd.useCallback((e,t,r)=>{let n=!_.current&&!r;(void 0!==v.value&&v.value===t||n)&&I(e)},[v.value]),z="popper"===n?hd:hc,H=z===hd?{side:o,sideOffset:l,align:u,alignOffset:c,arrowPadding:d,collisionBoundary:h,collisionPadding:p,sticky:f,hideWhenDetached:A,avoidCollisions:g}:{};return(0,rp.jsx)(hs,{scope:r,content:b,viewport:w,onViewportChange:x,itemRefCallback:N,selectedItem:E,onItemLeave:Q,itemTextRefCallback:U,focusSelectedItem:P,selectedItemText:M,position:n,isPositioned:T,searchRef:F,children:(0,rp.jsx)(ug,{as:hl,allowPinchZoom:!0,children:(0,rp.jsx)(lk,{asChild:!0,trapped:v.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:lu(i,e=>{v.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,rp.jsx)(lE,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:s,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>v.onOpenChange(!1),children:(0,rp.jsx)(z,{role:"listbox",id:v.contentId,"data-state":v.open?"open":"closed",dir:v.dir,onContextMenu:e=>e.preventDefault(),...m,...H,onPlaced:()=>k(!0),ref:C,style:{display:"flex",flexDirection:"column",outline:"none",...m.style},onKeyDown:lu(m.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||O(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=B().filter(e=>!e.disabled).map(e=>e.ref.current);if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){let r=e.target,n=t.indexOf(r);t=t.slice(n+1)}setTimeout(()=>R(t)),e.preventDefault()}})})})})})})});hu.displayName="SelectContentImpl";var hc=rd.forwardRef((e,t)=>{let{__scopeSelect:r,onPlaced:n,...i}=e,a=d4(hi,r),s=ho(hi,r),[o,l]=rd.useState(null),[u,c]=rd.useState(null),d=on(t,e=>c(e)),h=dZ(r),p=rd.useRef(!1),f=rd.useRef(!0),{viewport:A,selectedItem:g,selectedItemText:m,focusSelectedItem:v}=s,b=rd.useCallback(()=>{if(a.trigger&&a.valueNode&&o&&u&&A&&g&&m){let e=a.trigger.getBoundingClientRect(),t=u.getBoundingClientRect(),r=a.valueNode.getBoundingClientRect(),i=m.getBoundingClientRect();if("rtl"!==a.dir){let n=i.left-t.left,a=r.left-n,s=e.left-a,l=e.width+s,u=Math.max(l,t.width),c=cl(a,[10,Math.max(10,window.innerWidth-10-u)]);o.style.minWidth=l+"px",o.style.left=c+"px"}else{let n=t.right-i.right,a=window.innerWidth-r.right-n,s=window.innerWidth-e.right-a,l=e.width+s,u=Math.max(l,t.width),c=cl(a,[10,Math.max(10,window.innerWidth-10-u)]);o.style.minWidth=l+"px",o.style.right=c+"px"}let s=h(),l=window.innerHeight-20,c=A.scrollHeight,d=window.getComputedStyle(u),f=parseInt(d.borderTopWidth,10),v=parseInt(d.paddingTop,10),b=parseInt(d.borderBottomWidth,10),y=f+v+c+parseInt(d.paddingBottom,10)+b,w=Math.min(5*g.offsetHeight,y),x=window.getComputedStyle(A),C=parseInt(x.paddingTop,10),E=parseInt(x.paddingBottom,10),S=e.top+e.height/2-10,M=g.offsetHeight/2,I=f+v+(g.offsetTop+M);if(I<=S){let e=s.length>0&&g===s[s.length-1].ref.current;o.style.bottom="0px";let t=Math.max(l-S,M+(e?E:0)+(u.clientHeight-A.offsetTop-A.offsetHeight)+b);o.style.height=I+t+"px"}else{let e=s.length>0&&g===s[0].ref.current;o.style.top="0px";let t=Math.max(S,f+A.offsetTop+(e?C:0)+M);o.style.height=t+(y-I)+"px",A.scrollTop=I-S+A.offsetTop}o.style.margin="10px 0",o.style.minHeight=w+"px",o.style.maxHeight=l+"px",n?.(),requestAnimationFrame(()=>p.current=!0)}},[h,a.trigger,a.valueNode,o,u,A,g,m,a.dir,n]);ld(()=>b(),[b]);let[y,w]=rd.useState();ld(()=>{u&&w(window.getComputedStyle(u).zIndex)},[u]);let x=rd.useCallback(e=>{e&&!0===f.current&&(b(),v?.(),f.current=!1)},[b,v]);return(0,rp.jsx)(hh,{scope:r,contentWrapper:o,shouldExpandOnScrollRef:p,onScrollButtonChange:x,children:(0,rp.jsx)("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:y},children:(0,rp.jsx)(ly.div,{...i,ref:d,style:{boxSizing:"border-box",maxHeight:"100%",...i.style}})})})});hc.displayName="SelectItemAlignedPosition";var hd=rd.forwardRef((e,t)=>{let{__scopeSelect:r,align:n="start",collisionPadding:i=10,...a}=e,s=d2(r);return(0,rp.jsx)(dQ,{...s,...a,ref:t,align:n,collisionPadding:i,style:{boxSizing:"border-box",...a.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});hd.displayName="SelectPopperPosition";var[hh,hp]=d0(hi,{}),hf="SelectViewport",hA=rd.forwardRef((e,t)=>{let{__scopeSelect:r,nonce:n,...i}=e,a=ho(hf,r),s=hp(hf,r),o=on(t,a.onViewportChange),l=rd.useRef(0);return(0,rp.jsxs)(rp.Fragment,{children:[(0,rp.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:n}),(0,rp.jsx)(dX.Slot,{scope:r,children:(0,rp.jsx)(ly.div,{"data-radix-select-viewport":"",role:"presentation",...i,ref:o,style:{position:"relative",flex:1,overflow:"hidden auto",...i.style},onScroll:lu(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:r,shouldExpandOnScrollRef:n}=s;if(n?.current&&r){let e=Math.abs(l.current-t.scrollTop);if(e>0){let n=window.innerHeight-20,i=Math.max(parseFloat(r.style.minHeight),parseFloat(r.style.height));if(i<n){let a=i+e,s=Math.min(n,a),o=a-s;r.style.height=s+"px","0px"===r.style.bottom&&(t.scrollTop=o>0?o:0,r.style.justifyContent="flex-end")}}}l.current=t.scrollTop})})})]})});hA.displayName=hf;var hg="SelectGroup",[hm,hv]=d0(hg);rd.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,i=lf();return(0,rp.jsx)(hm,{scope:r,id:i,children:(0,rp.jsx)(ly.div,{role:"group","aria-labelledby":i,...n,ref:t})})}).displayName=hg;var hb="SelectLabel";rd.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,i=hv(hb,r);return(0,rp.jsx)(ly.div,{id:i.id,...n,ref:t})}).displayName=hb;var hy="SelectItem",[hw,hx]=d0(hy),hC=rd.forwardRef((e,t)=>{let{__scopeSelect:r,value:n,disabled:i=!1,textValue:a,...s}=e,o=d4(hy,r),l=ho(hy,r),u=o.value===n,[c,d]=rd.useState(a??""),[h,p]=rd.useState(!1),f=on(t,e=>l.itemRefCallback?.(e,n,i)),A=lf(),g=rd.useRef("touch"),m=()=>{i||(o.onValueChange(n),o.onOpenChange(!1))};if(""===n)throw Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return(0,rp.jsx)(hw,{scope:r,value:n,disabled:i,textId:A,isSelected:u,onItemTextChange:rd.useCallback(e=>{d(t=>t||(e?.textContent??"").trim())},[]),children:(0,rp.jsx)(dX.ItemSlot,{scope:r,value:n,disabled:i,textValue:c,children:(0,rp.jsx)(ly.div,{role:"option","aria-labelledby":A,"data-highlighted":h?"":void 0,"aria-selected":u&&h,"data-state":u?"checked":"unchecked","aria-disabled":i||void 0,"data-disabled":i?"":void 0,tabIndex:i?void 0:-1,...s,ref:f,onFocus:lu(s.onFocus,()=>p(!0)),onBlur:lu(s.onBlur,()=>p(!1)),onClick:lu(s.onClick,()=>{"mouse"!==g.current&&m()}),onPointerUp:lu(s.onPointerUp,()=>{"mouse"===g.current&&m()}),onPointerDown:lu(s.onPointerDown,e=>{g.current=e.pointerType}),onPointerMove:lu(s.onPointerMove,e=>{g.current=e.pointerType,i?l.onItemLeave?.():"mouse"===g.current&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:lu(s.onPointerLeave,e=>{e.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:lu(s.onKeyDown,e=>{(l.searchRef?.current===""||" "!==e.key)&&(dJ.includes(e.key)&&m()," "===e.key&&e.preventDefault())})})})})});hC.displayName=hy;var hE="SelectItemText",hS=rd.forwardRef((e,t)=>{let{__scopeSelect:r,className:n,style:i,...a}=e,s=d4(hE,r),o=ho(hE,r),l=hx(hE,r),u=d9(hE,r),[c,d]=rd.useState(null),h=on(t,e=>d(e),l.onItemTextChange,e=>o.itemTextRefCallback?.(e,l.value,l.disabled)),p=c?.textContent,f=rd.useMemo(()=>(0,rp.jsx)("option",{value:l.value,disabled:l.disabled,children:p},l.value),[l.disabled,l.value,p]),{onNativeOptionAdd:A,onNativeOptionRemove:g}=u;return ld(()=>(A(f),()=>g(f)),[A,g,f]),(0,rp.jsxs)(rp.Fragment,{children:[(0,rp.jsx)(ly.span,{id:l.textId,...a,ref:h}),l.isSelected&&s.valueNode&&!s.valueNodeHasChildren?al.createPortal(a.children,s.valueNode):null]})});hS.displayName=hE;var hM="SelectItemIndicator",hI=rd.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e;return hx(hM,r).isSelected?(0,rp.jsx)(ly.span,{"aria-hidden":!0,...n,ref:t}):null});hI.displayName=hM;var hB="SelectScrollUpButton",hT=rd.forwardRef((e,t)=>{let r=ho(hB,e.__scopeSelect),n=hp(hB,e.__scopeSelect),[i,a]=rd.useState(!1),s=on(t,n.onScrollButtonChange);return ld(()=>{if(r.viewport&&r.isPositioned){let e=function(){a(t.scrollTop>0)},t=r.viewport;return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}},[r.viewport,r.isPositioned]),i?(0,rp.jsx)(hR,{...e,ref:s,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}}):null});hT.displayName=hB;var hk="SelectScrollDownButton",h_=rd.forwardRef((e,t)=>{let r=ho(hk,e.__scopeSelect),n=hp(hk,e.__scopeSelect),[i,a]=rd.useState(!1),s=on(t,n.onScrollButtonChange);return ld(()=>{if(r.viewport&&r.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)<e)},t=r.viewport;return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}},[r.viewport,r.isPositioned]),i?(0,rp.jsx)(hR,{...e,ref:s,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}}):null});h_.displayName=hk;var hR=rd.forwardRef((e,t)=>{let{__scopeSelect:r,onAutoScroll:n,...i}=e,a=ho("SelectScrollButton",r),s=rd.useRef(null),o=dZ(r),l=rd.useCallback(()=>{null!==s.current&&(window.clearInterval(s.current),s.current=null)},[]);return rd.useEffect(()=>()=>l(),[l]),ld(()=>{let e=o().find(e=>e.ref.current===document.activeElement);e?.ref.current?.scrollIntoView({block:"nearest"})},[o]),(0,rp.jsx)(ly.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:lu(i.onPointerDown,()=>{null===s.current&&(s.current=window.setInterval(n,50))}),onPointerMove:lu(i.onPointerMove,()=>{a.onItemLeave?.(),null===s.current&&(s.current=window.setInterval(n,50))}),onPointerLeave:lu(i.onPointerLeave,()=>{l()})})});rd.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e;return(0,rp.jsx)(ly.div,{"aria-hidden":!0,...n,ref:t})}).displayName="SelectSeparator";var hP="SelectArrow";rd.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,i=d2(r),a=d4(hP,r),s=ho(hP,r);return a.open&&"popper"===s.position?(0,rp.jsx)(dH,{...i,...n,ref:t}):null}).displayName=hP;var hD=rd.forwardRef(({__scopeSelect:e,value:t,...r},n)=>{let i=rd.useRef(null),a=on(n,i),s=dW(t);return rd.useEffect(()=>{let e=i.current;if(!e)return;let r=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,"value").set;if(s!==t&&r){let n=new Event("change",{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[s,t]),(0,rp.jsx)(ly.select,{...r,style:{...dq,...r.style},ref:a,defaultValue:t})});function hL(e){return""===e||void 0===e}function hF(e){let t=lw(e),r=rd.useRef(""),n=rd.useRef(0),i=rd.useCallback(e=>{let i=r.current+e;t(i),function e(t){r.current=t,window.clearTimeout(n.current),""!==t&&(n.current=window.setTimeout(()=>e(""),1e3))}(i)},[t]),a=rd.useCallback(()=>{r.current="",window.clearTimeout(n.current)},[]);return rd.useEffect(()=>()=>window.clearTimeout(n.current),[]),[r,i,a]}function hO(e,t,r){var n,i;let a=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,s=r?e.indexOf(r):-1,o=(n=e,i=Math.max(s,0),n.map((e,t)=>n[(i+t)%n.length]));1===a.length&&(o=o.filter(e=>e!==r));let l=o.find(e=>e.textValue.toLowerCase().startsWith(a.toLowerCase()));return l!==r?l:void 0}hD.displayName="SelectBubbleInput";var hN="Popover",[hQ,hU]=lc(hN,[dk]),hz=dk(),[hH,hG]=hQ(hN),hj=e=>{let{__scopePopover:t,children:r,open:n,defaultOpen:i,onOpenChange:a,modal:s=!1}=e,o=hz(t),l=rd.useRef(null),[u,c]=rd.useState(!1),[d,h]=lg({prop:n,defaultProp:i??!1,onChange:a,caller:hN});return(0,rp.jsx)(dP,{...o,children:(0,rp.jsx)(hH,{scope:t,contentId:lf(),triggerRef:l,open:d,onOpenChange:h,onOpenToggle:rd.useCallback(()=>h(e=>!e),[h]),hasCustomAnchor:u,onCustomAnchorAdd:rd.useCallback(()=>c(!0),[]),onCustomAnchorRemove:rd.useCallback(()=>c(!1),[]),modal:s,children:r})})};hj.displayName=hN;var hV="PopoverAnchor";rd.forwardRef((e,t)=>{let{__scopePopover:r,...n}=e,i=hG(hV,r),a=hz(r),{onCustomAnchorAdd:s,onCustomAnchorRemove:o}=i;return rd.useEffect(()=>(s(),()=>o()),[s,o]),(0,rp.jsx)(dL,{...a,...n,ref:t})}).displayName=hV;var hW="PopoverTrigger",hq=rd.forwardRef((e,t)=>{let{__scopePopover:r,...n}=e,i=hG(hW,r),a=hz(r),s=on(t,i.triggerRef),o=(0,rp.jsx)(ly.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":h5(i.open),...n,ref:s,onClick:lu(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?o:(0,rp.jsx)(dL,{asChild:!0,...a,children:o})});hq.displayName=hW;var hY="PopoverPortal",[hJ,hK]=hQ(hY,{forceMount:void 0}),hX=e=>{let{__scopePopover:t,forceMount:r,children:n,container:i}=e,a=hG(hY,t);return(0,rp.jsx)(hJ,{scope:t,forceMount:r,children:(0,rp.jsx)(lO,{present:r||a.open,children:(0,rp.jsx)(lF,{asChild:!0,container:i,children:n})})})};hX.displayName=hY;var hZ="PopoverContent",h$=rd.forwardRef((e,t)=>{let r=hK(hZ,e.__scopePopover),{forceMount:n=r.forceMount,...i}=e,a=hG(hZ,e.__scopePopover);return(0,rp.jsx)(lO,{present:n||a.open,children:a.modal?(0,rp.jsx)(h1,{...i,ref:t}):(0,rp.jsx)(h2,{...i,ref:t})})});h$.displayName=hZ;var h0=lm("PopoverContent.RemoveScroll"),h1=rd.forwardRef((e,t)=>{let r=hG(hZ,e.__scopePopover),n=rd.useRef(null),i=on(t,n),a=rd.useRef(!1);return rd.useEffect(()=>{let e=n.current;if(e)return uC(e)},[]),(0,rp.jsx)(ug,{as:h0,allowPinchZoom:!0,children:(0,rp.jsx)(h3,{...e,ref:i,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:lu(e.onCloseAutoFocus,e=>{e.preventDefault(),a.current||r.triggerRef.current?.focus()}),onPointerDownOutside:lu(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey;a.current=2===t.button||r},{checkForDefaultPrevented:!1}),onFocusOutside:lu(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),h2=rd.forwardRef((e,t)=>{let r=hG(hZ,e.__scopePopover),n=rd.useRef(!1),i=rd.useRef(!1);return(0,rp.jsx)(h3,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(n.current||r.triggerRef.current?.focus(),t.preventDefault()),n.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(n.current=!0,"pointerdown"===t.detail.originalEvent.type&&(i.current=!0));let a=t.target;r.triggerRef.current?.contains(a)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&i.current&&t.preventDefault()}})}),h3=rd.forwardRef((e,t)=>{let{__scopePopover:r,trapFocus:n,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:s,onEscapeKeyDown:o,onPointerDownOutside:l,onFocusOutside:u,onInteractOutside:c,...d}=e,h=hG(hZ,r),p=hz(r);return lU(),(0,rp.jsx)(lk,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,rp.jsx)(lE,{asChild:!0,disableOutsidePointerEvents:s,onInteractOutside:c,onEscapeKeyDown:o,onPointerDownOutside:l,onFocusOutside:u,onDismiss:()=>h.onOpenChange(!1),children:(0,rp.jsx)(dQ,{"data-state":h5(h.open),role:"dialog",id:h.contentId,...p,...d,ref:t,style:{...d.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),h4="PopoverClose";function h5(e){return e?"open":"closed"}rd.forwardRef((e,t)=>{let{__scopePopover:r,...n}=e,i=hG(h4,r);return(0,rp.jsx)(ly.button,{type:"button",...n,ref:t,onClick:lu(e.onClick,()=>i.onOpenChange(!1))})}).displayName=h4,rd.forwardRef((e,t)=>{let{__scopePopover:r,...n}=e,i=hz(r);return(0,rp.jsx)(dH,{...i,...n,ref:t})}).displayName="PopoverArrow";var h9=["PageUp","PageDown"],h8=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],h6={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},h7="Slider",[pe,pt,pr]=cu(h7),[pn,pi]=lc(h7,[pr]),[pa,ps]=pn(h7),po=rd.forwardRef((e,t)=>{let{name:r,min:n=0,max:i=100,step:a=1,orientation:s="horizontal",disabled:o=!1,minStepsBetweenThumbs:l=0,defaultValue:u=[n],value:c,onValueChange:d=()=>{},onValueCommit:h=()=>{},inverted:p=!1,form:f,...A}=e,g=rd.useRef(new Set),m=rd.useRef(0),v="horizontal"===s,[b=[],y]=lg({prop:c,defaultProp:u,onChange:e=>{let t=[...g.current];t[m.current]?.focus(),d(e)}}),w=rd.useRef(b);function x(e,t,{commit:r}={commit:!1}){let s,o=(String(a).split(".")[1]||"").length,u=cl(Math.round((Math.round((e-n)/a)*a+n)*(s=Math.pow(10,o)))/s,[n,i]);y((e=[])=>{let n=function(e=[],t,r){let n=[...e];return n[r]=t,n.sort((e,t)=>e-t)}(e,u,t);if(!function(e,t){if(t>0)return Math.min(...e.slice(0,-1).map((t,r)=>e[r+1]-t))>=t;return!0}(n,l*a))return e;{m.current=n.indexOf(u);let t=String(n)!==String(e);return t&&r&&h(n),t?n:e}})}return(0,rp.jsx)(pa,{scope:e.__scopeSlider,name:r,disabled:o,min:n,max:i,valueIndexToChangeRef:m,thumbs:g.current,values:b,orientation:s,form:f,children:(0,rp.jsx)(pe.Provider,{scope:e.__scopeSlider,children:(0,rp.jsx)(pe.Slot,{scope:e.__scopeSlider,children:(0,rp.jsx)(v?pc:pd,{"aria-disabled":o,"data-disabled":o?"":void 0,...A,ref:t,onPointerDown:lu(A.onPointerDown,()=>{o||(w.current=b)}),min:n,max:i,inverted:p,onSlideStart:o?void 0:function(e){let t=function(e,t){if(1===e.length)return 0;let r=e.map(e=>Math.abs(e-t)),n=Math.min(...r);return r.indexOf(n)}(b,e);x(e,t)},onSlideMove:o?void 0:function(e){x(e,m.current)},onSlideEnd:o?void 0:function(){let e=w.current[m.current];b[m.current]!==e&&h(b)},onHomeKeyDown:()=>!o&&x(n,0,{commit:!0}),onEndKeyDown:()=>!o&&x(i,b.length-1,{commit:!0}),onStepKeyDown:({event:e,direction:t})=>{if(!o){let r=h9.includes(e.key)||e.shiftKey&&h8.includes(e.key),n=m.current;x(b[n]+a*(r?10:1)*t,n,{commit:!0})}}})})})})});po.displayName=h7;var[pl,pu]=pn(h7,{startEdge:"left",endEdge:"right",size:"width",direction:1}),pc=rd.forwardRef((e,t)=>{let{min:r,max:n,dir:i,inverted:a,onSlideStart:s,onSlideMove:o,onSlideEnd:l,onStepKeyDown:u,...c}=e,[d,h]=rd.useState(null),p=on(t,e=>h(e)),f=rd.useRef(void 0),A=cd(i),g="ltr"===A,m=g&&!a||!g&&a;function v(e){let t=f.current||d.getBoundingClientRect(),i=px([0,t.width],m?[r,n]:[n,r]);return f.current=t,i(e-t.left)}return(0,rp.jsx)(pl,{scope:e.__scopeSlider,startEdge:m?"left":"right",endEdge:m?"right":"left",direction:m?1:-1,size:"width",children:(0,rp.jsx)(ph,{dir:A,"data-orientation":"horizontal",...c,ref:p,style:{...c.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:e=>{let t=v(e.clientX);s?.(t)},onSlideMove:e=>{let t=v(e.clientX);o?.(t)},onSlideEnd:()=>{f.current=void 0,l?.()},onStepKeyDown:e=>{let t=h6[m?"from-left":"from-right"].includes(e.key);u?.({event:e,direction:t?-1:1})}})})}),pd=rd.forwardRef((e,t)=>{let{min:r,max:n,inverted:i,onSlideStart:a,onSlideMove:s,onSlideEnd:o,onStepKeyDown:l,...u}=e,c=rd.useRef(null),d=on(t,c),h=rd.useRef(void 0),p=!i;function f(e){let t=h.current||c.current.getBoundingClientRect(),i=px([0,t.height],p?[n,r]:[r,n]);return h.current=t,i(e-t.top)}return(0,rp.jsx)(pl,{scope:e.__scopeSlider,startEdge:p?"bottom":"top",endEdge:p?"top":"bottom",size:"height",direction:p?1:-1,children:(0,rp.jsx)(ph,{"data-orientation":"vertical",...u,ref:d,style:{...u.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:e=>{let t=f(e.clientY);a?.(t)},onSlideMove:e=>{let t=f(e.clientY);s?.(t)},onSlideEnd:()=>{h.current=void 0,o?.()},onStepKeyDown:e=>{let t=h6[p?"from-bottom":"from-top"].includes(e.key);l?.({event:e,direction:t?-1:1})}})})}),ph=rd.forwardRef((e,t)=>{let{__scopeSlider:r,onSlideStart:n,onSlideMove:i,onSlideEnd:a,onHomeKeyDown:s,onEndKeyDown:o,onStepKeyDown:l,...u}=e,c=ps(h7,r);return(0,rp.jsx)(ly.span,{...u,ref:t,onKeyDown:lu(e.onKeyDown,e=>{"Home"===e.key?(s(e),e.preventDefault()):"End"===e.key?(o(e),e.preventDefault()):h9.concat(h8).includes(e.key)&&(l(e),e.preventDefault())}),onPointerDown:lu(e.onPointerDown,e=>{let t=e.target;t.setPointerCapture(e.pointerId),e.preventDefault(),c.thumbs.has(t)?t.focus():n(e)}),onPointerMove:lu(e.onPointerMove,e=>{e.target.hasPointerCapture(e.pointerId)&&i(e)}),onPointerUp:lu(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&(t.releasePointerCapture(e.pointerId),a(e))})})}),pp="SliderTrack",pf=rd.forwardRef((e,t)=>{let{__scopeSlider:r,...n}=e,i=ps(pp,r);return(0,rp.jsx)(ly.span,{"data-disabled":i.disabled?"":void 0,"data-orientation":i.orientation,...n,ref:t})});pf.displayName=pp;var pA="SliderRange",pg=rd.forwardRef((e,t)=>{let{__scopeSlider:r,...n}=e,i=ps(pA,r),a=pu(pA,r),s=on(t,rd.useRef(null)),o=i.values.length,l=i.values.map(e=>pw(e,i.min,i.max)),u=o>1?Math.min(...l):0,c=100-Math.max(...l);return(0,rp.jsx)(ly.span,{"data-orientation":i.orientation,"data-disabled":i.disabled?"":void 0,...n,ref:s,style:{...e.style,[a.startEdge]:u+"%",[a.endEdge]:c+"%"}})});pg.displayName=pA;var pm="SliderThumb",pv=rd.forwardRef((e,t)=>{let r=pt(e.__scopeSlider),[n,i]=rd.useState(null),a=on(t,e=>i(e)),s=rd.useMemo(()=>n?r().findIndex(e=>e.ref.current===n):-1,[r,n]);return(0,rp.jsx)(pb,{...e,ref:a,index:s})}),pb=rd.forwardRef((e,t)=>{var r,n,i,a,s;let o,l,{__scopeSlider:u,index:c,name:d,...h}=e,p=ps(pm,u),f=pu(pm,u),[A,g]=rd.useState(null),m=on(t,e=>g(e)),v=!A||p.form||!!A.closest("form"),b=dI(A),y=p.values[c],w=void 0===y?0:pw(y,p.min,p.max),x=(r=c,(n=p.values.length)>2?`Value ${r+1} of ${n}`:2===n?["Minimum","Maximum"][r]:void 0),C=b?.[f.size],E=C?(i=C,a=w,s=f.direction,l=px([0,50],[0,o=i/2]),(o-l(a)*s)*s):0;return rd.useEffect(()=>{if(A)return p.thumbs.add(A),()=>{p.thumbs.delete(A)}},[A,p.thumbs]),(0,rp.jsxs)("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[f.startEdge]:`calc(${w}% + ${E}px)`},children:[(0,rp.jsx)(pe.ItemSlot,{scope:e.__scopeSlider,children:(0,rp.jsx)(ly.span,{role:"slider","aria-label":e["aria-label"]||x,"aria-valuemin":p.min,"aria-valuenow":y,"aria-valuemax":p.max,"aria-orientation":p.orientation,"data-orientation":p.orientation,"data-disabled":p.disabled?"":void 0,tabIndex:p.disabled?void 0:0,...h,ref:m,style:void 0===y?{display:"none"}:e.style,onFocus:lu(e.onFocus,()=>{p.valueIndexToChangeRef.current=c})})}),v&&(0,rp.jsx)(py,{name:d??(p.name?p.name+(p.values.length>1?"[]":""):void 0),form:p.form,value:y},c)]})});pv.displayName=pm;var py=rd.forwardRef(({__scopeSlider:e,value:t,...r},n)=>{let i=rd.useRef(null),a=on(i,n),s=dW(t);return rd.useEffect(()=>{let e=i.current;if(!e)return;let r=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set;if(s!==t&&r){let n=new Event("input",{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[s,t]),(0,rp.jsx)(ly.input,{style:{display:"none"},...r,ref:a,defaultValue:t})});function pw(e,t,r){return cl(100/(r-t)*(e-t),[0,100])}function px(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let n=(t[1]-t[0])/(e[1]-e[0]);return t[0]+n*(r-e[0])}}py.displayName="RadioBubbleInput";var pC="rovingFocusGroup.onEntryFocus",pE={bubbles:!1,cancelable:!0},pS="RovingFocusGroup",[pM,pI,pB]=cu(pS),[pT,pk]=lc(pS,[pB]),[p_,pR]=pT(pS),pP=rd.forwardRef((e,t)=>(0,rp.jsx)(pM.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,rp.jsx)(pM.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,rp.jsx)(pD,{...e,ref:t})})}));pP.displayName=pS;var pD=rd.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,orientation:n,loop:i=!1,dir:a,currentTabStopId:s,defaultCurrentTabStopId:o,onCurrentTabStopIdChange:l,onEntryFocus:u,preventScrollOnEntryFocus:c=!1,...d}=e,h=rd.useRef(null),p=on(t,h),f=cd(a),[A,g]=lg({prop:s,defaultProp:o??null,onChange:l,caller:pS}),[m,v]=rd.useState(!1),b=lw(u),y=pI(r),w=rd.useRef(!1),[x,C]=rd.useState(0);return rd.useEffect(()=>{let e=h.current;if(e)return e.addEventListener(pC,b),()=>e.removeEventListener(pC,b)},[b]),(0,rp.jsx)(p_,{scope:r,orientation:n,dir:f,loop:i,currentTabStopId:A,onItemFocus:rd.useCallback(e=>g(e),[g]),onItemShiftTab:rd.useCallback(()=>v(!0),[]),onFocusableItemAdd:rd.useCallback(()=>C(e=>e+1),[]),onFocusableItemRemove:rd.useCallback(()=>C(e=>e-1),[]),children:(0,rp.jsx)(ly.div,{tabIndex:m||0===x?-1:0,"data-orientation":n,...d,ref:p,style:{outline:"none",...e.style},onMouseDown:lu(e.onMouseDown,()=>{w.current=!0}),onFocus:lu(e.onFocus,e=>{let t=!w.current;if(e.target===e.currentTarget&&t&&!m){let t=new CustomEvent(pC,pE);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=y().filter(e=>e.focusable);pN([e.find(e=>e.active),e.find(e=>e.id===A),...e].filter(Boolean).map(e=>e.ref.current),c)}}w.current=!1}),onBlur:lu(e.onBlur,()=>v(!1))})})}),pL="RovingFocusGroupItem",pF=rd.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,focusable:n=!0,active:i=!1,tabStopId:a,children:s,...o}=e,l=lf(),u=a||l,c=pR(pL,r),d=c.currentTabStopId===u,h=pI(r),{onFocusableItemAdd:p,onFocusableItemRemove:f,currentTabStopId:A}=c;return rd.useEffect(()=>{if(n)return p(),()=>f()},[n,p,f]),(0,rp.jsx)(pM.ItemSlot,{scope:r,id:u,focusable:n,active:i,children:(0,rp.jsx)(ly.span,{tabIndex:d?0:-1,"data-orientation":c.orientation,...o,ref:t,onMouseDown:lu(e.onMouseDown,e=>{n?c.onItemFocus(u):e.preventDefault()}),onFocus:lu(e.onFocus,()=>c.onItemFocus(u)),onKeyDown:lu(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void c.onItemShiftTab();if(e.target!==e.currentTarget)return;let t=function(e,t,r){var n;let i=(n=e.key,"rtl"!==r?n:"ArrowLeft"===n?"ArrowRight":"ArrowRight"===n?"ArrowLeft":n);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(i))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(i)))return pO[i]}(e,c.orientation,c.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let i=h().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)i.reverse();else if("prev"===t||"next"===t){var r,n;"prev"===t&&i.reverse();let a=i.indexOf(e.currentTarget);i=c.loop?(r=i,n=a+1,r.map((e,t)=>r[(n+t)%r.length])):i.slice(a+1)}setTimeout(()=>pN(i))}}),children:"function"==typeof s?s({isCurrentTabStop:d,hasTabStop:null!=A}):s})})});pF.displayName=pL;var pO={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function pN(e,t=!1){let r=document.activeElement;for(let n of e)if(n===r||(n.focus({preventScroll:t}),document.activeElement!==r))return}var pQ="Radio",[pU,pz]=lc(pQ),[pH,pG]=pU(pQ),pj=rd.forwardRef((e,t)=>{let{__scopeRadio:r,name:n,checked:i=!1,required:a,disabled:s,value:o="on",onCheck:l,form:u,...c}=e,[d,h]=rd.useState(null),p=on(t,e=>h(e)),f=rd.useRef(!1),A=!d||u||!!d.closest("form");return(0,rp.jsxs)(pH,{scope:r,checked:i,disabled:s,children:[(0,rp.jsx)(ly.button,{type:"button",role:"radio","aria-checked":i,"data-state":pY(i),"data-disabled":s?"":void 0,disabled:s,value:o,...c,ref:p,onClick:lu(e.onClick,e=>{i||l?.(),A&&(f.current=e.isPropagationStopped(),f.current||e.stopPropagation())})}),A&&(0,rp.jsx)(pq,{control:d,bubbles:!f.current,name:n,value:o,checked:i,required:a,disabled:s,form:u,style:{transform:"translateX(-100%)"}})]})});pj.displayName=pQ;var pV="RadioIndicator",pW=rd.forwardRef((e,t)=>{let{__scopeRadio:r,forceMount:n,...i}=e,a=pG(pV,r);return(0,rp.jsx)(lO,{present:n||a.checked,children:(0,rp.jsx)(ly.span,{"data-state":pY(a.checked),"data-disabled":a.disabled?"":void 0,...i,ref:t})})});pW.displayName=pV;var pq=rd.forwardRef(({__scopeRadio:e,control:t,checked:r,bubbles:n=!0,...i},a)=>{let s=rd.useRef(null),o=on(s,a),l=dW(r),u=dI(t);return rd.useEffect(()=>{let e=s.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(l!==r&&t){let i=new Event("click",{bubbles:n});t.call(e,r),e.dispatchEvent(i)}},[l,r,n]),(0,rp.jsx)(ly.input,{type:"radio","aria-hidden":!0,defaultChecked:r,...i,tabIndex:-1,ref:o,style:{...i.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function pY(e){return e?"checked":"unchecked"}pq.displayName="RadioBubbleInput";var pJ=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],pK="RadioGroup",[pX,pZ]=lc(pK,[pk,pz]),p$=pk(),p0=pz(),[p1,p2]=pX(pK),p3=rd.forwardRef((e,t)=>{let{__scopeRadioGroup:r,name:n,defaultValue:i,value:a,required:s=!1,disabled:o=!1,orientation:l,dir:u,loop:c=!0,onValueChange:d,...h}=e,p=p$(r),f=cd(u),[A,g]=lg({prop:a,defaultProp:i??null,onChange:d,caller:pK});return(0,rp.jsx)(p1,{scope:r,name:n,required:s,disabled:o,value:A,onValueChange:g,children:(0,rp.jsx)(pP,{asChild:!0,...p,orientation:l,dir:f,loop:c,children:(0,rp.jsx)(ly.div,{role:"radiogroup","aria-required":s,"aria-orientation":l,"data-disabled":o?"":void 0,dir:f,...h,ref:t})})})});p3.displayName=pK;var p4="RadioGroupItem",p5=rd.forwardRef((e,t)=>{let{__scopeRadioGroup:r,disabled:n,...i}=e,a=p2(p4,r),s=a.disabled||n,o=p$(r),l=p0(r),u=rd.useRef(null),c=on(t,u),d=a.value===i.value,h=rd.useRef(!1);return rd.useEffect(()=>{let e=e=>{pJ.includes(e.key)&&(h.current=!0)},t=()=>h.current=!1;return document.addEventListener("keydown",e),document.addEventListener("keyup",t),()=>{document.removeEventListener("keydown",e),document.removeEventListener("keyup",t)}},[]),(0,rp.jsx)(pF,{asChild:!0,...o,focusable:!s,active:d,children:(0,rp.jsx)(pj,{disabled:s,required:a.required,checked:d,...l,...i,name:a.name,ref:c,onCheck:()=>a.onValueChange(i.value),onKeyDown:lu(e=>{"Enter"===e.key&&e.preventDefault()}),onFocus:lu(i.onFocus,()=>{h.current&&u.current?.click()})})})});p5.displayName=p4;var p9=rd.forwardRef((e,t)=>{let{__scopeRadioGroup:r,...n}=e,i=p0(r);return(0,rp.jsx)(pW,{...i,...n,ref:t})});function p8(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function p6(e={},t={}){let r=["__proto__","constructor","prototype"];Object.keys(t).filter(e=>0>r.indexOf(e)).forEach(r=>{void 0===e[r]?e[r]=t[r]:p8(t[r])&&p8(e[r])&&Object.keys(t[r]).length>0&&p6(e[r],t[r])})}p9.displayName="RadioGroupIndicator";let p7={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function fe(){let e="u">typeof document?document:{};return p6(e,p7),e}let ft={document:p7,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"u"<typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"u">typeof setTimeout&&clearTimeout(e)}};function fr(){let e="u">typeof window?window:{};return p6(e,ft),e}function fn(e,t=0){return setTimeout(e,t)}function fi(){return Date.now()}function fa(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function fs(...e){let t=Object(e[0]),r=["__proto__","constructor","prototype"];for(let n=1;n<e.length;n+=1){let i=e[n];if(null!=i&&("u">typeof window&&void 0!==window.HTMLElement?!(i instanceof HTMLElement):!i||1!==i.nodeType&&11!==i.nodeType)){let e=Object.keys(Object(i)).filter(e=>0>r.indexOf(e));for(let r=0,n=e.length;r<n;r+=1){let n=e[r],a=Object.getOwnPropertyDescriptor(i,n);void 0!==a&&a.enumerable&&(fa(t[n])&&fa(i[n])?i[n].__swiper__?t[n]=i[n]:fs(t[n],i[n]):!fa(t[n])&&fa(i[n])?(t[n]={},i[n].__swiper__?t[n]=i[n]:fs(t[n],i[n])):t[n]=i[n])}}}return t}function fo(e,t,r){e.style.setProperty(t,r)}function fl({swiper:e,targetPosition:t,side:r}){let n,i=fr(),a=-e.translate,s=null,o=e.params.speed;e.wrapperEl.style.scrollSnapType="none",i.cancelAnimationFrame(e.cssModeFrameID);let l=t>a?"next":"prev",u=(e,t)=>"next"===l&&e>=t||"prev"===l&&e<=t,c=()=>{n=new Date().getTime(),null===s&&(s=n);let l=a+(.5-Math.cos(Math.max(Math.min((n-s)/o,1),0)*Math.PI)/2)*(t-a);if(u(l,t)&&(l=t),e.wrapperEl.scrollTo({[r]:l}),u(l,t)){e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.scrollSnapType="",setTimeout(()=>{e.wrapperEl.style.overflow="",e.wrapperEl.scrollTo({[r]:l})}),i.cancelAnimationFrame(e.cssModeFrameID);return}e.cssModeFrameID=i.requestAnimationFrame(c)};c()}function fu(e,t=""){let r=fr(),n=[...e.children];return(r.HTMLSlotElement&&e instanceof HTMLSlotElement&&n.push(...e.assignedElements()),t)?n.filter(e=>e.matches(t)):n}function fc(e){try{console.warn(e);return}catch(e){}}function fd(e,t=[]){let r=document.createElement(e);return r.classList.add(...Array.isArray(t)?t:function(e=""){return e.trim().split(" ").filter(e=>!!e.trim())}(t)),r}function fh(e,t){return fr().getComputedStyle(e,null).getPropertyValue(t)}function fp(e){let t,r=e;if(r){for(t=0;null!==(r=r.previousSibling);)1===r.nodeType&&(t+=1);return t}}function ff(e,t,r){let n=fr();return r?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(n.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(n.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function fA(e,t=""){"u">typeof trustedTypes?e.innerHTML=trustedTypes.createPolicy("html",{createHTML:e=>e}).createHTML(t):e.innerHTML=t}function fg(){let e,r;return t||(e=fr(),t={smoothScroll:(r=fe()).documentElement&&r.documentElement.style&&"scrollBehavior"in r.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&r instanceof e.DocumentTouch)}),t}function fm(e={}){return r||(r=function({userAgent:e}={}){let t=fg(),r=fr(),n=r.navigator.platform,i=e||r.navigator.userAgent,a={ios:!1,android:!1},s=r.screen.width,o=r.screen.height,l=i.match(/(Android);?[\s\/]+([\d.]+)?/),u=i.match(/(iPad)(?!\1).*OS\s([\d_]+)/),c=i.match(/(iPod)(.*OS\s([\d_]+))?/),d=!u&&i.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="MacIntel"===n;return!u&&h&&t.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${s}x${o}`)>=0&&((u=i.match(/(Version)\/([\d.]+)/))||(u=[0,1,"13_0_0"]),h=!1),l&&"Win32"!==n&&(a.os="android",a.android=!0),(u||d||c)&&(a.os="ios",a.ios=!0),a}(e)),r}function fv(){return n||(n=function(){let e=fr(),t=fm(),r=!1;function n(){let t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&0>t.indexOf("chrome")&&0>t.indexOf("android")}if(n()){let t=String(e.navigator.userAgent);if(t.includes("Version/")){let[e,n]=t.split("Version/")[1].split(" ")[0].split(".").map(e=>Number(e));r=e<16||16===e&&n<2}}let i=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),a=n(),s=a||i&&t.ios;return{isSafari:r||a,needPerspectiveFix:r,need3dFix:s,isWebView:i}}()),n}let fb=(e,t,r)=>{t&&!e.classList.contains(r)?e.classList.add(r):!t&&e.classList.contains(r)&&e.classList.remove(r)},fy=(e,t,r)=>{t&&!e.classList.contains(r)?e.classList.add(r):!t&&e.classList.contains(r)&&e.classList.remove(r)},fw=(e,t)=>{if(!e||e.destroyed||!e.params)return;let r=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(r){let t=r.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(r.shadowRoot?t=r.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{r.shadowRoot&&(t=r.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`))&&!t.lazyPreloaderManaged&&t.remove()})),t&&!t.lazyPreloaderManaged&&t.remove()}},fx=(e,t)=>{if(!e.slides[t])return;let r=e.slides[t].querySelector('[loading="lazy"]');r&&r.removeAttribute("loading")},fC=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext,r=e.slides.length;if(!r||!t||t<0)return;t=Math.min(t,r);let n="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),i=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){let r=[i-t];r.push(...Array.from({length:t}).map((e,t)=>i+n+t)),e.slides.forEach((t,n)=>{r.includes(t.column)&&fx(e,n)});return}let a=i+n-1;if(e.params.rewind||e.params.loop)for(let n=i-t;n<=a+t;n+=1){let t=(n%r+r)%r;(t<i||t>a)&&fx(e,t)}else for(let n=Math.max(i-t,0);n<=Math.min(a+t,r-1);n+=1)n!==i&&(n>a||n<i)&&fx(e,n)};function fE({swiper:e,runCallbacks:t,direction:r,step:n}){let{activeIndex:i,previousIndex:a}=e,s=r;s||(s=i>a?"next":i<a?"prev":"reset"),e.emit(`transition${n}`),t&&"reset"===s?e.emit(`slideResetTransition${n}`):t&&i!==a&&(e.emit(`slideChangeTransition${n}`),"next"===s?e.emit(`slideNextTransition${n}`):e.emit(`slidePrevTransition${n}`))}function fS(e,t,r){let n=fr(),{params:i}=e,a=i.edgeSwipeDetection,s=i.edgeSwipeThreshold;return!a||!(r<=s)&&!(r>=n.innerWidth-s)||"prevent"===a&&(t.preventDefault(),!0)}function fM(e){var t,r;let n,i,a=fe(),s=e;s.originalEvent&&(s=s.originalEvent);let o=this.touchEventsData;if("pointerdown"===s.type){if(null!==o.pointerId&&o.pointerId!==s.pointerId)return;o.pointerId=s.pointerId}else"touchstart"===s.type&&1===s.targetTouches.length&&(o.touchId=s.targetTouches[0].identifier);if("touchstart"===s.type)return void fS(this,s,s.targetTouches[0].pageX);let{params:l,touches:u,enabled:c}=this;if(!c||!l.simulateTouch&&"mouse"===s.pointerType||this.animating&&l.preventInteractionOnTransition)return;!this.animating&&l.cssMode&&l.loop&&this.loopFix();let d=s.target;if("wrapper"===l.touchEventsTarget&&(t=d,r=this.wrapperEl,n=fr(),!(i=r.contains(t))&&n.HTMLSlotElement&&r instanceof HTMLSlotElement&&((i=[...r.assignedElements()].includes(t))||(i=function(e,t){let r=[t];for(;r.length>0;){let t=r.shift();if(e===t)return!0;r.push(...t.children,...t.shadowRoot?t.shadowRoot.children:[],...t.assignedElements?t.assignedElements():[])}}(t,r))),!i)||"which"in s&&3===s.which||"button"in s&&s.button>0||o.isTouched&&o.isMoved)return;let h=!!l.noSwipingClass&&""!==l.noSwipingClass,p=s.composedPath?s.composedPath():s.path;h&&s.target&&s.target.shadowRoot&&p&&(d=p[0]);let f=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,A=!!(s.target&&s.target.shadowRoot);if(l.noSwiping&&(A?function(e,t=this){return function t(r){if(!r||r===fe()||r===fr())return null;r.assignedSlot&&(r=r.assignedSlot);let n=r.closest(e);return n||r.getRootNode?n||t(r.getRootNode().host):null}(t)}(f,d):d.closest(f))){this.allowClick=!0;return}if(l.swipeHandler&&!d.closest(l.swipeHandler))return;u.currentX=s.pageX,u.currentY=s.pageY;let g=u.currentX,m=u.currentY;if(!fS(this,s,g))return;Object.assign(o,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),u.startX=g,u.startY=m,o.touchStartTime=fi(),this.allowClick=!0,this.updateSize(),this.swipeDirection=void 0,l.threshold>0&&(o.allowThresholdMove=!1);let v=!0;d.matches(o.focusableElements)&&(v=!1,"SELECT"===d.nodeName&&(o.isTouched=!1)),a.activeElement&&a.activeElement.matches(o.focusableElements)&&a.activeElement!==d&&("mouse"===s.pointerType||"mouse"!==s.pointerType&&!d.matches(o.focusableElements))&&a.activeElement.blur();let b=v&&this.allowTouchMove&&l.touchStartPreventDefault;(l.touchStartForcePreventDefault||b)&&!d.isContentEditable&&s.preventDefault(),l.freeMode&&l.freeMode.enabled&&this.freeMode&&this.animating&&!l.cssMode&&this.freeMode.onTouchStart(),this.emit("touchStart",s)}function fI(e){let t,r,n=fe(),i=this.touchEventsData,{params:a,touches:s,rtlTranslate:o,enabled:l}=this;if(!l||!a.simulateTouch&&"mouse"===e.pointerType)return;let u=e;if(u.originalEvent&&(u=u.originalEvent),"pointermove"===u.type&&(null!==i.touchId||u.pointerId!==i.pointerId))return;if("touchmove"===u.type){if(!(t=[...u.changedTouches].find(e=>e.identifier===i.touchId))||t.identifier!==i.touchId)return}else t=u;if(!i.isTouched){i.startMoving&&i.isScrolling&&this.emit("touchMoveOpposite",u);return}let c=t.pageX,d=t.pageY;if(u.preventedByNestedSwiper){s.startX=c,s.startY=d;return}if(!this.allowTouchMove){u.target.matches(i.focusableElements)||(this.allowClick=!1),i.isTouched&&(Object.assign(s,{startX:c,startY:d,currentX:c,currentY:d}),i.touchStartTime=fi());return}if(a.touchReleaseOnEdges&&!a.loop){if(this.isVertical()){if(d<s.startY&&this.translate<=this.maxTranslate()||d>s.startY&&this.translate>=this.minTranslate()){i.isTouched=!1,i.isMoved=!1;return}}else if(o&&(c>s.startX&&-this.translate<=this.maxTranslate()||c<s.startX&&-this.translate>=this.minTranslate()))return;else if(!o&&(c<s.startX&&this.translate<=this.maxTranslate()||c>s.startX&&this.translate>=this.minTranslate()))return}if(n.activeElement&&n.activeElement.matches(i.focusableElements)&&n.activeElement!==u.target&&"mouse"!==u.pointerType&&n.activeElement.blur(),n.activeElement&&u.target===n.activeElement&&u.target.matches(i.focusableElements)){i.isMoved=!0,this.allowClick=!1;return}i.allowTouchCallbacks&&this.emit("touchMove",u),s.previousX=s.currentX,s.previousY=s.currentY,s.currentX=c,s.currentY=d;let h=s.currentX-s.startX,p=s.currentY-s.startY;if(this.params.threshold&&Math.sqrt(h**2+p**2)<this.params.threshold)return;if(void 0===i.isScrolling){let e;this.isHorizontal()&&s.currentY===s.startY||this.isVertical()&&s.currentX===s.startX?i.isScrolling=!1:h*h+p*p>=25&&(e=180*Math.atan2(Math.abs(p),Math.abs(h))/Math.PI,i.isScrolling=this.isHorizontal()?e>a.touchAngle:90-e>a.touchAngle)}if(i.isScrolling&&this.emit("touchMoveOpposite",u),void 0===i.startMoving&&(s.currentX!==s.startX||s.currentY!==s.startY)&&(i.startMoving=!0),i.isScrolling||"touchmove"===u.type&&i.preventTouchMoveFromPointerMove){i.isTouched=!1;return}if(!i.startMoving)return;this.allowClick=!1,!a.cssMode&&u.cancelable&&u.preventDefault(),a.touchMoveStopPropagation&&!a.nested&&u.stopPropagation();let f=this.isHorizontal()?h:p,A=this.isHorizontal()?s.currentX-s.previousX:s.currentY-s.previousY;a.oneWayMovement&&(f=Math.abs(f)*(o?1:-1),A=Math.abs(A)*(o?1:-1)),s.diff=f,f*=a.touchRatio,o&&(f=-f,A=-A);let g=this.touchesDirection;this.swipeDirection=f>0?"prev":"next",this.touchesDirection=A>0?"prev":"next";let m=this.params.loop&&!a.cssMode,v="next"===this.touchesDirection&&this.allowSlideNext||"prev"===this.touchesDirection&&this.allowSlidePrev;if(!i.isMoved){if(m&&v&&this.loopFix({direction:this.swipeDirection}),i.startTranslate=this.getTranslate(),this.setTransition(0),this.animating){let e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});this.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,a.grabCursor&&(!0===this.allowSlideNext||!0===this.allowSlidePrev)&&this.setGrabCursor(!0),this.emit("sliderFirstMove",u)}if(new Date().getTime(),!1!==a._loopSwapReset&&i.isMoved&&i.allowThresholdMove&&g!==this.touchesDirection&&m&&v&&Math.abs(f)>=1){Object.assign(s,{startX:c,startY:d,currentX:c,currentY:d,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,i.startTranslate=i.currentTranslate;return}this.emit("sliderMove",u),i.isMoved=!0,i.currentTranslate=f+i.startTranslate;let b=!0,y=a.resistanceRatio;if(a.touchReleaseOnEdges&&(y=0),f>0?(m&&v&&!r&&i.allowThresholdMove&&i.currentTranslate>(a.centeredSlides?this.minTranslate()-this.slidesSizesGrid[this.activeIndex+1]-("auto"!==a.slidesPerView&&this.slides.length-a.slidesPerView>=2?this.slidesSizesGrid[this.activeIndex+1]+this.params.spaceBetween:0)-this.params.spaceBetween:this.minTranslate())&&this.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>this.minTranslate()&&(b=!1,a.resistance&&(i.currentTranslate=this.minTranslate()-1+(-this.minTranslate()+i.startTranslate+f)**y))):f<0&&(m&&v&&!r&&i.allowThresholdMove&&i.currentTranslate<(a.centeredSlides?this.maxTranslate()+this.slidesSizesGrid[this.slidesSizesGrid.length-1]+this.params.spaceBetween+("auto"!==a.slidesPerView&&this.slides.length-a.slidesPerView>=2?this.slidesSizesGrid[this.slidesSizesGrid.length-1]+this.params.spaceBetween:0):this.maxTranslate())&&this.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:this.slides.length-("auto"===a.slidesPerView?this.slidesPerViewDynamic():Math.ceil(parseFloat(a.slidesPerView,10)))}),i.currentTranslate<this.maxTranslate()&&(b=!1,a.resistance&&(i.currentTranslate=this.maxTranslate()+1-(this.maxTranslate()-i.startTranslate-f)**y))),b&&(u.preventedByNestedSwiper=!0),!this.allowSlideNext&&"next"===this.swipeDirection&&i.currentTranslate<i.startTranslate&&(i.currentTranslate=i.startTranslate),!this.allowSlidePrev&&"prev"===this.swipeDirection&&i.currentTranslate>i.startTranslate&&(i.currentTranslate=i.startTranslate),this.allowSlidePrev||this.allowSlideNext||(i.currentTranslate=i.startTranslate),a.threshold>0)if(Math.abs(f)>a.threshold||i.allowThresholdMove){if(!i.allowThresholdMove){i.allowThresholdMove=!0,s.startX=s.currentX,s.startY=s.currentY,i.currentTranslate=i.startTranslate,s.diff=this.isHorizontal()?s.currentX-s.startX:s.currentY-s.startY;return}}else{i.currentTranslate=i.startTranslate;return}a.followFinger&&!a.cssMode&&((a.freeMode&&a.freeMode.enabled&&this.freeMode||a.watchSlidesProgress)&&(this.updateActiveIndex(),this.updateSlidesClasses()),a.freeMode&&a.freeMode.enabled&&this.freeMode&&this.freeMode.onTouchMove(),this.updateProgress(i.currentTranslate),this.setTranslate(i.currentTranslate))}function fB(e){let t,r,n=this,i=n.touchEventsData,a=e;if(a.originalEvent&&(a=a.originalEvent),"touchend"===a.type||"touchcancel"===a.type){if(!(t=[...a.changedTouches].find(e=>e.identifier===i.touchId))||t.identifier!==i.touchId)return}else{if(null!==i.touchId||a.pointerId!==i.pointerId)return;t=a}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(a.type)&&!(["pointercancel","contextmenu"].includes(a.type)&&(n.browser.isSafari||n.browser.isWebView)))return;i.pointerId=null,i.touchId=null;let{params:s,touches:o,rtlTranslate:l,slidesGrid:u,enabled:c}=n;if(!c||!s.simulateTouch&&"mouse"===a.pointerType)return;if(i.allowTouchCallbacks&&n.emit("touchEnd",a),i.allowTouchCallbacks=!1,!i.isTouched){i.isMoved&&s.grabCursor&&n.setGrabCursor(!1),i.isMoved=!1,i.startMoving=!1;return}s.grabCursor&&i.isMoved&&i.isTouched&&(!0===n.allowSlideNext||!0===n.allowSlidePrev)&&n.setGrabCursor(!1);let d=fi(),h=d-i.touchStartTime;if(n.allowClick){let e=a.path||a.composedPath&&a.composedPath();n.updateClickedSlide(e&&e[0]||a.target,e),n.emit("tap click",a),h<300&&d-i.lastClickTime<300&&n.emit("doubleTap doubleClick",a)}if(i.lastClickTime=fi(),fn(()=>{n.destroyed||(n.allowClick=!0)}),!i.isTouched||!i.isMoved||!n.swipeDirection||0===o.diff&&!i.loopSwapReset||i.currentTranslate===i.startTranslate&&!i.loopSwapReset){i.isTouched=!1,i.isMoved=!1,i.startMoving=!1;return}if(i.isTouched=!1,i.isMoved=!1,i.startMoving=!1,r=s.followFinger?l?n.translate:-n.translate:-i.currentTranslate,s.cssMode)return;if(s.freeMode&&s.freeMode.enabled)return void n.freeMode.onTouchEnd({currentPos:r});let p=r>=-n.maxTranslate()&&!n.params.loop,f=0,A=n.slidesSizesGrid[0];for(let e=0;e<u.length;e+=e<s.slidesPerGroupSkip?1:s.slidesPerGroup){let t=e<s.slidesPerGroupSkip-1?1:s.slidesPerGroup;void 0!==u[e+t]?(p||r>=u[e]&&r<u[e+t])&&(f=e,A=u[e+t]-u[e]):(p||r>=u[e])&&(f=e,A=u[u.length-1]-u[u.length-2])}let g=null,m=null;s.rewind&&(n.isBeginning?m=s.virtual&&s.virtual.enabled&&n.virtual?n.virtual.slides.length-1:n.slides.length-1:n.isEnd&&(g=0));let v=(r-u[f])/A,b=f<s.slidesPerGroupSkip-1?1:s.slidesPerGroup;if(h>s.longSwipesMs){if(!s.longSwipes)return void n.slideTo(n.activeIndex);"next"===n.swipeDirection&&(v>=s.longSwipesRatio?n.slideTo(s.rewind&&n.isEnd?g:f+b):n.slideTo(f)),"prev"===n.swipeDirection&&(v>1-s.longSwipesRatio?n.slideTo(f+b):null!==m&&v<0&&Math.abs(v)>s.longSwipesRatio?n.slideTo(m):n.slideTo(f))}else{if(!s.shortSwipes)return void n.slideTo(n.activeIndex);n.navigation&&(a.target===n.navigation.nextEl||a.target===n.navigation.prevEl)?a.target===n.navigation.nextEl?n.slideTo(f+b):n.slideTo(f):("next"===n.swipeDirection&&n.slideTo(null!==g?g:f+b),"prev"===n.swipeDirection&&n.slideTo(null!==m?m:f))}}function fT(){let e=this,{params:t,el:r}=e;if(r&&0===r.offsetWidth)return;t.breakpoints&&e.setBreakpoint();let{allowSlideNext:n,allowSlidePrev:i,snapGrid:a}=e,s=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();let o=s&&t.loop;"auto"!==t.slidesPerView&&!(t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!s?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout(()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()},500)),e.allowSlidePrev=i,e.allowSlideNext=n,e.params.watchOverflow&&a!==e.snapGrid&&e.checkOverflow()}function fk(e){this.enabled&&!this.allowClick&&(this.params.preventClicks&&e.preventDefault(),this.params.preventClicksPropagation&&this.animating&&(e.stopPropagation(),e.stopImmediatePropagation()))}function f_(){let{wrapperEl:e,rtlTranslate:t,enabled:r}=this;if(!r)return;this.previousTranslate=this.translate,this.isHorizontal()?this.translate=-e.scrollLeft:this.translate=-e.scrollTop,0===this.translate&&(this.translate=0),this.updateActiveIndex(),this.updateSlidesClasses();let n=this.maxTranslate()-this.minTranslate();(0===n?0:(this.translate-this.minTranslate())/n)!==this.progress&&this.updateProgress(t?-this.translate:this.translate),this.emit("setTranslate",this.translate,!1)}function fR(e){fw(this,e.target),!this.params.cssMode&&("auto"===this.params.slidesPerView||this.params.autoHeight)&&this.update()}function fP(){!this.documentTouchHandlerProceeded&&(this.documentTouchHandlerProceeded=!0,this.params.touchReleaseOnEdges&&(this.el.style.touchAction="auto"))}let fD=(e,t)=>{let r=fe(),{params:n,el:i,wrapperEl:a,device:s}=e,o=!!n.nested,l="on"===t?"addEventListener":"removeEventListener";i&&"string"!=typeof i&&(r[l]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),i[l]("touchstart",e.onTouchStart,{passive:!1}),i[l]("pointerdown",e.onTouchStart,{passive:!1}),r[l]("touchmove",e.onTouchMove,{passive:!1,capture:o}),r[l]("pointermove",e.onTouchMove,{passive:!1,capture:o}),r[l]("touchend",e.onTouchEnd,{passive:!0}),r[l]("pointerup",e.onTouchEnd,{passive:!0}),r[l]("pointercancel",e.onTouchEnd,{passive:!0}),r[l]("touchcancel",e.onTouchEnd,{passive:!0}),r[l]("pointerout",e.onTouchEnd,{passive:!0}),r[l]("pointerleave",e.onTouchEnd,{passive:!0}),r[l]("contextmenu",e.onTouchEnd,{passive:!0}),(n.preventClicks||n.preventClicksPropagation)&&i[l]("click",e.onClick,!0),n.cssMode&&a[l]("scroll",e.onScroll),n.updateOnWindowResize?e[t](s.ios||s.android?"resize orientationchange observerUpdate":"resize observerUpdate",fT,!0):e[t]("observerUpdate",fT,!0),i[l]("load",e.onLoad,{capture:!0}))},fL=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var fF={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,snapToSlideEdge:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};let fO={eventsEmitter:{on(e,t,r){let n=this;if(!n.eventsListeners||n.destroyed||"function"!=typeof t)return n;let i=r?"unshift":"push";return e.split(" ").forEach(e=>{n.eventsListeners[e]||(n.eventsListeners[e]=[]),n.eventsListeners[e][i](t)}),n},once(e,t,r){let n=this;if(!n.eventsListeners||n.destroyed||"function"!=typeof t)return n;function i(...r){n.off(e,i),i.__emitterProxy&&delete i.__emitterProxy,t.apply(n,r)}return i.__emitterProxy=t,n.on(e,i,r)},onAny(e,t){return!this.eventsListeners||this.destroyed||"function"!=typeof e||0>this.eventsAnyListeners.indexOf(e)&&this.eventsAnyListeners[t?"unshift":"push"](e),this},offAny(e){if(!this.eventsListeners||this.destroyed||!this.eventsAnyListeners)return this;let t=this.eventsAnyListeners.indexOf(e);return t>=0&&this.eventsAnyListeners.splice(t,1),this},off(e,t){let r=this;return r.eventsListeners&&!r.destroyed&&r.eventsListeners&&e.split(" ").forEach(e=>{void 0===t?r.eventsListeners[e]=[]:r.eventsListeners[e]&&r.eventsListeners[e].forEach((n,i)=>{(n===t||n.__emitterProxy&&n.__emitterProxy===t)&&r.eventsListeners[e].splice(i,1)})}),r},emit(...e){let t,r,n,i=this;return i.eventsListeners&&!i.destroyed&&i.eventsListeners&&("string"==typeof e[0]||Array.isArray(e[0])?(t=e[0],r=e.slice(1,e.length),n=i):(t=e[0].events,r=e[0].data,n=e[0].context||i),r.unshift(n),(Array.isArray(t)?t:t.split(" ")).forEach(e=>{i.eventsAnyListeners&&i.eventsAnyListeners.length&&i.eventsAnyListeners.forEach(t=>{t.apply(n,[e,...r])}),i.eventsListeners&&i.eventsListeners[e]&&i.eventsListeners[e].forEach(e=>{e.apply(n,r)})})),i}},update:{updateSize:function(){let e,t,r=this.el;e=void 0!==this.params.width&&null!==this.params.width?this.params.width:r.clientWidth,t=void 0!==this.params.height&&null!==this.params.height?this.params.height:r.clientHeight,0===e&&this.isHorizontal()||0===t&&this.isVertical()||(e=e-parseInt(fh(r,"padding-left")||0,10)-parseInt(fh(r,"padding-right")||0,10),t=t-parseInt(fh(r,"padding-top")||0,10)-parseInt(fh(r,"padding-bottom")||0,10),Number.isNaN(e)&&(e=0),Number.isNaN(t)&&(t=0),Object.assign(this,{width:e,height:t,size:this.isHorizontal()?e:t}))},updateSlides:function(){let e,t=this;function r(e,r){return parseFloat(e.getPropertyValue(t.getDirectionLabel(r))||0)}let n=t.params,{wrapperEl:i,slidesEl:a,rtlTranslate:s,wrongRTL:o}=t,l=t.virtual&&n.virtual.enabled,u=l?t.virtual.slides.length:t.slides.length,c=fu(a,`.${t.params.slideClass}, swiper-slide`),d=l?t.virtual.slides.length:c.length,h=[],p=[],f=[],A=n.slidesOffsetBefore;"function"==typeof A&&(A=n.slidesOffsetBefore.call(t));let g=n.slidesOffsetAfter;"function"==typeof g&&(g=n.slidesOffsetAfter.call(t));let m=t.snapGrid.length,v=t.slidesGrid.length,b=t.size-A-g,y=n.spaceBetween,w=-A,x=0,C=0;if(void 0===b)return;"string"==typeof y&&y.indexOf("%")>=0?y=parseFloat(y.replace("%",""))/100*b:"string"==typeof y&&(y=parseFloat(y)),t.virtualSize=-y-A-g,c.forEach(e=>{s?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""}),n.centeredSlides&&n.cssMode&&(fo(i,"--swiper-centered-offset-before",""),fo(i,"--swiper-centered-offset-after","")),n.cssMode&&(fo(i,"--swiper-slides-offset-before",`${A}px`),fo(i,"--swiper-slides-offset-after",`${g}px`));let E=n.grid&&n.grid.rows>1&&t.grid;E?t.grid.initSlides(c):t.grid&&t.grid.unsetSlides();let S="auto"===n.slidesPerView&&n.breakpoints&&Object.keys(n.breakpoints).filter(e=>void 0!==n.breakpoints[e].slidesPerView).length>0;for(let i=0;i<d;i+=1){e=0;let a=c[i];if(!a||(E&&t.grid.updateSlide(i,a,c),"none"!==fh(a,"display"))){if(l&&"auto"===n.slidesPerView)n.virtual.slidesPerViewAutoSlideSize&&(e=n.virtual.slidesPerViewAutoSlideSize),e&&a&&(n.roundLengths&&(e=Math.floor(e)),a.style[t.getDirectionLabel("width")]=`${e}px`);else if("auto"===n.slidesPerView){S&&(a.style[t.getDirectionLabel("width")]="");let i=getComputedStyle(a),s=a.style.transform,o=a.style.webkitTransform;if(s&&(a.style.transform="none"),o&&(a.style.webkitTransform="none"),n.roundLengths)e=t.isHorizontal()?ff(a,"width",!0):ff(a,"height",!0);else{let t=r(i,"width"),n=r(i,"padding-left"),s=r(i,"padding-right"),o=r(i,"margin-left"),l=r(i,"margin-right"),u=i.getPropertyValue("box-sizing");if(u&&"border-box"===u)e=t+o+l;else{let{clientWidth:r,offsetWidth:i}=a;e=t+n+s+o+l+(i-r)}}s&&(a.style.transform=s),o&&(a.style.webkitTransform=o),n.roundLengths&&(e=Math.floor(e))}else e=(b-(n.slidesPerView-1)*y)/n.slidesPerView,n.roundLengths&&(e=Math.floor(e)),a&&(a.style[t.getDirectionLabel("width")]=`${e}px`);a&&(a.swiperSlideSize=e),f.push(e),n.centeredSlides?(w=w+e/2+x/2+y,0===x&&0!==i&&(w=w-b/2-y),0===i&&(w=w-b/2-y),.001>Math.abs(w)&&(w=0),n.roundLengths&&(w=Math.floor(w)),C%n.slidesPerGroup==0&&h.push(w),p.push(w)):(n.roundLengths&&(w=Math.floor(w)),(C-Math.min(t.params.slidesPerGroupSkip,C))%t.params.slidesPerGroup==0&&h.push(w),p.push(w),w=w+e+y),t.virtualSize+=e+y,x=e,C+=1}}if(t.virtualSize=Math.max(t.virtualSize,b)+g,s&&o&&("slide"===n.effect||"coverflow"===n.effect)&&(i.style.width=`${t.virtualSize+y}px`),n.setWrapperSize&&(i.style[t.getDirectionLabel("width")]=`${t.virtualSize+y}px`),E&&t.grid.updateWrapperSize(e,h),!n.centeredSlides){let e="auto"!==n.slidesPerView&&n.slidesPerView%1!=0,r=n.snapToSlideEdge&&!n.loop&&("auto"===n.slidesPerView||e),i=h.length;if(r){let e;if("auto"===n.slidesPerView){e=1;let t=0;for(let r=f.length-1;r>=0;r-=1)if((t+=f[r]+(r<f.length-1?y:0))<=b)e=f.length-r;else break}else e=Math.floor(n.slidesPerView);i=Math.max(d-e,0)}let a=[];for(let e=0;e<h.length;e+=1){let s=h[e];n.roundLengths&&(s=Math.floor(s)),r?e<=i&&a.push(s):h[e]<=t.virtualSize-b&&a.push(s)}h=a,Math.floor(t.virtualSize-b)-Math.floor(h[h.length-1])>1&&!r&&h.push(t.virtualSize-b)}if(l&&n.loop){let e=f[0]+y;if(n.slidesPerGroup>1){let r=Math.ceil((t.virtual.slidesBefore+t.virtual.slidesAfter)/n.slidesPerGroup),i=e*n.slidesPerGroup;for(let e=0;e<r;e+=1)h.push(h[h.length-1]+i)}for(let r=0;r<t.virtual.slidesBefore+t.virtual.slidesAfter;r+=1)1===n.slidesPerGroup&&h.push(h[h.length-1]+e),p.push(p[p.length-1]+e),t.virtualSize+=e}if(0===h.length&&(h=[0]),0!==y){let e=t.isHorizontal()&&s?"marginLeft":t.getDirectionLabel("marginRight");c.filter((e,t)=>!n.cssMode||!!n.loop||t!==c.length-1).forEach(t=>{t.style[e]=`${y}px`})}if(n.centeredSlides&&n.centeredSlidesBounds){let e=0;f.forEach(t=>{e+=t+(y||0)});let t=(e-=y)>b?e-b:0;h=h.map(e=>e<=0?-A:e>t?t+g:e)}if(n.centerInsufficientSlides){let e=0;if(f.forEach(t=>{e+=t+(y||0)}),(e-=y)<b){let t=(b-e)/2;h.forEach((e,r)=>{h[r]=e-t}),p.forEach((e,r)=>{p[r]=e+t})}}if(Object.assign(t,{slides:c,snapGrid:h,slidesGrid:p,slidesSizesGrid:f}),n.centeredSlides&&n.cssMode&&!n.centeredSlidesBounds){fo(i,"--swiper-centered-offset-before",`${-h[0]}px`),fo(i,"--swiper-centered-offset-after",`${t.size/2-f[f.length-1]/2}px`);let e=-t.snapGrid[0],r=-t.slidesGrid[0];t.snapGrid=t.snapGrid.map(t=>t+e),t.slidesGrid=t.slidesGrid.map(e=>e+r)}if(d!==u&&t.emit("slidesLengthChange"),h.length!==m&&(t.params.watchOverflow&&t.checkOverflow(),t.emit("snapGridLengthChange")),p.length!==v&&t.emit("slidesGridLengthChange"),n.watchSlidesProgress&&t.updateSlidesOffset(),t.emit("slidesUpdated"),!l&&!n.cssMode&&("slide"===n.effect||"fade"===n.effect)){let e=`${n.containerModifierClass}backface-hidden`,r=t.el.classList.contains(e);d<=n.maxBackfaceHiddenSlides?r||t.el.classList.add(e):r&&t.el.classList.remove(e)}},updateAutoHeight:function(e){let t,r=this,n=[],i=r.virtual&&r.params.virtual.enabled,a=0;"number"==typeof e?r.setTransition(e):!0===e&&r.setTransition(r.params.speed);let s=e=>i?r.slides[r.getSlideIndexByData(e)]:r.slides[e];if("auto"!==r.params.slidesPerView&&r.params.slidesPerView>1)if(r.params.centeredSlides)(r.visibleSlides||[]).forEach(e=>{n.push(e)});else for(t=0;t<Math.ceil(r.params.slidesPerView);t+=1){let e=r.activeIndex+t;if(e>r.slides.length&&!i)break;n.push(s(e))}else n.push(s(r.activeIndex));for(t=0;t<n.length;t+=1)if(void 0!==n[t]){let e=n[t].offsetHeight;a=e>a?e:a}(a||0===a)&&(r.wrapperEl.style.height=`${a}px`)},updateSlidesOffset:function(){let e=this.slides,t=this.isElement?this.isHorizontal()?this.wrapperEl.offsetLeft:this.wrapperEl.offsetTop:0;for(let r=0;r<e.length;r+=1)e[r].swiperSlideOffset=(this.isHorizontal()?e[r].offsetLeft:e[r].offsetTop)-t-this.cssOverflowAdjustment()},updateSlidesProgress:function(e=this&&this.translate||0){let t=this.params,{slides:r,rtlTranslate:n,snapGrid:i}=this;if(0===r.length)return;void 0===r[0].swiperSlideOffset&&this.updateSlidesOffset();let a=-e;n&&(a=e),this.visibleSlidesIndexes=[],this.visibleSlides=[];let s=t.spaceBetween;"string"==typeof s&&s.indexOf("%")>=0?s=parseFloat(s.replace("%",""))/100*this.size:"string"==typeof s&&(s=parseFloat(s));for(let e=0;e<r.length;e+=1){let o=r[e],l=o.swiperSlideOffset;t.cssMode&&t.centeredSlides&&(l-=r[0].swiperSlideOffset);let u=(a+(t.centeredSlides?this.minTranslate():0)-l)/(o.swiperSlideSize+s),c=(a-i[0]+(t.centeredSlides?this.minTranslate():0)-l)/(o.swiperSlideSize+s),d=-(a-l),h=d+this.slidesSizesGrid[e],p=d>=0&&d<=this.size-this.slidesSizesGrid[e],f=d>=0&&d<this.size-1||h>1&&h<=this.size||d<=0&&h>=this.size;f&&(this.visibleSlides.push(o),this.visibleSlidesIndexes.push(e)),fb(o,f,t.slideVisibleClass),fb(o,p,t.slideFullyVisibleClass),o.progress=n?-u:u,o.originalProgress=n?-c:c}},updateProgress:function(e){if(void 0===e){let t=this.rtlTranslate?-1:1;e=this&&this.translate&&this.translate*t||0}let t=this.params,r=this.maxTranslate()-this.minTranslate(),{progress:n,isBeginning:i,isEnd:a,progressLoop:s}=this,o=i,l=a;if(0===r)n=0,i=!0,a=!0;else{n=(e-this.minTranslate())/r;let t=1>Math.abs(e-this.minTranslate()),s=1>Math.abs(e-this.maxTranslate());i=t||n<=0,a=s||n>=1,t&&(n=0),s&&(n=1)}if(t.loop){let t=this.getSlideIndexByData(0),r=this.getSlideIndexByData(this.slides.length-1),n=this.slidesGrid[t],i=this.slidesGrid[r],a=this.slidesGrid[this.slidesGrid.length-1],o=Math.abs(e);(s=o>=n?(o-n)/a:(o+a-i)/a)>1&&(s-=1)}Object.assign(this,{progress:n,progressLoop:s,isBeginning:i,isEnd:a}),(t.watchSlidesProgress||t.centeredSlides&&t.autoHeight)&&this.updateSlidesProgress(e),i&&!o&&this.emit("reachBeginning toEdge"),a&&!l&&this.emit("reachEnd toEdge"),(o&&!i||l&&!a)&&this.emit("fromEdge"),this.emit("progress",n)},updateSlidesClasses:function(){let e,t,r,{slides:n,params:i,slidesEl:a,activeIndex:s}=this,o=this.virtual&&i.virtual.enabled,l=this.grid&&i.grid&&i.grid.rows>1,u=e=>fu(a,`.${i.slideClass}${e}, swiper-slide${e}`)[0];if(o)if(i.loop){let t=s-this.virtual.slidesBefore;t<0&&(t=this.virtual.slides.length+t),t>=this.virtual.slides.length&&(t-=this.virtual.slides.length),e=u(`[data-swiper-slide-index="${t}"]`)}else e=u(`[data-swiper-slide-index="${s}"]`);else l?(e=n.find(e=>e.column===s),r=n.find(e=>e.column===s+1),t=n.find(e=>e.column===s-1)):e=n[s];e&&!l&&(r=function(e,t){let r=[];for(;e.nextElementSibling;){let n=e.nextElementSibling;t?n.matches(t)&&r.push(n):r.push(n),e=n}return r}(e,`.${i.slideClass}, swiper-slide`)[0],i.loop&&!r&&(r=n[0]),t=function(e,t){let r=[];for(;e.previousElementSibling;){let n=e.previousElementSibling;t?n.matches(t)&&r.push(n):r.push(n),e=n}return r}(e,`.${i.slideClass}, swiper-slide`)[0],i.loop),n.forEach(n=>{fy(n,n===e,i.slideActiveClass),fy(n,n===r,i.slideNextClass),fy(n,n===t,i.slidePrevClass)}),this.emitSlidesClasses()},updateActiveIndex:function(e){let t,r,n=this,i=n.rtlTranslate?n.translate:-n.translate,{snapGrid:a,params:s,activeIndex:o,realIndex:l,snapIndex:u}=n,c=e,d=e=>{let t=e-n.virtual.slidesBefore;return t<0&&(t=n.virtual.slides.length+t),t>=n.virtual.slides.length&&(t-=n.virtual.slides.length),t};if(void 0===c&&(c=function(e){let t,{slidesGrid:r,params:n}=e,i=e.rtlTranslate?e.translate:-e.translate;for(let e=0;e<r.length;e+=1)void 0!==r[e+1]?i>=r[e]&&i<r[e+1]-(r[e+1]-r[e])/2?t=e:i>=r[e]&&i<r[e+1]&&(t=e+1):i>=r[e]&&(t=e);return n.normalizeSlideIndex&&(t<0||void 0===t)&&(t=0),t}(n)),a.indexOf(i)>=0)t=a.indexOf(i);else{let e=Math.min(s.slidesPerGroupSkip,c);t=e+Math.floor((c-e)/s.slidesPerGroup)}if(t>=a.length&&(t=a.length-1),c===o&&!n.params.loop){t!==u&&(n.snapIndex=t,n.emit("snapIndexChange"));return}if(c===o&&n.params.loop&&n.virtual&&n.params.virtual.enabled){n.realIndex=d(c);return}let h=n.grid&&s.grid&&s.grid.rows>1;if(n.virtual&&s.virtual.enabled)r=s.loop?d(c):c;else if(h){let e=n.slides.find(e=>e.column===c),t=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(t)&&(t=Math.max(n.slides.indexOf(e),0)),r=Math.floor(t/s.grid.rows)}else if(n.slides[c]){let e=n.slides[c].getAttribute("data-swiper-slide-index");r=e?parseInt(e,10):c}else r=c;Object.assign(n,{previousSnapIndex:u,snapIndex:t,previousRealIndex:l,realIndex:r,previousIndex:o,activeIndex:c}),n.initialized&&fC(n),n.emit("activeIndexChange"),n.emit("snapIndexChange"),(n.initialized||n.params.runCallbacksOnInit)&&(l!==r&&n.emit("realIndexChange"),n.emit("slideChange"))},updateClickedSlide:function(e,t){let r,n=this.params,i=e.closest(`.${n.slideClass}, swiper-slide`);!i&&this.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach(e=>{!i&&e.matches&&e.matches(`.${n.slideClass}, swiper-slide`)&&(i=e)});let a=!1;if(i){for(let e=0;e<this.slides.length;e+=1)if(this.slides[e]===i){a=!0,r=e;break}}if(i&&a)this.clickedSlide=i,this.virtual&&this.params.virtual.enabled?this.clickedIndex=parseInt(i.getAttribute("data-swiper-slide-index"),10):this.clickedIndex=r;else{this.clickedSlide=void 0,this.clickedIndex=void 0;return}n.slideToClickedSlide&&void 0!==this.clickedIndex&&this.clickedIndex!==this.activeIndex&&this.slideToClickedSlide()}},translate:{getTranslate:function(e=this.isHorizontal()?"x":"y"){let{params:t,rtlTranslate:r,translate:n,wrapperEl:i}=this;if(t.virtualTranslate)return r?-n:n;if(t.cssMode)return n;let a=function(e,t="x"){let r,n,i,a,s,o=fr(),l=((s=fr()).getComputedStyle&&(a=s.getComputedStyle(e,null)),!a&&e.currentStyle&&(a=e.currentStyle),a||(a=e.style),a);return o.WebKitCSSMatrix?((n=l.transform||l.webkitTransform).split(",").length>6&&(n=n.split(", ").map(e=>e.replace(",",".")).join(", ")),i=new o.WebKitCSSMatrix("none"===n?"":n)):r=(i=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,")).toString().split(","),"x"===t&&(n=o.WebKitCSSMatrix?i.m41:16===r.length?parseFloat(r[12]):parseFloat(r[4])),"y"===t&&(n=o.WebKitCSSMatrix?i.m42:16===r.length?parseFloat(r[13]):parseFloat(r[5])),n||0}(i,e);return a+=this.cssOverflowAdjustment(),r&&(a=-a),a||0},setTranslate:function(e,t){let{rtlTranslate:r,params:n,wrapperEl:i,progress:a}=this,s=0,o=0;this.isHorizontal()?s=r?-e:e:o=e,n.roundLengths&&(s=Math.floor(s),o=Math.floor(o)),this.previousTranslate=this.translate,this.translate=this.isHorizontal()?s:o,n.cssMode?i[this.isHorizontal()?"scrollLeft":"scrollTop"]=this.isHorizontal()?-s:-o:n.virtualTranslate||(this.isHorizontal()?s-=this.cssOverflowAdjustment():o-=this.cssOverflowAdjustment(),i.style.transform=`translate3d(${s}px, ${o}px, 0px)`);let l=this.maxTranslate()-this.minTranslate();(0===l?0:(e-this.minTranslate())/l)!==a&&this.updateProgress(e),this.emit("setTranslate",this.translate,t)},minTranslate:function(){return-this.snapGrid[0]},maxTranslate:function(){return-this.snapGrid[this.snapGrid.length-1]},translateTo:function(e=0,t=this.params.speed,r=!0,n=!0,i){let a,s=this,{params:o,wrapperEl:l}=s;if(s.animating&&o.preventInteractionOnTransition)return!1;let u=s.minTranslate(),c=s.maxTranslate();if(a=n&&e>u?u:n&&e<c?c:e,s.updateProgress(a),o.cssMode){let e=s.isHorizontal();if(0===t)l[e?"scrollLeft":"scrollTop"]=-a;else{if(!s.support.smoothScroll)return fl({swiper:s,targetPosition:-a,side:e?"left":"top"}),!0;l.scrollTo({[e?"left":"top"]:-a,behavior:"smooth"})}return!0}return 0===t?(s.setTransition(0),s.setTranslate(a),r&&(s.emit("beforeTransitionStart",t,i),s.emit("transitionEnd"))):(s.setTransition(t),s.setTranslate(a),r&&(s.emit("beforeTransitionStart",t,i),s.emit("transitionStart")),s.animating||(s.animating=!0,s.onTranslateToWrapperTransitionEnd||(s.onTranslateToWrapperTransitionEnd=function(e){!s||s.destroyed||e.target===this&&(s.wrapperEl.removeEventListener("transitionend",s.onTranslateToWrapperTransitionEnd),s.onTranslateToWrapperTransitionEnd=null,delete s.onTranslateToWrapperTransitionEnd,s.animating=!1,r&&s.emit("transitionEnd"))}),s.wrapperEl.addEventListener("transitionend",s.onTranslateToWrapperTransitionEnd))),!0}},transition:{setTransition:function(e,t){this.params.cssMode||(this.wrapperEl.style.transitionDuration=`${e}ms`,this.wrapperEl.style.transitionDelay=0===e?"0ms":""),this.emit("setTransition",e,t)},transitionStart:function(e=!0,t){let{params:r}=this;r.cssMode||(r.autoHeight&&this.updateAutoHeight(),fE({swiper:this,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e=!0,t){let{params:r}=this;this.animating=!1,r.cssMode||(this.setTransition(0),fE({swiper:this,runCallbacks:e,direction:t,step:"End"}))}},slide:{slideTo:function(e=0,t,r=!0,n,i){let a;"string"==typeof e&&(e=parseInt(e,10));let s=this,o=e;o<0&&(o=0);let{params:l,snapGrid:u,slidesGrid:c,previousIndex:d,activeIndex:h,rtlTranslate:p,wrapperEl:f,enabled:A}=s;if(!A&&!n&&!i||s.destroyed||s.animating&&l.preventInteractionOnTransition)return!1;void 0===t&&(t=s.params.speed);let g=Math.min(s.params.slidesPerGroupSkip,o),m=g+Math.floor((o-g)/s.params.slidesPerGroup);m>=u.length&&(m=u.length-1);let v=-u[m];if(l.normalizeSlideIndex)for(let e=0;e<c.length;e+=1){let t=-Math.floor(100*v),r=Math.floor(100*c[e]),n=Math.floor(100*c[e+1]);void 0!==c[e+1]?t>=r&&t<n-(n-r)/2?o=e:t>=r&&t<n&&(o=e+1):t>=r&&(o=e)}if(s.initialized&&o!==h&&(!s.allowSlideNext&&(p?v>s.translate&&v>s.minTranslate():v<s.translate&&v<s.minTranslate())||!s.allowSlidePrev&&v>s.translate&&v>s.maxTranslate()&&(h||0)!==o))return!1;o!==(d||0)&&r&&s.emit("beforeSlideChangeStart"),s.updateProgress(v),a=o>h?"next":o<h?"prev":"reset";let b=s.virtual&&s.params.virtual.enabled;if(!(b&&i)&&(p&&-v===s.translate||!p&&v===s.translate))return s.updateActiveIndex(o),l.autoHeight&&s.updateAutoHeight(),s.updateSlidesClasses(),"slide"!==l.effect&&s.setTranslate(v),"reset"!==a&&(s.transitionStart(r,a),s.transitionEnd(r,a)),!1;if(l.cssMode){let e=s.isHorizontal(),r=p?v:-v;if(0===t)b&&(s.wrapperEl.style.scrollSnapType="none",s._immediateVirtual=!0),b&&!s._cssModeVirtualInitialSet&&s.params.initialSlide>0?(s._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{f[e?"scrollLeft":"scrollTop"]=r})):f[e?"scrollLeft":"scrollTop"]=r,b&&requestAnimationFrame(()=>{s.wrapperEl.style.scrollSnapType="",s._immediateVirtual=!1});else{if(!s.support.smoothScroll)return fl({swiper:s,targetPosition:r,side:e?"left":"top"}),!0;f.scrollTo({[e?"left":"top"]:r,behavior:"smooth"})}return!0}let y=fv().isSafari;return b&&!i&&y&&s.isElement&&s.virtual.update(!1,!1,o),s.setTransition(t),s.setTranslate(v),s.updateActiveIndex(o),s.updateSlidesClasses(),s.emit("beforeTransitionStart",t,n),s.transitionStart(r,a),0===t?s.transitionEnd(r,a):s.animating||(s.animating=!0,s.onSlideToWrapperTransitionEnd||(s.onSlideToWrapperTransitionEnd=function(e){!s||s.destroyed||e.target===this&&(s.wrapperEl.removeEventListener("transitionend",s.onSlideToWrapperTransitionEnd),s.onSlideToWrapperTransitionEnd=null,delete s.onSlideToWrapperTransitionEnd,s.transitionEnd(r,a))}),s.wrapperEl.addEventListener("transitionend",s.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e=0,t,r=!0,n){"string"==typeof e&&(e=parseInt(e,10));let i=this;if(i.destroyed)return;void 0===t&&(t=i.params.speed);let a=i.grid&&i.params.grid&&i.params.grid.rows>1,s=e;if(i.params.loop)if(i.virtual&&i.params.virtual.enabled)s+=i.virtual.slidesBefore;else{let e;if(a){let t=s*i.params.grid.rows;e=i.slides.find(e=>+e.getAttribute("data-swiper-slide-index")===t).column}else e=i.getSlideIndexByData(s);let t=a?Math.ceil(i.slides.length/i.params.grid.rows):i.slides.length,{centeredSlides:r,slidesOffsetBefore:o,slidesOffsetAfter:l}=i.params,u=r||!!o||!!l,c=i.params.slidesPerView;"auto"===c?c=i.slidesPerViewDynamic():(c=Math.ceil(parseFloat(i.params.slidesPerView,10)),u&&c%2==0&&(c+=1));let d=t-e<c;if(u&&(d=d||e<Math.ceil(c/2)),n&&u&&"auto"!==i.params.slidesPerView&&!a&&(d=!1),d){let r=u?e<i.activeIndex?"prev":"next":e-i.activeIndex-1<i.params.slidesPerView?"next":"prev";i.loopFix({direction:r,slideTo:!0,activeSlideIndex:"next"===r?e+1:e-t+1,slideRealIndex:"next"===r?i.realIndex:void 0})}if(a){let e=s*i.params.grid.rows;s=i.slides.find(t=>+t.getAttribute("data-swiper-slide-index")===e).column}else s=i.getSlideIndexByData(s)}return requestAnimationFrame(()=>{i.slideTo(s,t,r,n)}),i},slideNext:function(e,t=!0,r){let n=this,{enabled:i,params:a,animating:s}=n;if(!i||n.destroyed)return n;void 0===e&&(e=n.params.speed);let o=a.slidesPerGroup;"auto"===a.slidesPerView&&1===a.slidesPerGroup&&a.slidesPerGroupAuto&&(o=Math.max(n.slidesPerViewDynamic("current",!0),1));let l=n.activeIndex<a.slidesPerGroupSkip?1:o,u=n.virtual&&a.virtual.enabled;if(a.loop){if(s&&!u&&a.loopPreventsSliding)return!1;if(n.loopFix({direction:"next"}),n._clientLeft=n.wrapperEl.clientLeft,n.activeIndex===n.slides.length-1&&a.cssMode)return requestAnimationFrame(()=>{n.slideTo(n.activeIndex+l,e,t,r)}),!0}return a.rewind&&n.isEnd?n.slideTo(0,e,t,r):n.slideTo(n.activeIndex+l,e,t,r)},slidePrev:function(e,t=!0,r){let n=this,{params:i,snapGrid:a,slidesGrid:s,rtlTranslate:o,enabled:l,animating:u}=n;if(!l||n.destroyed)return n;void 0===e&&(e=n.params.speed);let c=n.virtual&&i.virtual.enabled;if(i.loop){if(u&&!c&&i.loopPreventsSliding)return!1;n.loopFix({direction:"prev"}),n._clientLeft=n.wrapperEl.clientLeft}function d(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}let h=d(o?n.translate:-n.translate),p=a.map(e=>d(e)),f=i.freeMode&&i.freeMode.enabled,A=a[p.indexOf(h)-1];if(void 0===A&&(i.cssMode||f)){let e;a.forEach((t,r)=>{h>=t&&(e=r)}),void 0!==e&&(A=f?a[e]:a[e>0?e-1:e])}let g=0;if(void 0!==A&&((g=s.indexOf(A))<0&&(g=n.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(g=Math.max(g=g-n.slidesPerViewDynamic("previous",!0)+1,0))),i.rewind&&n.isBeginning){let i=n.params.virtual&&n.params.virtual.enabled&&n.virtual?n.virtual.slides.length-1:n.slides.length-1;return n.slideTo(i,e,t,r)}return i.loop&&0===n.activeIndex&&i.cssMode?(requestAnimationFrame(()=>{n.slideTo(g,e,t,r)}),!0):n.slideTo(g,e,t,r)},slideReset:function(e,t=!0,r){if(!this.destroyed)return void 0===e&&(e=this.params.speed),this.slideTo(this.activeIndex,e,t,r)},slideToClosest:function(e,t=!0,r,n=.5){if(this.destroyed)return;void 0===e&&(e=this.params.speed);let i=this.activeIndex,a=Math.min(this.params.slidesPerGroupSkip,i),s=a+Math.floor((i-a)/this.params.slidesPerGroup),o=this.rtlTranslate?this.translate:-this.translate;if(o>=this.snapGrid[s]){let e=this.snapGrid[s];o-e>(this.snapGrid[s+1]-e)*n&&(i+=this.params.slidesPerGroup)}else{let e=this.snapGrid[s-1];o-e<=(this.snapGrid[s]-e)*n&&(i-=this.params.slidesPerGroup)}return i=Math.min(i=Math.max(i,0),this.slidesGrid.length-1),this.slideTo(i,e,t,r)},slideToClickedSlide:function(){let e,t=this;if(t.destroyed)return;let{params:r,slidesEl:n}=t,i="auto"===r.slidesPerView?t.slidesPerViewDynamic():r.slidesPerView,a=t.getSlideIndexWhenGrid(t.clickedIndex),s=t.isElement?"swiper-slide":`.${r.slideClass}`,o=t.grid&&t.params.grid&&t.params.grid.rows>1;if(r.loop){if(t.animating)return;e=parseInt(t.clickedSlide.getAttribute("data-swiper-slide-index"),10),r.centeredSlides?t.slideToLoop(e):a>(o?(t.slides.length-i)/2-(t.params.grid.rows-1):t.slides.length-i)?(t.loopFix(),a=t.getSlideIndex(fu(n,`${s}[data-swiper-slide-index="${e}"]`)[0]),fn(()=>{t.slideTo(a)})):t.slideTo(a)}else t.slideTo(a)}},loop:{loopCreate:function(e,t){let r,n=this,{params:i,slidesEl:a}=n;if(!i.loop||n.virtual&&n.params.virtual.enabled)return;let s=n.grid&&i.grid&&i.grid.rows>1;i.loopAddBlankSlides&&(i.slidesPerGroup>1||s)&&((r=fu(a,`.${i.slideBlankClass}`)).forEach(e=>{e.remove()}),r.length>0&&(n.recalcSlides(),n.updateSlides()));let o=i.slidesPerGroup*(s?i.grid.rows:1),l=n.slides.length%o!=0,u=s&&n.slides.length%i.grid.rows!=0,c=e=>{for(let t=0;t<e;t+=1){let e=n.isElement?fd("swiper-slide",[i.slideBlankClass]):fd("div",[i.slideClass,i.slideBlankClass]);n.slidesEl.append(e)}};l?i.loopAddBlankSlides?(c(o-n.slides.length%o),n.recalcSlides(),n.updateSlides()):fc("Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)"):u&&(i.loopAddBlankSlides?(c(i.grid.rows-n.slides.length%i.grid.rows),n.recalcSlides(),n.updateSlides()):fc("Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)")),fu(a,`.${i.slideClass}, swiper-slide`).forEach((e,t)=>{e.setAttribute("data-swiper-slide-index",t)});let d=i.centeredSlides||!!i.slidesOffsetBefore||!!i.slidesOffsetAfter;n.loopFix({slideRealIndex:e,direction:d?void 0:"next",initial:t})},loopFix:function({slideRealIndex:e,slideTo:t=!0,direction:r,setTranslate:n,activeSlideIndex:i,initial:a,byController:s,byMousewheel:o}={}){let l=this;if(!l.params.loop)return;l.emit("beforeLoopFix");let{slides:u,allowSlidePrev:c,allowSlideNext:d,slidesEl:h,params:p}=l,{centeredSlides:f,slidesOffsetBefore:A,slidesOffsetAfter:g,initialSlide:m}=p,v=f||!!A||!!g;if(l.allowSlidePrev=!0,l.allowSlideNext=!0,l.virtual&&p.virtual.enabled){t&&(v||0!==l.snapIndex?v&&l.snapIndex<p.slidesPerView?l.slideTo(l.virtual.slides.length+l.snapIndex,0,!1,!0):l.snapIndex===l.snapGrid.length-1&&l.slideTo(l.virtual.slidesBefore,0,!1,!0):l.slideTo(l.virtual.slides.length,0,!1,!0)),l.allowSlidePrev=c,l.allowSlideNext=d,l.emit("loopFix");return}let b=p.slidesPerView;"auto"===b?b=l.slidesPerViewDynamic():(b=Math.ceil(parseFloat(p.slidesPerView,10)),v&&b%2==0&&(b+=1));let y=p.slidesPerGroupAuto?b:p.slidesPerGroup,w=v?Math.max(y,Math.ceil(b/2)):y;w%y!=0&&(w+=y-w%y),l.loopedSlides=w+=p.loopAdditionalSlides;let x=l.grid&&p.grid&&p.grid.rows>1;u.length<b+w||"cards"===l.params.effect&&u.length<b+2*w?fc("Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters"):x&&"row"===p.grid.fill&&fc("Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`");let C=[],E=[],S=x?Math.ceil(u.length/p.grid.rows):u.length,M=a&&S-m<b&&!v,I=M?m:l.activeIndex;void 0===i?i=l.getSlideIndex(u.find(e=>e.classList.contains(p.slideActiveClass))):I=i;let B="next"===r||!r,T="prev"===r||!r,k=0,_=0,R=(x?u[i].column:i)+(v&&void 0===n?-b/2+.5:0);if(R<w){k=Math.max(w-R,y);for(let e=0;e<w-R;e+=1){let t=e-Math.floor(e/S)*S;if(x){let e=S-t-1;for(let t=u.length-1;t>=0;t-=1)u[t].column===e&&C.push(t)}else C.push(S-t-1)}}else if(R+b>S-w){_=Math.max(R-(S-2*w),y),M&&(_=Math.max(_,b-S+m+1));for(let e=0;e<_;e+=1){let t=e-Math.floor(e/S)*S;x?u.forEach((e,r)=>{e.column===t&&E.push(r)}):E.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame(()=>{l.__preventObserver__=!1}),"cards"===l.params.effect&&u.length<b+2*w&&(E.includes(i)&&E.splice(E.indexOf(i),1),C.includes(i)&&C.splice(C.indexOf(i),1)),T&&C.forEach(e=>{u[e].swiperLoopMoveDOM=!0,h.prepend(u[e]),u[e].swiperLoopMoveDOM=!1}),B&&E.forEach(e=>{u[e].swiperLoopMoveDOM=!0,h.append(u[e]),u[e].swiperLoopMoveDOM=!1}),l.recalcSlides(),"auto"===p.slidesPerView?l.updateSlides():x&&(C.length>0&&T||E.length>0&&B)&&l.slides.forEach((e,t)=>{l.grid.updateSlide(t,e,l.slides)}),p.watchSlidesProgress&&l.updateSlidesOffset(),t){if(C.length>0&&T){if(void 0===e){let e=l.slidesGrid[I],t=l.slidesGrid[I+k]-e;o?l.setTranslate(l.translate-t):(l.slideTo(I+Math.ceil(k),0,!1,!0),n&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(n){let e=x?C.length/p.grid.rows:C.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(E.length>0&&B)if(void 0===e){let e=l.slidesGrid[I],t=l.slidesGrid[I-_]-e;o?l.setTranslate(l.translate-t):(l.slideTo(I-_,0,!1,!0),n&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{let e=x?E.length/p.grid.rows:E.length;l.slideTo(l.activeIndex-e,0,!1,!0)}}if(l.allowSlidePrev=c,l.allowSlideNext=d,l.controller&&l.controller.control&&!s){let a={slideRealIndex:e,direction:r,setTranslate:n,activeSlideIndex:i,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach(e=>{!e.destroyed&&e.params.loop&&e.loopFix({...a,slideTo:e.params.slidesPerView===p.slidesPerView&&t})}):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...a,slideTo:l.controller.control.params.slidesPerView===p.slidesPerView&&t})}l.emit("loopFix")},loopDestroy:function(){let{params:e,slidesEl:t}=this;if(!e.loop||!t||this.virtual&&this.params.virtual.enabled)return;this.recalcSlides();let r=[];this.slides.forEach(e=>{r[void 0===e.swiperSlideIndex?+e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex]=e}),this.slides.forEach(e=>{e.removeAttribute("data-swiper-slide-index")}),r.forEach(e=>{t.append(e)}),this.recalcSlides(),this.slideTo(this.realIndex,0)}},grabCursor:{setGrabCursor:function(e){let t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;let r="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),r.style.cursor="move",r.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame(()=>{t.__preventObserver__=!1})},unsetGrabCursor:function(){let e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1}))}},events:{attachEvents:function(){let{params:e}=this;this.onTouchStart=fM.bind(this),this.onTouchMove=fI.bind(this),this.onTouchEnd=fB.bind(this),this.onDocumentTouchStart=fP.bind(this),e.cssMode&&(this.onScroll=f_.bind(this)),this.onClick=fk.bind(this),this.onLoad=fR.bind(this),fD(this,"on")},detachEvents:function(){fD(this,"off")}},breakpoints:{setBreakpoint:function(){let e=this,{realIndex:t,initialized:r,params:n,el:i}=e,a=n.breakpoints;if(!a||a&&0===Object.keys(a).length)return;let s=fe(),o="window"!==n.breakpointsBase&&n.breakpointsBase?"container":n.breakpointsBase,l=["window","container"].includes(n.breakpointsBase)||!n.breakpointsBase?e.el:s.querySelector(n.breakpointsBase),u=e.getBreakpoint(a,o,l);if(!u||e.currentBreakpoint===u)return;let c=(u in a?a[u]:void 0)||e.originalParams,d=fL(e,n),h=fL(e,c),p=e.params.grabCursor,f=c.grabCursor,A=n.enabled;d&&!h?(i.classList.remove(`${n.containerModifierClass}grid`,`${n.containerModifierClass}grid-column`),e.emitContainerClasses()):!d&&h&&(i.classList.add(`${n.containerModifierClass}grid`),(c.grid.fill&&"column"===c.grid.fill||!c.grid.fill&&"column"===n.grid.fill)&&i.classList.add(`${n.containerModifierClass}grid-column`),e.emitContainerClasses()),p&&!f?e.unsetGrabCursor():!p&&f&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach(t=>{if(void 0===c[t])return;let r=n[t]&&n[t].enabled,i=c[t]&&c[t].enabled;r&&!i&&e[t].disable(),!r&&i&&e[t].enable()});let g=c.direction&&c.direction!==n.direction,m=n.loop&&(c.slidesPerView!==n.slidesPerView||g),v=n.loop;g&&r&&e.changeDirection(),fs(e.params,c);let b=e.params.enabled,y=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),A&&!b?e.disable():!A&&b&&e.enable(),e.currentBreakpoint=u,e.emit("_beforeBreakpoint",c),r&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!v&&y?(e.loopCreate(t),e.updateSlides()):v&&!y&&e.loopDestroy()),e.emit("breakpoint",c)},getBreakpoint:function(e,t="window",r){if(!e||"container"===t&&!r)return;let n=!1,i=fr(),a="window"===t?i.innerHeight:r.clientHeight,s=Object.keys(e).map(e=>"string"==typeof e&&0===e.indexOf("@")?{value:a*parseFloat(e.substr(1)),point:e}:{value:e,point:e});s.sort((e,t)=>parseInt(e.value,10)-parseInt(t.value,10));for(let e=0;e<s.length;e+=1){let{point:a,value:o}=s[e];"window"===t?i.matchMedia(`(min-width: ${o}px)`).matches&&(n=a):o<=r.clientWidth&&(n=a)}return n||"max"}},checkOverflow:{checkOverflow:function(){let{isLocked:e,params:t}=this,{slidesOffsetBefore:r}=t;if(r){let e=this.slides.length-1,t=this.slidesGrid[e]+this.slidesSizesGrid[e]+2*r;this.isLocked=this.size>t}else this.isLocked=1===this.snapGrid.length;!0===t.allowSlideNext&&(this.allowSlideNext=!this.isLocked),!0===t.allowSlidePrev&&(this.allowSlidePrev=!this.isLocked),e&&e!==this.isLocked&&(this.isEnd=!1),e!==this.isLocked&&this.emit(this.isLocked?"lock":"unlock")}},classes:{addClasses:function(){var e,t;let r,{classNames:n,params:i,rtl:a,el:s,device:o}=this,l=(e=["initialized",i.direction,{"free-mode":this.params.freeMode&&i.freeMode.enabled},{autoheight:i.autoHeight},{rtl:a},{grid:i.grid&&i.grid.rows>1},{"grid-column":i.grid&&i.grid.rows>1&&"column"===i.grid.fill},{android:o.android},{ios:o.ios},{"css-mode":i.cssMode},{centered:i.cssMode&&i.centeredSlides},{"watch-progress":i.watchSlidesProgress}],t=i.containerModifierClass,r=[],e.forEach(e=>{"object"==typeof e?Object.keys(e).forEach(n=>{e[n]&&r.push(t+n)}):"string"==typeof e&&r.push(t+e)}),r);n.push(...l),s.classList.add(...n),this.emitContainerClasses()},removeClasses:function(){let{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},fN={};class fQ{constructor(...e){let t,r;1===e.length&&e[0].constructor&&"Object"===Object.prototype.toString.call(e[0]).slice(8,-1)?r=e[0]:[t,r]=e,r||(r={}),r=fs({},r),t&&!r.el&&(r.el=t);const n=fe();if(r.el&&"string"==typeof r.el&&n.querySelectorAll(r.el).length>1){const e=[];return n.querySelectorAll(r.el).forEach(t=>{let n=fs({},r,{el:t});e.push(new fQ(n))}),e}const i=this;i.__swiper__=!0,i.support=fg(),i.device=fm({userAgent:r.userAgent}),i.browser=fv(),i.eventsListeners={},i.eventsAnyListeners=[],i.modules=[...i.__modules__],r.modules&&Array.isArray(r.modules)&&r.modules.forEach(e=>{"function"==typeof e&&0>i.modules.indexOf(e)&&i.modules.push(e)});const a={};i.modules.forEach(e=>{var t;e({params:r,swiper:i,extendParams:(t=r,function(e={}){let r=Object.keys(e)[0],n=e[r];"object"!=typeof n||null===n||(!0===t[r]&&(t[r]={enabled:!0}),"navigation"===r&&t[r]&&t[r].enabled&&!t[r].prevEl&&!t[r].nextEl&&(t[r].auto=!0),["pagination","scrollbar"].indexOf(r)>=0&&t[r]&&t[r].enabled&&!t[r].el&&(t[r].auto=!0),r in t&&"enabled"in n&&("object"!=typeof t[r]||"enabled"in t[r]||(t[r].enabled=!0),t[r]||(t[r]={enabled:!1}))),fs(a,e)}),on:i.on.bind(i),once:i.once.bind(i),off:i.off.bind(i),emit:i.emit.bind(i)})});const s=fs({},fF,a);return i.params=fs({},s,fN,r),i.originalParams=fs({},i.params),i.passedParams=fs({},r),i.params&&i.params.on&&Object.keys(i.params.on).forEach(e=>{i.on(e,i.params.on[e])}),i.params&&i.params.onAny&&i.onAny(i.params.onAny),Object.assign(i,{enabled:i.params.enabled,el:t,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===i.params.direction,isVertical:()=>"vertical"===i.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return 8388608*Math.trunc(this.translate/8388608)},allowSlideNext:i.params.allowSlideNext,allowSlidePrev:i.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:i.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:i.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),i.emit("_swiper"),i.params.init&&i.init(),i}getDirectionLabel(e){return this.isHorizontal()?e:({width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"})[e]}getSlideIndex(e){let{slidesEl:t,params:r}=this,n=fp(fu(t,`.${r.slideClass}, swiper-slide`)[0]);return fp(e)-n}getSlideIndexByData(e){return this.getSlideIndex(this.slides.find(t=>+t.getAttribute("data-swiper-slide-index")===e))}getSlideIndexWhenGrid(e){return this.grid&&this.params.grid&&this.params.grid.rows>1&&("column"===this.params.grid.fill?e=Math.floor(e/this.params.grid.rows):"row"===this.params.grid.fill&&(e%=Math.ceil(this.slides.length/this.params.grid.rows))),e}recalcSlides(){let{slidesEl:e,params:t}=this;this.slides=fu(e,`.${t.slideClass}, swiper-slide`)}enable(){this.enabled||(this.enabled=!0,this.params.grabCursor&&this.setGrabCursor(),this.emit("enable"))}disable(){this.enabled&&(this.enabled=!1,this.params.grabCursor&&this.unsetGrabCursor(),this.emit("disable"))}setProgress(e,t){e=Math.min(Math.max(e,0),1);let r=this.minTranslate(),n=(this.maxTranslate()-r)*e+r;this.translateTo(n,void 0===t?0:t),this.updateActiveIndex(),this.updateSlidesClasses()}emitContainerClasses(){let e=this;if(!e.params._emitClasses||!e.el)return;let t=e.el.className.split(" ").filter(t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){let t=this;return t.destroyed?"":e.className.split(" ").filter(e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass)).join(" ")}emitSlidesClasses(){let e=this;if(!e.params._emitClasses||!e.el)return;let t=[];e.slides.forEach(r=>{let n=e.getSlideClasses(r);t.push({slideEl:r,classNames:n}),e.emit("_slideClass",r,n)}),e.emit("_slideClasses",t)}slidesPerViewDynamic(e="current",t=!1){let{params:r,slides:n,slidesGrid:i,slidesSizesGrid:a,size:s,activeIndex:o}=this,l=1;if("number"==typeof r.slidesPerView)return r.slidesPerView;if(r.centeredSlides){let e,t=n[o]?Math.ceil(n[o].swiperSlideSize):0;for(let r=o+1;r<n.length;r+=1)n[r]&&!e&&(t+=Math.ceil(n[r].swiperSlideSize),l+=1,t>s&&(e=!0));for(let r=o-1;r>=0;r-=1)n[r]&&!e&&(t+=n[r].swiperSlideSize,l+=1,t>s&&(e=!0))}else if("current"===e)for(let e=o+1;e<n.length;e+=1)(t?i[e]+a[e]-i[o]<s:i[e]-i[o]<s)&&(l+=1);else for(let e=o-1;e>=0;e-=1)i[o]-i[e]<s&&(l+=1);return l}update(){let e,t=this;if(!t||t.destroyed)return;let{snapGrid:r,params:n}=t;function i(){let e=Math.min(Math.max(t.rtlTranslate?-1*t.translate:t.translate,t.maxTranslate()),t.minTranslate());t.setTranslate(e),t.updateActiveIndex(),t.updateSlidesClasses()}if(n.breakpoints&&t.setBreakpoint(),[...t.el.querySelectorAll('[loading="lazy"]')].forEach(e=>{e.complete&&fw(t,e)}),t.updateSize(),t.updateSlides(),t.updateProgress(),t.updateSlidesClasses(),n.freeMode&&n.freeMode.enabled&&!n.cssMode)i(),n.autoHeight&&t.updateAutoHeight();else{if(("auto"===n.slidesPerView||n.slidesPerView>1)&&t.isEnd&&!n.centeredSlides){let r=t.virtual&&n.virtual.enabled?t.virtual.slides:t.slides;e=t.slideTo(r.length-1,0,!1,!0)}else e=t.slideTo(t.activeIndex,0,!1,!0);e||i()}n.watchOverflow&&r!==t.snapGrid&&t.checkOverflow(),t.emit("update")}changeDirection(e,t=!0){let r=this.params.direction;return e||(e="horizontal"===r?"vertical":"horizontal"),e===r||"horizontal"!==e&&"vertical"!==e||(this.el.classList.remove(`${this.params.containerModifierClass}${r}`),this.el.classList.add(`${this.params.containerModifierClass}${e}`),this.emitContainerClasses(),this.params.direction=e,this.slides.forEach(t=>{"vertical"===e?t.style.width="":t.style.height=""}),this.emit("changeDirection"),t&&this.update()),this}changeLanguageDirection(e){(!this.rtl||"rtl"!==e)&&(this.rtl||"ltr"!==e)&&(this.rtl="rtl"===e,this.rtlTranslate="horizontal"===this.params.direction&&this.rtl,this.rtl?(this.el.classList.add(`${this.params.containerModifierClass}rtl`),this.el.dir="rtl"):(this.el.classList.remove(`${this.params.containerModifierClass}rtl`),this.el.dir="ltr"),this.update())}mount(e){let t=this;if(t.mounted)return!0;let r=e||t.params.el;if("string"==typeof r&&(r=document.querySelector(r)),!r)return!1;r.swiper=t,r.parentNode&&r.parentNode.host&&r.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);let n=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`,i=r&&r.shadowRoot&&r.shadowRoot.querySelector?r.shadowRoot.querySelector(n()):fu(r,n())[0];return!i&&t.params.createElements&&(i=fd("div",t.params.wrapperClass),r.append(i),fu(r,`.${t.params.slideClass}`).forEach(e=>{i.append(e)})),Object.assign(t,{el:r,wrapperEl:i,slidesEl:t.isElement&&!r.parentNode.host.slideSlots?r.parentNode.host:i,hostEl:t.isElement?r.parentNode.host:r,mounted:!0,rtl:"rtl"===r.dir.toLowerCase()||"rtl"===fh(r,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===r.dir.toLowerCase()||"rtl"===fh(r,"direction")),wrongRTL:"-webkit-box"===fh(i,"display")}),!0}init(e){let t=this;if(t.initialized||!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(void 0,!0),t.attachEvents();let r=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&r.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),r.forEach(e=>{e.complete?fw(t,e):e.addEventListener("load",e=>{fw(t,e.target)})}),fC(t),t.initialized=!0,fC(t),t.emit("init"),t.emit("afterInit"),t}destroy(e=!0,t=!0){let r=this,{params:n,el:i,wrapperEl:a,slides:s}=r;if(void 0===r.params||r.destroyed)return null;(r.emit("beforeDestroy"),r.initialized=!1,r.detachEvents(),n.loop&&r.loopDestroy(),t&&(r.removeClasses(),i&&"string"!=typeof i&&i.removeAttribute("style"),a&&a.removeAttribute("style"),s&&s.length&&s.forEach(e=>{e.classList.remove(n.slideVisibleClass,n.slideFullyVisibleClass,n.slideActiveClass,n.slideNextClass,n.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")})),r.emit("destroy"),Object.keys(r.eventsListeners).forEach(e=>{r.off(e)}),!1!==e)&&(r.el&&"string"!=typeof r.el&&(r.el.swiper=null),Object.keys(r).forEach(e=>{try{r[e]=null}catch(e){}try{delete r[e]}catch(e){}}));return r.destroyed=!0,null}static extendDefaults(e){fs(fN,e)}static get extendedDefaults(){return fN}static get defaults(){return fF}static installModule(e){fQ.prototype.__modules__||(fQ.prototype.__modules__=[]);let t=fQ.prototype.__modules__;"function"==typeof e&&0>t.indexOf(e)&&t.push(e)}static use(e){return Array.isArray(e)?e.forEach(e=>fQ.installModule(e)):fQ.installModule(e),fQ}}Object.keys(fO).forEach(e=>{Object.keys(fO[e]).forEach(t=>{fQ.prototype[t]=fO[e][t]})}),fQ.use([function({swiper:e,on:t,emit:r}){let n=fr(),i=null,a=null,s=()=>{e&&!e.destroyed&&e.initialized&&(r("beforeResize"),r("resize"))},o=()=>{e&&!e.destroyed&&e.initialized&&r("orientationchange")};t("init",()=>{e.params.resizeObserver&&void 0!==n.ResizeObserver?e&&!e.destroyed&&e.initialized&&(i=new ResizeObserver(t=>{a=n.requestAnimationFrame(()=>{let{width:r,height:n}=e,i=r,a=n;t.forEach(({contentBoxSize:t,contentRect:r,target:n})=>{n&&n!==e.el||(i=r?r.width:(t[0]||t).inlineSize,a=r?r.height:(t[0]||t).blockSize)}),(i!==r||a!==n)&&s()})})).observe(e.el):(n.addEventListener("resize",s),n.addEventListener("orientationchange",o))}),t("destroy",()=>{a&&n.cancelAnimationFrame(a),i&&i.unobserve&&e.el&&(i.unobserve(e.el),i=null),n.removeEventListener("resize",s),n.removeEventListener("orientationchange",o)})},function({swiper:e,extendParams:t,on:r,emit:n}){let i=[],a=fr(),s=(t,r={})=>{let s=new(a.MutationObserver||a.WebkitMutationObserver)(t=>{if(e.__preventObserver__)return;if(1===t.length)return void n("observerUpdate",t[0]);let r=function(){n("observerUpdate",t[0])};a.requestAnimationFrame?a.requestAnimationFrame(r):a.setTimeout(r,0)});s.observe(t,{attributes:void 0===r.attributes||r.attributes,childList:e.isElement||(void 0===r.childList||r).childList,characterData:void 0===r.characterData||r.characterData}),i.push(s)};t({observer:!1,observeParents:!1,observeSlideChildren:!1}),r("init",()=>{if(e.params.observer){if(e.params.observeParents){let t=function(e,t){let r=[],n=e.parentElement;for(;n;)r.push(n),n=n.parentElement;return r}(e.hostEl);for(let e=0;e<t.length;e+=1)s(t[e])}s(e.hostEl,{childList:e.params.observeSlideChildren}),s(e.wrapperEl,{attributes:!1})}}),r("destroy",()=>{i.forEach(e=>{e.disconnect()}),i.splice(0,i.length)})}]);let fU=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_snapToSlideEdge","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function fz(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function fH(e,t){let r=["__proto__","constructor","prototype"];Object.keys(t).filter(e=>0>r.indexOf(e)).forEach(r=>{void 0===e[r]?e[r]=t[r]:fz(t[r])&&fz(e[r])&&Object.keys(t[r]).length>0?t[r].__swiper__?e[r]=t[r]:fH(e[r],t[r]):e[r]=t[r]})}function fG(e={}){return e.navigation&&void 0===e.navigation.nextEl&&void 0===e.navigation.prevEl}function fj(e={}){return e.pagination&&void 0===e.pagination.el}function fV(e={}){return e.scrollbar&&void 0===e.scrollbar.el}function fW(e=""){let t=e.split(" ").map(e=>e.trim()).filter(e=>!!e),r=[];return t.forEach(e=>{0>r.indexOf(e)&&r.push(e)}),r.join(" ")}function fq(){return(fq=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function fY(e){return e.type&&e.type.displayName&&e.type.displayName.includes("SwiperSlide")}function fJ(e,t){return"u"<typeof window?(0,rd.useEffect)(e,t):(0,rd.useLayoutEffect)(e,t)}let fK=(0,rd.createContext)(null),fX=(0,rd.createContext)(null),fZ=(0,rd.forwardRef)(({className:e,tag:t="div",wrapperTag:r="div",children:n,onSwiper:i,...a}={},s)=>{let o,l,u=!1,[c,d]=(0,rd.useState)("swiper"),[h,p]=(0,rd.useState)(null),[f,A]=(0,rd.useState)(!1),g=(0,rd.useRef)(!1),m=(0,rd.useRef)(null),v=(0,rd.useRef)(null),b=(0,rd.useRef)(null),y=(0,rd.useRef)(null),w=(0,rd.useRef)(null),x=(0,rd.useRef)(null),C=(0,rd.useRef)(null),E=(0,rd.useRef)(null),{params:S,passedParams:M,rest:I,events:B}=function(e={},t=!0){let r={on:{}},n={},i={};fH(r,fF),r._emitClasses=!0,r.init=!1;let a={},s=fU.map(e=>e.replace(/_/,""));return Object.keys(Object.assign({},e)).forEach(o=>{void 0!==e[o]&&(s.indexOf(o)>=0?fz(e[o])?(r[o]={},i[o]={},fH(r[o],e[o]),fH(i[o],e[o])):(r[o]=e[o],i[o]=e[o]):0===o.search(/on[A-Z]/)&&"function"==typeof e[o]?t?n[`${o[2].toLowerCase()}${o.substr(3)}`]=e[o]:r.on[`${o[2].toLowerCase()}${o.substr(3)}`]=e[o]:a[o]=e[o])}),["navigation","pagination","scrollbar"].forEach(e=>{!0===r[e]&&(r[e]={}),!1===r[e]&&delete r[e]}),{params:r,passedParams:i,rest:a,events:n}}(a),{slides:T,slots:k}=(o=[],l={"container-start":[],"container-end":[],"wrapper-start":[],"wrapper-end":[]},rd.Children.toArray(n).forEach(e=>{if(fY(e))o.push(e);else if(e.props&&e.props.slot&&l[e.props.slot])l[e.props.slot].push(e);else if(e.props&&e.props.children){let t=function e(t){let r=[];return rd.Children.toArray(t).forEach(t=>{fY(t)?r.push(t):t.props&&t.props.children&&e(t.props.children).forEach(e=>r.push(e))}),r}(e.props.children);t.length>0?t.forEach(e=>o.push(e)):l["container-end"].push(e)}else l["container-end"].push(e)}),{slides:o,slots:l}),_=()=>{A(!f)};Object.assign(S.on,{_containerClasses(e,t){d(t)}});let R=()=>{Object.assign(S.on,B),u=!0;let e={...S};if(delete e.wrapperClass,v.current=new fQ(e),v.current.virtual&&v.current.params.virtual.enabled){v.current.virtual.slides=T;let e={cache:!1,slides:T,renderExternal:p,renderExternalUpdate:!1};fH(v.current.params.virtual,e),fH(v.current.originalParams.virtual,e)}};return m.current||R(),v.current&&v.current.on("_beforeBreakpoint",_),(0,rd.useEffect)(()=>()=>{v.current&&v.current.off("_beforeBreakpoint",_)}),(0,rd.useEffect)(()=>{!g.current&&v.current&&(v.current.emitSlidesClasses(),g.current=!0)}),fJ(()=>{if(s&&(s.current=m.current),m.current)return v.current.destroyed&&R(),!function({el:e,nextEl:t,prevEl:r,paginationEl:n,scrollbarEl:i,swiper:a},s){fG(s)&&t&&r&&(a.params.navigation.nextEl=t,a.originalParams.navigation.nextEl=t,a.params.navigation.prevEl=r,a.originalParams.navigation.prevEl=r),fj(s)&&n&&(a.params.pagination.el=n,a.originalParams.pagination.el=n),fV(s)&&i&&(a.params.scrollbar.el=i,a.originalParams.scrollbar.el=i),a.init(e)}({el:m.current,nextEl:w.current,prevEl:x.current,paginationEl:C.current,scrollbarEl:E.current,swiper:v.current},S),i&&!v.current.destroyed&&i(v.current),()=>{v.current&&!v.current.destroyed&&v.current.destroy(!0,!1)}},[]),fJ(()=>{!u&&B&&v.current&&Object.keys(B).forEach(e=>{v.current.on(e,B[e])});let e=function(e,t,r,n,i){let a=[];if(!t)return a;let s=e=>{0>a.indexOf(e)&&a.push(e)};if(r&&n){let e=n.map(i),t=r.map(i);e.join("")!==t.join("")&&s("children"),n.length!==r.length&&s("children")}return fU.filter(e=>"_"===e[0]).map(e=>e.replace(/_/,"")).forEach(r=>{if(r in e&&r in t)if(fz(e[r])&&fz(t[r])){let n=Object.keys(e[r]),i=Object.keys(t[r]);n.length!==i.length?s(r):(n.forEach(n=>{e[r][n]!==t[r][n]&&s(r)}),i.forEach(n=>{e[r][n]!==t[r][n]&&s(r)}))}else e[r]!==t[r]&&s(r)}),a}(M,b.current,T,y.current,e=>e.key);return b.current=M,y.current=T,e.length&&v.current&&!v.current.destroyed&&function({swiper:e,slides:t,passedParams:r,changedParams:n,nextEl:i,prevEl:a,scrollbarEl:s,paginationEl:o}){let l,u,c,d,h,p,f,A,g=n.filter(e=>"children"!==e&&"direction"!==e&&"wrapperClass"!==e),{params:m,pagination:v,navigation:b,scrollbar:y,virtual:w,thumbs:x}=e;n.includes("thumbs")&&r.thumbs&&r.thumbs.swiper&&!r.thumbs.swiper.destroyed&&m.thumbs&&(!m.thumbs.swiper||m.thumbs.swiper.destroyed)&&(l=!0),n.includes("controller")&&r.controller&&r.controller.control&&m.controller&&!m.controller.control&&(u=!0),n.includes("pagination")&&r.pagination&&(r.pagination.el||o)&&(m.pagination||!1===m.pagination)&&v&&!v.el&&(c=!0),n.includes("scrollbar")&&r.scrollbar&&(r.scrollbar.el||s)&&(m.scrollbar||!1===m.scrollbar)&&y&&!y.el&&(d=!0),n.includes("navigation")&&r.navigation&&(r.navigation.prevEl||a)&&(r.navigation.nextEl||i)&&(m.navigation||!1===m.navigation)&&b&&!b.prevEl&&!b.nextEl&&(h=!0);let C=t=>{e[t]&&(e[t].destroy(),"navigation"===t?(e.isElement&&(e[t].prevEl.remove(),e[t].nextEl.remove()),m[t].prevEl=void 0,m[t].nextEl=void 0,e[t].prevEl=void 0,e[t].nextEl=void 0):(e.isElement&&e[t].el.remove(),m[t].el=void 0,e[t].el=void 0))};n.includes("loop")&&e.isElement&&(m.loop&&!r.loop?p=!0:!m.loop&&r.loop?f=!0:A=!0),g.forEach(e=>{if(fz(m[e])&&fz(r[e]))Object.assign(m[e],r[e]),("navigation"===e||"pagination"===e||"scrollbar"===e)&&"enabled"in r[e]&&!r[e].enabled&&C(e);else{let t=r[e];(!0===t||!1===t)&&("navigation"===e||"pagination"===e||"scrollbar"===e)?!1===t&&C(e):m[e]=r[e]}}),g.includes("controller")&&!u&&e.controller&&e.controller.control&&m.controller&&m.controller.control&&(e.controller.control=m.controller.control),n.includes("children")&&t&&w&&m.virtual.enabled?(w.slides=t,w.update(!0)):n.includes("virtual")&&w&&m.virtual.enabled&&(t&&(w.slides=t),w.update(!0)),n.includes("children")&&t&&m.loop&&(A=!0),l&&x.init()&&x.update(!0),u&&(e.controller.control=m.controller.control),c&&(e.isElement&&(!o||"string"==typeof o)&&((o=document.createElement("div")).classList.add("swiper-pagination"),o.part.add("pagination"),e.el.appendChild(o)),o&&(m.pagination.el=o),v.init(),v.render(),v.update()),d&&(e.isElement&&(!s||"string"==typeof s)&&((s=document.createElement("div")).classList.add("swiper-scrollbar"),s.part.add("scrollbar"),e.el.appendChild(s)),s&&(m.scrollbar.el=s),y.init(),y.updateSize(),y.setTranslate()),h&&(e.isElement&&(i&&"string"!=typeof i||((i=document.createElement("div")).classList.add("swiper-button-next"),fA(i,e.navigation.arrowSvg),i.part.add("button-next"),e.el.appendChild(i)),a&&"string"!=typeof a||((a=document.createElement("div")).classList.add("swiper-button-prev"),fA(a,e.navigation.arrowSvg),a.part.add("button-prev"),e.el.appendChild(a))),i&&(m.navigation.nextEl=i),a&&(m.navigation.prevEl=a),b.init(),b.update()),n.includes("allowSlideNext")&&(e.allowSlideNext=r.allowSlideNext),n.includes("allowSlidePrev")&&(e.allowSlidePrev=r.allowSlidePrev),n.includes("direction")&&e.changeDirection(r.direction,!1),(p||A)&&e.loopDestroy(),(f||A)&&e.loopCreate(),e.update()}({swiper:v.current,slides:T,passedParams:M,changedParams:e,nextEl:w.current,prevEl:x.current,scrollbarEl:E.current,paginationEl:C.current}),()=>{B&&v.current&&Object.keys(B).forEach(e=>{v.current.off(e,B[e])})}}),fJ(()=>{var e;(e=v.current)&&!e.destroyed&&e.params.virtual&&(!e.params.virtual||e.params.virtual.enabled)&&(e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.emit("_virtualUpdated"),e.parallax&&e.params.parallax&&e.params.parallax.enabled&&e.parallax.setTranslate())},[h]),rd.createElement(t,fq({ref:m,className:fW(`${c}${e?` ${e}`:""}`)},I),rd.createElement(fX.Provider,{value:v.current},k["container-start"],rd.createElement(r,{className:function(e=""){return e?e.includes("swiper-wrapper")?e:`swiper-wrapper ${e}`:"swiper-wrapper"}(S.wrapperClass)},k["wrapper-start"],S.virtual?function(e,t,r){if(!r)return null;let n=e=>{let r=e;return e<0?r=t.length+e:r>=t.length&&(r-=t.length),r},i=e.isHorizontal()?{[e.rtlTranslate?"right":"left"]:`${r.offset}px`}:{top:`${r.offset}px`},{from:a,to:s}=r,o=e.params.loop?-t.length:0,l=e.params.loop?2*t.length:t.length,u=[];for(let e=o;e<l;e+=1)e>=a&&e<=s&&u.push(t[n(e)]);return u.map((t,r)=>rd.cloneElement(t,{swiper:e,style:i,key:t.props.virtualIndex||t.key||`slide-${r}`}))}(v.current,T,h):T.map((e,t)=>rd.cloneElement(e,{swiper:v.current,swiperSlideIndex:t})),k["wrapper-end"]),fG(S)&&rd.createElement(rd.Fragment,null,rd.createElement("div",{ref:x,className:"swiper-button-prev"}),rd.createElement("div",{ref:w,className:"swiper-button-next"})),fV(S)&&rd.createElement("div",{ref:E,className:"swiper-scrollbar"}),fj(S)&&rd.createElement("div",{ref:C,className:"swiper-pagination"}),k["container-end"]))});fZ.displayName="Swiper";let f$=(0,rd.forwardRef)(({tag:e="div",children:t,className:r="",swiper:n,zoom:i,lazy:a,virtualIndex:s,swiperSlideIndex:o,...l}={},u)=>{let c=(0,rd.useRef)(null),[d,h]=(0,rd.useState)("swiper-slide"),[p,f]=(0,rd.useState)(!1);function A(e,t,r){t===c.current&&h(r)}fJ(()=>{if(void 0!==o&&(c.current.swiperSlideIndex=o),u&&(u.current=c.current),c.current&&n){if(n.destroyed){"swiper-slide"!==d&&h("swiper-slide");return}return n.on("_slideClass",A),()=>{n&&n.off("_slideClass",A)}}}),fJ(()=>{n&&c.current&&!n.destroyed&&h(n.getSlideClasses(c.current))},[n]);let g={isActive:d.indexOf("swiper-slide-active")>=0,isVisible:d.indexOf("swiper-slide-visible")>=0,isPrev:d.indexOf("swiper-slide-prev")>=0,isNext:d.indexOf("swiper-slide-next")>=0},m=()=>"function"==typeof t?t(g):t;return rd.createElement(e,fq({ref:c,className:fW(`${d}${r?` ${r}`:""}`),"data-swiper-slide-index":s,onLoad:()=>{f(!0)}},l),i&&rd.createElement(fK.Provider,{value:g},rd.createElement("div",{className:"swiper-zoom-container","data-swiper-zoom":"number"==typeof i?i:void 0},m(),a&&!p&&rd.createElement("div",{className:"swiper-lazy-preloader",ref:e=>{e&&(e.lazyPreloaderManaged=!0)}}))),!i&&rd.createElement(fK.Provider,{value:g},m(),a&&!p&&rd.createElement("div",{className:"swiper-lazy-preloader",ref:e=>{e&&(e.lazyPreloaderManaged=!0)}})))});f$.displayName="SwiperSlide";var f0="Tabs",[f1,f2]=lc(f0,[pk]),f3=pk(),[f4,f5]=f1(f0),f9=rd.forwardRef((e,t)=>{let{__scopeTabs:r,value:n,onValueChange:i,defaultValue:a,orientation:s="horizontal",dir:o,activationMode:l="automatic",...u}=e,c=cd(o),[d,h]=lg({prop:n,onChange:i,defaultProp:a??"",caller:f0});return(0,rp.jsx)(f4,{scope:r,baseId:lf(),value:d,onValueChange:h,orientation:s,dir:c,activationMode:l,children:(0,rp.jsx)(ly.div,{dir:c,"data-orientation":s,...u,ref:t})})});f9.displayName=f0;var f8="TabsList",f6=rd.forwardRef((e,t)=>{let{__scopeTabs:r,loop:n=!0,...i}=e,a=f5(f8,r),s=f3(r);return(0,rp.jsx)(pP,{asChild:!0,...s,orientation:a.orientation,dir:a.dir,loop:n,children:(0,rp.jsx)(ly.div,{role:"tablist","aria-orientation":a.orientation,...i,ref:t})})});f6.displayName=f8;var f7="TabsTrigger",Ae=rd.forwardRef((e,t)=>{let{__scopeTabs:r,value:n,disabled:i=!1,...a}=e,s=f5(f7,r),o=f3(r),l=An(s.baseId,n),u=Ai(s.baseId,n),c=n===s.value;return(0,rp.jsx)(pF,{asChild:!0,...o,focusable:!i,active:c,children:(0,rp.jsx)(ly.button,{type:"button",role:"tab","aria-selected":c,"aria-controls":u,"data-state":c?"active":"inactive","data-disabled":i?"":void 0,disabled:i,id:l,...a,ref:t,onMouseDown:lu(e.onMouseDown,e=>{i||0!==e.button||!1!==e.ctrlKey?e.preventDefault():s.onValueChange(n)}),onKeyDown:lu(e.onKeyDown,e=>{[" ","Enter"].includes(e.key)&&s.onValueChange(n)}),onFocus:lu(e.onFocus,()=>{let e="manual"!==s.activationMode;c||i||!e||s.onValueChange(n)})})})});Ae.displayName=f7;var At="TabsContent",Ar=rd.forwardRef((e,t)=>{let{__scopeTabs:r,value:n,forceMount:i,children:a,...s}=e,o=f5(At,r),l=An(o.baseId,n),u=Ai(o.baseId,n),c=n===o.value,d=rd.useRef(c);return rd.useEffect(()=>{let e=requestAnimationFrame(()=>d.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,rp.jsx)(lO,{present:i||c,children:({present:r})=>(0,rp.jsx)(ly.div,{"data-state":c?"active":"inactive","data-orientation":o.orientation,role:"tabpanel","aria-labelledby":l,hidden:!r,id:u,tabIndex:0,...s,ref:t,style:{...e.style,animationDuration:d.current?"0s":void 0},children:r&&a})})});function An(e,t){return`${e}-trigger-${t}`}function Ai(e,t){return`${e}-content-${t}`}Ar.displayName=At;var Aa=function(e,t){return Number(e.toFixed(t))},As=function(e,t,r){r&&"function"==typeof r&&r(e,t)},Ao={easeOut:function(e){return-Math.cos(e*Math.PI)/2+.5},linear:function(e){return e},easeInQuad:function(e){return e*e},easeOutQuad:function(e){return e*(2-e)},easeInOutQuad:function(e){return e<.5?2*e*e:-1+(4-2*e)*e},easeInCubic:function(e){return e*e*e},easeOutCubic:function(e){return--e*e*e+1},easeInOutCubic:function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},easeInQuart:function(e){return e*e*e*e},easeOutQuart:function(e){return 1- --e*e*e*e},easeInOutQuart:function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},easeInQuint:function(e){return e*e*e*e*e},easeOutQuint:function(e){return 1+--e*e*e*e*e},easeInOutQuint:function(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e}},Al=function(e){"number"==typeof e&&cancelAnimationFrame(e)},Au=function(e){e.mounted&&(Al(e.animation),e.animate=!1,e.animation=null,e.velocity=null)};function Ac(e,t,r,n){if(e.mounted){var i=new Date().getTime();Au(e),e.animation=function(){if(!e.mounted)return Al(e.animation);var a=new Date().getTime()-i,s=(0,Ao[t])(a/r);a>=r?(n(1),e.animation=null):e.animation&&(n(s),requestAnimationFrame(e.animation))},requestAnimationFrame(e.animation)}}function Ad(e,t,r,n){var i,a,s,o=(i=t.scale,a=t.positionX,s=t.positionY,!(Number.isNaN(i)||Number.isNaN(a)||Number.isNaN(s)));if(e.mounted&&o){var l=e.setTransformState,u=e.transformState,c=u.scale,d=u.positionX,h=u.positionY,p=t.scale-c,f=t.positionX-d,A=t.positionY-h;0===r?l(t.scale,t.positionX,t.positionY):Ac(e,n,r,function(e){l(c+p*e,d+f*e,h+A*e)})}}var Ah=function(e,t,r,n,i,a,s){var o=e>t?r*(s?1:.5):0,l=n>i?a*(s?1:.5):0;return{minPositionX:e-t-o,maxPositionX:o,minPositionY:n-i-l,maxPositionY:l}},Ap=function(e,t){var r,n,i,a,s,o,l=e.wrapperComponent,u=e.contentComponent,c=e.setup.centerZoomedOut;if(!l||!u)throw Error("Components are not mounted");var d=(r=l.offsetWidth,n=l.offsetHeight,i=u.offsetWidth,a=u.offsetHeight,{wrapperWidth:r,wrapperHeight:n,newContentWidth:s=i*t,newDiffWidth:r-s,newContentHeight:o=a*t,newDiffHeight:n-o}),h=d.wrapperWidth,p=d.wrapperHeight;return Ah(h,d.newContentWidth,d.newDiffWidth,p,d.newContentHeight,d.newDiffHeight,!!c)},Af=function(e,t,r,n){return n?e<t?Aa(t,2):e>r?Aa(r,2):Aa(e,2):Aa(e,2)},AA=function(e,t){var r=Ap(e,t);return e.bounds=r,r};function Ag(e,t,r,n,i,a,s){var o=r.minPositionX,l=r.minPositionY,u=r.maxPositionX,c=r.maxPositionY,d=0,h=0;return s&&(d=i,h=a),{x:Af(e,o-d,u+d,n),y:Af(t,l-h,c+h,n)}}function Am(e,t,r,n,i,a){var s=e.transformState,o=s.scale,l=s.positionX,u=s.positionY,c=n-o;return"number"!=typeof t||"number"!=typeof r?(console.error("Mouse X and Y position were not provided!"),{x:l,y:u}):Ag(l-t*c,u-r*c,i,a,0,0,null)}function Av(e,t,r,n,i){var a=t-(i?n:0);return!Number.isNaN(r)&&e>=r?r:!Number.isNaN(t)&&e<=a?a:e}var Ab=function(e,t){var r=e.setup.panning.excluded,n=e.isInitialized,i=e.wrapperComponent,a=t.target,s="shadowRoot"in a&&"composedPath"in t?t.composedPath().some(function(e){return e instanceof Element&&(null==i?void 0:i.contains(e))}):null==i?void 0:i.contains(a);return!(!(n&&a&&s)||Aq(a,r))},Ay=function(e){var t=e.isInitialized,r=e.isPanning,n=e.setup.panning.disabled;return!!(t&&r&&!n)},Aw=function(e,t){var r=e.transformState,n=r.positionX,i=r.positionY;e.isPanning=!0,e.startCoords={x:t.clientX-n,y:t.clientY-i}},Ax=function(e,t){var r=t.touches,n=e.transformState,i=n.positionX,a=n.positionY;e.isPanning=!0,1===r.length&&(e.startCoords={x:r[0].clientX-i,y:r[0].clientY-a})};function AC(e,t,r,n,i){var a=e.setup.limitToBounds,s=e.wrapperComponent,o=e.bounds,l=e.transformState,u=l.scale,c=l.positionX,d=l.positionY;if(null!==s&&null!==o&&(t!==c||r!==d)){var h=Ag(t,r,o,a,n,i,s),p=h.x,f=h.y;e.setTransformState(u,p,f)}}var AE=function(e,t,r){var n=e.startCoords,i=e.transformState,a=e.setup.panning,s=a.lockAxisX,o=a.lockAxisY,l=i.positionX,u=i.positionY;if(!n)return{x:l,y:u};var c=t-n.x,d=r-n.y;return{x:s?l:c,y:o?u:d}},AS=function(e,t){var r=e.setup,n=e.transformState.scale,i=r.minScale,a=r.disablePadding;return t>0&&n>=i&&!a?t:0},AM=function(e){var t=e.mounted,r=e.setup,n=r.disabled,i=r.velocityAnimation,a=e.transformState.scale;return!!(!i.disabled||a>1||!n||t)},AI=function(e){var t=e.mounted,r=e.velocity,n=e.bounds,i=e.setup,a=i.disabled,s=i.velocityAnimation,o=e.transformState.scale;return!!(!s.disabled||o>1||!a||t)&&!!r&&!!n};function AB(e,t,r,n,i,a,s,o,l,u){if(i){if(t>s&&r>s){var c=s+(e-s)*u;return c>l?l:c<s?s:c}if(t<a&&r<a){var c=a+(e-a)*u;return c<o?o:c>a?a:c}}return n?t:Af(e,a,s,i)}function AT(e,t){var r=e.transformState.scale;Au(e),AA(e,r),void 0!==window.TouchEvent&&t instanceof TouchEvent?Ax(e,t):Aw(e,t)}function Ak(e,t){var r=e.transformState.scale,n=e.setup,i=n.minScale,a=n.alignmentAnimation,s=a.disabled,o=a.sizeX,l=a.sizeY,u=a.animationTime,c=a.animationType;if(!(s||r<i||!o&&!l)){var d=function(e){var t=e.transformState,r=t.positionX,n=t.positionY,i=t.scale,a=e.setup,s=a.disabled,o=a.limitToBounds,l=a.centerZoomedOut,u=e.wrapperComponent;if(!s&&u&&e.bounds){var c=e.bounds,d=c.maxPositionX,h=c.minPositionX,p=c.maxPositionY,f=c.minPositionY,A=r>d?u.offsetWidth:e.setup.minPositionX||0,g=n>p?u.offsetHeight:e.setup.minPositionY||0,m=Am(e,A,g,i,e.bounds,o||l),v=m.x,b=m.y;return{scale:i,positionX:r>d||r<h?v:r,positionY:n>p||n<f?b:n}}}(e);d&&Ad(e,d,null!=t?t:u,c)}}function A_(e,t,r){var n=e.startCoords,i=e.setup.alignmentAnimation,a=i.sizeX,s=i.sizeY;if(n){var o=AE(e,t,r),l=o.x,u=o.y,c=AS(e,a),d=AS(e,s);!function(e,t){if(AM(e)){var r=e.lastMousePosition,n=e.velocityTime,i=e.setup,a=e.wrapperComponent,s=i.velocityAnimation.equalToMove,o=Date.now();if(r&&n&&a){var l=s?Math.min(1,a.offsetWidth/window.innerWidth):1,u=t.x-r.x,c=t.y-r.y,d=Math.sqrt(u*u+c*c)/(o-n);e.velocity={velocityX:u/l,velocityY:c/l,total:d}}e.lastMousePosition=t,e.velocityTime=o}}(e,{x:l,y:u}),AC(e,l,u,c,d)}}function AR(e,t,r,n){var i=e.setup,a=i.minScale,s=i.maxScale,o=i.limitToBounds,l=Av(Aa(t,2),a,s,0,!1),u=AA(e,l),c=Am(e,r,n,l,u,o);return{scale:l,positionX:c.x,positionY:c.y}}function AP(e,t,r){var n=e.transformState.scale,i=e.wrapperComponent,a=e.setup,s=a.minScale,o=a.limitToBounds,l=a.zoomAnimation,u=l.disabled,c=l.animationTime,d=l.animationType,h=u||n>=s;if((n>=1||o)&&Ak(e),!h&&i&&e.mounted){var p=AR(e,s,t||i.offsetWidth/2,r||i.offsetHeight/2);p&&Ad(e,p,c,d)}}var AD=function(){return(AD=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function AL(e,t,r){if(r||2==arguments.length)for(var n,i=0,a=t.length;i<a;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))}"function"==typeof SuppressedError&&SuppressedError;var AF={disabled:!1,minPositionX:null,maxPositionX:null,minPositionY:null,maxPositionY:null,minScale:1,maxScale:8,limitToBounds:!0,centerZoomedOut:!1,centerOnInit:!1,disablePadding:!1,smooth:!0,wheel:{step:.2,disabled:!1,smoothStep:.001,wheelDisabled:!1,touchPadDisabled:!1,activationKeys:[],excluded:[]},panning:{disabled:!1,velocityDisabled:!1,lockAxisX:!1,lockAxisY:!1,allowLeftClickPan:!0,allowMiddleClickPan:!0,allowRightClickPan:!0,wheelPanning:!1,activationKeys:[],excluded:[]},pinch:{step:5,disabled:!1,excluded:[]},doubleClick:{disabled:!1,step:.7,mode:"zoomIn",animationType:"easeOut",animationTime:200,excluded:[]},zoomAnimation:{disabled:!1,size:.4,animationTime:200,animationType:"easeOut"},alignmentAnimation:{disabled:!1,sizeX:100,sizeY:100,animationTime:200,velocityAlignmentTime:400,animationType:"easeOut"},velocityAnimation:{disabled:!1,sensitivity:1,animationTime:400,animationType:"easeOut",equalToMove:!0}},AO="react-transform-wrapper",AN=function(e){var t,r,n,i;return{previousScale:null!=(t=e.initialScale)?t:1,scale:null!=(r=e.initialScale)?r:1,positionX:null!=(n=e.initialPositionX)?n:0,positionY:null!=(i=e.initialPositionY)?i:0}},AQ=function(e){var t=AD({},AF);return Object.keys(e).forEach(function(r){var n=void 0!==e[r];if(void 0!==AF[r]&&n){var i=Object.prototype.toString.call(AF[r]);"[object Object]"===i?t[r]=AD(AD({},AF[r]),e[r]):"[object Array]"===i?t[r]=AL(AL([],AF[r],!0),e[r],!0):t[r]=e[r]}}),t},AU=function(e,t,r){var n=e.transformState.scale,i=e.wrapperComponent,a=e.setup,s=a.maxScale,o=a.minScale,l=a.zoomAnimation,u=a.smooth,c=l.size;if(!i)throw Error("Wrapper is not mounted");return Av(Aa(u?n*Math.exp(t*r):n+t*r,3),o,s,c,!1)};function Az(e,t,r,n,i){var a=e.wrapperComponent,s=e.transformState,o=s.scale,l=s.positionX,u=s.positionY;if(!a)return console.error("No WrapperComponent found");var c=a.offsetWidth,d=a.offsetHeight,h=AU(e,t,r),p=AR(e,h,(c/2-l)/o,(d/2-u)/o);if(!p)return console.error("Error during zoom event. New transformation state was not calculated.");Ad(e,p,n,i)}function AH(e,t,r,n){var i=e.setup,a=e.wrapperComponent,s=i.limitToBounds,o=AN(e.props),l=e.transformState,u=l.scale,c=l.positionX,d=l.positionY;if(a){var h=Ap(e,o.scale),p=Ag(o.positionX,o.positionY,h,s,0,0,a),f={scale:o.scale,positionX:p.x,positionY:p.y};(u!==o.scale||c!==o.positionX||d!==o.positionY)&&(null==n||n(),Ad(e,f,t,r))}}var AG=function(e){return{instance:e,zoomIn:function(t,r,n){void 0===t&&(t=.5),void 0===r&&(r=300),void 0===n&&(n="easeOut"),Az(e,1,t,r,n)},zoomOut:function(t,r,n){void 0===t&&(t=.5),void 0===r&&(r=300),void 0===n&&(n="easeOut"),Az(e,-1,t,r,n)},setTransform:function(t,r,n,i,a){void 0===i&&(i=300),void 0===a&&(a="easeOut");var s=e.transformState,o=s.positionX,l=s.positionY,u=s.scale,c=e.wrapperComponent,d=e.contentComponent;!e.setup.disabled&&c&&d&&Ad(e,{positionX:Number.isNaN(t)?o:t,positionY:Number.isNaN(r)?l:r,scale:Number.isNaN(n)?u:n},i,a)},resetTransform:function(t,r){void 0===t&&(t=200),void 0===r&&(r="easeOut"),AH(e,t,r)},centerView:function(t,r,n){void 0===r&&(r=200),void 0===n&&(n="easeOut");var i=e.transformState,a=e.wrapperComponent,s=e.contentComponent;a&&s&&Ad(e,AJ(t||i.scale,a,s),r,n)},zoomToElement:function(t,r,n,i){void 0===n&&(n=600),void 0===i&&(i="easeOut"),Au(e);var a=e.wrapperComponent,s="string"==typeof t?document.getElementById(t):t;if(a&&s&&a.contains(s)){var o=function(e,t,r){var n,i,a,s,o,l=e.wrapperComponent,u=e.contentComponent,c=e.transformState,d=e.setup,h=d.limitToBounds,p=d.minScale,f=d.maxScale;if(!l||!u)return c;var A=l.getBoundingClientRect(),g=t.getBoundingClientRect(),m=(n=t.getBoundingClientRect(),i=l.getBoundingClientRect(),a=u.getBoundingClientRect(),s=i.x*c.scale,o=i.y*c.scale,{x:(n.x-a.x+s)/c.scale,y:(n.y-a.y+o)/c.scale}),v=m.x,b=m.y,y=g.width/c.scale,w=g.height/c.scale,x=l.offsetWidth/y,C=l.offsetHeight/w,E=Av(r||Math.min(x,C),p,f,0,!1),S=(A.width-y*E)/2,M=(A.height-w*E)/2,I=Ag((A.left-v)*E+S,(A.top-b)*E+M,Ap(e,E),h,0,0,l);return{positionX:I.x,positionY:I.y,scale:E}}(e,s,r);Ad(e,o,n,i)}}}},Aj=function(e){var t={};return Object.assign(t,{instance:e,state:e.transformState}),Object.assign(t,AG(e)),t};function AV(){try{return{get passive(){return!1}}}catch(e){return!1}}var AW=".".concat(AO),Aq=function(e,t){return t.some(function(t){return e.matches("".concat(AW," ").concat(t,", ").concat(AW," .").concat(t,", ").concat(AW," ").concat(t," *, ").concat(AW," .").concat(t," *"))})},AY=function(e){e&&clearTimeout(e)},AJ=function(e,t,r){var n=r.offsetWidth*e,i=r.offsetHeight*e;return{scale:e,positionX:(t.offsetWidth-n)/2,positionY:(t.offsetHeight-i)/2}},AK=function(e,t){var r=e.setup.wheel,n=r.disabled,i=r.wheelDisabled,a=r.touchPadDisabled,s=r.excluded,o=e.isInitialized,l=e.isPanning,u=t.target;return!(!(o&&!l&&!n&&u)||i&&!t.ctrlKey||a&&t.ctrlKey||Aq(u,s))};function AX(e,t,r){var n=t.getBoundingClientRect(),i=0,a=0;if("clientX"in e)i=(e.clientX-n.left)/r,a=(e.clientY-n.top)/r;else{var s=e.touches[0];i=(s.clientX-n.left)/r,a=(s.clientY-n.top)/r}return(Number.isNaN(i)||Number.isNaN(a))&&console.error("No mouse or touch offset found"),{x:i,y:a}}var AZ=function(e,t,r,n,i){var a=e.transformState.scale,s=e.wrapperComponent,o=e.setup,l=o.maxScale,u=o.minScale,c=o.zoomAnimation,d=o.disablePadding,h=c.size,p=c.disabled;if(!s)throw Error("Wrapper is not mounted");var f=a+t*r;return i?f:Av(Aa(f,3),u,l,h,!n&&!p&&!d)},A$=function(e,t){var r=e.previousWheelEvent,n=e.transformState.scale,i=e.setup,a=i.maxScale,s=i.minScale;return!!r&&(!!(n<a)||!!(n>s)||Math.sign(r.deltaY)!==Math.sign(t.deltaY)||!!(r.deltaY>0)&&!!(r.deltaY<t.deltaY)||!!(r.deltaY<0)&&!!(r.deltaY>t.deltaY)||Math.sign(r.deltaY)!==Math.sign(t.deltaY))},A0=function(e,t){var r=e.setup.pinch,n=r.disabled,i=r.excluded,a=e.isInitialized,s=t.target;return!(!(a&&!n&&s)||Aq(s,i))},A1=function(e){var t=e.setup.pinch.disabled,r=e.isInitialized,n=e.pinchStartDistance;return!!(r&&!t&&n)},A2=function(e,t,r){var n=r.getBoundingClientRect(),i=e.touches,a=Aa(i[0].clientX-n.left,5),s=Aa(i[0].clientY-n.top,5);return{x:(a+Aa(i[1].clientX-n.left,5))/2/t,y:(s+Aa(i[1].clientY-n.top,5))/2/t}},A3=function(e){return Math.sqrt(Math.pow(e.touches[0].pageX-e.touches[1].pageX,2)+Math.pow(e.touches[0].pageY-e.touches[1].pageY,2))},A4=function(e,t){var r=e.pinchStartScale,n=e.pinchStartDistance,i=e.setup,a=i.maxScale,s=i.minScale,o=i.zoomAnimation,l=i.disablePadding,u=o.size,c=o.disabled;if(!r||null===n||!t)throw Error("Pinch touches distance was not provided");return t<0?e.transformState.scale:Av(Aa(t/n*r,2),s,a,u,!c&&!l)},A5=function(e,t){var r=e.props,n=r.onWheelStart,i=r.onZoomStart;e.wheelStopEventTimer||(Au(e),As(Aj(e),t,n),As(Aj(e),t,i))},A9=function(e,t){var r,n=e.props,i=n.onWheel,a=n.onZoom,s=e.contentComponent,o=e.setup,l=e.transformState.scale,u=o.limitToBounds,c=o.centerZoomedOut,d=o.zoomAnimation,h=o.wheel,p=o.disablePadding,f=o.smooth,A=d.size,g=d.disabled,m=h.step,v=h.smoothStep;if(!s)throw Error("Component not mounted");t.preventDefault(),t.stopPropagation();var b=AZ(e,(r=t?t.deltaY<0?1:-1:0,r),f?v*Math.abs(t.deltaY):m,!t.ctrlKey);if(l!==b){var y=AA(e,b),w=AX(t,s,l),x=Am(e,w.x,w.y,b,y,u&&(g||0===A||c||p)),C=x.x,E=x.y;e.previousWheelEvent=t,e.setTransformState(b,C,E),As(Aj(e),t,i),As(Aj(e),t,a)}},A8=function(e,t){var r=e.props,n=r.onWheelStop,i=r.onZoomStop;AY(e.wheelAnimationTimer),e.wheelAnimationTimer=setTimeout(function(){e.mounted&&(AP(e,t.x,t.y),e.wheelAnimationTimer=null)},100),A$(e,t)&&(AY(e.wheelStopEventTimer),e.wheelStopEventTimer=setTimeout(function(){e.mounted&&(e.wheelStopEventTimer=null,As(Aj(e),t,n),As(Aj(e),t,i))},160))},A6=function(e){for(var t=0,r=0,n=0;n<2;n+=1)t+=e.touches[n].clientX,r+=e.touches[n].clientY;return{x:t/2,y:r/2}},A7=function(e,t){var r=A3(t);e.pinchStartDistance=r,e.lastDistance=r,e.pinchStartScale=e.transformState.scale,e.isPanning=!1;var n=A6(t);e.pinchLastCenterX=n.x,e.pinchLastCenterY=n.y,Au(e)},ge=function(e,t){var r=e.contentComponent,n=e.pinchStartDistance,i=e.wrapperComponent,a=e.transformState.scale,s=e.setup,o=s.limitToBounds,l=s.centerZoomedOut,u=s.zoomAnimation,c=s.alignmentAnimation,d=u.disabled,h=u.size;if(null!==n&&r){var p=A2(t,a,r);if(Number.isFinite(p.x)&&Number.isFinite(p.y)){var f=A3(t),A=A4(e,f),g=A6(t),m=g.x-(e.pinchLastCenterX||0),v=g.y-(e.pinchLastCenterY||0);if(A!==a||0!==m||0!==v){e.pinchLastCenterX=g.x,e.pinchLastCenterY=g.y;var b=AA(e,A),y=Am(e,p.x,p.y,A,b,o&&(d||0===h||l)),w=y.x,x=y.y;e.pinchMidpoint=p,e.lastDistance=f;var C=c.sizeX,E=c.sizeY,S=Ag(w+m,x+v,b,o,AS(e,C),AS(e,E),i),M=S.x,I=S.y;e.setTransformState(A,M,I)}}}},gt=function(e){var t=e.pinchMidpoint;e.velocity=null,e.lastDistance=null,e.pinchMidpoint=null,e.pinchStartScale=null,e.pinchStartDistance=null,AP(e,null==t?void 0:t.x,null==t?void 0:t.y)},gr=function(e,t){var r=e.props.onZoomStop,n=e.setup.doubleClick.animationTime;AY(e.doubleClickStopEventTimer),e.doubleClickStopEventTimer=setTimeout(function(){e.doubleClickStopEventTimer=null,As(Aj(e),t,r)},n)},gn=function(e,t){var r=e.props,n=r.onZoomStart,i=r.onZoom,a=e.setup.doubleClick,s=a.animationTime,o=a.animationType;As(Aj(e),t,n),AH(e,s,o,function(){return As(Aj(e),t,i)}),gr(e,t)},gi=function(e,t){var r=e.isInitialized,n=e.setup,i=e.wrapperComponent,a=n.doubleClick,s=a.disabled,o=a.excluded,l=t.target,u=null==i?void 0:i.contains(l);return!(!(r&&l&&u&&!s)||Aq(l,o))},ga=function(e){var t=this;this.mounted=!0,this.pinchLastCenterX=null,this.pinchLastCenterY=null,this.onChangeCallbacks=new Set,this.onInitCallbacks=new Set,this.wrapperComponent=null,this.contentComponent=null,this.isInitialized=!1,this.bounds=null,this.previousWheelEvent=null,this.wheelStopEventTimer=null,this.wheelAnimationTimer=null,this.isPanning=!1,this.isWheelPanning=!1,this.startCoords=null,this.lastTouch=null,this.distance=null,this.lastDistance=null,this.pinchStartDistance=null,this.pinchStartScale=null,this.pinchMidpoint=null,this.doubleClickStopEventTimer=null,this.velocity=null,this.velocityTime=null,this.lastMousePosition=null,this.animate=!1,this.animation=null,this.maxBounds=null,this.pressedKeys={},this.mount=function(){t.initializeWindowEvents()},this.unmount=function(){t.cleanupWindowEvents()},this.update=function(e){t.props=e,AA(t,t.transformState.scale),t.setup=AQ(e)},this.initializeWindowEvents=function(){var e,r,n=AV(),i=null==(e=t.wrapperComponent)?void 0:e.ownerDocument,a=null==i?void 0:i.defaultView;null==(r=t.wrapperComponent)||r.addEventListener("wheel",t.onWheelPanning,n),null==a||a.addEventListener("mousedown",t.onPanningStart,n),null==a||a.addEventListener("mousemove",t.onPanning,n),null==a||a.addEventListener("mouseup",t.onPanningStop,n),null==i||i.addEventListener("mouseleave",t.clearPanning,n),null==a||a.addEventListener("keyup",t.setKeyUnPressed,n),null==a||a.addEventListener("keydown",t.setKeyPressed,n)},this.cleanupWindowEvents=function(){var e,r,n=AV(),i=null==(e=t.wrapperComponent)?void 0:e.ownerDocument,a=null==i?void 0:i.defaultView;null==a||a.removeEventListener("mousedown",t.onPanningStart,n),null==a||a.removeEventListener("mousemove",t.onPanning,n),null==a||a.removeEventListener("mouseup",t.onPanningStop,n),null==i||i.removeEventListener("mouseleave",t.clearPanning,n),null==a||a.removeEventListener("keyup",t.setKeyUnPressed,n),null==a||a.removeEventListener("keydown",t.setKeyPressed,n),document.removeEventListener("mouseleave",t.clearPanning,n),Au(t),null==(r=t.observer)||r.disconnect()},this.handleInitializeWrapperEvents=function(e){var r=AV();e.addEventListener("wheel",t.onWheelZoom,r),e.addEventListener("dblclick",t.onDoubleClick,r),e.addEventListener("touchstart",t.onTouchPanningStart,r),e.addEventListener("touchmove",t.onTouchPanning,r),e.addEventListener("touchend",t.onTouchPanningStop,r)},this.handleInitialize=function(e,r){var n=!1,i=t.setup.centerOnInit,a=function(e,t){for(var r=0;r<e.length;r++)if(e[r].target===t)return!0;return!1};t.applyTransformation(),t.onInitCallbacks.forEach(function(e){e(Aj(t))}),t.observer=new ResizeObserver(function(s){if(a(s,e)||a(s,r))if(i&&!n){var o=r.offsetWidth,l=r.offsetHeight;(o>0||l>0)&&(n=!0,t.setCenter())}else Au(t),AA(t,t.transformState.scale),Ak(t,0)}),t.observer.observe(e),t.observer.observe(r)},this.onWheelZoom=function(e){t.setup.disabled||!AK(t,e)||t.isPressingKeys(t.setup.wheel.activationKeys)&&(A5(t,e),A9(t,e),A8(t,e))},this.onWheelPanning=function(e){var r=t.setup,n=r.disabled,i=r.wheel,a=r.panning;if(t.wrapperComponent&&t.contentComponent&&!n&&i.wheelDisabled&&!a.disabled&&a.wheelPanning&&!e.ctrlKey){e.preventDefault(),e.stopPropagation();var s=t.transformState,o=s.positionX,l=s.positionY,u=o-e.deltaX,c=l-e.deltaY,d=a.lockAxisX?o:u,h=a.lockAxisY?l:c,p=t.setup.alignmentAnimation,f=p.sizeX,A=p.sizeY,g=AS(t,f),m=AS(t,A);(d!==o||h!==l)&&AC(t,d,h,g,m)}},this.onPanningStart=function(e){var r=t.setup.disabled,n=t.props.onPanningStart;!r&&Ab(t,e)&&t.isPressingKeys(t.setup.panning.activationKeys)&&(0!==e.button||t.setup.panning.allowLeftClickPan)&&(1!==e.button||t.setup.panning.allowMiddleClickPan)&&(2!==e.button||t.setup.panning.allowRightClickPan)&&(e.preventDefault(),e.stopPropagation(),Au(t),AT(t,e),As(Aj(t),e,n))},this.onPanning=function(e){var r=t.setup.disabled,n=t.props.onPanning;r||!Ay(t)||t.isPressingKeys(t.setup.panning.activationKeys)&&(e.preventDefault(),e.stopPropagation(),A_(t,e.clientX,e.clientY),As(Aj(t),e,n))},this.onPanningStop=function(e){var r=t.props.onPanningStop;t.isPanning&&(!function(e){if(e.isPanning){var t=e.setup.panning.velocityDisabled,r=e.velocity,n=e.wrapperComponent,i=e.contentComponent;e.isPanning=!1,e.animate=!1,e.animation=null;var a=null==n?void 0:n.getBoundingClientRect(),s=null==i?void 0:i.getBoundingClientRect(),o=(null==a?void 0:a.width)||0,l=(null==a?void 0:a.height)||0,u=(null==s?void 0:s.width)||0,c=(null==s?void 0:s.height)||0;!t&&r&&(null==r?void 0:r.total)>.1&&(o<u||l<c)?function(e){var t=e.velocity,r=e.bounds,n=e.setup,i=e.wrapperComponent;if(AI(e)&&t&&r&&i){var a,s,o,l,u=t.velocityX,c=t.velocityY,d=t.total,h=r.maxPositionX,p=r.minPositionX,f=r.maxPositionY,A=r.minPositionY,g=n.limitToBounds,m=n.alignmentAnimation,v=n.zoomAnimation,b=n.panning,y=b.lockAxisY,w=b.lockAxisX,x=v.animationType,C=m.sizeX,E=m.sizeY,S=m.velocityAlignmentTime,M=Math.max((s=(a=e.setup.velocityAnimation).equalToMove,o=a.animationTime,l=a.sensitivity,s?o*d*l:o),S),I=AS(e,C),B=AS(e,E),T=I*i.offsetWidth/100,k=B*i.offsetHeight/100,_=h+T,R=p-T,P=f+k,D=A-k,L=e.transformState,F=new Date().getTime();Ac(e,x,M,function(t){var r=e.transformState,n=r.scale,i=r.positionX,a=r.positionY,s=new Date().getTime()-F,o=1-(0,Ao[m.animationType])(Math.min(1,s/S)),l=1-t,d=i+u*l,v=a+c*l,b=AB(d,L.positionX,i,w,g,p,h,R,_,o),x=AB(v,L.positionY,a,y,g,A,f,D,P,o);(i!==d||a!==v)&&e.setTransformState(n,b,x)})}}(e):Ak(e)}}(t),As(Aj(t),e,r))},this.onPinchStart=function(e){var r=t.setup.disabled,n=t.props,i=n.onPinchingStart,a=n.onZoomStart;r||A0(t,e)&&(A7(t,e),Au(t),As(Aj(t),e,i),As(Aj(t),e,a))},this.onPinch=function(e){var r=t.setup.disabled,n=t.props,i=n.onPinching,a=n.onZoom;r||A1(t)&&(e.preventDefault(),e.stopPropagation(),ge(t,e),As(Aj(t),e,i),As(Aj(t),e,a))},this.onPinchStop=function(e){var r=t.props,n=r.onPinchingStop,i=r.onZoomStop;t.pinchStartScale&&(gt(t),As(Aj(t),e,n),As(Aj(t),e,i))},this.onTouchPanningStart=function(e){var r=t.setup.disabled,n=t.props.onPanningStart;if(!r&&Ab(t,e)&&!(t.lastTouch&&new Date-t.lastTouch<200&&1===e.touches.length)){t.lastTouch=+new Date,Au(t);var i=e.touches,a=1===i.length,s=2===i.length;a&&(Au(t),AT(t,e),As(Aj(t),e,n)),s&&t.onPinchStart(e)}},this.onTouchPanning=function(e){var r=t.setup.disabled,n=t.props.onPanning;if(t.isPanning&&1===e.touches.length){if(r||!Ay(t))return;e.preventDefault(),e.stopPropagation();var i=e.touches[0];A_(t,i.clientX,i.clientY),As(Aj(t),e,n)}else e.touches.length>1&&t.onPinch(e)},this.onTouchPanningStop=function(e){t.onPanningStop(e),t.onPinchStop(e)},this.onDoubleClick=function(e){t.setup.disabled||gi(t,e)&&function(e,t){var r,n=e.setup,i=e.doubleClickStopEventTimer,a=e.transformState,s=e.contentComponent,o=a.scale,l=e.props,u=l.onZoomStart,c=l.onZoom,d=n.doubleClick,h=d.disabled,p=d.mode,f=d.step,A=d.animationTime,g=d.animationType;if(!h&&!i){if("reset"===p)return gn(e,t);if(!s)return console.error("No ContentComponent found");var m=(r=e.transformState.scale,"toggle"===p?1===r?1:-1:"zoomOut"===p?-1:1),v=AU(e,m,f);if(o!==v){As(Aj(e),t,u);var b=AX(t,s,o),y=AR(e,v,b.x,b.y);if(!y)return console.error("Error during zoom event. New transformation state was not calculated.");As(Aj(e),t,c),Ad(e,y,A,g),gr(e,t)}}}(t,e)},this.clearPanning=function(e){t.isPanning&&t.onPanningStop(e)},this.setKeyPressed=function(e){t.pressedKeys[e.key]=!0},this.setKeyUnPressed=function(e){t.pressedKeys[e.key]=!1},this.isPressingKeys=function(e){return!e.length||!!e.find(function(e){return t.pressedKeys[e]})},this.setTransformState=function(e,r,n){var i=t.props.onTransformed;if(Number.isNaN(e)||Number.isNaN(r)||Number.isNaN(n))console.error("Detected NaN set state values");else{e!==t.transformState.scale&&(t.transformState.previousScale=t.transformState.scale,t.transformState.scale=e),t.transformState.positionX=r,t.transformState.positionY=n,t.applyTransformation();var a=Aj(t);t.onChangeCallbacks.forEach(function(e){return e(a)}),As(a,{scale:e,positionX:r,positionY:n},i)}},this.setCenter=function(){if(t.wrapperComponent&&t.contentComponent){var e=AJ(t.transformState.scale,t.wrapperComponent,t.contentComponent);t.setTransformState(e.scale,e.positionX,e.positionY)}},this.handleTransformStyles=function(e,r,n){return t.props.customTransform?t.props.customTransform(e,r,n):"translate(".concat(e,"px, ").concat(r,"px) scale(").concat(n,")")},this.applyTransformation=function(){if(t.mounted&&t.contentComponent){var e=t.transformState,r=e.scale,n=e.positionX,i=e.positionY,a=t.handleTransformStyles(n,i,r);t.contentComponent.style.transform=a}},this.getContext=function(){return Aj(t)},this.onChange=function(e){return t.onChangeCallbacks.has(e)||t.onChangeCallbacks.add(e),function(){t.onChangeCallbacks.delete(e)}},this.onInit=function(e){return t.onInitCallbacks.has(e)||t.onInitCallbacks.add(e),function(){t.onInitCallbacks.delete(e)}},this.init=function(e,r){t.cleanupWindowEvents(),t.wrapperComponent=e,t.contentComponent=r,AA(t,t.transformState.scale),t.handleInitializeWrapperEvents(e),t.handleInitialize(e,r),t.initializeWindowEvents(),t.isInitialized=!0,As(Aj(t),void 0,t.props.onInit)},this.props=e,this.setup=AQ(this.props),this.transformState=AN(this.props)},gs=rd.createContext(null),go=rd.forwardRef(function(e,t){var r,n,i=(0,rd.useRef)(new ga(e)).current,a=(r=e.children,n=AG(i),"function"==typeof r?r(n):r);return(0,rd.useImperativeHandle)(t,function(){return AG(i)},[i]),(0,rd.useEffect)(function(){i.update(e)},[i,e]),rd.createElement(gs.Provider,{value:i},a)});rd.forwardRef(function(e,t){var r,n=(0,rd.useRef)(null),i=(0,rd.useContext)(gs);return(0,rd.useEffect)(function(){return i.onChange(function(e){n.current&&(n.current.style.transform=i.handleTransformStyles(0,0,1/e.instance.transformState.scale))})},[i]),rd.createElement("div",AD({},e,{ref:(r=[n,t],function(e){r.forEach(function(t){"function"==typeof t?t(e):null!=t&&(t.current=e)})})}))});!function(e,t){void 0===t&&(t={});var r=t.insertAt;if(e&&"u">typeof document){var n=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===r&&n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}(".transform-component-module_wrapper__SPB86 {\n position: relative;\n width: -moz-fit-content;\n width: fit-content;\n height: -moz-fit-content;\n height: fit-content;\n overflow: hidden;\n -webkit-touch-callout: none; /* iOS Safari */\n -webkit-user-select: none; /* Safari */\n -khtml-user-select: none; /* Konqueror HTML */\n -moz-user-select: none; /* Firefox */\n -ms-user-select: none; /* Internet Explorer/Edge */\n user-select: none;\n margin: 0;\n padding: 0;\n transform: translate3d(0, 0, 0);\n}\n.transform-component-module_content__FBWxo {\n display: flex;\n flex-wrap: wrap;\n width: -moz-fit-content;\n width: fit-content;\n height: -moz-fit-content;\n height: fit-content;\n margin: 0;\n padding: 0;\n transform-origin: 0% 0%;\n}\n.transform-component-module_content__FBWxo img {\n pointer-events: none;\n}\n");var gl=function(e){var t=e.children,r=e.wrapperClass,n=e.contentClass,i=e.wrapperStyle,a=e.contentStyle,s=e.wrapperProps,o=e.contentProps,l=(0,rd.useContext)(gs),u=l.init,c=l.cleanupWindowEvents,d=(0,rd.useRef)(null),h=(0,rd.useRef)(null);return(0,rd.useEffect)(function(){var e=d.current,t=h.current;return null!==e&&null!==t&&u&&(null==u||u(e,t)),function(){null==c||c()}},[]),rd.createElement("div",AD({},void 0===s?{}:s,{ref:d,className:"".concat(AO," ").concat("transform-component-module_wrapper__SPB86"," ").concat(void 0===r?"":r),style:i}),rd.createElement("div",AD({},void 0===o?{}:o,{ref:h,className:"".concat("react-transform-component"," ").concat("transform-component-module_content__FBWxo"," ").concat(void 0===n?"":n),style:a}),t))};let gu=(e,t)=>{if("number"==typeof e){if(3===t)return{mode:"rgb",r:(e>>8&15|e>>4&240)/255,g:(e>>4&15|240&e)/255,b:(15&e|e<<4&240)/255};if(4===t)return{mode:"rgb",r:(e>>12&15|e>>8&240)/255,g:(e>>8&15|e>>4&240)/255,b:(e>>4&15|240&e)/255,alpha:(15&e|e<<4&240)/255};if(6===t)return{mode:"rgb",r:(e>>16&255)/255,g:(e>>8&255)/255,b:(255&e)/255};if(8===t)return{mode:"rgb",r:(e>>24&255)/255,g:(e>>16&255)/255,b:(e>>8&255)/255,alpha:(255&e)/255}}},gc={aliceblue:0xf0f8ff,antiquewhite:0xfaebd7,aqua:65535,aquamarine:8388564,azure:0xf0ffff,beige:0xf5f5dc,bisque:0xffe4c4,black:0,blanchedalmond:0xffebcd,blue:255,blueviolet:9055202,brown:0xa52a2a,burlywood:0xdeb887,cadetblue:6266528,chartreuse:8388352,chocolate:0xd2691e,coral:0xff7f50,cornflowerblue:6591981,cornsilk:0xfff8dc,crimson:0xdc143c,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:0xb8860b,darkgray:0xa9a9a9,darkgreen:25600,darkgrey:0xa9a9a9,darkkhaki:0xbdb76b,darkmagenta:9109643,darkolivegreen:5597999,darkorange:0xff8c00,darkorchid:0x9932cc,darkred:9109504,darksalmon:0xe9967a,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:0xff1493,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:0xb22222,floralwhite:0xfffaf0,forestgreen:2263842,fuchsia:0xff00ff,gainsboro:0xdcdcdc,ghostwhite:0xf8f8ff,gold:0xffd700,goldenrod:0xdaa520,gray:8421504,green:32768,greenyellow:0xadff2f,grey:8421504,honeydew:0xf0fff0,hotpink:0xff69b4,indianred:0xcd5c5c,indigo:4915330,ivory:0xfffff0,khaki:0xf0e68c,lavender:0xe6e6fa,lavenderblush:0xfff0f5,lawngreen:8190976,lemonchiffon:0xfffacd,lightblue:0xadd8e6,lightcoral:0xf08080,lightcyan:0xe0ffff,lightgoldenrodyellow:0xfafad2,lightgray:0xd3d3d3,lightgreen:9498256,lightgrey:0xd3d3d3,lightpink:0xffb6c1,lightsalmon:0xffa07a,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:0xb0c4de,lightyellow:0xffffe0,lime:65280,limegreen:3329330,linen:0xfaf0e6,magenta:0xff00ff,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:0xba55d3,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:0xc71585,midnightblue:1644912,mintcream:0xf5fffa,mistyrose:0xffe4e1,moccasin:0xffe4b5,navajowhite:0xffdead,navy:128,oldlace:0xfdf5e6,olive:8421376,olivedrab:7048739,orange:0xffa500,orangered:0xff4500,orchid:0xda70d6,palegoldenrod:0xeee8aa,palegreen:0x98fb98,paleturquoise:0xafeeee,palevioletred:0xdb7093,papayawhip:0xffefd5,peachpuff:0xffdab9,peru:0xcd853f,pink:0xffc0cb,plum:0xdda0dd,powderblue:0xb0e0e6,purple:8388736,rebeccapurple:6697881,red:0xff0000,rosybrown:0xbc8f8f,royalblue:4286945,saddlebrown:9127187,salmon:0xfa8072,sandybrown:0xf4a460,seagreen:3050327,seashell:0xfff5ee,sienna:0xa0522d,silver:0xc0c0c0,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:0xfffafa,springgreen:65407,steelblue:4620980,tan:0xd2b48c,teal:32896,thistle:0xd8bfd8,tomato:0xff6347,turquoise:4251856,violet:0xee82ee,wheat:0xf5deb3,white:0xffffff,whitesmoke:0xf5f5f5,yellow:0xffff00,yellowgreen:0x9acd32},gd=/^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i,gh="([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)",gp=`${gh}%`,gf=`(?:${gh}%|${gh})`,gA=`(?:${gh}%|${gh}|none)`,gg=`(?:${gh}(deg|grad|rad|turn)|${gh})`,gm="\\s*,\\s*";RegExp("^"+gA+"$");let gv=RegExp(`^rgba?\\(\\s*${gh}${gm}${gh}${gm}${gh}\\s*(?:,\\s*${gf}\\s*)?\\)$`),gb=RegExp(`^rgba?\\(\\s*${gp}${gm}${gp}${gm}${gp}\\s*(?:,\\s*${gf}\\s*)?\\)$`),gy=(e="rgb")=>t=>{let r;return void 0!==(t=void 0===(r=t)?void 0:"object"!=typeof r?gj(r):void 0!==r.mode?r:e?{...r,mode:e}:void 0)?t.mode===e?t:gw[t.mode][e]?gw[t.mode][e](t):"rgb"===e?gw[t.mode].rgb(t):gw.rgb[e](gw[t.mode].rgb(t)):void 0},gw={},gx={},gC=[],gE={},gS=e=>e,gM=e=>(gw[e.mode]={...gw[e.mode],...e.toMode},Object.keys(e.fromMode||{}).forEach(t=>{gw[t]||(gw[t]={}),gw[t][e.mode]=e.fromMode[t]}),e.ranges||(e.ranges={}),e.difference||(e.difference={}),e.channels.forEach(t=>{if(void 0===e.ranges[t]&&(e.ranges[t]=[0,1]),!e.interpolate[t])throw Error(`Missing interpolator for: ${t}`);"function"==typeof e.interpolate[t]&&(e.interpolate[t]={use:e.interpolate[t]}),e.interpolate[t].fixup||(e.interpolate[t].fixup=gS)}),gx[e.mode]=e,(e.parse||[]).forEach(t=>{gI(t,e.mode)}),gy(e.mode)),gI=(e,t)=>{if("string"==typeof e){if(!t)throw Error("'mode' required when 'parser' is a string");gE[e]=t}else"function"==typeof e&&0>gC.indexOf(e)&&gC.push(e)},gB=/[^\x00-\x7F]|[a-zA-Z_]/,gT=/[^\x00-\x7F]|[-\w]/,gk="function",g_="ident",gR="number",gP="percentage",gD="none",gL="alpha",gF=0;function gO(e){let t=e[gF],r=e[gF+1];return"-"===t||"+"===t?/\d/.test(r)||"."===r&&/\d/.test(e[gF+2]):"."===t?/\d/.test(r):/\d/.test(t)}function gN(e){if(gF>=e.length)return!1;let t=e[gF];if(gB.test(t))return!0;if("-"===t){if(e.length-gF<2)return!1;let t=e[gF+1];if("-"===t||gB.test(t))return!0}return!1}let gQ={deg:1,rad:180/Math.PI,grad:.9,turn:360};function gU(e){let t="";if(("-"===e[gF]||"+"===e[gF])&&(t+=e[gF++]),t+=gz(e),"."===e[gF]&&/\d/.test(e[gF+1])&&(t+=e[gF++]+gz(e)),("e"===e[gF]||"E"===e[gF])&&(("-"===e[gF+1]||"+"===e[gF+1])&&/\d/.test(e[gF+2])?t+=e[gF++]+e[gF++]+gz(e):/\d/.test(e[gF+1])&&(t+=e[gF++]+gz(e))),gN(e)){let r=gH(e);return"deg"===r||"rad"===r||"turn"===r||"grad"===r?{type:"hue",value:t*gQ[r]}:void 0}return"%"===e[gF]?(gF++,{type:gP,value:+t}):{type:gR,value:+t}}function gz(e){let t="";for(;/\d/.test(e[gF]);)t+=e[gF++];return t}function gH(e){let t="";for(;gF<e.length&&gT.test(e[gF]);)t+=e[gF++];return t}function gG(e,t){let r,n=[];for(;e._i<e.length;){if((r=e[e._i++]).type===gD||r.type===gR||r.type===gL||r.type===gP||t&&"hue"===r.type){n.push(r);continue}if(")"===r.type){if(e._i<e.length)return;continue}return}if(!(n.length<3)&&!(n.length>4)){if(4===n.length){if(n[3].type!==gL)return;n[3]=n[3].value}return 3===n.length&&n.push({type:gD,value:void 0}),n.every(e=>e.type!==gL)?n:void 0}}let gj=e=>{let t;if("string"!=typeof e)return;let r=function(e=""){let t,r=e.trim(),n=[];for(gF=0;gF<r.length;){if("\n"===(t=r[gF++])||" "===t||" "===t){for(;gF<r.length&&("\n"===r[gF]||" "===r[gF]||" "===r[gF]);)gF++;continue}if(","===t)return;if(")"===t){n.push({type:")"});continue}if("+"===t){if(gF--,gO(r)){n.push(gU(r));continue}return}if("-"===t){if(gF--,gO(r)){n.push(gU(r));continue}if(gN(r)){n.push({type:g_,value:gH(r)});continue}return}if("."===t){if(gF--,gO(r)){n.push(gU(r));continue}return}if("/"===t){let e;for(;gF<r.length&&("\n"===r[gF]||" "===r[gF]||" "===r[gF]);)gF++;if(gO(r)&&"hue"!==(e=gU(r)).type){n.push({type:gL,value:e});continue}if(gN(r)&&"none"===gH(r)){n.push({type:gL,value:{type:gD,value:void 0}});continue}return}if(/\d/.test(t)){gF--,n.push(gU(r));continue}if(gB.test(t)){gF--,n.push(function(e){let t=gH(e);return"("===e[gF]?(gF++,{type:gk,value:t}):"none"===t?{type:gD,value:void 0}:{type:g_,value:t}}(r));continue}return}return n}(e),n=r?function(e,t){e._i=0;let r=e[e._i++];if(!r||r.type!==gk)return;let n=gG(e,t);if(n)return n.unshift(r.value),n}(r,!0):void 0,i=0,a=gC.length;for(;i<a;)if(void 0!==(t=gC[i++](e,n)))return t;return r?function(e){e._i=0;let t=e[e._i++];if(!t||t.type!==gk||"color"!==t.value||(t=e[e._i++]).type!==g_)return;let r=gE[t.value];if(!r)return;let n={mode:r},i=gG(e,!1);if(!i)return;let a=gx[r].channels;for(let e=0,t,r;e<a.length;e++)t=i[e],r=a[e],t.type!==gD&&(n[r]=t.type===gR?t.value:t.value/100,"alpha"===r&&(n[r]=Math.max(0,Math.min(1,n[r]))));return n}(r):void 0},gV=(z=(e,t,r)=>e+r*(t-e),e=>{let t=(e=>{let t=[];for(let r=0;r<e.length-1;r++){let n=e[r],i=e[r+1];void 0===n&&void 0===i?t.push(void 0):void 0!==n&&void 0!==i?t.push([n,i]):t.push(void 0!==n?[n,n]:[i,i])}return t})(e);return e=>{let r=e*t.length,n=e>=1?t.length-1:Math.max(Math.floor(r),0),i=t[n];return void 0===i?void 0:z(i[0],i[1],r-n)}}),gW=e=>{let t=!1,r=e.map(e=>void 0!==e?(t=!0,e):1);return t?r:e},gq={mode:"rgb",channels:["r","g","b","alpha"],parse:[function(e,t){if(!t||"rgb"!==t[0]&&"rgba"!==t[0])return;let r={mode:"rgb"},[,n,i,a,s]=t;if("hue"!==n.type&&"hue"!==i.type&&"hue"!==a.type)return n.type!==gD&&(r.r=n.type===gR?n.value/255:n.value/100),i.type!==gD&&(r.g=i.type===gR?i.value/255:i.value/100),a.type!==gD&&(r.b=a.type===gR?a.value/255:a.value/100),s.type!==gD&&(r.alpha=Math.min(1,Math.max(0,s.type===gR?s.value:s.value/100))),r},e=>{let t;return(t=e.match(gd))?gu(parseInt(t[1],16),t[1].length):void 0},e=>{let t,r={mode:"rgb"};if(t=e.match(gv))void 0!==t[1]&&(r.r=t[1]/255),void 0!==t[2]&&(r.g=t[2]/255),void 0!==t[3]&&(r.b=t[3]/255);else{if(!(t=e.match(gb)))return;void 0!==t[1]&&(r.r=t[1]/100),void 0!==t[2]&&(r.g=t[2]/100),void 0!==t[3]&&(r.b=t[3]/100)}return void 0!==t[4]?r.alpha=Math.max(0,Math.min(1,t[4]/100)):void 0!==t[5]&&(r.alpha=Math.max(0,Math.min(1,+t[5]))),r},e=>gu(gc[e.toLowerCase()],6),e=>"transparent"===e?{mode:"rgb",r:0,g:0,b:0,alpha:0}:void 0,"srgb"],serialize:"srgb",interpolate:{r:gV,g:gV,b:gV,alpha:{use:gV,fixup:gW}},gamut:!0,white:{r:1,g:1,b:1},black:{r:0,g:0,b:0}},gY=(e=0)=>Math.pow(Math.abs(e),563/256)*Math.sign(e),gJ=e=>{let t=gY(e.r),r=gY(e.g),n=gY(e.b),i={mode:"xyz65",x:.5766690429101305*t+.1855582379065463*r+.1882286462349947*n,y:.297344975250536*t+.6273635662554661*r+.0752914584939979*n,z:.0270313613864123*t+.0706888525358272*r+.9913375368376386*n};return void 0!==e.alpha&&(i.alpha=e.alpha),i},gK=e=>Math.pow(Math.abs(e),256/563)*Math.sign(e),gX=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i={mode:"a98",r:gK(2.0415879038107465*e-.5650069742788597*t-.3447313507783297*r),g:gK(-.9692436362808798*e+1.8759675015077206*t+.0415550574071756*r),b:gK(.0134442806320312*e-.1183623922310184*t+1.0151749943912058*r)};return void 0!==n&&(i.alpha=n),i},gZ=(e=0)=>{let t=Math.abs(e);return t<=.04045?e/12.92:(Math.sign(e)||1)*Math.pow((t+.055)/1.055,2.4)},g$=({r:e,g:t,b:r,alpha:n})=>{let i={mode:"lrgb",r:gZ(e),g:gZ(t),b:gZ(r)};return void 0!==n&&(i.alpha=n),i},g0=e=>{let{r:t,g:r,b:n,alpha:i}=g$(e),a={mode:"xyz65",x:.4123907992659593*t+.357584339383878*r+.1804807884018343*n,y:.2126390058715102*t+.715168678767756*r+.0721923153607337*n,z:.0193308187155918*t+.119194779794626*r+.9505321522496607*n};return void 0!==i&&(a.alpha=i),a},g1=(e=0)=>{let t=Math.abs(e);return t>.0031308?(Math.sign(e)||1)*(1.055*Math.pow(t,1/2.4)-.055):12.92*e},g2=({r:e,g:t,b:r,alpha:n},i="rgb")=>{let a={mode:i,r:g1(e),g:g1(t),b:g1(r)};return void 0!==n&&(a.alpha=n),a},g3=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=g2({r:3.2409699419045226*e-1.537383177570094*t-.4986107602930034*r,g:-.9692436362808796*e+1.8759675015077204*t+.0415550574071756*r,b:.0556300796969936*e-.2039769588889765*t+1.0569715142428784*r});return void 0!==n&&(i.alpha=n),i},g4={...gq,mode:"a98",parse:["a98-rgb"],serialize:"a98-rgb",fromMode:{rgb:e=>gX(g0(e)),xyz65:gX},toMode:{rgb:e=>g3(gJ(e)),xyz65:gJ}},g5=e=>(e%=360)<0?e+360:e,g9=e=>{let t;return t=e=>180>=Math.abs(e)?e:e-360*Math.sign(e),e.map((r,n,i)=>{if(void 0===r)return r;let a=g5(r);return 0===n||void 0===e[n-1]?a:t(a-g5(i[n-1]))}).reduce((e,t)=>(e.length&&void 0!==t&&void 0!==e[e.length-1]?e.push(t+e[e.length-1]):e.push(t),e),[])},g8=[-.14861,1.78277,-.29227,-.90649,1.97294,0],g6=Math.PI/180,g7=180/Math.PI,me=g8["3"]*g8["4"],mt=g8["1"]*g8["4"],mr=g8["1"]*g8["2"]-g8["0"]*g8["3"],mn=(e,t)=>{if(void 0===e.h||void 0===t.h||!e.s||!t.s)return 0;let r=g5(e.h),n=Math.sin((g5(t.h)-r+360)/2*Math.PI/180);return 2*Math.sqrt(e.s*t.s)*n},mi=(e,t)=>{if(void 0===e.h||void 0===t.h||!e.c||!t.c)return 0;let r=g5(e.h),n=Math.sin((g5(t.h)-r+360)/2*Math.PI/180);return 2*Math.sqrt(e.c*t.c)*n},ma=e=>{let t=e.reduce((e,t)=>{if(void 0!==t){let r=t*Math.PI/180;e.sin+=Math.sin(r),e.cos+=Math.cos(r)}return e},{sin:0,cos:0}),r=180*Math.atan2(t.sin,t.cos)/Math.PI;return r<0?360+r:r},ms={mode:"cubehelix",channels:["h","s","l","alpha"],parse:["--cubehelix"],serialize:"--cubehelix",ranges:{h:[0,360],s:[0,4.614],l:[0,1]},fromMode:{rgb:({r:e,g:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=(mr*r+e*me-t*mt)/(mr+me-mt),a=r-i,s=(g8["4"]*(t-i)-g8["2"]*a)/g8["3"],o={mode:"cubehelix",l:i,s:0===i||1===i?void 0:Math.sqrt(a*a+s*s)/(g8["4"]*i*(1-i))};return o.s&&(o.h=Math.atan2(s,a)*g7-120),void 0!==n&&(o.alpha=n),o}},toMode:{rgb:({h:e,s:t,l:r,alpha:n})=>{let i={mode:"rgb"};void 0===r&&(r=0);let a=void 0===t?0:t*r*(1-r),s=Math.cos(e=(void 0===e?0:e+120)*g6),o=Math.sin(e);return i.r=r+a*(g8["0"]*s+g8["1"]*o),i.g=r+a*(g8["2"]*s+g8["3"]*o),i.b=r+a*(g8["4"]*s+g8["5"]*o),void 0!==n&&(i.alpha=n),i}},interpolate:{h:{use:gV,fixup:g9},s:gV,l:gV,alpha:{use:gV,fixup:gW}},difference:{h:mn},average:{h:ma}},mo=({l:e,a:t,b:r,alpha:n},i="lch")=>{void 0===t&&(t=0),void 0===r&&(r=0);let a=Math.sqrt(t*t+r*r),s={mode:i,l:e,c:a};return a&&(s.h=g5(180*Math.atan2(r,t)/Math.PI)),void 0!==n&&(s.alpha=n),s},ml=({l:e,c:t,h:r,alpha:n},i="lab")=>{void 0===r&&(r=0);let a={mode:i,l:e,a:t?t*Math.cos(r/180*Math.PI):0,b:t?t*Math.sin(r/180*Math.PI):0};return void 0!==n&&(a.alpha=n),a},mu={X:.3457/.3585,Y:1,Z:.8251046025104602},mc={X:.3127/.329,Y:1,Z:1.0890577507598784},md=e=>Math.pow(e,3)>.008856451679035631?Math.pow(e,3):(116*e-16)/903.2962962962963,mh=({l:e,a:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=(e+16)/116,a=t/500+i,s=i-r/200,o={mode:"xyz65",x:md(a)*mc.X,y:md(i)*mc.Y,z:md(s)*mc.Z};return void 0!==n&&(o.alpha=n),o},mp=e=>g3(mh(e)),mf=e=>e>.008856451679035631?Math.cbrt(e):(903.2962962962963*e+16)/116,mA=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=mf(e/mc.X),a=mf(t/mc.Y),s={mode:"lab65",l:116*a-16,a:500*(i-a),b:200*(a-mf(r/mc.Z))};return void 0!==n&&(s.alpha=n),s},mg=e=>{let t=mA(g0(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t},mm=26/180*Math.PI,mv=Math.cos(mm),mb=Math.sin(mm),my=100/Math.log(1.39),mw=({l:e,c:t,h:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i={mode:"lab65",l:(Math.exp(e/my)-1)/.0039},a=(Math.exp(.0435*t*1)-1)/.075,s=a*Math.cos(r/180*Math.PI-mm),o=a*Math.sin(r/180*Math.PI-mm);return i.a=s*mv-o/.83*mb,i.b=s*mb+o/.83*mv,void 0!==n&&(i.alpha=n),i},mx=({l:e,a:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=t*mv+r*mb,a=.83*(r*mv-t*mb),s={mode:"dlch",l:my/1*Math.log(1+.0039*e),c:Math.log(1+.075*Math.sqrt(i*i+a*a))/.0435};return s.c&&(s.h=g5((Math.atan2(a,i)+mm)/Math.PI*180)),void 0!==n&&(s.alpha=n),s},mC=e=>mw(mo(e,"dlch")),mE=e=>ml(mx(e),"dlab"),mS=RegExp(`^hsla?\\(\\s*${gg}${gm}${gp}${gm}${gp}\\s*(?:,\\s*${gf}\\s*)?\\)$`),mM={mode:"hsl",toMode:{rgb:function({h:e,s:t,l:r,alpha:n}){let i;e=g5(void 0!==e?e:0),void 0===t&&(t=0),void 0===r&&(r=0);let a=r+t*(r<.5?r:1-r),s=a-(a-r)*2*Math.abs(e/60%2-1);switch(Math.floor(e/60)){case 0:i={r:a,g:s,b:2*r-a};break;case 1:i={r:s,g:a,b:2*r-a};break;case 2:i={r:2*r-a,g:a,b:s};break;case 3:i={r:2*r-a,g:s,b:a};break;case 4:i={r:s,g:2*r-a,b:a};break;case 5:i={r:a,g:2*r-a,b:s};break;default:i={r:2*r-a,g:2*r-a,b:2*r-a}}return i.mode="rgb",void 0!==n&&(i.alpha=n),i}},fromMode:{rgb:function({r:e,g:t,b:r,alpha:n}){void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=Math.max(e,t,r),a=Math.min(e,t,r),s={mode:"hsl",s:i===a?0:(i-a)/(1-Math.abs(i+a-1)),l:.5*(i+a)};return i-a!=0&&(s.h=(i===e?(t-r)/(i-a)+(t<r)*6:i===t?(r-e)/(i-a)+2:(e-t)/(i-a)+4)*60),void 0!==n&&(s.alpha=n),s}},channels:["h","s","l","alpha"],ranges:{h:[0,360]},gamut:"rgb",parse:[function(e,t){if(!t||"hsl"!==t[0]&&"hsla"!==t[0])return;let r={mode:"hsl"},[,n,i,a,s]=t;if(n.type!==gD){if(n.type===gP)return;r.h=n.value}if(i.type!==gD){if("hue"===i.type)return;r.s=i.value/100}if(a.type!==gD){if("hue"===a.type)return;r.l=a.value/100}return s.type!==gD&&(r.alpha=Math.min(1,Math.max(0,s.type===gR?s.value:s.value/100))),r},e=>{let t=e.match(mS);if(!t)return;let r={mode:"hsl"};return void 0!==t[3]?r.h=+t[3]:void 0!==t[1]&&void 0!==t[2]&&(r.h=((e,t)=>{switch(t){case"deg":return+e;case"rad":return e/Math.PI*180;case"grad":return e/10*9;case"turn":return 360*e}})(t[1],t[2])),void 0!==t[4]&&(r.s=Math.min(Math.max(0,t[4]/100),1)),void 0!==t[5]&&(r.l=Math.min(Math.max(0,t[5]/100),1)),void 0!==t[6]?r.alpha=Math.max(0,Math.min(1,t[6]/100)):void 0!==t[7]&&(r.alpha=Math.max(0,Math.min(1,+t[7]))),r}],serialize:e=>`hsl(${void 0!==e.h?e.h:"none"} ${void 0!==e.s?100*e.s+"%":"none"} ${void 0!==e.l?100*e.l+"%":"none"}${e.alpha<1?` / ${e.alpha}`:""})`,interpolate:{h:{use:gV,fixup:g9},s:gV,l:gV,alpha:{use:gV,fixup:gW}},difference:{h:mn},average:{h:ma}};function mI({h:e,s:t,v:r,alpha:n}){let i;e=g5(void 0!==e?e:0),void 0===t&&(t=0),void 0===r&&(r=0);let a=Math.abs(e/60%2-1);switch(Math.floor(e/60)){case 0:i={r:r,g:r*(1-t*a),b:r*(1-t)};break;case 1:i={r:r*(1-t*a),g:r,b:r*(1-t)};break;case 2:i={r:r*(1-t),g:r,b:r*(1-t*a)};break;case 3:i={r:r*(1-t),g:r*(1-t*a),b:r};break;case 4:i={r:r*(1-t*a),g:r*(1-t),b:r};break;case 5:i={r:r,g:r*(1-t),b:r*(1-t*a)};break;default:i={r:r*(1-t),g:r*(1-t),b:r*(1-t)}}return i.mode="rgb",void 0!==n&&(i.alpha=n),i}function mB({r:e,g:t,b:r,alpha:n}){void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=Math.max(e,t,r),a=Math.min(e,t,r),s={mode:"hsv",s:0===i?0:1-a/i,v:i};return i-a!=0&&(s.h=(i===e?(t-r)/(i-a)+(t<r)*6:i===t?(r-e)/(i-a)+2:(e-t)/(i-a)+4)*60),void 0!==n&&(s.alpha=n),s}let mT={mode:"hsv",toMode:{rgb:mI},parse:["--hsv"],serialize:"--hsv",fromMode:{rgb:mB},channels:["h","s","v","alpha"],ranges:{h:[0,360]},gamut:"rgb",interpolate:{h:{use:gV,fixup:g9},s:gV,v:gV,alpha:{use:gV,fixup:gW}},difference:{h:mn},average:{h:ma}};function mk(e){if(e<0)return 0;let t=Math.pow(e,.012683313515655966);return 1e4*Math.pow(Math.max(0,t-.8359375)/(18.8515625-18.6875*t),6.277394636015326)}function m_(e){if(e<0)return 0;let t=Math.pow(e/1e4,.1593017578125);return Math.pow((.8359375+18.8515625*t)/(1+18.6875*t),78.84375)}let mR=e=>Math.max(e/203,0),mP=({i:e,t,p:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=mk(e+.008609037037932761*t+.11102962500302593*r),a=mk(e-.00860903703793275*t-.11102962500302599*r),s=mk(e+.5600313357106791*t-.32062717498731885*r),o={mode:"xyz65",x:mR(2.070152218389422*i-1.3263473389671556*a+.2066510476294051*s),y:mR(.3647385209748074*i+.680566024947227*a-.0453045459220346*s),z:mR(-.049747207535812*i-.0492609666966138*a+1.1880659249923042*s)};return void 0!==n&&(o.alpha=n),o},mD=(e=0)=>Math.max(203*e,0),mL=({x:e,y:t,z:r,alpha:n})=>{let i=mD(e),a=mD(t),s=mD(r),o=m_(.3592832590121217*i+.6976051147779502*a-.0358915932320289*s),l=m_(-.1920808463704995*i+1.1004767970374323*a+.0753748658519118*s),u=m_(.0070797844607477*i+.0748396662186366*a+.8433265453898765*s),c={mode:"itp",i:.5*o+.5*l,t:1.61376953125*o-3.323486328125*l+1.709716796875*u,p:4.378173828125*o-4.24560546875*l-.132568359375*u};return void 0!==n&&(c.alpha=n),c},mF=e=>{if(e<0)return 0;let t=Math.pow(e/1e4,.1593017578125);return Math.pow((.8359375+18.8515625*t)/(1+18.6875*t),134.03437499999998)},mO=(e=0)=>Math.max(203*e,0),mN=({x:e,y:t,z:r,alpha:n})=>{e=mO(e),t=mO(t);let i=1.15*e-.15*(r=mO(r)),a=.66*t+.34*e,s=mF(.41478972*i+.579999*a+.014648*r),o=mF(-.20151*i+1.120649*a+.0531008*r),l=mF(-.0166008*i+.2648*a+.6684799*r),u=(s+o)/2,c={mode:"jab",j:.44*u/(1-.56*u)-16295499532821565e-27,a:3.524*s-4.066708*o+.542708*l,b:.199076*s+1.096799*o-1.295875*l};return void 0!==n&&(c.alpha=n),c},mQ=e=>{if(e<0)return 0;let t=Math.pow(e,.007460772656268216);return 1e4*Math.pow((.8359375-t)/(18.6875*t-18.8515625),6.277394636015326)},mU=({j:e,a:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=(e+16295499532821565e-27)/(.44+.56*(e+16295499532821565e-27)),a=mQ(i+.13860504*t+.058047316*r),s=mQ(i-.13860504*t-.058047316*r),o=mQ(i-.096019242*t-.8118919*r),l={mode:"xyz65",x:(1.661373024652174*a-.914523081304348*s+.23136208173913045*o)/203,y:(-.3250758611844533*a+1.571847026732543*s-.21825383453227928*o)/203,z:(-.090982811*a-.31272829*s+1.5227666*o)/203};return void 0!==n&&(l.alpha=n),l},mz=e=>{let t=mN(g0(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t},mH=e=>g3(mU(e)),mG=({j:e,a:t,b:r,alpha:n})=>{void 0===t&&(t=0),void 0===r&&(r=0);let i=Math.sqrt(t*t+r*r),a={mode:"jch",j:e,c:i};return i&&(a.h=g5(180*Math.atan2(r,t)/Math.PI)),void 0!==n&&(a.alpha=n),a},mj=({j:e,c:t,h:r,alpha:n})=>{void 0===r&&(r=0);let i={mode:"jab",j:e,a:t?t*Math.cos(r/180*Math.PI):0,b:t?t*Math.sin(r/180*Math.PI):0};return void 0!==n&&(i.alpha=n),i},mV=e=>Math.pow(e,3)>.008856451679035631?Math.pow(e,3):(116*e-16)/903.2962962962963,mW=({l:e,a:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=(e+16)/116,a=t/500+i,s=i-r/200,o={mode:"xyz50",x:mV(a)*mu.X,y:mV(i)*mu.Y,z:mV(s)*mu.Z};return void 0!==n&&(o.alpha=n),o},mq=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=g2({r:3.1341359569958707*e-1.6173863321612538*t-.4906619460083532*r,g:-.978795502912089*e+1.916254567259524*t+.03344273116131949*r,b:.07195537988411677*e-.2289768264158322*t+1.405386058324125*r});return void 0!==n&&(i.alpha=n),i},mY=e=>mq(mW(e)),mJ=e=>{let{r:t,g:r,b:n,alpha:i}=g$(e),a={mode:"xyz50",x:.436065742824811*t+.3851514688337912*r+.14307845442264197*n,y:.22249319175623702*t+.7168870538238823*r+.06061979053616537*n,z:.013923904500943465*t+.09708128566574634*r+.7140993584005155*n};return void 0!==i&&(a.alpha=i),a},mK=e=>e>.008856451679035631?Math.cbrt(e):(903.2962962962963*e+16)/116,mX=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=mK(e/mu.X),a=mK(t/mu.Y),s={mode:"lab",l:116*a-16,a:500*(i-a),b:200*(a-mK(r/mu.Z))};return void 0!==n&&(s.alpha=n),s},mZ=e=>{let t=mX(mJ(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t},m$={mode:"lab",toMode:{xyz50:mW,rgb:mY},fromMode:{xyz50:mX,rgb:mZ},channels:["l","a","b","alpha"],ranges:{l:[0,100],a:[-125,125],b:[-125,125]},parse:[function(e,t){if(!t||"lab"!==t[0])return;let r={mode:"lab"},[,n,i,a,s]=t;if("hue"!==n.type&&"hue"!==i.type&&"hue"!==a.type)return n.type!==gD&&(r.l=Math.min(Math.max(0,n.value),100)),i.type!==gD&&(r.a=i.type===gR?i.value:125*i.value/100),a.type!==gD&&(r.b=a.type===gR?a.value:125*a.value/100),s.type!==gD&&(r.alpha=Math.min(1,Math.max(0,s.type===gR?s.value:s.value/100))),r}],serialize:e=>`lab(${void 0!==e.l?e.l:"none"} ${void 0!==e.a?e.a:"none"} ${void 0!==e.b?e.b:"none"}${e.alpha<1?` / ${e.alpha}`:""})`,interpolate:{l:gV,a:gV,b:gV,alpha:{use:gV,fixup:gW}}},m0={...m$,mode:"lab65",parse:["--lab-d65"],serialize:"--lab-d65",toMode:{xyz65:mh,rgb:mp},fromMode:{xyz65:mA,rgb:mg},ranges:{l:[0,100],a:[-125,125],b:[-125,125]}},m1={mode:"lch",toMode:{lab:ml,rgb:e=>mY(ml(e))},fromMode:{rgb:e=>mo(mZ(e)),lab:mo},channels:["l","c","h","alpha"],ranges:{l:[0,100],c:[0,150],h:[0,360]},parse:[function(e,t){if(!t||"lch"!==t[0])return;let r={mode:"lch"},[,n,i,a,s]=t;if(n.type!==gD){if("hue"===n.type)return;r.l=Math.min(Math.max(0,n.value),100)}if(i.type!==gD&&(r.c=Math.max(0,i.type===gR?i.value:150*i.value/100)),a.type!==gD){if(a.type===gP)return;r.h=a.value}return s.type!==gD&&(r.alpha=Math.min(1,Math.max(0,s.type===gR?s.value:s.value/100))),r}],serialize:e=>`lch(${void 0!==e.l?e.l:"none"} ${void 0!==e.c?e.c:"none"} ${void 0!==e.h?e.h:"none"}${e.alpha<1?` / ${e.alpha}`:""})`,interpolate:{h:{use:gV,fixup:g9},c:gV,l:gV,alpha:{use:gV,fixup:gW}},difference:{h:mi},average:{h:ma}},m2={...m1,mode:"lch65",parse:["--lch-d65"],serialize:"--lch-d65",toMode:{lab65:e=>ml(e,"lab65"),rgb:e=>mp(ml(e,"lab65"))},fromMode:{rgb:e=>mo(mg(e),"lch65"),lab65:e=>mo(e,"lch65")},ranges:{l:[0,100],c:[0,150],h:[0,360]}},m3=({l:e,u:t,v:r,alpha:n})=>{void 0===t&&(t=0),void 0===r&&(r=0);let i=Math.sqrt(t*t+r*r),a={mode:"lchuv",l:e,c:i};return i&&(a.h=g5(180*Math.atan2(r,t)/Math.PI)),void 0!==n&&(a.alpha=n),a},m4=({l:e,c:t,h:r,alpha:n})=>{void 0===r&&(r=0);let i={mode:"luv",l:e,u:t?t*Math.cos(r/180*Math.PI):0,v:t?t*Math.sin(r/180*Math.PI):0};return void 0!==n&&(i.alpha=n),i},m5=(e,t,r)=>4*e/(e+15*t+3*r),m9=(e,t,r)=>9*t/(e+15*t+3*r),m8=m5(mu.X,mu.Y,mu.Z),m6=m9(mu.X,mu.Y,mu.Z),m7=({x:e,y:t,z:r,alpha:n})=>{let i;void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let a=(i=t/mu.Y)<=.008856451679035631?903.2962962962963*i:116*Math.cbrt(i)-16,s=m5(e,t,r),o=m9(e,t,r);isFinite(s)&&isFinite(o)?(s=13*a*(s-m8),o=13*a*(o-m6)):a=s=o=0;let l={mode:"luv",l:a,u:s,v:o};return void 0!==n&&(l.alpha=n),l},ve=(H=mu.X,4*H/(H+15*mu.Y+3*mu.Z)),vt=(G=mu.X,9*(j=mu.Y)/(G+15*j+3*mu.Z)),vr=({l:e,u:t,v:r,alpha:n})=>{if(void 0===e&&(e=0),0===e)return{mode:"xyz50",x:0,y:0,z:0};void 0===t&&(t=0),void 0===r&&(r=0);let i=t/(13*e)+ve,a=r/(13*e)+vt,s=mu.Y*(e<=8?e/903.2962962962963:Math.pow((e+16)/116,3)),o={mode:"xyz50",x:9*i*s/(4*a),y:s,z:s*(12-3*i-20*a)/(4*a)};return void 0!==n&&(o.alpha=n),o},vn={...gq,mode:"lrgb",toMode:{rgb:g2},fromMode:{rgb:g$},parse:["srgb-linear"],serialize:"srgb-linear"},vi=({r:e,g:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=Math.cbrt(.412221469470763*e+.5363325372617348*t+.0514459932675022*r),a=Math.cbrt(.2119034958178252*e+.6806995506452344*t+.1073969535369406*r),s=Math.cbrt(.0883024591900564*e+.2817188391361215*t+.6299787016738222*r),o={mode:"oklab",l:.210454268309314*i+.7936177747023054*a-.0040720430116193*s,a:1.9779985324311684*i-2.42859224204858*a+.450593709617411*s,b:.0259040424655478*i+.7827717124575296*a-.8086757549230774*s};return void 0!==n&&(o.alpha=n),o},va=e=>{let t=vi(g$(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t},vs=({l:e,a:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=Math.pow(e+.3963377773761749*t+.2158037573099136*r,3),a=Math.pow(e-.1055613458156586*t-.0638541728258133*r,3),s=Math.pow(e-.0894841775298119*t-1.2914855480194092*r,3),o={mode:"lrgb",r:4.076741636075957*i-3.3077115392580616*a+.2309699031821044*s,g:-1.2684379732850317*i+2.6097573492876887*a-.3413193760026573*s,b:-.0041960761386756*i-.7034186179359362*a+1.7076146940746117*s};return void 0!==n&&(o.alpha=n),o},vo=e=>g2(vs(e));function vl(e){return .5*(1.206/1.03*e-.206+Math.sqrt((1.206/1.03*e-.206)*(1.206/1.03*e-.206)+1.206/1.03*.12*e))}function vu(e){return(e*e+.206*e)/(1.206/1.03*(e+.03))}function vc(e,t){let r,n,i,a,s,o,l,u,c,d,h,p,f,A,g,m,v,b=(-1.88170328*e-.80936493*t>1?(r=1.19086277,n=1.76576728,i=.59662641,a=.75515197,s=.56771245,o=4.0767416621,l=-3.3077115913,u=.2309699292):1.81444104*e-1.19445276*t>1?(r=.73956515,n=-.45954404,i=.08285427,a=.1254107,s=.14503204,o=-1.2684380046,l=2.6097574011,u=-.3413193965):(r=1.35733652,n=-.00915799,i=-1.1513021,a=-.50559606,s=.00692167,o=-.0041960863,l=-.7034186147,u=1.707614701),c=r+n*e+i*t+a*e*e+s*e*t,d=.3963377774*e+.2158037573*t,h=-.1055613458*e-.0638541728*t,p=-.0894841775*e-1.291485548*t,m=o*((f=1+c*d)*f*f)+l*((A=1+c*h)*A*A)+u*((g=1+c*p)*g*g),c-=m*(v=3*d*f*f*o+3*h*A*A*l+3*p*g*g*u)/(v*v-.5*m*(6*d*d*f*o+6*h*h*A*l+6*p*p*g*u))),y=vs({l:1,a:b*e,b:b*t}),w=Math.cbrt(1/Math.max(y.r,y.g,y.b));return[w,w*b]}function vd(e,t,r=null){r||(r=vc(e,t));let n=r[0],i=r[1];return[i/n,i/(1-n)]}function vh(e,t,r){let n=vc(t,r),i=function(e,t,r,n,i,a=null){let s;if(a||(a=vc(e,t)),(r-i)*a[1]-(a[0]-i)*1<=0)s=a[1]*i/(+a[0]+a[1]*(i-r));else{s=a[1]*(i-1)/(+(a[0]-1)+a[1]*(i-r));{let n=r-i,a=.3963377774*e+.2158037573*t,o=-.1055613458*e-.0638541728*t,l=-.0894841775*e-1.291485548*t,u=n+ +a,c=n+ +o,d=n+ +l;{let e=i*(1-s)+s*r,t=+s,n=e+t*a,h=e+t*o,p=e+t*l,f=n*n*n,A=h*h*h,g=p*p*p,m=3*u*n*n,v=3*c*h*h,b=3*d*p*p,y=6*u*u*n,w=6*c*c*h,x=6*d*d*p,C=4.0767416621*f-3.3077115913*A+.2309699292*g-1,E=4.0767416621*m-3.3077115913*v+.2309699292*b,S=E/(E*E-.5*C*(4.0767416621*y-3.3077115913*w+.2309699292*x)),M=-C*S,I=-1.2684380046*f+2.6097574011*A-.3413193965*g-1,B=-1.2684380046*m+2.6097574011*v-.3413193965*b,T=B/(B*B-.5*I*(-1.2684380046*y+2.6097574011*w-.3413193965*x)),k=-I*T,_=-.0041960863*f-.7034186147*A+1.707614701*g-1,R=-.0041960863*m-.7034186147*v+1.707614701*b,P=R/(R*R-.5*_*(-.0041960863*y-.7034186147*w+1.707614701*x)),D=-_*P;s+=Math.min(M=S>=0?M:1e6,Math.min(k=T>=0?k:1e6,D=P>=0?D:1e6))}}}return s}(t,r,e,0,e,n),a=vd(t,r,n),s=.11516993+1/(7.4477897+4.1590124*r+t*(-2.19557347+1.75198401*r+t*(-2.13704948-10.02301043*r+t*(-4.24894561+5.38770819*r+4.69891013*t)))),o=.11239642+1/(1.6132032-.68124379*r+t*(.40370612+.90148123*r+t*(-.27087943+.6122399*r+t*(.00299215-.45399568*r-.14661872*t)))),l=i/Math.min(e*a[0],(1-e)*a[1]),u=e*s,c=(1-e)*o,d=.9*l*Math.sqrt(Math.sqrt(1/(1/(u*u*u*u)+1/(c*c*c*c))));return[Math.sqrt(1/(1/((u=.4*e)*u)+1/((c=(1-e)*.8)*c))),d,i]}function vp(e){let t,r=void 0!==e.l?e.l:0,n=void 0!==e.a?e.a:0,i=void 0!==e.b?e.b:0,a={mode:"okhsl",l:vl(r)};void 0!==e.alpha&&(a.alpha=e.alpha);let s=Math.sqrt(n*n+i*i);if(!s)return a.s=0,a;let[o,l,u]=vh(r,n/s,i/s);if(s<l){let e=.8*o;t=(s-0)/(e+(1-e/l)*(s-0))*.8}else{let e=.2*l*l*1.5625/o;t=.8+.2*((s-l)/(e+(1-e/(u-l))*(s-l)))}return t&&(a.s=t,a.h=g5(180*Math.atan2(i,n)/Math.PI)),a}function vf(e){let t,r,n,i,a=void 0!==e.h?e.h:0,s=void 0!==e.s?e.s:0,o=void 0!==e.l?e.l:0,l={mode:"oklab",l:vu(o)};if(void 0!==e.alpha&&(l.alpha=e.alpha),!s||1===o)return l.a=l.b=0,l;let u=Math.cos(a/180*Math.PI),c=Math.sin(a/180*Math.PI),[d,h,p]=vh(l.l,u,c);s<.8?(t=1.25*s,r=0,i=1-(n=.8*d)/h):(t=5*(s-.8),r=h,i=1-(n=.2*h*h*1.5625/d)/(p-h));let f=r+t*n/(1-i*t);return l.a=f*u,l.b=f*c,l}let vA={...mM,mode:"okhsl",channels:["h","s","l","alpha"],parse:["--okhsl"],serialize:"--okhsl",fromMode:{oklab:vp,rgb:e=>vp(va(e))},toMode:{oklab:vf,rgb:e=>vo(vf(e))}};function vg(e){let t=void 0!==e.l?e.l:0,r=void 0!==e.a?e.a:0,n=void 0!==e.b?e.b:0,i=Math.sqrt(r*r+n*n),a=i?r/i:1,s=i?n/i:1,[o,l]=vd(a,s),u=l/(i+t*l),c=u*t,d=u*i,h=vu(c),p=d*h/c,f=vs({l:h,a:a*p,b:s*p}),A=Math.cbrt(1/Math.max(f.r,f.g,f.b,0));t/=A;let g={mode:"okhsv",s:(i=i/A*vl(t)/t)?(.5+l)*d/(.5*l+l*(1-.5/o)*d):0,v:(t=vl(t))?t/c:0};return g.s&&(g.h=g5(180*Math.atan2(n,r)/Math.PI)),void 0!==e.alpha&&(g.alpha=e.alpha),g}function vm(e){let t={mode:"oklab"};void 0!==e.alpha&&(t.alpha=e.alpha);let r=void 0!==e.h?e.h:0,n=void 0!==e.s?e.s:0,i=void 0!==e.v?e.v:0,a=Math.cos(r/180*Math.PI),s=Math.sin(r/180*Math.PI),[o,l]=vd(a,s),u=1-.5/o,c=1-.5*n/(.5+l-l*u*n),d=n*l*.5/(.5+l-l*u*n),h=vu(c),p=d*h/c,f=vs({l:h,a:a*p,b:s*p}),A=Math.cbrt(1/Math.max(f.r,f.g,f.b,0)),g=vu(i*c),m=d*g/c;return t.l=g*A,t.a=m*a*A,t.b=m*s*A,t}let vv={...mT,mode:"okhsv",channels:["h","s","v","alpha"],parse:["--okhsv"],serialize:"--okhsv",fromMode:{oklab:vg,rgb:e=>vg(va(e))},toMode:{oklab:vm,rgb:e=>vo(vm(e))}},vb={...m$,mode:"oklab",toMode:{lrgb:vs,rgb:vo},fromMode:{lrgb:vi,rgb:va},ranges:{l:[0,1],a:[-.4,.4],b:[-.4,.4]},parse:[function(e,t){if(!t||"oklab"!==t[0])return;let r={mode:"oklab"},[,n,i,a,s]=t;if("hue"!==n.type&&"hue"!==i.type&&"hue"!==a.type)return n.type!==gD&&(r.l=Math.min(Math.max(0,n.type===gR?n.value:n.value/100),1)),i.type!==gD&&(r.a=i.type===gR?i.value:.4*i.value/100),a.type!==gD&&(r.b=a.type===gR?a.value:.4*a.value/100),s.type!==gD&&(r.alpha=Math.min(1,Math.max(0,s.type===gR?s.value:s.value/100))),r}],serialize:e=>`oklab(${void 0!==e.l?e.l:"none"} ${void 0!==e.a?e.a:"none"} ${void 0!==e.b?e.b:"none"}${e.alpha<1?` / ${e.alpha}`:""})`},vy={...m1,mode:"oklch",toMode:{oklab:e=>ml(e,"oklab"),rgb:e=>vo(ml(e,"oklab"))},fromMode:{rgb:e=>mo(va(e),"oklch"),oklab:e=>mo(e,"oklch")},parse:[function(e,t){if(!t||"oklch"!==t[0])return;let r={mode:"oklch"},[,n,i,a,s]=t;if(n.type!==gD){if("hue"===n.type)return;r.l=Math.min(Math.max(0,n.type===gR?n.value:n.value/100),1)}if(i.type!==gD&&(r.c=Math.max(0,i.type===gR?i.value:.4*i.value/100)),a.type!==gD){if(a.type===gP)return;r.h=a.value}return s.type!==gD&&(r.alpha=Math.min(1,Math.max(0,s.type===gR?s.value:s.value/100))),r}],serialize:e=>`oklch(${void 0!==e.l?e.l:"none"} ${void 0!==e.c?e.c:"none"} ${void 0!==e.h?e.h:"none"}${e.alpha<1?` / ${e.alpha}`:""})`,ranges:{l:[0,1],c:[0,.4],h:[0,360]}},vw=e=>{let{r:t,g:r,b:n,alpha:i}=g$(e),a={mode:"xyz65",x:.486570948648216*t+.265667693169093*r+.1982172852343625*n,y:.2289745640697487*t+.6917385218365062*r+.079286914093745*n,z:0*t+.0451133818589026*r+1.043944368900976*n};return void 0!==i&&(a.alpha=i),a},vx=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=g2({r:2.4934969119414263*e-.9313836179191242*t-.402710784450717*r,g:-.8294889695615749*e+1.7626640603183465*t+.0236246858419436*r,b:.0358458302437845*e-.0761723892680418*t+.9568845240076871*r},"p3");return void 0!==n&&(i.alpha=n),i},vC={...gq,mode:"p3",parse:["display-p3"],serialize:"display-p3",fromMode:{rgb:e=>vx(g0(e)),xyz65:vx},toMode:{rgb:e=>g3(vw(e)),xyz65:vw}},vE=e=>{let t=Math.abs(e);return t>=1/512?Math.sign(e)*Math.pow(t,1/1.8):16*e},vS=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i={mode:"prophoto",r:vE(1.3457868816471585*e-.2555720873797946*t-.0511018649755453*r),g:vE(-.5446307051249019*e+1.5082477428451466*t+.0205274474364214*r),b:vE(0*e+0*t+1.2119675456389452*r)};return void 0!==n&&(i.alpha=n),i},vM=(e=0)=>{let t=Math.abs(e);return t>=16/512?Math.sign(e)*Math.pow(t,1.8):e/16},vI=e=>{let t=vM(e.r),r=vM(e.g),n=vM(e.b),i={mode:"xyz50",x:.7977666449006423*t+.1351812974005331*r+.0313477341283922*n,y:.2880748288194013*t+.7118352342418731*r+899369387256e-16*n,z:0*t+0*r+.8251046025104602*n};return void 0!==e.alpha&&(i.alpha=e.alpha),i},vB={...gq,mode:"prophoto",parse:["prophoto-rgb"],serialize:"prophoto-rgb",fromMode:{xyz50:vS,rgb:e=>vS(mJ(e))},toMode:{xyz50:vI,rgb:e=>mq(vI(e))}},vT=e=>{let t=Math.abs(e);return t>.018053968510807?(Math.sign(e)||1)*(1.09929682680944*Math.pow(t,.45)-(1.09929682680944-1)):4.5*e},vk=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i={mode:"rec2020",r:vT(1.7166511879712683*e-.3556707837763925*t-.2533662813736599*r),g:vT(-.6666843518324893*e+1.6164812366349395*t+.0157685458139111*r),b:vT(.0176398574453108*e-.0427706132578085*t+.9421031212354739*r)};return void 0!==n&&(i.alpha=n),i},v_=(e=0)=>{let t=Math.abs(e);return t<.08124285829863151?e/4.5:(Math.sign(e)||1)*Math.pow((t+1.09929682680944-1)/1.09929682680944,1/.45)},vR=e=>{let t=v_(e.r),r=v_(e.g),n=v_(e.b),i={mode:"xyz65",x:.6369580483012911*t+.1446169035862083*r+.1688809751641721*n,y:.262700212011267*t+.6779980715188708*r+.059301716469862*n,z:0*t+.0280726930490874*r+1.0609850577107909*n};return void 0!==e.alpha&&(i.alpha=e.alpha),i},vP={...gq,mode:"rec2020",fromMode:{xyz65:vk,rgb:e=>vk(g0(e))},toMode:{xyz65:vR,rgb:e=>g3(vR(e))},parse:["rec2020"],serialize:"rec2020"},vD=Math.cbrt(.0037930732552754493),vL=e=>Math.cbrt(e)-vD,vF=e=>Math.pow(e+vD,3),vO={mode:"xyb",channels:["x","y","b","alpha"],parse:["--xyb"],serialize:"--xyb",toMode:{rgb:({x:e,y:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=vF(e+t)-.0037930732552754493,a=vF(t-e)-.0037930732552754493,s=vF(r+t)-.0037930732552754493,o=g2({r:11.031566904639861*i-9.866943908131562*a-.16462299650829934*s,g:-3.2541473810744237*i+4.418770377582723*a-.16462299650829934*s,b:-3.6588512867136815*i+2.7129230459360922*a+1.9459282407775895*s});return void 0!==n&&(o.alpha=n),o}},fromMode:{rgb:e=>{let{r:t,g:r,b:n,alpha:i}=g$(e),a=vL(.3*t+.622*r+.078*n+.0037930732552754493),s=vL(.23*t+.692*r+.078*n+.0037930732552754493),o={mode:"xyb",x:(a-s)/2,y:(a+s)/2,b:vL(.2434226892454782*t+.2047674442449682*r+.5518098665095535*n+.0037930732552754493)-(a+s)/2};return void 0!==i&&(o.alpha=i),o}},ranges:{x:[-.0154,.0281],y:[0,.8453],b:[-.2778,.388]},interpolate:{x:gV,y:gV,b:gV,alpha:{use:gV,fixup:gW}}},vN={mode:"yiq",toMode:{rgb:({y:e,i:t,q:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i={mode:"rgb",r:e+.95608445*t+.6208885*r,g:e-.27137664*t-.6486059*r,b:e-1.10561724*t+1.70250126*r};return void 0!==n&&(i.alpha=n),i}},fromMode:{rgb:({r:e,g:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i={mode:"yiq",y:.29889531*e+.58662247*t+.11448223*r,i:.59597799*e-.2741761*t-.32180189*r,q:.21147017*e-.52261711*t+.31114694*r};return void 0!==n&&(i.alpha=n),i}},channels:["y","i","q","alpha"],parse:["--yiq"],serialize:"--yiq",ranges:{i:[-.595,.595],q:[-.522,.522]},interpolate:{y:gV,i:gV,q:gV,alpha:{use:gV,fixup:gW}}};((e=4)=>t=>{let r;return"number"==typeof t?Math.round(t*(r=Math.pow(10,r=e)))/r:t})(2);let vQ=e=>Math.round(255*Math.max(0,Math.min(1,e||0))),vU=gy("rgb");gy("hsl");let vz=e=>(e=>{if(void 0!==e)return"#"+(0x1000000|vQ(e.r)<<16|vQ(e.g)<<8|vQ(e.b)).toString(16).slice(1)})(vU(e));gM(g4),gM(ms),gM({mode:"dlab",parse:["--din99o-lab"],serialize:"--din99o-lab",toMode:{lab65:mC,rgb:e=>mp(mC(e))},fromMode:{lab65:mE,rgb:e=>mE(mg(e))},channels:["l","a","b","alpha"],ranges:{l:[0,100],a:[-40.09,45.501],b:[-40.469,44.344]},interpolate:{l:gV,a:gV,b:gV,alpha:{use:gV,fixup:gW}}}),gM({mode:"dlch",parse:["--din99o-lch"],serialize:"--din99o-lch",toMode:{lab65:mw,dlab:e=>ml(e,"dlab"),rgb:e=>mp(mw(e))},fromMode:{lab65:mx,dlab:e=>mo(e,"dlch"),rgb:e=>mx(mg(e))},channels:["l","c","h","alpha"],ranges:{l:[0,100],c:[0,51.484],h:[0,360]},interpolate:{l:gV,c:gV,h:{use:gV,fixup:g9},alpha:{use:gV,fixup:gW}},difference:{h:mi},average:{h:ma}}),gM({mode:"hsi",toMode:{rgb:function({h:e,s:t,i:r,alpha:n}){let i;e=g5(void 0!==e?e:0),void 0===t&&(t=0),void 0===r&&(r=0);let a=Math.abs(e/60%2-1);switch(Math.floor(e/60)){case 0:i={r:r*(1+t*(3/(2-a)-1)),g:r*(1+t*(3*(1-a)/(2-a)-1)),b:r*(1-t)};break;case 1:i={r:r*(1+t*(3*(1-a)/(2-a)-1)),g:r*(1+t*(3/(2-a)-1)),b:r*(1-t)};break;case 2:i={r:r*(1-t),g:r*(1+t*(3/(2-a)-1)),b:r*(1+t*(3*(1-a)/(2-a)-1))};break;case 3:i={r:r*(1-t),g:r*(1+t*(3*(1-a)/(2-a)-1)),b:r*(1+t*(3/(2-a)-1))};break;case 4:i={r:r*(1+t*(3*(1-a)/(2-a)-1)),g:r*(1-t),b:r*(1+t*(3/(2-a)-1))};break;case 5:i={r:r*(1+t*(3/(2-a)-1)),g:r*(1-t),b:r*(1+t*(3*(1-a)/(2-a)-1))};break;default:i={r:r*(1-t),g:r*(1-t),b:r*(1-t)}}return i.mode="rgb",void 0!==n&&(i.alpha=n),i}},parse:["--hsi"],serialize:"--hsi",fromMode:{rgb:function({r:e,g:t,b:r,alpha:n}){void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=Math.max(e,t,r),a=Math.min(e,t,r),s={mode:"hsi",s:e+t+r===0?0:1-3*a/(e+t+r),i:(e+t+r)/3};return i-a!=0&&(s.h=(i===e?(t-r)/(i-a)+(t<r)*6:i===t?(r-e)/(i-a)+2:(e-t)/(i-a)+4)*60),void 0!==n&&(s.alpha=n),s}},channels:["h","s","i","alpha"],ranges:{h:[0,360]},gamut:"rgb",interpolate:{h:{use:gV,fixup:g9},s:gV,i:gV,alpha:{use:gV,fixup:gW}},difference:{h:mn},average:{h:ma}}),gM(mM),gM(mT),gM({mode:"hwb",toMode:{rgb:function({h:e,w:t,b:r,alpha:n}){if(void 0===t&&(t=0),void 0===r&&(r=0),t+r>1){let e=t+r;t/=e,r/=e}return mI({h:e,s:1===r?1:1-t/(1-r),v:1-r,alpha:n})}},fromMode:{rgb:function(e){let t=mB(e);if(void 0===t)return;let r=void 0!==t.s?t.s:0,n=void 0!==t.v?t.v:0,i={mode:"hwb",w:(1-r)*n,b:1-n};return void 0!==t.h&&(i.h=t.h),void 0!==t.alpha&&(i.alpha=t.alpha),i}},channels:["h","w","b","alpha"],ranges:{h:[0,360]},gamut:"rgb",parse:[function(e,t){if(!t||"hwb"!==t[0])return;let r={mode:"hwb"},[,n,i,a,s]=t;if(n.type!==gD){if(n.type===gP)return;r.h=n.value}if(i.type!==gD){if("hue"===i.type)return;r.w=i.value/100}if(a.type!==gD){if("hue"===a.type)return;r.b=a.value/100}return s.type!==gD&&(r.alpha=Math.min(1,Math.max(0,s.type===gR?s.value:s.value/100))),r}],serialize:e=>`hwb(${void 0!==e.h?e.h:"none"} ${void 0!==e.w?100*e.w+"%":"none"} ${void 0!==e.b?100*e.b+"%":"none"}${e.alpha<1?` / ${e.alpha}`:""})`,interpolate:{h:{use:gV,fixup:g9},w:gV,b:gV,alpha:{use:gV,fixup:gW}},difference:{h:(e,t)=>{if(void 0===e.h||void 0===t.h)return 0;let r=g5(e.h),n=g5(t.h);return Math.abs(n-r)>180?r-(n-360*Math.sign(n-r)):n-r}},average:{h:ma}}),gM({mode:"itp",channels:["i","t","p","alpha"],parse:["--ictcp"],serialize:"--ictcp",toMode:{xyz65:mP,rgb:e=>g3(mP(e))},fromMode:{xyz65:mL,rgb:e=>mL(g0(e))},ranges:{i:[0,.581],t:[-.369,.272],p:[-.164,.331]},interpolate:{i:gV,t:gV,p:gV,alpha:{use:gV,fixup:gW}}}),gM({mode:"jab",channels:["j","a","b","alpha"],parse:["--jzazbz"],serialize:"--jzazbz",fromMode:{rgb:mz,xyz65:mN},toMode:{rgb:mH,xyz65:mU},ranges:{j:[0,.222],a:[-.109,.129],b:[-.185,.134]},interpolate:{j:gV,a:gV,b:gV,alpha:{use:gV,fixup:gW}}}),gM({mode:"jch",parse:["--jzczhz"],serialize:"--jzczhz",toMode:{jab:mj,rgb:e=>mH(mj(e))},fromMode:{rgb:e=>mG(mz(e)),jab:mG},channels:["j","c","h","alpha"],ranges:{j:[0,.221],c:[0,.19],h:[0,360]},interpolate:{h:{use:gV,fixup:g9},c:gV,j:gV,alpha:{use:gV,fixup:gW}},difference:{h:mi},average:{h:ma}}),gM(m$),gM(m0),gM(m1),gM(m2),gM({mode:"lchuv",toMode:{luv:m4,rgb:e=>mq(vr(m4(e)))},fromMode:{rgb:e=>m3(m7(mJ(e))),luv:m3},channels:["l","c","h","alpha"],parse:["--lchuv"],serialize:"--lchuv",ranges:{l:[0,100],c:[0,176.956],h:[0,360]},interpolate:{h:{use:gV,fixup:g9},c:gV,l:gV,alpha:{use:gV,fixup:gW}},difference:{h:mi},average:{h:ma}}),gM(vn),gM({mode:"luv",toMode:{xyz50:vr,rgb:e=>mq(vr(e))},fromMode:{xyz50:m7,rgb:e=>m7(mJ(e))},channels:["l","u","v","alpha"],parse:["--luv"],serialize:"--luv",ranges:{l:[0,100],u:[-84.936,175.042],v:[-125.882,87.243]},interpolate:{l:gV,u:gV,v:gV,alpha:{use:gV,fixup:gW}}}),gM(vA),gM(vv),gM(vb);let vH=gM(vy);gM(vC),gM(vB),gM(vP),gM(gq),gM(vO),gM({mode:"xyz50",parse:["xyz-d50"],serialize:"xyz-d50",toMode:{rgb:mq,lab:mX},fromMode:{rgb:mJ,lab:mW},channels:["x","y","z","alpha"],ranges:{x:[0,.964],y:[0,.999],z:[0,.825]},interpolate:{x:gV,y:gV,z:gV,alpha:{use:gV,fixup:gW}}}),gM({mode:"xyz65",toMode:{rgb:g3,xyz50:e=>{let{x:t,y:r,z:n,alpha:i}=e;void 0===t&&(t=0),void 0===r&&(r=0),void 0===n&&(n=0);let a={mode:"xyz50",x:1.0479298208405488*t+.0229467933410191*r-.0501922295431356*n,y:.0296278156881593*t+.990434484573249*r-.0170738250293851*n,z:-.0092430581525912*t+.0150551448965779*r+.7518742899580008*n};return void 0!==i&&(a.alpha=i),a}},fromMode:{rgb:g0,xyz50:e=>{let{x:t,y:r,z:n,alpha:i}=e;void 0===t&&(t=0),void 0===r&&(r=0),void 0===n&&(n=0);let a={mode:"xyz65",x:.9554734527042182*t-.0230985368742614*r+.0632593086610217*n,y:-.0283697069632081*t+1.0099954580058226*r+.021041398966943*n,z:.0123140016883199*t-.0205076964334779*r+1.3303659366080753*n};return void 0!==i&&(a.alpha=i),a}},ranges:{x:[0,.95],y:[0,1],z:[0,1.088]},channels:["x","y","z","alpha"],parse:["xyz","xyz-d65"],serialize:"xyz-d65",interpolate:{x:gV,y:gV,z:gV,alpha:{use:gV,fixup:gW}}}),gM(vN);var vG=i("../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/browser.js");let vj={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},vV={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},vW="attached",vq="detached",vY="srgb",vJ="srgb-linear",vK="linear",vX="srgb",vZ={COMPUTE:"compute",RENDER:"render"},v$={PERSPECTIVE:"perspective",LINEAR:"linear",FLAT:"flat"},v0={NORMAL:"normal",CENTROID:"centroid",SAMPLE:"sample",FIRST:"first",EITHER:"either"};function v1(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}let v2={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};function v3(e,t){return new v2[e](t)}function v4(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function v5(e){return document.createElementNS("http://www.w3.org/1999/xhtml",e)}function v9(){let e=v5("canvas");return e.style.display="block",e}let v8={},v6=null;function v7(e){v6=e}function be(){return v6}function bt(...e){let t="THREE."+e.shift();v6?v6("log",t,...e):console.log(t,...e)}function br(...e){let t="THREE."+e.shift();v6?v6("warn",t,...e):console.warn(t,...e)}function bn(...e){let t="THREE."+e.shift();v6?v6("error",t,...e):console.error(t,...e)}function bi(...e){let t=e.join(" ");t in v8||(v8[t]=!0,br(...e))}class ba{addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let r=this._listeners;void 0===r[e]&&(r[e]=[]),-1===r[e].indexOf(t)&&r[e].push(t)}hasEventListener(e,t){let r=this._listeners;return void 0!==r&&void 0!==r[e]&&-1!==r[e].indexOf(t)}removeEventListener(e,t){let r=this._listeners;if(void 0===r)return;let n=r[e];if(void 0!==n){let e=n.indexOf(t);-1!==e&&n.splice(e,1)}}dispatchEvent(e){let t=this._listeners;if(void 0===t)return;let r=t[e.type];if(void 0!==r){e.target=this;let t=r.slice(0);for(let r=0,n=t.length;r<n;r++)t[r].call(this,e);e.target=null}}}let bs=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"],bo=1234567,bl=Math.PI/180,bu=180/Math.PI;function bc(){let e=0xffffffff*Math.random()|0,t=0xffffffff*Math.random()|0,r=0xffffffff*Math.random()|0,n=0xffffffff*Math.random()|0;return(bs[255&e]+bs[e>>8&255]+bs[e>>16&255]+bs[e>>24&255]+"-"+bs[255&t]+bs[t>>8&255]+"-"+bs[t>>16&15|64]+bs[t>>24&255]+"-"+bs[63&r|128]+bs[r>>8&255]+"-"+bs[r>>16&255]+bs[r>>24&255]+bs[255&n]+bs[n>>8&255]+bs[n>>16&255]+bs[n>>24&255]).toLowerCase()}function bd(e,t,r){return Math.max(t,Math.min(r,e))}function bh(e,t){return(e%t+t)%t}function bp(e,t,r){return(1-r)*e+r*t}function bf(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return e/0xffffffff;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int32Array:return Math.max(e/0x7fffffff,-1);case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw Error("Invalid component type.")}}function bA(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return Math.round(0xffffffff*e);case Uint16Array:return Math.round(65535*e);case Uint8Array:return Math.round(255*e);case Int32Array:return Math.round(0x7fffffff*e);case Int16Array:return Math.round(32767*e);case Int8Array:return Math.round(127*e);default:throw Error("Invalid component type.")}}let bg={DEG2RAD:bl,RAD2DEG:bu,generateUUID:bc,clamp:bd,euclideanModulo:bh,mapLinear:function(e,t,r,n,i){return n+(e-t)*(i-n)/(r-t)},inverseLerp:function(e,t,r){return e!==t?(r-e)/(t-e):0},lerp:bp,damp:function(e,t,r,n){return bp(e,t,1-Math.exp(-r*n))},pingpong:function(e,t=1){return t-Math.abs(bh(e,2*t)-t)},smoothstep:function(e,t,r){return e<=t?0:e>=r?1:(e=(e-t)/(r-t))*e*(3-2*e)},smootherstep:function(e,t,r){return e<=t?0:e>=r?1:(e=(e-t)/(r-t))*e*e*(e*(6*e-15)+10)},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},seededRandom:function(e){void 0!==e&&(bo=e);let t=bo+=0x6d2b79f5;return t=Math.imul(t^t>>>15,1|t),(((t^=t+Math.imul(t^t>>>7,61|t))^t>>>14)>>>0)/0x100000000},degToRad:function(e){return e*bl},radToDeg:function(e){return e*bu},isPowerOfTwo:function(e){return(e&e-1)==0&&0!==e},ceilPowerOfTwo:function(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))},floorPowerOfTwo:function(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))},setQuaternionFromProperEuler:function(e,t,r,n,i){let a=Math.cos,s=Math.sin,o=a(r/2),l=s(r/2),u=a((t+n)/2),c=s((t+n)/2),d=a((t-n)/2),h=s((t-n)/2),p=a((n-t)/2),f=s((n-t)/2);switch(i){case"XYX":e.set(o*c,l*d,l*h,o*u);break;case"YZY":e.set(l*h,o*c,l*d,o*u);break;case"ZXZ":e.set(l*d,l*h,o*c,o*u);break;case"XZX":e.set(o*c,l*f,l*p,o*u);break;case"YXY":e.set(l*p,o*c,l*f,o*u);break;case"ZYZ":e.set(l*f,l*p,o*c,o*u);break;default:br("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}},normalize:bA,denormalize:bf};class bm{constructor(e=0,t=0){bm.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){let t=this.x,r=this.y,n=e.elements;return this.x=n[0]*t+n[3]*r+n[6],this.y=n[1]*t+n[4]*r+n[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=bd(this.x,e.x,t.x),this.y=bd(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=bd(this.x,e,t),this.y=bd(this.y,e,t),this}clampLength(e,t){let r=this.length();return this.divideScalar(r||1).multiplyScalar(bd(r,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());return 0===t?Math.PI/2:Math.acos(bd(this.dot(e)/t,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,r=this.y-e.y;return t*t+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,r){return this.x=e.x+(t.x-e.x)*r,this.y=e.y+(t.y-e.y)*r,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let r=Math.cos(t),n=Math.sin(t),i=this.x-e.x,a=this.y-e.y;return this.x=i*r-a*n+e.x,this.y=i*n+a*r+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class bv{constructor(e=0,t=0,r=0,n=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=r,this._w=n}static slerpFlat(e,t,r,n,i,a,s){let o=r[n+0],l=r[n+1],u=r[n+2],c=r[n+3],d=i[a+0],h=i[a+1],p=i[a+2],f=i[a+3];if(s<=0){e[t+0]=o,e[t+1]=l,e[t+2]=u,e[t+3]=c;return}if(s>=1){e[t+0]=d,e[t+1]=h,e[t+2]=p,e[t+3]=f;return}if(c!==f||o!==d||l!==h||u!==p){let e=o*d+l*h+u*p+c*f;e<0&&(d=-d,h=-h,p=-p,f=-f,e=-e);let t=1-s;if(e<.9995){let r=Math.acos(e),n=Math.sin(r);o=o*(t=Math.sin(t*r)/n)+d*(s=Math.sin(s*r)/n),l=l*t+h*s,u=u*t+p*s,c=c*t+f*s}else{let e=1/Math.sqrt((o=o*t+d*s)*o+(l=l*t+h*s)*l+(u=u*t+p*s)*u+(c=c*t+f*s)*c);o*=e,l*=e,u*=e,c*=e}}e[t]=o,e[t+1]=l,e[t+2]=u,e[t+3]=c}static multiplyQuaternionsFlat(e,t,r,n,i,a){let s=r[n],o=r[n+1],l=r[n+2],u=r[n+3],c=i[a],d=i[a+1],h=i[a+2],p=i[a+3];return e[t]=s*p+u*c+o*h-l*d,e[t+1]=o*p+u*d+l*c-s*h,e[t+2]=l*p+u*h+s*d-o*c,e[t+3]=u*p-s*c-o*d-l*h,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,r,n){return this._x=e,this._y=t,this._z=r,this._w=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){let r=e._x,n=e._y,i=e._z,a=e._order,s=Math.cos,o=Math.sin,l=s(r/2),u=s(n/2),c=s(i/2),d=o(r/2),h=o(n/2),p=o(i/2);switch(a){case"XYZ":this._x=d*u*c+l*h*p,this._y=l*h*c-d*u*p,this._z=l*u*p+d*h*c,this._w=l*u*c-d*h*p;break;case"YXZ":this._x=d*u*c+l*h*p,this._y=l*h*c-d*u*p,this._z=l*u*p-d*h*c,this._w=l*u*c+d*h*p;break;case"ZXY":this._x=d*u*c-l*h*p,this._y=l*h*c+d*u*p,this._z=l*u*p+d*h*c,this._w=l*u*c-d*h*p;break;case"ZYX":this._x=d*u*c-l*h*p,this._y=l*h*c+d*u*p,this._z=l*u*p-d*h*c,this._w=l*u*c+d*h*p;break;case"YZX":this._x=d*u*c+l*h*p,this._y=l*h*c+d*u*p,this._z=l*u*p-d*h*c,this._w=l*u*c-d*h*p;break;case"XZY":this._x=d*u*c-l*h*p,this._y=l*h*c-d*u*p,this._z=l*u*p+d*h*c,this._w=l*u*c+d*h*p;break;default:br("Quaternion: .setFromEuler() encountered an unknown order: "+a)}return!0===t&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let r=t/2,n=Math.sin(r);return this._x=e.x*n,this._y=e.y*n,this._z=e.z*n,this._w=Math.cos(r),this._onChangeCallback(),this}setFromRotationMatrix(e){let t=e.elements,r=t[0],n=t[4],i=t[8],a=t[1],s=t[5],o=t[9],l=t[2],u=t[6],c=t[10],d=r+s+c;if(d>0){let e=.5/Math.sqrt(d+1);this._w=.25/e,this._x=(u-o)*e,this._y=(i-l)*e,this._z=(a-n)*e}else if(r>s&&r>c){let e=2*Math.sqrt(1+r-s-c);this._w=(u-o)/e,this._x=.25*e,this._y=(n+a)/e,this._z=(i+l)/e}else if(s>c){let e=2*Math.sqrt(1+s-r-c);this._w=(i-l)/e,this._x=(n+a)/e,this._y=.25*e,this._z=(o+u)/e}else{let e=2*Math.sqrt(1+c-r-s);this._w=(a-n)/e,this._x=(i+l)/e,this._y=(o+u)/e,this._z=.25*e}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let r=e.dot(t)+1;return r<1e-8?(r=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0):(this._x=0,this._y=-e.z,this._z=e.y)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x),this._w=r,this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(bd(this.dot(e),-1,1)))}rotateTowards(e,t){let r=this.angleTo(e);if(0===r)return this;let n=Math.min(1,t/r);return this.slerp(e,n),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let r=e._x,n=e._y,i=e._z,a=e._w,s=t._x,o=t._y,l=t._z,u=t._w;return this._x=r*u+a*s+n*l-i*o,this._y=n*u+a*o+i*s-r*l,this._z=i*u+a*l+r*o-n*s,this._w=a*u-r*s-n*o-i*l,this._onChangeCallback(),this}slerp(e,t){if(t<=0)return this;if(t>=1)return this.copy(e);let r=e._x,n=e._y,i=e._z,a=e._w,s=this.dot(e);s<0&&(r=-r,n=-n,i=-i,a=-a,s=-s);let o=1-t;if(s<.9995){let e=Math.acos(s),l=Math.sin(e);o=Math.sin(o*e)/l,t=Math.sin(t*e)/l,this._x=this._x*o+r*t,this._y=this._y*o+n*t,this._z=this._z*o+i*t,this._w=this._w*o+a*t,this._onChangeCallback()}else this._x=this._x*o+r*t,this._y=this._y*o+n*t,this._z=this._z*o+i*t,this._w=this._w*o+a*t,this.normalize();return this}slerpQuaternions(e,t,r){return this.copy(e).slerp(t,r)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),r=Math.random(),n=Math.sqrt(1-r),i=Math.sqrt(r);return this.set(n*Math.sin(e),n*Math.cos(e),i*Math.sin(t),i*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class bb{constructor(e=0,t=0,r=0){bb.prototype.isVector3=!0,this.x=e,this.y=t,this.z=r}set(e,t,r){return void 0===r&&(r=this.z),this.x=e,this.y=t,this.z=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(bw.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(bw.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,r=this.y,n=this.z,i=e.elements;return this.x=i[0]*t+i[3]*r+i[6]*n,this.y=i[1]*t+i[4]*r+i[7]*n,this.z=i[2]*t+i[5]*r+i[8]*n,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,r=this.y,n=this.z,i=e.elements,a=1/(i[3]*t+i[7]*r+i[11]*n+i[15]);return this.x=(i[0]*t+i[4]*r+i[8]*n+i[12])*a,this.y=(i[1]*t+i[5]*r+i[9]*n+i[13])*a,this.z=(i[2]*t+i[6]*r+i[10]*n+i[14])*a,this}applyQuaternion(e){let t=this.x,r=this.y,n=this.z,i=e.x,a=e.y,s=e.z,o=e.w,l=2*(a*n-s*r),u=2*(s*t-i*n),c=2*(i*r-a*t);return this.x=t+o*l+a*c-s*u,this.y=r+o*u+s*l-i*c,this.z=n+o*c+i*u-a*l,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,r=this.y,n=this.z,i=e.elements;return this.x=i[0]*t+i[4]*r+i[8]*n,this.y=i[1]*t+i[5]*r+i[9]*n,this.z=i[2]*t+i[6]*r+i[10]*n,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=bd(this.x,e.x,t.x),this.y=bd(this.y,e.y,t.y),this.z=bd(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=bd(this.x,e,t),this.y=bd(this.y,e,t),this.z=bd(this.z,e,t),this}clampLength(e,t){let r=this.length();return this.divideScalar(r||1).multiplyScalar(bd(r,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,r){return this.x=e.x+(t.x-e.x)*r,this.y=e.y+(t.y-e.y)*r,this.z=e.z+(t.z-e.z)*r,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let r=e.x,n=e.y,i=e.z,a=t.x,s=t.y,o=t.z;return this.x=n*o-i*s,this.y=i*a-r*o,this.z=r*s-n*a,this}projectOnVector(e){let t=e.lengthSq();if(0===t)return this.set(0,0,0);let r=e.dot(this)/t;return this.copy(e).multiplyScalar(r)}projectOnPlane(e){return by.copy(this).projectOnVector(e),this.sub(by)}reflect(e){return this.sub(by.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());return 0===t?Math.PI/2:Math.acos(bd(this.dot(e)/t,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,r=this.y-e.y,n=this.z-e.z;return t*t+r*r+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,r){let n=Math.sin(t)*e;return this.x=n*Math.sin(r),this.y=Math.cos(t)*e,this.z=n*Math.cos(r),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,r){return this.x=e*Math.sin(t),this.y=r,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),r=this.setFromMatrixColumn(e,1).length(),n=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=r,this.z=n,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,4*t)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,3*t)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=Math.random()*Math.PI*2,t=2*Math.random()-1,r=Math.sqrt(1-t*t);return this.x=r*Math.cos(e),this.y=t,this.z=r*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}let by=new bb,bw=new bv;class bx{constructor(e,t,r,n,i,a,s,o,l){bx.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==e&&this.set(e,t,r,n,i,a,s,o,l)}set(e,t,r,n,i,a,s,o,l){let u=this.elements;return u[0]=e,u[1]=n,u[2]=s,u[3]=t,u[4]=i,u[5]=o,u[6]=r,u[7]=a,u[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,r=e.elements;return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t[4]=r[4],t[5]=r[5],t[6]=r[6],t[7]=r[7],t[8]=r[8],this}extractBasis(e,t,r){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),r.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let r=e.elements,n=t.elements,i=this.elements,a=r[0],s=r[3],o=r[6],l=r[1],u=r[4],c=r[7],d=r[2],h=r[5],p=r[8],f=n[0],A=n[3],g=n[6],m=n[1],v=n[4],b=n[7],y=n[2],w=n[5],x=n[8];return i[0]=a*f+s*m+o*y,i[3]=a*A+s*v+o*w,i[6]=a*g+s*b+o*x,i[1]=l*f+u*m+c*y,i[4]=l*A+u*v+c*w,i[7]=l*g+u*b+c*x,i[2]=d*f+h*m+p*y,i[5]=d*A+h*v+p*w,i[8]=d*g+h*b+p*x,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],r=e[1],n=e[2],i=e[3],a=e[4],s=e[5],o=e[6],l=e[7],u=e[8];return t*a*u-t*s*l-r*i*u+r*s*o+n*i*l-n*a*o}invert(){let e=this.elements,t=e[0],r=e[1],n=e[2],i=e[3],a=e[4],s=e[5],o=e[6],l=e[7],u=e[8],c=u*a-s*l,d=s*o-u*i,h=l*i-a*o,p=t*c+r*d+n*h;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);let f=1/p;return e[0]=c*f,e[1]=(n*l-u*r)*f,e[2]=(s*r-n*a)*f,e[3]=d*f,e[4]=(u*t-n*o)*f,e[5]=(n*i-s*t)*f,e[6]=h*f,e[7]=(r*o-l*t)*f,e[8]=(a*t-r*i)*f,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,r,n,i,a,s){let o=Math.cos(i),l=Math.sin(i);return this.set(r*o,r*l,-r*(o*a+l*s)+a+e,-n*l,n*o,-n*(-l*a+o*s)+s+t,0,0,1),this}scale(e,t){return this.premultiply(bC.makeScale(e,t)),this}rotate(e){return this.premultiply(bC.makeRotation(-e)),this}translate(e,t){return this.premultiply(bC.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),r=Math.sin(e);return this.set(t,-r,0,r,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,r=e.elements;for(let e=0;e<9;e++)if(t[e]!==r[e])return!1;return!0}fromArray(e,t=0){for(let r=0;r<9;r++)this.elements[r]=e[r+t];return this}toArray(e=[],t=0){let r=this.elements;return e[t]=r[0],e[t+1]=r[1],e[t+2]=r[2],e[t+3]=r[3],e[t+4]=r[4],e[t+5]=r[5],e[t+6]=r[6],e[t+7]=r[7],e[t+8]=r[8],e}clone(){return new this.constructor().fromArray(this.elements)}}let bC=new bx,bE=new bx().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),bS=new bx().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715),bM=(W=[.64,.33,.3,.6,.15,.06],q=[.2126,.7152,.0722],Y=[.3127,.329],(V={enabled:!0,workingColorSpace:vJ,spaces:{},convert:function(e,t,r){return!1!==this.enabled&&t!==r&&t&&r&&(this.spaces[t].transfer===vX&&(e.r=bI(e.r),e.g=bI(e.g),e.b=bI(e.b)),this.spaces[t].primaries!==this.spaces[r].primaries&&(e.applyMatrix3(this.spaces[t].toXYZ),e.applyMatrix3(this.spaces[r].fromXYZ)),this.spaces[r].transfer===vX&&(e.r=bB(e.r),e.g=bB(e.g),e.b=bB(e.b))),e},workingToColorSpace:function(e,t){return this.convert(e,this.workingColorSpace,t)},colorSpaceToWorking:function(e,t){return this.convert(e,t,this.workingColorSpace)},getPrimaries:function(e){return this.spaces[e].primaries},getTransfer:function(e){return""===e?vK:this.spaces[e].transfer},getToneMappingMode:function(e){return this.spaces[e].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(e,t=this.workingColorSpace){return e.fromArray(this.spaces[t].luminanceCoefficients)},define:function(e){Object.assign(this.spaces,e)},_getMatrix:function(e,t,r){return e.copy(this.spaces[t].toXYZ).multiply(this.spaces[r].fromXYZ)},_getDrawingBufferColorSpace:function(e){return this.spaces[e].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(e=this.workingColorSpace){return this.spaces[e].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(e,t){return bi("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),V.workingToColorSpace(e,t)},toWorkingColorSpace:function(e,t){return bi("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),V.colorSpaceToWorking(e,t)}}).define({[vJ]:{primaries:W,whitePoint:Y,transfer:vK,toXYZ:bE,fromXYZ:bS,luminanceCoefficients:q,workingColorSpaceConfig:{unpackColorSpace:vY},outputColorSpaceConfig:{drawingBufferColorSpace:vY}},[vY]:{primaries:W,whitePoint:Y,transfer:vX,toXYZ:bE,fromXYZ:bS,luminanceCoefficients:q,outputColorSpaceConfig:{drawingBufferColorSpace:vY}}}),V);function bI(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function bB(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}class bT{static getDataURL(e,t="image/png"){let r;if(/^data:/i.test(e.src)||"u"<typeof HTMLCanvasElement)return e.src;if(e instanceof HTMLCanvasElement)r=e;else{void 0===a&&(a=v5("canvas")),a.width=e.width,a.height=e.height;let t=a.getContext("2d");e instanceof ImageData?t.putImageData(e,0,0):t.drawImage(e,0,0,e.width,e.height),r=a}return r.toDataURL(t)}static sRGBToLinear(e){if("u">typeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap){let t=v5("canvas");t.width=e.width,t.height=e.height;let r=t.getContext("2d");r.drawImage(e,0,0,e.width,e.height);let n=r.getImageData(0,0,e.width,e.height),i=n.data;for(let e=0;e<i.length;e++)i[e]=255*bI(i[e]/255);return r.putImageData(n,0,0),t}if(!e.data)return br("ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),e;{let t=e.data.slice(0);for(let e=0;e<t.length;e++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[e]=Math.floor(255*bI(t[e]/255)):t[e]=bI(t[e]);return{data:t,width:e.width,height:e.height}}}}let bk=0;class b_{constructor(e=null){this.isSource=!0,Object.defineProperty(this,"id",{value:bk++}),this.uuid=bc(),this.data=e,this.dataReady=!0,this.version=0}getSize(e){let t=this.data;return"u">typeof HTMLVideoElement&&t instanceof HTMLVideoElement?e.set(t.videoWidth,t.videoHeight,0):"u">typeof VideoFrame&&t instanceof VideoFrame?e.set(t.displayHeight,t.displayWidth,0):null!==t?e.set(t.width,t.height,t.depth||0):e.set(0,0,0),e}set needsUpdate(e){!0===e&&this.version++}toJSON(e){let t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.images[this.uuid])return e.images[this.uuid];let r={uuid:this.uuid,url:""},n=this.data;if(null!==n){let e;if(Array.isArray(n)){e=[];for(let t=0,r=n.length;t<r;t++)n[t].isDataTexture?e.push(bR(n[t].image)):e.push(bR(n[t]))}else e=bR(n);r.url=e}return t||(e.images[this.uuid]=r),r}}function bR(e){return"u">typeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap?bT.getDataURL(e):e.data?{data:Array.from(e.data),width:e.width,height:e.height,type:e.data.constructor.name}:(br("Texture: Unable to serialize Texture."),{})}let bP=0,bD=new bb;class bL extends ba{constructor(e=bL.DEFAULT_IMAGE,t=bL.DEFAULT_MAPPING,r=1001,n=1001,i=1006,a=1008,s=1023,o=1009,l=bL.DEFAULT_ANISOTROPY,u=""){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:bP++}),this.uuid=bc(),this.name="",this.source=new b_(e),this.mipmaps=[],this.mapping=t,this.channel=0,this.wrapS=r,this.wrapT=n,this.magFilter=i,this.minFilter=a,this.anisotropy=l,this.format=s,this.internalFormat=null,this.type=o,this.offset=new bm(0,0),this.repeat=new bm(1,1),this.center=new bm(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new bx,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=u,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!e&&!!e.depth&&e.depth>1,this.pmremVersion=0}get width(){return this.source.getSize(bD).x}get height(){return this.source.getSize(bD).y}get depth(){return this.source.getSize(bD).z}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(let t in e){let r=e[t];if(void 0===r){br(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}let n=this[t];if(void 0===n){br(`Texture.setValues(): property '${t}' does not exist.`);continue}n&&r&&n.isVector2&&r.isVector2||n&&r&&n.isVector3&&r.isVector3||n&&r&&n.isMatrix3&&r.isMatrix3?n.copy(r):this[t]=r}}toJSON(e){let t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.textures[this.uuid])return e.textures[this.uuid];let r={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(r.userData=this.userData),t||(e.textures[this.uuid]=r),r}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(300!==this.mapping)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case 1e3:e.x=e.x-Math.floor(e.x);break;case 1001:e.x=e.x<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case 1e3:e.y=e.y-Math.floor(e.y);break;case 1001:e.y=e.y<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){!0===e&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){!0===e&&this.pmremVersion++}}bL.DEFAULT_IMAGE=null,bL.DEFAULT_MAPPING=300,bL.DEFAULT_ANISOTROPY=1;class bF{constructor(e=0,t=0,r=0,n=1){bF.prototype.isVector4=!0,this.x=e,this.y=t,this.z=r,this.w=n}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,r,n){return this.x=e,this.y=t,this.z=r,this.w=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,r=this.y,n=this.z,i=this.w,a=e.elements;return this.x=a[0]*t+a[4]*r+a[8]*n+a[12]*i,this.y=a[1]*t+a[5]*r+a[9]*n+a[13]*i,this.z=a[2]*t+a[6]*r+a[10]*n+a[14]*i,this.w=a[3]*t+a[7]*r+a[11]*n+a[15]*i,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,r,n,i,a=e.elements,s=a[0],o=a[4],l=a[8],u=a[1],c=a[5],d=a[9],h=a[2],p=a[6],f=a[10];if(.01>Math.abs(o-u)&&.01>Math.abs(l-h)&&.01>Math.abs(d-p)){if(.1>Math.abs(o+u)&&.1>Math.abs(l+h)&&.1>Math.abs(d+p)&&.1>Math.abs(s+c+f-3))return this.set(1,0,0,0),this;t=Math.PI;let e=(s+1)/2,a=(c+1)/2,A=(f+1)/2,g=(o+u)/4,m=(l+h)/4,v=(d+p)/4;return e>a&&e>A?e<.01?(r=0,n=.707106781,i=.707106781):(n=g/(r=Math.sqrt(e)),i=m/r):a>A?a<.01?(r=.707106781,n=0,i=.707106781):(r=g/(n=Math.sqrt(a)),i=v/n):A<.01?(r=.707106781,n=.707106781,i=0):(r=m/(i=Math.sqrt(A)),n=v/i),this.set(r,n,i,t),this}let A=Math.sqrt((p-d)*(p-d)+(l-h)*(l-h)+(u-o)*(u-o));return .001>Math.abs(A)&&(A=1),this.x=(p-d)/A,this.y=(l-h)/A,this.z=(u-o)/A,this.w=Math.acos((s+c+f-1)/2),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=bd(this.x,e.x,t.x),this.y=bd(this.y,e.y,t.y),this.z=bd(this.z,e.z,t.z),this.w=bd(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=bd(this.x,e,t),this.y=bd(this.y,e,t),this.z=bd(this.z,e,t),this.w=bd(this.w,e,t),this}clampLength(e,t){let r=this.length();return this.divideScalar(r||1).multiplyScalar(bd(r,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,r){return this.x=e.x+(t.x-e.x)*r,this.y=e.y+(t.y-e.y)*r,this.z=e.z+(t.z-e.z)*r,this.w=e.w+(t.w-e.w)*r,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class bO extends ba{constructor(e=1,t=1,r={}){super(),r=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:1006,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},r),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=r.depth,this.scissor=new bF(0,0,e,t),this.scissorTest=!1,this.viewport=new bF(0,0,e,t);const n=new bL({width:e,height:t,depth:r.depth});this.textures=[];const i=r.count;for(let e=0;e<i;e++)this.textures[e]=n.clone(),this.textures[e].isRenderTargetTexture=!0,this.textures[e].renderTarget=this;this._setTextureOptions(r),this.depthBuffer=r.depthBuffer,this.stencilBuffer=r.stencilBuffer,this.resolveDepthBuffer=r.resolveDepthBuffer,this.resolveStencilBuffer=r.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=r.depthTexture,this.samples=r.samples,this.multiview=r.multiview}_setTextureOptions(e={}){let t={minFilter:1006,generateMipmaps:!1,flipY:!1,internalFormat:null};void 0!==e.mapping&&(t.mapping=e.mapping),void 0!==e.wrapS&&(t.wrapS=e.wrapS),void 0!==e.wrapT&&(t.wrapT=e.wrapT),void 0!==e.wrapR&&(t.wrapR=e.wrapR),void 0!==e.magFilter&&(t.magFilter=e.magFilter),void 0!==e.minFilter&&(t.minFilter=e.minFilter),void 0!==e.format&&(t.format=e.format),void 0!==e.type&&(t.type=e.type),void 0!==e.anisotropy&&(t.anisotropy=e.anisotropy),void 0!==e.colorSpace&&(t.colorSpace=e.colorSpace),void 0!==e.flipY&&(t.flipY=e.flipY),void 0!==e.generateMipmaps&&(t.generateMipmaps=e.generateMipmaps),void 0!==e.internalFormat&&(t.internalFormat=e.internalFormat);for(let e=0;e<this.textures.length;e++)this.textures[e].setValues(t)}get texture(){return this.textures[0]}set texture(e){this.textures[0]=e}set depthTexture(e){null!==this._depthTexture&&(this._depthTexture.renderTarget=null),null!==e&&(e.renderTarget=this),this._depthTexture=e}get depthTexture(){return this._depthTexture}setSize(e,t,r=1){if(this.width!==e||this.height!==t||this.depth!==r){this.width=e,this.height=t,this.depth=r;for(let n=0,i=this.textures.length;n<i;n++)this.textures[n].image.width=e,this.textures[n].image.height=t,this.textures[n].image.depth=r,!0!==this.textures[n].isData3DTexture&&(this.textures[n].isArrayTexture=this.textures[n].image.depth>1);this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,r=e.textures.length;t<r;t++){this.textures[t]=e.textures[t].clone(),this.textures[t].isRenderTargetTexture=!0,this.textures[t].renderTarget=this;let r=Object.assign({},e.textures[t].image);this.textures[t].source=new b_(r)}return this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.resolveDepthBuffer=e.resolveDepthBuffer,this.resolveStencilBuffer=e.resolveStencilBuffer,null!==e.depthTexture&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class bN extends bO{constructor(e=1,t=1,r={}){super(e,t,r),this.isWebGLRenderTarget=!0}}class bQ extends bL{constructor(e=null,t=1,r=1,n=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:r,depth:n},this.magFilter=1003,this.minFilter=1003,this.wrapR=1001,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class bU extends bN{constructor(e=1,t=1,r=1,n={}){super(e,t,n),this.isWebGLArrayRenderTarget=!0,this.depth=r,this.texture=new bQ(null,e,t,r),this._setTextureOptions(n),this.texture.isRenderTargetTexture=!0}}class bz extends bL{constructor(e=null,t=1,r=1,n=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:r,depth:n},this.magFilter=1003,this.minFilter=1003,this.wrapR=1001,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class bH extends bN{constructor(e=1,t=1,r=1,n={}){super(e,t,n),this.isWebGL3DRenderTarget=!0,this.depth=r,this.texture=new bz(null,e,t,r),this._setTextureOptions(n),this.texture.isRenderTargetTexture=!0}}class bG{constructor(e=new bb(Infinity,Infinity,Infinity),t=new bb(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,r=e.length;t<r;t+=3)this.expandByPoint(bV.fromArray(e,t));return this}setFromBufferAttribute(e){this.makeEmpty();for(let t=0,r=e.count;t<r;t++)this.expandByPoint(bV.fromBufferAttribute(e,t));return this}setFromPoints(e){this.makeEmpty();for(let t=0,r=e.length;t<r;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){let r=bV.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(r),this.max.copy(e).add(r),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=Infinity,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);let r=e.geometry;if(void 0!==r){let n=r.getAttribute("position");if(!0===t&&void 0!==n&&!0!==e.isInstancedMesh)for(let t=0,r=n.count;t<r;t++)!0===e.isMesh?e.getVertexPosition(t,bV):bV.fromBufferAttribute(n,t),bV.applyMatrix4(e.matrixWorld),this.expandByPoint(bV);else void 0!==e.boundingBox?(null===e.boundingBox&&e.computeBoundingBox(),bW.copy(e.boundingBox)):(null===r.boundingBox&&r.computeBoundingBox(),bW.copy(r.boundingBox)),bW.applyMatrix4(e.matrixWorld),this.union(bW)}let n=e.children;for(let e=0,r=n.length;e<r;e++)this.expandByObject(n[e],t);return this}containsPoint(e){return e.x>=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,bV),bV.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,r;return e.normal.x>0?(t=e.normal.x*this.min.x,r=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,r=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,r+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,r+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,r+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,r+=e.normal.z*this.min.z),t<=-e.constant&&r>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(b$),b0.subVectors(this.max,b$),bq.subVectors(e.a,b$),bY.subVectors(e.b,b$),bJ.subVectors(e.c,b$),bK.subVectors(bY,bq),bX.subVectors(bJ,bY),bZ.subVectors(bq,bJ);let t=[0,-bK.z,bK.y,0,-bX.z,bX.y,0,-bZ.z,bZ.y,bK.z,0,-bK.x,bX.z,0,-bX.x,bZ.z,0,-bZ.x,-bK.y,bK.x,0,-bX.y,bX.x,0,-bZ.y,bZ.x,0];return!!b3(t,bq,bY,bJ,b0)&&!!b3(t=[1,0,0,0,1,0,0,0,1],bq,bY,bJ,b0)&&(b1.crossVectors(bK,bX),b3(t=[b1.x,b1.y,b1.z],bq,bY,bJ,b0))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,bV).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=.5*this.getSize(bV).length()),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()||(bj[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),bj[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),bj[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),bj[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),bj[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),bj[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),bj[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),bj[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(bj)),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}}let bj=[new bb,new bb,new bb,new bb,new bb,new bb,new bb,new bb],bV=new bb,bW=new bG,bq=new bb,bY=new bb,bJ=new bb,bK=new bb,bX=new bb,bZ=new bb,b$=new bb,b0=new bb,b1=new bb,b2=new bb;function b3(e,t,r,n,i){for(let a=0,s=e.length-3;a<=s;a+=3){b2.fromArray(e,a);let s=i.x*Math.abs(b2.x)+i.y*Math.abs(b2.y)+i.z*Math.abs(b2.z),o=t.dot(b2),l=r.dot(b2),u=n.dot(b2);if(Math.max(-Math.max(o,l,u),Math.min(o,l,u))>s)return!1}return!0}let b4=new bG,b5=new bb,b9=new bb;class b8{constructor(e=new bb,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){let r=this.center;void 0!==t?r.copy(t):b4.setFromPoints(e).getCenter(r);let n=0;for(let t=0,i=e.length;t<i;t++)n=Math.max(n,r.distanceToSquared(e[t]));return this.radius=Math.sqrt(n),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){let t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,t){let r=this.center.distanceToSquared(e);return t.copy(e),r>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?e.makeEmpty():(e.set(this.center,this.center),e.expandByScalar(this.radius)),e}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;b5.subVectors(e,this.center);let t=b5.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),r=(e-this.radius)*.5;this.center.addScaledVector(b5,r/e),this.radius+=r}return this}union(e){return e.isEmpty()||(this.isEmpty()?this.copy(e):!0===this.center.equals(e.center)?this.radius=Math.max(this.radius,e.radius):(b9.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(b5.copy(e.center).add(b9)),this.expandByPoint(b5.copy(e.center).sub(b9)))),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}}let b6=new bb,b7=new bb,ye=new bb,yt=new bb,yr=new bb,yn=new bb,yi=new bb;class ya{constructor(e=new bb,t=new bb(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,b6)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let r=t.dot(this.direction);return r<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,r)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=b6.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(b6.copy(this.origin).addScaledVector(this.direction,t),b6.distanceToSquared(e))}distanceSqToSegment(e,t,r,n){let i,a,s,o;b7.copy(e).add(t).multiplyScalar(.5),ye.copy(t).sub(e).normalize(),yt.copy(this.origin).sub(b7);let l=.5*e.distanceTo(t),u=-this.direction.dot(ye),c=yt.dot(this.direction),d=-yt.dot(ye),h=yt.lengthSq(),p=Math.abs(1-u*u);if(p>0)if(i=u*d-c,a=u*c-d,o=l*p,i>=0)if(a>=-o)if(a<=o){let e=1/p;i*=e,a*=e,s=i*(i+u*a+2*c)+a*(u*i+a+2*d)+h}else s=-(i=Math.max(0,-(u*(a=l)+c)))*i+a*(a+2*d)+h;else s=-(i=Math.max(0,-(u*(a=-l)+c)))*i+a*(a+2*d)+h;else a<=-o?(a=(i=Math.max(0,-(-u*l+c)))>0?-l:Math.min(Math.max(-l,-d),l),s=-i*i+a*(a+2*d)+h):a<=o?(i=0,s=(a=Math.min(Math.max(-l,-d),l))*(a+2*d)+h):(a=(i=Math.max(0,-(u*l+c)))>0?l:Math.min(Math.max(-l,-d),l),s=-i*i+a*(a+2*d)+h);else a=u>0?-l:l,s=-(i=Math.max(0,-(u*a+c)))*i+a*(a+2*d)+h;return r&&r.copy(this.origin).addScaledVector(this.direction,i),n&&n.copy(b7).addScaledVector(ye,a),s}intersectSphere(e,t){b6.subVectors(e.center,this.origin);let r=b6.dot(this.direction),n=b6.dot(b6)-r*r,i=e.radius*e.radius;if(n>i)return null;let a=Math.sqrt(i-n),s=r-a,o=r+a;return o<0?null:s<0?this.at(o,t):this.at(s,t)}intersectsSphere(e){return!(e.radius<0)&&this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;let r=-(this.origin.dot(e.normal)+e.constant)/t;return r>=0?r:null}intersectPlane(e,t){let r=this.distanceToPlane(e);return null===r?null:this.at(r,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return!!(0===t||e.normal.dot(this.direction)*t<0)}intersectBox(e,t){let r,n,i,a,s,o,l=1/this.direction.x,u=1/this.direction.y,c=1/this.direction.z,d=this.origin;return(l>=0?(r=(e.min.x-d.x)*l,n=(e.max.x-d.x)*l):(r=(e.max.x-d.x)*l,n=(e.min.x-d.x)*l),u>=0?(i=(e.min.y-d.y)*u,a=(e.max.y-d.y)*u):(i=(e.max.y-d.y)*u,a=(e.min.y-d.y)*u),r>a||i>n||((i>r||isNaN(r))&&(r=i),(a<n||isNaN(n))&&(n=a),c>=0?(s=(e.min.z-d.z)*c,o=(e.max.z-d.z)*c):(s=(e.max.z-d.z)*c,o=(e.min.z-d.z)*c),r>o||s>n||((s>r||r!=r)&&(r=s),(o<n||n!=n)&&(n=o),n<0)))?null:this.at(r>=0?r:n,t)}intersectsBox(e){return null!==this.intersectBox(e,b6)}intersectTriangle(e,t,r,n,i){let a;yr.subVectors(t,e),yn.subVectors(r,e),yi.crossVectors(yr,yn);let s=this.direction.dot(yi);if(s>0){if(n)return null;a=1}else{if(!(s<0))return null;a=-1,s=-s}yt.subVectors(this.origin,e);let o=a*this.direction.dot(yn.crossVectors(yt,yn));if(o<0)return null;let l=a*this.direction.dot(yr.cross(yt));if(l<0||o+l>s)return null;let u=-a*yt.dot(yi);return u<0?null:this.at(u/s,i)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class ys{constructor(e,t,r,n,i,a,s,o,l,u,c,d,h,p,f,A){ys.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==e&&this.set(e,t,r,n,i,a,s,o,l,u,c,d,h,p,f,A)}set(e,t,r,n,i,a,s,o,l,u,c,d,h,p,f,A){let g=this.elements;return g[0]=e,g[4]=t,g[8]=r,g[12]=n,g[1]=i,g[5]=a,g[9]=s,g[13]=o,g[2]=l,g[6]=u,g[10]=c,g[14]=d,g[3]=h,g[7]=p,g[11]=f,g[15]=A,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new ys().fromArray(this.elements)}copy(e){let t=this.elements,r=e.elements;return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t[4]=r[4],t[5]=r[5],t[6]=r[6],t[7]=r[7],t[8]=r[8],t[9]=r[9],t[10]=r[10],t[11]=r[11],t[12]=r[12],t[13]=r[13],t[14]=r[14],t[15]=r[15],this}copyPosition(e){let t=this.elements,r=e.elements;return t[12]=r[12],t[13]=r[13],t[14]=r[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,r){return 0===this.determinant()?(e.set(1,0,0),t.set(0,1,0),r.set(0,0,1)):(e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),r.setFromMatrixColumn(this,2)),this}makeBasis(e,t,r){return this.set(e.x,t.x,r.x,0,e.y,t.y,r.y,0,e.z,t.z,r.z,0,0,0,0,1),this}extractRotation(e){if(0===e.determinant())return this.identity();let t=this.elements,r=e.elements,n=1/yo.setFromMatrixColumn(e,0).length(),i=1/yo.setFromMatrixColumn(e,1).length(),a=1/yo.setFromMatrixColumn(e,2).length();return t[0]=r[0]*n,t[1]=r[1]*n,t[2]=r[2]*n,t[3]=0,t[4]=r[4]*i,t[5]=r[5]*i,t[6]=r[6]*i,t[7]=0,t[8]=r[8]*a,t[9]=r[9]*a,t[10]=r[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){let t=this.elements,r=e.x,n=e.y,i=e.z,a=Math.cos(r),s=Math.sin(r),o=Math.cos(n),l=Math.sin(n),u=Math.cos(i),c=Math.sin(i);if("XYZ"===e.order){let e=a*u,r=a*c,n=s*u,i=s*c;t[0]=o*u,t[4]=-o*c,t[8]=l,t[1]=r+n*l,t[5]=e-i*l,t[9]=-s*o,t[2]=i-e*l,t[6]=n+r*l,t[10]=a*o}else if("YXZ"===e.order){let e=o*u,r=o*c,n=l*u,i=l*c;t[0]=e+i*s,t[4]=n*s-r,t[8]=a*l,t[1]=a*c,t[5]=a*u,t[9]=-s,t[2]=r*s-n,t[6]=i+e*s,t[10]=a*o}else if("ZXY"===e.order){let e=o*u,r=o*c,n=l*u,i=l*c;t[0]=e-i*s,t[4]=-a*c,t[8]=n+r*s,t[1]=r+n*s,t[5]=a*u,t[9]=i-e*s,t[2]=-a*l,t[6]=s,t[10]=a*o}else if("ZYX"===e.order){let e=a*u,r=a*c,n=s*u,i=s*c;t[0]=o*u,t[4]=n*l-r,t[8]=e*l+i,t[1]=o*c,t[5]=i*l+e,t[9]=r*l-n,t[2]=-l,t[6]=s*o,t[10]=a*o}else if("YZX"===e.order){let e=a*o,r=a*l,n=s*o,i=s*l;t[0]=o*u,t[4]=i-e*c,t[8]=n*c+r,t[1]=c,t[5]=a*u,t[9]=-s*u,t[2]=-l*u,t[6]=r*c+n,t[10]=e-i*c}else if("XZY"===e.order){let e=a*o,r=a*l,n=s*o,i=s*l;t[0]=o*u,t[4]=-c,t[8]=l*u,t[1]=e*c+i,t[5]=a*u,t[9]=r*c-n,t[2]=n*c-r,t[6]=s*u,t[10]=i*c+e}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(yu,e,yc)}lookAt(e,t,r){let n=this.elements;return yp.subVectors(e,t),0===yp.lengthSq()&&(yp.z=1),yp.normalize(),yd.crossVectors(r,yp),0===yd.lengthSq()&&(1===Math.abs(r.z)?yp.x+=1e-4:yp.z+=1e-4,yp.normalize(),yd.crossVectors(r,yp)),yd.normalize(),yh.crossVectors(yp,yd),n[0]=yd.x,n[4]=yh.x,n[8]=yp.x,n[1]=yd.y,n[5]=yh.y,n[9]=yp.y,n[2]=yd.z,n[6]=yh.z,n[10]=yp.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let r=e.elements,n=t.elements,i=this.elements,a=r[0],s=r[4],o=r[8],l=r[12],u=r[1],c=r[5],d=r[9],h=r[13],p=r[2],f=r[6],A=r[10],g=r[14],m=r[3],v=r[7],b=r[11],y=r[15],w=n[0],x=n[4],C=n[8],E=n[12],S=n[1],M=n[5],I=n[9],B=n[13],T=n[2],k=n[6],_=n[10],R=n[14],P=n[3],D=n[7],L=n[11],F=n[15];return i[0]=a*w+s*S+o*T+l*P,i[4]=a*x+s*M+o*k+l*D,i[8]=a*C+s*I+o*_+l*L,i[12]=a*E+s*B+o*R+l*F,i[1]=u*w+c*S+d*T+h*P,i[5]=u*x+c*M+d*k+h*D,i[9]=u*C+c*I+d*_+h*L,i[13]=u*E+c*B+d*R+h*F,i[2]=p*w+f*S+A*T+g*P,i[6]=p*x+f*M+A*k+g*D,i[10]=p*C+f*I+A*_+g*L,i[14]=p*E+f*B+A*R+g*F,i[3]=m*w+v*S+b*T+y*P,i[7]=m*x+v*M+b*k+y*D,i[11]=m*C+v*I+b*_+y*L,i[15]=m*E+v*B+b*R+y*F,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){let e=this.elements,t=e[0],r=e[4],n=e[8],i=e[12],a=e[1],s=e[5],o=e[9],l=e[13],u=e[2],c=e[6],d=e[10],h=e[14],p=e[3],f=e[7],A=e[11],g=e[15],m=o*h-l*d,v=s*h-l*c,b=s*d-o*c,y=a*h-l*u,w=a*d-o*u,x=a*c-s*u;return t*(f*m-A*v+g*b)-r*(p*m-A*y+g*w)+n*(p*v-f*y+g*x)-i*(p*b-f*w+A*x)}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(e,t,r){let n=this.elements;return e.isVector3?(n[12]=e.x,n[13]=e.y,n[14]=e.z):(n[12]=e,n[13]=t,n[14]=r),this}invert(){let e=this.elements,t=e[0],r=e[1],n=e[2],i=e[3],a=e[4],s=e[5],o=e[6],l=e[7],u=e[8],c=e[9],d=e[10],h=e[11],p=e[12],f=e[13],A=e[14],g=e[15],m=c*A*l-f*d*l+f*o*h-s*A*h-c*o*g+s*d*g,v=p*d*l-u*A*l-p*o*h+a*A*h+u*o*g-a*d*g,b=u*f*l-p*c*l+p*s*h-a*f*h-u*s*g+a*c*g,y=p*c*o-u*f*o-p*s*d+a*f*d+u*s*A-a*c*A,w=t*m+r*v+n*b+i*y;if(0===w)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let x=1/w;return e[0]=m*x,e[1]=(f*d*i-c*A*i-f*n*h+r*A*h+c*n*g-r*d*g)*x,e[2]=(s*A*i-f*o*i+f*n*l-r*A*l-s*n*g+r*o*g)*x,e[3]=(c*o*i-s*d*i-c*n*l+r*d*l+s*n*h-r*o*h)*x,e[4]=v*x,e[5]=(u*A*i-p*d*i+p*n*h-t*A*h-u*n*g+t*d*g)*x,e[6]=(p*o*i-a*A*i-p*n*l+t*A*l+a*n*g-t*o*g)*x,e[7]=(a*d*i-u*o*i+u*n*l-t*d*l-a*n*h+t*o*h)*x,e[8]=b*x,e[9]=(p*c*i-u*f*i-p*r*h+t*f*h+u*r*g-t*c*g)*x,e[10]=(a*f*i-p*s*i+p*r*l-t*f*l-a*r*g+t*s*g)*x,e[11]=(u*s*i-a*c*i-u*r*l+t*c*l+a*r*h-t*s*h)*x,e[12]=y*x,e[13]=(u*f*n-p*c*n+p*r*d-t*f*d-u*r*A+t*c*A)*x,e[14]=(p*s*n-a*f*n-p*r*o+t*f*o+a*r*A-t*s*A)*x,e[15]=(a*c*n-u*s*n+u*r*o-t*c*o-a*r*d+t*s*d)*x,this}scale(e){let t=this.elements,r=e.x,n=e.y,i=e.z;return t[0]*=r,t[4]*=n,t[8]*=i,t[1]*=r,t[5]*=n,t[9]*=i,t[2]*=r,t[6]*=n,t[10]*=i,t[3]*=r,t[7]*=n,t[11]*=i,this}getMaxScaleOnAxis(){let e=this.elements;return Math.sqrt(Math.max(e[0]*e[0]+e[1]*e[1]+e[2]*e[2],e[4]*e[4]+e[5]*e[5]+e[6]*e[6],e[8]*e[8]+e[9]*e[9]+e[10]*e[10]))}makeTranslation(e,t,r){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,r,0,0,0,1),this}makeRotationX(e){let t=Math.cos(e),r=Math.sin(e);return this.set(1,0,0,0,0,t,-r,0,0,r,t,0,0,0,0,1),this}makeRotationY(e){let t=Math.cos(e),r=Math.sin(e);return this.set(t,0,r,0,0,1,0,0,-r,0,t,0,0,0,0,1),this}makeRotationZ(e){let t=Math.cos(e),r=Math.sin(e);return this.set(t,-r,0,0,r,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){let r=Math.cos(t),n=Math.sin(t),i=1-r,a=e.x,s=e.y,o=e.z,l=i*a,u=i*s;return this.set(l*a+r,l*s-n*o,l*o+n*s,0,l*s+n*o,u*s+r,u*o-n*a,0,l*o-n*s,u*o+n*a,i*o*o+r,0,0,0,0,1),this}makeScale(e,t,r){return this.set(e,0,0,0,0,t,0,0,0,0,r,0,0,0,0,1),this}makeShear(e,t,r,n,i,a){return this.set(1,r,i,0,e,1,a,0,t,n,1,0,0,0,0,1),this}compose(e,t,r){let n=this.elements,i=t._x,a=t._y,s=t._z,o=t._w,l=i+i,u=a+a,c=s+s,d=i*l,h=i*u,p=i*c,f=a*u,A=a*c,g=s*c,m=o*l,v=o*u,b=o*c,y=r.x,w=r.y,x=r.z;return n[0]=(1-(f+g))*y,n[1]=(h+b)*y,n[2]=(p-v)*y,n[3]=0,n[4]=(h-b)*w,n[5]=(1-(d+g))*w,n[6]=(A+m)*w,n[7]=0,n[8]=(p+v)*x,n[9]=(A-m)*x,n[10]=(1-(d+f))*x,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,this}decompose(e,t,r){let n=this.elements;if(e.x=n[12],e.y=n[13],e.z=n[14],0===this.determinant())return r.set(1,1,1),t.identity(),this;let i=yo.set(n[0],n[1],n[2]).length(),a=yo.set(n[4],n[5],n[6]).length(),s=yo.set(n[8],n[9],n[10]).length();0>this.determinant()&&(i=-i),yl.copy(this);let o=1/i,l=1/a,u=1/s;return yl.elements[0]*=o,yl.elements[1]*=o,yl.elements[2]*=o,yl.elements[4]*=l,yl.elements[5]*=l,yl.elements[6]*=l,yl.elements[8]*=u,yl.elements[9]*=u,yl.elements[10]*=u,t.setFromRotationMatrix(yl),r.x=i,r.y=a,r.z=s,this}makePerspective(e,t,r,n,i,a,s=2e3,o=!1){let l,u,c=this.elements;if(o)l=i/(a-i),u=a*i/(a-i);else if(2e3===s)l=-(a+i)/(a-i),u=-2*a*i/(a-i);else if(2001===s)l=-a/(a-i),u=-a*i/(a-i);else throw Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+s);return c[0]=2*i/(t-e),c[4]=0,c[8]=(t+e)/(t-e),c[12]=0,c[1]=0,c[5]=2*i/(r-n),c[9]=(r+n)/(r-n),c[13]=0,c[2]=0,c[6]=0,c[10]=l,c[14]=u,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,t,r,n,i,a,s=2e3,o=!1){let l,u,c=this.elements;if(o)l=1/(a-i),u=a/(a-i);else if(2e3===s)l=-2/(a-i),u=-(a+i)/(a-i);else if(2001===s)l=-1/(a-i),u=-i/(a-i);else throw Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+s);return c[0]=2/(t-e),c[4]=0,c[8]=0,c[12]=-(t+e)/(t-e),c[1]=0,c[5]=2/(r-n),c[9]=0,c[13]=-(r+n)/(r-n),c[2]=0,c[6]=0,c[10]=l,c[14]=u,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}equals(e){let t=this.elements,r=e.elements;for(let e=0;e<16;e++)if(t[e]!==r[e])return!1;return!0}fromArray(e,t=0){for(let r=0;r<16;r++)this.elements[r]=e[r+t];return this}toArray(e=[],t=0){let r=this.elements;return e[t]=r[0],e[t+1]=r[1],e[t+2]=r[2],e[t+3]=r[3],e[t+4]=r[4],e[t+5]=r[5],e[t+6]=r[6],e[t+7]=r[7],e[t+8]=r[8],e[t+9]=r[9],e[t+10]=r[10],e[t+11]=r[11],e[t+12]=r[12],e[t+13]=r[13],e[t+14]=r[14],e[t+15]=r[15],e}}let yo=new bb,yl=new ys,yu=new bb(0,0,0),yc=new bb(1,1,1),yd=new bb,yh=new bb,yp=new bb,yf=new ys,yA=new bv;class yg{constructor(e=0,t=0,r=0,n=yg.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=r,this._order=n}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,r,n=this._order){return this._x=e,this._y=t,this._z=r,this._order=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,r=!0){let n=e.elements,i=n[0],a=n[4],s=n[8],o=n[1],l=n[5],u=n[9],c=n[2],d=n[6],h=n[10];switch(t){case"XYZ":this._y=Math.asin(bd(s,-1,1)),.9999999>Math.abs(s)?(this._x=Math.atan2(-u,h),this._z=Math.atan2(-a,i)):(this._x=Math.atan2(d,l),this._z=0);break;case"YXZ":this._x=Math.asin(-bd(u,-1,1)),.9999999>Math.abs(u)?(this._y=Math.atan2(s,h),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-c,i),this._z=0);break;case"ZXY":this._x=Math.asin(bd(d,-1,1)),.9999999>Math.abs(d)?(this._y=Math.atan2(-c,h),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(o,i));break;case"ZYX":this._y=Math.asin(-bd(c,-1,1)),.9999999>Math.abs(c)?(this._x=Math.atan2(d,h),this._z=Math.atan2(o,i)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(bd(o,-1,1)),.9999999>Math.abs(o)?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-c,i)):(this._x=0,this._y=Math.atan2(s,h));break;case"XZY":this._z=Math.asin(-bd(a,-1,1)),.9999999>Math.abs(a)?(this._x=Math.atan2(d,l),this._y=Math.atan2(s,i)):(this._x=Math.atan2(-u,h),this._y=0);break;default:br("Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!0===r&&this._onChangeCallback(),this}setFromQuaternion(e,t,r){return yf.makeRotationFromQuaternion(e),this.setFromRotationMatrix(yf,t,r)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return yA.setFromEuler(this),this.setFromQuaternion(yA,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}yg.DEFAULT_ORDER="XYZ";class ym{constructor(){this.mask=1}set(e){this.mask=1<<e>>>0}enable(e){this.mask|=1<<e}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e}disable(e){this.mask&=~(1<<e)}disableAll(){this.mask=0}test(e){return(this.mask&e.mask)!=0}isEnabled(e){return(this.mask&1<<e)!=0}}let yv=0,yb=new bb,yy=new bv,yw=new ys,yx=new bb,yC=new bb,yE=new bb,yS=new bv,yM=new bb(1,0,0),yI=new bb(0,1,0),yB=new bb(0,0,1),yT={type:"added"},yk={type:"removed"},y_={type:"childadded",child:null},yR={type:"childremoved",child:null};class yP extends ba{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:yv++}),this.uuid=bc(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=yP.DEFAULT_UP.clone();const e=new bb,t=new yg,r=new bv,n=new bb(1,1,1);t._onChange(function(){r.setFromEuler(t,!1)}),r._onChange(function(){t.setFromQuaternion(r,void 0,!1)}),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:r},scale:{configurable:!0,enumerable:!0,value:n},modelViewMatrix:{value:new ys},normalMatrix:{value:new bx}}),this.matrix=new ys,this.matrixWorld=new ys,this.matrixAutoUpdate=yP.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=yP.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new ym,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.customDepthMaterial=void 0,this.customDistanceMaterial=void 0,this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return yy.setFromAxisAngle(e,t),this.quaternion.multiply(yy),this}rotateOnWorldAxis(e,t){return yy.setFromAxisAngle(e,t),this.quaternion.premultiply(yy),this}rotateX(e){return this.rotateOnAxis(yM,e)}rotateY(e){return this.rotateOnAxis(yI,e)}rotateZ(e){return this.rotateOnAxis(yB,e)}translateOnAxis(e,t){return yb.copy(e).applyQuaternion(this.quaternion),this.position.add(yb.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(yM,e)}translateY(e){return this.translateOnAxis(yI,e)}translateZ(e){return this.translateOnAxis(yB,e)}localToWorld(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(yw.copy(this.matrixWorld).invert())}lookAt(e,t,r){e.isVector3?yx.copy(e):yx.set(e,t,r);let n=this.parent;this.updateWorldMatrix(!0,!1),yC.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?yw.lookAt(yC,yx,this.up):yw.lookAt(yx,yC,this.up),this.quaternion.setFromRotationMatrix(yw),n&&(yw.extractRotation(n.matrixWorld),yy.setFromRotationMatrix(yw),this.quaternion.premultiply(yy.invert()))}add(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return e===this?bn("Object3D.add: object can't be added as a child of itself.",e):e&&e.isObject3D?(e.removeFromParent(),e.parent=this,this.children.push(e),e.dispatchEvent(yT),y_.child=e,this.dispatchEvent(y_),y_.child=null):bn("Object3D.add: object not an instance of THREE.Object3D.",e),this}remove(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.remove(arguments[e]);return this}let t=this.children.indexOf(e);return -1!==t&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(yk),yR.child=e,this.dispatchEvent(yR),yR.child=null),this}removeFromParent(){let e=this.parent;return null!==e&&e.remove(this),this}clear(){return this.remove(...this.children)}attach(e){return this.updateWorldMatrix(!0,!1),yw.copy(this.matrixWorld).invert(),null!==e.parent&&(e.parent.updateWorldMatrix(!0,!1),yw.multiply(e.parent.matrixWorld)),e.applyMatrix4(yw),e.removeFromParent(),e.parent=this,this.children.push(e),e.updateWorldMatrix(!1,!0),e.dispatchEvent(yT),y_.child=e,this.dispatchEvent(y_),y_.child=null,this}getObjectById(e){return this.getObjectByProperty("id",e)}getObjectByName(e){return this.getObjectByProperty("name",e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let r=0,n=this.children.length;r<n;r++){let n=this.children[r].getObjectByProperty(e,t);if(void 0!==n)return n}}getObjectsByProperty(e,t,r=[]){this[e]===t&&r.push(this);let n=this.children;for(let i=0,a=n.length;i<a;i++)n[i].getObjectsByProperty(e,t,r);return r}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(yC,e,yE),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(yC,yS,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);let t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);let t=this.children;for(let r=0,n=t.length;r<n;r++)t[r].traverse(e)}traverseVisible(e){if(!1===this.visible)return;e(this);let t=this.children;for(let r=0,n=t.length;r<n;r++)t[r].traverseVisible(e)}traverseAncestors(e){let t=this.parent;null!==t&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(!0===this.matrixWorldAutoUpdate&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,e=!0);let t=this.children;for(let r=0,n=t.length;r<n;r++)t[r].updateMatrixWorld(e)}updateWorldMatrix(e,t){let r=this.parent;if(!0===e&&null!==r&&r.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),!0===this.matrixWorldAutoUpdate&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),!0===t){let e=this.children;for(let t=0,r=e.length;t<r;t++)e[t].updateWorldMatrix(!1,!0)}}toJSON(e){let t=void 0===e||"string"==typeof e,r={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},r.metadata={version:4.7,type:"Object",generator:"Object3D.toJSON"});let n={};function i(t,r){return void 0===t[r.uuid]&&(t[r.uuid]=r.toJSON(e)),r.uuid}if(n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),!0===this.castShadow&&(n.castShadow=!0),!0===this.receiveShadow&&(n.receiveShadow=!0),!1===this.visible&&(n.visible=!1),!1===this.frustumCulled&&(n.frustumCulled=!1),0!==this.renderOrder&&(n.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(n.userData=this.userData),n.layers=this.layers.mask,n.matrix=this.matrix.toArray(),n.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(n.matrixAutoUpdate=!1),this.isInstancedMesh&&(n.type="InstancedMesh",n.count=this.count,n.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(n.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(n.type="BatchedMesh",n.perObjectFrustumCulled=this.perObjectFrustumCulled,n.sortObjects=this.sortObjects,n.drawRanges=this._drawRanges,n.reservedRanges=this._reservedRanges,n.geometryInfo=this._geometryInfo.map(e=>({...e,boundingBox:e.boundingBox?e.boundingBox.toJSON():void 0,boundingSphere:e.boundingSphere?e.boundingSphere.toJSON():void 0})),n.instanceInfo=this._instanceInfo.map(e=>({...e})),n.availableInstanceIds=this._availableInstanceIds.slice(),n.availableGeometryIds=this._availableGeometryIds.slice(),n.nextIndexStart=this._nextIndexStart,n.nextVertexStart=this._nextVertexStart,n.geometryCount=this._geometryCount,n.maxInstanceCount=this._maxInstanceCount,n.maxVertexCount=this._maxVertexCount,n.maxIndexCount=this._maxIndexCount,n.geometryInitialized=this._geometryInitialized,n.matricesTexture=this._matricesTexture.toJSON(e),n.indirectTexture=this._indirectTexture.toJSON(e),null!==this._colorsTexture&&(n.colorsTexture=this._colorsTexture.toJSON(e)),null!==this.boundingSphere&&(n.boundingSphere=this.boundingSphere.toJSON()),null!==this.boundingBox&&(n.boundingBox=this.boundingBox.toJSON())),this.isScene)this.background&&(this.background.isColor?n.background=this.background.toJSON():this.background.isTexture&&(n.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(n.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){n.geometry=i(e.geometries,this.geometry);let t=this.geometry.parameters;if(void 0!==t&&void 0!==t.shapes){let r=t.shapes;if(Array.isArray(r))for(let t=0,n=r.length;t<n;t++){let n=r[t];i(e.shapes,n)}else i(e.shapes,r)}}if(this.isSkinnedMesh&&(n.bindMode=this.bindMode,n.bindMatrix=this.bindMatrix.toArray(),void 0!==this.skeleton&&(i(e.skeletons,this.skeleton),n.skeleton=this.skeleton.uuid)),void 0!==this.material)if(Array.isArray(this.material)){let t=[];for(let r=0,n=this.material.length;r<n;r++)t.push(i(e.materials,this.material[r]));n.material=t}else n.material=i(e.materials,this.material);if(this.children.length>0){n.children=[];for(let t=0;t<this.children.length;t++)n.children.push(this.children[t].toJSON(e).object)}if(this.animations.length>0){n.animations=[];for(let t=0;t<this.animations.length;t++){let r=this.animations[t];n.animations.push(i(e.animations,r))}}if(t){let t=a(e.geometries),n=a(e.materials),i=a(e.textures),s=a(e.images),o=a(e.shapes),l=a(e.skeletons),u=a(e.animations),c=a(e.nodes);t.length>0&&(r.geometries=t),n.length>0&&(r.materials=n),i.length>0&&(r.textures=i),s.length>0&&(r.images=s),o.length>0&&(r.shapes=o),l.length>0&&(r.skeletons=l),u.length>0&&(r.animations=u),c.length>0&&(r.nodes=c)}return r.object=n,r;function a(e){let t=[];for(let r in e){let n=e[r];delete n.metadata,t.push(n)}return t}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(let t=0;t<e.children.length;t++){let r=e.children[t];this.add(r.clone())}return this}}yP.DEFAULT_UP=new bb(0,1,0),yP.DEFAULT_MATRIX_AUTO_UPDATE=!0,yP.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;let yD=new bb,yL=new bb,yF=new bb,yO=new bb,yN=new bb,yQ=new bb,yU=new bb,yz=new bb,yH=new bb,yG=new bb,yj=new bF,yV=new bF,yW=new bF;class yq{constructor(e=new bb,t=new bb,r=new bb){this.a=e,this.b=t,this.c=r}static getNormal(e,t,r,n){n.subVectors(r,t),yD.subVectors(e,t),n.cross(yD);let i=n.lengthSq();return i>0?n.multiplyScalar(1/Math.sqrt(i)):n.set(0,0,0)}static getBarycoord(e,t,r,n,i){yD.subVectors(n,t),yL.subVectors(r,t),yF.subVectors(e,t);let a=yD.dot(yD),s=yD.dot(yL),o=yD.dot(yF),l=yL.dot(yL),u=yL.dot(yF),c=a*l-s*s;if(0===c)return i.set(0,0,0),null;let d=1/c,h=(l*o-s*u)*d,p=(a*u-s*o)*d;return i.set(1-h-p,p,h)}static containsPoint(e,t,r,n){return null!==this.getBarycoord(e,t,r,n,yO)&&yO.x>=0&&yO.y>=0&&yO.x+yO.y<=1}static getInterpolation(e,t,r,n,i,a,s,o){return null===this.getBarycoord(e,t,r,n,yO)?(o.x=0,o.y=0,"z"in o&&(o.z=0),"w"in o&&(o.w=0),null):(o.setScalar(0),o.addScaledVector(i,yO.x),o.addScaledVector(a,yO.y),o.addScaledVector(s,yO.z),o)}static getInterpolatedAttribute(e,t,r,n,i,a){return yj.setScalar(0),yV.setScalar(0),yW.setScalar(0),yj.fromBufferAttribute(e,t),yV.fromBufferAttribute(e,r),yW.fromBufferAttribute(e,n),a.setScalar(0),a.addScaledVector(yj,i.x),a.addScaledVector(yV,i.y),a.addScaledVector(yW,i.z),a}static isFrontFacing(e,t,r,n){return yD.subVectors(r,t),yL.subVectors(e,t),0>yD.cross(yL).dot(n)}set(e,t,r){return this.a.copy(e),this.b.copy(t),this.c.copy(r),this}setFromPointsAndIndices(e,t,r,n){return this.a.copy(e[t]),this.b.copy(e[r]),this.c.copy(e[n]),this}setFromAttributeAndIndices(e,t,r,n){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,r),this.c.fromBufferAttribute(e,n),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return yD.subVectors(this.c,this.b),yL.subVectors(this.a,this.b),.5*yD.cross(yL).length()}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return yq.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return yq.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,r,n,i){return yq.getInterpolation(e,this.a,this.b,this.c,t,r,n,i)}containsPoint(e){return yq.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return yq.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let r,n,i=this.a,a=this.b,s=this.c;yN.subVectors(a,i),yQ.subVectors(s,i),yz.subVectors(e,i);let o=yN.dot(yz),l=yQ.dot(yz);if(o<=0&&l<=0)return t.copy(i);yH.subVectors(e,a);let u=yN.dot(yH),c=yQ.dot(yH);if(u>=0&&c<=u)return t.copy(a);let d=o*c-u*l;if(d<=0&&o>=0&&u<=0)return r=o/(o-u),t.copy(i).addScaledVector(yN,r);yG.subVectors(e,s);let h=yN.dot(yG),p=yQ.dot(yG);if(p>=0&&h<=p)return t.copy(s);let f=h*l-o*p;if(f<=0&&l>=0&&p<=0)return n=l/(l-p),t.copy(i).addScaledVector(yQ,n);let A=u*p-h*c;if(A<=0&&c-u>=0&&h-p>=0)return yU.subVectors(s,a),n=(c-u)/(c-u+(h-p)),t.copy(a).addScaledVector(yU,n);let g=1/(A+f+d);return r=f*g,n=d*g,t.copy(i).addScaledVector(yN,r).addScaledVector(yQ,n)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}let yY={aliceblue:0xf0f8ff,antiquewhite:0xfaebd7,aqua:65535,aquamarine:8388564,azure:0xf0ffff,beige:0xf5f5dc,bisque:0xffe4c4,black:0,blanchedalmond:0xffebcd,blue:255,blueviolet:9055202,brown:0xa52a2a,burlywood:0xdeb887,cadetblue:6266528,chartreuse:8388352,chocolate:0xd2691e,coral:0xff7f50,cornflowerblue:6591981,cornsilk:0xfff8dc,crimson:0xdc143c,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:0xb8860b,darkgray:0xa9a9a9,darkgreen:25600,darkgrey:0xa9a9a9,darkkhaki:0xbdb76b,darkmagenta:9109643,darkolivegreen:5597999,darkorange:0xff8c00,darkorchid:0x9932cc,darkred:9109504,darksalmon:0xe9967a,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:0xff1493,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:0xb22222,floralwhite:0xfffaf0,forestgreen:2263842,fuchsia:0xff00ff,gainsboro:0xdcdcdc,ghostwhite:0xf8f8ff,gold:0xffd700,goldenrod:0xdaa520,gray:8421504,green:32768,greenyellow:0xadff2f,grey:8421504,honeydew:0xf0fff0,hotpink:0xff69b4,indianred:0xcd5c5c,indigo:4915330,ivory:0xfffff0,khaki:0xf0e68c,lavender:0xe6e6fa,lavenderblush:0xfff0f5,lawngreen:8190976,lemonchiffon:0xfffacd,lightblue:0xadd8e6,lightcoral:0xf08080,lightcyan:0xe0ffff,lightgoldenrodyellow:0xfafad2,lightgray:0xd3d3d3,lightgreen:9498256,lightgrey:0xd3d3d3,lightpink:0xffb6c1,lightsalmon:0xffa07a,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:0xb0c4de,lightyellow:0xffffe0,lime:65280,limegreen:3329330,linen:0xfaf0e6,magenta:0xff00ff,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:0xba55d3,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:0xc71585,midnightblue:1644912,mintcream:0xf5fffa,mistyrose:0xffe4e1,moccasin:0xffe4b5,navajowhite:0xffdead,navy:128,oldlace:0xfdf5e6,olive:8421376,olivedrab:7048739,orange:0xffa500,orangered:0xff4500,orchid:0xda70d6,palegoldenrod:0xeee8aa,palegreen:0x98fb98,paleturquoise:0xafeeee,palevioletred:0xdb7093,papayawhip:0xffefd5,peachpuff:0xffdab9,peru:0xcd853f,pink:0xffc0cb,plum:0xdda0dd,powderblue:0xb0e0e6,purple:8388736,rebeccapurple:6697881,red:0xff0000,rosybrown:0xbc8f8f,royalblue:4286945,saddlebrown:9127187,salmon:0xfa8072,sandybrown:0xf4a460,seagreen:3050327,seashell:0xfff5ee,sienna:0xa0522d,silver:0xc0c0c0,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:0xfffafa,springgreen:65407,steelblue:4620980,tan:0xd2b48c,teal:32896,thistle:0xd8bfd8,tomato:0xff6347,turquoise:4251856,violet:0xee82ee,wheat:0xf5deb3,white:0xffffff,whitesmoke:0xf5f5f5,yellow:0xffff00,yellowgreen:0x9acd32},yJ={h:0,s:0,l:0},yK={h:0,s:0,l:0};function yX(e,t,r){return(r<0&&(r+=1),r>1&&(r-=1),r<1/6)?e+(t-e)*6*r:r<.5?t:r<2/3?e+(t-e)*6*(2/3-r):e}class yZ{constructor(e,t,r){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,r)}set(e,t,r){return void 0===t&&void 0===r?e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e):this.setRGB(e,t,r),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=vY){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,bM.colorSpaceToWorking(this,t),this}setRGB(e,t,r,n=bM.workingColorSpace){return this.r=e,this.g=t,this.b=r,bM.colorSpaceToWorking(this,n),this}setHSL(e,t,r,n=bM.workingColorSpace){if(e=bh(e,1),t=bd(t,0,1),r=bd(r,0,1),0===t)this.r=this.g=this.b=r;else{let n=r<=.5?r*(1+t):r+t-r*t,i=2*r-n;this.r=yX(i,n,e+1/3),this.g=yX(i,n,e),this.b=yX(i,n,e-1/3)}return bM.colorSpaceToWorking(this,n),this}setStyle(e,t=vY){let r;function n(t){void 0!==t&&1>parseFloat(t)&&br("Color: Alpha component of "+e+" will be ignored.")}if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let i,a=r[1],s=r[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(i[4]),this.setRGB(Math.min(255,parseInt(i[1],10))/255,Math.min(255,parseInt(i[2],10))/255,Math.min(255,parseInt(i[3],10))/255,t);if(i=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(i[4]),this.setRGB(Math.min(100,parseInt(i[1],10))/100,Math.min(100,parseInt(i[2],10))/100,Math.min(100,parseInt(i[3],10))/100,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(i[4]),this.setHSL(parseFloat(i[1])/360,parseFloat(i[2])/100,parseFloat(i[3])/100,t);break;default:br("Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){let n=r[1],i=n.length;if(3===i)return this.setRGB(parseInt(n.charAt(0),16)/15,parseInt(n.charAt(1),16)/15,parseInt(n.charAt(2),16)/15,t);if(6===i)return this.setHex(parseInt(n,16),t);br("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=vY){let r=yY[e.toLowerCase()];return void 0!==r?this.setHex(r,t):br("Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=bI(e.r),this.g=bI(e.g),this.b=bI(e.b),this}copyLinearToSRGB(e){return this.r=bB(e.r),this.g=bB(e.g),this.b=bB(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=vY){return bM.workingToColorSpace(y$.copy(this),e),65536*Math.round(bd(255*y$.r,0,255))+256*Math.round(bd(255*y$.g,0,255))+Math.round(bd(255*y$.b,0,255))}getHexString(e=vY){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=bM.workingColorSpace){let r,n;bM.workingToColorSpace(y$.copy(this),t);let i=y$.r,a=y$.g,s=y$.b,o=Math.max(i,a,s),l=Math.min(i,a,s),u=(l+o)/2;if(l===o)r=0,n=0;else{let e=o-l;switch(n=u<=.5?e/(o+l):e/(2-o-l),o){case i:r=(a-s)/e+6*(a<s);break;case a:r=(s-i)/e+2;break;case s:r=(i-a)/e+4}r/=6}return e.h=r,e.s=n,e.l=u,e}getRGB(e,t=bM.workingColorSpace){return bM.workingToColorSpace(y$.copy(this),t),e.r=y$.r,e.g=y$.g,e.b=y$.b,e}getStyle(e=vY){bM.workingToColorSpace(y$.copy(this),e);let t=y$.r,r=y$.g,n=y$.b;return e!==vY?`color(${e} ${t.toFixed(3)} ${r.toFixed(3)} ${n.toFixed(3)})`:`rgb(${Math.round(255*t)},${Math.round(255*r)},${Math.round(255*n)})`}offsetHSL(e,t,r){return this.getHSL(yJ),this.setHSL(yJ.h+e,yJ.s+t,yJ.l+r)}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,r){return this.r=e.r+(t.r-e.r)*r,this.g=e.g+(t.g-e.g)*r,this.b=e.b+(t.b-e.b)*r,this}lerpHSL(e,t){this.getHSL(yJ),e.getHSL(yK);let r=bp(yJ.h,yK.h,t),n=bp(yJ.s,yK.s,t),i=bp(yJ.l,yK.l,t);return this.setHSL(r,n,i),this}setFromVector3(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}applyMatrix3(e){let t=this.r,r=this.g,n=this.b,i=e.elements;return this.r=i[0]*t+i[3]*r+i[6]*n,this.g=i[1]*t+i[4]*r+i[7]*n,this.b=i[2]*t+i[5]*r+i[8]*n,this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}let y$=new yZ;yZ.NAMES=yY;let y0=0;class y1 extends ba{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:y0++}),this.uuid=bc(),this.name="",this.type="Material",this.blending=1,this.side=0,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=204,this.blendDst=205,this.blendEquation=100,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new yZ(0,0,0),this.blendAlpha=0,this.depthFunc=3,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=7680,this.stencilZFail=7680,this.stencilZPass=7680,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(void 0!==e)for(let t in e){let r=e[t];if(void 0===r){br(`Material: parameter '${t}' has value of undefined.`);continue}let n=this[t];if(void 0===n){br(`Material: '${t}' is not a property of THREE.${this.type}.`);continue}n&&n.isColor?n.set(r):n&&n.isVector3&&r&&r.isVector3?n.copy(r):this[t]=r}}toJSON(e){let t=void 0===e||"string"==typeof e;t&&(e={textures:{},images:{}});let r={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};function n(e){let t=[];for(let r in e){let n=e[r];delete n.metadata,t.push(n)}return t}if(r.uuid=this.uuid,r.type=this.type,""!==this.name&&(r.name=this.name),this.color&&this.color.isColor&&(r.color=this.color.getHex()),void 0!==this.roughness&&(r.roughness=this.roughness),void 0!==this.metalness&&(r.metalness=this.metalness),void 0!==this.sheen&&(r.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(r.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(r.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(r.emissive=this.emissive.getHex()),void 0!==this.emissiveIntensity&&1!==this.emissiveIntensity&&(r.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(r.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(r.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(r.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(r.shininess=this.shininess),void 0!==this.clearcoat&&(r.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(r.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(r.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(r.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(r.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,r.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(r.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(r.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),void 0!==this.dispersion&&(r.dispersion=this.dispersion),void 0!==this.iridescence&&(r.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(r.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(r.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(r.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(r.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),void 0!==this.anisotropy&&(r.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(r.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(r.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(r.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(r.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(r.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(r.lightMap=this.lightMap.toJSON(e).uuid,r.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(r.aoMap=this.aoMap.toJSON(e).uuid,r.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(r.bumpMap=this.bumpMap.toJSON(e).uuid,r.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(r.normalMap=this.normalMap.toJSON(e).uuid,r.normalMapType=this.normalMapType,r.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(r.displacementMap=this.displacementMap.toJSON(e).uuid,r.displacementScale=this.displacementScale,r.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(r.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(r.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(r.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(r.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(r.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(r.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(r.envMap=this.envMap.toJSON(e).uuid,void 0!==this.combine&&(r.combine=this.combine)),void 0!==this.envMapRotation&&(r.envMapRotation=this.envMapRotation.toArray()),void 0!==this.envMapIntensity&&(r.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(r.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(r.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(r.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.transmission&&(r.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(r.transmissionMap=this.transmissionMap.toJSON(e).uuid),void 0!==this.thickness&&(r.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(r.thicknessMap=this.thicknessMap.toJSON(e).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(r.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(r.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(r.size=this.size),null!==this.shadowSide&&(r.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(r.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(r.blending=this.blending),0!==this.side&&(r.side=this.side),!0===this.vertexColors&&(r.vertexColors=!0),this.opacity<1&&(r.opacity=this.opacity),!0===this.transparent&&(r.transparent=!0),204!==this.blendSrc&&(r.blendSrc=this.blendSrc),205!==this.blendDst&&(r.blendDst=this.blendDst),100!==this.blendEquation&&(r.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(r.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(r.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(r.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(r.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(r.blendAlpha=this.blendAlpha),3!==this.depthFunc&&(r.depthFunc=this.depthFunc),!1===this.depthTest&&(r.depthTest=this.depthTest),!1===this.depthWrite&&(r.depthWrite=this.depthWrite),!1===this.colorWrite&&(r.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(r.stencilWriteMask=this.stencilWriteMask),519!==this.stencilFunc&&(r.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(r.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(r.stencilFuncMask=this.stencilFuncMask),7680!==this.stencilFail&&(r.stencilFail=this.stencilFail),7680!==this.stencilZFail&&(r.stencilZFail=this.stencilZFail),7680!==this.stencilZPass&&(r.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(r.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(r.rotation=this.rotation),!0===this.polygonOffset&&(r.polygonOffset=!0),0!==this.polygonOffsetFactor&&(r.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(r.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(r.linewidth=this.linewidth),void 0!==this.dashSize&&(r.dashSize=this.dashSize),void 0!==this.gapSize&&(r.gapSize=this.gapSize),void 0!==this.scale&&(r.scale=this.scale),!0===this.dithering&&(r.dithering=!0),this.alphaTest>0&&(r.alphaTest=this.alphaTest),!0===this.alphaHash&&(r.alphaHash=!0),!0===this.alphaToCoverage&&(r.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(r.premultipliedAlpha=!0),!0===this.forceSinglePass&&(r.forceSinglePass=!0),!1===this.allowOverride&&(r.allowOverride=!1),!0===this.wireframe&&(r.wireframe=!0),this.wireframeLinewidth>1&&(r.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(r.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(r.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(r.flatShading=!0),!1===this.visible&&(r.visible=!1),!1===this.toneMapped&&(r.toneMapped=!1),!1===this.fog&&(r.fog=!1),Object.keys(this.userData).length>0&&(r.userData=this.userData),t){let t=n(e.textures),i=n(e.images);t.length>0&&(r.textures=t),i.length>0&&(r.images=i)}return r}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,r=null;if(null!==t){let e=t.length;r=Array(e);for(let n=0;n!==e;++n)r[n]=t[n].clone()}return this.clippingPlanes=r,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.allowOverride=e.allowOverride,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){!0===e&&this.version++}}class y2 extends y1{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new yZ(0xffffff),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new yg,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}let y3=function(){let e=new ArrayBuffer(4),t=new Float32Array(e),r=new Uint32Array(e),n=new Uint32Array(512),i=new Uint32Array(512);for(let e=0;e<256;++e){let t=e-127;t<-27?(n[e]=0,n[256|e]=32768,i[e]=24,i[256|e]=24):t<-14?(n[e]=1024>>-t-14,n[256|e]=1024>>-t-14|32768,i[e]=-t-1,i[256|e]=-t-1):t<=15?(n[e]=t+15<<10,n[256|e]=t+15<<10|32768,i[e]=13,i[256|e]=13):t<128?(n[e]=31744,n[256|e]=64512,i[e]=24,i[256|e]=24):(n[e]=31744,n[256|e]=64512,i[e]=13,i[256|e]=13)}let a=new Uint32Array(2048),s=new Uint32Array(64),o=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,r=0;for(;(8388608&t)==0;)t<<=1,r-=8388608;t&=-8388609,r+=0x38800000,a[e]=t|r}for(let e=1024;e<2048;++e)a[e]=0x38000000+(e-1024<<13);for(let e=1;e<31;++e)s[e]=e<<23;s[31]=0x47800000,s[32]=0x80000000;for(let e=33;e<63;++e)s[e]=0x80000000+(e-32<<23);s[63]=0xc7800000;for(let e=1;e<64;++e)32!==e&&(o[e]=1024);return{floatView:t,uint32View:r,baseTable:n,shiftTable:i,mantissaTable:a,exponentTable:s,offsetTable:o}}();function y4(e){Math.abs(e)>65504&&br("DataUtils.toHalfFloat(): Value out of range."),e=bd(e,-65504,65504),y3.floatView[0]=e;let t=y3.uint32View[0],r=t>>23&511;return y3.baseTable[r]+((8388607&t)>>y3.shiftTable[r])}function y5(e){let t=e>>10;return y3.uint32View[0]=y3.mantissaTable[y3.offsetTable[t]+(1023&e)]+y3.exponentTable[t],y3.floatView[0]}class y9{static toHalfFloat(e){return y4(e)}static fromHalfFloat(e){return y5(e)}}let y8=new bb,y6=new bm,y7=0;class we{constructor(e,t,r=!1){if(Array.isArray(e))throw TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:y7++}),this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=r,this.usage=35044,this.updateRanges=[],this.gpuType=1015,this.version=0}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,r){e*=this.itemSize,r*=t.itemSize;for(let n=0,i=this.itemSize;n<i;n++)this.array[e+n]=t.array[r+n];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(2===this.itemSize)for(let t=0,r=this.count;t<r;t++)y6.fromBufferAttribute(this,t),y6.applyMatrix3(e),this.setXY(t,y6.x,y6.y);else if(3===this.itemSize)for(let t=0,r=this.count;t<r;t++)y8.fromBufferAttribute(this,t),y8.applyMatrix3(e),this.setXYZ(t,y8.x,y8.y,y8.z);return this}applyMatrix4(e){for(let t=0,r=this.count;t<r;t++)y8.fromBufferAttribute(this,t),y8.applyMatrix4(e),this.setXYZ(t,y8.x,y8.y,y8.z);return this}applyNormalMatrix(e){for(let t=0,r=this.count;t<r;t++)y8.fromBufferAttribute(this,t),y8.applyNormalMatrix(e),this.setXYZ(t,y8.x,y8.y,y8.z);return this}transformDirection(e){for(let t=0,r=this.count;t<r;t++)y8.fromBufferAttribute(this,t),y8.transformDirection(e),this.setXYZ(t,y8.x,y8.y,y8.z);return this}set(e,t=0){return this.array.set(e,t),this}getComponent(e,t){let r=this.array[e*this.itemSize+t];return this.normalized&&(r=bf(r,this.array)),r}setComponent(e,t,r){return this.normalized&&(r=bA(r,this.array)),this.array[e*this.itemSize+t]=r,this}getX(e){let t=this.array[e*this.itemSize];return this.normalized&&(t=bf(t,this.array)),t}setX(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize]=t,this}getY(e){let t=this.array[e*this.itemSize+1];return this.normalized&&(t=bf(t,this.array)),t}setY(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize+1]=t,this}getZ(e){let t=this.array[e*this.itemSize+2];return this.normalized&&(t=bf(t,this.array)),t}setZ(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize+2]=t,this}getW(e){let t=this.array[e*this.itemSize+3];return this.normalized&&(t=bf(t,this.array)),t}setW(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize+3]=t,this}setXY(e,t,r){return e*=this.itemSize,this.normalized&&(t=bA(t,this.array),r=bA(r,this.array)),this.array[e+0]=t,this.array[e+1]=r,this}setXYZ(e,t,r,n){return e*=this.itemSize,this.normalized&&(t=bA(t,this.array),r=bA(r,this.array),n=bA(n,this.array)),this.array[e+0]=t,this.array[e+1]=r,this.array[e+2]=n,this}setXYZW(e,t,r,n,i){return e*=this.itemSize,this.normalized&&(t=bA(t,this.array),r=bA(r,this.array),n=bA(n,this.array),i=bA(i,this.array)),this.array[e+0]=t,this.array[e+1]=r,this.array[e+2]=n,this.array[e+3]=i,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){let e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return""!==this.name&&(e.name=this.name),35044!==this.usage&&(e.usage=this.usage),e}}class wt extends we{constructor(e,t,r){super(new Int8Array(e),t,r)}}class wr extends we{constructor(e,t,r){super(new Uint8Array(e),t,r)}}class wn extends we{constructor(e,t,r){super(new Uint8ClampedArray(e),t,r)}}class wi extends we{constructor(e,t,r){super(new Int16Array(e),t,r)}}class wa extends we{constructor(e,t,r){super(new Uint16Array(e),t,r)}}class ws extends we{constructor(e,t,r){super(new Int32Array(e),t,r)}}class wo extends we{constructor(e,t,r){super(new Uint32Array(e),t,r)}}class wl extends we{constructor(e,t,r){super(new Uint16Array(e),t,r),this.isFloat16BufferAttribute=!0}getX(e){let t=y5(this.array[e*this.itemSize]);return this.normalized&&(t=bf(t,this.array)),t}setX(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize]=y4(t),this}getY(e){let t=y5(this.array[e*this.itemSize+1]);return this.normalized&&(t=bf(t,this.array)),t}setY(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize+1]=y4(t),this}getZ(e){let t=y5(this.array[e*this.itemSize+2]);return this.normalized&&(t=bf(t,this.array)),t}setZ(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize+2]=y4(t),this}getW(e){let t=y5(this.array[e*this.itemSize+3]);return this.normalized&&(t=bf(t,this.array)),t}setW(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize+3]=y4(t),this}setXY(e,t,r){return e*=this.itemSize,this.normalized&&(t=bA(t,this.array),r=bA(r,this.array)),this.array[e+0]=y4(t),this.array[e+1]=y4(r),this}setXYZ(e,t,r,n){return e*=this.itemSize,this.normalized&&(t=bA(t,this.array),r=bA(r,this.array),n=bA(n,this.array)),this.array[e+0]=y4(t),this.array[e+1]=y4(r),this.array[e+2]=y4(n),this}setXYZW(e,t,r,n,i){return e*=this.itemSize,this.normalized&&(t=bA(t,this.array),r=bA(r,this.array),n=bA(n,this.array),i=bA(i,this.array)),this.array[e+0]=y4(t),this.array[e+1]=y4(r),this.array[e+2]=y4(n),this.array[e+3]=y4(i),this}}class wu extends we{constructor(e,t,r){super(new Float32Array(e),t,r)}}let wc=0,wd=new ys,wh=new yP,wp=new bb,wf=new bG,wA=new bG,wg=new bb;class wm extends ba{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:wc++}),this.uuid=bc(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.indirectOffset=0,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(v1(e)?wo:wa)(e,1):this.index=e,this}setIndirect(e,t=0){return this.indirect=e,this.indirectOffset=t,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return void 0!==this.attributes[e]}addGroup(e,t,r=0){this.groups.push({start:e,count:t,materialIndex:r})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){let t=this.attributes.position;void 0!==t&&(t.applyMatrix4(e),t.needsUpdate=!0);let r=this.attributes.normal;if(void 0!==r){let t=new bx().getNormalMatrix(e);r.applyNormalMatrix(t),r.needsUpdate=!0}let n=this.attributes.tangent;return void 0!==n&&(n.transformDirection(e),n.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}applyQuaternion(e){return wd.makeRotationFromQuaternion(e),this.applyMatrix4(wd),this}rotateX(e){return wd.makeRotationX(e),this.applyMatrix4(wd),this}rotateY(e){return wd.makeRotationY(e),this.applyMatrix4(wd),this}rotateZ(e){return wd.makeRotationZ(e),this.applyMatrix4(wd),this}translate(e,t,r){return wd.makeTranslation(e,t,r),this.applyMatrix4(wd),this}scale(e,t,r){return wd.makeScale(e,t,r),this.applyMatrix4(wd),this}lookAt(e){return wh.lookAt(e),wh.updateMatrix(),this.applyMatrix4(wh.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(wp).negate(),this.translate(wp.x,wp.y,wp.z),this}setFromPoints(e){let t=this.getAttribute("position");if(void 0===t){let t=[];for(let r=0,n=e.length;r<n;r++){let n=e[r];t.push(n.x,n.y,n.z||0)}this.setAttribute("position",new wu(t,3))}else{let r=Math.min(e.length,t.count);for(let n=0;n<r;n++){let r=e[n];t.setXYZ(n,r.x,r.y,r.z||0)}e.length>t.count&&br("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new bG);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){bn("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new bb(-1/0,-1/0,-1/0),new bb(Infinity,Infinity,Infinity));return}if(void 0!==e){if(this.boundingBox.setFromBufferAttribute(e),t)for(let e=0,r=t.length;e<r;e++){let r=t[e];wf.setFromBufferAttribute(r),this.morphTargetsRelative?(wg.addVectors(this.boundingBox.min,wf.min),this.boundingBox.expandByPoint(wg),wg.addVectors(this.boundingBox.max,wf.max),this.boundingBox.expandByPoint(wg)):(this.boundingBox.expandByPoint(wf.min),this.boundingBox.expandByPoint(wf.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&bn('BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new b8);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){bn("BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new bb,1/0);return}if(e){let r=this.boundingSphere.center;if(wf.setFromBufferAttribute(e),t)for(let e=0,r=t.length;e<r;e++){let r=t[e];wA.setFromBufferAttribute(r),this.morphTargetsRelative?(wg.addVectors(wf.min,wA.min),wf.expandByPoint(wg),wg.addVectors(wf.max,wA.max),wf.expandByPoint(wg)):(wf.expandByPoint(wA.min),wf.expandByPoint(wA.max))}wf.getCenter(r);let n=0;for(let t=0,i=e.count;t<i;t++)wg.fromBufferAttribute(e,t),n=Math.max(n,r.distanceToSquared(wg));if(t)for(let i=0,a=t.length;i<a;i++){let a=t[i],s=this.morphTargetsRelative;for(let t=0,i=a.count;t<i;t++)wg.fromBufferAttribute(a,t),s&&(wp.fromBufferAttribute(e,t),wg.add(wp)),n=Math.max(n,r.distanceToSquared(wg))}this.boundingSphere.radius=Math.sqrt(n),isNaN(this.boundingSphere.radius)&&bn('BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){let e=this.index,t=this.attributes;if(null===e||void 0===t.position||void 0===t.normal||void 0===t.uv)return void bn("BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");let r=t.position,n=t.normal,i=t.uv;!1===this.hasAttribute("tangent")&&this.setAttribute("tangent",new we(new Float32Array(4*r.count),4));let a=this.getAttribute("tangent"),s=[],o=[];for(let e=0;e<r.count;e++)s[e]=new bb,o[e]=new bb;let l=new bb,u=new bb,c=new bb,d=new bm,h=new bm,p=new bm,f=new bb,A=new bb,g=this.groups;0===g.length&&(g=[{start:0,count:e.count}]);for(let t=0,n=g.length;t<n;++t){let n=g[t],a=n.start,m=n.count;for(let t=a,n=a+m;t<n;t+=3)!function(e,t,n){l.fromBufferAttribute(r,e),u.fromBufferAttribute(r,t),c.fromBufferAttribute(r,n),d.fromBufferAttribute(i,e),h.fromBufferAttribute(i,t),p.fromBufferAttribute(i,n),u.sub(l),c.sub(l),h.sub(d),p.sub(d);let a=1/(h.x*p.y-p.x*h.y);isFinite(a)&&(f.copy(u).multiplyScalar(p.y).addScaledVector(c,-h.y).multiplyScalar(a),A.copy(c).multiplyScalar(h.x).addScaledVector(u,-p.x).multiplyScalar(a),s[e].add(f),s[t].add(f),s[n].add(f),o[e].add(A),o[t].add(A),o[n].add(A))}(e.getX(t+0),e.getX(t+1),e.getX(t+2))}let m=new bb,v=new bb,b=new bb,y=new bb;function w(e){b.fromBufferAttribute(n,e),y.copy(b);let t=s[e];m.copy(t),m.sub(b.multiplyScalar(b.dot(t))).normalize(),v.crossVectors(y,t);let r=v.dot(o[e]);a.setXYZW(e,m.x,m.y,m.z,r<0?-1:1)}for(let t=0,r=g.length;t<r;++t){let r=g[t],n=r.start,i=r.count;for(let t=n,r=n+i;t<r;t+=3)w(e.getX(t+0)),w(e.getX(t+1)),w(e.getX(t+2))}}computeVertexNormals(){let e=this.index,t=this.getAttribute("position");if(void 0!==t){let r=this.getAttribute("normal");if(void 0===r)r=new we(new Float32Array(3*t.count),3),this.setAttribute("normal",r);else for(let e=0,t=r.count;e<t;e++)r.setXYZ(e,0,0,0);let n=new bb,i=new bb,a=new bb,s=new bb,o=new bb,l=new bb,u=new bb,c=new bb;if(e)for(let d=0,h=e.count;d<h;d+=3){let h=e.getX(d+0),p=e.getX(d+1),f=e.getX(d+2);n.fromBufferAttribute(t,h),i.fromBufferAttribute(t,p),a.fromBufferAttribute(t,f),u.subVectors(a,i),c.subVectors(n,i),u.cross(c),s.fromBufferAttribute(r,h),o.fromBufferAttribute(r,p),l.fromBufferAttribute(r,f),s.add(u),o.add(u),l.add(u),r.setXYZ(h,s.x,s.y,s.z),r.setXYZ(p,o.x,o.y,o.z),r.setXYZ(f,l.x,l.y,l.z)}else for(let e=0,s=t.count;e<s;e+=3)n.fromBufferAttribute(t,e+0),i.fromBufferAttribute(t,e+1),a.fromBufferAttribute(t,e+2),u.subVectors(a,i),c.subVectors(n,i),u.cross(c),r.setXYZ(e+0,u.x,u.y,u.z),r.setXYZ(e+1,u.x,u.y,u.z),r.setXYZ(e+2,u.x,u.y,u.z);this.normalizeNormals(),r.needsUpdate=!0}}normalizeNormals(){let e=this.attributes.normal;for(let t=0,r=e.count;t<r;t++)wg.fromBufferAttribute(e,t),wg.normalize(),e.setXYZ(t,wg.x,wg.y,wg.z)}toNonIndexed(){function e(e,t){let r=e.array,n=e.itemSize,i=e.normalized,a=new r.constructor(t.length*n),s=0,o=0;for(let i=0,l=t.length;i<l;i++){s=e.isInterleavedBufferAttribute?t[i]*e.data.stride+e.offset:t[i]*n;for(let e=0;e<n;e++)a[o++]=r[s++]}return new we(a,n,i)}if(null===this.index)return br("BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;let t=new wm,r=this.index.array,n=this.attributes;for(let i in n){let a=e(n[i],r);t.setAttribute(i,a)}let i=this.morphAttributes;for(let n in i){let a=[],s=i[n];for(let t=0,n=s.length;t<n;t++){let n=e(s[t],r);a.push(n)}t.morphAttributes[n]=a}t.morphTargetsRelative=this.morphTargetsRelative;let a=this.groups;for(let e=0,r=a.length;e<r;e++){let r=a[e];t.addGroup(r.start,r.count,r.materialIndex)}return t}toJSON(){let e={metadata:{version:4.7,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,""!==this.name&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),void 0!==this.parameters){let t=this.parameters;for(let r in t)void 0!==t[r]&&(e[r]=t[r]);return e}e.data={attributes:{}};let t=this.index;null!==t&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let r=this.attributes;for(let t in r){let n=r[t];e.data.attributes[t]=n.toJSON(e.data)}let n={},i=!1;for(let t in this.morphAttributes){let r=this.morphAttributes[t],a=[];for(let t=0,n=r.length;t<n;t++){let n=r[t];a.push(n.toJSON(e.data))}a.length>0&&(n[t]=a,i=!0)}i&&(e.data.morphAttributes=n,e.data.morphTargetsRelative=this.morphTargetsRelative);let a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));let s=this.boundingSphere;return null!==s&&(e.data.boundingSphere=s.toJSON()),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let r=e.index;null!==r&&this.setIndex(r.clone());let n=e.attributes;for(let e in n){let r=n[e];this.setAttribute(e,r.clone(t))}let i=e.morphAttributes;for(let e in i){let r=[],n=i[e];for(let e=0,i=n.length;e<i;e++)r.push(n[e].clone(t));this.morphAttributes[e]=r}this.morphTargetsRelative=e.morphTargetsRelative;let a=e.groups;for(let e=0,t=a.length;e<t;e++){let t=a[e];this.addGroup(t.start,t.count,t.materialIndex)}let s=e.boundingBox;null!==s&&(this.boundingBox=s.clone());let o=e.boundingSphere;return null!==o&&(this.boundingSphere=o.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}let wv=new ys,wb=new ya,wy=new b8,ww=new bb,wx=new bb,wC=new bb,wE=new bb,wS=new bb,wM=new bb,wI=new bb,wB=new bb;class wT extends yP{constructor(e=new wm,t=new y2){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),void 0!==e.morphTargetInfluences&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),void 0!==e.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let r=e[t[0]];if(void 0!==r){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=r.length;e<t;e++){let t=r[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}getVertexPosition(e,t){let r=this.geometry,n=r.attributes.position,i=r.morphAttributes.position,a=r.morphTargetsRelative;t.fromBufferAttribute(n,e);let s=this.morphTargetInfluences;if(i&&s){wM.set(0,0,0);for(let r=0,n=i.length;r<n;r++){let n=s[r],o=i[r];0!==n&&(wS.fromBufferAttribute(o,e),a?wM.addScaledVector(wS,n):wM.addScaledVector(wS.sub(t),n))}t.add(wM)}return t}raycast(e,t){let r=this.geometry,n=this.material,i=this.matrixWorld;void 0===n||(null===r.boundingSphere&&r.computeBoundingSphere(),wy.copy(r.boundingSphere),wy.applyMatrix4(i),wb.copy(e.ray).recast(e.near),!1===wy.containsPoint(wb.origin)&&(null===wb.intersectSphere(wy,ww)||wb.origin.distanceToSquared(ww)>(e.far-e.near)**2)||(wv.copy(i).invert(),wb.copy(e.ray).applyMatrix4(wv),(null===r.boundingBox||!1!==wb.intersectsBox(r.boundingBox))&&this._computeIntersections(e,t,wb)))}_computeIntersections(e,t,r){let n,i=this.geometry,a=this.material,s=i.index,o=i.attributes.position,l=i.attributes.uv,u=i.attributes.uv1,c=i.attributes.normal,d=i.groups,h=i.drawRange;if(null!==s)if(Array.isArray(a))for(let i=0,o=d.length;i<o;i++){let o=d[i],p=a[o.materialIndex],f=Math.max(o.start,h.start),A=Math.min(s.count,Math.min(o.start+o.count,h.start+h.count));for(let i=f;i<A;i+=3)(n=wk(this,p,e,r,l,u,c,s.getX(i),s.getX(i+1),s.getX(i+2)))&&(n.faceIndex=Math.floor(i/3),n.face.materialIndex=o.materialIndex,t.push(n))}else{let i=Math.max(0,h.start),o=Math.min(s.count,h.start+h.count);for(let d=i;d<o;d+=3)(n=wk(this,a,e,r,l,u,c,s.getX(d),s.getX(d+1),s.getX(d+2)))&&(n.faceIndex=Math.floor(d/3),t.push(n))}else if(void 0!==o)if(Array.isArray(a))for(let i=0,s=d.length;i<s;i++){let s=d[i],p=a[s.materialIndex],f=Math.max(s.start,h.start),A=Math.min(o.count,Math.min(s.start+s.count,h.start+h.count));for(let i=f;i<A;i+=3)(n=wk(this,p,e,r,l,u,c,i,i+1,i+2))&&(n.faceIndex=Math.floor(i/3),n.face.materialIndex=s.materialIndex,t.push(n))}else{let i=Math.max(0,h.start),s=Math.min(o.count,h.start+h.count);for(let o=i;o<s;o+=3)(n=wk(this,a,e,r,l,u,c,o,o+1,o+2))&&(n.faceIndex=Math.floor(o/3),t.push(n))}}}function wk(e,t,r,n,i,a,s,o,l,u){e.getVertexPosition(o,wx),e.getVertexPosition(l,wC),e.getVertexPosition(u,wE);let c=function(e,t,r,n,i,a,s,o){if(null===(1===t.side?n.intersectTriangle(s,a,i,!0,o):n.intersectTriangle(i,a,s,0===t.side,o)))return null;wB.copy(o),wB.applyMatrix4(e.matrixWorld);let l=r.ray.origin.distanceTo(wB);return l<r.near||l>r.far?null:{distance:l,point:wB.clone(),object:e}}(e,t,r,n,wx,wC,wE,wI);if(c){let e=new bb;yq.getBarycoord(wI,wx,wC,wE,e),i&&(c.uv=yq.getInterpolatedAttribute(i,o,l,u,e,new bm)),a&&(c.uv1=yq.getInterpolatedAttribute(a,o,l,u,e,new bm)),s&&(c.normal=yq.getInterpolatedAttribute(s,o,l,u,e,new bb),c.normal.dot(n.direction)>0&&c.normal.multiplyScalar(-1));let t={a:o,b:l,c:u,normal:new bb,materialIndex:0};yq.getNormal(wx,wC,wE,t.normal),c.face=t,c.barycoord=e}return c}class w_ extends wm{constructor(e=1,t=1,r=1,n=1,i=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:r,widthSegments:n,heightSegments:i,depthSegments:a};const s=this;n=Math.floor(n),i=Math.floor(i);const o=[],l=[],u=[],c=[];let d=0,h=0;function p(e,t,r,n,i,a,p,f,A,g,m){let v=a/A,b=p/g,y=a/2,w=p/2,x=f/2,C=A+1,E=g+1,S=0,M=0,I=new bb;for(let a=0;a<E;a++){let s=a*b-w;for(let o=0;o<C;o++){let d=o*v-y;I[e]=d*n,I[t]=s*i,I[r]=x,l.push(I.x,I.y,I.z),I[e]=0,I[t]=0,I[r]=f>0?1:-1,u.push(I.x,I.y,I.z),c.push(o/A),c.push(1-a/g),S+=1}}for(let e=0;e<g;e++)for(let t=0;t<A;t++){let r=d+t+C*e,n=d+t+C*(e+1),i=d+(t+1)+C*(e+1),a=d+(t+1)+C*e;o.push(r,n,a),o.push(n,i,a),M+=6}s.addGroup(h,M,m),h+=M,d+=S}p("z","y","x",-1,-1,r,t,e,a=Math.floor(a),i,0),p("z","y","x",1,-1,r,t,-e,a,i,1),p("x","z","y",1,1,e,r,t,n,a,2),p("x","z","y",1,-1,e,r,-t,n,a,3),p("x","y","z",1,-1,e,t,r,n,i,4),p("x","y","z",-1,-1,e,t,-r,n,i,5),this.setIndex(o),this.setAttribute("position",new wu(l,3)),this.setAttribute("normal",new wu(u,3)),this.setAttribute("uv",new wu(c,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new w_(e.width,e.height,e.depth,e.widthSegments,e.heightSegments,e.depthSegments)}}function wR(e){let t={};for(let r in e)for(let n in t[r]={},e[r]){let i=e[r][n];i&&(i.isColor||i.isMatrix3||i.isMatrix4||i.isVector2||i.isVector3||i.isVector4||i.isTexture||i.isQuaternion)?i.isRenderTargetTexture?(br("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),t[r][n]=null):t[r][n]=i.clone():Array.isArray(i)?t[r][n]=i.slice():t[r][n]=i}return t}function wP(e){let t={};for(let r=0;r<e.length;r++){let n=wR(e[r]);for(let e in n)t[e]=n[e]}return t}function wD(e){let t=e.getRenderTarget();return null===t?e.outputColorSpace:!0===t.isXRRenderTarget?t.texture.colorSpace:bM.workingColorSpace}let wL={clone:wR,merge:wP};class wF extends y1{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader="void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",this.fragmentShader="void main() {\n gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}",this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,void 0!==e&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=wR(e.uniforms),this.uniformsGroups=function(e){let t=[];for(let r=0;r<e.length;r++)t.push(e[r].clone());return t}(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this.defaultAttributeValues=Object.assign({},e.defaultAttributeValues),this.index0AttributeName=e.index0AttributeName,this.uniformsNeedUpdate=e.uniformsNeedUpdate,this}toJSON(e){let t=super.toJSON(e);for(let r in t.glslVersion=this.glslVersion,t.uniforms={},this.uniforms){let n=this.uniforms[r].value;n&&n.isTexture?t.uniforms[r]={type:"t",value:n.toJSON(e).uuid}:n&&n.isColor?t.uniforms[r]={type:"c",value:n.getHex()}:n&&n.isVector2?t.uniforms[r]={type:"v2",value:n.toArray()}:n&&n.isVector3?t.uniforms[r]={type:"v3",value:n.toArray()}:n&&n.isVector4?t.uniforms[r]={type:"v4",value:n.toArray()}:n&&n.isMatrix3?t.uniforms[r]={type:"m3",value:n.toArray()}:n&&n.isMatrix4?t.uniforms[r]={type:"m4",value:n.toArray()}:t.uniforms[r]={value:n}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;let r={};for(let e in this.extensions)!0===this.extensions[e]&&(r[e]=!0);return Object.keys(r).length>0&&(t.extensions=r),t}}class wO extends yP{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new ys,this.projectionMatrix=new ys,this.projectionMatrixInverse=new ys,this.coordinateSystem=2e3,this._reversedDepth=!1}get reversedDepth(){return this._reversedDepth}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}let wN=new bb,wQ=new bm,wU=new bm;class wz extends wO{constructor(e=50,t=1,r=.1,n=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=r,this.far=n,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){let t=.5*this.getFilmHeight()/e;this.fov=2*bu*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){let e=Math.tan(.5*bl*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return 2*bu*Math.atan(Math.tan(.5*bl*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,r){wN.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(wN.x,wN.y).multiplyScalar(-e/wN.z),wN.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),r.set(wN.x,wN.y).multiplyScalar(-e/wN.z)}getViewSize(e,t){return this.getViewBounds(e,wQ,wU),t.subVectors(wU,wQ)}setViewOffset(e,t,r,n,i,a){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=r,this.view.offsetY=n,this.view.width=i,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=this.near,t=e*Math.tan(.5*bl*this.fov)/this.zoom,r=2*t,n=this.aspect*r,i=-.5*n,a=this.view;if(null!==this.view&&this.view.enabled){let e=a.fullWidth,s=a.fullHeight;i+=a.offsetX*n/e,t-=a.offsetY*r/s,n*=a.width/e,r*=a.height/s}let s=this.filmOffset;0!==s&&(i+=e*s/this.getFilmWidth()),this.projectionMatrix.makePerspective(i,i+n,t,t-r,e,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}class wH extends yP{constructor(e,t,r){super(),this.type="CubeCamera",this.renderTarget=r,this.coordinateSystem=null,this.activeMipmapLevel=0;const n=new wz(-90,1,e,t);n.layers=this.layers,this.add(n);const i=new wz(-90,1,e,t);i.layers=this.layers,this.add(i);const a=new wz(-90,1,e,t);a.layers=this.layers,this.add(a);const s=new wz(-90,1,e,t);s.layers=this.layers,this.add(s);const o=new wz(-90,1,e,t);o.layers=this.layers,this.add(o);const l=new wz(-90,1,e,t);l.layers=this.layers,this.add(l)}updateCoordinateSystem(){let e=this.coordinateSystem,t=this.children.concat(),[r,n,i,a,s,o]=t;for(let e of t)this.remove(e);if(2e3===e)r.up.set(0,1,0),r.lookAt(1,0,0),n.up.set(0,1,0),n.lookAt(-1,0,0),i.up.set(0,0,-1),i.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),s.up.set(0,1,0),s.lookAt(0,0,1),o.up.set(0,1,0),o.lookAt(0,0,-1);else if(2001===e)r.up.set(0,-1,0),r.lookAt(-1,0,0),n.up.set(0,-1,0),n.lookAt(1,0,0),i.up.set(0,0,1),i.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),s.up.set(0,-1,0),s.lookAt(0,0,1),o.up.set(0,-1,0),o.lookAt(0,0,-1);else throw Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(let e of t)this.add(e),e.updateMatrixWorld()}update(e,t){null===this.parent&&this.updateMatrixWorld();let{renderTarget:r,activeMipmapLevel:n}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());let[i,a,s,o,l,u]=this.children,c=e.getRenderTarget(),d=e.getActiveCubeFace(),h=e.getActiveMipmapLevel(),p=e.xr.enabled;e.xr.enabled=!1;let f=r.texture.generateMipmaps;r.texture.generateMipmaps=!1,e.setRenderTarget(r,0,n),e.render(t,i),e.setRenderTarget(r,1,n),e.render(t,a),e.setRenderTarget(r,2,n),e.render(t,s),e.setRenderTarget(r,3,n),e.render(t,o),e.setRenderTarget(r,4,n),e.render(t,l),r.texture.generateMipmaps=f,e.setRenderTarget(r,5,n),e.render(t,u),e.setRenderTarget(c,d,h),e.xr.enabled=p,r.texture.needsPMREMUpdate=!0}}class wG extends bL{constructor(e=[],t=301,r,n,i,a,s,o,l,u){super(e,t,r,n,i,a,s,o,l,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class wj extends bN{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const r={width:e,height:e,depth:1};this.texture=new wG([r,r,r,r,r,r]),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let r={uniforms:{tEquirect:{value:null}},vertexShader:`
6
+ For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return rd.useEffect(()=>{e&&(document.getElementById(e)||console.error(r))},[r,e]),null},u1=({contentRef:e,descriptionId:t})=>{let r=u$("DialogDescriptionWarning"),n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${r.contentName}}.`;return rd.useEffect(()=>{let r=e.current?.getAttribute("aria-describedby");t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null};let u2=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)},u3=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim();var u4={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let u5=(0,rd.forwardRef)(({color:e="currentColor",size:t=24,strokeWidth:r=2,absoluteStrokeWidth:n,className:i="",children:a,iconNode:s,...o},l)=>(0,rd.createElement)("svg",{ref:l,...u4,width:t,height:t,stroke:e,strokeWidth:n?24*Number(r)/Number(t):r,className:u3("lucide",i),...!a&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0})(o)&&{"aria-hidden":"true"},...o},[...s.map(([e,t])=>(0,rd.createElement)(e,t)),...Array.isArray(a)?a:[a]])),u9=(e,t)=>{let r=(0,rd.forwardRef)(({className:r,...n},i)=>(0,rd.createElement)(u5,{ref:i,iconNode:t,className:u3(`lucide-${u2(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,r),...n}));return r.displayName=u2(e),r},u8=u9("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),u6=u9("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]),u7=u9("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]),ce=u9("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]),ct=u9("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),cr=u9("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]),cn=u9("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);var ci=rd.forwardRef((e,t)=>(0,rp.jsx)(ly.label,{...e,ref:t,onMouseDown:t=>{t.target.closest("button, input, select, textarea")||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));ci.displayName="Label";var ca="horizontal",cs=["horizontal","vertical"],co=rd.forwardRef((e,t)=>{var r;let{decorative:n,orientation:i=ca,...a}=e,s=(r=i,cs.includes(r))?i:ca;return(0,rp.jsx)(ly.div,{"data-orientation":s,...n?{role:"none"}:{"aria-orientation":"vertical"===s?s:void 0,role:"separator"},...a,ref:t})});function cl(e,[t,r]){return Math.min(r,Math.max(t,e))}function cu(e){let t=e+"CollectionProvider",[r,n]=lc(t),[i,a]=r(t,{collectionRef:{current:null},itemMap:new Map}),s=e=>{let{scope:t,children:r}=e,n=rd.useRef(null),a=rd.useRef(new Map).current;return(0,rp.jsx)(i,{scope:t,itemMap:a,collectionRef:n,children:r})};s.displayName=t;let o=e+"CollectionSlot",l=lm(o),u=rd.forwardRef((e,t)=>{let{scope:r,children:n}=e,i=on(t,a(o,r).collectionRef);return(0,rp.jsx)(l,{ref:i,children:n})});u.displayName=o;let c=e+"CollectionItemSlot",d="data-radix-collection-item",h=lm(c),p=rd.forwardRef((e,t)=>{let{scope:r,children:n,...i}=e,s=rd.useRef(null),o=on(t,s),l=a(c,r);return rd.useEffect(()=>(l.itemMap.set(s,{ref:s,...i}),()=>void l.itemMap.delete(s))),(0,rp.jsx)(h,{...{[d]:""},ref:o,children:n})});return p.displayName=c,[{Provider:s,Slot:u,ItemSlot:p},function(t){let r=a(e+"CollectionConsumer",t);return rd.useCallback(()=>{let e=r.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${d}]`));return Array.from(r.itemMap.values()).sort((e,r)=>t.indexOf(e.ref.current)-t.indexOf(r.ref.current))},[r.collectionRef,r.itemMap])},n]}co.displayName="Separator";var cc=rd.createContext(void 0);function cd(e){let t=rd.useContext(cc);return e||t||"ltr"}let ch=["top","right","bottom","left"],cp=Math.min,cf=Math.max,cA=Math.round,cg=Math.floor,cm=e=>({x:e,y:e}),cv={left:"right",right:"left",bottom:"top",top:"bottom"},cb={start:"end",end:"start"};function cy(e,t){return"function"==typeof e?e(t):e}function cw(e){return e.split("-")[0]}function cx(e){return e.split("-")[1]}function cC(e){return"x"===e?"y":"x"}function cE(e){return"y"===e?"height":"width"}let cS=new Set(["top","bottom"]);function cM(e){return cS.has(cw(e))?"y":"x"}function cI(e){return e.replace(/start|end/g,e=>cb[e])}let cB=["left","right"],cT=["right","left"],ck=["top","bottom"],c_=["bottom","top"];function cR(e){return e.replace(/left|right|bottom|top/g,e=>cv[e])}function cP(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function cD(e){let{x:t,y:r,width:n,height:i}=e;return{width:n,height:i,top:r,left:t,right:t+n,bottom:r+i,x:t,y:r}}function cL(e,t,r){let n,{reference:i,floating:a}=e,s=cM(t),o=cC(cM(t)),l=cE(o),u=cw(t),c="y"===s,d=i.x+i.width/2-a.width/2,h=i.y+i.height/2-a.height/2,p=i[l]/2-a[l]/2;switch(u){case"top":n={x:d,y:i.y-a.height};break;case"bottom":n={x:d,y:i.y+i.height};break;case"right":n={x:i.x+i.width,y:h};break;case"left":n={x:i.x-a.width,y:h};break;default:n={x:i.x,y:i.y}}switch(cx(t)){case"start":n[o]-=p*(r&&c?-1:1);break;case"end":n[o]+=p*(r&&c?-1:1)}return n}let cF=async(e,t,r)=>{let{placement:n="bottom",strategy:i="absolute",middleware:a=[],platform:s}=r,o=a.filter(Boolean),l=await (null==s.isRTL?void 0:s.isRTL(t)),u=await s.getElementRects({reference:e,floating:t,strategy:i}),{x:c,y:d}=cL(u,n,l),h=n,p={},f=0;for(let r=0;r<o.length;r++){let{name:a,fn:A}=o[r],{x:g,y:m,data:v,reset:b}=await A({x:c,y:d,initialPlacement:n,placement:h,strategy:i,middlewareData:p,rects:u,platform:s,elements:{reference:e,floating:t}});c=null!=g?g:c,d=null!=m?m:d,p={...p,[a]:{...p[a],...v}},b&&f<=50&&(f++,"object"==typeof b&&(b.placement&&(h=b.placement),b.rects&&(u=!0===b.rects?await s.getElementRects({reference:e,floating:t,strategy:i}):b.rects),{x:c,y:d}=cL(u,h,l)),r=-1)}return{x:c,y:d,placement:h,strategy:i,middlewareData:p}};async function cO(e,t){var r;void 0===t&&(t={});let{x:n,y:i,platform:a,rects:s,elements:o,strategy:l}=e,{boundary:u="clippingAncestors",rootBoundary:c="viewport",elementContext:d="floating",altBoundary:h=!1,padding:p=0}=cy(t,e),f=cP(p),A=o[h?"floating"===d?"reference":"floating":d],g=cD(await a.getClippingRect({element:null==(r=await (null==a.isElement?void 0:a.isElement(A)))||r?A:A.contextElement||await (null==a.getDocumentElement?void 0:a.getDocumentElement(o.floating)),boundary:u,rootBoundary:c,strategy:l})),m="floating"===d?{x:n,y:i,width:s.floating.width,height:s.floating.height}:s.reference,v=await (null==a.getOffsetParent?void 0:a.getOffsetParent(o.floating)),b=await (null==a.isElement?void 0:a.isElement(v))&&await (null==a.getScale?void 0:a.getScale(v))||{x:1,y:1},y=cD(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:m,offsetParent:v,strategy:l}):m);return{top:(g.top-y.top+f.top)/b.y,bottom:(y.bottom-g.bottom+f.bottom)/b.y,left:(g.left-y.left+f.left)/b.x,right:(y.right-g.right+f.right)/b.x}}function cN(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function cQ(e){return ch.some(t=>e[t]>=0)}let cU=new Set(["left","top"]);async function cz(e,t){let{placement:r,platform:n,elements:i}=e,a=await (null==n.isRTL?void 0:n.isRTL(i.floating)),s=cw(r),o=cx(r),l="y"===cM(r),u=cU.has(s)?-1:1,c=a&&l?-1:1,d=cy(t,e),{mainAxis:h,crossAxis:p,alignmentAxis:f}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return o&&"number"==typeof f&&(p="end"===o?-1*f:f),l?{x:p*c,y:h*u}:{x:h*u,y:p*c}}function cH(){return"u">typeof window}function cG(e){return cW(e)?(e.nodeName||"").toLowerCase():"#document"}function cj(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function cV(e){var t;return null==(t=(cW(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function cW(e){return!!cH()&&(e instanceof Node||e instanceof cj(e).Node)}function cq(e){return!!cH()&&(e instanceof Element||e instanceof cj(e).Element)}function cY(e){return!!cH()&&(e instanceof HTMLElement||e instanceof cj(e).HTMLElement)}function cJ(e){return!(!cH()||"u"<typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof cj(e).ShadowRoot)}let cK=new Set(["inline","contents"]);function cX(e){let{overflow:t,overflowX:r,overflowY:n,display:i}=c6(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+r)&&!cK.has(i)}let cZ=new Set(["table","td","th"]),c$=[":popover-open",":modal"];function c0(e){return c$.some(t=>{try{return e.matches(t)}catch(e){return!1}})}let c1=["transform","translate","scale","rotate","perspective"],c2=["transform","translate","scale","rotate","perspective","filter"],c3=["paint","layout","strict","content"];function c4(e){let t=c5(),r=cq(e)?c6(e):e;return c1.some(e=>!!r[e]&&"none"!==r[e])||!!r.containerType&&"normal"!==r.containerType||!t&&!!r.backdropFilter&&"none"!==r.backdropFilter||!t&&!!r.filter&&"none"!==r.filter||c2.some(e=>(r.willChange||"").includes(e))||c3.some(e=>(r.contain||"").includes(e))}function c5(){return!("u"<typeof CSS)&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}let c9=new Set(["html","body","#document"]);function c8(e){return c9.has(cG(e))}function c6(e){return cj(e).getComputedStyle(e)}function c7(e){return cq(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function de(e){if("html"===cG(e))return e;let t=e.assignedSlot||e.parentNode||cJ(e)&&e.host||cV(e);return cJ(t)?t.host:t}function dt(e,t,r){var n;void 0===t&&(t=[]),void 0===r&&(r=!0);let i=function e(t){let r=de(t);return c8(r)?t.ownerDocument?t.ownerDocument.body:t.body:cY(r)&&cX(r)?r:e(r)}(e),a=i===(null==(n=e.ownerDocument)?void 0:n.body),s=cj(i);if(a){let e=dr(s);return t.concat(s,s.visualViewport||[],cX(i)?i:[],e&&r?dt(e):[])}return t.concat(i,dt(i,[],r))}function dr(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function dn(e){let t=c6(e),r=parseFloat(t.width)||0,n=parseFloat(t.height)||0,i=cY(e),a=i?e.offsetWidth:r,s=i?e.offsetHeight:n,o=cA(r)!==a||cA(n)!==s;return o&&(r=a,n=s),{width:r,height:n,$:o}}function di(e){return cq(e)?e:e.contextElement}function da(e){let t=di(e);if(!cY(t))return cm(1);let r=t.getBoundingClientRect(),{width:n,height:i,$:a}=dn(t),s=(a?cA(r.width):r.width)/n,o=(a?cA(r.height):r.height)/i;return s&&Number.isFinite(s)||(s=1),o&&Number.isFinite(o)||(o=1),{x:s,y:o}}let ds=cm(0);function dl(e){let t=cj(e);return c5()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:ds}function du(e,t,r,n){var i;void 0===t&&(t=!1),void 0===r&&(r=!1);let a=e.getBoundingClientRect(),s=di(e),o=cm(1);t&&(n?cq(n)&&(o=da(n)):o=da(e));let l=(void 0===(i=r)&&(i=!1),n&&(!i||n===cj(s))&&i)?dl(s):cm(0),u=(a.left+l.x)/o.x,c=(a.top+l.y)/o.y,d=a.width/o.x,h=a.height/o.y;if(s){let e=cj(s),t=n&&cq(n)?cj(n):n,r=e,i=dr(r);for(;i&&n&&t!==r;){let e=da(i),t=i.getBoundingClientRect(),n=c6(i),a=t.left+(i.clientLeft+parseFloat(n.paddingLeft))*e.x,s=t.top+(i.clientTop+parseFloat(n.paddingTop))*e.y;u*=e.x,c*=e.y,d*=e.x,h*=e.y,u+=a,c+=s,i=dr(r=cj(i))}}return cD({width:d,height:h,x:u,y:c})}function dc(e,t){let r=c7(e).scrollLeft;return t?t.left+r:du(cV(e)).left+r}function dd(e,t){let r=e.getBoundingClientRect();return{x:r.left+t.scrollLeft-dc(e,r),y:r.top+t.scrollTop}}let dh=new Set(["absolute","fixed"]);function dp(e,t,r){var n;let i;if("viewport"===t)i=function(e,t){let r=cj(e),n=cV(e),i=r.visualViewport,a=n.clientWidth,s=n.clientHeight,o=0,l=0;if(i){a=i.width,s=i.height;let e=c5();(!e||e&&"fixed"===t)&&(o=i.offsetLeft,l=i.offsetTop)}let u=dc(n);if(u<=0){let e=n.ownerDocument,t=e.body,r=getComputedStyle(t),i="CSS1Compat"===e.compatMode&&parseFloat(r.marginLeft)+parseFloat(r.marginRight)||0,s=Math.abs(n.clientWidth-t.clientWidth-i);s<=25&&(a-=s)}else u<=25&&(a+=u);return{width:a,height:s,x:o,y:l}}(e,r);else if("document"===t){let t,r,a,s,o,l,u;n=cV(e),t=cV(n),r=c7(n),a=n.ownerDocument.body,s=cf(t.scrollWidth,t.clientWidth,a.scrollWidth,a.clientWidth),o=cf(t.scrollHeight,t.clientHeight,a.scrollHeight,a.clientHeight),l=-r.scrollLeft+dc(n),u=-r.scrollTop,"rtl"===c6(a).direction&&(l+=cf(t.clientWidth,a.clientWidth)-s),i={width:s,height:o,x:l,y:u}}else if(cq(t)){let e,n,a,s,o,l;n=(e=du(t,!0,"fixed"===r)).top+t.clientTop,a=e.left+t.clientLeft,s=cY(t)?da(t):cm(1),o=t.clientWidth*s.x,l=t.clientHeight*s.y,i={width:o,height:l,x:a*s.x,y:n*s.y}}else{let r=dl(e);i={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return cD(i)}function df(e){return"static"===c6(e).position}function dA(e,t){if(!cY(e)||"fixed"===c6(e).position)return null;if(t)return t(e);let r=e.offsetParent;return cV(e)===r&&(r=r.ownerDocument.body),r}function dg(e,t){var r;let n=cj(e);if(c0(e))return n;if(!cY(e)){let t=de(e);for(;t&&!c8(t);){if(cq(t)&&!df(t))return t;t=de(t)}return n}let i=dA(e,t);for(;i&&(r=i,cZ.has(cG(r)))&&df(i);)i=dA(i,t);return i&&c8(i)&&df(i)&&!c4(i)?n:i||function(e){let t=de(e);for(;cY(t)&&!c8(t);){if(c4(t))return t;if(c0(t))break;t=de(t)}return null}(e)||n}let dm=async function(e){let t=this.getOffsetParent||dg,r=this.getDimensions,n=await r(e.floating);return{reference:function(e,t,r){let n=cY(t),i=cV(t),a="fixed"===r,s=du(e,!0,a,t),o={scrollLeft:0,scrollTop:0},l=cm(0);if(n||!n&&!a)if(("body"!==cG(t)||cX(i))&&(o=c7(t)),n){let e=du(t,!0,a,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else i&&(l.x=dc(i));a&&!n&&i&&(l.x=dc(i));let u=!i||n||a?cm(0):dd(i,o);return{x:s.left+o.scrollLeft-l.x-u.x,y:s.top+o.scrollTop-l.y-u.y,width:s.width,height:s.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}},dv={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:r,offsetParent:n,strategy:i}=e,a="fixed"===i,s=cV(n),o=!!t&&c0(t.floating);if(n===s||o&&a)return r;let l={scrollLeft:0,scrollTop:0},u=cm(1),c=cm(0),d=cY(n);if((d||!d&&!a)&&(("body"!==cG(n)||cX(s))&&(l=c7(n)),cY(n))){let e=du(n);u=da(n),c.x=e.x+n.clientLeft,c.y=e.y+n.clientTop}let h=!s||d||a?cm(0):dd(s,l);return{width:r.width*u.x,height:r.height*u.y,x:r.x*u.x-l.scrollLeft*u.x+c.x+h.x,y:r.y*u.y-l.scrollTop*u.y+c.y+h.y}},getDocumentElement:cV,getClippingRect:function(e){let{element:t,boundary:r,rootBoundary:n,strategy:i}=e,a=[..."clippingAncestors"===r?c0(t)?[]:function(e,t){let r=t.get(e);if(r)return r;let n=dt(e,[],!1).filter(e=>cq(e)&&"body"!==cG(e)),i=null,a="fixed"===c6(e).position,s=a?de(e):e;for(;cq(s)&&!c8(s);){let t=c6(s),r=c4(s);r||"fixed"!==t.position||(i=null),(a?!r&&!i:!r&&"static"===t.position&&!!i&&dh.has(i.position)||cX(s)&&!r&&function e(t,r){let n=de(t);return!(n===r||!cq(n)||c8(n))&&("fixed"===c6(n).position||e(n,r))}(e,s))?n=n.filter(e=>e!==s):i=t,s=de(s)}return t.set(e,n),n}(t,this._c):[].concat(r),n],s=a[0],o=a.reduce((e,r)=>{let n=dp(t,r,i);return e.top=cf(n.top,e.top),e.right=cp(n.right,e.right),e.bottom=cp(n.bottom,e.bottom),e.left=cf(n.left,e.left),e},dp(t,s,i));return{width:o.right-o.left,height:o.bottom-o.top,x:o.left,y:o.top}},getOffsetParent:dg,getElementRects:dm,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:r}=dn(e);return{width:t,height:r}},getScale:da,isElement:cq,isRTL:function(e){return"rtl"===c6(e).direction}};function db(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}let dy=e=>({name:"arrow",options:e,async fn(t){let{x:r,y:n,placement:i,rects:a,platform:s,elements:o,middlewareData:l}=t,{element:u,padding:c=0}=cy(e,t)||{};if(null==u)return{};let d=cP(c),h={x:r,y:n},p=cC(cM(i)),f=cE(p),A=await s.getDimensions(u),g="y"===p,m=g?"clientHeight":"clientWidth",v=a.reference[f]+a.reference[p]-h[p]-a.floating[f],b=h[p]-a.reference[p],y=await (null==s.getOffsetParent?void 0:s.getOffsetParent(u)),w=y?y[m]:0;w&&await (null==s.isElement?void 0:s.isElement(y))||(w=o.floating[m]||a.floating[f]);let x=w/2-A[f]/2-1,C=cp(d[g?"top":"left"],x),E=cp(d[g?"bottom":"right"],x),S=w-A[f]-E,M=w/2-A[f]/2+(v/2-b/2),I=cf(C,cp(M,S)),B=!l.arrow&&null!=cx(i)&&M!==I&&a.reference[f]/2-(M<C?C:E)-A[f]/2<0,T=B?M<C?M-C:M-S:0;return{[p]:h[p]+T,data:{[p]:I,centerOffset:M-I-T,...B&&{alignmentOffset:T}},reset:B}}});var dw="u">typeof document?rd.useLayoutEffect:function(){};function dx(e,t){let r,n,i;if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if((r=e.length)!==t.length)return!1;for(n=r;0!=n--;)if(!dx(e[n],t[n]))return!1;return!0}if((r=(i=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(n=r;0!=n--;)if(!({}).hasOwnProperty.call(t,i[n]))return!1;for(n=r;0!=n--;){let r=i[n];if(("_owner"!==r||!e.$$typeof)&&!dx(e[r],t[r]))return!1}return!0}return e!=e&&t!=t}function dC(e){return"u"<typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function dE(e,t){let r=dC(e);return Math.round(t*r)/r}function dS(e){let t=rd.useRef(e);return dw(()=>{t.current=e}),t}var dM=rd.forwardRef((e,t)=>{let{children:r,width:n=10,height:i=5,...a}=e;return(0,rp.jsx)(ly.svg,{...a,ref:t,width:n,height:i,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?r:(0,rp.jsx)("polygon",{points:"0,0 30,0 15,10"})})});function dI(e){let[t,r]=rd.useState(void 0);return ld(()=>{if(e){r({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let n,i;if(!Array.isArray(t)||!t.length)return;let a=t[0];if("borderBoxSize"in a){let e=a.borderBoxSize,t=Array.isArray(e)?e[0]:e;n=t.inlineSize,i=t.blockSize}else n=e.offsetWidth,i=e.offsetHeight;r({width:n,height:i})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}r(void 0)},[e]),t}dM.displayName="Arrow";var dB="Popper",[dT,dk]=lc(dB),[d_,dR]=dT(dB),dP=e=>{let{__scopePopper:t,children:r}=e,[n,i]=rd.useState(null);return(0,rp.jsx)(d_,{scope:t,anchor:n,onAnchorChange:i,children:r})};dP.displayName=dB;var dD="PopperAnchor",dL=rd.forwardRef((e,t)=>{let{__scopePopper:r,virtualRef:n,...i}=e,a=dR(dD,r),s=rd.useRef(null),o=on(t,s),l=rd.useRef(null);return rd.useEffect(()=>{let e=l.current;l.current=n?.current||s.current,e!==l.current&&a.onAnchorChange(l.current)}),n?null:(0,rp.jsx)(ly.div,{...i,ref:o})});dL.displayName=dD;var dF="PopperContent",[dO,dN]=dT(dF),dQ=rd.forwardRef((e,t)=>{var r,n,i,a,s,o,l,u,c,d,h,p,f,A,g,m,v,b,y,w,x;let{__scopePopper:C,side:E="bottom",sideOffset:S=0,align:M="center",alignOffset:I=0,arrowPadding:B=0,avoidCollisions:T=!0,collisionBoundary:k=[],collisionPadding:_=0,sticky:R="partial",hideWhenDetached:P=!1,updatePositionStrategy:D="optimized",onPlaced:L,...F}=e,O=dR(dF,C),[N,Q]=rd.useState(null),U=on(t,e=>Q(e)),[z,H]=rd.useState(null),G=dI(z),j=G?.width??0,V=G?.height??0,W="number"==typeof _?_:{top:0,right:0,bottom:0,left:0,..._},q=Array.isArray(k)?k:[k],Y=q.length>0,J={padding:W,boundary:q.filter(dG),altBoundary:Y},{refs:K,floatingStyles:X,placement:Z,isPositioned:$,middlewareData:ee}=function(e){void 0===e&&(e={});let{placement:t="bottom",strategy:r="absolute",middleware:n=[],platform:i,elements:{reference:a,floating:s}={},transform:o=!0,whileElementsMounted:l,open:u}=e,[c,d]=rd.useState({x:0,y:0,strategy:r,placement:t,middlewareData:{},isPositioned:!1}),[h,p]=rd.useState(n);dx(h,n)||p(n);let[f,A]=rd.useState(null),[g,m]=rd.useState(null),v=rd.useCallback(e=>{e!==x.current&&(x.current=e,A(e))},[]),b=rd.useCallback(e=>{e!==C.current&&(C.current=e,m(e))},[]),y=a||f,w=s||g,x=rd.useRef(null),C=rd.useRef(null),E=rd.useRef(c),S=null!=l,M=dS(l),I=dS(i),B=dS(u),T=rd.useCallback(()=>{var e,n;let i,a,s;if(!x.current||!C.current)return;let o={placement:t,strategy:r,middleware:h};I.current&&(o.platform=I.current),(e=x.current,n=C.current,i=new Map,s={...(a={platform:dv,...o}).platform,_c:i},cF(e,n,{...a,platform:s})).then(e=>{let t={...e,isPositioned:!1!==B.current};k.current&&!dx(E.current,t)&&(E.current=t,al.flushSync(()=>{d(t)}))})},[h,t,r,I,B]);dw(()=>{!1===u&&E.current.isPositioned&&(E.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[u]);let k=rd.useRef(!1);dw(()=>(k.current=!0,()=>{k.current=!1}),[]),dw(()=>{if(y&&(x.current=y),w&&(C.current=w),y&&w){if(M.current)return M.current(y,w,T);T()}},[y,w,T,M,S]);let _=rd.useMemo(()=>({reference:x,floating:C,setReference:v,setFloating:b}),[v,b]),R=rd.useMemo(()=>({reference:y,floating:w}),[y,w]),P=rd.useMemo(()=>{let e={position:r,left:0,top:0};if(!R.floating)return e;let t=dE(R.floating,c.x),n=dE(R.floating,c.y);return o?{...e,transform:"translate("+t+"px, "+n+"px)",...dC(R.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:t,top:n}},[r,o,R.floating,c.x,c.y]);return rd.useMemo(()=>({...c,update:T,refs:_,elements:R,floatingStyles:P}),[c,T,_,R,P])}({strategy:"fixed",placement:E+("center"!==M?"-"+M:""),whileElementsMounted:(...e)=>(function(e,t,r,n){let i;void 0===n&&(n={});let{ancestorScroll:a=!0,ancestorResize:s=!0,elementResize:o="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:u=!1}=n,c=di(e),d=a||s?[...c?dt(c):[],...dt(t)]:[];d.forEach(e=>{a&&e.addEventListener("scroll",r,{passive:!0}),s&&e.addEventListener("resize",r)});let h=c&&l?function(e,t){let r,n=null,i=cV(e);function a(){var e;clearTimeout(r),null==(e=n)||e.disconnect(),n=null}return!function s(o,l){void 0===o&&(o=!1),void 0===l&&(l=1),a();let u=e.getBoundingClientRect(),{left:c,top:d,width:h,height:p}=u;if(o||t(),!h||!p)return;let f={rootMargin:-cg(d)+"px "+-cg(i.clientWidth-(c+h))+"px "+-cg(i.clientHeight-(d+p))+"px "+-cg(c)+"px",threshold:cf(0,cp(1,l))||1},A=!0;function g(t){let n=t[0].intersectionRatio;if(n!==l){if(!A)return s();n?s(!1,n):r=setTimeout(()=>{s(!1,1e-7)},1e3)}1!==n||db(u,e.getBoundingClientRect())||s(),A=!1}try{n=new IntersectionObserver(g,{...f,root:i.ownerDocument})}catch(e){n=new IntersectionObserver(g,f)}n.observe(e)}(!0),a}(c,r):null,p=-1,f=null;o&&(f=new ResizeObserver(e=>{let[n]=e;n&&n.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var e;null==(e=f)||e.observe(t)})),r()}),c&&!u&&f.observe(c),f.observe(t));let A=u?du(e):null;return u&&function t(){let n=du(e);A&&!db(A,n)&&r(),A=n,i=requestAnimationFrame(t)}(),r(),()=>{var e;d.forEach(e=>{a&&e.removeEventListener("scroll",r),s&&e.removeEventListener("resize",r)}),null==h||h(),null==(e=f)||e.disconnect(),f=null,u&&cancelAnimationFrame(i)}})(...e,{animationFrame:"always"===D}),elements:{reference:O.anchor},middleware:[{...{name:"offset",options:i=r={mainAxis:S+V,alignmentAxis:I},async fn(e){var t,r;let{x:n,y:a,placement:s,middlewareData:o}=e,l=await cz(e,i);return s===(null==(t=o.offset)?void 0:t.placement)&&null!=(r=o.arrow)&&r.alignmentOffset?{}:{x:n+l.x,y:a+l.y,data:{...l,placement:s}}}},options:[r,n]},T&&{...{name:"shift",options:c=l={mainAxis:!0,crossAxis:!1,limiter:"partial"===R?{...(void 0===(o=a)&&(o={}),{options:o,fn(e){let{x:t,y:r,placement:n,rects:i,middlewareData:a}=e,{offset:s=0,mainAxis:l=!0,crossAxis:u=!0}=cy(o,e),c={x:t,y:r},d=cM(n),h=cC(d),p=c[h],f=c[d],A=cy(s,e),g="number"==typeof A?{mainAxis:A,crossAxis:0}:{mainAxis:0,crossAxis:0,...A};if(l){let e="y"===h?"height":"width",t=i.reference[h]-i.floating[e]+g.mainAxis,r=i.reference[h]+i.reference[e]-g.mainAxis;p<t?p=t:p>r&&(p=r)}if(u){var m,v;let e="y"===h?"width":"height",t=cU.has(cw(n)),r=i.reference[d]-i.floating[e]+(t&&(null==(m=a.offset)?void 0:m[d])||0)+(t?0:g.crossAxis),s=i.reference[d]+i.reference[e]+(t?0:(null==(v=a.offset)?void 0:v[d])||0)-(t?g.crossAxis:0);f<r?f=r:f>s&&(f=s)}return{[h]:p,[d]:f}}}),options:[a,s]}:void 0,...J},async fn(e){let{x:t,y:r,placement:n}=e,{mainAxis:i=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:r}=e;return{x:t,y:r}}},...o}=cy(c,e),l={x:t,y:r},u=await cO(e,o),d=cM(cw(n)),h=cC(d),p=l[h],f=l[d];if(i){let e="y"===h?"top":"left",t="y"===h?"bottom":"right",r=p+u[e],n=p-u[t];p=cf(r,cp(p,n))}if(a){let e="y"===d?"top":"left",t="y"===d?"bottom":"right",r=f+u[e],n=f-u[t];f=cf(r,cp(f,n))}let A=s.fn({...e,[h]:p,[d]:f});return{...A,data:{x:A.x-t,y:A.y-r,enabled:{[h]:i,[d]:a}}}}},options:[l,u]},T&&{...{name:"flip",options:p=d={...J},async fn(e){var t,r,n,i,a,s,o,l;let u,c,d,{placement:h,middlewareData:f,rects:A,initialPlacement:g,platform:m,elements:v}=e,{mainAxis:b=!0,crossAxis:y=!0,fallbackPlacements:w,fallbackStrategy:x="bestFit",fallbackAxisSideDirection:C="none",flipAlignment:E=!0,...S}=cy(p,e);if(null!=(t=f.arrow)&&t.alignmentOffset)return{};let M=cw(h),I=cM(g),B=cw(g)===g,T=await (null==m.isRTL?void 0:m.isRTL(v.floating)),k=w||(B||!E?[cR(g)]:(u=cR(g),[cI(g),u,cI(u)])),_="none"!==C;!w&&_&&k.push(...(c=cx(g),d=function(e,t,r){switch(e){case"top":case"bottom":if(r)return t?cT:cB;return t?cB:cT;case"left":case"right":return t?ck:c_;default:return[]}}(cw(g),"start"===C,T),c&&(d=d.map(e=>e+"-"+c),E&&(d=d.concat(d.map(cI)))),d));let R=[g,...k],P=await cO(e,S),D=[],L=(null==(r=f.flip)?void 0:r.overflows)||[];if(b&&D.push(P[M]),y){let e,t,r,n,i=(s=h,o=A,void 0===(l=T)&&(l=!1),e=cx(s),r=cE(t=cC(cM(s))),n="x"===t?e===(l?"end":"start")?"right":"left":"start"===e?"bottom":"top",o.reference[r]>o.floating[r]&&(n=cR(n)),[n,cR(n)]);D.push(P[i[0]],P[i[1]])}if(L=[...L,{placement:h,overflows:D}],!D.every(e=>e<=0)){let e=((null==(n=f.flip)?void 0:n.index)||0)+1,t=R[e];if(t&&("alignment"!==y||I===cM(t)||L.every(e=>cM(e.placement)!==I||e.overflows[0]>0)))return{data:{index:e,overflows:L},reset:{placement:t}};let r=null==(i=L.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:i.placement;if(!r)switch(x){case"bestFit":{let e=null==(a=L.filter(e=>{if(_){let t=cM(e.placement);return t===I||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:a[0];e&&(r=e);break}case"initialPlacement":r=g}if(h!==r)return{reset:{placement:r}}}return{}}},options:[d,h]},{...{name:"size",options:g=f={...J,apply:({elements:e,rects:t,availableWidth:r,availableHeight:n})=>{let{width:i,height:a}=t.reference,s=e.floating.style;s.setProperty("--radix-popper-available-width",`${r}px`),s.setProperty("--radix-popper-available-height",`${n}px`),s.setProperty("--radix-popper-anchor-width",`${i}px`),s.setProperty("--radix-popper-anchor-height",`${a}px`)}},async fn(e){var t,r;let n,i,{placement:a,rects:s,platform:o,elements:l}=e,{apply:u=()=>{},...c}=cy(g,e),d=await cO(e,c),h=cw(a),p=cx(a),f="y"===cM(a),{width:A,height:m}=s.floating;"top"===h||"bottom"===h?(n=h,i=p===(await (null==o.isRTL?void 0:o.isRTL(l.floating))?"start":"end")?"left":"right"):(i=h,n="end"===p?"top":"bottom");let v=m-d.top-d.bottom,b=A-d.left-d.right,y=cp(m-d[n],v),w=cp(A-d[i],b),x=!e.middlewareData.shift,C=y,E=w;if(null!=(t=e.middlewareData.shift)&&t.enabled.x&&(E=b),null!=(r=e.middlewareData.shift)&&r.enabled.y&&(C=v),x&&!p){let e=cf(d.left,0),t=cf(d.right,0),r=cf(d.top,0),n=cf(d.bottom,0);f?E=A-2*(0!==e||0!==t?e+t:cf(d.left,d.right)):C=m-2*(0!==r||0!==n?r+n:cf(d.top,d.bottom))}await u({...e,availableWidth:E,availableHeight:C});let S=await o.getDimensions(l.floating);return A!==S.width||m!==S.height?{reset:{rects:!0}}:{}}},options:[f,A]},z&&{...{name:"arrow",options:b=m={element:z,padding:B},fn(e){let{element:t,padding:r}="function"==typeof b?b(e):b;return t&&({}).hasOwnProperty.call(t,"current")?null!=t.current?dy({element:t.current,padding:r}).fn(e):{}:t?dy({element:t,padding:r}).fn(e):{}}},options:[m,v]},dj({arrowWidth:j,arrowHeight:V}),P&&{...{name:"hide",options:x=y={strategy:"referenceHidden",...J},async fn(e){let{rects:t}=e,{strategy:r="referenceHidden",...n}=cy(x,e);switch(r){case"referenceHidden":{let r=cN(await cO(e,{...n,elementContext:"reference"}),t.reference);return{data:{referenceHiddenOffsets:r,referenceHidden:cQ(r)}}}case"escaped":{let r=cN(await cO(e,{...n,altBoundary:!0}),t.floating);return{data:{escapedOffsets:r,escaped:cQ(r)}}}default:return{}}}},options:[y,w]}]}),[et,er]=dV(Z),en=lw(L);ld(()=>{$&&en?.()},[$,en]);let ei=ee.arrow?.x,ea=ee.arrow?.y,es=ee.arrow?.centerOffset!==0,[eo,el]=rd.useState();return ld(()=>{N&&el(window.getComputedStyle(N).zIndex)},[N]),(0,rp.jsx)("div",{ref:K.setFloating,"data-radix-popper-content-wrapper":"",style:{...X,transform:$?X.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:eo,"--radix-popper-transform-origin":[ee.transformOrigin?.x,ee.transformOrigin?.y].join(" "),...ee.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,rp.jsx)(dO,{scope:C,placedSide:et,onArrowChange:H,arrowX:ei,arrowY:ea,shouldHideArrow:es,children:(0,rp.jsx)(ly.div,{"data-side":et,"data-align":er,...F,ref:U,style:{...F.style,animation:$?void 0:"none"}})})})});dQ.displayName=dF;var dU="PopperArrow",dz={top:"bottom",right:"left",bottom:"top",left:"right"},dH=rd.forwardRef(function(e,t){let{__scopePopper:r,...n}=e,i=dN(dU,r),a=dz[i.placedSide];return(0,rp.jsx)("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:(0,rp.jsx)(dM,{...n,ref:t,style:{...n.style,display:"block"}})})});function dG(e){return null!==e}dH.displayName=dU;var dj=e=>({name:"transformOrigin",options:e,fn(t){let{placement:r,rects:n,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,s=a?0:e.arrowWidth,o=a?0:e.arrowHeight,[l,u]=dV(r),c={start:"0%",center:"50%",end:"100%"}[u],d=(i.arrow?.x??0)+s/2,h=(i.arrow?.y??0)+o/2,p="",f="";return"bottom"===l?(p=a?c:`${d}px`,f=`${-o}px`):"top"===l?(p=a?c:`${d}px`,f=`${n.floating.height+o}px`):"right"===l?(p=`${-o}px`,f=a?c:`${h}px`):"left"===l&&(p=`${n.floating.width+o}px`,f=a?c:`${h}px`),{data:{x:p,y:f}}}});function dV(e){let[t,r="center"]=e.split("-");return[t,r]}function dW(e){let t=rd.useRef({value:e,previous:e});return rd.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var dq=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"});rd.forwardRef((e,t)=>(0,rp.jsx)(ly.span,{...e,ref:t,style:{...dq,...e.style}})).displayName="VisuallyHidden";var dY=[" ","Enter","ArrowUp","ArrowDown"],dJ=[" ","Enter"],dK="Select",[dX,dZ,d$]=cu(dK),[d0,d1]=lc(dK,[d$,dk]),d2=dk(),[d3,d4]=d0(dK),[d5,d9]=d0(dK),d8=e=>{let{__scopeSelect:t,children:r,open:n,defaultOpen:i,onOpenChange:a,value:s,defaultValue:o,onValueChange:l,dir:u,name:c,autoComplete:d,disabled:h,required:p,form:f}=e,A=d2(t),[g,m]=rd.useState(null),[v,b]=rd.useState(null),[y,w]=rd.useState(!1),x=cd(u),[C,E]=lg({prop:n,defaultProp:i??!1,onChange:a,caller:dK}),[S,M]=lg({prop:s,defaultProp:o,onChange:l,caller:dK}),I=rd.useRef(null),B=!g||f||!!g.closest("form"),[T,k]=rd.useState(new Set),_=Array.from(T).map(e=>e.props.value).join(";");return(0,rp.jsx)(dP,{...A,children:(0,rp.jsxs)(d3,{required:p,scope:t,trigger:g,onTriggerChange:m,valueNode:v,onValueNodeChange:b,valueNodeHasChildren:y,onValueNodeHasChildrenChange:w,contentId:lf(),value:S,onValueChange:M,open:C,onOpenChange:E,dir:x,triggerPointerDownPosRef:I,disabled:h,children:[(0,rp.jsx)(dX.Provider,{scope:t,children:(0,rp.jsx)(d5,{scope:e.__scopeSelect,onNativeOptionAdd:rd.useCallback(e=>{k(t=>new Set(t).add(e))},[]),onNativeOptionRemove:rd.useCallback(e=>{k(t=>{let r=new Set(t);return r.delete(e),r})},[]),children:r})}),B?(0,rp.jsxs)(hD,{"aria-hidden":!0,required:p,tabIndex:-1,name:c,autoComplete:d,value:S,onChange:e=>M(e.target.value),disabled:h,form:f,children:[void 0===S?(0,rp.jsx)("option",{value:""}):null,Array.from(T)]},_):null]})})};d8.displayName=dK;var d6="SelectTrigger",d7=rd.forwardRef((e,t)=>{let{__scopeSelect:r,disabled:n=!1,...i}=e,a=d2(r),s=d4(d6,r),o=s.disabled||n,l=on(t,s.onTriggerChange),u=dZ(r),c=rd.useRef("touch"),[d,h,p]=hF(e=>{let t=u().filter(e=>!e.disabled),r=t.find(e=>e.value===s.value),n=hO(t,e,r);void 0!==n&&s.onValueChange(n.value)}),f=e=>{o||(s.onOpenChange(!0),p()),e&&(s.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,rp.jsx)(dL,{asChild:!0,...a,children:(0,rp.jsx)(ly.button,{type:"button",role:"combobox","aria-controls":s.contentId,"aria-expanded":s.open,"aria-required":s.required,"aria-autocomplete":"none",dir:s.dir,"data-state":s.open?"open":"closed",disabled:o,"data-disabled":o?"":void 0,"data-placeholder":hL(s.value)?"":void 0,...i,ref:l,onClick:lu(i.onClick,e=>{e.currentTarget.focus(),"mouse"!==c.current&&f(e)}),onPointerDown:lu(i.onPointerDown,e=>{c.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&"mouse"===e.pointerType&&(f(e),e.preventDefault())}),onKeyDown:lu(i.onKeyDown,e=>{let t=""!==d.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||h(e.key),(!t||" "!==e.key)&&dY.includes(e.key)&&(f(),e.preventDefault())})})})});d7.displayName=d6;var he="SelectValue",ht=rd.forwardRef((e,t)=>{let{__scopeSelect:r,className:n,style:i,children:a,placeholder:s="",...o}=e,l=d4(he,r),{onValueNodeHasChildrenChange:u}=l,c=void 0!==a,d=on(t,l.onValueNodeChange);return ld(()=>{u(c)},[u,c]),(0,rp.jsx)(ly.span,{...o,ref:d,style:{pointerEvents:"none"},children:hL(l.value)?(0,rp.jsx)(rp.Fragment,{children:s}):a})});ht.displayName=he;var hr=rd.forwardRef((e,t)=>{let{__scopeSelect:r,children:n,...i}=e;return(0,rp.jsx)(ly.span,{"aria-hidden":!0,...i,ref:t,children:n||"▼"})});hr.displayName="SelectIcon";var hn=e=>(0,rp.jsx)(lF,{asChild:!0,...e});hn.displayName="SelectPortal";var hi="SelectContent",ha=rd.forwardRef((e,t)=>{let r=d4(hi,e.__scopeSelect),[n,i]=rd.useState();return(ld(()=>{i(new DocumentFragment)},[]),r.open)?(0,rp.jsx)(hu,{...e,ref:t}):n?al.createPortal((0,rp.jsx)(hs,{scope:e.__scopeSelect,children:(0,rp.jsx)(dX.Slot,{scope:e.__scopeSelect,children:(0,rp.jsx)("div",{children:e.children})})}),n):null});ha.displayName=hi;var[hs,ho]=d0(hi),hl=lm("SelectContent.RemoveScroll"),hu=rd.forwardRef((e,t)=>{let{__scopeSelect:r,position:n="item-aligned",onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:s,side:o,sideOffset:l,align:u,alignOffset:c,arrowPadding:d,collisionBoundary:h,collisionPadding:p,sticky:f,hideWhenDetached:A,avoidCollisions:g,...m}=e,v=d4(hi,r),[b,y]=rd.useState(null),[w,x]=rd.useState(null),C=on(t,e=>y(e)),[E,S]=rd.useState(null),[M,I]=rd.useState(null),B=dZ(r),[T,k]=rd.useState(!1),_=rd.useRef(!1);rd.useEffect(()=>{if(b)return uC(b)},[b]),lU();let R=rd.useCallback(e=>{let[t,...r]=B().map(e=>e.ref.current),[n]=r.slice(-1),i=document.activeElement;for(let r of e)if(r===i||(r?.scrollIntoView({block:"nearest"}),r===t&&w&&(w.scrollTop=0),r===n&&w&&(w.scrollTop=w.scrollHeight),r?.focus(),document.activeElement!==i))return},[B,w]),P=rd.useCallback(()=>R([E,b]),[R,E,b]);rd.useEffect(()=>{T&&P()},[T,P]);let{onOpenChange:D,triggerPointerDownPosRef:L}=v;rd.useEffect(()=>{if(b){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(L.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(L.current?.y??0))}},r=r=>{e.x<=10&&e.y<=10?r.preventDefault():b.contains(r.target)||D(!1),document.removeEventListener("pointermove",t),L.current=null};return null!==L.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",r,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",r,{capture:!0})}}},[b,D,L]),rd.useEffect(()=>{let e=()=>D(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}},[D]);let[F,O]=hF(e=>{let t=B().filter(e=>!e.disabled),r=t.find(e=>e.ref.current===document.activeElement),n=hO(t,e,r);n&&setTimeout(()=>n.ref.current.focus())}),N=rd.useCallback((e,t,r)=>{let n=!_.current&&!r;(void 0!==v.value&&v.value===t||n)&&(S(e),n&&(_.current=!0))},[v.value]),Q=rd.useCallback(()=>b?.focus(),[b]),U=rd.useCallback((e,t,r)=>{let n=!_.current&&!r;(void 0!==v.value&&v.value===t||n)&&I(e)},[v.value]),z="popper"===n?hd:hc,H=z===hd?{side:o,sideOffset:l,align:u,alignOffset:c,arrowPadding:d,collisionBoundary:h,collisionPadding:p,sticky:f,hideWhenDetached:A,avoidCollisions:g}:{};return(0,rp.jsx)(hs,{scope:r,content:b,viewport:w,onViewportChange:x,itemRefCallback:N,selectedItem:E,onItemLeave:Q,itemTextRefCallback:U,focusSelectedItem:P,selectedItemText:M,position:n,isPositioned:T,searchRef:F,children:(0,rp.jsx)(ug,{as:hl,allowPinchZoom:!0,children:(0,rp.jsx)(lk,{asChild:!0,trapped:v.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:lu(i,e=>{v.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,rp.jsx)(lE,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:s,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>v.onOpenChange(!1),children:(0,rp.jsx)(z,{role:"listbox",id:v.contentId,"data-state":v.open?"open":"closed",dir:v.dir,onContextMenu:e=>e.preventDefault(),...m,...H,onPlaced:()=>k(!0),ref:C,style:{display:"flex",flexDirection:"column",outline:"none",...m.style},onKeyDown:lu(m.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||O(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=B().filter(e=>!e.disabled).map(e=>e.ref.current);if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){let r=e.target,n=t.indexOf(r);t=t.slice(n+1)}setTimeout(()=>R(t)),e.preventDefault()}})})})})})})});hu.displayName="SelectContentImpl";var hc=rd.forwardRef((e,t)=>{let{__scopeSelect:r,onPlaced:n,...i}=e,a=d4(hi,r),s=ho(hi,r),[o,l]=rd.useState(null),[u,c]=rd.useState(null),d=on(t,e=>c(e)),h=dZ(r),p=rd.useRef(!1),f=rd.useRef(!0),{viewport:A,selectedItem:g,selectedItemText:m,focusSelectedItem:v}=s,b=rd.useCallback(()=>{if(a.trigger&&a.valueNode&&o&&u&&A&&g&&m){let e=a.trigger.getBoundingClientRect(),t=u.getBoundingClientRect(),r=a.valueNode.getBoundingClientRect(),i=m.getBoundingClientRect();if("rtl"!==a.dir){let n=i.left-t.left,a=r.left-n,s=e.left-a,l=e.width+s,u=Math.max(l,t.width),c=cl(a,[10,Math.max(10,window.innerWidth-10-u)]);o.style.minWidth=l+"px",o.style.left=c+"px"}else{let n=t.right-i.right,a=window.innerWidth-r.right-n,s=window.innerWidth-e.right-a,l=e.width+s,u=Math.max(l,t.width),c=cl(a,[10,Math.max(10,window.innerWidth-10-u)]);o.style.minWidth=l+"px",o.style.right=c+"px"}let s=h(),l=window.innerHeight-20,c=A.scrollHeight,d=window.getComputedStyle(u),f=parseInt(d.borderTopWidth,10),v=parseInt(d.paddingTop,10),b=parseInt(d.borderBottomWidth,10),y=f+v+c+parseInt(d.paddingBottom,10)+b,w=Math.min(5*g.offsetHeight,y),x=window.getComputedStyle(A),C=parseInt(x.paddingTop,10),E=parseInt(x.paddingBottom,10),S=e.top+e.height/2-10,M=g.offsetHeight/2,I=f+v+(g.offsetTop+M);if(I<=S){let e=s.length>0&&g===s[s.length-1].ref.current;o.style.bottom="0px";let t=Math.max(l-S,M+(e?E:0)+(u.clientHeight-A.offsetTop-A.offsetHeight)+b);o.style.height=I+t+"px"}else{let e=s.length>0&&g===s[0].ref.current;o.style.top="0px";let t=Math.max(S,f+A.offsetTop+(e?C:0)+M);o.style.height=t+(y-I)+"px",A.scrollTop=I-S+A.offsetTop}o.style.margin="10px 0",o.style.minHeight=w+"px",o.style.maxHeight=l+"px",n?.(),requestAnimationFrame(()=>p.current=!0)}},[h,a.trigger,a.valueNode,o,u,A,g,m,a.dir,n]);ld(()=>b(),[b]);let[y,w]=rd.useState();ld(()=>{u&&w(window.getComputedStyle(u).zIndex)},[u]);let x=rd.useCallback(e=>{e&&!0===f.current&&(b(),v?.(),f.current=!1)},[b,v]);return(0,rp.jsx)(hh,{scope:r,contentWrapper:o,shouldExpandOnScrollRef:p,onScrollButtonChange:x,children:(0,rp.jsx)("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:y},children:(0,rp.jsx)(ly.div,{...i,ref:d,style:{boxSizing:"border-box",maxHeight:"100%",...i.style}})})})});hc.displayName="SelectItemAlignedPosition";var hd=rd.forwardRef((e,t)=>{let{__scopeSelect:r,align:n="start",collisionPadding:i=10,...a}=e,s=d2(r);return(0,rp.jsx)(dQ,{...s,...a,ref:t,align:n,collisionPadding:i,style:{boxSizing:"border-box",...a.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});hd.displayName="SelectPopperPosition";var[hh,hp]=d0(hi,{}),hf="SelectViewport",hA=rd.forwardRef((e,t)=>{let{__scopeSelect:r,nonce:n,...i}=e,a=ho(hf,r),s=hp(hf,r),o=on(t,a.onViewportChange),l=rd.useRef(0);return(0,rp.jsxs)(rp.Fragment,{children:[(0,rp.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:n}),(0,rp.jsx)(dX.Slot,{scope:r,children:(0,rp.jsx)(ly.div,{"data-radix-select-viewport":"",role:"presentation",...i,ref:o,style:{position:"relative",flex:1,overflow:"hidden auto",...i.style},onScroll:lu(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:r,shouldExpandOnScrollRef:n}=s;if(n?.current&&r){let e=Math.abs(l.current-t.scrollTop);if(e>0){let n=window.innerHeight-20,i=Math.max(parseFloat(r.style.minHeight),parseFloat(r.style.height));if(i<n){let a=i+e,s=Math.min(n,a),o=a-s;r.style.height=s+"px","0px"===r.style.bottom&&(t.scrollTop=o>0?o:0,r.style.justifyContent="flex-end")}}}l.current=t.scrollTop})})})]})});hA.displayName=hf;var hg="SelectGroup",[hm,hv]=d0(hg);rd.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,i=lf();return(0,rp.jsx)(hm,{scope:r,id:i,children:(0,rp.jsx)(ly.div,{role:"group","aria-labelledby":i,...n,ref:t})})}).displayName=hg;var hb="SelectLabel";rd.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,i=hv(hb,r);return(0,rp.jsx)(ly.div,{id:i.id,...n,ref:t})}).displayName=hb;var hy="SelectItem",[hw,hx]=d0(hy),hC=rd.forwardRef((e,t)=>{let{__scopeSelect:r,value:n,disabled:i=!1,textValue:a,...s}=e,o=d4(hy,r),l=ho(hy,r),u=o.value===n,[c,d]=rd.useState(a??""),[h,p]=rd.useState(!1),f=on(t,e=>l.itemRefCallback?.(e,n,i)),A=lf(),g=rd.useRef("touch"),m=()=>{i||(o.onValueChange(n),o.onOpenChange(!1))};if(""===n)throw Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return(0,rp.jsx)(hw,{scope:r,value:n,disabled:i,textId:A,isSelected:u,onItemTextChange:rd.useCallback(e=>{d(t=>t||(e?.textContent??"").trim())},[]),children:(0,rp.jsx)(dX.ItemSlot,{scope:r,value:n,disabled:i,textValue:c,children:(0,rp.jsx)(ly.div,{role:"option","aria-labelledby":A,"data-highlighted":h?"":void 0,"aria-selected":u&&h,"data-state":u?"checked":"unchecked","aria-disabled":i||void 0,"data-disabled":i?"":void 0,tabIndex:i?void 0:-1,...s,ref:f,onFocus:lu(s.onFocus,()=>p(!0)),onBlur:lu(s.onBlur,()=>p(!1)),onClick:lu(s.onClick,()=>{"mouse"!==g.current&&m()}),onPointerUp:lu(s.onPointerUp,()=>{"mouse"===g.current&&m()}),onPointerDown:lu(s.onPointerDown,e=>{g.current=e.pointerType}),onPointerMove:lu(s.onPointerMove,e=>{g.current=e.pointerType,i?l.onItemLeave?.():"mouse"===g.current&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:lu(s.onPointerLeave,e=>{e.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:lu(s.onKeyDown,e=>{(l.searchRef?.current===""||" "!==e.key)&&(dJ.includes(e.key)&&m()," "===e.key&&e.preventDefault())})})})})});hC.displayName=hy;var hE="SelectItemText",hS=rd.forwardRef((e,t)=>{let{__scopeSelect:r,className:n,style:i,...a}=e,s=d4(hE,r),o=ho(hE,r),l=hx(hE,r),u=d9(hE,r),[c,d]=rd.useState(null),h=on(t,e=>d(e),l.onItemTextChange,e=>o.itemTextRefCallback?.(e,l.value,l.disabled)),p=c?.textContent,f=rd.useMemo(()=>(0,rp.jsx)("option",{value:l.value,disabled:l.disabled,children:p},l.value),[l.disabled,l.value,p]),{onNativeOptionAdd:A,onNativeOptionRemove:g}=u;return ld(()=>(A(f),()=>g(f)),[A,g,f]),(0,rp.jsxs)(rp.Fragment,{children:[(0,rp.jsx)(ly.span,{id:l.textId,...a,ref:h}),l.isSelected&&s.valueNode&&!s.valueNodeHasChildren?al.createPortal(a.children,s.valueNode):null]})});hS.displayName=hE;var hM="SelectItemIndicator",hI=rd.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e;return hx(hM,r).isSelected?(0,rp.jsx)(ly.span,{"aria-hidden":!0,...n,ref:t}):null});hI.displayName=hM;var hB="SelectScrollUpButton",hT=rd.forwardRef((e,t)=>{let r=ho(hB,e.__scopeSelect),n=hp(hB,e.__scopeSelect),[i,a]=rd.useState(!1),s=on(t,n.onScrollButtonChange);return ld(()=>{if(r.viewport&&r.isPositioned){let e=function(){a(t.scrollTop>0)},t=r.viewport;return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}},[r.viewport,r.isPositioned]),i?(0,rp.jsx)(hR,{...e,ref:s,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}}):null});hT.displayName=hB;var hk="SelectScrollDownButton",h_=rd.forwardRef((e,t)=>{let r=ho(hk,e.__scopeSelect),n=hp(hk,e.__scopeSelect),[i,a]=rd.useState(!1),s=on(t,n.onScrollButtonChange);return ld(()=>{if(r.viewport&&r.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)<e)},t=r.viewport;return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}},[r.viewport,r.isPositioned]),i?(0,rp.jsx)(hR,{...e,ref:s,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}}):null});h_.displayName=hk;var hR=rd.forwardRef((e,t)=>{let{__scopeSelect:r,onAutoScroll:n,...i}=e,a=ho("SelectScrollButton",r),s=rd.useRef(null),o=dZ(r),l=rd.useCallback(()=>{null!==s.current&&(window.clearInterval(s.current),s.current=null)},[]);return rd.useEffect(()=>()=>l(),[l]),ld(()=>{let e=o().find(e=>e.ref.current===document.activeElement);e?.ref.current?.scrollIntoView({block:"nearest"})},[o]),(0,rp.jsx)(ly.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:lu(i.onPointerDown,()=>{null===s.current&&(s.current=window.setInterval(n,50))}),onPointerMove:lu(i.onPointerMove,()=>{a.onItemLeave?.(),null===s.current&&(s.current=window.setInterval(n,50))}),onPointerLeave:lu(i.onPointerLeave,()=>{l()})})});rd.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e;return(0,rp.jsx)(ly.div,{"aria-hidden":!0,...n,ref:t})}).displayName="SelectSeparator";var hP="SelectArrow";rd.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,i=d2(r),a=d4(hP,r),s=ho(hP,r);return a.open&&"popper"===s.position?(0,rp.jsx)(dH,{...i,...n,ref:t}):null}).displayName=hP;var hD=rd.forwardRef(({__scopeSelect:e,value:t,...r},n)=>{let i=rd.useRef(null),a=on(n,i),s=dW(t);return rd.useEffect(()=>{let e=i.current;if(!e)return;let r=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,"value").set;if(s!==t&&r){let n=new Event("change",{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[s,t]),(0,rp.jsx)(ly.select,{...r,style:{...dq,...r.style},ref:a,defaultValue:t})});function hL(e){return""===e||void 0===e}function hF(e){let t=lw(e),r=rd.useRef(""),n=rd.useRef(0),i=rd.useCallback(e=>{let i=r.current+e;t(i),function e(t){r.current=t,window.clearTimeout(n.current),""!==t&&(n.current=window.setTimeout(()=>e(""),1e3))}(i)},[t]),a=rd.useCallback(()=>{r.current="",window.clearTimeout(n.current)},[]);return rd.useEffect(()=>()=>window.clearTimeout(n.current),[]),[r,i,a]}function hO(e,t,r){var n,i;let a=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,s=r?e.indexOf(r):-1,o=(n=e,i=Math.max(s,0),n.map((e,t)=>n[(i+t)%n.length]));1===a.length&&(o=o.filter(e=>e!==r));let l=o.find(e=>e.textValue.toLowerCase().startsWith(a.toLowerCase()));return l!==r?l:void 0}hD.displayName="SelectBubbleInput";var hN="Popover",[hQ,hU]=lc(hN,[dk]),hz=dk(),[hH,hG]=hQ(hN),hj=e=>{let{__scopePopover:t,children:r,open:n,defaultOpen:i,onOpenChange:a,modal:s=!1}=e,o=hz(t),l=rd.useRef(null),[u,c]=rd.useState(!1),[d,h]=lg({prop:n,defaultProp:i??!1,onChange:a,caller:hN});return(0,rp.jsx)(dP,{...o,children:(0,rp.jsx)(hH,{scope:t,contentId:lf(),triggerRef:l,open:d,onOpenChange:h,onOpenToggle:rd.useCallback(()=>h(e=>!e),[h]),hasCustomAnchor:u,onCustomAnchorAdd:rd.useCallback(()=>c(!0),[]),onCustomAnchorRemove:rd.useCallback(()=>c(!1),[]),modal:s,children:r})})};hj.displayName=hN;var hV="PopoverAnchor";rd.forwardRef((e,t)=>{let{__scopePopover:r,...n}=e,i=hG(hV,r),a=hz(r),{onCustomAnchorAdd:s,onCustomAnchorRemove:o}=i;return rd.useEffect(()=>(s(),()=>o()),[s,o]),(0,rp.jsx)(dL,{...a,...n,ref:t})}).displayName=hV;var hW="PopoverTrigger",hq=rd.forwardRef((e,t)=>{let{__scopePopover:r,...n}=e,i=hG(hW,r),a=hz(r),s=on(t,i.triggerRef),o=(0,rp.jsx)(ly.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":h5(i.open),...n,ref:s,onClick:lu(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?o:(0,rp.jsx)(dL,{asChild:!0,...a,children:o})});hq.displayName=hW;var hY="PopoverPortal",[hJ,hK]=hQ(hY,{forceMount:void 0}),hX=e=>{let{__scopePopover:t,forceMount:r,children:n,container:i}=e,a=hG(hY,t);return(0,rp.jsx)(hJ,{scope:t,forceMount:r,children:(0,rp.jsx)(lO,{present:r||a.open,children:(0,rp.jsx)(lF,{asChild:!0,container:i,children:n})})})};hX.displayName=hY;var hZ="PopoverContent",h$=rd.forwardRef((e,t)=>{let r=hK(hZ,e.__scopePopover),{forceMount:n=r.forceMount,...i}=e,a=hG(hZ,e.__scopePopover);return(0,rp.jsx)(lO,{present:n||a.open,children:a.modal?(0,rp.jsx)(h1,{...i,ref:t}):(0,rp.jsx)(h2,{...i,ref:t})})});h$.displayName=hZ;var h0=lm("PopoverContent.RemoveScroll"),h1=rd.forwardRef((e,t)=>{let r=hG(hZ,e.__scopePopover),n=rd.useRef(null),i=on(t,n),a=rd.useRef(!1);return rd.useEffect(()=>{let e=n.current;if(e)return uC(e)},[]),(0,rp.jsx)(ug,{as:h0,allowPinchZoom:!0,children:(0,rp.jsx)(h3,{...e,ref:i,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:lu(e.onCloseAutoFocus,e=>{e.preventDefault(),a.current||r.triggerRef.current?.focus()}),onPointerDownOutside:lu(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey;a.current=2===t.button||r},{checkForDefaultPrevented:!1}),onFocusOutside:lu(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),h2=rd.forwardRef((e,t)=>{let r=hG(hZ,e.__scopePopover),n=rd.useRef(!1),i=rd.useRef(!1);return(0,rp.jsx)(h3,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(n.current||r.triggerRef.current?.focus(),t.preventDefault()),n.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(n.current=!0,"pointerdown"===t.detail.originalEvent.type&&(i.current=!0));let a=t.target;r.triggerRef.current?.contains(a)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&i.current&&t.preventDefault()}})}),h3=rd.forwardRef((e,t)=>{let{__scopePopover:r,trapFocus:n,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:s,onEscapeKeyDown:o,onPointerDownOutside:l,onFocusOutside:u,onInteractOutside:c,...d}=e,h=hG(hZ,r),p=hz(r);return lU(),(0,rp.jsx)(lk,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,rp.jsx)(lE,{asChild:!0,disableOutsidePointerEvents:s,onInteractOutside:c,onEscapeKeyDown:o,onPointerDownOutside:l,onFocusOutside:u,onDismiss:()=>h.onOpenChange(!1),children:(0,rp.jsx)(dQ,{"data-state":h5(h.open),role:"dialog",id:h.contentId,...p,...d,ref:t,style:{...d.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),h4="PopoverClose";function h5(e){return e?"open":"closed"}rd.forwardRef((e,t)=>{let{__scopePopover:r,...n}=e,i=hG(h4,r);return(0,rp.jsx)(ly.button,{type:"button",...n,ref:t,onClick:lu(e.onClick,()=>i.onOpenChange(!1))})}).displayName=h4,rd.forwardRef((e,t)=>{let{__scopePopover:r,...n}=e,i=hz(r);return(0,rp.jsx)(dH,{...i,...n,ref:t})}).displayName="PopoverArrow";var h9=["PageUp","PageDown"],h8=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],h6={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},h7="Slider",[pe,pt,pr]=cu(h7),[pn,pi]=lc(h7,[pr]),[pa,ps]=pn(h7),po=rd.forwardRef((e,t)=>{let{name:r,min:n=0,max:i=100,step:a=1,orientation:s="horizontal",disabled:o=!1,minStepsBetweenThumbs:l=0,defaultValue:u=[n],value:c,onValueChange:d=()=>{},onValueCommit:h=()=>{},inverted:p=!1,form:f,...A}=e,g=rd.useRef(new Set),m=rd.useRef(0),v="horizontal"===s,[b=[],y]=lg({prop:c,defaultProp:u,onChange:e=>{let t=[...g.current];t[m.current]?.focus(),d(e)}}),w=rd.useRef(b);function x(e,t,{commit:r}={commit:!1}){let s,o=(String(a).split(".")[1]||"").length,u=cl(Math.round((Math.round((e-n)/a)*a+n)*(s=Math.pow(10,o)))/s,[n,i]);y((e=[])=>{let n=function(e=[],t,r){let n=[...e];return n[r]=t,n.sort((e,t)=>e-t)}(e,u,t);if(!function(e,t){if(t>0)return Math.min(...e.slice(0,-1).map((t,r)=>e[r+1]-t))>=t;return!0}(n,l*a))return e;{m.current=n.indexOf(u);let t=String(n)!==String(e);return t&&r&&h(n),t?n:e}})}return(0,rp.jsx)(pa,{scope:e.__scopeSlider,name:r,disabled:o,min:n,max:i,valueIndexToChangeRef:m,thumbs:g.current,values:b,orientation:s,form:f,children:(0,rp.jsx)(pe.Provider,{scope:e.__scopeSlider,children:(0,rp.jsx)(pe.Slot,{scope:e.__scopeSlider,children:(0,rp.jsx)(v?pc:pd,{"aria-disabled":o,"data-disabled":o?"":void 0,...A,ref:t,onPointerDown:lu(A.onPointerDown,()=>{o||(w.current=b)}),min:n,max:i,inverted:p,onSlideStart:o?void 0:function(e){let t=function(e,t){if(1===e.length)return 0;let r=e.map(e=>Math.abs(e-t)),n=Math.min(...r);return r.indexOf(n)}(b,e);x(e,t)},onSlideMove:o?void 0:function(e){x(e,m.current)},onSlideEnd:o?void 0:function(){let e=w.current[m.current];b[m.current]!==e&&h(b)},onHomeKeyDown:()=>!o&&x(n,0,{commit:!0}),onEndKeyDown:()=>!o&&x(i,b.length-1,{commit:!0}),onStepKeyDown:({event:e,direction:t})=>{if(!o){let r=h9.includes(e.key)||e.shiftKey&&h8.includes(e.key),n=m.current;x(b[n]+a*(r?10:1)*t,n,{commit:!0})}}})})})})});po.displayName=h7;var[pl,pu]=pn(h7,{startEdge:"left",endEdge:"right",size:"width",direction:1}),pc=rd.forwardRef((e,t)=>{let{min:r,max:n,dir:i,inverted:a,onSlideStart:s,onSlideMove:o,onSlideEnd:l,onStepKeyDown:u,...c}=e,[d,h]=rd.useState(null),p=on(t,e=>h(e)),f=rd.useRef(void 0),A=cd(i),g="ltr"===A,m=g&&!a||!g&&a;function v(e){let t=f.current||d.getBoundingClientRect(),i=px([0,t.width],m?[r,n]:[n,r]);return f.current=t,i(e-t.left)}return(0,rp.jsx)(pl,{scope:e.__scopeSlider,startEdge:m?"left":"right",endEdge:m?"right":"left",direction:m?1:-1,size:"width",children:(0,rp.jsx)(ph,{dir:A,"data-orientation":"horizontal",...c,ref:p,style:{...c.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:e=>{let t=v(e.clientX);s?.(t)},onSlideMove:e=>{let t=v(e.clientX);o?.(t)},onSlideEnd:()=>{f.current=void 0,l?.()},onStepKeyDown:e=>{let t=h6[m?"from-left":"from-right"].includes(e.key);u?.({event:e,direction:t?-1:1})}})})}),pd=rd.forwardRef((e,t)=>{let{min:r,max:n,inverted:i,onSlideStart:a,onSlideMove:s,onSlideEnd:o,onStepKeyDown:l,...u}=e,c=rd.useRef(null),d=on(t,c),h=rd.useRef(void 0),p=!i;function f(e){let t=h.current||c.current.getBoundingClientRect(),i=px([0,t.height],p?[n,r]:[r,n]);return h.current=t,i(e-t.top)}return(0,rp.jsx)(pl,{scope:e.__scopeSlider,startEdge:p?"bottom":"top",endEdge:p?"top":"bottom",size:"height",direction:p?1:-1,children:(0,rp.jsx)(ph,{"data-orientation":"vertical",...u,ref:d,style:{...u.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:e=>{let t=f(e.clientY);a?.(t)},onSlideMove:e=>{let t=f(e.clientY);s?.(t)},onSlideEnd:()=>{h.current=void 0,o?.()},onStepKeyDown:e=>{let t=h6[p?"from-bottom":"from-top"].includes(e.key);l?.({event:e,direction:t?-1:1})}})})}),ph=rd.forwardRef((e,t)=>{let{__scopeSlider:r,onSlideStart:n,onSlideMove:i,onSlideEnd:a,onHomeKeyDown:s,onEndKeyDown:o,onStepKeyDown:l,...u}=e,c=ps(h7,r);return(0,rp.jsx)(ly.span,{...u,ref:t,onKeyDown:lu(e.onKeyDown,e=>{"Home"===e.key?(s(e),e.preventDefault()):"End"===e.key?(o(e),e.preventDefault()):h9.concat(h8).includes(e.key)&&(l(e),e.preventDefault())}),onPointerDown:lu(e.onPointerDown,e=>{let t=e.target;t.setPointerCapture(e.pointerId),e.preventDefault(),c.thumbs.has(t)?t.focus():n(e)}),onPointerMove:lu(e.onPointerMove,e=>{e.target.hasPointerCapture(e.pointerId)&&i(e)}),onPointerUp:lu(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&(t.releasePointerCapture(e.pointerId),a(e))})})}),pp="SliderTrack",pf=rd.forwardRef((e,t)=>{let{__scopeSlider:r,...n}=e,i=ps(pp,r);return(0,rp.jsx)(ly.span,{"data-disabled":i.disabled?"":void 0,"data-orientation":i.orientation,...n,ref:t})});pf.displayName=pp;var pA="SliderRange",pg=rd.forwardRef((e,t)=>{let{__scopeSlider:r,...n}=e,i=ps(pA,r),a=pu(pA,r),s=on(t,rd.useRef(null)),o=i.values.length,l=i.values.map(e=>pw(e,i.min,i.max)),u=o>1?Math.min(...l):0,c=100-Math.max(...l);return(0,rp.jsx)(ly.span,{"data-orientation":i.orientation,"data-disabled":i.disabled?"":void 0,...n,ref:s,style:{...e.style,[a.startEdge]:u+"%",[a.endEdge]:c+"%"}})});pg.displayName=pA;var pm="SliderThumb",pv=rd.forwardRef((e,t)=>{let r=pt(e.__scopeSlider),[n,i]=rd.useState(null),a=on(t,e=>i(e)),s=rd.useMemo(()=>n?r().findIndex(e=>e.ref.current===n):-1,[r,n]);return(0,rp.jsx)(pb,{...e,ref:a,index:s})}),pb=rd.forwardRef((e,t)=>{var r,n,i,a,s;let o,l,{__scopeSlider:u,index:c,name:d,...h}=e,p=ps(pm,u),f=pu(pm,u),[A,g]=rd.useState(null),m=on(t,e=>g(e)),v=!A||p.form||!!A.closest("form"),b=dI(A),y=p.values[c],w=void 0===y?0:pw(y,p.min,p.max),x=(r=c,(n=p.values.length)>2?`Value ${r+1} of ${n}`:2===n?["Minimum","Maximum"][r]:void 0),C=b?.[f.size],E=C?(i=C,a=w,s=f.direction,l=px([0,50],[0,o=i/2]),(o-l(a)*s)*s):0;return rd.useEffect(()=>{if(A)return p.thumbs.add(A),()=>{p.thumbs.delete(A)}},[A,p.thumbs]),(0,rp.jsxs)("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[f.startEdge]:`calc(${w}% + ${E}px)`},children:[(0,rp.jsx)(pe.ItemSlot,{scope:e.__scopeSlider,children:(0,rp.jsx)(ly.span,{role:"slider","aria-label":e["aria-label"]||x,"aria-valuemin":p.min,"aria-valuenow":y,"aria-valuemax":p.max,"aria-orientation":p.orientation,"data-orientation":p.orientation,"data-disabled":p.disabled?"":void 0,tabIndex:p.disabled?void 0:0,...h,ref:m,style:void 0===y?{display:"none"}:e.style,onFocus:lu(e.onFocus,()=>{p.valueIndexToChangeRef.current=c})})}),v&&(0,rp.jsx)(py,{name:d??(p.name?p.name+(p.values.length>1?"[]":""):void 0),form:p.form,value:y},c)]})});pv.displayName=pm;var py=rd.forwardRef(({__scopeSlider:e,value:t,...r},n)=>{let i=rd.useRef(null),a=on(i,n),s=dW(t);return rd.useEffect(()=>{let e=i.current;if(!e)return;let r=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set;if(s!==t&&r){let n=new Event("input",{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[s,t]),(0,rp.jsx)(ly.input,{style:{display:"none"},...r,ref:a,defaultValue:t})});function pw(e,t,r){return cl(100/(r-t)*(e-t),[0,100])}function px(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let n=(t[1]-t[0])/(e[1]-e[0]);return t[0]+n*(r-e[0])}}py.displayName="RadioBubbleInput";var pC="rovingFocusGroup.onEntryFocus",pE={bubbles:!1,cancelable:!0},pS="RovingFocusGroup",[pM,pI,pB]=cu(pS),[pT,pk]=lc(pS,[pB]),[p_,pR]=pT(pS),pP=rd.forwardRef((e,t)=>(0,rp.jsx)(pM.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,rp.jsx)(pM.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,rp.jsx)(pD,{...e,ref:t})})}));pP.displayName=pS;var pD=rd.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,orientation:n,loop:i=!1,dir:a,currentTabStopId:s,defaultCurrentTabStopId:o,onCurrentTabStopIdChange:l,onEntryFocus:u,preventScrollOnEntryFocus:c=!1,...d}=e,h=rd.useRef(null),p=on(t,h),f=cd(a),[A,g]=lg({prop:s,defaultProp:o??null,onChange:l,caller:pS}),[m,v]=rd.useState(!1),b=lw(u),y=pI(r),w=rd.useRef(!1),[x,C]=rd.useState(0);return rd.useEffect(()=>{let e=h.current;if(e)return e.addEventListener(pC,b),()=>e.removeEventListener(pC,b)},[b]),(0,rp.jsx)(p_,{scope:r,orientation:n,dir:f,loop:i,currentTabStopId:A,onItemFocus:rd.useCallback(e=>g(e),[g]),onItemShiftTab:rd.useCallback(()=>v(!0),[]),onFocusableItemAdd:rd.useCallback(()=>C(e=>e+1),[]),onFocusableItemRemove:rd.useCallback(()=>C(e=>e-1),[]),children:(0,rp.jsx)(ly.div,{tabIndex:m||0===x?-1:0,"data-orientation":n,...d,ref:p,style:{outline:"none",...e.style},onMouseDown:lu(e.onMouseDown,()=>{w.current=!0}),onFocus:lu(e.onFocus,e=>{let t=!w.current;if(e.target===e.currentTarget&&t&&!m){let t=new CustomEvent(pC,pE);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=y().filter(e=>e.focusable);pN([e.find(e=>e.active),e.find(e=>e.id===A),...e].filter(Boolean).map(e=>e.ref.current),c)}}w.current=!1}),onBlur:lu(e.onBlur,()=>v(!1))})})}),pL="RovingFocusGroupItem",pF=rd.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,focusable:n=!0,active:i=!1,tabStopId:a,children:s,...o}=e,l=lf(),u=a||l,c=pR(pL,r),d=c.currentTabStopId===u,h=pI(r),{onFocusableItemAdd:p,onFocusableItemRemove:f,currentTabStopId:A}=c;return rd.useEffect(()=>{if(n)return p(),()=>f()},[n,p,f]),(0,rp.jsx)(pM.ItemSlot,{scope:r,id:u,focusable:n,active:i,children:(0,rp.jsx)(ly.span,{tabIndex:d?0:-1,"data-orientation":c.orientation,...o,ref:t,onMouseDown:lu(e.onMouseDown,e=>{n?c.onItemFocus(u):e.preventDefault()}),onFocus:lu(e.onFocus,()=>c.onItemFocus(u)),onKeyDown:lu(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void c.onItemShiftTab();if(e.target!==e.currentTarget)return;let t=function(e,t,r){var n;let i=(n=e.key,"rtl"!==r?n:"ArrowLeft"===n?"ArrowRight":"ArrowRight"===n?"ArrowLeft":n);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(i))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(i)))return pO[i]}(e,c.orientation,c.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let i=h().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)i.reverse();else if("prev"===t||"next"===t){var r,n;"prev"===t&&i.reverse();let a=i.indexOf(e.currentTarget);i=c.loop?(r=i,n=a+1,r.map((e,t)=>r[(n+t)%r.length])):i.slice(a+1)}setTimeout(()=>pN(i))}}),children:"function"==typeof s?s({isCurrentTabStop:d,hasTabStop:null!=A}):s})})});pF.displayName=pL;var pO={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function pN(e,t=!1){let r=document.activeElement;for(let n of e)if(n===r||(n.focus({preventScroll:t}),document.activeElement!==r))return}var pQ="Radio",[pU,pz]=lc(pQ),[pH,pG]=pU(pQ),pj=rd.forwardRef((e,t)=>{let{__scopeRadio:r,name:n,checked:i=!1,required:a,disabled:s,value:o="on",onCheck:l,form:u,...c}=e,[d,h]=rd.useState(null),p=on(t,e=>h(e)),f=rd.useRef(!1),A=!d||u||!!d.closest("form");return(0,rp.jsxs)(pH,{scope:r,checked:i,disabled:s,children:[(0,rp.jsx)(ly.button,{type:"button",role:"radio","aria-checked":i,"data-state":pY(i),"data-disabled":s?"":void 0,disabled:s,value:o,...c,ref:p,onClick:lu(e.onClick,e=>{i||l?.(),A&&(f.current=e.isPropagationStopped(),f.current||e.stopPropagation())})}),A&&(0,rp.jsx)(pq,{control:d,bubbles:!f.current,name:n,value:o,checked:i,required:a,disabled:s,form:u,style:{transform:"translateX(-100%)"}})]})});pj.displayName=pQ;var pV="RadioIndicator",pW=rd.forwardRef((e,t)=>{let{__scopeRadio:r,forceMount:n,...i}=e,a=pG(pV,r);return(0,rp.jsx)(lO,{present:n||a.checked,children:(0,rp.jsx)(ly.span,{"data-state":pY(a.checked),"data-disabled":a.disabled?"":void 0,...i,ref:t})})});pW.displayName=pV;var pq=rd.forwardRef(({__scopeRadio:e,control:t,checked:r,bubbles:n=!0,...i},a)=>{let s=rd.useRef(null),o=on(s,a),l=dW(r),u=dI(t);return rd.useEffect(()=>{let e=s.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(l!==r&&t){let i=new Event("click",{bubbles:n});t.call(e,r),e.dispatchEvent(i)}},[l,r,n]),(0,rp.jsx)(ly.input,{type:"radio","aria-hidden":!0,defaultChecked:r,...i,tabIndex:-1,ref:o,style:{...i.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function pY(e){return e?"checked":"unchecked"}pq.displayName="RadioBubbleInput";var pJ=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],pK="RadioGroup",[pX,pZ]=lc(pK,[pk,pz]),p$=pk(),p0=pz(),[p1,p2]=pX(pK),p3=rd.forwardRef((e,t)=>{let{__scopeRadioGroup:r,name:n,defaultValue:i,value:a,required:s=!1,disabled:o=!1,orientation:l,dir:u,loop:c=!0,onValueChange:d,...h}=e,p=p$(r),f=cd(u),[A,g]=lg({prop:a,defaultProp:i??null,onChange:d,caller:pK});return(0,rp.jsx)(p1,{scope:r,name:n,required:s,disabled:o,value:A,onValueChange:g,children:(0,rp.jsx)(pP,{asChild:!0,...p,orientation:l,dir:f,loop:c,children:(0,rp.jsx)(ly.div,{role:"radiogroup","aria-required":s,"aria-orientation":l,"data-disabled":o?"":void 0,dir:f,...h,ref:t})})})});p3.displayName=pK;var p4="RadioGroupItem",p5=rd.forwardRef((e,t)=>{let{__scopeRadioGroup:r,disabled:n,...i}=e,a=p2(p4,r),s=a.disabled||n,o=p$(r),l=p0(r),u=rd.useRef(null),c=on(t,u),d=a.value===i.value,h=rd.useRef(!1);return rd.useEffect(()=>{let e=e=>{pJ.includes(e.key)&&(h.current=!0)},t=()=>h.current=!1;return document.addEventListener("keydown",e),document.addEventListener("keyup",t),()=>{document.removeEventListener("keydown",e),document.removeEventListener("keyup",t)}},[]),(0,rp.jsx)(pF,{asChild:!0,...o,focusable:!s,active:d,children:(0,rp.jsx)(pj,{disabled:s,required:a.required,checked:d,...l,...i,name:a.name,ref:c,onCheck:()=>a.onValueChange(i.value),onKeyDown:lu(e=>{"Enter"===e.key&&e.preventDefault()}),onFocus:lu(i.onFocus,()=>{h.current&&u.current?.click()})})})});p5.displayName=p4;var p9=rd.forwardRef((e,t)=>{let{__scopeRadioGroup:r,...n}=e,i=p0(r);return(0,rp.jsx)(pW,{...i,...n,ref:t})});function p8(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function p6(e={},t={}){let r=["__proto__","constructor","prototype"];Object.keys(t).filter(e=>0>r.indexOf(e)).forEach(r=>{void 0===e[r]?e[r]=t[r]:p8(t[r])&&p8(e[r])&&Object.keys(t[r]).length>0&&p6(e[r],t[r])})}p9.displayName="RadioGroupIndicator";let p7={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function fe(){let e="u">typeof document?document:{};return p6(e,p7),e}let ft={document:p7,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"u"<typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"u">typeof setTimeout&&clearTimeout(e)}};function fr(){let e="u">typeof window?window:{};return p6(e,ft),e}function fn(e,t=0){return setTimeout(e,t)}function fi(){return Date.now()}function fa(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function fs(...e){let t=Object(e[0]),r=["__proto__","constructor","prototype"];for(let n=1;n<e.length;n+=1){let i=e[n];if(null!=i&&("u">typeof window&&void 0!==window.HTMLElement?!(i instanceof HTMLElement):!i||1!==i.nodeType&&11!==i.nodeType)){let e=Object.keys(Object(i)).filter(e=>0>r.indexOf(e));for(let r=0,n=e.length;r<n;r+=1){let n=e[r],a=Object.getOwnPropertyDescriptor(i,n);void 0!==a&&a.enumerable&&(fa(t[n])&&fa(i[n])?i[n].__swiper__?t[n]=i[n]:fs(t[n],i[n]):!fa(t[n])&&fa(i[n])?(t[n]={},i[n].__swiper__?t[n]=i[n]:fs(t[n],i[n])):t[n]=i[n])}}}return t}function fo(e,t,r){e.style.setProperty(t,r)}function fl({swiper:e,targetPosition:t,side:r}){let n,i=fr(),a=-e.translate,s=null,o=e.params.speed;e.wrapperEl.style.scrollSnapType="none",i.cancelAnimationFrame(e.cssModeFrameID);let l=t>a?"next":"prev",u=(e,t)=>"next"===l&&e>=t||"prev"===l&&e<=t,c=()=>{n=new Date().getTime(),null===s&&(s=n);let l=a+(.5-Math.cos(Math.max(Math.min((n-s)/o,1),0)*Math.PI)/2)*(t-a);if(u(l,t)&&(l=t),e.wrapperEl.scrollTo({[r]:l}),u(l,t)){e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.scrollSnapType="",setTimeout(()=>{e.wrapperEl.style.overflow="",e.wrapperEl.scrollTo({[r]:l})}),i.cancelAnimationFrame(e.cssModeFrameID);return}e.cssModeFrameID=i.requestAnimationFrame(c)};c()}function fu(e,t=""){let r=fr(),n=[...e.children];return(r.HTMLSlotElement&&e instanceof HTMLSlotElement&&n.push(...e.assignedElements()),t)?n.filter(e=>e.matches(t)):n}function fc(e){try{console.warn(e);return}catch(e){}}function fd(e,t=[]){let r=document.createElement(e);return r.classList.add(...Array.isArray(t)?t:function(e=""){return e.trim().split(" ").filter(e=>!!e.trim())}(t)),r}function fh(e,t){return fr().getComputedStyle(e,null).getPropertyValue(t)}function fp(e){let t,r=e;if(r){for(t=0;null!==(r=r.previousSibling);)1===r.nodeType&&(t+=1);return t}}function ff(e,t,r){let n=fr();return r?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(n.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(n.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function fA(e,t=""){"u">typeof trustedTypes?e.innerHTML=trustedTypes.createPolicy("html",{createHTML:e=>e}).createHTML(t):e.innerHTML=t}function fg(){let e,r;return t||(e=fr(),t={smoothScroll:(r=fe()).documentElement&&r.documentElement.style&&"scrollBehavior"in r.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&r instanceof e.DocumentTouch)}),t}function fm(e={}){return r||(r=function({userAgent:e}={}){let t=fg(),r=fr(),n=r.navigator.platform,i=e||r.navigator.userAgent,a={ios:!1,android:!1},s=r.screen.width,o=r.screen.height,l=i.match(/(Android);?[\s\/]+([\d.]+)?/),u=i.match(/(iPad)(?!\1).*OS\s([\d_]+)/),c=i.match(/(iPod)(.*OS\s([\d_]+))?/),d=!u&&i.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="MacIntel"===n;return!u&&h&&t.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${s}x${o}`)>=0&&((u=i.match(/(Version)\/([\d.]+)/))||(u=[0,1,"13_0_0"]),h=!1),l&&"Win32"!==n&&(a.os="android",a.android=!0),(u||d||c)&&(a.os="ios",a.ios=!0),a}(e)),r}function fv(){return n||(n=function(){let e=fr(),t=fm(),r=!1;function n(){let t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&0>t.indexOf("chrome")&&0>t.indexOf("android")}if(n()){let t=String(e.navigator.userAgent);if(t.includes("Version/")){let[e,n]=t.split("Version/")[1].split(" ")[0].split(".").map(e=>Number(e));r=e<16||16===e&&n<2}}let i=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),a=n(),s=a||i&&t.ios;return{isSafari:r||a,needPerspectiveFix:r,need3dFix:s,isWebView:i}}()),n}let fb=(e,t,r)=>{t&&!e.classList.contains(r)?e.classList.add(r):!t&&e.classList.contains(r)&&e.classList.remove(r)},fy=(e,t,r)=>{t&&!e.classList.contains(r)?e.classList.add(r):!t&&e.classList.contains(r)&&e.classList.remove(r)},fw=(e,t)=>{if(!e||e.destroyed||!e.params)return;let r=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(r){let t=r.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(r.shadowRoot?t=r.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{r.shadowRoot&&(t=r.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`))&&!t.lazyPreloaderManaged&&t.remove()})),t&&!t.lazyPreloaderManaged&&t.remove()}},fx=(e,t)=>{if(!e.slides[t])return;let r=e.slides[t].querySelector('[loading="lazy"]');r&&r.removeAttribute("loading")},fC=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext,r=e.slides.length;if(!r||!t||t<0)return;t=Math.min(t,r);let n="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),i=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){let r=[i-t];r.push(...Array.from({length:t}).map((e,t)=>i+n+t)),e.slides.forEach((t,n)=>{r.includes(t.column)&&fx(e,n)});return}let a=i+n-1;if(e.params.rewind||e.params.loop)for(let n=i-t;n<=a+t;n+=1){let t=(n%r+r)%r;(t<i||t>a)&&fx(e,t)}else for(let n=Math.max(i-t,0);n<=Math.min(a+t,r-1);n+=1)n!==i&&(n>a||n<i)&&fx(e,n)};function fE({swiper:e,runCallbacks:t,direction:r,step:n}){let{activeIndex:i,previousIndex:a}=e,s=r;s||(s=i>a?"next":i<a?"prev":"reset"),e.emit(`transition${n}`),t&&"reset"===s?e.emit(`slideResetTransition${n}`):t&&i!==a&&(e.emit(`slideChangeTransition${n}`),"next"===s?e.emit(`slideNextTransition${n}`):e.emit(`slidePrevTransition${n}`))}function fS(e,t,r){let n=fr(),{params:i}=e,a=i.edgeSwipeDetection,s=i.edgeSwipeThreshold;return!a||!(r<=s)&&!(r>=n.innerWidth-s)||"prevent"===a&&(t.preventDefault(),!0)}function fM(e){var t,r;let n,i,a=fe(),s=e;s.originalEvent&&(s=s.originalEvent);let o=this.touchEventsData;if("pointerdown"===s.type){if(null!==o.pointerId&&o.pointerId!==s.pointerId)return;o.pointerId=s.pointerId}else"touchstart"===s.type&&1===s.targetTouches.length&&(o.touchId=s.targetTouches[0].identifier);if("touchstart"===s.type)return void fS(this,s,s.targetTouches[0].pageX);let{params:l,touches:u,enabled:c}=this;if(!c||!l.simulateTouch&&"mouse"===s.pointerType||this.animating&&l.preventInteractionOnTransition)return;!this.animating&&l.cssMode&&l.loop&&this.loopFix();let d=s.target;if("wrapper"===l.touchEventsTarget&&(t=d,r=this.wrapperEl,n=fr(),!(i=r.contains(t))&&n.HTMLSlotElement&&r instanceof HTMLSlotElement&&((i=[...r.assignedElements()].includes(t))||(i=function(e,t){let r=[t];for(;r.length>0;){let t=r.shift();if(e===t)return!0;r.push(...t.children,...t.shadowRoot?t.shadowRoot.children:[],...t.assignedElements?t.assignedElements():[])}}(t,r))),!i)||"which"in s&&3===s.which||"button"in s&&s.button>0||o.isTouched&&o.isMoved)return;let h=!!l.noSwipingClass&&""!==l.noSwipingClass,p=s.composedPath?s.composedPath():s.path;h&&s.target&&s.target.shadowRoot&&p&&(d=p[0]);let f=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,A=!!(s.target&&s.target.shadowRoot);if(l.noSwiping&&(A?function(e,t=this){return function t(r){if(!r||r===fe()||r===fr())return null;r.assignedSlot&&(r=r.assignedSlot);let n=r.closest(e);return n||r.getRootNode?n||t(r.getRootNode().host):null}(t)}(f,d):d.closest(f))){this.allowClick=!0;return}if(l.swipeHandler&&!d.closest(l.swipeHandler))return;u.currentX=s.pageX,u.currentY=s.pageY;let g=u.currentX,m=u.currentY;if(!fS(this,s,g))return;Object.assign(o,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),u.startX=g,u.startY=m,o.touchStartTime=fi(),this.allowClick=!0,this.updateSize(),this.swipeDirection=void 0,l.threshold>0&&(o.allowThresholdMove=!1);let v=!0;d.matches(o.focusableElements)&&(v=!1,"SELECT"===d.nodeName&&(o.isTouched=!1)),a.activeElement&&a.activeElement.matches(o.focusableElements)&&a.activeElement!==d&&("mouse"===s.pointerType||"mouse"!==s.pointerType&&!d.matches(o.focusableElements))&&a.activeElement.blur();let b=v&&this.allowTouchMove&&l.touchStartPreventDefault;(l.touchStartForcePreventDefault||b)&&!d.isContentEditable&&s.preventDefault(),l.freeMode&&l.freeMode.enabled&&this.freeMode&&this.animating&&!l.cssMode&&this.freeMode.onTouchStart(),this.emit("touchStart",s)}function fI(e){let t,r,n=fe(),i=this.touchEventsData,{params:a,touches:s,rtlTranslate:o,enabled:l}=this;if(!l||!a.simulateTouch&&"mouse"===e.pointerType)return;let u=e;if(u.originalEvent&&(u=u.originalEvent),"pointermove"===u.type&&(null!==i.touchId||u.pointerId!==i.pointerId))return;if("touchmove"===u.type){if(!(t=[...u.changedTouches].find(e=>e.identifier===i.touchId))||t.identifier!==i.touchId)return}else t=u;if(!i.isTouched){i.startMoving&&i.isScrolling&&this.emit("touchMoveOpposite",u);return}let c=t.pageX,d=t.pageY;if(u.preventedByNestedSwiper){s.startX=c,s.startY=d;return}if(!this.allowTouchMove){u.target.matches(i.focusableElements)||(this.allowClick=!1),i.isTouched&&(Object.assign(s,{startX:c,startY:d,currentX:c,currentY:d}),i.touchStartTime=fi());return}if(a.touchReleaseOnEdges&&!a.loop){if(this.isVertical()){if(d<s.startY&&this.translate<=this.maxTranslate()||d>s.startY&&this.translate>=this.minTranslate()){i.isTouched=!1,i.isMoved=!1;return}}else if(o&&(c>s.startX&&-this.translate<=this.maxTranslate()||c<s.startX&&-this.translate>=this.minTranslate()))return;else if(!o&&(c<s.startX&&this.translate<=this.maxTranslate()||c>s.startX&&this.translate>=this.minTranslate()))return}if(n.activeElement&&n.activeElement.matches(i.focusableElements)&&n.activeElement!==u.target&&"mouse"!==u.pointerType&&n.activeElement.blur(),n.activeElement&&u.target===n.activeElement&&u.target.matches(i.focusableElements)){i.isMoved=!0,this.allowClick=!1;return}i.allowTouchCallbacks&&this.emit("touchMove",u),s.previousX=s.currentX,s.previousY=s.currentY,s.currentX=c,s.currentY=d;let h=s.currentX-s.startX,p=s.currentY-s.startY;if(this.params.threshold&&Math.sqrt(h**2+p**2)<this.params.threshold)return;if(void 0===i.isScrolling){let e;this.isHorizontal()&&s.currentY===s.startY||this.isVertical()&&s.currentX===s.startX?i.isScrolling=!1:h*h+p*p>=25&&(e=180*Math.atan2(Math.abs(p),Math.abs(h))/Math.PI,i.isScrolling=this.isHorizontal()?e>a.touchAngle:90-e>a.touchAngle)}if(i.isScrolling&&this.emit("touchMoveOpposite",u),void 0===i.startMoving&&(s.currentX!==s.startX||s.currentY!==s.startY)&&(i.startMoving=!0),i.isScrolling||"touchmove"===u.type&&i.preventTouchMoveFromPointerMove){i.isTouched=!1;return}if(!i.startMoving)return;this.allowClick=!1,!a.cssMode&&u.cancelable&&u.preventDefault(),a.touchMoveStopPropagation&&!a.nested&&u.stopPropagation();let f=this.isHorizontal()?h:p,A=this.isHorizontal()?s.currentX-s.previousX:s.currentY-s.previousY;a.oneWayMovement&&(f=Math.abs(f)*(o?1:-1),A=Math.abs(A)*(o?1:-1)),s.diff=f,f*=a.touchRatio,o&&(f=-f,A=-A);let g=this.touchesDirection;this.swipeDirection=f>0?"prev":"next",this.touchesDirection=A>0?"prev":"next";let m=this.params.loop&&!a.cssMode,v="next"===this.touchesDirection&&this.allowSlideNext||"prev"===this.touchesDirection&&this.allowSlidePrev;if(!i.isMoved){if(m&&v&&this.loopFix({direction:this.swipeDirection}),i.startTranslate=this.getTranslate(),this.setTransition(0),this.animating){let e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});this.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,a.grabCursor&&(!0===this.allowSlideNext||!0===this.allowSlidePrev)&&this.setGrabCursor(!0),this.emit("sliderFirstMove",u)}if(new Date().getTime(),!1!==a._loopSwapReset&&i.isMoved&&i.allowThresholdMove&&g!==this.touchesDirection&&m&&v&&Math.abs(f)>=1){Object.assign(s,{startX:c,startY:d,currentX:c,currentY:d,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,i.startTranslate=i.currentTranslate;return}this.emit("sliderMove",u),i.isMoved=!0,i.currentTranslate=f+i.startTranslate;let b=!0,y=a.resistanceRatio;if(a.touchReleaseOnEdges&&(y=0),f>0?(m&&v&&!r&&i.allowThresholdMove&&i.currentTranslate>(a.centeredSlides?this.minTranslate()-this.slidesSizesGrid[this.activeIndex+1]-("auto"!==a.slidesPerView&&this.slides.length-a.slidesPerView>=2?this.slidesSizesGrid[this.activeIndex+1]+this.params.spaceBetween:0)-this.params.spaceBetween:this.minTranslate())&&this.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>this.minTranslate()&&(b=!1,a.resistance&&(i.currentTranslate=this.minTranslate()-1+(-this.minTranslate()+i.startTranslate+f)**y))):f<0&&(m&&v&&!r&&i.allowThresholdMove&&i.currentTranslate<(a.centeredSlides?this.maxTranslate()+this.slidesSizesGrid[this.slidesSizesGrid.length-1]+this.params.spaceBetween+("auto"!==a.slidesPerView&&this.slides.length-a.slidesPerView>=2?this.slidesSizesGrid[this.slidesSizesGrid.length-1]+this.params.spaceBetween:0):this.maxTranslate())&&this.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:this.slides.length-("auto"===a.slidesPerView?this.slidesPerViewDynamic():Math.ceil(parseFloat(a.slidesPerView,10)))}),i.currentTranslate<this.maxTranslate()&&(b=!1,a.resistance&&(i.currentTranslate=this.maxTranslate()+1-(this.maxTranslate()-i.startTranslate-f)**y))),b&&(u.preventedByNestedSwiper=!0),!this.allowSlideNext&&"next"===this.swipeDirection&&i.currentTranslate<i.startTranslate&&(i.currentTranslate=i.startTranslate),!this.allowSlidePrev&&"prev"===this.swipeDirection&&i.currentTranslate>i.startTranslate&&(i.currentTranslate=i.startTranslate),this.allowSlidePrev||this.allowSlideNext||(i.currentTranslate=i.startTranslate),a.threshold>0)if(Math.abs(f)>a.threshold||i.allowThresholdMove){if(!i.allowThresholdMove){i.allowThresholdMove=!0,s.startX=s.currentX,s.startY=s.currentY,i.currentTranslate=i.startTranslate,s.diff=this.isHorizontal()?s.currentX-s.startX:s.currentY-s.startY;return}}else{i.currentTranslate=i.startTranslate;return}a.followFinger&&!a.cssMode&&((a.freeMode&&a.freeMode.enabled&&this.freeMode||a.watchSlidesProgress)&&(this.updateActiveIndex(),this.updateSlidesClasses()),a.freeMode&&a.freeMode.enabled&&this.freeMode&&this.freeMode.onTouchMove(),this.updateProgress(i.currentTranslate),this.setTranslate(i.currentTranslate))}function fB(e){let t,r,n=this,i=n.touchEventsData,a=e;if(a.originalEvent&&(a=a.originalEvent),"touchend"===a.type||"touchcancel"===a.type){if(!(t=[...a.changedTouches].find(e=>e.identifier===i.touchId))||t.identifier!==i.touchId)return}else{if(null!==i.touchId||a.pointerId!==i.pointerId)return;t=a}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(a.type)&&!(["pointercancel","contextmenu"].includes(a.type)&&(n.browser.isSafari||n.browser.isWebView)))return;i.pointerId=null,i.touchId=null;let{params:s,touches:o,rtlTranslate:l,slidesGrid:u,enabled:c}=n;if(!c||!s.simulateTouch&&"mouse"===a.pointerType)return;if(i.allowTouchCallbacks&&n.emit("touchEnd",a),i.allowTouchCallbacks=!1,!i.isTouched){i.isMoved&&s.grabCursor&&n.setGrabCursor(!1),i.isMoved=!1,i.startMoving=!1;return}s.grabCursor&&i.isMoved&&i.isTouched&&(!0===n.allowSlideNext||!0===n.allowSlidePrev)&&n.setGrabCursor(!1);let d=fi(),h=d-i.touchStartTime;if(n.allowClick){let e=a.path||a.composedPath&&a.composedPath();n.updateClickedSlide(e&&e[0]||a.target,e),n.emit("tap click",a),h<300&&d-i.lastClickTime<300&&n.emit("doubleTap doubleClick",a)}if(i.lastClickTime=fi(),fn(()=>{n.destroyed||(n.allowClick=!0)}),!i.isTouched||!i.isMoved||!n.swipeDirection||0===o.diff&&!i.loopSwapReset||i.currentTranslate===i.startTranslate&&!i.loopSwapReset){i.isTouched=!1,i.isMoved=!1,i.startMoving=!1;return}if(i.isTouched=!1,i.isMoved=!1,i.startMoving=!1,r=s.followFinger?l?n.translate:-n.translate:-i.currentTranslate,s.cssMode)return;if(s.freeMode&&s.freeMode.enabled)return void n.freeMode.onTouchEnd({currentPos:r});let p=r>=-n.maxTranslate()&&!n.params.loop,f=0,A=n.slidesSizesGrid[0];for(let e=0;e<u.length;e+=e<s.slidesPerGroupSkip?1:s.slidesPerGroup){let t=e<s.slidesPerGroupSkip-1?1:s.slidesPerGroup;void 0!==u[e+t]?(p||r>=u[e]&&r<u[e+t])&&(f=e,A=u[e+t]-u[e]):(p||r>=u[e])&&(f=e,A=u[u.length-1]-u[u.length-2])}let g=null,m=null;s.rewind&&(n.isBeginning?m=s.virtual&&s.virtual.enabled&&n.virtual?n.virtual.slides.length-1:n.slides.length-1:n.isEnd&&(g=0));let v=(r-u[f])/A,b=f<s.slidesPerGroupSkip-1?1:s.slidesPerGroup;if(h>s.longSwipesMs){if(!s.longSwipes)return void n.slideTo(n.activeIndex);"next"===n.swipeDirection&&(v>=s.longSwipesRatio?n.slideTo(s.rewind&&n.isEnd?g:f+b):n.slideTo(f)),"prev"===n.swipeDirection&&(v>1-s.longSwipesRatio?n.slideTo(f+b):null!==m&&v<0&&Math.abs(v)>s.longSwipesRatio?n.slideTo(m):n.slideTo(f))}else{if(!s.shortSwipes)return void n.slideTo(n.activeIndex);n.navigation&&(a.target===n.navigation.nextEl||a.target===n.navigation.prevEl)?a.target===n.navigation.nextEl?n.slideTo(f+b):n.slideTo(f):("next"===n.swipeDirection&&n.slideTo(null!==g?g:f+b),"prev"===n.swipeDirection&&n.slideTo(null!==m?m:f))}}function fT(){let e=this,{params:t,el:r}=e;if(r&&0===r.offsetWidth)return;t.breakpoints&&e.setBreakpoint();let{allowSlideNext:n,allowSlidePrev:i,snapGrid:a}=e,s=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();let o=s&&t.loop;"auto"!==t.slidesPerView&&!(t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!s?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout(()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()},500)),e.allowSlidePrev=i,e.allowSlideNext=n,e.params.watchOverflow&&a!==e.snapGrid&&e.checkOverflow()}function fk(e){this.enabled&&!this.allowClick&&(this.params.preventClicks&&e.preventDefault(),this.params.preventClicksPropagation&&this.animating&&(e.stopPropagation(),e.stopImmediatePropagation()))}function f_(){let{wrapperEl:e,rtlTranslate:t,enabled:r}=this;if(!r)return;this.previousTranslate=this.translate,this.isHorizontal()?this.translate=-e.scrollLeft:this.translate=-e.scrollTop,0===this.translate&&(this.translate=0),this.updateActiveIndex(),this.updateSlidesClasses();let n=this.maxTranslate()-this.minTranslate();(0===n?0:(this.translate-this.minTranslate())/n)!==this.progress&&this.updateProgress(t?-this.translate:this.translate),this.emit("setTranslate",this.translate,!1)}function fR(e){fw(this,e.target),!this.params.cssMode&&("auto"===this.params.slidesPerView||this.params.autoHeight)&&this.update()}function fP(){!this.documentTouchHandlerProceeded&&(this.documentTouchHandlerProceeded=!0,this.params.touchReleaseOnEdges&&(this.el.style.touchAction="auto"))}let fD=(e,t)=>{let r=fe(),{params:n,el:i,wrapperEl:a,device:s}=e,o=!!n.nested,l="on"===t?"addEventListener":"removeEventListener";i&&"string"!=typeof i&&(r[l]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),i[l]("touchstart",e.onTouchStart,{passive:!1}),i[l]("pointerdown",e.onTouchStart,{passive:!1}),r[l]("touchmove",e.onTouchMove,{passive:!1,capture:o}),r[l]("pointermove",e.onTouchMove,{passive:!1,capture:o}),r[l]("touchend",e.onTouchEnd,{passive:!0}),r[l]("pointerup",e.onTouchEnd,{passive:!0}),r[l]("pointercancel",e.onTouchEnd,{passive:!0}),r[l]("touchcancel",e.onTouchEnd,{passive:!0}),r[l]("pointerout",e.onTouchEnd,{passive:!0}),r[l]("pointerleave",e.onTouchEnd,{passive:!0}),r[l]("contextmenu",e.onTouchEnd,{passive:!0}),(n.preventClicks||n.preventClicksPropagation)&&i[l]("click",e.onClick,!0),n.cssMode&&a[l]("scroll",e.onScroll),n.updateOnWindowResize?e[t](s.ios||s.android?"resize orientationchange observerUpdate":"resize observerUpdate",fT,!0):e[t]("observerUpdate",fT,!0),i[l]("load",e.onLoad,{capture:!0}))},fL=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var fF={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,snapToSlideEdge:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};let fO={eventsEmitter:{on(e,t,r){let n=this;if(!n.eventsListeners||n.destroyed||"function"!=typeof t)return n;let i=r?"unshift":"push";return e.split(" ").forEach(e=>{n.eventsListeners[e]||(n.eventsListeners[e]=[]),n.eventsListeners[e][i](t)}),n},once(e,t,r){let n=this;if(!n.eventsListeners||n.destroyed||"function"!=typeof t)return n;function i(...r){n.off(e,i),i.__emitterProxy&&delete i.__emitterProxy,t.apply(n,r)}return i.__emitterProxy=t,n.on(e,i,r)},onAny(e,t){return!this.eventsListeners||this.destroyed||"function"!=typeof e||0>this.eventsAnyListeners.indexOf(e)&&this.eventsAnyListeners[t?"unshift":"push"](e),this},offAny(e){if(!this.eventsListeners||this.destroyed||!this.eventsAnyListeners)return this;let t=this.eventsAnyListeners.indexOf(e);return t>=0&&this.eventsAnyListeners.splice(t,1),this},off(e,t){let r=this;return r.eventsListeners&&!r.destroyed&&r.eventsListeners&&e.split(" ").forEach(e=>{void 0===t?r.eventsListeners[e]=[]:r.eventsListeners[e]&&r.eventsListeners[e].forEach((n,i)=>{(n===t||n.__emitterProxy&&n.__emitterProxy===t)&&r.eventsListeners[e].splice(i,1)})}),r},emit(...e){let t,r,n,i=this;return i.eventsListeners&&!i.destroyed&&i.eventsListeners&&("string"==typeof e[0]||Array.isArray(e[0])?(t=e[0],r=e.slice(1,e.length),n=i):(t=e[0].events,r=e[0].data,n=e[0].context||i),r.unshift(n),(Array.isArray(t)?t:t.split(" ")).forEach(e=>{i.eventsAnyListeners&&i.eventsAnyListeners.length&&i.eventsAnyListeners.forEach(t=>{t.apply(n,[e,...r])}),i.eventsListeners&&i.eventsListeners[e]&&i.eventsListeners[e].forEach(e=>{e.apply(n,r)})})),i}},update:{updateSize:function(){let e,t,r=this.el;e=void 0!==this.params.width&&null!==this.params.width?this.params.width:r.clientWidth,t=void 0!==this.params.height&&null!==this.params.height?this.params.height:r.clientHeight,0===e&&this.isHorizontal()||0===t&&this.isVertical()||(e=e-parseInt(fh(r,"padding-left")||0,10)-parseInt(fh(r,"padding-right")||0,10),t=t-parseInt(fh(r,"padding-top")||0,10)-parseInt(fh(r,"padding-bottom")||0,10),Number.isNaN(e)&&(e=0),Number.isNaN(t)&&(t=0),Object.assign(this,{width:e,height:t,size:this.isHorizontal()?e:t}))},updateSlides:function(){let e,t=this;function r(e,r){return parseFloat(e.getPropertyValue(t.getDirectionLabel(r))||0)}let n=t.params,{wrapperEl:i,slidesEl:a,rtlTranslate:s,wrongRTL:o}=t,l=t.virtual&&n.virtual.enabled,u=l?t.virtual.slides.length:t.slides.length,c=fu(a,`.${t.params.slideClass}, swiper-slide`),d=l?t.virtual.slides.length:c.length,h=[],p=[],f=[],A=n.slidesOffsetBefore;"function"==typeof A&&(A=n.slidesOffsetBefore.call(t));let g=n.slidesOffsetAfter;"function"==typeof g&&(g=n.slidesOffsetAfter.call(t));let m=t.snapGrid.length,v=t.slidesGrid.length,b=t.size-A-g,y=n.spaceBetween,w=-A,x=0,C=0;if(void 0===b)return;"string"==typeof y&&y.indexOf("%")>=0?y=parseFloat(y.replace("%",""))/100*b:"string"==typeof y&&(y=parseFloat(y)),t.virtualSize=-y-A-g,c.forEach(e=>{s?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""}),n.centeredSlides&&n.cssMode&&(fo(i,"--swiper-centered-offset-before",""),fo(i,"--swiper-centered-offset-after","")),n.cssMode&&(fo(i,"--swiper-slides-offset-before",`${A}px`),fo(i,"--swiper-slides-offset-after",`${g}px`));let E=n.grid&&n.grid.rows>1&&t.grid;E?t.grid.initSlides(c):t.grid&&t.grid.unsetSlides();let S="auto"===n.slidesPerView&&n.breakpoints&&Object.keys(n.breakpoints).filter(e=>void 0!==n.breakpoints[e].slidesPerView).length>0;for(let i=0;i<d;i+=1){e=0;let a=c[i];if(!a||(E&&t.grid.updateSlide(i,a,c),"none"!==fh(a,"display"))){if(l&&"auto"===n.slidesPerView)n.virtual.slidesPerViewAutoSlideSize&&(e=n.virtual.slidesPerViewAutoSlideSize),e&&a&&(n.roundLengths&&(e=Math.floor(e)),a.style[t.getDirectionLabel("width")]=`${e}px`);else if("auto"===n.slidesPerView){S&&(a.style[t.getDirectionLabel("width")]="");let i=getComputedStyle(a),s=a.style.transform,o=a.style.webkitTransform;if(s&&(a.style.transform="none"),o&&(a.style.webkitTransform="none"),n.roundLengths)e=t.isHorizontal()?ff(a,"width",!0):ff(a,"height",!0);else{let t=r(i,"width"),n=r(i,"padding-left"),s=r(i,"padding-right"),o=r(i,"margin-left"),l=r(i,"margin-right"),u=i.getPropertyValue("box-sizing");if(u&&"border-box"===u)e=t+o+l;else{let{clientWidth:r,offsetWidth:i}=a;e=t+n+s+o+l+(i-r)}}s&&(a.style.transform=s),o&&(a.style.webkitTransform=o),n.roundLengths&&(e=Math.floor(e))}else e=(b-(n.slidesPerView-1)*y)/n.slidesPerView,n.roundLengths&&(e=Math.floor(e)),a&&(a.style[t.getDirectionLabel("width")]=`${e}px`);a&&(a.swiperSlideSize=e),f.push(e),n.centeredSlides?(w=w+e/2+x/2+y,0===x&&0!==i&&(w=w-b/2-y),0===i&&(w=w-b/2-y),.001>Math.abs(w)&&(w=0),n.roundLengths&&(w=Math.floor(w)),C%n.slidesPerGroup==0&&h.push(w),p.push(w)):(n.roundLengths&&(w=Math.floor(w)),(C-Math.min(t.params.slidesPerGroupSkip,C))%t.params.slidesPerGroup==0&&h.push(w),p.push(w),w=w+e+y),t.virtualSize+=e+y,x=e,C+=1}}if(t.virtualSize=Math.max(t.virtualSize,b)+g,s&&o&&("slide"===n.effect||"coverflow"===n.effect)&&(i.style.width=`${t.virtualSize+y}px`),n.setWrapperSize&&(i.style[t.getDirectionLabel("width")]=`${t.virtualSize+y}px`),E&&t.grid.updateWrapperSize(e,h),!n.centeredSlides){let e="auto"!==n.slidesPerView&&n.slidesPerView%1!=0,r=n.snapToSlideEdge&&!n.loop&&("auto"===n.slidesPerView||e),i=h.length;if(r){let e;if("auto"===n.slidesPerView){e=1;let t=0;for(let r=f.length-1;r>=0;r-=1)if((t+=f[r]+(r<f.length-1?y:0))<=b)e=f.length-r;else break}else e=Math.floor(n.slidesPerView);i=Math.max(d-e,0)}let a=[];for(let e=0;e<h.length;e+=1){let s=h[e];n.roundLengths&&(s=Math.floor(s)),r?e<=i&&a.push(s):h[e]<=t.virtualSize-b&&a.push(s)}h=a,Math.floor(t.virtualSize-b)-Math.floor(h[h.length-1])>1&&!r&&h.push(t.virtualSize-b)}if(l&&n.loop){let e=f[0]+y;if(n.slidesPerGroup>1){let r=Math.ceil((t.virtual.slidesBefore+t.virtual.slidesAfter)/n.slidesPerGroup),i=e*n.slidesPerGroup;for(let e=0;e<r;e+=1)h.push(h[h.length-1]+i)}for(let r=0;r<t.virtual.slidesBefore+t.virtual.slidesAfter;r+=1)1===n.slidesPerGroup&&h.push(h[h.length-1]+e),p.push(p[p.length-1]+e),t.virtualSize+=e}if(0===h.length&&(h=[0]),0!==y){let e=t.isHorizontal()&&s?"marginLeft":t.getDirectionLabel("marginRight");c.filter((e,t)=>!n.cssMode||!!n.loop||t!==c.length-1).forEach(t=>{t.style[e]=`${y}px`})}if(n.centeredSlides&&n.centeredSlidesBounds){let e=0;f.forEach(t=>{e+=t+(y||0)});let t=(e-=y)>b?e-b:0;h=h.map(e=>e<=0?-A:e>t?t+g:e)}if(n.centerInsufficientSlides){let e=0;if(f.forEach(t=>{e+=t+(y||0)}),(e-=y)<b){let t=(b-e)/2;h.forEach((e,r)=>{h[r]=e-t}),p.forEach((e,r)=>{p[r]=e+t})}}if(Object.assign(t,{slides:c,snapGrid:h,slidesGrid:p,slidesSizesGrid:f}),n.centeredSlides&&n.cssMode&&!n.centeredSlidesBounds){fo(i,"--swiper-centered-offset-before",`${-h[0]}px`),fo(i,"--swiper-centered-offset-after",`${t.size/2-f[f.length-1]/2}px`);let e=-t.snapGrid[0],r=-t.slidesGrid[0];t.snapGrid=t.snapGrid.map(t=>t+e),t.slidesGrid=t.slidesGrid.map(e=>e+r)}if(d!==u&&t.emit("slidesLengthChange"),h.length!==m&&(t.params.watchOverflow&&t.checkOverflow(),t.emit("snapGridLengthChange")),p.length!==v&&t.emit("slidesGridLengthChange"),n.watchSlidesProgress&&t.updateSlidesOffset(),t.emit("slidesUpdated"),!l&&!n.cssMode&&("slide"===n.effect||"fade"===n.effect)){let e=`${n.containerModifierClass}backface-hidden`,r=t.el.classList.contains(e);d<=n.maxBackfaceHiddenSlides?r||t.el.classList.add(e):r&&t.el.classList.remove(e)}},updateAutoHeight:function(e){let t,r=this,n=[],i=r.virtual&&r.params.virtual.enabled,a=0;"number"==typeof e?r.setTransition(e):!0===e&&r.setTransition(r.params.speed);let s=e=>i?r.slides[r.getSlideIndexByData(e)]:r.slides[e];if("auto"!==r.params.slidesPerView&&r.params.slidesPerView>1)if(r.params.centeredSlides)(r.visibleSlides||[]).forEach(e=>{n.push(e)});else for(t=0;t<Math.ceil(r.params.slidesPerView);t+=1){let e=r.activeIndex+t;if(e>r.slides.length&&!i)break;n.push(s(e))}else n.push(s(r.activeIndex));for(t=0;t<n.length;t+=1)if(void 0!==n[t]){let e=n[t].offsetHeight;a=e>a?e:a}(a||0===a)&&(r.wrapperEl.style.height=`${a}px`)},updateSlidesOffset:function(){let e=this.slides,t=this.isElement?this.isHorizontal()?this.wrapperEl.offsetLeft:this.wrapperEl.offsetTop:0;for(let r=0;r<e.length;r+=1)e[r].swiperSlideOffset=(this.isHorizontal()?e[r].offsetLeft:e[r].offsetTop)-t-this.cssOverflowAdjustment()},updateSlidesProgress:function(e=this&&this.translate||0){let t=this.params,{slides:r,rtlTranslate:n,snapGrid:i}=this;if(0===r.length)return;void 0===r[0].swiperSlideOffset&&this.updateSlidesOffset();let a=-e;n&&(a=e),this.visibleSlidesIndexes=[],this.visibleSlides=[];let s=t.spaceBetween;"string"==typeof s&&s.indexOf("%")>=0?s=parseFloat(s.replace("%",""))/100*this.size:"string"==typeof s&&(s=parseFloat(s));for(let e=0;e<r.length;e+=1){let o=r[e],l=o.swiperSlideOffset;t.cssMode&&t.centeredSlides&&(l-=r[0].swiperSlideOffset);let u=(a+(t.centeredSlides?this.minTranslate():0)-l)/(o.swiperSlideSize+s),c=(a-i[0]+(t.centeredSlides?this.minTranslate():0)-l)/(o.swiperSlideSize+s),d=-(a-l),h=d+this.slidesSizesGrid[e],p=d>=0&&d<=this.size-this.slidesSizesGrid[e],f=d>=0&&d<this.size-1||h>1&&h<=this.size||d<=0&&h>=this.size;f&&(this.visibleSlides.push(o),this.visibleSlidesIndexes.push(e)),fb(o,f,t.slideVisibleClass),fb(o,p,t.slideFullyVisibleClass),o.progress=n?-u:u,o.originalProgress=n?-c:c}},updateProgress:function(e){if(void 0===e){let t=this.rtlTranslate?-1:1;e=this&&this.translate&&this.translate*t||0}let t=this.params,r=this.maxTranslate()-this.minTranslate(),{progress:n,isBeginning:i,isEnd:a,progressLoop:s}=this,o=i,l=a;if(0===r)n=0,i=!0,a=!0;else{n=(e-this.minTranslate())/r;let t=1>Math.abs(e-this.minTranslate()),s=1>Math.abs(e-this.maxTranslate());i=t||n<=0,a=s||n>=1,t&&(n=0),s&&(n=1)}if(t.loop){let t=this.getSlideIndexByData(0),r=this.getSlideIndexByData(this.slides.length-1),n=this.slidesGrid[t],i=this.slidesGrid[r],a=this.slidesGrid[this.slidesGrid.length-1],o=Math.abs(e);(s=o>=n?(o-n)/a:(o+a-i)/a)>1&&(s-=1)}Object.assign(this,{progress:n,progressLoop:s,isBeginning:i,isEnd:a}),(t.watchSlidesProgress||t.centeredSlides&&t.autoHeight)&&this.updateSlidesProgress(e),i&&!o&&this.emit("reachBeginning toEdge"),a&&!l&&this.emit("reachEnd toEdge"),(o&&!i||l&&!a)&&this.emit("fromEdge"),this.emit("progress",n)},updateSlidesClasses:function(){let e,t,r,{slides:n,params:i,slidesEl:a,activeIndex:s}=this,o=this.virtual&&i.virtual.enabled,l=this.grid&&i.grid&&i.grid.rows>1,u=e=>fu(a,`.${i.slideClass}${e}, swiper-slide${e}`)[0];if(o)if(i.loop){let t=s-this.virtual.slidesBefore;t<0&&(t=this.virtual.slides.length+t),t>=this.virtual.slides.length&&(t-=this.virtual.slides.length),e=u(`[data-swiper-slide-index="${t}"]`)}else e=u(`[data-swiper-slide-index="${s}"]`);else l?(e=n.find(e=>e.column===s),r=n.find(e=>e.column===s+1),t=n.find(e=>e.column===s-1)):e=n[s];e&&!l&&(r=function(e,t){let r=[];for(;e.nextElementSibling;){let n=e.nextElementSibling;t?n.matches(t)&&r.push(n):r.push(n),e=n}return r}(e,`.${i.slideClass}, swiper-slide`)[0],i.loop&&!r&&(r=n[0]),t=function(e,t){let r=[];for(;e.previousElementSibling;){let n=e.previousElementSibling;t?n.matches(t)&&r.push(n):r.push(n),e=n}return r}(e,`.${i.slideClass}, swiper-slide`)[0],i.loop),n.forEach(n=>{fy(n,n===e,i.slideActiveClass),fy(n,n===r,i.slideNextClass),fy(n,n===t,i.slidePrevClass)}),this.emitSlidesClasses()},updateActiveIndex:function(e){let t,r,n=this,i=n.rtlTranslate?n.translate:-n.translate,{snapGrid:a,params:s,activeIndex:o,realIndex:l,snapIndex:u}=n,c=e,d=e=>{let t=e-n.virtual.slidesBefore;return t<0&&(t=n.virtual.slides.length+t),t>=n.virtual.slides.length&&(t-=n.virtual.slides.length),t};if(void 0===c&&(c=function(e){let t,{slidesGrid:r,params:n}=e,i=e.rtlTranslate?e.translate:-e.translate;for(let e=0;e<r.length;e+=1)void 0!==r[e+1]?i>=r[e]&&i<r[e+1]-(r[e+1]-r[e])/2?t=e:i>=r[e]&&i<r[e+1]&&(t=e+1):i>=r[e]&&(t=e);return n.normalizeSlideIndex&&(t<0||void 0===t)&&(t=0),t}(n)),a.indexOf(i)>=0)t=a.indexOf(i);else{let e=Math.min(s.slidesPerGroupSkip,c);t=e+Math.floor((c-e)/s.slidesPerGroup)}if(t>=a.length&&(t=a.length-1),c===o&&!n.params.loop){t!==u&&(n.snapIndex=t,n.emit("snapIndexChange"));return}if(c===o&&n.params.loop&&n.virtual&&n.params.virtual.enabled){n.realIndex=d(c);return}let h=n.grid&&s.grid&&s.grid.rows>1;if(n.virtual&&s.virtual.enabled)r=s.loop?d(c):c;else if(h){let e=n.slides.find(e=>e.column===c),t=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(t)&&(t=Math.max(n.slides.indexOf(e),0)),r=Math.floor(t/s.grid.rows)}else if(n.slides[c]){let e=n.slides[c].getAttribute("data-swiper-slide-index");r=e?parseInt(e,10):c}else r=c;Object.assign(n,{previousSnapIndex:u,snapIndex:t,previousRealIndex:l,realIndex:r,previousIndex:o,activeIndex:c}),n.initialized&&fC(n),n.emit("activeIndexChange"),n.emit("snapIndexChange"),(n.initialized||n.params.runCallbacksOnInit)&&(l!==r&&n.emit("realIndexChange"),n.emit("slideChange"))},updateClickedSlide:function(e,t){let r,n=this.params,i=e.closest(`.${n.slideClass}, swiper-slide`);!i&&this.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach(e=>{!i&&e.matches&&e.matches(`.${n.slideClass}, swiper-slide`)&&(i=e)});let a=!1;if(i){for(let e=0;e<this.slides.length;e+=1)if(this.slides[e]===i){a=!0,r=e;break}}if(i&&a)this.clickedSlide=i,this.virtual&&this.params.virtual.enabled?this.clickedIndex=parseInt(i.getAttribute("data-swiper-slide-index"),10):this.clickedIndex=r;else{this.clickedSlide=void 0,this.clickedIndex=void 0;return}n.slideToClickedSlide&&void 0!==this.clickedIndex&&this.clickedIndex!==this.activeIndex&&this.slideToClickedSlide()}},translate:{getTranslate:function(e=this.isHorizontal()?"x":"y"){let{params:t,rtlTranslate:r,translate:n,wrapperEl:i}=this;if(t.virtualTranslate)return r?-n:n;if(t.cssMode)return n;let a=function(e,t="x"){let r,n,i,a,s,o=fr(),l=((s=fr()).getComputedStyle&&(a=s.getComputedStyle(e,null)),!a&&e.currentStyle&&(a=e.currentStyle),a||(a=e.style),a);return o.WebKitCSSMatrix?((n=l.transform||l.webkitTransform).split(",").length>6&&(n=n.split(", ").map(e=>e.replace(",",".")).join(", ")),i=new o.WebKitCSSMatrix("none"===n?"":n)):r=(i=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,")).toString().split(","),"x"===t&&(n=o.WebKitCSSMatrix?i.m41:16===r.length?parseFloat(r[12]):parseFloat(r[4])),"y"===t&&(n=o.WebKitCSSMatrix?i.m42:16===r.length?parseFloat(r[13]):parseFloat(r[5])),n||0}(i,e);return a+=this.cssOverflowAdjustment(),r&&(a=-a),a||0},setTranslate:function(e,t){let{rtlTranslate:r,params:n,wrapperEl:i,progress:a}=this,s=0,o=0;this.isHorizontal()?s=r?-e:e:o=e,n.roundLengths&&(s=Math.floor(s),o=Math.floor(o)),this.previousTranslate=this.translate,this.translate=this.isHorizontal()?s:o,n.cssMode?i[this.isHorizontal()?"scrollLeft":"scrollTop"]=this.isHorizontal()?-s:-o:n.virtualTranslate||(this.isHorizontal()?s-=this.cssOverflowAdjustment():o-=this.cssOverflowAdjustment(),i.style.transform=`translate3d(${s}px, ${o}px, 0px)`);let l=this.maxTranslate()-this.minTranslate();(0===l?0:(e-this.minTranslate())/l)!==a&&this.updateProgress(e),this.emit("setTranslate",this.translate,t)},minTranslate:function(){return-this.snapGrid[0]},maxTranslate:function(){return-this.snapGrid[this.snapGrid.length-1]},translateTo:function(e=0,t=this.params.speed,r=!0,n=!0,i){let a,s=this,{params:o,wrapperEl:l}=s;if(s.animating&&o.preventInteractionOnTransition)return!1;let u=s.minTranslate(),c=s.maxTranslate();if(a=n&&e>u?u:n&&e<c?c:e,s.updateProgress(a),o.cssMode){let e=s.isHorizontal();if(0===t)l[e?"scrollLeft":"scrollTop"]=-a;else{if(!s.support.smoothScroll)return fl({swiper:s,targetPosition:-a,side:e?"left":"top"}),!0;l.scrollTo({[e?"left":"top"]:-a,behavior:"smooth"})}return!0}return 0===t?(s.setTransition(0),s.setTranslate(a),r&&(s.emit("beforeTransitionStart",t,i),s.emit("transitionEnd"))):(s.setTransition(t),s.setTranslate(a),r&&(s.emit("beforeTransitionStart",t,i),s.emit("transitionStart")),s.animating||(s.animating=!0,s.onTranslateToWrapperTransitionEnd||(s.onTranslateToWrapperTransitionEnd=function(e){!s||s.destroyed||e.target===this&&(s.wrapperEl.removeEventListener("transitionend",s.onTranslateToWrapperTransitionEnd),s.onTranslateToWrapperTransitionEnd=null,delete s.onTranslateToWrapperTransitionEnd,s.animating=!1,r&&s.emit("transitionEnd"))}),s.wrapperEl.addEventListener("transitionend",s.onTranslateToWrapperTransitionEnd))),!0}},transition:{setTransition:function(e,t){this.params.cssMode||(this.wrapperEl.style.transitionDuration=`${e}ms`,this.wrapperEl.style.transitionDelay=0===e?"0ms":""),this.emit("setTransition",e,t)},transitionStart:function(e=!0,t){let{params:r}=this;r.cssMode||(r.autoHeight&&this.updateAutoHeight(),fE({swiper:this,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e=!0,t){let{params:r}=this;this.animating=!1,r.cssMode||(this.setTransition(0),fE({swiper:this,runCallbacks:e,direction:t,step:"End"}))}},slide:{slideTo:function(e=0,t,r=!0,n,i){let a;"string"==typeof e&&(e=parseInt(e,10));let s=this,o=e;o<0&&(o=0);let{params:l,snapGrid:u,slidesGrid:c,previousIndex:d,activeIndex:h,rtlTranslate:p,wrapperEl:f,enabled:A}=s;if(!A&&!n&&!i||s.destroyed||s.animating&&l.preventInteractionOnTransition)return!1;void 0===t&&(t=s.params.speed);let g=Math.min(s.params.slidesPerGroupSkip,o),m=g+Math.floor((o-g)/s.params.slidesPerGroup);m>=u.length&&(m=u.length-1);let v=-u[m];if(l.normalizeSlideIndex)for(let e=0;e<c.length;e+=1){let t=-Math.floor(100*v),r=Math.floor(100*c[e]),n=Math.floor(100*c[e+1]);void 0!==c[e+1]?t>=r&&t<n-(n-r)/2?o=e:t>=r&&t<n&&(o=e+1):t>=r&&(o=e)}if(s.initialized&&o!==h&&(!s.allowSlideNext&&(p?v>s.translate&&v>s.minTranslate():v<s.translate&&v<s.minTranslate())||!s.allowSlidePrev&&v>s.translate&&v>s.maxTranslate()&&(h||0)!==o))return!1;o!==(d||0)&&r&&s.emit("beforeSlideChangeStart"),s.updateProgress(v),a=o>h?"next":o<h?"prev":"reset";let b=s.virtual&&s.params.virtual.enabled;if(!(b&&i)&&(p&&-v===s.translate||!p&&v===s.translate))return s.updateActiveIndex(o),l.autoHeight&&s.updateAutoHeight(),s.updateSlidesClasses(),"slide"!==l.effect&&s.setTranslate(v),"reset"!==a&&(s.transitionStart(r,a),s.transitionEnd(r,a)),!1;if(l.cssMode){let e=s.isHorizontal(),r=p?v:-v;if(0===t)b&&(s.wrapperEl.style.scrollSnapType="none",s._immediateVirtual=!0),b&&!s._cssModeVirtualInitialSet&&s.params.initialSlide>0?(s._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{f[e?"scrollLeft":"scrollTop"]=r})):f[e?"scrollLeft":"scrollTop"]=r,b&&requestAnimationFrame(()=>{s.wrapperEl.style.scrollSnapType="",s._immediateVirtual=!1});else{if(!s.support.smoothScroll)return fl({swiper:s,targetPosition:r,side:e?"left":"top"}),!0;f.scrollTo({[e?"left":"top"]:r,behavior:"smooth"})}return!0}let y=fv().isSafari;return b&&!i&&y&&s.isElement&&s.virtual.update(!1,!1,o),s.setTransition(t),s.setTranslate(v),s.updateActiveIndex(o),s.updateSlidesClasses(),s.emit("beforeTransitionStart",t,n),s.transitionStart(r,a),0===t?s.transitionEnd(r,a):s.animating||(s.animating=!0,s.onSlideToWrapperTransitionEnd||(s.onSlideToWrapperTransitionEnd=function(e){!s||s.destroyed||e.target===this&&(s.wrapperEl.removeEventListener("transitionend",s.onSlideToWrapperTransitionEnd),s.onSlideToWrapperTransitionEnd=null,delete s.onSlideToWrapperTransitionEnd,s.transitionEnd(r,a))}),s.wrapperEl.addEventListener("transitionend",s.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e=0,t,r=!0,n){"string"==typeof e&&(e=parseInt(e,10));let i=this;if(i.destroyed)return;void 0===t&&(t=i.params.speed);let a=i.grid&&i.params.grid&&i.params.grid.rows>1,s=e;if(i.params.loop)if(i.virtual&&i.params.virtual.enabled)s+=i.virtual.slidesBefore;else{let e;if(a){let t=s*i.params.grid.rows;e=i.slides.find(e=>+e.getAttribute("data-swiper-slide-index")===t).column}else e=i.getSlideIndexByData(s);let t=a?Math.ceil(i.slides.length/i.params.grid.rows):i.slides.length,{centeredSlides:r,slidesOffsetBefore:o,slidesOffsetAfter:l}=i.params,u=r||!!o||!!l,c=i.params.slidesPerView;"auto"===c?c=i.slidesPerViewDynamic():(c=Math.ceil(parseFloat(i.params.slidesPerView,10)),u&&c%2==0&&(c+=1));let d=t-e<c;if(u&&(d=d||e<Math.ceil(c/2)),n&&u&&"auto"!==i.params.slidesPerView&&!a&&(d=!1),d){let r=u?e<i.activeIndex?"prev":"next":e-i.activeIndex-1<i.params.slidesPerView?"next":"prev";i.loopFix({direction:r,slideTo:!0,activeSlideIndex:"next"===r?e+1:e-t+1,slideRealIndex:"next"===r?i.realIndex:void 0})}if(a){let e=s*i.params.grid.rows;s=i.slides.find(t=>+t.getAttribute("data-swiper-slide-index")===e).column}else s=i.getSlideIndexByData(s)}return requestAnimationFrame(()=>{i.slideTo(s,t,r,n)}),i},slideNext:function(e,t=!0,r){let n=this,{enabled:i,params:a,animating:s}=n;if(!i||n.destroyed)return n;void 0===e&&(e=n.params.speed);let o=a.slidesPerGroup;"auto"===a.slidesPerView&&1===a.slidesPerGroup&&a.slidesPerGroupAuto&&(o=Math.max(n.slidesPerViewDynamic("current",!0),1));let l=n.activeIndex<a.slidesPerGroupSkip?1:o,u=n.virtual&&a.virtual.enabled;if(a.loop){if(s&&!u&&a.loopPreventsSliding)return!1;if(n.loopFix({direction:"next"}),n._clientLeft=n.wrapperEl.clientLeft,n.activeIndex===n.slides.length-1&&a.cssMode)return requestAnimationFrame(()=>{n.slideTo(n.activeIndex+l,e,t,r)}),!0}return a.rewind&&n.isEnd?n.slideTo(0,e,t,r):n.slideTo(n.activeIndex+l,e,t,r)},slidePrev:function(e,t=!0,r){let n=this,{params:i,snapGrid:a,slidesGrid:s,rtlTranslate:o,enabled:l,animating:u}=n;if(!l||n.destroyed)return n;void 0===e&&(e=n.params.speed);let c=n.virtual&&i.virtual.enabled;if(i.loop){if(u&&!c&&i.loopPreventsSliding)return!1;n.loopFix({direction:"prev"}),n._clientLeft=n.wrapperEl.clientLeft}function d(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}let h=d(o?n.translate:-n.translate),p=a.map(e=>d(e)),f=i.freeMode&&i.freeMode.enabled,A=a[p.indexOf(h)-1];if(void 0===A&&(i.cssMode||f)){let e;a.forEach((t,r)=>{h>=t&&(e=r)}),void 0!==e&&(A=f?a[e]:a[e>0?e-1:e])}let g=0;if(void 0!==A&&((g=s.indexOf(A))<0&&(g=n.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(g=Math.max(g=g-n.slidesPerViewDynamic("previous",!0)+1,0))),i.rewind&&n.isBeginning){let i=n.params.virtual&&n.params.virtual.enabled&&n.virtual?n.virtual.slides.length-1:n.slides.length-1;return n.slideTo(i,e,t,r)}return i.loop&&0===n.activeIndex&&i.cssMode?(requestAnimationFrame(()=>{n.slideTo(g,e,t,r)}),!0):n.slideTo(g,e,t,r)},slideReset:function(e,t=!0,r){if(!this.destroyed)return void 0===e&&(e=this.params.speed),this.slideTo(this.activeIndex,e,t,r)},slideToClosest:function(e,t=!0,r,n=.5){if(this.destroyed)return;void 0===e&&(e=this.params.speed);let i=this.activeIndex,a=Math.min(this.params.slidesPerGroupSkip,i),s=a+Math.floor((i-a)/this.params.slidesPerGroup),o=this.rtlTranslate?this.translate:-this.translate;if(o>=this.snapGrid[s]){let e=this.snapGrid[s];o-e>(this.snapGrid[s+1]-e)*n&&(i+=this.params.slidesPerGroup)}else{let e=this.snapGrid[s-1];o-e<=(this.snapGrid[s]-e)*n&&(i-=this.params.slidesPerGroup)}return i=Math.min(i=Math.max(i,0),this.slidesGrid.length-1),this.slideTo(i,e,t,r)},slideToClickedSlide:function(){let e,t=this;if(t.destroyed)return;let{params:r,slidesEl:n}=t,i="auto"===r.slidesPerView?t.slidesPerViewDynamic():r.slidesPerView,a=t.getSlideIndexWhenGrid(t.clickedIndex),s=t.isElement?"swiper-slide":`.${r.slideClass}`,o=t.grid&&t.params.grid&&t.params.grid.rows>1;if(r.loop){if(t.animating)return;e=parseInt(t.clickedSlide.getAttribute("data-swiper-slide-index"),10),r.centeredSlides?t.slideToLoop(e):a>(o?(t.slides.length-i)/2-(t.params.grid.rows-1):t.slides.length-i)?(t.loopFix(),a=t.getSlideIndex(fu(n,`${s}[data-swiper-slide-index="${e}"]`)[0]),fn(()=>{t.slideTo(a)})):t.slideTo(a)}else t.slideTo(a)}},loop:{loopCreate:function(e,t){let r,n=this,{params:i,slidesEl:a}=n;if(!i.loop||n.virtual&&n.params.virtual.enabled)return;let s=n.grid&&i.grid&&i.grid.rows>1;i.loopAddBlankSlides&&(i.slidesPerGroup>1||s)&&((r=fu(a,`.${i.slideBlankClass}`)).forEach(e=>{e.remove()}),r.length>0&&(n.recalcSlides(),n.updateSlides()));let o=i.slidesPerGroup*(s?i.grid.rows:1),l=n.slides.length%o!=0,u=s&&n.slides.length%i.grid.rows!=0,c=e=>{for(let t=0;t<e;t+=1){let e=n.isElement?fd("swiper-slide",[i.slideBlankClass]):fd("div",[i.slideClass,i.slideBlankClass]);n.slidesEl.append(e)}};l?i.loopAddBlankSlides?(c(o-n.slides.length%o),n.recalcSlides(),n.updateSlides()):fc("Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)"):u&&(i.loopAddBlankSlides?(c(i.grid.rows-n.slides.length%i.grid.rows),n.recalcSlides(),n.updateSlides()):fc("Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)")),fu(a,`.${i.slideClass}, swiper-slide`).forEach((e,t)=>{e.setAttribute("data-swiper-slide-index",t)});let d=i.centeredSlides||!!i.slidesOffsetBefore||!!i.slidesOffsetAfter;n.loopFix({slideRealIndex:e,direction:d?void 0:"next",initial:t})},loopFix:function({slideRealIndex:e,slideTo:t=!0,direction:r,setTranslate:n,activeSlideIndex:i,initial:a,byController:s,byMousewheel:o}={}){let l=this;if(!l.params.loop)return;l.emit("beforeLoopFix");let{slides:u,allowSlidePrev:c,allowSlideNext:d,slidesEl:h,params:p}=l,{centeredSlides:f,slidesOffsetBefore:A,slidesOffsetAfter:g,initialSlide:m}=p,v=f||!!A||!!g;if(l.allowSlidePrev=!0,l.allowSlideNext=!0,l.virtual&&p.virtual.enabled){t&&(v||0!==l.snapIndex?v&&l.snapIndex<p.slidesPerView?l.slideTo(l.virtual.slides.length+l.snapIndex,0,!1,!0):l.snapIndex===l.snapGrid.length-1&&l.slideTo(l.virtual.slidesBefore,0,!1,!0):l.slideTo(l.virtual.slides.length,0,!1,!0)),l.allowSlidePrev=c,l.allowSlideNext=d,l.emit("loopFix");return}let b=p.slidesPerView;"auto"===b?b=l.slidesPerViewDynamic():(b=Math.ceil(parseFloat(p.slidesPerView,10)),v&&b%2==0&&(b+=1));let y=p.slidesPerGroupAuto?b:p.slidesPerGroup,w=v?Math.max(y,Math.ceil(b/2)):y;w%y!=0&&(w+=y-w%y),l.loopedSlides=w+=p.loopAdditionalSlides;let x=l.grid&&p.grid&&p.grid.rows>1;u.length<b+w||"cards"===l.params.effect&&u.length<b+2*w?fc("Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters"):x&&"row"===p.grid.fill&&fc("Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`");let C=[],E=[],S=x?Math.ceil(u.length/p.grid.rows):u.length,M=a&&S-m<b&&!v,I=M?m:l.activeIndex;void 0===i?i=l.getSlideIndex(u.find(e=>e.classList.contains(p.slideActiveClass))):I=i;let B="next"===r||!r,T="prev"===r||!r,k=0,_=0,R=(x?u[i].column:i)+(v&&void 0===n?-b/2+.5:0);if(R<w){k=Math.max(w-R,y);for(let e=0;e<w-R;e+=1){let t=e-Math.floor(e/S)*S;if(x){let e=S-t-1;for(let t=u.length-1;t>=0;t-=1)u[t].column===e&&C.push(t)}else C.push(S-t-1)}}else if(R+b>S-w){_=Math.max(R-(S-2*w),y),M&&(_=Math.max(_,b-S+m+1));for(let e=0;e<_;e+=1){let t=e-Math.floor(e/S)*S;x?u.forEach((e,r)=>{e.column===t&&E.push(r)}):E.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame(()=>{l.__preventObserver__=!1}),"cards"===l.params.effect&&u.length<b+2*w&&(E.includes(i)&&E.splice(E.indexOf(i),1),C.includes(i)&&C.splice(C.indexOf(i),1)),T&&C.forEach(e=>{u[e].swiperLoopMoveDOM=!0,h.prepend(u[e]),u[e].swiperLoopMoveDOM=!1}),B&&E.forEach(e=>{u[e].swiperLoopMoveDOM=!0,h.append(u[e]),u[e].swiperLoopMoveDOM=!1}),l.recalcSlides(),"auto"===p.slidesPerView?l.updateSlides():x&&(C.length>0&&T||E.length>0&&B)&&l.slides.forEach((e,t)=>{l.grid.updateSlide(t,e,l.slides)}),p.watchSlidesProgress&&l.updateSlidesOffset(),t){if(C.length>0&&T){if(void 0===e){let e=l.slidesGrid[I],t=l.slidesGrid[I+k]-e;o?l.setTranslate(l.translate-t):(l.slideTo(I+Math.ceil(k),0,!1,!0),n&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(n){let e=x?C.length/p.grid.rows:C.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(E.length>0&&B)if(void 0===e){let e=l.slidesGrid[I],t=l.slidesGrid[I-_]-e;o?l.setTranslate(l.translate-t):(l.slideTo(I-_,0,!1,!0),n&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{let e=x?E.length/p.grid.rows:E.length;l.slideTo(l.activeIndex-e,0,!1,!0)}}if(l.allowSlidePrev=c,l.allowSlideNext=d,l.controller&&l.controller.control&&!s){let a={slideRealIndex:e,direction:r,setTranslate:n,activeSlideIndex:i,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach(e=>{!e.destroyed&&e.params.loop&&e.loopFix({...a,slideTo:e.params.slidesPerView===p.slidesPerView&&t})}):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...a,slideTo:l.controller.control.params.slidesPerView===p.slidesPerView&&t})}l.emit("loopFix")},loopDestroy:function(){let{params:e,slidesEl:t}=this;if(!e.loop||!t||this.virtual&&this.params.virtual.enabled)return;this.recalcSlides();let r=[];this.slides.forEach(e=>{r[void 0===e.swiperSlideIndex?+e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex]=e}),this.slides.forEach(e=>{e.removeAttribute("data-swiper-slide-index")}),r.forEach(e=>{t.append(e)}),this.recalcSlides(),this.slideTo(this.realIndex,0)}},grabCursor:{setGrabCursor:function(e){let t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;let r="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),r.style.cursor="move",r.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame(()=>{t.__preventObserver__=!1})},unsetGrabCursor:function(){let e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1}))}},events:{attachEvents:function(){let{params:e}=this;this.onTouchStart=fM.bind(this),this.onTouchMove=fI.bind(this),this.onTouchEnd=fB.bind(this),this.onDocumentTouchStart=fP.bind(this),e.cssMode&&(this.onScroll=f_.bind(this)),this.onClick=fk.bind(this),this.onLoad=fR.bind(this),fD(this,"on")},detachEvents:function(){fD(this,"off")}},breakpoints:{setBreakpoint:function(){let e=this,{realIndex:t,initialized:r,params:n,el:i}=e,a=n.breakpoints;if(!a||a&&0===Object.keys(a).length)return;let s=fe(),o="window"!==n.breakpointsBase&&n.breakpointsBase?"container":n.breakpointsBase,l=["window","container"].includes(n.breakpointsBase)||!n.breakpointsBase?e.el:s.querySelector(n.breakpointsBase),u=e.getBreakpoint(a,o,l);if(!u||e.currentBreakpoint===u)return;let c=(u in a?a[u]:void 0)||e.originalParams,d=fL(e,n),h=fL(e,c),p=e.params.grabCursor,f=c.grabCursor,A=n.enabled;d&&!h?(i.classList.remove(`${n.containerModifierClass}grid`,`${n.containerModifierClass}grid-column`),e.emitContainerClasses()):!d&&h&&(i.classList.add(`${n.containerModifierClass}grid`),(c.grid.fill&&"column"===c.grid.fill||!c.grid.fill&&"column"===n.grid.fill)&&i.classList.add(`${n.containerModifierClass}grid-column`),e.emitContainerClasses()),p&&!f?e.unsetGrabCursor():!p&&f&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach(t=>{if(void 0===c[t])return;let r=n[t]&&n[t].enabled,i=c[t]&&c[t].enabled;r&&!i&&e[t].disable(),!r&&i&&e[t].enable()});let g=c.direction&&c.direction!==n.direction,m=n.loop&&(c.slidesPerView!==n.slidesPerView||g),v=n.loop;g&&r&&e.changeDirection(),fs(e.params,c);let b=e.params.enabled,y=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),A&&!b?e.disable():!A&&b&&e.enable(),e.currentBreakpoint=u,e.emit("_beforeBreakpoint",c),r&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!v&&y?(e.loopCreate(t),e.updateSlides()):v&&!y&&e.loopDestroy()),e.emit("breakpoint",c)},getBreakpoint:function(e,t="window",r){if(!e||"container"===t&&!r)return;let n=!1,i=fr(),a="window"===t?i.innerHeight:r.clientHeight,s=Object.keys(e).map(e=>"string"==typeof e&&0===e.indexOf("@")?{value:a*parseFloat(e.substr(1)),point:e}:{value:e,point:e});s.sort((e,t)=>parseInt(e.value,10)-parseInt(t.value,10));for(let e=0;e<s.length;e+=1){let{point:a,value:o}=s[e];"window"===t?i.matchMedia(`(min-width: ${o}px)`).matches&&(n=a):o<=r.clientWidth&&(n=a)}return n||"max"}},checkOverflow:{checkOverflow:function(){let{isLocked:e,params:t}=this,{slidesOffsetBefore:r}=t;if(r){let e=this.slides.length-1,t=this.slidesGrid[e]+this.slidesSizesGrid[e]+2*r;this.isLocked=this.size>t}else this.isLocked=1===this.snapGrid.length;!0===t.allowSlideNext&&(this.allowSlideNext=!this.isLocked),!0===t.allowSlidePrev&&(this.allowSlidePrev=!this.isLocked),e&&e!==this.isLocked&&(this.isEnd=!1),e!==this.isLocked&&this.emit(this.isLocked?"lock":"unlock")}},classes:{addClasses:function(){var e,t;let r,{classNames:n,params:i,rtl:a,el:s,device:o}=this,l=(e=["initialized",i.direction,{"free-mode":this.params.freeMode&&i.freeMode.enabled},{autoheight:i.autoHeight},{rtl:a},{grid:i.grid&&i.grid.rows>1},{"grid-column":i.grid&&i.grid.rows>1&&"column"===i.grid.fill},{android:o.android},{ios:o.ios},{"css-mode":i.cssMode},{centered:i.cssMode&&i.centeredSlides},{"watch-progress":i.watchSlidesProgress}],t=i.containerModifierClass,r=[],e.forEach(e=>{"object"==typeof e?Object.keys(e).forEach(n=>{e[n]&&r.push(t+n)}):"string"==typeof e&&r.push(t+e)}),r);n.push(...l),s.classList.add(...n),this.emitContainerClasses()},removeClasses:function(){let{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},fN={};class fQ{constructor(...e){let t,r;1===e.length&&e[0].constructor&&"Object"===Object.prototype.toString.call(e[0]).slice(8,-1)?r=e[0]:[t,r]=e,r||(r={}),r=fs({},r),t&&!r.el&&(r.el=t);const n=fe();if(r.el&&"string"==typeof r.el&&n.querySelectorAll(r.el).length>1){const e=[];return n.querySelectorAll(r.el).forEach(t=>{let n=fs({},r,{el:t});e.push(new fQ(n))}),e}const i=this;i.__swiper__=!0,i.support=fg(),i.device=fm({userAgent:r.userAgent}),i.browser=fv(),i.eventsListeners={},i.eventsAnyListeners=[],i.modules=[...i.__modules__],r.modules&&Array.isArray(r.modules)&&r.modules.forEach(e=>{"function"==typeof e&&0>i.modules.indexOf(e)&&i.modules.push(e)});const a={};i.modules.forEach(e=>{var t;e({params:r,swiper:i,extendParams:(t=r,function(e={}){let r=Object.keys(e)[0],n=e[r];"object"!=typeof n||null===n||(!0===t[r]&&(t[r]={enabled:!0}),"navigation"===r&&t[r]&&t[r].enabled&&!t[r].prevEl&&!t[r].nextEl&&(t[r].auto=!0),["pagination","scrollbar"].indexOf(r)>=0&&t[r]&&t[r].enabled&&!t[r].el&&(t[r].auto=!0),r in t&&"enabled"in n&&("object"!=typeof t[r]||"enabled"in t[r]||(t[r].enabled=!0),t[r]||(t[r]={enabled:!1}))),fs(a,e)}),on:i.on.bind(i),once:i.once.bind(i),off:i.off.bind(i),emit:i.emit.bind(i)})});const s=fs({},fF,a);return i.params=fs({},s,fN,r),i.originalParams=fs({},i.params),i.passedParams=fs({},r),i.params&&i.params.on&&Object.keys(i.params.on).forEach(e=>{i.on(e,i.params.on[e])}),i.params&&i.params.onAny&&i.onAny(i.params.onAny),Object.assign(i,{enabled:i.params.enabled,el:t,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===i.params.direction,isVertical:()=>"vertical"===i.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return 8388608*Math.trunc(this.translate/8388608)},allowSlideNext:i.params.allowSlideNext,allowSlidePrev:i.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:i.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:i.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),i.emit("_swiper"),i.params.init&&i.init(),i}getDirectionLabel(e){return this.isHorizontal()?e:({width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"})[e]}getSlideIndex(e){let{slidesEl:t,params:r}=this,n=fp(fu(t,`.${r.slideClass}, swiper-slide`)[0]);return fp(e)-n}getSlideIndexByData(e){return this.getSlideIndex(this.slides.find(t=>+t.getAttribute("data-swiper-slide-index")===e))}getSlideIndexWhenGrid(e){return this.grid&&this.params.grid&&this.params.grid.rows>1&&("column"===this.params.grid.fill?e=Math.floor(e/this.params.grid.rows):"row"===this.params.grid.fill&&(e%=Math.ceil(this.slides.length/this.params.grid.rows))),e}recalcSlides(){let{slidesEl:e,params:t}=this;this.slides=fu(e,`.${t.slideClass}, swiper-slide`)}enable(){this.enabled||(this.enabled=!0,this.params.grabCursor&&this.setGrabCursor(),this.emit("enable"))}disable(){this.enabled&&(this.enabled=!1,this.params.grabCursor&&this.unsetGrabCursor(),this.emit("disable"))}setProgress(e,t){e=Math.min(Math.max(e,0),1);let r=this.minTranslate(),n=(this.maxTranslate()-r)*e+r;this.translateTo(n,void 0===t?0:t),this.updateActiveIndex(),this.updateSlidesClasses()}emitContainerClasses(){let e=this;if(!e.params._emitClasses||!e.el)return;let t=e.el.className.split(" ").filter(t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){let t=this;return t.destroyed?"":e.className.split(" ").filter(e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass)).join(" ")}emitSlidesClasses(){let e=this;if(!e.params._emitClasses||!e.el)return;let t=[];e.slides.forEach(r=>{let n=e.getSlideClasses(r);t.push({slideEl:r,classNames:n}),e.emit("_slideClass",r,n)}),e.emit("_slideClasses",t)}slidesPerViewDynamic(e="current",t=!1){let{params:r,slides:n,slidesGrid:i,slidesSizesGrid:a,size:s,activeIndex:o}=this,l=1;if("number"==typeof r.slidesPerView)return r.slidesPerView;if(r.centeredSlides){let e,t=n[o]?Math.ceil(n[o].swiperSlideSize):0;for(let r=o+1;r<n.length;r+=1)n[r]&&!e&&(t+=Math.ceil(n[r].swiperSlideSize),l+=1,t>s&&(e=!0));for(let r=o-1;r>=0;r-=1)n[r]&&!e&&(t+=n[r].swiperSlideSize,l+=1,t>s&&(e=!0))}else if("current"===e)for(let e=o+1;e<n.length;e+=1)(t?i[e]+a[e]-i[o]<s:i[e]-i[o]<s)&&(l+=1);else for(let e=o-1;e>=0;e-=1)i[o]-i[e]<s&&(l+=1);return l}update(){let e,t=this;if(!t||t.destroyed)return;let{snapGrid:r,params:n}=t;function i(){let e=Math.min(Math.max(t.rtlTranslate?-1*t.translate:t.translate,t.maxTranslate()),t.minTranslate());t.setTranslate(e),t.updateActiveIndex(),t.updateSlidesClasses()}if(n.breakpoints&&t.setBreakpoint(),[...t.el.querySelectorAll('[loading="lazy"]')].forEach(e=>{e.complete&&fw(t,e)}),t.updateSize(),t.updateSlides(),t.updateProgress(),t.updateSlidesClasses(),n.freeMode&&n.freeMode.enabled&&!n.cssMode)i(),n.autoHeight&&t.updateAutoHeight();else{if(("auto"===n.slidesPerView||n.slidesPerView>1)&&t.isEnd&&!n.centeredSlides){let r=t.virtual&&n.virtual.enabled?t.virtual.slides:t.slides;e=t.slideTo(r.length-1,0,!1,!0)}else e=t.slideTo(t.activeIndex,0,!1,!0);e||i()}n.watchOverflow&&r!==t.snapGrid&&t.checkOverflow(),t.emit("update")}changeDirection(e,t=!0){let r=this.params.direction;return e||(e="horizontal"===r?"vertical":"horizontal"),e===r||"horizontal"!==e&&"vertical"!==e||(this.el.classList.remove(`${this.params.containerModifierClass}${r}`),this.el.classList.add(`${this.params.containerModifierClass}${e}`),this.emitContainerClasses(),this.params.direction=e,this.slides.forEach(t=>{"vertical"===e?t.style.width="":t.style.height=""}),this.emit("changeDirection"),t&&this.update()),this}changeLanguageDirection(e){(!this.rtl||"rtl"!==e)&&(this.rtl||"ltr"!==e)&&(this.rtl="rtl"===e,this.rtlTranslate="horizontal"===this.params.direction&&this.rtl,this.rtl?(this.el.classList.add(`${this.params.containerModifierClass}rtl`),this.el.dir="rtl"):(this.el.classList.remove(`${this.params.containerModifierClass}rtl`),this.el.dir="ltr"),this.update())}mount(e){let t=this;if(t.mounted)return!0;let r=e||t.params.el;if("string"==typeof r&&(r=document.querySelector(r)),!r)return!1;r.swiper=t,r.parentNode&&r.parentNode.host&&r.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);let n=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`,i=r&&r.shadowRoot&&r.shadowRoot.querySelector?r.shadowRoot.querySelector(n()):fu(r,n())[0];return!i&&t.params.createElements&&(i=fd("div",t.params.wrapperClass),r.append(i),fu(r,`.${t.params.slideClass}`).forEach(e=>{i.append(e)})),Object.assign(t,{el:r,wrapperEl:i,slidesEl:t.isElement&&!r.parentNode.host.slideSlots?r.parentNode.host:i,hostEl:t.isElement?r.parentNode.host:r,mounted:!0,rtl:"rtl"===r.dir.toLowerCase()||"rtl"===fh(r,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===r.dir.toLowerCase()||"rtl"===fh(r,"direction")),wrongRTL:"-webkit-box"===fh(i,"display")}),!0}init(e){let t=this;if(t.initialized||!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(void 0,!0),t.attachEvents();let r=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&r.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),r.forEach(e=>{e.complete?fw(t,e):e.addEventListener("load",e=>{fw(t,e.target)})}),fC(t),t.initialized=!0,fC(t),t.emit("init"),t.emit("afterInit"),t}destroy(e=!0,t=!0){let r=this,{params:n,el:i,wrapperEl:a,slides:s}=r;if(void 0===r.params||r.destroyed)return null;(r.emit("beforeDestroy"),r.initialized=!1,r.detachEvents(),n.loop&&r.loopDestroy(),t&&(r.removeClasses(),i&&"string"!=typeof i&&i.removeAttribute("style"),a&&a.removeAttribute("style"),s&&s.length&&s.forEach(e=>{e.classList.remove(n.slideVisibleClass,n.slideFullyVisibleClass,n.slideActiveClass,n.slideNextClass,n.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")})),r.emit("destroy"),Object.keys(r.eventsListeners).forEach(e=>{r.off(e)}),!1!==e)&&(r.el&&"string"!=typeof r.el&&(r.el.swiper=null),Object.keys(r).forEach(e=>{try{r[e]=null}catch(e){}try{delete r[e]}catch(e){}}));return r.destroyed=!0,null}static extendDefaults(e){fs(fN,e)}static get extendedDefaults(){return fN}static get defaults(){return fF}static installModule(e){fQ.prototype.__modules__||(fQ.prototype.__modules__=[]);let t=fQ.prototype.__modules__;"function"==typeof e&&0>t.indexOf(e)&&t.push(e)}static use(e){return Array.isArray(e)?e.forEach(e=>fQ.installModule(e)):fQ.installModule(e),fQ}}Object.keys(fO).forEach(e=>{Object.keys(fO[e]).forEach(t=>{fQ.prototype[t]=fO[e][t]})}),fQ.use([function({swiper:e,on:t,emit:r}){let n=fr(),i=null,a=null,s=()=>{e&&!e.destroyed&&e.initialized&&(r("beforeResize"),r("resize"))},o=()=>{e&&!e.destroyed&&e.initialized&&r("orientationchange")};t("init",()=>{e.params.resizeObserver&&void 0!==n.ResizeObserver?e&&!e.destroyed&&e.initialized&&(i=new ResizeObserver(t=>{a=n.requestAnimationFrame(()=>{let{width:r,height:n}=e,i=r,a=n;t.forEach(({contentBoxSize:t,contentRect:r,target:n})=>{n&&n!==e.el||(i=r?r.width:(t[0]||t).inlineSize,a=r?r.height:(t[0]||t).blockSize)}),(i!==r||a!==n)&&s()})})).observe(e.el):(n.addEventListener("resize",s),n.addEventListener("orientationchange",o))}),t("destroy",()=>{a&&n.cancelAnimationFrame(a),i&&i.unobserve&&e.el&&(i.unobserve(e.el),i=null),n.removeEventListener("resize",s),n.removeEventListener("orientationchange",o)})},function({swiper:e,extendParams:t,on:r,emit:n}){let i=[],a=fr(),s=(t,r={})=>{let s=new(a.MutationObserver||a.WebkitMutationObserver)(t=>{if(e.__preventObserver__)return;if(1===t.length)return void n("observerUpdate",t[0]);let r=function(){n("observerUpdate",t[0])};a.requestAnimationFrame?a.requestAnimationFrame(r):a.setTimeout(r,0)});s.observe(t,{attributes:void 0===r.attributes||r.attributes,childList:e.isElement||(void 0===r.childList||r).childList,characterData:void 0===r.characterData||r.characterData}),i.push(s)};t({observer:!1,observeParents:!1,observeSlideChildren:!1}),r("init",()=>{if(e.params.observer){if(e.params.observeParents){let t=function(e,t){let r=[],n=e.parentElement;for(;n;)r.push(n),n=n.parentElement;return r}(e.hostEl);for(let e=0;e<t.length;e+=1)s(t[e])}s(e.hostEl,{childList:e.params.observeSlideChildren}),s(e.wrapperEl,{attributes:!1})}}),r("destroy",()=>{i.forEach(e=>{e.disconnect()}),i.splice(0,i.length)})}]);let fU=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_snapToSlideEdge","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function fz(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function fH(e,t){let r=["__proto__","constructor","prototype"];Object.keys(t).filter(e=>0>r.indexOf(e)).forEach(r=>{void 0===e[r]?e[r]=t[r]:fz(t[r])&&fz(e[r])&&Object.keys(t[r]).length>0?t[r].__swiper__?e[r]=t[r]:fH(e[r],t[r]):e[r]=t[r]})}function fG(e={}){return e.navigation&&void 0===e.navigation.nextEl&&void 0===e.navigation.prevEl}function fj(e={}){return e.pagination&&void 0===e.pagination.el}function fV(e={}){return e.scrollbar&&void 0===e.scrollbar.el}function fW(e=""){let t=e.split(" ").map(e=>e.trim()).filter(e=>!!e),r=[];return t.forEach(e=>{0>r.indexOf(e)&&r.push(e)}),r.join(" ")}function fq(){return(fq=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function fY(e){return e.type&&e.type.displayName&&e.type.displayName.includes("SwiperSlide")}function fJ(e,t){return"u"<typeof window?(0,rd.useEffect)(e,t):(0,rd.useLayoutEffect)(e,t)}let fK=(0,rd.createContext)(null),fX=(0,rd.createContext)(null),fZ=(0,rd.forwardRef)(({className:e,tag:t="div",wrapperTag:r="div",children:n,onSwiper:i,...a}={},s)=>{let o,l,u=!1,[c,d]=(0,rd.useState)("swiper"),[h,p]=(0,rd.useState)(null),[f,A]=(0,rd.useState)(!1),g=(0,rd.useRef)(!1),m=(0,rd.useRef)(null),v=(0,rd.useRef)(null),b=(0,rd.useRef)(null),y=(0,rd.useRef)(null),w=(0,rd.useRef)(null),x=(0,rd.useRef)(null),C=(0,rd.useRef)(null),E=(0,rd.useRef)(null),{params:S,passedParams:M,rest:I,events:B}=function(e={},t=!0){let r={on:{}},n={},i={};fH(r,fF),r._emitClasses=!0,r.init=!1;let a={},s=fU.map(e=>e.replace(/_/,""));return Object.keys(Object.assign({},e)).forEach(o=>{void 0!==e[o]&&(s.indexOf(o)>=0?fz(e[o])?(r[o]={},i[o]={},fH(r[o],e[o]),fH(i[o],e[o])):(r[o]=e[o],i[o]=e[o]):0===o.search(/on[A-Z]/)&&"function"==typeof e[o]?t?n[`${o[2].toLowerCase()}${o.substr(3)}`]=e[o]:r.on[`${o[2].toLowerCase()}${o.substr(3)}`]=e[o]:a[o]=e[o])}),["navigation","pagination","scrollbar"].forEach(e=>{!0===r[e]&&(r[e]={}),!1===r[e]&&delete r[e]}),{params:r,passedParams:i,rest:a,events:n}}(a),{slides:T,slots:k}=(o=[],l={"container-start":[],"container-end":[],"wrapper-start":[],"wrapper-end":[]},rd.Children.toArray(n).forEach(e=>{if(fY(e))o.push(e);else if(e.props&&e.props.slot&&l[e.props.slot])l[e.props.slot].push(e);else if(e.props&&e.props.children){let t=function e(t){let r=[];return rd.Children.toArray(t).forEach(t=>{fY(t)?r.push(t):t.props&&t.props.children&&e(t.props.children).forEach(e=>r.push(e))}),r}(e.props.children);t.length>0?t.forEach(e=>o.push(e)):l["container-end"].push(e)}else l["container-end"].push(e)}),{slides:o,slots:l}),_=()=>{A(!f)};Object.assign(S.on,{_containerClasses(e,t){d(t)}});let R=()=>{Object.assign(S.on,B),u=!0;let e={...S};if(delete e.wrapperClass,v.current=new fQ(e),v.current.virtual&&v.current.params.virtual.enabled){v.current.virtual.slides=T;let e={cache:!1,slides:T,renderExternal:p,renderExternalUpdate:!1};fH(v.current.params.virtual,e),fH(v.current.originalParams.virtual,e)}};return m.current||R(),v.current&&v.current.on("_beforeBreakpoint",_),(0,rd.useEffect)(()=>()=>{v.current&&v.current.off("_beforeBreakpoint",_)}),(0,rd.useEffect)(()=>{!g.current&&v.current&&(v.current.emitSlidesClasses(),g.current=!0)}),fJ(()=>{if(s&&(s.current=m.current),m.current)return v.current.destroyed&&R(),!function({el:e,nextEl:t,prevEl:r,paginationEl:n,scrollbarEl:i,swiper:a},s){fG(s)&&t&&r&&(a.params.navigation.nextEl=t,a.originalParams.navigation.nextEl=t,a.params.navigation.prevEl=r,a.originalParams.navigation.prevEl=r),fj(s)&&n&&(a.params.pagination.el=n,a.originalParams.pagination.el=n),fV(s)&&i&&(a.params.scrollbar.el=i,a.originalParams.scrollbar.el=i),a.init(e)}({el:m.current,nextEl:w.current,prevEl:x.current,paginationEl:C.current,scrollbarEl:E.current,swiper:v.current},S),i&&!v.current.destroyed&&i(v.current),()=>{v.current&&!v.current.destroyed&&v.current.destroy(!0,!1)}},[]),fJ(()=>{!u&&B&&v.current&&Object.keys(B).forEach(e=>{v.current.on(e,B[e])});let e=function(e,t,r,n,i){let a=[];if(!t)return a;let s=e=>{0>a.indexOf(e)&&a.push(e)};if(r&&n){let e=n.map(i),t=r.map(i);e.join("")!==t.join("")&&s("children"),n.length!==r.length&&s("children")}return fU.filter(e=>"_"===e[0]).map(e=>e.replace(/_/,"")).forEach(r=>{if(r in e&&r in t)if(fz(e[r])&&fz(t[r])){let n=Object.keys(e[r]),i=Object.keys(t[r]);n.length!==i.length?s(r):(n.forEach(n=>{e[r][n]!==t[r][n]&&s(r)}),i.forEach(n=>{e[r][n]!==t[r][n]&&s(r)}))}else e[r]!==t[r]&&s(r)}),a}(M,b.current,T,y.current,e=>e.key);return b.current=M,y.current=T,e.length&&v.current&&!v.current.destroyed&&function({swiper:e,slides:t,passedParams:r,changedParams:n,nextEl:i,prevEl:a,scrollbarEl:s,paginationEl:o}){let l,u,c,d,h,p,f,A,g=n.filter(e=>"children"!==e&&"direction"!==e&&"wrapperClass"!==e),{params:m,pagination:v,navigation:b,scrollbar:y,virtual:w,thumbs:x}=e;n.includes("thumbs")&&r.thumbs&&r.thumbs.swiper&&!r.thumbs.swiper.destroyed&&m.thumbs&&(!m.thumbs.swiper||m.thumbs.swiper.destroyed)&&(l=!0),n.includes("controller")&&r.controller&&r.controller.control&&m.controller&&!m.controller.control&&(u=!0),n.includes("pagination")&&r.pagination&&(r.pagination.el||o)&&(m.pagination||!1===m.pagination)&&v&&!v.el&&(c=!0),n.includes("scrollbar")&&r.scrollbar&&(r.scrollbar.el||s)&&(m.scrollbar||!1===m.scrollbar)&&y&&!y.el&&(d=!0),n.includes("navigation")&&r.navigation&&(r.navigation.prevEl||a)&&(r.navigation.nextEl||i)&&(m.navigation||!1===m.navigation)&&b&&!b.prevEl&&!b.nextEl&&(h=!0);let C=t=>{e[t]&&(e[t].destroy(),"navigation"===t?(e.isElement&&(e[t].prevEl.remove(),e[t].nextEl.remove()),m[t].prevEl=void 0,m[t].nextEl=void 0,e[t].prevEl=void 0,e[t].nextEl=void 0):(e.isElement&&e[t].el.remove(),m[t].el=void 0,e[t].el=void 0))};n.includes("loop")&&e.isElement&&(m.loop&&!r.loop?p=!0:!m.loop&&r.loop?f=!0:A=!0),g.forEach(e=>{if(fz(m[e])&&fz(r[e]))Object.assign(m[e],r[e]),("navigation"===e||"pagination"===e||"scrollbar"===e)&&"enabled"in r[e]&&!r[e].enabled&&C(e);else{let t=r[e];(!0===t||!1===t)&&("navigation"===e||"pagination"===e||"scrollbar"===e)?!1===t&&C(e):m[e]=r[e]}}),g.includes("controller")&&!u&&e.controller&&e.controller.control&&m.controller&&m.controller.control&&(e.controller.control=m.controller.control),n.includes("children")&&t&&w&&m.virtual.enabled?(w.slides=t,w.update(!0)):n.includes("virtual")&&w&&m.virtual.enabled&&(t&&(w.slides=t),w.update(!0)),n.includes("children")&&t&&m.loop&&(A=!0),l&&x.init()&&x.update(!0),u&&(e.controller.control=m.controller.control),c&&(e.isElement&&(!o||"string"==typeof o)&&((o=document.createElement("div")).classList.add("swiper-pagination"),o.part.add("pagination"),e.el.appendChild(o)),o&&(m.pagination.el=o),v.init(),v.render(),v.update()),d&&(e.isElement&&(!s||"string"==typeof s)&&((s=document.createElement("div")).classList.add("swiper-scrollbar"),s.part.add("scrollbar"),e.el.appendChild(s)),s&&(m.scrollbar.el=s),y.init(),y.updateSize(),y.setTranslate()),h&&(e.isElement&&(i&&"string"!=typeof i||((i=document.createElement("div")).classList.add("swiper-button-next"),fA(i,e.navigation.arrowSvg),i.part.add("button-next"),e.el.appendChild(i)),a&&"string"!=typeof a||((a=document.createElement("div")).classList.add("swiper-button-prev"),fA(a,e.navigation.arrowSvg),a.part.add("button-prev"),e.el.appendChild(a))),i&&(m.navigation.nextEl=i),a&&(m.navigation.prevEl=a),b.init(),b.update()),n.includes("allowSlideNext")&&(e.allowSlideNext=r.allowSlideNext),n.includes("allowSlidePrev")&&(e.allowSlidePrev=r.allowSlidePrev),n.includes("direction")&&e.changeDirection(r.direction,!1),(p||A)&&e.loopDestroy(),(f||A)&&e.loopCreate(),e.update()}({swiper:v.current,slides:T,passedParams:M,changedParams:e,nextEl:w.current,prevEl:x.current,scrollbarEl:E.current,paginationEl:C.current}),()=>{B&&v.current&&Object.keys(B).forEach(e=>{v.current.off(e,B[e])})}}),fJ(()=>{var e;(e=v.current)&&!e.destroyed&&e.params.virtual&&(!e.params.virtual||e.params.virtual.enabled)&&(e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.emit("_virtualUpdated"),e.parallax&&e.params.parallax&&e.params.parallax.enabled&&e.parallax.setTranslate())},[h]),rd.createElement(t,fq({ref:m,className:fW(`${c}${e?` ${e}`:""}`)},I),rd.createElement(fX.Provider,{value:v.current},k["container-start"],rd.createElement(r,{className:function(e=""){return e?e.includes("swiper-wrapper")?e:`swiper-wrapper ${e}`:"swiper-wrapper"}(S.wrapperClass)},k["wrapper-start"],S.virtual?function(e,t,r){if(!r)return null;let n=e=>{let r=e;return e<0?r=t.length+e:r>=t.length&&(r-=t.length),r},i=e.isHorizontal()?{[e.rtlTranslate?"right":"left"]:`${r.offset}px`}:{top:`${r.offset}px`},{from:a,to:s}=r,o=e.params.loop?-t.length:0,l=e.params.loop?2*t.length:t.length,u=[];for(let e=o;e<l;e+=1)e>=a&&e<=s&&u.push(t[n(e)]);return u.map((t,r)=>rd.cloneElement(t,{swiper:e,style:i,key:t.props.virtualIndex||t.key||`slide-${r}`}))}(v.current,T,h):T.map((e,t)=>rd.cloneElement(e,{swiper:v.current,swiperSlideIndex:t})),k["wrapper-end"]),fG(S)&&rd.createElement(rd.Fragment,null,rd.createElement("div",{ref:x,className:"swiper-button-prev"}),rd.createElement("div",{ref:w,className:"swiper-button-next"})),fV(S)&&rd.createElement("div",{ref:E,className:"swiper-scrollbar"}),fj(S)&&rd.createElement("div",{ref:C,className:"swiper-pagination"}),k["container-end"]))});fZ.displayName="Swiper";let f$=(0,rd.forwardRef)(({tag:e="div",children:t,className:r="",swiper:n,zoom:i,lazy:a,virtualIndex:s,swiperSlideIndex:o,...l}={},u)=>{let c=(0,rd.useRef)(null),[d,h]=(0,rd.useState)("swiper-slide"),[p,f]=(0,rd.useState)(!1);function A(e,t,r){t===c.current&&h(r)}fJ(()=>{if(void 0!==o&&(c.current.swiperSlideIndex=o),u&&(u.current=c.current),c.current&&n){if(n.destroyed){"swiper-slide"!==d&&h("swiper-slide");return}return n.on("_slideClass",A),()=>{n&&n.off("_slideClass",A)}}}),fJ(()=>{n&&c.current&&!n.destroyed&&h(n.getSlideClasses(c.current))},[n]);let g={isActive:d.indexOf("swiper-slide-active")>=0,isVisible:d.indexOf("swiper-slide-visible")>=0,isPrev:d.indexOf("swiper-slide-prev")>=0,isNext:d.indexOf("swiper-slide-next")>=0},m=()=>"function"==typeof t?t(g):t;return rd.createElement(e,fq({ref:c,className:fW(`${d}${r?` ${r}`:""}`),"data-swiper-slide-index":s,onLoad:()=>{f(!0)}},l),i&&rd.createElement(fK.Provider,{value:g},rd.createElement("div",{className:"swiper-zoom-container","data-swiper-zoom":"number"==typeof i?i:void 0},m(),a&&!p&&rd.createElement("div",{className:"swiper-lazy-preloader",ref:e=>{e&&(e.lazyPreloaderManaged=!0)}}))),!i&&rd.createElement(fK.Provider,{value:g},m(),a&&!p&&rd.createElement("div",{className:"swiper-lazy-preloader",ref:e=>{e&&(e.lazyPreloaderManaged=!0)}})))});f$.displayName="SwiperSlide";var f0="Tabs",[f1,f2]=lc(f0,[pk]),f3=pk(),[f4,f5]=f1(f0),f9=rd.forwardRef((e,t)=>{let{__scopeTabs:r,value:n,onValueChange:i,defaultValue:a,orientation:s="horizontal",dir:o,activationMode:l="automatic",...u}=e,c=cd(o),[d,h]=lg({prop:n,onChange:i,defaultProp:a??"",caller:f0});return(0,rp.jsx)(f4,{scope:r,baseId:lf(),value:d,onValueChange:h,orientation:s,dir:c,activationMode:l,children:(0,rp.jsx)(ly.div,{dir:c,"data-orientation":s,...u,ref:t})})});f9.displayName=f0;var f8="TabsList",f6=rd.forwardRef((e,t)=>{let{__scopeTabs:r,loop:n=!0,...i}=e,a=f5(f8,r),s=f3(r);return(0,rp.jsx)(pP,{asChild:!0,...s,orientation:a.orientation,dir:a.dir,loop:n,children:(0,rp.jsx)(ly.div,{role:"tablist","aria-orientation":a.orientation,...i,ref:t})})});f6.displayName=f8;var f7="TabsTrigger",Ae=rd.forwardRef((e,t)=>{let{__scopeTabs:r,value:n,disabled:i=!1,...a}=e,s=f5(f7,r),o=f3(r),l=An(s.baseId,n),u=Ai(s.baseId,n),c=n===s.value;return(0,rp.jsx)(pF,{asChild:!0,...o,focusable:!i,active:c,children:(0,rp.jsx)(ly.button,{type:"button",role:"tab","aria-selected":c,"aria-controls":u,"data-state":c?"active":"inactive","data-disabled":i?"":void 0,disabled:i,id:l,...a,ref:t,onMouseDown:lu(e.onMouseDown,e=>{i||0!==e.button||!1!==e.ctrlKey?e.preventDefault():s.onValueChange(n)}),onKeyDown:lu(e.onKeyDown,e=>{[" ","Enter"].includes(e.key)&&s.onValueChange(n)}),onFocus:lu(e.onFocus,()=>{let e="manual"!==s.activationMode;c||i||!e||s.onValueChange(n)})})})});Ae.displayName=f7;var At="TabsContent",Ar=rd.forwardRef((e,t)=>{let{__scopeTabs:r,value:n,forceMount:i,children:a,...s}=e,o=f5(At,r),l=An(o.baseId,n),u=Ai(o.baseId,n),c=n===o.value,d=rd.useRef(c);return rd.useEffect(()=>{let e=requestAnimationFrame(()=>d.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,rp.jsx)(lO,{present:i||c,children:({present:r})=>(0,rp.jsx)(ly.div,{"data-state":c?"active":"inactive","data-orientation":o.orientation,role:"tabpanel","aria-labelledby":l,hidden:!r,id:u,tabIndex:0,...s,ref:t,style:{...e.style,animationDuration:d.current?"0s":void 0},children:r&&a})})});function An(e,t){return`${e}-trigger-${t}`}function Ai(e,t){return`${e}-content-${t}`}Ar.displayName=At;var Aa=function(e,t){return Number(e.toFixed(t))},As=function(e,t,r){r&&"function"==typeof r&&r(e,t)},Ao={easeOut:function(e){return-Math.cos(e*Math.PI)/2+.5},linear:function(e){return e},easeInQuad:function(e){return e*e},easeOutQuad:function(e){return e*(2-e)},easeInOutQuad:function(e){return e<.5?2*e*e:-1+(4-2*e)*e},easeInCubic:function(e){return e*e*e},easeOutCubic:function(e){return--e*e*e+1},easeInOutCubic:function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},easeInQuart:function(e){return e*e*e*e},easeOutQuart:function(e){return 1- --e*e*e*e},easeInOutQuart:function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},easeInQuint:function(e){return e*e*e*e*e},easeOutQuint:function(e){return 1+--e*e*e*e*e},easeInOutQuint:function(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e}},Al=function(e){"number"==typeof e&&cancelAnimationFrame(e)},Au=function(e){e.mounted&&(Al(e.animation),e.animate=!1,e.animation=null,e.velocity=null)};function Ac(e,t,r,n){if(e.mounted){var i=new Date().getTime();Au(e),e.animation=function(){if(!e.mounted)return Al(e.animation);var a=new Date().getTime()-i,s=(0,Ao[t])(a/r);a>=r?(n(1),e.animation=null):e.animation&&(n(s),requestAnimationFrame(e.animation))},requestAnimationFrame(e.animation)}}function Ad(e,t,r,n){var i,a,s,o=(i=t.scale,a=t.positionX,s=t.positionY,!(Number.isNaN(i)||Number.isNaN(a)||Number.isNaN(s)));if(e.mounted&&o){var l=e.setTransformState,u=e.transformState,c=u.scale,d=u.positionX,h=u.positionY,p=t.scale-c,f=t.positionX-d,A=t.positionY-h;0===r?l(t.scale,t.positionX,t.positionY):Ac(e,n,r,function(e){l(c+p*e,d+f*e,h+A*e)})}}var Ah=function(e,t,r,n,i,a,s){var o=e>t?r*(s?1:.5):0,l=n>i?a*(s?1:.5):0;return{minPositionX:e-t-o,maxPositionX:o,minPositionY:n-i-l,maxPositionY:l}},Ap=function(e,t){var r,n,i,a,s,o,l=e.wrapperComponent,u=e.contentComponent,c=e.setup.centerZoomedOut;if(!l||!u)throw Error("Components are not mounted");var d=(r=l.offsetWidth,n=l.offsetHeight,i=u.offsetWidth,a=u.offsetHeight,{wrapperWidth:r,wrapperHeight:n,newContentWidth:s=i*t,newDiffWidth:r-s,newContentHeight:o=a*t,newDiffHeight:n-o}),h=d.wrapperWidth,p=d.wrapperHeight;return Ah(h,d.newContentWidth,d.newDiffWidth,p,d.newContentHeight,d.newDiffHeight,!!c)},Af=function(e,t,r,n){return n?e<t?Aa(t,2):e>r?Aa(r,2):Aa(e,2):Aa(e,2)},AA=function(e,t){var r=Ap(e,t);return e.bounds=r,r};function Ag(e,t,r,n,i,a,s){var o=r.minPositionX,l=r.minPositionY,u=r.maxPositionX,c=r.maxPositionY,d=0,h=0;return s&&(d=i,h=a),{x:Af(e,o-d,u+d,n),y:Af(t,l-h,c+h,n)}}function Am(e,t,r,n,i,a){var s=e.transformState,o=s.scale,l=s.positionX,u=s.positionY,c=n-o;return"number"!=typeof t||"number"!=typeof r?(console.error("Mouse X and Y position were not provided!"),{x:l,y:u}):Ag(l-t*c,u-r*c,i,a,0,0,null)}function Av(e,t,r,n,i){var a=t-(i?n:0);return!Number.isNaN(r)&&e>=r?r:!Number.isNaN(t)&&e<=a?a:e}var Ab=function(e,t){var r=e.setup.panning.excluded,n=e.isInitialized,i=e.wrapperComponent,a=t.target,s="shadowRoot"in a&&"composedPath"in t?t.composedPath().some(function(e){return e instanceof Element&&(null==i?void 0:i.contains(e))}):null==i?void 0:i.contains(a);return!(!(n&&a&&s)||Aq(a,r))},Ay=function(e){var t=e.isInitialized,r=e.isPanning,n=e.setup.panning.disabled;return!!(t&&r&&!n)},Aw=function(e,t){var r=e.transformState,n=r.positionX,i=r.positionY;e.isPanning=!0,e.startCoords={x:t.clientX-n,y:t.clientY-i}},Ax=function(e,t){var r=t.touches,n=e.transformState,i=n.positionX,a=n.positionY;e.isPanning=!0,1===r.length&&(e.startCoords={x:r[0].clientX-i,y:r[0].clientY-a})};function AC(e,t,r,n,i){var a=e.setup.limitToBounds,s=e.wrapperComponent,o=e.bounds,l=e.transformState,u=l.scale,c=l.positionX,d=l.positionY;if(null!==s&&null!==o&&(t!==c||r!==d)){var h=Ag(t,r,o,a,n,i,s),p=h.x,f=h.y;e.setTransformState(u,p,f)}}var AE=function(e,t,r){var n=e.startCoords,i=e.transformState,a=e.setup.panning,s=a.lockAxisX,o=a.lockAxisY,l=i.positionX,u=i.positionY;if(!n)return{x:l,y:u};var c=t-n.x,d=r-n.y;return{x:s?l:c,y:o?u:d}},AS=function(e,t){var r=e.setup,n=e.transformState.scale,i=r.minScale,a=r.disablePadding;return t>0&&n>=i&&!a?t:0},AM=function(e){var t=e.mounted,r=e.setup,n=r.disabled,i=r.velocityAnimation,a=e.transformState.scale;return!!(!i.disabled||a>1||!n||t)},AI=function(e){var t=e.mounted,r=e.velocity,n=e.bounds,i=e.setup,a=i.disabled,s=i.velocityAnimation,o=e.transformState.scale;return!!(!s.disabled||o>1||!a||t)&&!!r&&!!n};function AB(e,t,r,n,i,a,s,o,l,u){if(i){if(t>s&&r>s){var c=s+(e-s)*u;return c>l?l:c<s?s:c}if(t<a&&r<a){var c=a+(e-a)*u;return c<o?o:c>a?a:c}}return n?t:Af(e,a,s,i)}function AT(e,t){var r=e.transformState.scale;Au(e),AA(e,r),void 0!==window.TouchEvent&&t instanceof TouchEvent?Ax(e,t):Aw(e,t)}function Ak(e,t){var r=e.transformState.scale,n=e.setup,i=n.minScale,a=n.alignmentAnimation,s=a.disabled,o=a.sizeX,l=a.sizeY,u=a.animationTime,c=a.animationType;if(!(s||r<i||!o&&!l)){var d=function(e){var t=e.transformState,r=t.positionX,n=t.positionY,i=t.scale,a=e.setup,s=a.disabled,o=a.limitToBounds,l=a.centerZoomedOut,u=e.wrapperComponent;if(!s&&u&&e.bounds){var c=e.bounds,d=c.maxPositionX,h=c.minPositionX,p=c.maxPositionY,f=c.minPositionY,A=r>d?u.offsetWidth:e.setup.minPositionX||0,g=n>p?u.offsetHeight:e.setup.minPositionY||0,m=Am(e,A,g,i,e.bounds,o||l),v=m.x,b=m.y;return{scale:i,positionX:r>d||r<h?v:r,positionY:n>p||n<f?b:n}}}(e);d&&Ad(e,d,null!=t?t:u,c)}}function A_(e,t,r){var n=e.startCoords,i=e.setup.alignmentAnimation,a=i.sizeX,s=i.sizeY;if(n){var o=AE(e,t,r),l=o.x,u=o.y,c=AS(e,a),d=AS(e,s);!function(e,t){if(AM(e)){var r=e.lastMousePosition,n=e.velocityTime,i=e.setup,a=e.wrapperComponent,s=i.velocityAnimation.equalToMove,o=Date.now();if(r&&n&&a){var l=s?Math.min(1,a.offsetWidth/window.innerWidth):1,u=t.x-r.x,c=t.y-r.y,d=Math.sqrt(u*u+c*c)/(o-n);e.velocity={velocityX:u/l,velocityY:c/l,total:d}}e.lastMousePosition=t,e.velocityTime=o}}(e,{x:l,y:u}),AC(e,l,u,c,d)}}function AR(e,t,r,n){var i=e.setup,a=i.minScale,s=i.maxScale,o=i.limitToBounds,l=Av(Aa(t,2),a,s,0,!1),u=AA(e,l),c=Am(e,r,n,l,u,o);return{scale:l,positionX:c.x,positionY:c.y}}function AP(e,t,r){var n=e.transformState.scale,i=e.wrapperComponent,a=e.setup,s=a.minScale,o=a.limitToBounds,l=a.zoomAnimation,u=l.disabled,c=l.animationTime,d=l.animationType,h=u||n>=s;if((n>=1||o)&&Ak(e),!h&&i&&e.mounted){var p=AR(e,s,t||i.offsetWidth/2,r||i.offsetHeight/2);p&&Ad(e,p,c,d)}}var AD=function(){return(AD=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function AL(e,t,r){if(r||2==arguments.length)for(var n,i=0,a=t.length;i<a;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))}"function"==typeof SuppressedError&&SuppressedError;var AF={disabled:!1,minPositionX:null,maxPositionX:null,minPositionY:null,maxPositionY:null,minScale:1,maxScale:8,limitToBounds:!0,centerZoomedOut:!1,centerOnInit:!1,disablePadding:!1,smooth:!0,wheel:{step:.2,disabled:!1,smoothStep:.001,wheelDisabled:!1,touchPadDisabled:!1,activationKeys:[],excluded:[]},panning:{disabled:!1,velocityDisabled:!1,lockAxisX:!1,lockAxisY:!1,allowLeftClickPan:!0,allowMiddleClickPan:!0,allowRightClickPan:!0,wheelPanning:!1,activationKeys:[],excluded:[]},pinch:{step:5,disabled:!1,excluded:[]},doubleClick:{disabled:!1,step:.7,mode:"zoomIn",animationType:"easeOut",animationTime:200,excluded:[]},zoomAnimation:{disabled:!1,size:.4,animationTime:200,animationType:"easeOut"},alignmentAnimation:{disabled:!1,sizeX:100,sizeY:100,animationTime:200,velocityAlignmentTime:400,animationType:"easeOut"},velocityAnimation:{disabled:!1,sensitivity:1,animationTime:400,animationType:"easeOut",equalToMove:!0}},AO="react-transform-wrapper",AN=function(e){var t,r,n,i;return{previousScale:null!=(t=e.initialScale)?t:1,scale:null!=(r=e.initialScale)?r:1,positionX:null!=(n=e.initialPositionX)?n:0,positionY:null!=(i=e.initialPositionY)?i:0}},AQ=function(e){var t=AD({},AF);return Object.keys(e).forEach(function(r){var n=void 0!==e[r];if(void 0!==AF[r]&&n){var i=Object.prototype.toString.call(AF[r]);"[object Object]"===i?t[r]=AD(AD({},AF[r]),e[r]):"[object Array]"===i?t[r]=AL(AL([],AF[r],!0),e[r],!0):t[r]=e[r]}}),t},AU=function(e,t,r){var n=e.transformState.scale,i=e.wrapperComponent,a=e.setup,s=a.maxScale,o=a.minScale,l=a.zoomAnimation,u=a.smooth,c=l.size;if(!i)throw Error("Wrapper is not mounted");return Av(Aa(u?n*Math.exp(t*r):n+t*r,3),o,s,c,!1)};function Az(e,t,r,n,i){var a=e.wrapperComponent,s=e.transformState,o=s.scale,l=s.positionX,u=s.positionY;if(!a)return console.error("No WrapperComponent found");var c=a.offsetWidth,d=a.offsetHeight,h=AU(e,t,r),p=AR(e,h,(c/2-l)/o,(d/2-u)/o);if(!p)return console.error("Error during zoom event. New transformation state was not calculated.");Ad(e,p,n,i)}function AH(e,t,r,n){var i=e.setup,a=e.wrapperComponent,s=i.limitToBounds,o=AN(e.props),l=e.transformState,u=l.scale,c=l.positionX,d=l.positionY;if(a){var h=Ap(e,o.scale),p=Ag(o.positionX,o.positionY,h,s,0,0,a),f={scale:o.scale,positionX:p.x,positionY:p.y};(u!==o.scale||c!==o.positionX||d!==o.positionY)&&(null==n||n(),Ad(e,f,t,r))}}var AG=function(e){return{instance:e,zoomIn:function(t,r,n){void 0===t&&(t=.5),void 0===r&&(r=300),void 0===n&&(n="easeOut"),Az(e,1,t,r,n)},zoomOut:function(t,r,n){void 0===t&&(t=.5),void 0===r&&(r=300),void 0===n&&(n="easeOut"),Az(e,-1,t,r,n)},setTransform:function(t,r,n,i,a){void 0===i&&(i=300),void 0===a&&(a="easeOut");var s=e.transformState,o=s.positionX,l=s.positionY,u=s.scale,c=e.wrapperComponent,d=e.contentComponent;!e.setup.disabled&&c&&d&&Ad(e,{positionX:Number.isNaN(t)?o:t,positionY:Number.isNaN(r)?l:r,scale:Number.isNaN(n)?u:n},i,a)},resetTransform:function(t,r){void 0===t&&(t=200),void 0===r&&(r="easeOut"),AH(e,t,r)},centerView:function(t,r,n){void 0===r&&(r=200),void 0===n&&(n="easeOut");var i=e.transformState,a=e.wrapperComponent,s=e.contentComponent;a&&s&&Ad(e,AJ(t||i.scale,a,s),r,n)},zoomToElement:function(t,r,n,i){void 0===n&&(n=600),void 0===i&&(i="easeOut"),Au(e);var a=e.wrapperComponent,s="string"==typeof t?document.getElementById(t):t;if(a&&s&&a.contains(s)){var o=function(e,t,r){var n,i,a,s,o,l=e.wrapperComponent,u=e.contentComponent,c=e.transformState,d=e.setup,h=d.limitToBounds,p=d.minScale,f=d.maxScale;if(!l||!u)return c;var A=l.getBoundingClientRect(),g=t.getBoundingClientRect(),m=(n=t.getBoundingClientRect(),i=l.getBoundingClientRect(),a=u.getBoundingClientRect(),s=i.x*c.scale,o=i.y*c.scale,{x:(n.x-a.x+s)/c.scale,y:(n.y-a.y+o)/c.scale}),v=m.x,b=m.y,y=g.width/c.scale,w=g.height/c.scale,x=l.offsetWidth/y,C=l.offsetHeight/w,E=Av(r||Math.min(x,C),p,f,0,!1),S=(A.width-y*E)/2,M=(A.height-w*E)/2,I=Ag((A.left-v)*E+S,(A.top-b)*E+M,Ap(e,E),h,0,0,l);return{positionX:I.x,positionY:I.y,scale:E}}(e,s,r);Ad(e,o,n,i)}}}},Aj=function(e){var t={};return Object.assign(t,{instance:e,state:e.transformState}),Object.assign(t,AG(e)),t};function AV(){try{return{get passive(){return!1}}}catch(e){return!1}}var AW=".".concat(AO),Aq=function(e,t){return t.some(function(t){return e.matches("".concat(AW," ").concat(t,", ").concat(AW," .").concat(t,", ").concat(AW," ").concat(t," *, ").concat(AW," .").concat(t," *"))})},AY=function(e){e&&clearTimeout(e)},AJ=function(e,t,r){var n=r.offsetWidth*e,i=r.offsetHeight*e;return{scale:e,positionX:(t.offsetWidth-n)/2,positionY:(t.offsetHeight-i)/2}},AK=function(e,t){var r=e.setup.wheel,n=r.disabled,i=r.wheelDisabled,a=r.touchPadDisabled,s=r.excluded,o=e.isInitialized,l=e.isPanning,u=t.target;return!(!(o&&!l&&!n&&u)||i&&!t.ctrlKey||a&&t.ctrlKey||Aq(u,s))};function AX(e,t,r){var n=t.getBoundingClientRect(),i=0,a=0;if("clientX"in e)i=(e.clientX-n.left)/r,a=(e.clientY-n.top)/r;else{var s=e.touches[0];i=(s.clientX-n.left)/r,a=(s.clientY-n.top)/r}return(Number.isNaN(i)||Number.isNaN(a))&&console.error("No mouse or touch offset found"),{x:i,y:a}}var AZ=function(e,t,r,n,i){var a=e.transformState.scale,s=e.wrapperComponent,o=e.setup,l=o.maxScale,u=o.minScale,c=o.zoomAnimation,d=o.disablePadding,h=c.size,p=c.disabled;if(!s)throw Error("Wrapper is not mounted");var f=a+t*r;return i?f:Av(Aa(f,3),u,l,h,!n&&!p&&!d)},A$=function(e,t){var r=e.previousWheelEvent,n=e.transformState.scale,i=e.setup,a=i.maxScale,s=i.minScale;return!!r&&(!!(n<a)||!!(n>s)||Math.sign(r.deltaY)!==Math.sign(t.deltaY)||!!(r.deltaY>0)&&!!(r.deltaY<t.deltaY)||!!(r.deltaY<0)&&!!(r.deltaY>t.deltaY)||Math.sign(r.deltaY)!==Math.sign(t.deltaY))},A0=function(e,t){var r=e.setup.pinch,n=r.disabled,i=r.excluded,a=e.isInitialized,s=t.target;return!(!(a&&!n&&s)||Aq(s,i))},A1=function(e){var t=e.setup.pinch.disabled,r=e.isInitialized,n=e.pinchStartDistance;return!!(r&&!t&&n)},A2=function(e,t,r){var n=r.getBoundingClientRect(),i=e.touches,a=Aa(i[0].clientX-n.left,5),s=Aa(i[0].clientY-n.top,5);return{x:(a+Aa(i[1].clientX-n.left,5))/2/t,y:(s+Aa(i[1].clientY-n.top,5))/2/t}},A3=function(e){return Math.sqrt(Math.pow(e.touches[0].pageX-e.touches[1].pageX,2)+Math.pow(e.touches[0].pageY-e.touches[1].pageY,2))},A4=function(e,t){var r=e.pinchStartScale,n=e.pinchStartDistance,i=e.setup,a=i.maxScale,s=i.minScale,o=i.zoomAnimation,l=i.disablePadding,u=o.size,c=o.disabled;if(!r||null===n||!t)throw Error("Pinch touches distance was not provided");return t<0?e.transformState.scale:Av(Aa(t/n*r,2),s,a,u,!c&&!l)},A5=function(e,t){var r=e.props,n=r.onWheelStart,i=r.onZoomStart;e.wheelStopEventTimer||(Au(e),As(Aj(e),t,n),As(Aj(e),t,i))},A9=function(e,t){var r,n=e.props,i=n.onWheel,a=n.onZoom,s=e.contentComponent,o=e.setup,l=e.transformState.scale,u=o.limitToBounds,c=o.centerZoomedOut,d=o.zoomAnimation,h=o.wheel,p=o.disablePadding,f=o.smooth,A=d.size,g=d.disabled,m=h.step,v=h.smoothStep;if(!s)throw Error("Component not mounted");t.preventDefault(),t.stopPropagation();var b=AZ(e,(r=t?t.deltaY<0?1:-1:0,r),f?v*Math.abs(t.deltaY):m,!t.ctrlKey);if(l!==b){var y=AA(e,b),w=AX(t,s,l),x=Am(e,w.x,w.y,b,y,u&&(g||0===A||c||p)),C=x.x,E=x.y;e.previousWheelEvent=t,e.setTransformState(b,C,E),As(Aj(e),t,i),As(Aj(e),t,a)}},A8=function(e,t){var r=e.props,n=r.onWheelStop,i=r.onZoomStop;AY(e.wheelAnimationTimer),e.wheelAnimationTimer=setTimeout(function(){e.mounted&&(AP(e,t.x,t.y),e.wheelAnimationTimer=null)},100),A$(e,t)&&(AY(e.wheelStopEventTimer),e.wheelStopEventTimer=setTimeout(function(){e.mounted&&(e.wheelStopEventTimer=null,As(Aj(e),t,n),As(Aj(e),t,i))},160))},A6=function(e){for(var t=0,r=0,n=0;n<2;n+=1)t+=e.touches[n].clientX,r+=e.touches[n].clientY;return{x:t/2,y:r/2}},A7=function(e,t){var r=A3(t);e.pinchStartDistance=r,e.lastDistance=r,e.pinchStartScale=e.transformState.scale,e.isPanning=!1;var n=A6(t);e.pinchLastCenterX=n.x,e.pinchLastCenterY=n.y,Au(e)},ge=function(e,t){var r=e.contentComponent,n=e.pinchStartDistance,i=e.wrapperComponent,a=e.transformState.scale,s=e.setup,o=s.limitToBounds,l=s.centerZoomedOut,u=s.zoomAnimation,c=s.alignmentAnimation,d=u.disabled,h=u.size;if(null!==n&&r){var p=A2(t,a,r);if(Number.isFinite(p.x)&&Number.isFinite(p.y)){var f=A3(t),A=A4(e,f),g=A6(t),m=g.x-(e.pinchLastCenterX||0),v=g.y-(e.pinchLastCenterY||0);if(A!==a||0!==m||0!==v){e.pinchLastCenterX=g.x,e.pinchLastCenterY=g.y;var b=AA(e,A),y=Am(e,p.x,p.y,A,b,o&&(d||0===h||l)),w=y.x,x=y.y;e.pinchMidpoint=p,e.lastDistance=f;var C=c.sizeX,E=c.sizeY,S=Ag(w+m,x+v,b,o,AS(e,C),AS(e,E),i),M=S.x,I=S.y;e.setTransformState(A,M,I)}}}},gt=function(e){var t=e.pinchMidpoint;e.velocity=null,e.lastDistance=null,e.pinchMidpoint=null,e.pinchStartScale=null,e.pinchStartDistance=null,AP(e,null==t?void 0:t.x,null==t?void 0:t.y)},gr=function(e,t){var r=e.props.onZoomStop,n=e.setup.doubleClick.animationTime;AY(e.doubleClickStopEventTimer),e.doubleClickStopEventTimer=setTimeout(function(){e.doubleClickStopEventTimer=null,As(Aj(e),t,r)},n)},gn=function(e,t){var r=e.props,n=r.onZoomStart,i=r.onZoom,a=e.setup.doubleClick,s=a.animationTime,o=a.animationType;As(Aj(e),t,n),AH(e,s,o,function(){return As(Aj(e),t,i)}),gr(e,t)},gi=function(e,t){var r=e.isInitialized,n=e.setup,i=e.wrapperComponent,a=n.doubleClick,s=a.disabled,o=a.excluded,l=t.target,u=null==i?void 0:i.contains(l);return!(!(r&&l&&u&&!s)||Aq(l,o))},ga=function(e){var t=this;this.mounted=!0,this.pinchLastCenterX=null,this.pinchLastCenterY=null,this.onChangeCallbacks=new Set,this.onInitCallbacks=new Set,this.wrapperComponent=null,this.contentComponent=null,this.isInitialized=!1,this.bounds=null,this.previousWheelEvent=null,this.wheelStopEventTimer=null,this.wheelAnimationTimer=null,this.isPanning=!1,this.isWheelPanning=!1,this.startCoords=null,this.lastTouch=null,this.distance=null,this.lastDistance=null,this.pinchStartDistance=null,this.pinchStartScale=null,this.pinchMidpoint=null,this.doubleClickStopEventTimer=null,this.velocity=null,this.velocityTime=null,this.lastMousePosition=null,this.animate=!1,this.animation=null,this.maxBounds=null,this.pressedKeys={},this.mount=function(){t.initializeWindowEvents()},this.unmount=function(){t.cleanupWindowEvents()},this.update=function(e){t.props=e,AA(t,t.transformState.scale),t.setup=AQ(e)},this.initializeWindowEvents=function(){var e,r,n=AV(),i=null==(e=t.wrapperComponent)?void 0:e.ownerDocument,a=null==i?void 0:i.defaultView;null==(r=t.wrapperComponent)||r.addEventListener("wheel",t.onWheelPanning,n),null==a||a.addEventListener("mousedown",t.onPanningStart,n),null==a||a.addEventListener("mousemove",t.onPanning,n),null==a||a.addEventListener("mouseup",t.onPanningStop,n),null==i||i.addEventListener("mouseleave",t.clearPanning,n),null==a||a.addEventListener("keyup",t.setKeyUnPressed,n),null==a||a.addEventListener("keydown",t.setKeyPressed,n)},this.cleanupWindowEvents=function(){var e,r,n=AV(),i=null==(e=t.wrapperComponent)?void 0:e.ownerDocument,a=null==i?void 0:i.defaultView;null==a||a.removeEventListener("mousedown",t.onPanningStart,n),null==a||a.removeEventListener("mousemove",t.onPanning,n),null==a||a.removeEventListener("mouseup",t.onPanningStop,n),null==i||i.removeEventListener("mouseleave",t.clearPanning,n),null==a||a.removeEventListener("keyup",t.setKeyUnPressed,n),null==a||a.removeEventListener("keydown",t.setKeyPressed,n),document.removeEventListener("mouseleave",t.clearPanning,n),Au(t),null==(r=t.observer)||r.disconnect()},this.handleInitializeWrapperEvents=function(e){var r=AV();e.addEventListener("wheel",t.onWheelZoom,r),e.addEventListener("dblclick",t.onDoubleClick,r),e.addEventListener("touchstart",t.onTouchPanningStart,r),e.addEventListener("touchmove",t.onTouchPanning,r),e.addEventListener("touchend",t.onTouchPanningStop,r)},this.handleInitialize=function(e,r){var n=!1,i=t.setup.centerOnInit,a=function(e,t){for(var r=0;r<e.length;r++)if(e[r].target===t)return!0;return!1};t.applyTransformation(),t.onInitCallbacks.forEach(function(e){e(Aj(t))}),t.observer=new ResizeObserver(function(s){if(a(s,e)||a(s,r))if(i&&!n){var o=r.offsetWidth,l=r.offsetHeight;(o>0||l>0)&&(n=!0,t.setCenter())}else Au(t),AA(t,t.transformState.scale),Ak(t,0)}),t.observer.observe(e),t.observer.observe(r)},this.onWheelZoom=function(e){t.setup.disabled||!AK(t,e)||t.isPressingKeys(t.setup.wheel.activationKeys)&&(A5(t,e),A9(t,e),A8(t,e))},this.onWheelPanning=function(e){var r=t.setup,n=r.disabled,i=r.wheel,a=r.panning;if(t.wrapperComponent&&t.contentComponent&&!n&&i.wheelDisabled&&!a.disabled&&a.wheelPanning&&!e.ctrlKey){e.preventDefault(),e.stopPropagation();var s=t.transformState,o=s.positionX,l=s.positionY,u=o-e.deltaX,c=l-e.deltaY,d=a.lockAxisX?o:u,h=a.lockAxisY?l:c,p=t.setup.alignmentAnimation,f=p.sizeX,A=p.sizeY,g=AS(t,f),m=AS(t,A);(d!==o||h!==l)&&AC(t,d,h,g,m)}},this.onPanningStart=function(e){var r=t.setup.disabled,n=t.props.onPanningStart;!r&&Ab(t,e)&&t.isPressingKeys(t.setup.panning.activationKeys)&&(0!==e.button||t.setup.panning.allowLeftClickPan)&&(1!==e.button||t.setup.panning.allowMiddleClickPan)&&(2!==e.button||t.setup.panning.allowRightClickPan)&&(e.preventDefault(),e.stopPropagation(),Au(t),AT(t,e),As(Aj(t),e,n))},this.onPanning=function(e){var r=t.setup.disabled,n=t.props.onPanning;r||!Ay(t)||t.isPressingKeys(t.setup.panning.activationKeys)&&(e.preventDefault(),e.stopPropagation(),A_(t,e.clientX,e.clientY),As(Aj(t),e,n))},this.onPanningStop=function(e){var r=t.props.onPanningStop;t.isPanning&&(!function(e){if(e.isPanning){var t=e.setup.panning.velocityDisabled,r=e.velocity,n=e.wrapperComponent,i=e.contentComponent;e.isPanning=!1,e.animate=!1,e.animation=null;var a=null==n?void 0:n.getBoundingClientRect(),s=null==i?void 0:i.getBoundingClientRect(),o=(null==a?void 0:a.width)||0,l=(null==a?void 0:a.height)||0,u=(null==s?void 0:s.width)||0,c=(null==s?void 0:s.height)||0;!t&&r&&(null==r?void 0:r.total)>.1&&(o<u||l<c)?function(e){var t=e.velocity,r=e.bounds,n=e.setup,i=e.wrapperComponent;if(AI(e)&&t&&r&&i){var a,s,o,l,u=t.velocityX,c=t.velocityY,d=t.total,h=r.maxPositionX,p=r.minPositionX,f=r.maxPositionY,A=r.minPositionY,g=n.limitToBounds,m=n.alignmentAnimation,v=n.zoomAnimation,b=n.panning,y=b.lockAxisY,w=b.lockAxisX,x=v.animationType,C=m.sizeX,E=m.sizeY,S=m.velocityAlignmentTime,M=Math.max((s=(a=e.setup.velocityAnimation).equalToMove,o=a.animationTime,l=a.sensitivity,s?o*d*l:o),S),I=AS(e,C),B=AS(e,E),T=I*i.offsetWidth/100,k=B*i.offsetHeight/100,_=h+T,R=p-T,P=f+k,D=A-k,L=e.transformState,F=new Date().getTime();Ac(e,x,M,function(t){var r=e.transformState,n=r.scale,i=r.positionX,a=r.positionY,s=new Date().getTime()-F,o=1-(0,Ao[m.animationType])(Math.min(1,s/S)),l=1-t,d=i+u*l,v=a+c*l,b=AB(d,L.positionX,i,w,g,p,h,R,_,o),x=AB(v,L.positionY,a,y,g,A,f,D,P,o);(i!==d||a!==v)&&e.setTransformState(n,b,x)})}}(e):Ak(e)}}(t),As(Aj(t),e,r))},this.onPinchStart=function(e){var r=t.setup.disabled,n=t.props,i=n.onPinchingStart,a=n.onZoomStart;r||A0(t,e)&&(A7(t,e),Au(t),As(Aj(t),e,i),As(Aj(t),e,a))},this.onPinch=function(e){var r=t.setup.disabled,n=t.props,i=n.onPinching,a=n.onZoom;r||A1(t)&&(e.preventDefault(),e.stopPropagation(),ge(t,e),As(Aj(t),e,i),As(Aj(t),e,a))},this.onPinchStop=function(e){var r=t.props,n=r.onPinchingStop,i=r.onZoomStop;t.pinchStartScale&&(gt(t),As(Aj(t),e,n),As(Aj(t),e,i))},this.onTouchPanningStart=function(e){var r=t.setup.disabled,n=t.props.onPanningStart;if(!r&&Ab(t,e)&&!(t.lastTouch&&new Date-t.lastTouch<200&&1===e.touches.length)){t.lastTouch=+new Date,Au(t);var i=e.touches,a=1===i.length,s=2===i.length;a&&(Au(t),AT(t,e),As(Aj(t),e,n)),s&&t.onPinchStart(e)}},this.onTouchPanning=function(e){var r=t.setup.disabled,n=t.props.onPanning;if(t.isPanning&&1===e.touches.length){if(r||!Ay(t))return;e.preventDefault(),e.stopPropagation();var i=e.touches[0];A_(t,i.clientX,i.clientY),As(Aj(t),e,n)}else e.touches.length>1&&t.onPinch(e)},this.onTouchPanningStop=function(e){t.onPanningStop(e),t.onPinchStop(e)},this.onDoubleClick=function(e){t.setup.disabled||gi(t,e)&&function(e,t){var r,n=e.setup,i=e.doubleClickStopEventTimer,a=e.transformState,s=e.contentComponent,o=a.scale,l=e.props,u=l.onZoomStart,c=l.onZoom,d=n.doubleClick,h=d.disabled,p=d.mode,f=d.step,A=d.animationTime,g=d.animationType;if(!h&&!i){if("reset"===p)return gn(e,t);if(!s)return console.error("No ContentComponent found");var m=(r=e.transformState.scale,"toggle"===p?1===r?1:-1:"zoomOut"===p?-1:1),v=AU(e,m,f);if(o!==v){As(Aj(e),t,u);var b=AX(t,s,o),y=AR(e,v,b.x,b.y);if(!y)return console.error("Error during zoom event. New transformation state was not calculated.");As(Aj(e),t,c),Ad(e,y,A,g),gr(e,t)}}}(t,e)},this.clearPanning=function(e){t.isPanning&&t.onPanningStop(e)},this.setKeyPressed=function(e){t.pressedKeys[e.key]=!0},this.setKeyUnPressed=function(e){t.pressedKeys[e.key]=!1},this.isPressingKeys=function(e){return!e.length||!!e.find(function(e){return t.pressedKeys[e]})},this.setTransformState=function(e,r,n){var i=t.props.onTransformed;if(Number.isNaN(e)||Number.isNaN(r)||Number.isNaN(n))console.error("Detected NaN set state values");else{e!==t.transformState.scale&&(t.transformState.previousScale=t.transformState.scale,t.transformState.scale=e),t.transformState.positionX=r,t.transformState.positionY=n,t.applyTransformation();var a=Aj(t);t.onChangeCallbacks.forEach(function(e){return e(a)}),As(a,{scale:e,positionX:r,positionY:n},i)}},this.setCenter=function(){if(t.wrapperComponent&&t.contentComponent){var e=AJ(t.transformState.scale,t.wrapperComponent,t.contentComponent);t.setTransformState(e.scale,e.positionX,e.positionY)}},this.handleTransformStyles=function(e,r,n){return t.props.customTransform?t.props.customTransform(e,r,n):"translate(".concat(e,"px, ").concat(r,"px) scale(").concat(n,")")},this.applyTransformation=function(){if(t.mounted&&t.contentComponent){var e=t.transformState,r=e.scale,n=e.positionX,i=e.positionY,a=t.handleTransformStyles(n,i,r);t.contentComponent.style.transform=a}},this.getContext=function(){return Aj(t)},this.onChange=function(e){return t.onChangeCallbacks.has(e)||t.onChangeCallbacks.add(e),function(){t.onChangeCallbacks.delete(e)}},this.onInit=function(e){return t.onInitCallbacks.has(e)||t.onInitCallbacks.add(e),function(){t.onInitCallbacks.delete(e)}},this.init=function(e,r){t.cleanupWindowEvents(),t.wrapperComponent=e,t.contentComponent=r,AA(t,t.transformState.scale),t.handleInitializeWrapperEvents(e),t.handleInitialize(e,r),t.initializeWindowEvents(),t.isInitialized=!0,As(Aj(t),void 0,t.props.onInit)},this.props=e,this.setup=AQ(this.props),this.transformState=AN(this.props)},gs=rd.createContext(null),go=rd.forwardRef(function(e,t){var r,n,i=(0,rd.useRef)(new ga(e)).current,a=(r=e.children,n=AG(i),"function"==typeof r?r(n):r);return(0,rd.useImperativeHandle)(t,function(){return AG(i)},[i]),(0,rd.useEffect)(function(){i.update(e)},[i,e]),rd.createElement(gs.Provider,{value:i},a)});rd.forwardRef(function(e,t){var r,n=(0,rd.useRef)(null),i=(0,rd.useContext)(gs);return(0,rd.useEffect)(function(){return i.onChange(function(e){n.current&&(n.current.style.transform=i.handleTransformStyles(0,0,1/e.instance.transformState.scale))})},[i]),rd.createElement("div",AD({},e,{ref:(r=[n,t],function(e){r.forEach(function(t){"function"==typeof t?t(e):null!=t&&(t.current=e)})})}))});!function(e,t){void 0===t&&(t={});var r=t.insertAt;if(e&&"u">typeof document){var n=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===r&&n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}(".transform-component-module_wrapper__SPB86 {\n position: relative;\n width: -moz-fit-content;\n width: fit-content;\n height: -moz-fit-content;\n height: fit-content;\n overflow: hidden;\n -webkit-touch-callout: none; /* iOS Safari */\n -webkit-user-select: none; /* Safari */\n -khtml-user-select: none; /* Konqueror HTML */\n -moz-user-select: none; /* Firefox */\n -ms-user-select: none; /* Internet Explorer/Edge */\n user-select: none;\n margin: 0;\n padding: 0;\n transform: translate3d(0, 0, 0);\n}\n.transform-component-module_content__FBWxo {\n display: flex;\n flex-wrap: wrap;\n width: -moz-fit-content;\n width: fit-content;\n height: -moz-fit-content;\n height: fit-content;\n margin: 0;\n padding: 0;\n transform-origin: 0% 0%;\n}\n.transform-component-module_content__FBWxo img {\n pointer-events: none;\n}\n");var gl=function(e){var t=e.children,r=e.wrapperClass,n=e.contentClass,i=e.wrapperStyle,a=e.contentStyle,s=e.wrapperProps,o=e.contentProps,l=(0,rd.useContext)(gs),u=l.init,c=l.cleanupWindowEvents,d=(0,rd.useRef)(null),h=(0,rd.useRef)(null);return(0,rd.useEffect)(function(){var e=d.current,t=h.current;return null!==e&&null!==t&&u&&(null==u||u(e,t)),function(){null==c||c()}},[]),rd.createElement("div",AD({},void 0===s?{}:s,{ref:d,className:"".concat(AO," ").concat("transform-component-module_wrapper__SPB86"," ").concat(void 0===r?"":r),style:i}),rd.createElement("div",AD({},void 0===o?{}:o,{ref:h,className:"".concat("react-transform-component"," ").concat("transform-component-module_content__FBWxo"," ").concat(void 0===n?"":n),style:a}),t))};let gu=(e,t)=>{if("number"==typeof e){if(3===t)return{mode:"rgb",r:(e>>8&15|e>>4&240)/255,g:(e>>4&15|240&e)/255,b:(15&e|e<<4&240)/255};if(4===t)return{mode:"rgb",r:(e>>12&15|e>>8&240)/255,g:(e>>8&15|e>>4&240)/255,b:(e>>4&15|240&e)/255,alpha:(15&e|e<<4&240)/255};if(6===t)return{mode:"rgb",r:(e>>16&255)/255,g:(e>>8&255)/255,b:(255&e)/255};if(8===t)return{mode:"rgb",r:(e>>24&255)/255,g:(e>>16&255)/255,b:(e>>8&255)/255,alpha:(255&e)/255}}},gc={aliceblue:0xf0f8ff,antiquewhite:0xfaebd7,aqua:65535,aquamarine:8388564,azure:0xf0ffff,beige:0xf5f5dc,bisque:0xffe4c4,black:0,blanchedalmond:0xffebcd,blue:255,blueviolet:9055202,brown:0xa52a2a,burlywood:0xdeb887,cadetblue:6266528,chartreuse:8388352,chocolate:0xd2691e,coral:0xff7f50,cornflowerblue:6591981,cornsilk:0xfff8dc,crimson:0xdc143c,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:0xb8860b,darkgray:0xa9a9a9,darkgreen:25600,darkgrey:0xa9a9a9,darkkhaki:0xbdb76b,darkmagenta:9109643,darkolivegreen:5597999,darkorange:0xff8c00,darkorchid:0x9932cc,darkred:9109504,darksalmon:0xe9967a,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:0xff1493,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:0xb22222,floralwhite:0xfffaf0,forestgreen:2263842,fuchsia:0xff00ff,gainsboro:0xdcdcdc,ghostwhite:0xf8f8ff,gold:0xffd700,goldenrod:0xdaa520,gray:8421504,green:32768,greenyellow:0xadff2f,grey:8421504,honeydew:0xf0fff0,hotpink:0xff69b4,indianred:0xcd5c5c,indigo:4915330,ivory:0xfffff0,khaki:0xf0e68c,lavender:0xe6e6fa,lavenderblush:0xfff0f5,lawngreen:8190976,lemonchiffon:0xfffacd,lightblue:0xadd8e6,lightcoral:0xf08080,lightcyan:0xe0ffff,lightgoldenrodyellow:0xfafad2,lightgray:0xd3d3d3,lightgreen:9498256,lightgrey:0xd3d3d3,lightpink:0xffb6c1,lightsalmon:0xffa07a,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:0xb0c4de,lightyellow:0xffffe0,lime:65280,limegreen:3329330,linen:0xfaf0e6,magenta:0xff00ff,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:0xba55d3,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:0xc71585,midnightblue:1644912,mintcream:0xf5fffa,mistyrose:0xffe4e1,moccasin:0xffe4b5,navajowhite:0xffdead,navy:128,oldlace:0xfdf5e6,olive:8421376,olivedrab:7048739,orange:0xffa500,orangered:0xff4500,orchid:0xda70d6,palegoldenrod:0xeee8aa,palegreen:0x98fb98,paleturquoise:0xafeeee,palevioletred:0xdb7093,papayawhip:0xffefd5,peachpuff:0xffdab9,peru:0xcd853f,pink:0xffc0cb,plum:0xdda0dd,powderblue:0xb0e0e6,purple:8388736,rebeccapurple:6697881,red:0xff0000,rosybrown:0xbc8f8f,royalblue:4286945,saddlebrown:9127187,salmon:0xfa8072,sandybrown:0xf4a460,seagreen:3050327,seashell:0xfff5ee,sienna:0xa0522d,silver:0xc0c0c0,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:0xfffafa,springgreen:65407,steelblue:4620980,tan:0xd2b48c,teal:32896,thistle:0xd8bfd8,tomato:0xff6347,turquoise:4251856,violet:0xee82ee,wheat:0xf5deb3,white:0xffffff,whitesmoke:0xf5f5f5,yellow:0xffff00,yellowgreen:0x9acd32},gd=/^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i,gh="([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)",gp=`${gh}%`,gf=`(?:${gh}%|${gh})`,gA=`(?:${gh}%|${gh}|none)`,gg=`(?:${gh}(deg|grad|rad|turn)|${gh})`,gm="\\s*,\\s*";RegExp("^"+gA+"$");let gv=RegExp(`^rgba?\\(\\s*${gh}${gm}${gh}${gm}${gh}\\s*(?:,\\s*${gf}\\s*)?\\)$`),gb=RegExp(`^rgba?\\(\\s*${gp}${gm}${gp}${gm}${gp}\\s*(?:,\\s*${gf}\\s*)?\\)$`),gy=(e="rgb")=>t=>{let r;return void 0!==(t=void 0===(r=t)?void 0:"object"!=typeof r?gj(r):void 0!==r.mode?r:e?{...r,mode:e}:void 0)?t.mode===e?t:gw[t.mode][e]?gw[t.mode][e](t):"rgb"===e?gw[t.mode].rgb(t):gw.rgb[e](gw[t.mode].rgb(t)):void 0},gw={},gx={},gC=[],gE={},gS=e=>e,gM=e=>(gw[e.mode]={...gw[e.mode],...e.toMode},Object.keys(e.fromMode||{}).forEach(t=>{gw[t]||(gw[t]={}),gw[t][e.mode]=e.fromMode[t]}),e.ranges||(e.ranges={}),e.difference||(e.difference={}),e.channels.forEach(t=>{if(void 0===e.ranges[t]&&(e.ranges[t]=[0,1]),!e.interpolate[t])throw Error(`Missing interpolator for: ${t}`);"function"==typeof e.interpolate[t]&&(e.interpolate[t]={use:e.interpolate[t]}),e.interpolate[t].fixup||(e.interpolate[t].fixup=gS)}),gx[e.mode]=e,(e.parse||[]).forEach(t=>{gI(t,e.mode)}),gy(e.mode)),gI=(e,t)=>{if("string"==typeof e){if(!t)throw Error("'mode' required when 'parser' is a string");gE[e]=t}else"function"==typeof e&&0>gC.indexOf(e)&&gC.push(e)},gB=/[^\x00-\x7F]|[a-zA-Z_]/,gT=/[^\x00-\x7F]|[-\w]/,gk="function",g_="ident",gR="number",gP="percentage",gD="none",gL="alpha",gF=0;function gO(e){let t=e[gF],r=e[gF+1];return"-"===t||"+"===t?/\d/.test(r)||"."===r&&/\d/.test(e[gF+2]):"."===t?/\d/.test(r):/\d/.test(t)}function gN(e){if(gF>=e.length)return!1;let t=e[gF];if(gB.test(t))return!0;if("-"===t){if(e.length-gF<2)return!1;let t=e[gF+1];if("-"===t||gB.test(t))return!0}return!1}let gQ={deg:1,rad:180/Math.PI,grad:.9,turn:360};function gU(e){let t="";if(("-"===e[gF]||"+"===e[gF])&&(t+=e[gF++]),t+=gz(e),"."===e[gF]&&/\d/.test(e[gF+1])&&(t+=e[gF++]+gz(e)),("e"===e[gF]||"E"===e[gF])&&(("-"===e[gF+1]||"+"===e[gF+1])&&/\d/.test(e[gF+2])?t+=e[gF++]+e[gF++]+gz(e):/\d/.test(e[gF+1])&&(t+=e[gF++]+gz(e))),gN(e)){let r=gH(e);return"deg"===r||"rad"===r||"turn"===r||"grad"===r?{type:"hue",value:t*gQ[r]}:void 0}return"%"===e[gF]?(gF++,{type:gP,value:+t}):{type:gR,value:+t}}function gz(e){let t="";for(;/\d/.test(e[gF]);)t+=e[gF++];return t}function gH(e){let t="";for(;gF<e.length&&gT.test(e[gF]);)t+=e[gF++];return t}function gG(e,t){let r,n=[];for(;e._i<e.length;){if((r=e[e._i++]).type===gD||r.type===gR||r.type===gL||r.type===gP||t&&"hue"===r.type){n.push(r);continue}if(")"===r.type){if(e._i<e.length)return;continue}return}if(!(n.length<3)&&!(n.length>4)){if(4===n.length){if(n[3].type!==gL)return;n[3]=n[3].value}return 3===n.length&&n.push({type:gD,value:void 0}),n.every(e=>e.type!==gL)?n:void 0}}let gj=e=>{let t;if("string"!=typeof e)return;let r=function(e=""){let t,r=e.trim(),n=[];for(gF=0;gF<r.length;){if("\n"===(t=r[gF++])||" "===t||" "===t){for(;gF<r.length&&("\n"===r[gF]||" "===r[gF]||" "===r[gF]);)gF++;continue}if(","===t)return;if(")"===t){n.push({type:")"});continue}if("+"===t){if(gF--,gO(r)){n.push(gU(r));continue}return}if("-"===t){if(gF--,gO(r)){n.push(gU(r));continue}if(gN(r)){n.push({type:g_,value:gH(r)});continue}return}if("."===t){if(gF--,gO(r)){n.push(gU(r));continue}return}if("/"===t){let e;for(;gF<r.length&&("\n"===r[gF]||" "===r[gF]||" "===r[gF]);)gF++;if(gO(r)&&"hue"!==(e=gU(r)).type){n.push({type:gL,value:e});continue}if(gN(r)&&"none"===gH(r)){n.push({type:gL,value:{type:gD,value:void 0}});continue}return}if(/\d/.test(t)){gF--,n.push(gU(r));continue}if(gB.test(t)){gF--,n.push(function(e){let t=gH(e);return"("===e[gF]?(gF++,{type:gk,value:t}):"none"===t?{type:gD,value:void 0}:{type:g_,value:t}}(r));continue}return}return n}(e),n=r?function(e,t){e._i=0;let r=e[e._i++];if(!r||r.type!==gk)return;let n=gG(e,t);if(n)return n.unshift(r.value),n}(r,!0):void 0,i=0,a=gC.length;for(;i<a;)if(void 0!==(t=gC[i++](e,n)))return t;return r?function(e){e._i=0;let t=e[e._i++];if(!t||t.type!==gk||"color"!==t.value||(t=e[e._i++]).type!==g_)return;let r=gE[t.value];if(!r)return;let n={mode:r},i=gG(e,!1);if(!i)return;let a=gx[r].channels;for(let e=0,t,r;e<a.length;e++)t=i[e],r=a[e],t.type!==gD&&(n[r]=t.type===gR?t.value:t.value/100,"alpha"===r&&(n[r]=Math.max(0,Math.min(1,n[r]))));return n}(r):void 0},gV=(z=(e,t,r)=>e+r*(t-e),e=>{let t=(e=>{let t=[];for(let r=0;r<e.length-1;r++){let n=e[r],i=e[r+1];void 0===n&&void 0===i?t.push(void 0):void 0!==n&&void 0!==i?t.push([n,i]):t.push(void 0!==n?[n,n]:[i,i])}return t})(e);return e=>{let r=e*t.length,n=e>=1?t.length-1:Math.max(Math.floor(r),0),i=t[n];return void 0===i?void 0:z(i[0],i[1],r-n)}}),gW=e=>{let t=!1,r=e.map(e=>void 0!==e?(t=!0,e):1);return t?r:e},gq={mode:"rgb",channels:["r","g","b","alpha"],parse:[function(e,t){if(!t||"rgb"!==t[0]&&"rgba"!==t[0])return;let r={mode:"rgb"},[,n,i,a,s]=t;if("hue"!==n.type&&"hue"!==i.type&&"hue"!==a.type)return n.type!==gD&&(r.r=n.type===gR?n.value/255:n.value/100),i.type!==gD&&(r.g=i.type===gR?i.value/255:i.value/100),a.type!==gD&&(r.b=a.type===gR?a.value/255:a.value/100),s.type!==gD&&(r.alpha=Math.min(1,Math.max(0,s.type===gR?s.value:s.value/100))),r},e=>{let t;return(t=e.match(gd))?gu(parseInt(t[1],16),t[1].length):void 0},e=>{let t,r={mode:"rgb"};if(t=e.match(gv))void 0!==t[1]&&(r.r=t[1]/255),void 0!==t[2]&&(r.g=t[2]/255),void 0!==t[3]&&(r.b=t[3]/255);else{if(!(t=e.match(gb)))return;void 0!==t[1]&&(r.r=t[1]/100),void 0!==t[2]&&(r.g=t[2]/100),void 0!==t[3]&&(r.b=t[3]/100)}return void 0!==t[4]?r.alpha=Math.max(0,Math.min(1,t[4]/100)):void 0!==t[5]&&(r.alpha=Math.max(0,Math.min(1,+t[5]))),r},e=>gu(gc[e.toLowerCase()],6),e=>"transparent"===e?{mode:"rgb",r:0,g:0,b:0,alpha:0}:void 0,"srgb"],serialize:"srgb",interpolate:{r:gV,g:gV,b:gV,alpha:{use:gV,fixup:gW}},gamut:!0,white:{r:1,g:1,b:1},black:{r:0,g:0,b:0}},gY=(e=0)=>Math.pow(Math.abs(e),563/256)*Math.sign(e),gJ=e=>{let t=gY(e.r),r=gY(e.g),n=gY(e.b),i={mode:"xyz65",x:.5766690429101305*t+.1855582379065463*r+.1882286462349947*n,y:.297344975250536*t+.6273635662554661*r+.0752914584939979*n,z:.0270313613864123*t+.0706888525358272*r+.9913375368376386*n};return void 0!==e.alpha&&(i.alpha=e.alpha),i},gK=e=>Math.pow(Math.abs(e),256/563)*Math.sign(e),gX=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i={mode:"a98",r:gK(2.0415879038107465*e-.5650069742788597*t-.3447313507783297*r),g:gK(-.9692436362808798*e+1.8759675015077206*t+.0415550574071756*r),b:gK(.0134442806320312*e-.1183623922310184*t+1.0151749943912058*r)};return void 0!==n&&(i.alpha=n),i},gZ=(e=0)=>{let t=Math.abs(e);return t<=.04045?e/12.92:(Math.sign(e)||1)*Math.pow((t+.055)/1.055,2.4)},g$=({r:e,g:t,b:r,alpha:n})=>{let i={mode:"lrgb",r:gZ(e),g:gZ(t),b:gZ(r)};return void 0!==n&&(i.alpha=n),i},g0=e=>{let{r:t,g:r,b:n,alpha:i}=g$(e),a={mode:"xyz65",x:.4123907992659593*t+.357584339383878*r+.1804807884018343*n,y:.2126390058715102*t+.715168678767756*r+.0721923153607337*n,z:.0193308187155918*t+.119194779794626*r+.9505321522496607*n};return void 0!==i&&(a.alpha=i),a},g1=(e=0)=>{let t=Math.abs(e);return t>.0031308?(Math.sign(e)||1)*(1.055*Math.pow(t,1/2.4)-.055):12.92*e},g2=({r:e,g:t,b:r,alpha:n},i="rgb")=>{let a={mode:i,r:g1(e),g:g1(t),b:g1(r)};return void 0!==n&&(a.alpha=n),a},g3=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=g2({r:3.2409699419045226*e-1.537383177570094*t-.4986107602930034*r,g:-.9692436362808796*e+1.8759675015077204*t+.0415550574071756*r,b:.0556300796969936*e-.2039769588889765*t+1.0569715142428784*r});return void 0!==n&&(i.alpha=n),i},g4={...gq,mode:"a98",parse:["a98-rgb"],serialize:"a98-rgb",fromMode:{rgb:e=>gX(g0(e)),xyz65:gX},toMode:{rgb:e=>g3(gJ(e)),xyz65:gJ}},g5=e=>(e%=360)<0?e+360:e,g9=e=>{let t;return t=e=>180>=Math.abs(e)?e:e-360*Math.sign(e),e.map((r,n,i)=>{if(void 0===r)return r;let a=g5(r);return 0===n||void 0===e[n-1]?a:t(a-g5(i[n-1]))}).reduce((e,t)=>(e.length&&void 0!==t&&void 0!==e[e.length-1]?e.push(t+e[e.length-1]):e.push(t),e),[])},g8=[-.14861,1.78277,-.29227,-.90649,1.97294,0],g6=Math.PI/180,g7=180/Math.PI,me=g8["3"]*g8["4"],mt=g8["1"]*g8["4"],mr=g8["1"]*g8["2"]-g8["0"]*g8["3"],mn=(e,t)=>{if(void 0===e.h||void 0===t.h||!e.s||!t.s)return 0;let r=g5(e.h),n=Math.sin((g5(t.h)-r+360)/2*Math.PI/180);return 2*Math.sqrt(e.s*t.s)*n},mi=(e,t)=>{if(void 0===e.h||void 0===t.h||!e.c||!t.c)return 0;let r=g5(e.h),n=Math.sin((g5(t.h)-r+360)/2*Math.PI/180);return 2*Math.sqrt(e.c*t.c)*n},ma=e=>{let t=e.reduce((e,t)=>{if(void 0!==t){let r=t*Math.PI/180;e.sin+=Math.sin(r),e.cos+=Math.cos(r)}return e},{sin:0,cos:0}),r=180*Math.atan2(t.sin,t.cos)/Math.PI;return r<0?360+r:r},ms={mode:"cubehelix",channels:["h","s","l","alpha"],parse:["--cubehelix"],serialize:"--cubehelix",ranges:{h:[0,360],s:[0,4.614],l:[0,1]},fromMode:{rgb:({r:e,g:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=(mr*r+e*me-t*mt)/(mr+me-mt),a=r-i,s=(g8["4"]*(t-i)-g8["2"]*a)/g8["3"],o={mode:"cubehelix",l:i,s:0===i||1===i?void 0:Math.sqrt(a*a+s*s)/(g8["4"]*i*(1-i))};return o.s&&(o.h=Math.atan2(s,a)*g7-120),void 0!==n&&(o.alpha=n),o}},toMode:{rgb:({h:e,s:t,l:r,alpha:n})=>{let i={mode:"rgb"};void 0===r&&(r=0);let a=void 0===t?0:t*r*(1-r),s=Math.cos(e=(void 0===e?0:e+120)*g6),o=Math.sin(e);return i.r=r+a*(g8["0"]*s+g8["1"]*o),i.g=r+a*(g8["2"]*s+g8["3"]*o),i.b=r+a*(g8["4"]*s+g8["5"]*o),void 0!==n&&(i.alpha=n),i}},interpolate:{h:{use:gV,fixup:g9},s:gV,l:gV,alpha:{use:gV,fixup:gW}},difference:{h:mn},average:{h:ma}},mo=({l:e,a:t,b:r,alpha:n},i="lch")=>{void 0===t&&(t=0),void 0===r&&(r=0);let a=Math.sqrt(t*t+r*r),s={mode:i,l:e,c:a};return a&&(s.h=g5(180*Math.atan2(r,t)/Math.PI)),void 0!==n&&(s.alpha=n),s},ml=({l:e,c:t,h:r,alpha:n},i="lab")=>{void 0===r&&(r=0);let a={mode:i,l:e,a:t?t*Math.cos(r/180*Math.PI):0,b:t?t*Math.sin(r/180*Math.PI):0};return void 0!==n&&(a.alpha=n),a},mu={X:.3457/.3585,Y:1,Z:.8251046025104602},mc={X:.3127/.329,Y:1,Z:1.0890577507598784},md=e=>Math.pow(e,3)>.008856451679035631?Math.pow(e,3):(116*e-16)/903.2962962962963,mh=({l:e,a:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=(e+16)/116,a=t/500+i,s=i-r/200,o={mode:"xyz65",x:md(a)*mc.X,y:md(i)*mc.Y,z:md(s)*mc.Z};return void 0!==n&&(o.alpha=n),o},mp=e=>g3(mh(e)),mf=e=>e>.008856451679035631?Math.cbrt(e):(903.2962962962963*e+16)/116,mA=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=mf(e/mc.X),a=mf(t/mc.Y),s={mode:"lab65",l:116*a-16,a:500*(i-a),b:200*(a-mf(r/mc.Z))};return void 0!==n&&(s.alpha=n),s},mg=e=>{let t=mA(g0(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t},mm=26/180*Math.PI,mv=Math.cos(mm),mb=Math.sin(mm),my=100/Math.log(1.39),mw=({l:e,c:t,h:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i={mode:"lab65",l:(Math.exp(e/my)-1)/.0039},a=(Math.exp(.0435*t*1)-1)/.075,s=a*Math.cos(r/180*Math.PI-mm),o=a*Math.sin(r/180*Math.PI-mm);return i.a=s*mv-o/.83*mb,i.b=s*mb+o/.83*mv,void 0!==n&&(i.alpha=n),i},mx=({l:e,a:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=t*mv+r*mb,a=.83*(r*mv-t*mb),s={mode:"dlch",l:my/1*Math.log(1+.0039*e),c:Math.log(1+.075*Math.sqrt(i*i+a*a))/.0435};return s.c&&(s.h=g5((Math.atan2(a,i)+mm)/Math.PI*180)),void 0!==n&&(s.alpha=n),s},mC=e=>mw(mo(e,"dlch")),mE=e=>ml(mx(e),"dlab"),mS=RegExp(`^hsla?\\(\\s*${gg}${gm}${gp}${gm}${gp}\\s*(?:,\\s*${gf}\\s*)?\\)$`),mM={mode:"hsl",toMode:{rgb:function({h:e,s:t,l:r,alpha:n}){let i;e=g5(void 0!==e?e:0),void 0===t&&(t=0),void 0===r&&(r=0);let a=r+t*(r<.5?r:1-r),s=a-(a-r)*2*Math.abs(e/60%2-1);switch(Math.floor(e/60)){case 0:i={r:a,g:s,b:2*r-a};break;case 1:i={r:s,g:a,b:2*r-a};break;case 2:i={r:2*r-a,g:a,b:s};break;case 3:i={r:2*r-a,g:s,b:a};break;case 4:i={r:s,g:2*r-a,b:a};break;case 5:i={r:a,g:2*r-a,b:s};break;default:i={r:2*r-a,g:2*r-a,b:2*r-a}}return i.mode="rgb",void 0!==n&&(i.alpha=n),i}},fromMode:{rgb:function({r:e,g:t,b:r,alpha:n}){void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=Math.max(e,t,r),a=Math.min(e,t,r),s={mode:"hsl",s:i===a?0:(i-a)/(1-Math.abs(i+a-1)),l:.5*(i+a)};return i-a!=0&&(s.h=(i===e?(t-r)/(i-a)+(t<r)*6:i===t?(r-e)/(i-a)+2:(e-t)/(i-a)+4)*60),void 0!==n&&(s.alpha=n),s}},channels:["h","s","l","alpha"],ranges:{h:[0,360]},gamut:"rgb",parse:[function(e,t){if(!t||"hsl"!==t[0]&&"hsla"!==t[0])return;let r={mode:"hsl"},[,n,i,a,s]=t;if(n.type!==gD){if(n.type===gP)return;r.h=n.value}if(i.type!==gD){if("hue"===i.type)return;r.s=i.value/100}if(a.type!==gD){if("hue"===a.type)return;r.l=a.value/100}return s.type!==gD&&(r.alpha=Math.min(1,Math.max(0,s.type===gR?s.value:s.value/100))),r},e=>{let t=e.match(mS);if(!t)return;let r={mode:"hsl"};return void 0!==t[3]?r.h=+t[3]:void 0!==t[1]&&void 0!==t[2]&&(r.h=((e,t)=>{switch(t){case"deg":return+e;case"rad":return e/Math.PI*180;case"grad":return e/10*9;case"turn":return 360*e}})(t[1],t[2])),void 0!==t[4]&&(r.s=Math.min(Math.max(0,t[4]/100),1)),void 0!==t[5]&&(r.l=Math.min(Math.max(0,t[5]/100),1)),void 0!==t[6]?r.alpha=Math.max(0,Math.min(1,t[6]/100)):void 0!==t[7]&&(r.alpha=Math.max(0,Math.min(1,+t[7]))),r}],serialize:e=>`hsl(${void 0!==e.h?e.h:"none"} ${void 0!==e.s?100*e.s+"%":"none"} ${void 0!==e.l?100*e.l+"%":"none"}${e.alpha<1?` / ${e.alpha}`:""})`,interpolate:{h:{use:gV,fixup:g9},s:gV,l:gV,alpha:{use:gV,fixup:gW}},difference:{h:mn},average:{h:ma}};function mI({h:e,s:t,v:r,alpha:n}){let i;e=g5(void 0!==e?e:0),void 0===t&&(t=0),void 0===r&&(r=0);let a=Math.abs(e/60%2-1);switch(Math.floor(e/60)){case 0:i={r:r,g:r*(1-t*a),b:r*(1-t)};break;case 1:i={r:r*(1-t*a),g:r,b:r*(1-t)};break;case 2:i={r:r*(1-t),g:r,b:r*(1-t*a)};break;case 3:i={r:r*(1-t),g:r*(1-t*a),b:r};break;case 4:i={r:r*(1-t*a),g:r*(1-t),b:r};break;case 5:i={r:r,g:r*(1-t),b:r*(1-t*a)};break;default:i={r:r*(1-t),g:r*(1-t),b:r*(1-t)}}return i.mode="rgb",void 0!==n&&(i.alpha=n),i}function mB({r:e,g:t,b:r,alpha:n}){void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=Math.max(e,t,r),a=Math.min(e,t,r),s={mode:"hsv",s:0===i?0:1-a/i,v:i};return i-a!=0&&(s.h=(i===e?(t-r)/(i-a)+(t<r)*6:i===t?(r-e)/(i-a)+2:(e-t)/(i-a)+4)*60),void 0!==n&&(s.alpha=n),s}let mT={mode:"hsv",toMode:{rgb:mI},parse:["--hsv"],serialize:"--hsv",fromMode:{rgb:mB},channels:["h","s","v","alpha"],ranges:{h:[0,360]},gamut:"rgb",interpolate:{h:{use:gV,fixup:g9},s:gV,v:gV,alpha:{use:gV,fixup:gW}},difference:{h:mn},average:{h:ma}};function mk(e){if(e<0)return 0;let t=Math.pow(e,.012683313515655966);return 1e4*Math.pow(Math.max(0,t-.8359375)/(18.8515625-18.6875*t),6.277394636015326)}function m_(e){if(e<0)return 0;let t=Math.pow(e/1e4,.1593017578125);return Math.pow((.8359375+18.8515625*t)/(1+18.6875*t),78.84375)}let mR=e=>Math.max(e/203,0),mP=({i:e,t,p:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=mk(e+.008609037037932761*t+.11102962500302593*r),a=mk(e-.00860903703793275*t-.11102962500302599*r),s=mk(e+.5600313357106791*t-.32062717498731885*r),o={mode:"xyz65",x:mR(2.070152218389422*i-1.3263473389671556*a+.2066510476294051*s),y:mR(.3647385209748074*i+.680566024947227*a-.0453045459220346*s),z:mR(-.049747207535812*i-.0492609666966138*a+1.1880659249923042*s)};return void 0!==n&&(o.alpha=n),o},mD=(e=0)=>Math.max(203*e,0),mL=({x:e,y:t,z:r,alpha:n})=>{let i=mD(e),a=mD(t),s=mD(r),o=m_(.3592832590121217*i+.6976051147779502*a-.0358915932320289*s),l=m_(-.1920808463704995*i+1.1004767970374323*a+.0753748658519118*s),u=m_(.0070797844607477*i+.0748396662186366*a+.8433265453898765*s),c={mode:"itp",i:.5*o+.5*l,t:1.61376953125*o-3.323486328125*l+1.709716796875*u,p:4.378173828125*o-4.24560546875*l-.132568359375*u};return void 0!==n&&(c.alpha=n),c},mF=e=>{if(e<0)return 0;let t=Math.pow(e/1e4,.1593017578125);return Math.pow((.8359375+18.8515625*t)/(1+18.6875*t),134.03437499999998)},mO=(e=0)=>Math.max(203*e,0),mN=({x:e,y:t,z:r,alpha:n})=>{e=mO(e),t=mO(t);let i=1.15*e-.15*(r=mO(r)),a=.66*t+.34*e,s=mF(.41478972*i+.579999*a+.014648*r),o=mF(-.20151*i+1.120649*a+.0531008*r),l=mF(-.0166008*i+.2648*a+.6684799*r),u=(s+o)/2,c={mode:"jab",j:.44*u/(1-.56*u)-16295499532821565e-27,a:3.524*s-4.066708*o+.542708*l,b:.199076*s+1.096799*o-1.295875*l};return void 0!==n&&(c.alpha=n),c},mQ=e=>{if(e<0)return 0;let t=Math.pow(e,.007460772656268216);return 1e4*Math.pow((.8359375-t)/(18.6875*t-18.8515625),6.277394636015326)},mU=({j:e,a:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=(e+16295499532821565e-27)/(.44+.56*(e+16295499532821565e-27)),a=mQ(i+.13860504*t+.058047316*r),s=mQ(i-.13860504*t-.058047316*r),o=mQ(i-.096019242*t-.8118919*r),l={mode:"xyz65",x:(1.661373024652174*a-.914523081304348*s+.23136208173913045*o)/203,y:(-.3250758611844533*a+1.571847026732543*s-.21825383453227928*o)/203,z:(-.090982811*a-.31272829*s+1.5227666*o)/203};return void 0!==n&&(l.alpha=n),l},mz=e=>{let t=mN(g0(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t},mH=e=>g3(mU(e)),mG=({j:e,a:t,b:r,alpha:n})=>{void 0===t&&(t=0),void 0===r&&(r=0);let i=Math.sqrt(t*t+r*r),a={mode:"jch",j:e,c:i};return i&&(a.h=g5(180*Math.atan2(r,t)/Math.PI)),void 0!==n&&(a.alpha=n),a},mj=({j:e,c:t,h:r,alpha:n})=>{void 0===r&&(r=0);let i={mode:"jab",j:e,a:t?t*Math.cos(r/180*Math.PI):0,b:t?t*Math.sin(r/180*Math.PI):0};return void 0!==n&&(i.alpha=n),i},mV=e=>Math.pow(e,3)>.008856451679035631?Math.pow(e,3):(116*e-16)/903.2962962962963,mW=({l:e,a:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=(e+16)/116,a=t/500+i,s=i-r/200,o={mode:"xyz50",x:mV(a)*mu.X,y:mV(i)*mu.Y,z:mV(s)*mu.Z};return void 0!==n&&(o.alpha=n),o},mq=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=g2({r:3.1341359569958707*e-1.6173863321612538*t-.4906619460083532*r,g:-.978795502912089*e+1.916254567259524*t+.03344273116131949*r,b:.07195537988411677*e-.2289768264158322*t+1.405386058324125*r});return void 0!==n&&(i.alpha=n),i},mY=e=>mq(mW(e)),mJ=e=>{let{r:t,g:r,b:n,alpha:i}=g$(e),a={mode:"xyz50",x:.436065742824811*t+.3851514688337912*r+.14307845442264197*n,y:.22249319175623702*t+.7168870538238823*r+.06061979053616537*n,z:.013923904500943465*t+.09708128566574634*r+.7140993584005155*n};return void 0!==i&&(a.alpha=i),a},mK=e=>e>.008856451679035631?Math.cbrt(e):(903.2962962962963*e+16)/116,mX=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=mK(e/mu.X),a=mK(t/mu.Y),s={mode:"lab",l:116*a-16,a:500*(i-a),b:200*(a-mK(r/mu.Z))};return void 0!==n&&(s.alpha=n),s},mZ=e=>{let t=mX(mJ(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t},m$={mode:"lab",toMode:{xyz50:mW,rgb:mY},fromMode:{xyz50:mX,rgb:mZ},channels:["l","a","b","alpha"],ranges:{l:[0,100],a:[-125,125],b:[-125,125]},parse:[function(e,t){if(!t||"lab"!==t[0])return;let r={mode:"lab"},[,n,i,a,s]=t;if("hue"!==n.type&&"hue"!==i.type&&"hue"!==a.type)return n.type!==gD&&(r.l=Math.min(Math.max(0,n.value),100)),i.type!==gD&&(r.a=i.type===gR?i.value:125*i.value/100),a.type!==gD&&(r.b=a.type===gR?a.value:125*a.value/100),s.type!==gD&&(r.alpha=Math.min(1,Math.max(0,s.type===gR?s.value:s.value/100))),r}],serialize:e=>`lab(${void 0!==e.l?e.l:"none"} ${void 0!==e.a?e.a:"none"} ${void 0!==e.b?e.b:"none"}${e.alpha<1?` / ${e.alpha}`:""})`,interpolate:{l:gV,a:gV,b:gV,alpha:{use:gV,fixup:gW}}},m0={...m$,mode:"lab65",parse:["--lab-d65"],serialize:"--lab-d65",toMode:{xyz65:mh,rgb:mp},fromMode:{xyz65:mA,rgb:mg},ranges:{l:[0,100],a:[-125,125],b:[-125,125]}},m1={mode:"lch",toMode:{lab:ml,rgb:e=>mY(ml(e))},fromMode:{rgb:e=>mo(mZ(e)),lab:mo},channels:["l","c","h","alpha"],ranges:{l:[0,100],c:[0,150],h:[0,360]},parse:[function(e,t){if(!t||"lch"!==t[0])return;let r={mode:"lch"},[,n,i,a,s]=t;if(n.type!==gD){if("hue"===n.type)return;r.l=Math.min(Math.max(0,n.value),100)}if(i.type!==gD&&(r.c=Math.max(0,i.type===gR?i.value:150*i.value/100)),a.type!==gD){if(a.type===gP)return;r.h=a.value}return s.type!==gD&&(r.alpha=Math.min(1,Math.max(0,s.type===gR?s.value:s.value/100))),r}],serialize:e=>`lch(${void 0!==e.l?e.l:"none"} ${void 0!==e.c?e.c:"none"} ${void 0!==e.h?e.h:"none"}${e.alpha<1?` / ${e.alpha}`:""})`,interpolate:{h:{use:gV,fixup:g9},c:gV,l:gV,alpha:{use:gV,fixup:gW}},difference:{h:mi},average:{h:ma}},m2={...m1,mode:"lch65",parse:["--lch-d65"],serialize:"--lch-d65",toMode:{lab65:e=>ml(e,"lab65"),rgb:e=>mp(ml(e,"lab65"))},fromMode:{rgb:e=>mo(mg(e),"lch65"),lab65:e=>mo(e,"lch65")},ranges:{l:[0,100],c:[0,150],h:[0,360]}},m3=({l:e,u:t,v:r,alpha:n})=>{void 0===t&&(t=0),void 0===r&&(r=0);let i=Math.sqrt(t*t+r*r),a={mode:"lchuv",l:e,c:i};return i&&(a.h=g5(180*Math.atan2(r,t)/Math.PI)),void 0!==n&&(a.alpha=n),a},m4=({l:e,c:t,h:r,alpha:n})=>{void 0===r&&(r=0);let i={mode:"luv",l:e,u:t?t*Math.cos(r/180*Math.PI):0,v:t?t*Math.sin(r/180*Math.PI):0};return void 0!==n&&(i.alpha=n),i},m5=(e,t,r)=>4*e/(e+15*t+3*r),m9=(e,t,r)=>9*t/(e+15*t+3*r),m8=m5(mu.X,mu.Y,mu.Z),m6=m9(mu.X,mu.Y,mu.Z),m7=({x:e,y:t,z:r,alpha:n})=>{let i;void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let a=(i=t/mu.Y)<=.008856451679035631?903.2962962962963*i:116*Math.cbrt(i)-16,s=m5(e,t,r),o=m9(e,t,r);isFinite(s)&&isFinite(o)?(s=13*a*(s-m8),o=13*a*(o-m6)):a=s=o=0;let l={mode:"luv",l:a,u:s,v:o};return void 0!==n&&(l.alpha=n),l},ve=(H=mu.X,4*H/(H+15*mu.Y+3*mu.Z)),vt=(G=mu.X,9*(j=mu.Y)/(G+15*j+3*mu.Z)),vr=({l:e,u:t,v:r,alpha:n})=>{if(void 0===e&&(e=0),0===e)return{mode:"xyz50",x:0,y:0,z:0};void 0===t&&(t=0),void 0===r&&(r=0);let i=t/(13*e)+ve,a=r/(13*e)+vt,s=mu.Y*(e<=8?e/903.2962962962963:Math.pow((e+16)/116,3)),o={mode:"xyz50",x:9*i*s/(4*a),y:s,z:s*(12-3*i-20*a)/(4*a)};return void 0!==n&&(o.alpha=n),o},vn={...gq,mode:"lrgb",toMode:{rgb:g2},fromMode:{rgb:g$},parse:["srgb-linear"],serialize:"srgb-linear"},vi=({r:e,g:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=Math.cbrt(.412221469470763*e+.5363325372617348*t+.0514459932675022*r),a=Math.cbrt(.2119034958178252*e+.6806995506452344*t+.1073969535369406*r),s=Math.cbrt(.0883024591900564*e+.2817188391361215*t+.6299787016738222*r),o={mode:"oklab",l:.210454268309314*i+.7936177747023054*a-.0040720430116193*s,a:1.9779985324311684*i-2.42859224204858*a+.450593709617411*s,b:.0259040424655478*i+.7827717124575296*a-.8086757549230774*s};return void 0!==n&&(o.alpha=n),o},va=e=>{let t=vi(g$(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t},vs=({l:e,a:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=Math.pow(e+.3963377773761749*t+.2158037573099136*r,3),a=Math.pow(e-.1055613458156586*t-.0638541728258133*r,3),s=Math.pow(e-.0894841775298119*t-1.2914855480194092*r,3),o={mode:"lrgb",r:4.076741636075957*i-3.3077115392580616*a+.2309699031821044*s,g:-1.2684379732850317*i+2.6097573492876887*a-.3413193760026573*s,b:-.0041960761386756*i-.7034186179359362*a+1.7076146940746117*s};return void 0!==n&&(o.alpha=n),o},vo=e=>g2(vs(e));function vl(e){return .5*(1.206/1.03*e-.206+Math.sqrt((1.206/1.03*e-.206)*(1.206/1.03*e-.206)+1.206/1.03*.12*e))}function vu(e){return(e*e+.206*e)/(1.206/1.03*(e+.03))}function vc(e,t){let r,n,i,a,s,o,l,u,c,d,h,p,f,A,g,m,v,b=(-1.88170328*e-.80936493*t>1?(r=1.19086277,n=1.76576728,i=.59662641,a=.75515197,s=.56771245,o=4.0767416621,l=-3.3077115913,u=.2309699292):1.81444104*e-1.19445276*t>1?(r=.73956515,n=-.45954404,i=.08285427,a=.1254107,s=.14503204,o=-1.2684380046,l=2.6097574011,u=-.3413193965):(r=1.35733652,n=-.00915799,i=-1.1513021,a=-.50559606,s=.00692167,o=-.0041960863,l=-.7034186147,u=1.707614701),c=r+n*e+i*t+a*e*e+s*e*t,d=.3963377774*e+.2158037573*t,h=-.1055613458*e-.0638541728*t,p=-.0894841775*e-1.291485548*t,m=o*((f=1+c*d)*f*f)+l*((A=1+c*h)*A*A)+u*((g=1+c*p)*g*g),c-=m*(v=3*d*f*f*o+3*h*A*A*l+3*p*g*g*u)/(v*v-.5*m*(6*d*d*f*o+6*h*h*A*l+6*p*p*g*u))),y=vs({l:1,a:b*e,b:b*t}),w=Math.cbrt(1/Math.max(y.r,y.g,y.b));return[w,w*b]}function vd(e,t,r=null){r||(r=vc(e,t));let n=r[0],i=r[1];return[i/n,i/(1-n)]}function vh(e,t,r){let n=vc(t,r),i=function(e,t,r,n,i,a=null){let s;if(a||(a=vc(e,t)),(r-i)*a[1]-(a[0]-i)*1<=0)s=a[1]*i/(+a[0]+a[1]*(i-r));else{s=a[1]*(i-1)/(+(a[0]-1)+a[1]*(i-r));{let n=r-i,a=.3963377774*e+.2158037573*t,o=-.1055613458*e-.0638541728*t,l=-.0894841775*e-1.291485548*t,u=n+ +a,c=n+ +o,d=n+ +l;{let e=i*(1-s)+s*r,t=+s,n=e+t*a,h=e+t*o,p=e+t*l,f=n*n*n,A=h*h*h,g=p*p*p,m=3*u*n*n,v=3*c*h*h,b=3*d*p*p,y=6*u*u*n,w=6*c*c*h,x=6*d*d*p,C=4.0767416621*f-3.3077115913*A+.2309699292*g-1,E=4.0767416621*m-3.3077115913*v+.2309699292*b,S=E/(E*E-.5*C*(4.0767416621*y-3.3077115913*w+.2309699292*x)),M=-C*S,I=-1.2684380046*f+2.6097574011*A-.3413193965*g-1,B=-1.2684380046*m+2.6097574011*v-.3413193965*b,T=B/(B*B-.5*I*(-1.2684380046*y+2.6097574011*w-.3413193965*x)),k=-I*T,_=-.0041960863*f-.7034186147*A+1.707614701*g-1,R=-.0041960863*m-.7034186147*v+1.707614701*b,P=R/(R*R-.5*_*(-.0041960863*y-.7034186147*w+1.707614701*x)),D=-_*P;s+=Math.min(M=S>=0?M:1e6,Math.min(k=T>=0?k:1e6,D=P>=0?D:1e6))}}}return s}(t,r,e,0,e,n),a=vd(t,r,n),s=.11516993+1/(7.4477897+4.1590124*r+t*(-2.19557347+1.75198401*r+t*(-2.13704948-10.02301043*r+t*(-4.24894561+5.38770819*r+4.69891013*t)))),o=.11239642+1/(1.6132032-.68124379*r+t*(.40370612+.90148123*r+t*(-.27087943+.6122399*r+t*(.00299215-.45399568*r-.14661872*t)))),l=i/Math.min(e*a[0],(1-e)*a[1]),u=e*s,c=(1-e)*o,d=.9*l*Math.sqrt(Math.sqrt(1/(1/(u*u*u*u)+1/(c*c*c*c))));return[Math.sqrt(1/(1/((u=.4*e)*u)+1/((c=(1-e)*.8)*c))),d,i]}function vp(e){let t,r=void 0!==e.l?e.l:0,n=void 0!==e.a?e.a:0,i=void 0!==e.b?e.b:0,a={mode:"okhsl",l:vl(r)};void 0!==e.alpha&&(a.alpha=e.alpha);let s=Math.sqrt(n*n+i*i);if(!s)return a.s=0,a;let[o,l,u]=vh(r,n/s,i/s);if(s<l){let e=.8*o;t=(s-0)/(e+(1-e/l)*(s-0))*.8}else{let e=.2*l*l*1.5625/o;t=.8+.2*((s-l)/(e+(1-e/(u-l))*(s-l)))}return t&&(a.s=t,a.h=g5(180*Math.atan2(i,n)/Math.PI)),a}function vf(e){let t,r,n,i,a=void 0!==e.h?e.h:0,s=void 0!==e.s?e.s:0,o=void 0!==e.l?e.l:0,l={mode:"oklab",l:vu(o)};if(void 0!==e.alpha&&(l.alpha=e.alpha),!s||1===o)return l.a=l.b=0,l;let u=Math.cos(a/180*Math.PI),c=Math.sin(a/180*Math.PI),[d,h,p]=vh(l.l,u,c);s<.8?(t=1.25*s,r=0,i=1-(n=.8*d)/h):(t=5*(s-.8),r=h,i=1-(n=.2*h*h*1.5625/d)/(p-h));let f=r+t*n/(1-i*t);return l.a=f*u,l.b=f*c,l}let vA={...mM,mode:"okhsl",channels:["h","s","l","alpha"],parse:["--okhsl"],serialize:"--okhsl",fromMode:{oklab:vp,rgb:e=>vp(va(e))},toMode:{oklab:vf,rgb:e=>vo(vf(e))}};function vg(e){let t=void 0!==e.l?e.l:0,r=void 0!==e.a?e.a:0,n=void 0!==e.b?e.b:0,i=Math.sqrt(r*r+n*n),a=i?r/i:1,s=i?n/i:1,[o,l]=vd(a,s),u=l/(i+t*l),c=u*t,d=u*i,h=vu(c),p=d*h/c,f=vs({l:h,a:a*p,b:s*p}),A=Math.cbrt(1/Math.max(f.r,f.g,f.b,0));t/=A;let g={mode:"okhsv",s:(i=i/A*vl(t)/t)?(.5+l)*d/(.5*l+l*(1-.5/o)*d):0,v:(t=vl(t))?t/c:0};return g.s&&(g.h=g5(180*Math.atan2(n,r)/Math.PI)),void 0!==e.alpha&&(g.alpha=e.alpha),g}function vm(e){let t={mode:"oklab"};void 0!==e.alpha&&(t.alpha=e.alpha);let r=void 0!==e.h?e.h:0,n=void 0!==e.s?e.s:0,i=void 0!==e.v?e.v:0,a=Math.cos(r/180*Math.PI),s=Math.sin(r/180*Math.PI),[o,l]=vd(a,s),u=1-.5/o,c=1-.5*n/(.5+l-l*u*n),d=n*l*.5/(.5+l-l*u*n),h=vu(c),p=d*h/c,f=vs({l:h,a:a*p,b:s*p}),A=Math.cbrt(1/Math.max(f.r,f.g,f.b,0)),g=vu(i*c),m=d*g/c;return t.l=g*A,t.a=m*a*A,t.b=m*s*A,t}let vv={...mT,mode:"okhsv",channels:["h","s","v","alpha"],parse:["--okhsv"],serialize:"--okhsv",fromMode:{oklab:vg,rgb:e=>vg(va(e))},toMode:{oklab:vm,rgb:e=>vo(vm(e))}},vb={...m$,mode:"oklab",toMode:{lrgb:vs,rgb:vo},fromMode:{lrgb:vi,rgb:va},ranges:{l:[0,1],a:[-.4,.4],b:[-.4,.4]},parse:[function(e,t){if(!t||"oklab"!==t[0])return;let r={mode:"oklab"},[,n,i,a,s]=t;if("hue"!==n.type&&"hue"!==i.type&&"hue"!==a.type)return n.type!==gD&&(r.l=Math.min(Math.max(0,n.type===gR?n.value:n.value/100),1)),i.type!==gD&&(r.a=i.type===gR?i.value:.4*i.value/100),a.type!==gD&&(r.b=a.type===gR?a.value:.4*a.value/100),s.type!==gD&&(r.alpha=Math.min(1,Math.max(0,s.type===gR?s.value:s.value/100))),r}],serialize:e=>`oklab(${void 0!==e.l?e.l:"none"} ${void 0!==e.a?e.a:"none"} ${void 0!==e.b?e.b:"none"}${e.alpha<1?` / ${e.alpha}`:""})`},vy={...m1,mode:"oklch",toMode:{oklab:e=>ml(e,"oklab"),rgb:e=>vo(ml(e,"oklab"))},fromMode:{rgb:e=>mo(va(e),"oklch"),oklab:e=>mo(e,"oklch")},parse:[function(e,t){if(!t||"oklch"!==t[0])return;let r={mode:"oklch"},[,n,i,a,s]=t;if(n.type!==gD){if("hue"===n.type)return;r.l=Math.min(Math.max(0,n.type===gR?n.value:n.value/100),1)}if(i.type!==gD&&(r.c=Math.max(0,i.type===gR?i.value:.4*i.value/100)),a.type!==gD){if(a.type===gP)return;r.h=a.value}return s.type!==gD&&(r.alpha=Math.min(1,Math.max(0,s.type===gR?s.value:s.value/100))),r}],serialize:e=>`oklch(${void 0!==e.l?e.l:"none"} ${void 0!==e.c?e.c:"none"} ${void 0!==e.h?e.h:"none"}${e.alpha<1?` / ${e.alpha}`:""})`,ranges:{l:[0,1],c:[0,.4],h:[0,360]}},vw=e=>{let{r:t,g:r,b:n,alpha:i}=g$(e),a={mode:"xyz65",x:.486570948648216*t+.265667693169093*r+.1982172852343625*n,y:.2289745640697487*t+.6917385218365062*r+.079286914093745*n,z:0*t+.0451133818589026*r+1.043944368900976*n};return void 0!==i&&(a.alpha=i),a},vx=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=g2({r:2.4934969119414263*e-.9313836179191242*t-.402710784450717*r,g:-.8294889695615749*e+1.7626640603183465*t+.0236246858419436*r,b:.0358458302437845*e-.0761723892680418*t+.9568845240076871*r},"p3");return void 0!==n&&(i.alpha=n),i},vC={...gq,mode:"p3",parse:["display-p3"],serialize:"display-p3",fromMode:{rgb:e=>vx(g0(e)),xyz65:vx},toMode:{rgb:e=>g3(vw(e)),xyz65:vw}},vE=e=>{let t=Math.abs(e);return t>=1/512?Math.sign(e)*Math.pow(t,1/1.8):16*e},vS=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i={mode:"prophoto",r:vE(1.3457868816471585*e-.2555720873797946*t-.0511018649755453*r),g:vE(-.5446307051249019*e+1.5082477428451466*t+.0205274474364214*r),b:vE(0*e+0*t+1.2119675456389452*r)};return void 0!==n&&(i.alpha=n),i},vM=(e=0)=>{let t=Math.abs(e);return t>=16/512?Math.sign(e)*Math.pow(t,1.8):e/16},vI=e=>{let t=vM(e.r),r=vM(e.g),n=vM(e.b),i={mode:"xyz50",x:.7977666449006423*t+.1351812974005331*r+.0313477341283922*n,y:.2880748288194013*t+.7118352342418731*r+899369387256e-16*n,z:0*t+0*r+.8251046025104602*n};return void 0!==e.alpha&&(i.alpha=e.alpha),i},vB={...gq,mode:"prophoto",parse:["prophoto-rgb"],serialize:"prophoto-rgb",fromMode:{xyz50:vS,rgb:e=>vS(mJ(e))},toMode:{xyz50:vI,rgb:e=>mq(vI(e))}},vT=e=>{let t=Math.abs(e);return t>.018053968510807?(Math.sign(e)||1)*(1.09929682680944*Math.pow(t,.45)-(1.09929682680944-1)):4.5*e},vk=({x:e,y:t,z:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i={mode:"rec2020",r:vT(1.7166511879712683*e-.3556707837763925*t-.2533662813736599*r),g:vT(-.6666843518324893*e+1.6164812366349395*t+.0157685458139111*r),b:vT(.0176398574453108*e-.0427706132578085*t+.9421031212354739*r)};return void 0!==n&&(i.alpha=n),i},v_=(e=0)=>{let t=Math.abs(e);return t<.08124285829863151?e/4.5:(Math.sign(e)||1)*Math.pow((t+1.09929682680944-1)/1.09929682680944,1/.45)},vR=e=>{let t=v_(e.r),r=v_(e.g),n=v_(e.b),i={mode:"xyz65",x:.6369580483012911*t+.1446169035862083*r+.1688809751641721*n,y:.262700212011267*t+.6779980715188708*r+.059301716469862*n,z:0*t+.0280726930490874*r+1.0609850577107909*n};return void 0!==e.alpha&&(i.alpha=e.alpha),i},vP={...gq,mode:"rec2020",fromMode:{xyz65:vk,rgb:e=>vk(g0(e))},toMode:{xyz65:vR,rgb:e=>g3(vR(e))},parse:["rec2020"],serialize:"rec2020"},vD=Math.cbrt(.0037930732552754493),vL=e=>Math.cbrt(e)-vD,vF=e=>Math.pow(e+vD,3),vO={mode:"xyb",channels:["x","y","b","alpha"],parse:["--xyb"],serialize:"--xyb",toMode:{rgb:({x:e,y:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=vF(e+t)-.0037930732552754493,a=vF(t-e)-.0037930732552754493,s=vF(r+t)-.0037930732552754493,o=g2({r:11.031566904639861*i-9.866943908131562*a-.16462299650829934*s,g:-3.2541473810744237*i+4.418770377582723*a-.16462299650829934*s,b:-3.6588512867136815*i+2.7129230459360922*a+1.9459282407775895*s});return void 0!==n&&(o.alpha=n),o}},fromMode:{rgb:e=>{let{r:t,g:r,b:n,alpha:i}=g$(e),a=vL(.3*t+.622*r+.078*n+.0037930732552754493),s=vL(.23*t+.692*r+.078*n+.0037930732552754493),o={mode:"xyb",x:(a-s)/2,y:(a+s)/2,b:vL(.2434226892454782*t+.2047674442449682*r+.5518098665095535*n+.0037930732552754493)-(a+s)/2};return void 0!==i&&(o.alpha=i),o}},ranges:{x:[-.0154,.0281],y:[0,.8453],b:[-.2778,.388]},interpolate:{x:gV,y:gV,b:gV,alpha:{use:gV,fixup:gW}}},vN={mode:"yiq",toMode:{rgb:({y:e,i:t,q:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i={mode:"rgb",r:e+.95608445*t+.6208885*r,g:e-.27137664*t-.6486059*r,b:e-1.10561724*t+1.70250126*r};return void 0!==n&&(i.alpha=n),i}},fromMode:{rgb:({r:e,g:t,b:r,alpha:n})=>{void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i={mode:"yiq",y:.29889531*e+.58662247*t+.11448223*r,i:.59597799*e-.2741761*t-.32180189*r,q:.21147017*e-.52261711*t+.31114694*r};return void 0!==n&&(i.alpha=n),i}},channels:["y","i","q","alpha"],parse:["--yiq"],serialize:"--yiq",ranges:{i:[-.595,.595],q:[-.522,.522]},interpolate:{y:gV,i:gV,q:gV,alpha:{use:gV,fixup:gW}}};((e=4)=>t=>{let r;return"number"==typeof t?Math.round(t*(r=Math.pow(10,r=e)))/r:t})(2);let vQ=e=>Math.round(255*Math.max(0,Math.min(1,e||0))),vU=gy("rgb");gy("hsl");let vz=e=>(e=>{if(void 0!==e)return"#"+(0x1000000|vQ(e.r)<<16|vQ(e.g)<<8|vQ(e.b)).toString(16).slice(1)})(vU(e));gM(g4),gM(ms),gM({mode:"dlab",parse:["--din99o-lab"],serialize:"--din99o-lab",toMode:{lab65:mC,rgb:e=>mp(mC(e))},fromMode:{lab65:mE,rgb:e=>mE(mg(e))},channels:["l","a","b","alpha"],ranges:{l:[0,100],a:[-40.09,45.501],b:[-40.469,44.344]},interpolate:{l:gV,a:gV,b:gV,alpha:{use:gV,fixup:gW}}}),gM({mode:"dlch",parse:["--din99o-lch"],serialize:"--din99o-lch",toMode:{lab65:mw,dlab:e=>ml(e,"dlab"),rgb:e=>mp(mw(e))},fromMode:{lab65:mx,dlab:e=>mo(e,"dlch"),rgb:e=>mx(mg(e))},channels:["l","c","h","alpha"],ranges:{l:[0,100],c:[0,51.484],h:[0,360]},interpolate:{l:gV,c:gV,h:{use:gV,fixup:g9},alpha:{use:gV,fixup:gW}},difference:{h:mi},average:{h:ma}}),gM({mode:"hsi",toMode:{rgb:function({h:e,s:t,i:r,alpha:n}){let i;e=g5(void 0!==e?e:0),void 0===t&&(t=0),void 0===r&&(r=0);let a=Math.abs(e/60%2-1);switch(Math.floor(e/60)){case 0:i={r:r*(1+t*(3/(2-a)-1)),g:r*(1+t*(3*(1-a)/(2-a)-1)),b:r*(1-t)};break;case 1:i={r:r*(1+t*(3*(1-a)/(2-a)-1)),g:r*(1+t*(3/(2-a)-1)),b:r*(1-t)};break;case 2:i={r:r*(1-t),g:r*(1+t*(3/(2-a)-1)),b:r*(1+t*(3*(1-a)/(2-a)-1))};break;case 3:i={r:r*(1-t),g:r*(1+t*(3*(1-a)/(2-a)-1)),b:r*(1+t*(3/(2-a)-1))};break;case 4:i={r:r*(1+t*(3*(1-a)/(2-a)-1)),g:r*(1-t),b:r*(1+t*(3/(2-a)-1))};break;case 5:i={r:r*(1+t*(3/(2-a)-1)),g:r*(1-t),b:r*(1+t*(3*(1-a)/(2-a)-1))};break;default:i={r:r*(1-t),g:r*(1-t),b:r*(1-t)}}return i.mode="rgb",void 0!==n&&(i.alpha=n),i}},parse:["--hsi"],serialize:"--hsi",fromMode:{rgb:function({r:e,g:t,b:r,alpha:n}){void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=0);let i=Math.max(e,t,r),a=Math.min(e,t,r),s={mode:"hsi",s:e+t+r===0?0:1-3*a/(e+t+r),i:(e+t+r)/3};return i-a!=0&&(s.h=(i===e?(t-r)/(i-a)+(t<r)*6:i===t?(r-e)/(i-a)+2:(e-t)/(i-a)+4)*60),void 0!==n&&(s.alpha=n),s}},channels:["h","s","i","alpha"],ranges:{h:[0,360]},gamut:"rgb",interpolate:{h:{use:gV,fixup:g9},s:gV,i:gV,alpha:{use:gV,fixup:gW}},difference:{h:mn},average:{h:ma}}),gM(mM),gM(mT),gM({mode:"hwb",toMode:{rgb:function({h:e,w:t,b:r,alpha:n}){if(void 0===t&&(t=0),void 0===r&&(r=0),t+r>1){let e=t+r;t/=e,r/=e}return mI({h:e,s:1===r?1:1-t/(1-r),v:1-r,alpha:n})}},fromMode:{rgb:function(e){let t=mB(e);if(void 0===t)return;let r=void 0!==t.s?t.s:0,n=void 0!==t.v?t.v:0,i={mode:"hwb",w:(1-r)*n,b:1-n};return void 0!==t.h&&(i.h=t.h),void 0!==t.alpha&&(i.alpha=t.alpha),i}},channels:["h","w","b","alpha"],ranges:{h:[0,360]},gamut:"rgb",parse:[function(e,t){if(!t||"hwb"!==t[0])return;let r={mode:"hwb"},[,n,i,a,s]=t;if(n.type!==gD){if(n.type===gP)return;r.h=n.value}if(i.type!==gD){if("hue"===i.type)return;r.w=i.value/100}if(a.type!==gD){if("hue"===a.type)return;r.b=a.value/100}return s.type!==gD&&(r.alpha=Math.min(1,Math.max(0,s.type===gR?s.value:s.value/100))),r}],serialize:e=>`hwb(${void 0!==e.h?e.h:"none"} ${void 0!==e.w?100*e.w+"%":"none"} ${void 0!==e.b?100*e.b+"%":"none"}${e.alpha<1?` / ${e.alpha}`:""})`,interpolate:{h:{use:gV,fixup:g9},w:gV,b:gV,alpha:{use:gV,fixup:gW}},difference:{h:(e,t)=>{if(void 0===e.h||void 0===t.h)return 0;let r=g5(e.h),n=g5(t.h);return Math.abs(n-r)>180?r-(n-360*Math.sign(n-r)):n-r}},average:{h:ma}}),gM({mode:"itp",channels:["i","t","p","alpha"],parse:["--ictcp"],serialize:"--ictcp",toMode:{xyz65:mP,rgb:e=>g3(mP(e))},fromMode:{xyz65:mL,rgb:e=>mL(g0(e))},ranges:{i:[0,.581],t:[-.369,.272],p:[-.164,.331]},interpolate:{i:gV,t:gV,p:gV,alpha:{use:gV,fixup:gW}}}),gM({mode:"jab",channels:["j","a","b","alpha"],parse:["--jzazbz"],serialize:"--jzazbz",fromMode:{rgb:mz,xyz65:mN},toMode:{rgb:mH,xyz65:mU},ranges:{j:[0,.222],a:[-.109,.129],b:[-.185,.134]},interpolate:{j:gV,a:gV,b:gV,alpha:{use:gV,fixup:gW}}}),gM({mode:"jch",parse:["--jzczhz"],serialize:"--jzczhz",toMode:{jab:mj,rgb:e=>mH(mj(e))},fromMode:{rgb:e=>mG(mz(e)),jab:mG},channels:["j","c","h","alpha"],ranges:{j:[0,.221],c:[0,.19],h:[0,360]},interpolate:{h:{use:gV,fixup:g9},c:gV,j:gV,alpha:{use:gV,fixup:gW}},difference:{h:mi},average:{h:ma}}),gM(m$),gM(m0),gM(m1),gM(m2),gM({mode:"lchuv",toMode:{luv:m4,rgb:e=>mq(vr(m4(e)))},fromMode:{rgb:e=>m3(m7(mJ(e))),luv:m3},channels:["l","c","h","alpha"],parse:["--lchuv"],serialize:"--lchuv",ranges:{l:[0,100],c:[0,176.956],h:[0,360]},interpolate:{h:{use:gV,fixup:g9},c:gV,l:gV,alpha:{use:gV,fixup:gW}},difference:{h:mi},average:{h:ma}}),gM(vn),gM({mode:"luv",toMode:{xyz50:vr,rgb:e=>mq(vr(e))},fromMode:{xyz50:m7,rgb:e=>m7(mJ(e))},channels:["l","u","v","alpha"],parse:["--luv"],serialize:"--luv",ranges:{l:[0,100],u:[-84.936,175.042],v:[-125.882,87.243]},interpolate:{l:gV,u:gV,v:gV,alpha:{use:gV,fixup:gW}}}),gM(vA),gM(vv),gM(vb);let vH=gM(vy);gM(vC),gM(vB),gM(vP),gM(gq),gM(vO),gM({mode:"xyz50",parse:["xyz-d50"],serialize:"xyz-d50",toMode:{rgb:mq,lab:mX},fromMode:{rgb:mJ,lab:mW},channels:["x","y","z","alpha"],ranges:{x:[0,.964],y:[0,.999],z:[0,.825]},interpolate:{x:gV,y:gV,z:gV,alpha:{use:gV,fixup:gW}}}),gM({mode:"xyz65",toMode:{rgb:g3,xyz50:e=>{let{x:t,y:r,z:n,alpha:i}=e;void 0===t&&(t=0),void 0===r&&(r=0),void 0===n&&(n=0);let a={mode:"xyz50",x:1.0479298208405488*t+.0229467933410191*r-.0501922295431356*n,y:.0296278156881593*t+.990434484573249*r-.0170738250293851*n,z:-.0092430581525912*t+.0150551448965779*r+.7518742899580008*n};return void 0!==i&&(a.alpha=i),a}},fromMode:{rgb:g0,xyz50:e=>{let{x:t,y:r,z:n,alpha:i}=e;void 0===t&&(t=0),void 0===r&&(r=0),void 0===n&&(n=0);let a={mode:"xyz65",x:.9554734527042182*t-.0230985368742614*r+.0632593086610217*n,y:-.0283697069632081*t+1.0099954580058226*r+.021041398966943*n,z:.0123140016883199*t-.0205076964334779*r+1.3303659366080753*n};return void 0!==i&&(a.alpha=i),a}},ranges:{x:[0,.95],y:[0,1],z:[0,1.088]},channels:["x","y","z","alpha"],parse:["xyz","xyz-d65"],serialize:"xyz-d65",interpolate:{x:gV,y:gV,z:gV,alpha:{use:gV,fixup:gW}}}),gM(vN);var vG=i("../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/browser.js");let vj={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},vV={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},vW="attached",vq="detached",vY="srgb",vJ="srgb-linear",vK="linear",vX="srgb",vZ={COMPUTE:"compute",RENDER:"render"},v$={PERSPECTIVE:"perspective",LINEAR:"linear",FLAT:"flat"},v0={NORMAL:"normal",CENTROID:"centroid",SAMPLE:"sample",FIRST:"first",EITHER:"either"};function v1(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}let v2={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};function v3(e,t){return new v2[e](t)}function v4(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function v5(e){return document.createElementNS("http://www.w3.org/1999/xhtml",e)}function v9(){let e=v5("canvas");return e.style.display="block",e}let v8={},v6=null;function v7(e){v6=e}function be(){return v6}function bt(...e){let t="THREE."+e.shift();v6?v6("log",t,...e):console.log(t,...e)}function br(...e){let t="THREE."+e.shift();v6?v6("warn",t,...e):console.warn(t,...e)}function bn(...e){let t="THREE."+e.shift();v6?v6("error",t,...e):console.error(t,...e)}function bi(...e){let t=e.join(" ");t in v8||(v8[t]=!0,br(...e))}class ba{addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let r=this._listeners;void 0===r[e]&&(r[e]=[]),-1===r[e].indexOf(t)&&r[e].push(t)}hasEventListener(e,t){let r=this._listeners;return void 0!==r&&void 0!==r[e]&&-1!==r[e].indexOf(t)}removeEventListener(e,t){let r=this._listeners;if(void 0===r)return;let n=r[e];if(void 0!==n){let e=n.indexOf(t);-1!==e&&n.splice(e,1)}}dispatchEvent(e){let t=this._listeners;if(void 0===t)return;let r=t[e.type];if(void 0!==r){e.target=this;let t=r.slice(0);for(let r=0,n=t.length;r<n;r++)t[r].call(this,e);e.target=null}}}let bs=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"],bo=1234567,bl=Math.PI/180,bu=180/Math.PI;function bc(){let e=0xffffffff*Math.random()|0,t=0xffffffff*Math.random()|0,r=0xffffffff*Math.random()|0,n=0xffffffff*Math.random()|0;return(bs[255&e]+bs[e>>8&255]+bs[e>>16&255]+bs[e>>24&255]+"-"+bs[255&t]+bs[t>>8&255]+"-"+bs[t>>16&15|64]+bs[t>>24&255]+"-"+bs[63&r|128]+bs[r>>8&255]+"-"+bs[r>>16&255]+bs[r>>24&255]+bs[255&n]+bs[n>>8&255]+bs[n>>16&255]+bs[n>>24&255]).toLowerCase()}function bd(e,t,r){return Math.max(t,Math.min(r,e))}function bh(e,t){return(e%t+t)%t}function bp(e,t,r){return(1-r)*e+r*t}function bf(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return e/0xffffffff;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int32Array:return Math.max(e/0x7fffffff,-1);case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw Error("Invalid component type.")}}function bA(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return Math.round(0xffffffff*e);case Uint16Array:return Math.round(65535*e);case Uint8Array:return Math.round(255*e);case Int32Array:return Math.round(0x7fffffff*e);case Int16Array:return Math.round(32767*e);case Int8Array:return Math.round(127*e);default:throw Error("Invalid component type.")}}let bg={DEG2RAD:bl,RAD2DEG:bu,generateUUID:bc,clamp:bd,euclideanModulo:bh,mapLinear:function(e,t,r,n,i){return n+(e-t)*(i-n)/(r-t)},inverseLerp:function(e,t,r){return e!==t?(r-e)/(t-e):0},lerp:bp,damp:function(e,t,r,n){return bp(e,t,1-Math.exp(-r*n))},pingpong:function(e,t=1){return t-Math.abs(bh(e,2*t)-t)},smoothstep:function(e,t,r){return e<=t?0:e>=r?1:(e=(e-t)/(r-t))*e*(3-2*e)},smootherstep:function(e,t,r){return e<=t?0:e>=r?1:(e=(e-t)/(r-t))*e*e*(e*(6*e-15)+10)},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},seededRandom:function(e){void 0!==e&&(bo=e);let t=bo+=0x6d2b79f5;return t=Math.imul(t^t>>>15,1|t),(((t^=t+Math.imul(t^t>>>7,61|t))^t>>>14)>>>0)/0x100000000},degToRad:function(e){return e*bl},radToDeg:function(e){return e*bu},isPowerOfTwo:function(e){return(e&e-1)==0&&0!==e},ceilPowerOfTwo:function(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))},floorPowerOfTwo:function(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))},setQuaternionFromProperEuler:function(e,t,r,n,i){let a=Math.cos,s=Math.sin,o=a(r/2),l=s(r/2),u=a((t+n)/2),c=s((t+n)/2),d=a((t-n)/2),h=s((t-n)/2),p=a((n-t)/2),f=s((n-t)/2);switch(i){case"XYX":e.set(o*c,l*d,l*h,o*u);break;case"YZY":e.set(l*h,o*c,l*d,o*u);break;case"ZXZ":e.set(l*d,l*h,o*c,o*u);break;case"XZX":e.set(o*c,l*f,l*p,o*u);break;case"YXY":e.set(l*p,o*c,l*f,o*u);break;case"ZYZ":e.set(l*f,l*p,o*c,o*u);break;default:br("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}},normalize:bA,denormalize:bf};class bm{constructor(e=0,t=0){bm.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){let t=this.x,r=this.y,n=e.elements;return this.x=n[0]*t+n[3]*r+n[6],this.y=n[1]*t+n[4]*r+n[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=bd(this.x,e.x,t.x),this.y=bd(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=bd(this.x,e,t),this.y=bd(this.y,e,t),this}clampLength(e,t){let r=this.length();return this.divideScalar(r||1).multiplyScalar(bd(r,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());return 0===t?Math.PI/2:Math.acos(bd(this.dot(e)/t,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,r=this.y-e.y;return t*t+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,r){return this.x=e.x+(t.x-e.x)*r,this.y=e.y+(t.y-e.y)*r,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let r=Math.cos(t),n=Math.sin(t),i=this.x-e.x,a=this.y-e.y;return this.x=i*r-a*n+e.x,this.y=i*n+a*r+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class bv{constructor(e=0,t=0,r=0,n=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=r,this._w=n}static slerpFlat(e,t,r,n,i,a,s){let o=r[n+0],l=r[n+1],u=r[n+2],c=r[n+3],d=i[a+0],h=i[a+1],p=i[a+2],f=i[a+3];if(s<=0){e[t+0]=o,e[t+1]=l,e[t+2]=u,e[t+3]=c;return}if(s>=1){e[t+0]=d,e[t+1]=h,e[t+2]=p,e[t+3]=f;return}if(c!==f||o!==d||l!==h||u!==p){let e=o*d+l*h+u*p+c*f;e<0&&(d=-d,h=-h,p=-p,f=-f,e=-e);let t=1-s;if(e<.9995){let r=Math.acos(e),n=Math.sin(r);o=o*(t=Math.sin(t*r)/n)+d*(s=Math.sin(s*r)/n),l=l*t+h*s,u=u*t+p*s,c=c*t+f*s}else{let e=1/Math.sqrt((o=o*t+d*s)*o+(l=l*t+h*s)*l+(u=u*t+p*s)*u+(c=c*t+f*s)*c);o*=e,l*=e,u*=e,c*=e}}e[t]=o,e[t+1]=l,e[t+2]=u,e[t+3]=c}static multiplyQuaternionsFlat(e,t,r,n,i,a){let s=r[n],o=r[n+1],l=r[n+2],u=r[n+3],c=i[a],d=i[a+1],h=i[a+2],p=i[a+3];return e[t]=s*p+u*c+o*h-l*d,e[t+1]=o*p+u*d+l*c-s*h,e[t+2]=l*p+u*h+s*d-o*c,e[t+3]=u*p-s*c-o*d-l*h,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,r,n){return this._x=e,this._y=t,this._z=r,this._w=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){let r=e._x,n=e._y,i=e._z,a=e._order,s=Math.cos,o=Math.sin,l=s(r/2),u=s(n/2),c=s(i/2),d=o(r/2),h=o(n/2),p=o(i/2);switch(a){case"XYZ":this._x=d*u*c+l*h*p,this._y=l*h*c-d*u*p,this._z=l*u*p+d*h*c,this._w=l*u*c-d*h*p;break;case"YXZ":this._x=d*u*c+l*h*p,this._y=l*h*c-d*u*p,this._z=l*u*p-d*h*c,this._w=l*u*c+d*h*p;break;case"ZXY":this._x=d*u*c-l*h*p,this._y=l*h*c+d*u*p,this._z=l*u*p+d*h*c,this._w=l*u*c-d*h*p;break;case"ZYX":this._x=d*u*c-l*h*p,this._y=l*h*c+d*u*p,this._z=l*u*p-d*h*c,this._w=l*u*c+d*h*p;break;case"YZX":this._x=d*u*c+l*h*p,this._y=l*h*c+d*u*p,this._z=l*u*p-d*h*c,this._w=l*u*c-d*h*p;break;case"XZY":this._x=d*u*c-l*h*p,this._y=l*h*c-d*u*p,this._z=l*u*p+d*h*c,this._w=l*u*c+d*h*p;break;default:br("Quaternion: .setFromEuler() encountered an unknown order: "+a)}return!0===t&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let r=t/2,n=Math.sin(r);return this._x=e.x*n,this._y=e.y*n,this._z=e.z*n,this._w=Math.cos(r),this._onChangeCallback(),this}setFromRotationMatrix(e){let t=e.elements,r=t[0],n=t[4],i=t[8],a=t[1],s=t[5],o=t[9],l=t[2],u=t[6],c=t[10],d=r+s+c;if(d>0){let e=.5/Math.sqrt(d+1);this._w=.25/e,this._x=(u-o)*e,this._y=(i-l)*e,this._z=(a-n)*e}else if(r>s&&r>c){let e=2*Math.sqrt(1+r-s-c);this._w=(u-o)/e,this._x=.25*e,this._y=(n+a)/e,this._z=(i+l)/e}else if(s>c){let e=2*Math.sqrt(1+s-r-c);this._w=(i-l)/e,this._x=(n+a)/e,this._y=.25*e,this._z=(o+u)/e}else{let e=2*Math.sqrt(1+c-r-s);this._w=(a-n)/e,this._x=(i+l)/e,this._y=(o+u)/e,this._z=.25*e}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let r=e.dot(t)+1;return r<1e-8?(r=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0):(this._x=0,this._y=-e.z,this._z=e.y)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x),this._w=r,this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(bd(this.dot(e),-1,1)))}rotateTowards(e,t){let r=this.angleTo(e);if(0===r)return this;let n=Math.min(1,t/r);return this.slerp(e,n),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let r=e._x,n=e._y,i=e._z,a=e._w,s=t._x,o=t._y,l=t._z,u=t._w;return this._x=r*u+a*s+n*l-i*o,this._y=n*u+a*o+i*s-r*l,this._z=i*u+a*l+r*o-n*s,this._w=a*u-r*s-n*o-i*l,this._onChangeCallback(),this}slerp(e,t){if(t<=0)return this;if(t>=1)return this.copy(e);let r=e._x,n=e._y,i=e._z,a=e._w,s=this.dot(e);s<0&&(r=-r,n=-n,i=-i,a=-a,s=-s);let o=1-t;if(s<.9995){let e=Math.acos(s),l=Math.sin(e);o=Math.sin(o*e)/l,t=Math.sin(t*e)/l,this._x=this._x*o+r*t,this._y=this._y*o+n*t,this._z=this._z*o+i*t,this._w=this._w*o+a*t,this._onChangeCallback()}else this._x=this._x*o+r*t,this._y=this._y*o+n*t,this._z=this._z*o+i*t,this._w=this._w*o+a*t,this.normalize();return this}slerpQuaternions(e,t,r){return this.copy(e).slerp(t,r)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),r=Math.random(),n=Math.sqrt(1-r),i=Math.sqrt(r);return this.set(n*Math.sin(e),n*Math.cos(e),i*Math.sin(t),i*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class bb{constructor(e=0,t=0,r=0){bb.prototype.isVector3=!0,this.x=e,this.y=t,this.z=r}set(e,t,r){return void 0===r&&(r=this.z),this.x=e,this.y=t,this.z=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(bw.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(bw.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,r=this.y,n=this.z,i=e.elements;return this.x=i[0]*t+i[3]*r+i[6]*n,this.y=i[1]*t+i[4]*r+i[7]*n,this.z=i[2]*t+i[5]*r+i[8]*n,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,r=this.y,n=this.z,i=e.elements,a=1/(i[3]*t+i[7]*r+i[11]*n+i[15]);return this.x=(i[0]*t+i[4]*r+i[8]*n+i[12])*a,this.y=(i[1]*t+i[5]*r+i[9]*n+i[13])*a,this.z=(i[2]*t+i[6]*r+i[10]*n+i[14])*a,this}applyQuaternion(e){let t=this.x,r=this.y,n=this.z,i=e.x,a=e.y,s=e.z,o=e.w,l=2*(a*n-s*r),u=2*(s*t-i*n),c=2*(i*r-a*t);return this.x=t+o*l+a*c-s*u,this.y=r+o*u+s*l-i*c,this.z=n+o*c+i*u-a*l,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,r=this.y,n=this.z,i=e.elements;return this.x=i[0]*t+i[4]*r+i[8]*n,this.y=i[1]*t+i[5]*r+i[9]*n,this.z=i[2]*t+i[6]*r+i[10]*n,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=bd(this.x,e.x,t.x),this.y=bd(this.y,e.y,t.y),this.z=bd(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=bd(this.x,e,t),this.y=bd(this.y,e,t),this.z=bd(this.z,e,t),this}clampLength(e,t){let r=this.length();return this.divideScalar(r||1).multiplyScalar(bd(r,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,r){return this.x=e.x+(t.x-e.x)*r,this.y=e.y+(t.y-e.y)*r,this.z=e.z+(t.z-e.z)*r,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let r=e.x,n=e.y,i=e.z,a=t.x,s=t.y,o=t.z;return this.x=n*o-i*s,this.y=i*a-r*o,this.z=r*s-n*a,this}projectOnVector(e){let t=e.lengthSq();if(0===t)return this.set(0,0,0);let r=e.dot(this)/t;return this.copy(e).multiplyScalar(r)}projectOnPlane(e){return by.copy(this).projectOnVector(e),this.sub(by)}reflect(e){return this.sub(by.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());return 0===t?Math.PI/2:Math.acos(bd(this.dot(e)/t,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,r=this.y-e.y,n=this.z-e.z;return t*t+r*r+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,r){let n=Math.sin(t)*e;return this.x=n*Math.sin(r),this.y=Math.cos(t)*e,this.z=n*Math.cos(r),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,r){return this.x=e*Math.sin(t),this.y=r,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),r=this.setFromMatrixColumn(e,1).length(),n=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=r,this.z=n,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,4*t)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,3*t)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=Math.random()*Math.PI*2,t=2*Math.random()-1,r=Math.sqrt(1-t*t);return this.x=r*Math.cos(e),this.y=t,this.z=r*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}let by=new bb,bw=new bv;class bx{constructor(e,t,r,n,i,a,s,o,l){bx.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==e&&this.set(e,t,r,n,i,a,s,o,l)}set(e,t,r,n,i,a,s,o,l){let u=this.elements;return u[0]=e,u[1]=n,u[2]=s,u[3]=t,u[4]=i,u[5]=o,u[6]=r,u[7]=a,u[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,r=e.elements;return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t[4]=r[4],t[5]=r[5],t[6]=r[6],t[7]=r[7],t[8]=r[8],this}extractBasis(e,t,r){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),r.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let r=e.elements,n=t.elements,i=this.elements,a=r[0],s=r[3],o=r[6],l=r[1],u=r[4],c=r[7],d=r[2],h=r[5],p=r[8],f=n[0],A=n[3],g=n[6],m=n[1],v=n[4],b=n[7],y=n[2],w=n[5],x=n[8];return i[0]=a*f+s*m+o*y,i[3]=a*A+s*v+o*w,i[6]=a*g+s*b+o*x,i[1]=l*f+u*m+c*y,i[4]=l*A+u*v+c*w,i[7]=l*g+u*b+c*x,i[2]=d*f+h*m+p*y,i[5]=d*A+h*v+p*w,i[8]=d*g+h*b+p*x,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],r=e[1],n=e[2],i=e[3],a=e[4],s=e[5],o=e[6],l=e[7],u=e[8];return t*a*u-t*s*l-r*i*u+r*s*o+n*i*l-n*a*o}invert(){let e=this.elements,t=e[0],r=e[1],n=e[2],i=e[3],a=e[4],s=e[5],o=e[6],l=e[7],u=e[8],c=u*a-s*l,d=s*o-u*i,h=l*i-a*o,p=t*c+r*d+n*h;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);let f=1/p;return e[0]=c*f,e[1]=(n*l-u*r)*f,e[2]=(s*r-n*a)*f,e[3]=d*f,e[4]=(u*t-n*o)*f,e[5]=(n*i-s*t)*f,e[6]=h*f,e[7]=(r*o-l*t)*f,e[8]=(a*t-r*i)*f,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,r,n,i,a,s){let o=Math.cos(i),l=Math.sin(i);return this.set(r*o,r*l,-r*(o*a+l*s)+a+e,-n*l,n*o,-n*(-l*a+o*s)+s+t,0,0,1),this}scale(e,t){return this.premultiply(bC.makeScale(e,t)),this}rotate(e){return this.premultiply(bC.makeRotation(-e)),this}translate(e,t){return this.premultiply(bC.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),r=Math.sin(e);return this.set(t,-r,0,r,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,r=e.elements;for(let e=0;e<9;e++)if(t[e]!==r[e])return!1;return!0}fromArray(e,t=0){for(let r=0;r<9;r++)this.elements[r]=e[r+t];return this}toArray(e=[],t=0){let r=this.elements;return e[t]=r[0],e[t+1]=r[1],e[t+2]=r[2],e[t+3]=r[3],e[t+4]=r[4],e[t+5]=r[5],e[t+6]=r[6],e[t+7]=r[7],e[t+8]=r[8],e}clone(){return new this.constructor().fromArray(this.elements)}}let bC=new bx,bE=new bx().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),bS=new bx().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715),bM=(W=[.64,.33,.3,.6,.15,.06],q=[.2126,.7152,.0722],Y=[.3127,.329],(V={enabled:!0,workingColorSpace:vJ,spaces:{},convert:function(e,t,r){return!1!==this.enabled&&t!==r&&t&&r&&(this.spaces[t].transfer===vX&&(e.r=bI(e.r),e.g=bI(e.g),e.b=bI(e.b)),this.spaces[t].primaries!==this.spaces[r].primaries&&(e.applyMatrix3(this.spaces[t].toXYZ),e.applyMatrix3(this.spaces[r].fromXYZ)),this.spaces[r].transfer===vX&&(e.r=bB(e.r),e.g=bB(e.g),e.b=bB(e.b))),e},workingToColorSpace:function(e,t){return this.convert(e,this.workingColorSpace,t)},colorSpaceToWorking:function(e,t){return this.convert(e,t,this.workingColorSpace)},getPrimaries:function(e){return this.spaces[e].primaries},getTransfer:function(e){return""===e?vK:this.spaces[e].transfer},getToneMappingMode:function(e){return this.spaces[e].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(e,t=this.workingColorSpace){return e.fromArray(this.spaces[t].luminanceCoefficients)},define:function(e){Object.assign(this.spaces,e)},_getMatrix:function(e,t,r){return e.copy(this.spaces[t].toXYZ).multiply(this.spaces[r].fromXYZ)},_getDrawingBufferColorSpace:function(e){return this.spaces[e].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(e=this.workingColorSpace){return this.spaces[e].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(e,t){return bi("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),V.workingToColorSpace(e,t)},toWorkingColorSpace:function(e,t){return bi("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),V.colorSpaceToWorking(e,t)}}).define({[vJ]:{primaries:W,whitePoint:Y,transfer:vK,toXYZ:bE,fromXYZ:bS,luminanceCoefficients:q,workingColorSpaceConfig:{unpackColorSpace:vY},outputColorSpaceConfig:{drawingBufferColorSpace:vY}},[vY]:{primaries:W,whitePoint:Y,transfer:vX,toXYZ:bE,fromXYZ:bS,luminanceCoefficients:q,outputColorSpaceConfig:{drawingBufferColorSpace:vY}}}),V);function bI(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function bB(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}class bT{static getDataURL(e,t="image/png"){let r;if(/^data:/i.test(e.src)||"u"<typeof HTMLCanvasElement)return e.src;if(e instanceof HTMLCanvasElement)r=e;else{void 0===a&&(a=v5("canvas")),a.width=e.width,a.height=e.height;let t=a.getContext("2d");e instanceof ImageData?t.putImageData(e,0,0):t.drawImage(e,0,0,e.width,e.height),r=a}return r.toDataURL(t)}static sRGBToLinear(e){if("u">typeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap){let t=v5("canvas");t.width=e.width,t.height=e.height;let r=t.getContext("2d");r.drawImage(e,0,0,e.width,e.height);let n=r.getImageData(0,0,e.width,e.height),i=n.data;for(let e=0;e<i.length;e++)i[e]=255*bI(i[e]/255);return r.putImageData(n,0,0),t}if(!e.data)return br("ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),e;{let t=e.data.slice(0);for(let e=0;e<t.length;e++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[e]=Math.floor(255*bI(t[e]/255)):t[e]=bI(t[e]);return{data:t,width:e.width,height:e.height}}}}let bk=0;class b_{constructor(e=null){this.isSource=!0,Object.defineProperty(this,"id",{value:bk++}),this.uuid=bc(),this.data=e,this.dataReady=!0,this.version=0}getSize(e){let t=this.data;return"u">typeof HTMLVideoElement&&t instanceof HTMLVideoElement?e.set(t.videoWidth,t.videoHeight,0):"u">typeof VideoFrame&&t instanceof VideoFrame?e.set(t.displayHeight,t.displayWidth,0):null!==t?e.set(t.width,t.height,t.depth||0):e.set(0,0,0),e}set needsUpdate(e){!0===e&&this.version++}toJSON(e){let t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.images[this.uuid])return e.images[this.uuid];let r={uuid:this.uuid,url:""},n=this.data;if(null!==n){let e;if(Array.isArray(n)){e=[];for(let t=0,r=n.length;t<r;t++)n[t].isDataTexture?e.push(bR(n[t].image)):e.push(bR(n[t]))}else e=bR(n);r.url=e}return t||(e.images[this.uuid]=r),r}}function bR(e){return"u">typeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap?bT.getDataURL(e):e.data?{data:Array.from(e.data),width:e.width,height:e.height,type:e.data.constructor.name}:(br("Texture: Unable to serialize Texture."),{})}let bP=0,bD=new bb;class bL extends ba{constructor(e=bL.DEFAULT_IMAGE,t=bL.DEFAULT_MAPPING,r=1001,n=1001,i=1006,a=1008,s=1023,o=1009,l=bL.DEFAULT_ANISOTROPY,u=""){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:bP++}),this.uuid=bc(),this.name="",this.source=new b_(e),this.mipmaps=[],this.mapping=t,this.channel=0,this.wrapS=r,this.wrapT=n,this.magFilter=i,this.minFilter=a,this.anisotropy=l,this.format=s,this.internalFormat=null,this.type=o,this.offset=new bm(0,0),this.repeat=new bm(1,1),this.center=new bm(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new bx,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=u,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!e&&!!e.depth&&e.depth>1,this.pmremVersion=0}get width(){return this.source.getSize(bD).x}get height(){return this.source.getSize(bD).y}get depth(){return this.source.getSize(bD).z}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(let t in e){let r=e[t];if(void 0===r){br(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}let n=this[t];if(void 0===n){br(`Texture.setValues(): property '${t}' does not exist.`);continue}n&&r&&n.isVector2&&r.isVector2||n&&r&&n.isVector3&&r.isVector3||n&&r&&n.isMatrix3&&r.isMatrix3?n.copy(r):this[t]=r}}toJSON(e){let t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.textures[this.uuid])return e.textures[this.uuid];let r={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(r.userData=this.userData),t||(e.textures[this.uuid]=r),r}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(300!==this.mapping)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case 1e3:e.x=e.x-Math.floor(e.x);break;case 1001:e.x=e.x<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case 1e3:e.y=e.y-Math.floor(e.y);break;case 1001:e.y=e.y<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){!0===e&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){!0===e&&this.pmremVersion++}}bL.DEFAULT_IMAGE=null,bL.DEFAULT_MAPPING=300,bL.DEFAULT_ANISOTROPY=1;class bF{constructor(e=0,t=0,r=0,n=1){bF.prototype.isVector4=!0,this.x=e,this.y=t,this.z=r,this.w=n}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,r,n){return this.x=e,this.y=t,this.z=r,this.w=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,r=this.y,n=this.z,i=this.w,a=e.elements;return this.x=a[0]*t+a[4]*r+a[8]*n+a[12]*i,this.y=a[1]*t+a[5]*r+a[9]*n+a[13]*i,this.z=a[2]*t+a[6]*r+a[10]*n+a[14]*i,this.w=a[3]*t+a[7]*r+a[11]*n+a[15]*i,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,r,n,i,a=e.elements,s=a[0],o=a[4],l=a[8],u=a[1],c=a[5],d=a[9],h=a[2],p=a[6],f=a[10];if(.01>Math.abs(o-u)&&.01>Math.abs(l-h)&&.01>Math.abs(d-p)){if(.1>Math.abs(o+u)&&.1>Math.abs(l+h)&&.1>Math.abs(d+p)&&.1>Math.abs(s+c+f-3))return this.set(1,0,0,0),this;t=Math.PI;let e=(s+1)/2,a=(c+1)/2,A=(f+1)/2,g=(o+u)/4,m=(l+h)/4,v=(d+p)/4;return e>a&&e>A?e<.01?(r=0,n=.707106781,i=.707106781):(n=g/(r=Math.sqrt(e)),i=m/r):a>A?a<.01?(r=.707106781,n=0,i=.707106781):(r=g/(n=Math.sqrt(a)),i=v/n):A<.01?(r=.707106781,n=.707106781,i=0):(r=m/(i=Math.sqrt(A)),n=v/i),this.set(r,n,i,t),this}let A=Math.sqrt((p-d)*(p-d)+(l-h)*(l-h)+(u-o)*(u-o));return .001>Math.abs(A)&&(A=1),this.x=(p-d)/A,this.y=(l-h)/A,this.z=(u-o)/A,this.w=Math.acos((s+c+f-1)/2),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=bd(this.x,e.x,t.x),this.y=bd(this.y,e.y,t.y),this.z=bd(this.z,e.z,t.z),this.w=bd(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=bd(this.x,e,t),this.y=bd(this.y,e,t),this.z=bd(this.z,e,t),this.w=bd(this.w,e,t),this}clampLength(e,t){let r=this.length();return this.divideScalar(r||1).multiplyScalar(bd(r,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,r){return this.x=e.x+(t.x-e.x)*r,this.y=e.y+(t.y-e.y)*r,this.z=e.z+(t.z-e.z)*r,this.w=e.w+(t.w-e.w)*r,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class bO extends ba{constructor(e=1,t=1,r={}){super(),r=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:1006,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},r),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=r.depth,this.scissor=new bF(0,0,e,t),this.scissorTest=!1,this.viewport=new bF(0,0,e,t);const n=new bL({width:e,height:t,depth:r.depth});this.textures=[];const i=r.count;for(let e=0;e<i;e++)this.textures[e]=n.clone(),this.textures[e].isRenderTargetTexture=!0,this.textures[e].renderTarget=this;this._setTextureOptions(r),this.depthBuffer=r.depthBuffer,this.stencilBuffer=r.stencilBuffer,this.resolveDepthBuffer=r.resolveDepthBuffer,this.resolveStencilBuffer=r.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=r.depthTexture,this.samples=r.samples,this.multiview=r.multiview}_setTextureOptions(e={}){let t={minFilter:1006,generateMipmaps:!1,flipY:!1,internalFormat:null};void 0!==e.mapping&&(t.mapping=e.mapping),void 0!==e.wrapS&&(t.wrapS=e.wrapS),void 0!==e.wrapT&&(t.wrapT=e.wrapT),void 0!==e.wrapR&&(t.wrapR=e.wrapR),void 0!==e.magFilter&&(t.magFilter=e.magFilter),void 0!==e.minFilter&&(t.minFilter=e.minFilter),void 0!==e.format&&(t.format=e.format),void 0!==e.type&&(t.type=e.type),void 0!==e.anisotropy&&(t.anisotropy=e.anisotropy),void 0!==e.colorSpace&&(t.colorSpace=e.colorSpace),void 0!==e.flipY&&(t.flipY=e.flipY),void 0!==e.generateMipmaps&&(t.generateMipmaps=e.generateMipmaps),void 0!==e.internalFormat&&(t.internalFormat=e.internalFormat);for(let e=0;e<this.textures.length;e++)this.textures[e].setValues(t)}get texture(){return this.textures[0]}set texture(e){this.textures[0]=e}set depthTexture(e){null!==this._depthTexture&&(this._depthTexture.renderTarget=null),null!==e&&(e.renderTarget=this),this._depthTexture=e}get depthTexture(){return this._depthTexture}setSize(e,t,r=1){if(this.width!==e||this.height!==t||this.depth!==r){this.width=e,this.height=t,this.depth=r;for(let n=0,i=this.textures.length;n<i;n++)this.textures[n].image.width=e,this.textures[n].image.height=t,this.textures[n].image.depth=r,!0!==this.textures[n].isData3DTexture&&(this.textures[n].isArrayTexture=this.textures[n].image.depth>1);this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,r=e.textures.length;t<r;t++){this.textures[t]=e.textures[t].clone(),this.textures[t].isRenderTargetTexture=!0,this.textures[t].renderTarget=this;let r=Object.assign({},e.textures[t].image);this.textures[t].source=new b_(r)}return this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.resolveDepthBuffer=e.resolveDepthBuffer,this.resolveStencilBuffer=e.resolveStencilBuffer,null!==e.depthTexture&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class bN extends bO{constructor(e=1,t=1,r={}){super(e,t,r),this.isWebGLRenderTarget=!0}}class bQ extends bL{constructor(e=null,t=1,r=1,n=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:r,depth:n},this.magFilter=1003,this.minFilter=1003,this.wrapR=1001,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class bU extends bN{constructor(e=1,t=1,r=1,n={}){super(e,t,n),this.isWebGLArrayRenderTarget=!0,this.depth=r,this.texture=new bQ(null,e,t,r),this._setTextureOptions(n),this.texture.isRenderTargetTexture=!0}}class bz extends bL{constructor(e=null,t=1,r=1,n=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:r,depth:n},this.magFilter=1003,this.minFilter=1003,this.wrapR=1001,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class bH extends bN{constructor(e=1,t=1,r=1,n={}){super(e,t,n),this.isWebGL3DRenderTarget=!0,this.depth=r,this.texture=new bz(null,e,t,r),this._setTextureOptions(n),this.texture.isRenderTargetTexture=!0}}class bG{constructor(e=new bb(Infinity,Infinity,Infinity),t=new bb(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,r=e.length;t<r;t+=3)this.expandByPoint(bV.fromArray(e,t));return this}setFromBufferAttribute(e){this.makeEmpty();for(let t=0,r=e.count;t<r;t++)this.expandByPoint(bV.fromBufferAttribute(e,t));return this}setFromPoints(e){this.makeEmpty();for(let t=0,r=e.length;t<r;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){let r=bV.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(r),this.max.copy(e).add(r),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=Infinity,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);let r=e.geometry;if(void 0!==r){let n=r.getAttribute("position");if(!0===t&&void 0!==n&&!0!==e.isInstancedMesh)for(let t=0,r=n.count;t<r;t++)!0===e.isMesh?e.getVertexPosition(t,bV):bV.fromBufferAttribute(n,t),bV.applyMatrix4(e.matrixWorld),this.expandByPoint(bV);else void 0!==e.boundingBox?(null===e.boundingBox&&e.computeBoundingBox(),bW.copy(e.boundingBox)):(null===r.boundingBox&&r.computeBoundingBox(),bW.copy(r.boundingBox)),bW.applyMatrix4(e.matrixWorld),this.union(bW)}let n=e.children;for(let e=0,r=n.length;e<r;e++)this.expandByObject(n[e],t);return this}containsPoint(e){return e.x>=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,bV),bV.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,r;return e.normal.x>0?(t=e.normal.x*this.min.x,r=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,r=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,r+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,r+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,r+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,r+=e.normal.z*this.min.z),t<=-e.constant&&r>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(b$),b0.subVectors(this.max,b$),bq.subVectors(e.a,b$),bY.subVectors(e.b,b$),bJ.subVectors(e.c,b$),bK.subVectors(bY,bq),bX.subVectors(bJ,bY),bZ.subVectors(bq,bJ);let t=[0,-bK.z,bK.y,0,-bX.z,bX.y,0,-bZ.z,bZ.y,bK.z,0,-bK.x,bX.z,0,-bX.x,bZ.z,0,-bZ.x,-bK.y,bK.x,0,-bX.y,bX.x,0,-bZ.y,bZ.x,0];return!!b3(t,bq,bY,bJ,b0)&&!!b3(t=[1,0,0,0,1,0,0,0,1],bq,bY,bJ,b0)&&(b1.crossVectors(bK,bX),b3(t=[b1.x,b1.y,b1.z],bq,bY,bJ,b0))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,bV).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=.5*this.getSize(bV).length()),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()||(bj[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),bj[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),bj[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),bj[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),bj[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),bj[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),bj[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),bj[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(bj)),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}}let bj=[new bb,new bb,new bb,new bb,new bb,new bb,new bb,new bb],bV=new bb,bW=new bG,bq=new bb,bY=new bb,bJ=new bb,bK=new bb,bX=new bb,bZ=new bb,b$=new bb,b0=new bb,b1=new bb,b2=new bb;function b3(e,t,r,n,i){for(let a=0,s=e.length-3;a<=s;a+=3){b2.fromArray(e,a);let s=i.x*Math.abs(b2.x)+i.y*Math.abs(b2.y)+i.z*Math.abs(b2.z),o=t.dot(b2),l=r.dot(b2),u=n.dot(b2);if(Math.max(-Math.max(o,l,u),Math.min(o,l,u))>s)return!1}return!0}let b4=new bG,b5=new bb,b9=new bb;class b8{constructor(e=new bb,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){let r=this.center;void 0!==t?r.copy(t):b4.setFromPoints(e).getCenter(r);let n=0;for(let t=0,i=e.length;t<i;t++)n=Math.max(n,r.distanceToSquared(e[t]));return this.radius=Math.sqrt(n),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){let t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,t){let r=this.center.distanceToSquared(e);return t.copy(e),r>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?e.makeEmpty():(e.set(this.center,this.center),e.expandByScalar(this.radius)),e}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;b5.subVectors(e,this.center);let t=b5.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),r=(e-this.radius)*.5;this.center.addScaledVector(b5,r/e),this.radius+=r}return this}union(e){return e.isEmpty()||(this.isEmpty()?this.copy(e):!0===this.center.equals(e.center)?this.radius=Math.max(this.radius,e.radius):(b9.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(b5.copy(e.center).add(b9)),this.expandByPoint(b5.copy(e.center).sub(b9)))),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}}let b6=new bb,b7=new bb,ye=new bb,yt=new bb,yr=new bb,yn=new bb,yi=new bb;class ya{constructor(e=new bb,t=new bb(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,b6)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let r=t.dot(this.direction);return r<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,r)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=b6.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(b6.copy(this.origin).addScaledVector(this.direction,t),b6.distanceToSquared(e))}distanceSqToSegment(e,t,r,n){let i,a,s,o;b7.copy(e).add(t).multiplyScalar(.5),ye.copy(t).sub(e).normalize(),yt.copy(this.origin).sub(b7);let l=.5*e.distanceTo(t),u=-this.direction.dot(ye),c=yt.dot(this.direction),d=-yt.dot(ye),h=yt.lengthSq(),p=Math.abs(1-u*u);if(p>0)if(i=u*d-c,a=u*c-d,o=l*p,i>=0)if(a>=-o)if(a<=o){let e=1/p;i*=e,a*=e,s=i*(i+u*a+2*c)+a*(u*i+a+2*d)+h}else s=-(i=Math.max(0,-(u*(a=l)+c)))*i+a*(a+2*d)+h;else s=-(i=Math.max(0,-(u*(a=-l)+c)))*i+a*(a+2*d)+h;else a<=-o?(a=(i=Math.max(0,-(-u*l+c)))>0?-l:Math.min(Math.max(-l,-d),l),s=-i*i+a*(a+2*d)+h):a<=o?(i=0,s=(a=Math.min(Math.max(-l,-d),l))*(a+2*d)+h):(a=(i=Math.max(0,-(u*l+c)))>0?l:Math.min(Math.max(-l,-d),l),s=-i*i+a*(a+2*d)+h);else a=u>0?-l:l,s=-(i=Math.max(0,-(u*a+c)))*i+a*(a+2*d)+h;return r&&r.copy(this.origin).addScaledVector(this.direction,i),n&&n.copy(b7).addScaledVector(ye,a),s}intersectSphere(e,t){b6.subVectors(e.center,this.origin);let r=b6.dot(this.direction),n=b6.dot(b6)-r*r,i=e.radius*e.radius;if(n>i)return null;let a=Math.sqrt(i-n),s=r-a,o=r+a;return o<0?null:s<0?this.at(o,t):this.at(s,t)}intersectsSphere(e){return!(e.radius<0)&&this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;let r=-(this.origin.dot(e.normal)+e.constant)/t;return r>=0?r:null}intersectPlane(e,t){let r=this.distanceToPlane(e);return null===r?null:this.at(r,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return!!(0===t||e.normal.dot(this.direction)*t<0)}intersectBox(e,t){let r,n,i,a,s,o,l=1/this.direction.x,u=1/this.direction.y,c=1/this.direction.z,d=this.origin;return(l>=0?(r=(e.min.x-d.x)*l,n=(e.max.x-d.x)*l):(r=(e.max.x-d.x)*l,n=(e.min.x-d.x)*l),u>=0?(i=(e.min.y-d.y)*u,a=(e.max.y-d.y)*u):(i=(e.max.y-d.y)*u,a=(e.min.y-d.y)*u),r>a||i>n||((i>r||isNaN(r))&&(r=i),(a<n||isNaN(n))&&(n=a),c>=0?(s=(e.min.z-d.z)*c,o=(e.max.z-d.z)*c):(s=(e.max.z-d.z)*c,o=(e.min.z-d.z)*c),r>o||s>n||((s>r||r!=r)&&(r=s),(o<n||n!=n)&&(n=o),n<0)))?null:this.at(r>=0?r:n,t)}intersectsBox(e){return null!==this.intersectBox(e,b6)}intersectTriangle(e,t,r,n,i){let a;yr.subVectors(t,e),yn.subVectors(r,e),yi.crossVectors(yr,yn);let s=this.direction.dot(yi);if(s>0){if(n)return null;a=1}else{if(!(s<0))return null;a=-1,s=-s}yt.subVectors(this.origin,e);let o=a*this.direction.dot(yn.crossVectors(yt,yn));if(o<0)return null;let l=a*this.direction.dot(yr.cross(yt));if(l<0||o+l>s)return null;let u=-a*yt.dot(yi);return u<0?null:this.at(u/s,i)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class ys{constructor(e,t,r,n,i,a,s,o,l,u,c,d,h,p,f,A){ys.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==e&&this.set(e,t,r,n,i,a,s,o,l,u,c,d,h,p,f,A)}set(e,t,r,n,i,a,s,o,l,u,c,d,h,p,f,A){let g=this.elements;return g[0]=e,g[4]=t,g[8]=r,g[12]=n,g[1]=i,g[5]=a,g[9]=s,g[13]=o,g[2]=l,g[6]=u,g[10]=c,g[14]=d,g[3]=h,g[7]=p,g[11]=f,g[15]=A,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new ys().fromArray(this.elements)}copy(e){let t=this.elements,r=e.elements;return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t[4]=r[4],t[5]=r[5],t[6]=r[6],t[7]=r[7],t[8]=r[8],t[9]=r[9],t[10]=r[10],t[11]=r[11],t[12]=r[12],t[13]=r[13],t[14]=r[14],t[15]=r[15],this}copyPosition(e){let t=this.elements,r=e.elements;return t[12]=r[12],t[13]=r[13],t[14]=r[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,r){return 0===this.determinant()?(e.set(1,0,0),t.set(0,1,0),r.set(0,0,1)):(e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),r.setFromMatrixColumn(this,2)),this}makeBasis(e,t,r){return this.set(e.x,t.x,r.x,0,e.y,t.y,r.y,0,e.z,t.z,r.z,0,0,0,0,1),this}extractRotation(e){if(0===e.determinant())return this.identity();let t=this.elements,r=e.elements,n=1/yo.setFromMatrixColumn(e,0).length(),i=1/yo.setFromMatrixColumn(e,1).length(),a=1/yo.setFromMatrixColumn(e,2).length();return t[0]=r[0]*n,t[1]=r[1]*n,t[2]=r[2]*n,t[3]=0,t[4]=r[4]*i,t[5]=r[5]*i,t[6]=r[6]*i,t[7]=0,t[8]=r[8]*a,t[9]=r[9]*a,t[10]=r[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){let t=this.elements,r=e.x,n=e.y,i=e.z,a=Math.cos(r),s=Math.sin(r),o=Math.cos(n),l=Math.sin(n),u=Math.cos(i),c=Math.sin(i);if("XYZ"===e.order){let e=a*u,r=a*c,n=s*u,i=s*c;t[0]=o*u,t[4]=-o*c,t[8]=l,t[1]=r+n*l,t[5]=e-i*l,t[9]=-s*o,t[2]=i-e*l,t[6]=n+r*l,t[10]=a*o}else if("YXZ"===e.order){let e=o*u,r=o*c,n=l*u,i=l*c;t[0]=e+i*s,t[4]=n*s-r,t[8]=a*l,t[1]=a*c,t[5]=a*u,t[9]=-s,t[2]=r*s-n,t[6]=i+e*s,t[10]=a*o}else if("ZXY"===e.order){let e=o*u,r=o*c,n=l*u,i=l*c;t[0]=e-i*s,t[4]=-a*c,t[8]=n+r*s,t[1]=r+n*s,t[5]=a*u,t[9]=i-e*s,t[2]=-a*l,t[6]=s,t[10]=a*o}else if("ZYX"===e.order){let e=a*u,r=a*c,n=s*u,i=s*c;t[0]=o*u,t[4]=n*l-r,t[8]=e*l+i,t[1]=o*c,t[5]=i*l+e,t[9]=r*l-n,t[2]=-l,t[6]=s*o,t[10]=a*o}else if("YZX"===e.order){let e=a*o,r=a*l,n=s*o,i=s*l;t[0]=o*u,t[4]=i-e*c,t[8]=n*c+r,t[1]=c,t[5]=a*u,t[9]=-s*u,t[2]=-l*u,t[6]=r*c+n,t[10]=e-i*c}else if("XZY"===e.order){let e=a*o,r=a*l,n=s*o,i=s*l;t[0]=o*u,t[4]=-c,t[8]=l*u,t[1]=e*c+i,t[5]=a*u,t[9]=r*c-n,t[2]=n*c-r,t[6]=s*u,t[10]=i*c+e}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(yu,e,yc)}lookAt(e,t,r){let n=this.elements;return yp.subVectors(e,t),0===yp.lengthSq()&&(yp.z=1),yp.normalize(),yd.crossVectors(r,yp),0===yd.lengthSq()&&(1===Math.abs(r.z)?yp.x+=1e-4:yp.z+=1e-4,yp.normalize(),yd.crossVectors(r,yp)),yd.normalize(),yh.crossVectors(yp,yd),n[0]=yd.x,n[4]=yh.x,n[8]=yp.x,n[1]=yd.y,n[5]=yh.y,n[9]=yp.y,n[2]=yd.z,n[6]=yh.z,n[10]=yp.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let r=e.elements,n=t.elements,i=this.elements,a=r[0],s=r[4],o=r[8],l=r[12],u=r[1],c=r[5],d=r[9],h=r[13],p=r[2],f=r[6],A=r[10],g=r[14],m=r[3],v=r[7],b=r[11],y=r[15],w=n[0],x=n[4],C=n[8],E=n[12],S=n[1],M=n[5],I=n[9],B=n[13],T=n[2],k=n[6],_=n[10],R=n[14],P=n[3],D=n[7],L=n[11],F=n[15];return i[0]=a*w+s*S+o*T+l*P,i[4]=a*x+s*M+o*k+l*D,i[8]=a*C+s*I+o*_+l*L,i[12]=a*E+s*B+o*R+l*F,i[1]=u*w+c*S+d*T+h*P,i[5]=u*x+c*M+d*k+h*D,i[9]=u*C+c*I+d*_+h*L,i[13]=u*E+c*B+d*R+h*F,i[2]=p*w+f*S+A*T+g*P,i[6]=p*x+f*M+A*k+g*D,i[10]=p*C+f*I+A*_+g*L,i[14]=p*E+f*B+A*R+g*F,i[3]=m*w+v*S+b*T+y*P,i[7]=m*x+v*M+b*k+y*D,i[11]=m*C+v*I+b*_+y*L,i[15]=m*E+v*B+b*R+y*F,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){let e=this.elements,t=e[0],r=e[4],n=e[8],i=e[12],a=e[1],s=e[5],o=e[9],l=e[13],u=e[2],c=e[6],d=e[10],h=e[14],p=e[3],f=e[7],A=e[11],g=e[15],m=o*h-l*d,v=s*h-l*c,b=s*d-o*c,y=a*h-l*u,w=a*d-o*u,x=a*c-s*u;return t*(f*m-A*v+g*b)-r*(p*m-A*y+g*w)+n*(p*v-f*y+g*x)-i*(p*b-f*w+A*x)}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(e,t,r){let n=this.elements;return e.isVector3?(n[12]=e.x,n[13]=e.y,n[14]=e.z):(n[12]=e,n[13]=t,n[14]=r),this}invert(){let e=this.elements,t=e[0],r=e[1],n=e[2],i=e[3],a=e[4],s=e[5],o=e[6],l=e[7],u=e[8],c=e[9],d=e[10],h=e[11],p=e[12],f=e[13],A=e[14],g=e[15],m=c*A*l-f*d*l+f*o*h-s*A*h-c*o*g+s*d*g,v=p*d*l-u*A*l-p*o*h+a*A*h+u*o*g-a*d*g,b=u*f*l-p*c*l+p*s*h-a*f*h-u*s*g+a*c*g,y=p*c*o-u*f*o-p*s*d+a*f*d+u*s*A-a*c*A,w=t*m+r*v+n*b+i*y;if(0===w)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let x=1/w;return e[0]=m*x,e[1]=(f*d*i-c*A*i-f*n*h+r*A*h+c*n*g-r*d*g)*x,e[2]=(s*A*i-f*o*i+f*n*l-r*A*l-s*n*g+r*o*g)*x,e[3]=(c*o*i-s*d*i-c*n*l+r*d*l+s*n*h-r*o*h)*x,e[4]=v*x,e[5]=(u*A*i-p*d*i+p*n*h-t*A*h-u*n*g+t*d*g)*x,e[6]=(p*o*i-a*A*i-p*n*l+t*A*l+a*n*g-t*o*g)*x,e[7]=(a*d*i-u*o*i+u*n*l-t*d*l-a*n*h+t*o*h)*x,e[8]=b*x,e[9]=(p*c*i-u*f*i-p*r*h+t*f*h+u*r*g-t*c*g)*x,e[10]=(a*f*i-p*s*i+p*r*l-t*f*l-a*r*g+t*s*g)*x,e[11]=(u*s*i-a*c*i-u*r*l+t*c*l+a*r*h-t*s*h)*x,e[12]=y*x,e[13]=(u*f*n-p*c*n+p*r*d-t*f*d-u*r*A+t*c*A)*x,e[14]=(p*s*n-a*f*n-p*r*o+t*f*o+a*r*A-t*s*A)*x,e[15]=(a*c*n-u*s*n+u*r*o-t*c*o-a*r*d+t*s*d)*x,this}scale(e){let t=this.elements,r=e.x,n=e.y,i=e.z;return t[0]*=r,t[4]*=n,t[8]*=i,t[1]*=r,t[5]*=n,t[9]*=i,t[2]*=r,t[6]*=n,t[10]*=i,t[3]*=r,t[7]*=n,t[11]*=i,this}getMaxScaleOnAxis(){let e=this.elements;return Math.sqrt(Math.max(e[0]*e[0]+e[1]*e[1]+e[2]*e[2],e[4]*e[4]+e[5]*e[5]+e[6]*e[6],e[8]*e[8]+e[9]*e[9]+e[10]*e[10]))}makeTranslation(e,t,r){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,r,0,0,0,1),this}makeRotationX(e){let t=Math.cos(e),r=Math.sin(e);return this.set(1,0,0,0,0,t,-r,0,0,r,t,0,0,0,0,1),this}makeRotationY(e){let t=Math.cos(e),r=Math.sin(e);return this.set(t,0,r,0,0,1,0,0,-r,0,t,0,0,0,0,1),this}makeRotationZ(e){let t=Math.cos(e),r=Math.sin(e);return this.set(t,-r,0,0,r,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){let r=Math.cos(t),n=Math.sin(t),i=1-r,a=e.x,s=e.y,o=e.z,l=i*a,u=i*s;return this.set(l*a+r,l*s-n*o,l*o+n*s,0,l*s+n*o,u*s+r,u*o-n*a,0,l*o-n*s,u*o+n*a,i*o*o+r,0,0,0,0,1),this}makeScale(e,t,r){return this.set(e,0,0,0,0,t,0,0,0,0,r,0,0,0,0,1),this}makeShear(e,t,r,n,i,a){return this.set(1,r,i,0,e,1,a,0,t,n,1,0,0,0,0,1),this}compose(e,t,r){let n=this.elements,i=t._x,a=t._y,s=t._z,o=t._w,l=i+i,u=a+a,c=s+s,d=i*l,h=i*u,p=i*c,f=a*u,A=a*c,g=s*c,m=o*l,v=o*u,b=o*c,y=r.x,w=r.y,x=r.z;return n[0]=(1-(f+g))*y,n[1]=(h+b)*y,n[2]=(p-v)*y,n[3]=0,n[4]=(h-b)*w,n[5]=(1-(d+g))*w,n[6]=(A+m)*w,n[7]=0,n[8]=(p+v)*x,n[9]=(A-m)*x,n[10]=(1-(d+f))*x,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,this}decompose(e,t,r){let n=this.elements;if(e.x=n[12],e.y=n[13],e.z=n[14],0===this.determinant())return r.set(1,1,1),t.identity(),this;let i=yo.set(n[0],n[1],n[2]).length(),a=yo.set(n[4],n[5],n[6]).length(),s=yo.set(n[8],n[9],n[10]).length();0>this.determinant()&&(i=-i),yl.copy(this);let o=1/i,l=1/a,u=1/s;return yl.elements[0]*=o,yl.elements[1]*=o,yl.elements[2]*=o,yl.elements[4]*=l,yl.elements[5]*=l,yl.elements[6]*=l,yl.elements[8]*=u,yl.elements[9]*=u,yl.elements[10]*=u,t.setFromRotationMatrix(yl),r.x=i,r.y=a,r.z=s,this}makePerspective(e,t,r,n,i,a,s=2e3,o=!1){let l,u,c=this.elements;if(o)l=i/(a-i),u=a*i/(a-i);else if(2e3===s)l=-(a+i)/(a-i),u=-2*a*i/(a-i);else if(2001===s)l=-a/(a-i),u=-a*i/(a-i);else throw Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+s);return c[0]=2*i/(t-e),c[4]=0,c[8]=(t+e)/(t-e),c[12]=0,c[1]=0,c[5]=2*i/(r-n),c[9]=(r+n)/(r-n),c[13]=0,c[2]=0,c[6]=0,c[10]=l,c[14]=u,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,t,r,n,i,a,s=2e3,o=!1){let l,u,c=this.elements;if(o)l=1/(a-i),u=a/(a-i);else if(2e3===s)l=-2/(a-i),u=-(a+i)/(a-i);else if(2001===s)l=-1/(a-i),u=-i/(a-i);else throw Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+s);return c[0]=2/(t-e),c[4]=0,c[8]=0,c[12]=-(t+e)/(t-e),c[1]=0,c[5]=2/(r-n),c[9]=0,c[13]=-(r+n)/(r-n),c[2]=0,c[6]=0,c[10]=l,c[14]=u,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}equals(e){let t=this.elements,r=e.elements;for(let e=0;e<16;e++)if(t[e]!==r[e])return!1;return!0}fromArray(e,t=0){for(let r=0;r<16;r++)this.elements[r]=e[r+t];return this}toArray(e=[],t=0){let r=this.elements;return e[t]=r[0],e[t+1]=r[1],e[t+2]=r[2],e[t+3]=r[3],e[t+4]=r[4],e[t+5]=r[5],e[t+6]=r[6],e[t+7]=r[7],e[t+8]=r[8],e[t+9]=r[9],e[t+10]=r[10],e[t+11]=r[11],e[t+12]=r[12],e[t+13]=r[13],e[t+14]=r[14],e[t+15]=r[15],e}}let yo=new bb,yl=new ys,yu=new bb(0,0,0),yc=new bb(1,1,1),yd=new bb,yh=new bb,yp=new bb,yf=new ys,yA=new bv;class yg{constructor(e=0,t=0,r=0,n=yg.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=r,this._order=n}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,r,n=this._order){return this._x=e,this._y=t,this._z=r,this._order=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,r=!0){let n=e.elements,i=n[0],a=n[4],s=n[8],o=n[1],l=n[5],u=n[9],c=n[2],d=n[6],h=n[10];switch(t){case"XYZ":this._y=Math.asin(bd(s,-1,1)),.9999999>Math.abs(s)?(this._x=Math.atan2(-u,h),this._z=Math.atan2(-a,i)):(this._x=Math.atan2(d,l),this._z=0);break;case"YXZ":this._x=Math.asin(-bd(u,-1,1)),.9999999>Math.abs(u)?(this._y=Math.atan2(s,h),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-c,i),this._z=0);break;case"ZXY":this._x=Math.asin(bd(d,-1,1)),.9999999>Math.abs(d)?(this._y=Math.atan2(-c,h),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(o,i));break;case"ZYX":this._y=Math.asin(-bd(c,-1,1)),.9999999>Math.abs(c)?(this._x=Math.atan2(d,h),this._z=Math.atan2(o,i)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(bd(o,-1,1)),.9999999>Math.abs(o)?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-c,i)):(this._x=0,this._y=Math.atan2(s,h));break;case"XZY":this._z=Math.asin(-bd(a,-1,1)),.9999999>Math.abs(a)?(this._x=Math.atan2(d,l),this._y=Math.atan2(s,i)):(this._x=Math.atan2(-u,h),this._y=0);break;default:br("Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!0===r&&this._onChangeCallback(),this}setFromQuaternion(e,t,r){return yf.makeRotationFromQuaternion(e),this.setFromRotationMatrix(yf,t,r)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return yA.setFromEuler(this),this.setFromQuaternion(yA,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}yg.DEFAULT_ORDER="XYZ";class ym{constructor(){this.mask=1}set(e){this.mask=1<<e>>>0}enable(e){this.mask|=1<<e}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e}disable(e){this.mask&=~(1<<e)}disableAll(){this.mask=0}test(e){return(this.mask&e.mask)!=0}isEnabled(e){return(this.mask&1<<e)!=0}}let yv=0,yb=new bb,yy=new bv,yw=new ys,yx=new bb,yC=new bb,yE=new bb,yS=new bv,yM=new bb(1,0,0),yI=new bb(0,1,0),yB=new bb(0,0,1),yT={type:"added"},yk={type:"removed"},y_={type:"childadded",child:null},yR={type:"childremoved",child:null};class yP extends ba{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:yv++}),this.uuid=bc(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=yP.DEFAULT_UP.clone();const e=new bb,t=new yg,r=new bv,n=new bb(1,1,1);t._onChange(function(){r.setFromEuler(t,!1)}),r._onChange(function(){t.setFromQuaternion(r,void 0,!1)}),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:r},scale:{configurable:!0,enumerable:!0,value:n},modelViewMatrix:{value:new ys},normalMatrix:{value:new bx}}),this.matrix=new ys,this.matrixWorld=new ys,this.matrixAutoUpdate=yP.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=yP.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new ym,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.customDepthMaterial=void 0,this.customDistanceMaterial=void 0,this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return yy.setFromAxisAngle(e,t),this.quaternion.multiply(yy),this}rotateOnWorldAxis(e,t){return yy.setFromAxisAngle(e,t),this.quaternion.premultiply(yy),this}rotateX(e){return this.rotateOnAxis(yM,e)}rotateY(e){return this.rotateOnAxis(yI,e)}rotateZ(e){return this.rotateOnAxis(yB,e)}translateOnAxis(e,t){return yb.copy(e).applyQuaternion(this.quaternion),this.position.add(yb.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(yM,e)}translateY(e){return this.translateOnAxis(yI,e)}translateZ(e){return this.translateOnAxis(yB,e)}localToWorld(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(yw.copy(this.matrixWorld).invert())}lookAt(e,t,r){e.isVector3?yx.copy(e):yx.set(e,t,r);let n=this.parent;this.updateWorldMatrix(!0,!1),yC.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?yw.lookAt(yC,yx,this.up):yw.lookAt(yx,yC,this.up),this.quaternion.setFromRotationMatrix(yw),n&&(yw.extractRotation(n.matrixWorld),yy.setFromRotationMatrix(yw),this.quaternion.premultiply(yy.invert()))}add(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return e===this?bn("Object3D.add: object can't be added as a child of itself.",e):e&&e.isObject3D?(e.removeFromParent(),e.parent=this,this.children.push(e),e.dispatchEvent(yT),y_.child=e,this.dispatchEvent(y_),y_.child=null):bn("Object3D.add: object not an instance of THREE.Object3D.",e),this}remove(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.remove(arguments[e]);return this}let t=this.children.indexOf(e);return -1!==t&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(yk),yR.child=e,this.dispatchEvent(yR),yR.child=null),this}removeFromParent(){let e=this.parent;return null!==e&&e.remove(this),this}clear(){return this.remove(...this.children)}attach(e){return this.updateWorldMatrix(!0,!1),yw.copy(this.matrixWorld).invert(),null!==e.parent&&(e.parent.updateWorldMatrix(!0,!1),yw.multiply(e.parent.matrixWorld)),e.applyMatrix4(yw),e.removeFromParent(),e.parent=this,this.children.push(e),e.updateWorldMatrix(!1,!0),e.dispatchEvent(yT),y_.child=e,this.dispatchEvent(y_),y_.child=null,this}getObjectById(e){return this.getObjectByProperty("id",e)}getObjectByName(e){return this.getObjectByProperty("name",e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let r=0,n=this.children.length;r<n;r++){let n=this.children[r].getObjectByProperty(e,t);if(void 0!==n)return n}}getObjectsByProperty(e,t,r=[]){this[e]===t&&r.push(this);let n=this.children;for(let i=0,a=n.length;i<a;i++)n[i].getObjectsByProperty(e,t,r);return r}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(yC,e,yE),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(yC,yS,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);let t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);let t=this.children;for(let r=0,n=t.length;r<n;r++)t[r].traverse(e)}traverseVisible(e){if(!1===this.visible)return;e(this);let t=this.children;for(let r=0,n=t.length;r<n;r++)t[r].traverseVisible(e)}traverseAncestors(e){let t=this.parent;null!==t&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(!0===this.matrixWorldAutoUpdate&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,e=!0);let t=this.children;for(let r=0,n=t.length;r<n;r++)t[r].updateMatrixWorld(e)}updateWorldMatrix(e,t){let r=this.parent;if(!0===e&&null!==r&&r.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),!0===this.matrixWorldAutoUpdate&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),!0===t){let e=this.children;for(let t=0,r=e.length;t<r;t++)e[t].updateWorldMatrix(!1,!0)}}toJSON(e){let t=void 0===e||"string"==typeof e,r={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},r.metadata={version:4.7,type:"Object",generator:"Object3D.toJSON"});let n={};function i(t,r){return void 0===t[r.uuid]&&(t[r.uuid]=r.toJSON(e)),r.uuid}if(n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),!0===this.castShadow&&(n.castShadow=!0),!0===this.receiveShadow&&(n.receiveShadow=!0),!1===this.visible&&(n.visible=!1),!1===this.frustumCulled&&(n.frustumCulled=!1),0!==this.renderOrder&&(n.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(n.userData=this.userData),n.layers=this.layers.mask,n.matrix=this.matrix.toArray(),n.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(n.matrixAutoUpdate=!1),this.isInstancedMesh&&(n.type="InstancedMesh",n.count=this.count,n.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(n.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(n.type="BatchedMesh",n.perObjectFrustumCulled=this.perObjectFrustumCulled,n.sortObjects=this.sortObjects,n.drawRanges=this._drawRanges,n.reservedRanges=this._reservedRanges,n.geometryInfo=this._geometryInfo.map(e=>({...e,boundingBox:e.boundingBox?e.boundingBox.toJSON():void 0,boundingSphere:e.boundingSphere?e.boundingSphere.toJSON():void 0})),n.instanceInfo=this._instanceInfo.map(e=>({...e})),n.availableInstanceIds=this._availableInstanceIds.slice(),n.availableGeometryIds=this._availableGeometryIds.slice(),n.nextIndexStart=this._nextIndexStart,n.nextVertexStart=this._nextVertexStart,n.geometryCount=this._geometryCount,n.maxInstanceCount=this._maxInstanceCount,n.maxVertexCount=this._maxVertexCount,n.maxIndexCount=this._maxIndexCount,n.geometryInitialized=this._geometryInitialized,n.matricesTexture=this._matricesTexture.toJSON(e),n.indirectTexture=this._indirectTexture.toJSON(e),null!==this._colorsTexture&&(n.colorsTexture=this._colorsTexture.toJSON(e)),null!==this.boundingSphere&&(n.boundingSphere=this.boundingSphere.toJSON()),null!==this.boundingBox&&(n.boundingBox=this.boundingBox.toJSON())),this.isScene)this.background&&(this.background.isColor?n.background=this.background.toJSON():this.background.isTexture&&(n.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(n.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){n.geometry=i(e.geometries,this.geometry);let t=this.geometry.parameters;if(void 0!==t&&void 0!==t.shapes){let r=t.shapes;if(Array.isArray(r))for(let t=0,n=r.length;t<n;t++){let n=r[t];i(e.shapes,n)}else i(e.shapes,r)}}if(this.isSkinnedMesh&&(n.bindMode=this.bindMode,n.bindMatrix=this.bindMatrix.toArray(),void 0!==this.skeleton&&(i(e.skeletons,this.skeleton),n.skeleton=this.skeleton.uuid)),void 0!==this.material)if(Array.isArray(this.material)){let t=[];for(let r=0,n=this.material.length;r<n;r++)t.push(i(e.materials,this.material[r]));n.material=t}else n.material=i(e.materials,this.material);if(this.children.length>0){n.children=[];for(let t=0;t<this.children.length;t++)n.children.push(this.children[t].toJSON(e).object)}if(this.animations.length>0){n.animations=[];for(let t=0;t<this.animations.length;t++){let r=this.animations[t];n.animations.push(i(e.animations,r))}}if(t){let t=a(e.geometries),n=a(e.materials),i=a(e.textures),s=a(e.images),o=a(e.shapes),l=a(e.skeletons),u=a(e.animations),c=a(e.nodes);t.length>0&&(r.geometries=t),n.length>0&&(r.materials=n),i.length>0&&(r.textures=i),s.length>0&&(r.images=s),o.length>0&&(r.shapes=o),l.length>0&&(r.skeletons=l),u.length>0&&(r.animations=u),c.length>0&&(r.nodes=c)}return r.object=n,r;function a(e){let t=[];for(let r in e){let n=e[r];delete n.metadata,t.push(n)}return t}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(let t=0;t<e.children.length;t++){let r=e.children[t];this.add(r.clone())}return this}}yP.DEFAULT_UP=new bb(0,1,0),yP.DEFAULT_MATRIX_AUTO_UPDATE=!0,yP.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;let yD=new bb,yL=new bb,yF=new bb,yO=new bb,yN=new bb,yQ=new bb,yU=new bb,yz=new bb,yH=new bb,yG=new bb,yj=new bF,yV=new bF,yW=new bF;class yq{constructor(e=new bb,t=new bb,r=new bb){this.a=e,this.b=t,this.c=r}static getNormal(e,t,r,n){n.subVectors(r,t),yD.subVectors(e,t),n.cross(yD);let i=n.lengthSq();return i>0?n.multiplyScalar(1/Math.sqrt(i)):n.set(0,0,0)}static getBarycoord(e,t,r,n,i){yD.subVectors(n,t),yL.subVectors(r,t),yF.subVectors(e,t);let a=yD.dot(yD),s=yD.dot(yL),o=yD.dot(yF),l=yL.dot(yL),u=yL.dot(yF),c=a*l-s*s;if(0===c)return i.set(0,0,0),null;let d=1/c,h=(l*o-s*u)*d,p=(a*u-s*o)*d;return i.set(1-h-p,p,h)}static containsPoint(e,t,r,n){return null!==this.getBarycoord(e,t,r,n,yO)&&yO.x>=0&&yO.y>=0&&yO.x+yO.y<=1}static getInterpolation(e,t,r,n,i,a,s,o){return null===this.getBarycoord(e,t,r,n,yO)?(o.x=0,o.y=0,"z"in o&&(o.z=0),"w"in o&&(o.w=0),null):(o.setScalar(0),o.addScaledVector(i,yO.x),o.addScaledVector(a,yO.y),o.addScaledVector(s,yO.z),o)}static getInterpolatedAttribute(e,t,r,n,i,a){return yj.setScalar(0),yV.setScalar(0),yW.setScalar(0),yj.fromBufferAttribute(e,t),yV.fromBufferAttribute(e,r),yW.fromBufferAttribute(e,n),a.setScalar(0),a.addScaledVector(yj,i.x),a.addScaledVector(yV,i.y),a.addScaledVector(yW,i.z),a}static isFrontFacing(e,t,r,n){return yD.subVectors(r,t),yL.subVectors(e,t),0>yD.cross(yL).dot(n)}set(e,t,r){return this.a.copy(e),this.b.copy(t),this.c.copy(r),this}setFromPointsAndIndices(e,t,r,n){return this.a.copy(e[t]),this.b.copy(e[r]),this.c.copy(e[n]),this}setFromAttributeAndIndices(e,t,r,n){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,r),this.c.fromBufferAttribute(e,n),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return yD.subVectors(this.c,this.b),yL.subVectors(this.a,this.b),.5*yD.cross(yL).length()}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return yq.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return yq.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,r,n,i){return yq.getInterpolation(e,this.a,this.b,this.c,t,r,n,i)}containsPoint(e){return yq.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return yq.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let r,n,i=this.a,a=this.b,s=this.c;yN.subVectors(a,i),yQ.subVectors(s,i),yz.subVectors(e,i);let o=yN.dot(yz),l=yQ.dot(yz);if(o<=0&&l<=0)return t.copy(i);yH.subVectors(e,a);let u=yN.dot(yH),c=yQ.dot(yH);if(u>=0&&c<=u)return t.copy(a);let d=o*c-u*l;if(d<=0&&o>=0&&u<=0)return r=o/(o-u),t.copy(i).addScaledVector(yN,r);yG.subVectors(e,s);let h=yN.dot(yG),p=yQ.dot(yG);if(p>=0&&h<=p)return t.copy(s);let f=h*l-o*p;if(f<=0&&l>=0&&p<=0)return n=l/(l-p),t.copy(i).addScaledVector(yQ,n);let A=u*p-h*c;if(A<=0&&c-u>=0&&h-p>=0)return yU.subVectors(s,a),n=(c-u)/(c-u+(h-p)),t.copy(a).addScaledVector(yU,n);let g=1/(A+f+d);return r=f*g,n=d*g,t.copy(i).addScaledVector(yN,r).addScaledVector(yQ,n)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}let yY={aliceblue:0xf0f8ff,antiquewhite:0xfaebd7,aqua:65535,aquamarine:8388564,azure:0xf0ffff,beige:0xf5f5dc,bisque:0xffe4c4,black:0,blanchedalmond:0xffebcd,blue:255,blueviolet:9055202,brown:0xa52a2a,burlywood:0xdeb887,cadetblue:6266528,chartreuse:8388352,chocolate:0xd2691e,coral:0xff7f50,cornflowerblue:6591981,cornsilk:0xfff8dc,crimson:0xdc143c,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:0xb8860b,darkgray:0xa9a9a9,darkgreen:25600,darkgrey:0xa9a9a9,darkkhaki:0xbdb76b,darkmagenta:9109643,darkolivegreen:5597999,darkorange:0xff8c00,darkorchid:0x9932cc,darkred:9109504,darksalmon:0xe9967a,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:0xff1493,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:0xb22222,floralwhite:0xfffaf0,forestgreen:2263842,fuchsia:0xff00ff,gainsboro:0xdcdcdc,ghostwhite:0xf8f8ff,gold:0xffd700,goldenrod:0xdaa520,gray:8421504,green:32768,greenyellow:0xadff2f,grey:8421504,honeydew:0xf0fff0,hotpink:0xff69b4,indianred:0xcd5c5c,indigo:4915330,ivory:0xfffff0,khaki:0xf0e68c,lavender:0xe6e6fa,lavenderblush:0xfff0f5,lawngreen:8190976,lemonchiffon:0xfffacd,lightblue:0xadd8e6,lightcoral:0xf08080,lightcyan:0xe0ffff,lightgoldenrodyellow:0xfafad2,lightgray:0xd3d3d3,lightgreen:9498256,lightgrey:0xd3d3d3,lightpink:0xffb6c1,lightsalmon:0xffa07a,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:0xb0c4de,lightyellow:0xffffe0,lime:65280,limegreen:3329330,linen:0xfaf0e6,magenta:0xff00ff,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:0xba55d3,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:0xc71585,midnightblue:1644912,mintcream:0xf5fffa,mistyrose:0xffe4e1,moccasin:0xffe4b5,navajowhite:0xffdead,navy:128,oldlace:0xfdf5e6,olive:8421376,olivedrab:7048739,orange:0xffa500,orangered:0xff4500,orchid:0xda70d6,palegoldenrod:0xeee8aa,palegreen:0x98fb98,paleturquoise:0xafeeee,palevioletred:0xdb7093,papayawhip:0xffefd5,peachpuff:0xffdab9,peru:0xcd853f,pink:0xffc0cb,plum:0xdda0dd,powderblue:0xb0e0e6,purple:8388736,rebeccapurple:6697881,red:0xff0000,rosybrown:0xbc8f8f,royalblue:4286945,saddlebrown:9127187,salmon:0xfa8072,sandybrown:0xf4a460,seagreen:3050327,seashell:0xfff5ee,sienna:0xa0522d,silver:0xc0c0c0,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:0xfffafa,springgreen:65407,steelblue:4620980,tan:0xd2b48c,teal:32896,thistle:0xd8bfd8,tomato:0xff6347,turquoise:4251856,violet:0xee82ee,wheat:0xf5deb3,white:0xffffff,whitesmoke:0xf5f5f5,yellow:0xffff00,yellowgreen:0x9acd32},yJ={h:0,s:0,l:0},yK={h:0,s:0,l:0};function yX(e,t,r){return(r<0&&(r+=1),r>1&&(r-=1),r<1/6)?e+(t-e)*6*r:r<.5?t:r<2/3?e+(t-e)*6*(2/3-r):e}class yZ{constructor(e,t,r){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,r)}set(e,t,r){return void 0===t&&void 0===r?e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e):this.setRGB(e,t,r),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=vY){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,bM.colorSpaceToWorking(this,t),this}setRGB(e,t,r,n=bM.workingColorSpace){return this.r=e,this.g=t,this.b=r,bM.colorSpaceToWorking(this,n),this}setHSL(e,t,r,n=bM.workingColorSpace){if(e=bh(e,1),t=bd(t,0,1),r=bd(r,0,1),0===t)this.r=this.g=this.b=r;else{let n=r<=.5?r*(1+t):r+t-r*t,i=2*r-n;this.r=yX(i,n,e+1/3),this.g=yX(i,n,e),this.b=yX(i,n,e-1/3)}return bM.colorSpaceToWorking(this,n),this}setStyle(e,t=vY){let r;function n(t){void 0!==t&&1>parseFloat(t)&&br("Color: Alpha component of "+e+" will be ignored.")}if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let i,a=r[1],s=r[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(i[4]),this.setRGB(Math.min(255,parseInt(i[1],10))/255,Math.min(255,parseInt(i[2],10))/255,Math.min(255,parseInt(i[3],10))/255,t);if(i=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(i[4]),this.setRGB(Math.min(100,parseInt(i[1],10))/100,Math.min(100,parseInt(i[2],10))/100,Math.min(100,parseInt(i[3],10))/100,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(i[4]),this.setHSL(parseFloat(i[1])/360,parseFloat(i[2])/100,parseFloat(i[3])/100,t);break;default:br("Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){let n=r[1],i=n.length;if(3===i)return this.setRGB(parseInt(n.charAt(0),16)/15,parseInt(n.charAt(1),16)/15,parseInt(n.charAt(2),16)/15,t);if(6===i)return this.setHex(parseInt(n,16),t);br("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=vY){let r=yY[e.toLowerCase()];return void 0!==r?this.setHex(r,t):br("Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=bI(e.r),this.g=bI(e.g),this.b=bI(e.b),this}copyLinearToSRGB(e){return this.r=bB(e.r),this.g=bB(e.g),this.b=bB(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=vY){return bM.workingToColorSpace(y$.copy(this),e),65536*Math.round(bd(255*y$.r,0,255))+256*Math.round(bd(255*y$.g,0,255))+Math.round(bd(255*y$.b,0,255))}getHexString(e=vY){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=bM.workingColorSpace){let r,n;bM.workingToColorSpace(y$.copy(this),t);let i=y$.r,a=y$.g,s=y$.b,o=Math.max(i,a,s),l=Math.min(i,a,s),u=(l+o)/2;if(l===o)r=0,n=0;else{let e=o-l;switch(n=u<=.5?e/(o+l):e/(2-o-l),o){case i:r=(a-s)/e+6*(a<s);break;case a:r=(s-i)/e+2;break;case s:r=(i-a)/e+4}r/=6}return e.h=r,e.s=n,e.l=u,e}getRGB(e,t=bM.workingColorSpace){return bM.workingToColorSpace(y$.copy(this),t),e.r=y$.r,e.g=y$.g,e.b=y$.b,e}getStyle(e=vY){bM.workingToColorSpace(y$.copy(this),e);let t=y$.r,r=y$.g,n=y$.b;return e!==vY?`color(${e} ${t.toFixed(3)} ${r.toFixed(3)} ${n.toFixed(3)})`:`rgb(${Math.round(255*t)},${Math.round(255*r)},${Math.round(255*n)})`}offsetHSL(e,t,r){return this.getHSL(yJ),this.setHSL(yJ.h+e,yJ.s+t,yJ.l+r)}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,r){return this.r=e.r+(t.r-e.r)*r,this.g=e.g+(t.g-e.g)*r,this.b=e.b+(t.b-e.b)*r,this}lerpHSL(e,t){this.getHSL(yJ),e.getHSL(yK);let r=bp(yJ.h,yK.h,t),n=bp(yJ.s,yK.s,t),i=bp(yJ.l,yK.l,t);return this.setHSL(r,n,i),this}setFromVector3(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}applyMatrix3(e){let t=this.r,r=this.g,n=this.b,i=e.elements;return this.r=i[0]*t+i[3]*r+i[6]*n,this.g=i[1]*t+i[4]*r+i[7]*n,this.b=i[2]*t+i[5]*r+i[8]*n,this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}let y$=new yZ;yZ.NAMES=yY;let y0=0;class y1 extends ba{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:y0++}),this.uuid=bc(),this.name="",this.type="Material",this.blending=1,this.side=0,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=204,this.blendDst=205,this.blendEquation=100,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new yZ(0,0,0),this.blendAlpha=0,this.depthFunc=3,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=7680,this.stencilZFail=7680,this.stencilZPass=7680,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(void 0!==e)for(let t in e){let r=e[t];if(void 0===r){br(`Material: parameter '${t}' has value of undefined.`);continue}let n=this[t];if(void 0===n){br(`Material: '${t}' is not a property of THREE.${this.type}.`);continue}n&&n.isColor?n.set(r):n&&n.isVector3&&r&&r.isVector3?n.copy(r):this[t]=r}}toJSON(e){let t=void 0===e||"string"==typeof e;t&&(e={textures:{},images:{}});let r={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};function n(e){let t=[];for(let r in e){let n=e[r];delete n.metadata,t.push(n)}return t}if(r.uuid=this.uuid,r.type=this.type,""!==this.name&&(r.name=this.name),this.color&&this.color.isColor&&(r.color=this.color.getHex()),void 0!==this.roughness&&(r.roughness=this.roughness),void 0!==this.metalness&&(r.metalness=this.metalness),void 0!==this.sheen&&(r.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(r.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(r.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(r.emissive=this.emissive.getHex()),void 0!==this.emissiveIntensity&&1!==this.emissiveIntensity&&(r.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(r.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(r.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(r.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(r.shininess=this.shininess),void 0!==this.clearcoat&&(r.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(r.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(r.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(r.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(r.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,r.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(r.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(r.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),void 0!==this.dispersion&&(r.dispersion=this.dispersion),void 0!==this.iridescence&&(r.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(r.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(r.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(r.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(r.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),void 0!==this.anisotropy&&(r.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(r.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(r.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(r.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(r.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(r.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(r.lightMap=this.lightMap.toJSON(e).uuid,r.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(r.aoMap=this.aoMap.toJSON(e).uuid,r.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(r.bumpMap=this.bumpMap.toJSON(e).uuid,r.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(r.normalMap=this.normalMap.toJSON(e).uuid,r.normalMapType=this.normalMapType,r.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(r.displacementMap=this.displacementMap.toJSON(e).uuid,r.displacementScale=this.displacementScale,r.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(r.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(r.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(r.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(r.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(r.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(r.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(r.envMap=this.envMap.toJSON(e).uuid,void 0!==this.combine&&(r.combine=this.combine)),void 0!==this.envMapRotation&&(r.envMapRotation=this.envMapRotation.toArray()),void 0!==this.envMapIntensity&&(r.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(r.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(r.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(r.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.transmission&&(r.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(r.transmissionMap=this.transmissionMap.toJSON(e).uuid),void 0!==this.thickness&&(r.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(r.thicknessMap=this.thicknessMap.toJSON(e).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(r.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(r.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(r.size=this.size),null!==this.shadowSide&&(r.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(r.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(r.blending=this.blending),0!==this.side&&(r.side=this.side),!0===this.vertexColors&&(r.vertexColors=!0),this.opacity<1&&(r.opacity=this.opacity),!0===this.transparent&&(r.transparent=!0),204!==this.blendSrc&&(r.blendSrc=this.blendSrc),205!==this.blendDst&&(r.blendDst=this.blendDst),100!==this.blendEquation&&(r.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(r.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(r.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(r.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(r.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(r.blendAlpha=this.blendAlpha),3!==this.depthFunc&&(r.depthFunc=this.depthFunc),!1===this.depthTest&&(r.depthTest=this.depthTest),!1===this.depthWrite&&(r.depthWrite=this.depthWrite),!1===this.colorWrite&&(r.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(r.stencilWriteMask=this.stencilWriteMask),519!==this.stencilFunc&&(r.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(r.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(r.stencilFuncMask=this.stencilFuncMask),7680!==this.stencilFail&&(r.stencilFail=this.stencilFail),7680!==this.stencilZFail&&(r.stencilZFail=this.stencilZFail),7680!==this.stencilZPass&&(r.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(r.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(r.rotation=this.rotation),!0===this.polygonOffset&&(r.polygonOffset=!0),0!==this.polygonOffsetFactor&&(r.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(r.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(r.linewidth=this.linewidth),void 0!==this.dashSize&&(r.dashSize=this.dashSize),void 0!==this.gapSize&&(r.gapSize=this.gapSize),void 0!==this.scale&&(r.scale=this.scale),!0===this.dithering&&(r.dithering=!0),this.alphaTest>0&&(r.alphaTest=this.alphaTest),!0===this.alphaHash&&(r.alphaHash=!0),!0===this.alphaToCoverage&&(r.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(r.premultipliedAlpha=!0),!0===this.forceSinglePass&&(r.forceSinglePass=!0),!1===this.allowOverride&&(r.allowOverride=!1),!0===this.wireframe&&(r.wireframe=!0),this.wireframeLinewidth>1&&(r.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(r.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(r.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(r.flatShading=!0),!1===this.visible&&(r.visible=!1),!1===this.toneMapped&&(r.toneMapped=!1),!1===this.fog&&(r.fog=!1),Object.keys(this.userData).length>0&&(r.userData=this.userData),t){let t=n(e.textures),i=n(e.images);t.length>0&&(r.textures=t),i.length>0&&(r.images=i)}return r}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,r=null;if(null!==t){let e=t.length;r=Array(e);for(let n=0;n!==e;++n)r[n]=t[n].clone()}return this.clippingPlanes=r,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.allowOverride=e.allowOverride,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){!0===e&&this.version++}}class y2 extends y1{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new yZ(0xffffff),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new yg,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}let y3=function(){let e=new ArrayBuffer(4),t=new Float32Array(e),r=new Uint32Array(e),n=new Uint32Array(512),i=new Uint32Array(512);for(let e=0;e<256;++e){let t=e-127;t<-27?(n[e]=0,n[256|e]=32768,i[e]=24,i[256|e]=24):t<-14?(n[e]=1024>>-t-14,n[256|e]=1024>>-t-14|32768,i[e]=-t-1,i[256|e]=-t-1):t<=15?(n[e]=t+15<<10,n[256|e]=t+15<<10|32768,i[e]=13,i[256|e]=13):t<128?(n[e]=31744,n[256|e]=64512,i[e]=24,i[256|e]=24):(n[e]=31744,n[256|e]=64512,i[e]=13,i[256|e]=13)}let a=new Uint32Array(2048),s=new Uint32Array(64),o=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,r=0;for(;(8388608&t)==0;)t<<=1,r-=8388608;t&=-8388609,r+=0x38800000,a[e]=t|r}for(let e=1024;e<2048;++e)a[e]=0x38000000+(e-1024<<13);for(let e=1;e<31;++e)s[e]=e<<23;s[31]=0x47800000,s[32]=0x80000000;for(let e=33;e<63;++e)s[e]=0x80000000+(e-32<<23);s[63]=0xc7800000;for(let e=1;e<64;++e)32!==e&&(o[e]=1024);return{floatView:t,uint32View:r,baseTable:n,shiftTable:i,mantissaTable:a,exponentTable:s,offsetTable:o}}();function y4(e){Math.abs(e)>65504&&br("DataUtils.toHalfFloat(): Value out of range."),e=bd(e,-65504,65504),y3.floatView[0]=e;let t=y3.uint32View[0],r=t>>23&511;return y3.baseTable[r]+((8388607&t)>>y3.shiftTable[r])}function y5(e){let t=e>>10;return y3.uint32View[0]=y3.mantissaTable[y3.offsetTable[t]+(1023&e)]+y3.exponentTable[t],y3.floatView[0]}class y9{static toHalfFloat(e){return y4(e)}static fromHalfFloat(e){return y5(e)}}let y8=new bb,y6=new bm,y7=0;class we{constructor(e,t,r=!1){if(Array.isArray(e))throw TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:y7++}),this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=r,this.usage=35044,this.updateRanges=[],this.gpuType=1015,this.version=0}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,r){e*=this.itemSize,r*=t.itemSize;for(let n=0,i=this.itemSize;n<i;n++)this.array[e+n]=t.array[r+n];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(2===this.itemSize)for(let t=0,r=this.count;t<r;t++)y6.fromBufferAttribute(this,t),y6.applyMatrix3(e),this.setXY(t,y6.x,y6.y);else if(3===this.itemSize)for(let t=0,r=this.count;t<r;t++)y8.fromBufferAttribute(this,t),y8.applyMatrix3(e),this.setXYZ(t,y8.x,y8.y,y8.z);return this}applyMatrix4(e){for(let t=0,r=this.count;t<r;t++)y8.fromBufferAttribute(this,t),y8.applyMatrix4(e),this.setXYZ(t,y8.x,y8.y,y8.z);return this}applyNormalMatrix(e){for(let t=0,r=this.count;t<r;t++)y8.fromBufferAttribute(this,t),y8.applyNormalMatrix(e),this.setXYZ(t,y8.x,y8.y,y8.z);return this}transformDirection(e){for(let t=0,r=this.count;t<r;t++)y8.fromBufferAttribute(this,t),y8.transformDirection(e),this.setXYZ(t,y8.x,y8.y,y8.z);return this}set(e,t=0){return this.array.set(e,t),this}getComponent(e,t){let r=this.array[e*this.itemSize+t];return this.normalized&&(r=bf(r,this.array)),r}setComponent(e,t,r){return this.normalized&&(r=bA(r,this.array)),this.array[e*this.itemSize+t]=r,this}getX(e){let t=this.array[e*this.itemSize];return this.normalized&&(t=bf(t,this.array)),t}setX(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize]=t,this}getY(e){let t=this.array[e*this.itemSize+1];return this.normalized&&(t=bf(t,this.array)),t}setY(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize+1]=t,this}getZ(e){let t=this.array[e*this.itemSize+2];return this.normalized&&(t=bf(t,this.array)),t}setZ(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize+2]=t,this}getW(e){let t=this.array[e*this.itemSize+3];return this.normalized&&(t=bf(t,this.array)),t}setW(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize+3]=t,this}setXY(e,t,r){return e*=this.itemSize,this.normalized&&(t=bA(t,this.array),r=bA(r,this.array)),this.array[e+0]=t,this.array[e+1]=r,this}setXYZ(e,t,r,n){return e*=this.itemSize,this.normalized&&(t=bA(t,this.array),r=bA(r,this.array),n=bA(n,this.array)),this.array[e+0]=t,this.array[e+1]=r,this.array[e+2]=n,this}setXYZW(e,t,r,n,i){return e*=this.itemSize,this.normalized&&(t=bA(t,this.array),r=bA(r,this.array),n=bA(n,this.array),i=bA(i,this.array)),this.array[e+0]=t,this.array[e+1]=r,this.array[e+2]=n,this.array[e+3]=i,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){let e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return""!==this.name&&(e.name=this.name),35044!==this.usage&&(e.usage=this.usage),e}}class wt extends we{constructor(e,t,r){super(new Int8Array(e),t,r)}}class wr extends we{constructor(e,t,r){super(new Uint8Array(e),t,r)}}class wn extends we{constructor(e,t,r){super(new Uint8ClampedArray(e),t,r)}}class wi extends we{constructor(e,t,r){super(new Int16Array(e),t,r)}}class wa extends we{constructor(e,t,r){super(new Uint16Array(e),t,r)}}class ws extends we{constructor(e,t,r){super(new Int32Array(e),t,r)}}class wo extends we{constructor(e,t,r){super(new Uint32Array(e),t,r)}}class wl extends we{constructor(e,t,r){super(new Uint16Array(e),t,r),this.isFloat16BufferAttribute=!0}getX(e){let t=y5(this.array[e*this.itemSize]);return this.normalized&&(t=bf(t,this.array)),t}setX(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize]=y4(t),this}getY(e){let t=y5(this.array[e*this.itemSize+1]);return this.normalized&&(t=bf(t,this.array)),t}setY(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize+1]=y4(t),this}getZ(e){let t=y5(this.array[e*this.itemSize+2]);return this.normalized&&(t=bf(t,this.array)),t}setZ(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize+2]=y4(t),this}getW(e){let t=y5(this.array[e*this.itemSize+3]);return this.normalized&&(t=bf(t,this.array)),t}setW(e,t){return this.normalized&&(t=bA(t,this.array)),this.array[e*this.itemSize+3]=y4(t),this}setXY(e,t,r){return e*=this.itemSize,this.normalized&&(t=bA(t,this.array),r=bA(r,this.array)),this.array[e+0]=y4(t),this.array[e+1]=y4(r),this}setXYZ(e,t,r,n){return e*=this.itemSize,this.normalized&&(t=bA(t,this.array),r=bA(r,this.array),n=bA(n,this.array)),this.array[e+0]=y4(t),this.array[e+1]=y4(r),this.array[e+2]=y4(n),this}setXYZW(e,t,r,n,i){return e*=this.itemSize,this.normalized&&(t=bA(t,this.array),r=bA(r,this.array),n=bA(n,this.array),i=bA(i,this.array)),this.array[e+0]=y4(t),this.array[e+1]=y4(r),this.array[e+2]=y4(n),this.array[e+3]=y4(i),this}}class wu extends we{constructor(e,t,r){super(new Float32Array(e),t,r)}}let wc=0,wd=new ys,wh=new yP,wp=new bb,wf=new bG,wA=new bG,wg=new bb;class wm extends ba{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:wc++}),this.uuid=bc(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.indirectOffset=0,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(v1(e)?wo:wa)(e,1):this.index=e,this}setIndirect(e,t=0){return this.indirect=e,this.indirectOffset=t,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return void 0!==this.attributes[e]}addGroup(e,t,r=0){this.groups.push({start:e,count:t,materialIndex:r})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){let t=this.attributes.position;void 0!==t&&(t.applyMatrix4(e),t.needsUpdate=!0);let r=this.attributes.normal;if(void 0!==r){let t=new bx().getNormalMatrix(e);r.applyNormalMatrix(t),r.needsUpdate=!0}let n=this.attributes.tangent;return void 0!==n&&(n.transformDirection(e),n.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}applyQuaternion(e){return wd.makeRotationFromQuaternion(e),this.applyMatrix4(wd),this}rotateX(e){return wd.makeRotationX(e),this.applyMatrix4(wd),this}rotateY(e){return wd.makeRotationY(e),this.applyMatrix4(wd),this}rotateZ(e){return wd.makeRotationZ(e),this.applyMatrix4(wd),this}translate(e,t,r){return wd.makeTranslation(e,t,r),this.applyMatrix4(wd),this}scale(e,t,r){return wd.makeScale(e,t,r),this.applyMatrix4(wd),this}lookAt(e){return wh.lookAt(e),wh.updateMatrix(),this.applyMatrix4(wh.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(wp).negate(),this.translate(wp.x,wp.y,wp.z),this}setFromPoints(e){let t=this.getAttribute("position");if(void 0===t){let t=[];for(let r=0,n=e.length;r<n;r++){let n=e[r];t.push(n.x,n.y,n.z||0)}this.setAttribute("position",new wu(t,3))}else{let r=Math.min(e.length,t.count);for(let n=0;n<r;n++){let r=e[n];t.setXYZ(n,r.x,r.y,r.z||0)}e.length>t.count&&br("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new bG);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){bn("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new bb(-1/0,-1/0,-1/0),new bb(Infinity,Infinity,Infinity));return}if(void 0!==e){if(this.boundingBox.setFromBufferAttribute(e),t)for(let e=0,r=t.length;e<r;e++){let r=t[e];wf.setFromBufferAttribute(r),this.morphTargetsRelative?(wg.addVectors(this.boundingBox.min,wf.min),this.boundingBox.expandByPoint(wg),wg.addVectors(this.boundingBox.max,wf.max),this.boundingBox.expandByPoint(wg)):(this.boundingBox.expandByPoint(wf.min),this.boundingBox.expandByPoint(wf.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&bn('BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new b8);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){bn("BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new bb,1/0);return}if(e){let r=this.boundingSphere.center;if(wf.setFromBufferAttribute(e),t)for(let e=0,r=t.length;e<r;e++){let r=t[e];wA.setFromBufferAttribute(r),this.morphTargetsRelative?(wg.addVectors(wf.min,wA.min),wf.expandByPoint(wg),wg.addVectors(wf.max,wA.max),wf.expandByPoint(wg)):(wf.expandByPoint(wA.min),wf.expandByPoint(wA.max))}wf.getCenter(r);let n=0;for(let t=0,i=e.count;t<i;t++)wg.fromBufferAttribute(e,t),n=Math.max(n,r.distanceToSquared(wg));if(t)for(let i=0,a=t.length;i<a;i++){let a=t[i],s=this.morphTargetsRelative;for(let t=0,i=a.count;t<i;t++)wg.fromBufferAttribute(a,t),s&&(wp.fromBufferAttribute(e,t),wg.add(wp)),n=Math.max(n,r.distanceToSquared(wg))}this.boundingSphere.radius=Math.sqrt(n),isNaN(this.boundingSphere.radius)&&bn('BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){let e=this.index,t=this.attributes;if(null===e||void 0===t.position||void 0===t.normal||void 0===t.uv)return void bn("BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");let r=t.position,n=t.normal,i=t.uv;!1===this.hasAttribute("tangent")&&this.setAttribute("tangent",new we(new Float32Array(4*r.count),4));let a=this.getAttribute("tangent"),s=[],o=[];for(let e=0;e<r.count;e++)s[e]=new bb,o[e]=new bb;let l=new bb,u=new bb,c=new bb,d=new bm,h=new bm,p=new bm,f=new bb,A=new bb,g=this.groups;0===g.length&&(g=[{start:0,count:e.count}]);for(let t=0,n=g.length;t<n;++t){let n=g[t],a=n.start,m=n.count;for(let t=a,n=a+m;t<n;t+=3)!function(e,t,n){l.fromBufferAttribute(r,e),u.fromBufferAttribute(r,t),c.fromBufferAttribute(r,n),d.fromBufferAttribute(i,e),h.fromBufferAttribute(i,t),p.fromBufferAttribute(i,n),u.sub(l),c.sub(l),h.sub(d),p.sub(d);let a=1/(h.x*p.y-p.x*h.y);isFinite(a)&&(f.copy(u).multiplyScalar(p.y).addScaledVector(c,-h.y).multiplyScalar(a),A.copy(c).multiplyScalar(h.x).addScaledVector(u,-p.x).multiplyScalar(a),s[e].add(f),s[t].add(f),s[n].add(f),o[e].add(A),o[t].add(A),o[n].add(A))}(e.getX(t+0),e.getX(t+1),e.getX(t+2))}let m=new bb,v=new bb,b=new bb,y=new bb;function w(e){b.fromBufferAttribute(n,e),y.copy(b);let t=s[e];m.copy(t),m.sub(b.multiplyScalar(b.dot(t))).normalize(),v.crossVectors(y,t);let r=v.dot(o[e]);a.setXYZW(e,m.x,m.y,m.z,r<0?-1:1)}for(let t=0,r=g.length;t<r;++t){let r=g[t],n=r.start,i=r.count;for(let t=n,r=n+i;t<r;t+=3)w(e.getX(t+0)),w(e.getX(t+1)),w(e.getX(t+2))}}computeVertexNormals(){let e=this.index,t=this.getAttribute("position");if(void 0!==t){let r=this.getAttribute("normal");if(void 0===r)r=new we(new Float32Array(3*t.count),3),this.setAttribute("normal",r);else for(let e=0,t=r.count;e<t;e++)r.setXYZ(e,0,0,0);let n=new bb,i=new bb,a=new bb,s=new bb,o=new bb,l=new bb,u=new bb,c=new bb;if(e)for(let d=0,h=e.count;d<h;d+=3){let h=e.getX(d+0),p=e.getX(d+1),f=e.getX(d+2);n.fromBufferAttribute(t,h),i.fromBufferAttribute(t,p),a.fromBufferAttribute(t,f),u.subVectors(a,i),c.subVectors(n,i),u.cross(c),s.fromBufferAttribute(r,h),o.fromBufferAttribute(r,p),l.fromBufferAttribute(r,f),s.add(u),o.add(u),l.add(u),r.setXYZ(h,s.x,s.y,s.z),r.setXYZ(p,o.x,o.y,o.z),r.setXYZ(f,l.x,l.y,l.z)}else for(let e=0,s=t.count;e<s;e+=3)n.fromBufferAttribute(t,e+0),i.fromBufferAttribute(t,e+1),a.fromBufferAttribute(t,e+2),u.subVectors(a,i),c.subVectors(n,i),u.cross(c),r.setXYZ(e+0,u.x,u.y,u.z),r.setXYZ(e+1,u.x,u.y,u.z),r.setXYZ(e+2,u.x,u.y,u.z);this.normalizeNormals(),r.needsUpdate=!0}}normalizeNormals(){let e=this.attributes.normal;for(let t=0,r=e.count;t<r;t++)wg.fromBufferAttribute(e,t),wg.normalize(),e.setXYZ(t,wg.x,wg.y,wg.z)}toNonIndexed(){function e(e,t){let r=e.array,n=e.itemSize,i=e.normalized,a=new r.constructor(t.length*n),s=0,o=0;for(let i=0,l=t.length;i<l;i++){s=e.isInterleavedBufferAttribute?t[i]*e.data.stride+e.offset:t[i]*n;for(let e=0;e<n;e++)a[o++]=r[s++]}return new we(a,n,i)}if(null===this.index)return br("BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;let t=new wm,r=this.index.array,n=this.attributes;for(let i in n){let a=e(n[i],r);t.setAttribute(i,a)}let i=this.morphAttributes;for(let n in i){let a=[],s=i[n];for(let t=0,n=s.length;t<n;t++){let n=e(s[t],r);a.push(n)}t.morphAttributes[n]=a}t.morphTargetsRelative=this.morphTargetsRelative;let a=this.groups;for(let e=0,r=a.length;e<r;e++){let r=a[e];t.addGroup(r.start,r.count,r.materialIndex)}return t}toJSON(){let e={metadata:{version:4.7,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,""!==this.name&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),void 0!==this.parameters){let t=this.parameters;for(let r in t)void 0!==t[r]&&(e[r]=t[r]);return e}e.data={attributes:{}};let t=this.index;null!==t&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let r=this.attributes;for(let t in r){let n=r[t];e.data.attributes[t]=n.toJSON(e.data)}let n={},i=!1;for(let t in this.morphAttributes){let r=this.morphAttributes[t],a=[];for(let t=0,n=r.length;t<n;t++){let n=r[t];a.push(n.toJSON(e.data))}a.length>0&&(n[t]=a,i=!0)}i&&(e.data.morphAttributes=n,e.data.morphTargetsRelative=this.morphTargetsRelative);let a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));let s=this.boundingSphere;return null!==s&&(e.data.boundingSphere=s.toJSON()),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let r=e.index;null!==r&&this.setIndex(r.clone());let n=e.attributes;for(let e in n){let r=n[e];this.setAttribute(e,r.clone(t))}let i=e.morphAttributes;for(let e in i){let r=[],n=i[e];for(let e=0,i=n.length;e<i;e++)r.push(n[e].clone(t));this.morphAttributes[e]=r}this.morphTargetsRelative=e.morphTargetsRelative;let a=e.groups;for(let e=0,t=a.length;e<t;e++){let t=a[e];this.addGroup(t.start,t.count,t.materialIndex)}let s=e.boundingBox;null!==s&&(this.boundingBox=s.clone());let o=e.boundingSphere;return null!==o&&(this.boundingSphere=o.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}let wv=new ys,wb=new ya,wy=new b8,ww=new bb,wx=new bb,wC=new bb,wE=new bb,wS=new bb,wM=new bb,wI=new bb,wB=new bb;class wT extends yP{constructor(e=new wm,t=new y2){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),void 0!==e.morphTargetInfluences&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),void 0!==e.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let r=e[t[0]];if(void 0!==r){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=r.length;e<t;e++){let t=r[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}getVertexPosition(e,t){let r=this.geometry,n=r.attributes.position,i=r.morphAttributes.position,a=r.morphTargetsRelative;t.fromBufferAttribute(n,e);let s=this.morphTargetInfluences;if(i&&s){wM.set(0,0,0);for(let r=0,n=i.length;r<n;r++){let n=s[r],o=i[r];0!==n&&(wS.fromBufferAttribute(o,e),a?wM.addScaledVector(wS,n):wM.addScaledVector(wS.sub(t),n))}t.add(wM)}return t}raycast(e,t){let r=this.geometry,n=this.material,i=this.matrixWorld;void 0===n||(null===r.boundingSphere&&r.computeBoundingSphere(),wy.copy(r.boundingSphere),wy.applyMatrix4(i),wb.copy(e.ray).recast(e.near),!1===wy.containsPoint(wb.origin)&&(null===wb.intersectSphere(wy,ww)||wb.origin.distanceToSquared(ww)>(e.far-e.near)**2)||(wv.copy(i).invert(),wb.copy(e.ray).applyMatrix4(wv),(null===r.boundingBox||!1!==wb.intersectsBox(r.boundingBox))&&this._computeIntersections(e,t,wb)))}_computeIntersections(e,t,r){let n,i=this.geometry,a=this.material,s=i.index,o=i.attributes.position,l=i.attributes.uv,u=i.attributes.uv1,c=i.attributes.normal,d=i.groups,h=i.drawRange;if(null!==s)if(Array.isArray(a))for(let i=0,o=d.length;i<o;i++){let o=d[i],p=a[o.materialIndex],f=Math.max(o.start,h.start),A=Math.min(s.count,Math.min(o.start+o.count,h.start+h.count));for(let i=f;i<A;i+=3)(n=wk(this,p,e,r,l,u,c,s.getX(i),s.getX(i+1),s.getX(i+2)))&&(n.faceIndex=Math.floor(i/3),n.face.materialIndex=o.materialIndex,t.push(n))}else{let i=Math.max(0,h.start),o=Math.min(s.count,h.start+h.count);for(let d=i;d<o;d+=3)(n=wk(this,a,e,r,l,u,c,s.getX(d),s.getX(d+1),s.getX(d+2)))&&(n.faceIndex=Math.floor(d/3),t.push(n))}else if(void 0!==o)if(Array.isArray(a))for(let i=0,s=d.length;i<s;i++){let s=d[i],p=a[s.materialIndex],f=Math.max(s.start,h.start),A=Math.min(o.count,Math.min(s.start+s.count,h.start+h.count));for(let i=f;i<A;i+=3)(n=wk(this,p,e,r,l,u,c,i,i+1,i+2))&&(n.faceIndex=Math.floor(i/3),n.face.materialIndex=s.materialIndex,t.push(n))}else{let i=Math.max(0,h.start),s=Math.min(o.count,h.start+h.count);for(let o=i;o<s;o+=3)(n=wk(this,a,e,r,l,u,c,o,o+1,o+2))&&(n.faceIndex=Math.floor(o/3),t.push(n))}}}function wk(e,t,r,n,i,a,s,o,l,u){e.getVertexPosition(o,wx),e.getVertexPosition(l,wC),e.getVertexPosition(u,wE);let c=function(e,t,r,n,i,a,s,o){if(null===(1===t.side?n.intersectTriangle(s,a,i,!0,o):n.intersectTriangle(i,a,s,0===t.side,o)))return null;wB.copy(o),wB.applyMatrix4(e.matrixWorld);let l=r.ray.origin.distanceTo(wB);return l<r.near||l>r.far?null:{distance:l,point:wB.clone(),object:e}}(e,t,r,n,wx,wC,wE,wI);if(c){let e=new bb;yq.getBarycoord(wI,wx,wC,wE,e),i&&(c.uv=yq.getInterpolatedAttribute(i,o,l,u,e,new bm)),a&&(c.uv1=yq.getInterpolatedAttribute(a,o,l,u,e,new bm)),s&&(c.normal=yq.getInterpolatedAttribute(s,o,l,u,e,new bb),c.normal.dot(n.direction)>0&&c.normal.multiplyScalar(-1));let t={a:o,b:l,c:u,normal:new bb,materialIndex:0};yq.getNormal(wx,wC,wE,t.normal),c.face=t,c.barycoord=e}return c}class w_ extends wm{constructor(e=1,t=1,r=1,n=1,i=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:r,widthSegments:n,heightSegments:i,depthSegments:a};const s=this;n=Math.floor(n),i=Math.floor(i);const o=[],l=[],u=[],c=[];let d=0,h=0;function p(e,t,r,n,i,a,p,f,A,g,m){let v=a/A,b=p/g,y=a/2,w=p/2,x=f/2,C=A+1,E=g+1,S=0,M=0,I=new bb;for(let a=0;a<E;a++){let s=a*b-w;for(let o=0;o<C;o++){let d=o*v-y;I[e]=d*n,I[t]=s*i,I[r]=x,l.push(I.x,I.y,I.z),I[e]=0,I[t]=0,I[r]=f>0?1:-1,u.push(I.x,I.y,I.z),c.push(o/A),c.push(1-a/g),S+=1}}for(let e=0;e<g;e++)for(let t=0;t<A;t++){let r=d+t+C*e,n=d+t+C*(e+1),i=d+(t+1)+C*(e+1),a=d+(t+1)+C*e;o.push(r,n,a),o.push(n,i,a),M+=6}s.addGroup(h,M,m),h+=M,d+=S}p("z","y","x",-1,-1,r,t,e,a=Math.floor(a),i,0),p("z","y","x",1,-1,r,t,-e,a,i,1),p("x","z","y",1,1,e,r,t,n,a,2),p("x","z","y",1,-1,e,r,-t,n,a,3),p("x","y","z",1,-1,e,t,r,n,i,4),p("x","y","z",-1,-1,e,t,-r,n,i,5),this.setIndex(o),this.setAttribute("position",new wu(l,3)),this.setAttribute("normal",new wu(u,3)),this.setAttribute("uv",new wu(c,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new w_(e.width,e.height,e.depth,e.widthSegments,e.heightSegments,e.depthSegments)}}function wR(e){let t={};for(let r in e)for(let n in t[r]={},e[r]){let i=e[r][n];i&&(i.isColor||i.isMatrix3||i.isMatrix4||i.isVector2||i.isVector3||i.isVector4||i.isTexture||i.isQuaternion)?i.isRenderTargetTexture?(br("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),t[r][n]=null):t[r][n]=i.clone():Array.isArray(i)?t[r][n]=i.slice():t[r][n]=i}return t}function wP(e){let t={};for(let r=0;r<e.length;r++){let n=wR(e[r]);for(let e in n)t[e]=n[e]}return t}function wD(e){let t=e.getRenderTarget();return null===t?e.outputColorSpace:!0===t.isXRRenderTarget?t.texture.colorSpace:bM.workingColorSpace}let wL={clone:wR,merge:wP};class wF extends y1{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader="void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",this.fragmentShader="void main() {\n gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}",this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,void 0!==e&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=wR(e.uniforms),this.uniformsGroups=function(e){let t=[];for(let r=0;r<e.length;r++)t.push(e[r].clone());return t}(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this.defaultAttributeValues=Object.assign({},e.defaultAttributeValues),this.index0AttributeName=e.index0AttributeName,this.uniformsNeedUpdate=e.uniformsNeedUpdate,this}toJSON(e){let t=super.toJSON(e);for(let r in t.glslVersion=this.glslVersion,t.uniforms={},this.uniforms){let n=this.uniforms[r].value;n&&n.isTexture?t.uniforms[r]={type:"t",value:n.toJSON(e).uuid}:n&&n.isColor?t.uniforms[r]={type:"c",value:n.getHex()}:n&&n.isVector2?t.uniforms[r]={type:"v2",value:n.toArray()}:n&&n.isVector3?t.uniforms[r]={type:"v3",value:n.toArray()}:n&&n.isVector4?t.uniforms[r]={type:"v4",value:n.toArray()}:n&&n.isMatrix3?t.uniforms[r]={type:"m3",value:n.toArray()}:n&&n.isMatrix4?t.uniforms[r]={type:"m4",value:n.toArray()}:t.uniforms[r]={value:n}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;let r={};for(let e in this.extensions)!0===this.extensions[e]&&(r[e]=!0);return Object.keys(r).length>0&&(t.extensions=r),t}}class wO extends yP{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new ys,this.projectionMatrix=new ys,this.projectionMatrixInverse=new ys,this.coordinateSystem=2e3,this._reversedDepth=!1}get reversedDepth(){return this._reversedDepth}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}let wN=new bb,wQ=new bm,wU=new bm;class wz extends wO{constructor(e=50,t=1,r=.1,n=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=r,this.far=n,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){let t=.5*this.getFilmHeight()/e;this.fov=2*bu*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){let e=Math.tan(.5*bl*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return 2*bu*Math.atan(Math.tan(.5*bl*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,r){wN.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(wN.x,wN.y).multiplyScalar(-e/wN.z),wN.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),r.set(wN.x,wN.y).multiplyScalar(-e/wN.z)}getViewSize(e,t){return this.getViewBounds(e,wQ,wU),t.subVectors(wU,wQ)}setViewOffset(e,t,r,n,i,a){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=r,this.view.offsetY=n,this.view.width=i,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=this.near,t=e*Math.tan(.5*bl*this.fov)/this.zoom,r=2*t,n=this.aspect*r,i=-.5*n,a=this.view;if(null!==this.view&&this.view.enabled){let e=a.fullWidth,s=a.fullHeight;i+=a.offsetX*n/e,t-=a.offsetY*r/s,n*=a.width/e,r*=a.height/s}let s=this.filmOffset;0!==s&&(i+=e*s/this.getFilmWidth()),this.projectionMatrix.makePerspective(i,i+n,t,t-r,e,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}class wH extends yP{constructor(e,t,r){super(),this.type="CubeCamera",this.renderTarget=r,this.coordinateSystem=null,this.activeMipmapLevel=0;const n=new wz(-90,1,e,t);n.layers=this.layers,this.add(n);const i=new wz(-90,1,e,t);i.layers=this.layers,this.add(i);const a=new wz(-90,1,e,t);a.layers=this.layers,this.add(a);const s=new wz(-90,1,e,t);s.layers=this.layers,this.add(s);const o=new wz(-90,1,e,t);o.layers=this.layers,this.add(o);const l=new wz(-90,1,e,t);l.layers=this.layers,this.add(l)}updateCoordinateSystem(){let e=this.coordinateSystem,t=this.children.concat(),[r,n,i,a,s,o]=t;for(let e of t)this.remove(e);if(2e3===e)r.up.set(0,1,0),r.lookAt(1,0,0),n.up.set(0,1,0),n.lookAt(-1,0,0),i.up.set(0,0,-1),i.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),s.up.set(0,1,0),s.lookAt(0,0,1),o.up.set(0,1,0),o.lookAt(0,0,-1);else if(2001===e)r.up.set(0,-1,0),r.lookAt(-1,0,0),n.up.set(0,-1,0),n.lookAt(1,0,0),i.up.set(0,0,1),i.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),s.up.set(0,-1,0),s.lookAt(0,0,1),o.up.set(0,-1,0),o.lookAt(0,0,-1);else throw Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(let e of t)this.add(e),e.updateMatrixWorld()}update(e,t){null===this.parent&&this.updateMatrixWorld();let{renderTarget:r,activeMipmapLevel:n}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());let[i,a,s,o,l,u]=this.children,c=e.getRenderTarget(),d=e.getActiveCubeFace(),h=e.getActiveMipmapLevel(),p=e.xr.enabled;e.xr.enabled=!1;let f=r.texture.generateMipmaps;r.texture.generateMipmaps=!1,e.setRenderTarget(r,0,n),e.render(t,i),e.setRenderTarget(r,1,n),e.render(t,a),e.setRenderTarget(r,2,n),e.render(t,s),e.setRenderTarget(r,3,n),e.render(t,o),e.setRenderTarget(r,4,n),e.render(t,l),r.texture.generateMipmaps=f,e.setRenderTarget(r,5,n),e.render(t,u),e.setRenderTarget(c,d,h),e.xr.enabled=p,r.texture.needsPMREMUpdate=!0}}class wG extends bL{constructor(e=[],t=301,r,n,i,a,s,o,l,u){super(e,t,r,n,i,a,s,o,l,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class wj extends bN{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const r={width:e,height:e,depth:1};this.texture=new wG([r,r,r,r,r,r]),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let r={uniforms:{tEquirect:{value:null}},vertexShader:`
7
7
 
8
8
  varying vec3 vWorldDirection;
9
9
 
@@ -6606,7 +6606,7 @@ No matching component was found for:
6606
6606
  ${ev}
6607
6607
  }
6608
6608
 
6609
- ${em}`:em);function j1(e){return"shopify"===e.source||void 0!==e.apiKey}function j2(e){return"shopify"===e.source?"wallart-shopify":"wallart"}function j3(e){if(!ic(e))return null;let t=e.response?.status;return 401===t?"unauthorized":402===t?"payment-required":null}function j4(e){return ie.create({baseURL:e,timeout:3e4})}let j5=new Set(["common","delete","get","head","post","put","patch","options","purge","link","unlink"]);function j9(){return globalThis.process?.env?.NODE_ENV}function j8(e){if(void 0===e)return[];let t="function"==typeof e.toJSON?e.toJSON():e,r=[];return!function e(t,r){if(null!==t&&"object"==typeof t)for(let[n,i]of Object.entries(t)){if(null==i)continue;let t=n.toLowerCase();if("common"===t){e(i,r);continue}j5.has(t)||r.push([n,String(i)])}}(t,r),r}function j6(e){return!!("u">typeof FormData&&e instanceof FormData)||null!==e&&"object"==typeof e&&(e.constructor?.name==="FormData"||"function"==typeof e.getBoundary)}let j7=new Set(["authorization","cookie","set-cookie","x-xsrf-token"]);function Ve(e){if(null==e)return;let t="function"==typeof e.toJSON?e.toJSON():e;if(null===t||"object"!=typeof t)return;let r={};for(let[e,n]of Object.entries(t))null!=n&&(r[e]=j7.has(e.toLowerCase())?"[redacted]":String(n));return r}function Vt(e){if(null!=e){if("string"==typeof e)try{return JSON.parse(e)}catch{return e.length>2e3?`${e.slice(0,2e3)}… (${e.length} chars)`:e}return j6(e)?"[FormData]":e}}function Vr(e){let t=(e.requestConfig.method??"GET").toUpperCase(),r=e.requestConfig.url??"",n=`[api:server] ${t} ${r} → ${e.status} (${e.durationMs}ms)`,i={requestId:e.requestId,...e.error?{error:e.error}:{},params:e.requestConfig.params,requestBody:Vt(e.requestConfig.data),requestHeaders:Ve(e.requestConfig.headers),responseHeaders:Ve(e.responseHeaders),responseBody:Vt(e.responseBody)};(e.status>=500||void 0!==e.error&&0===e.status?console.error:e.status>=400?console.warn:console.log)(n,i)}function Vn({clientName:e,configureFunctionName:t,defaultBaseURL:r}){let n=j4(r),i=j4(r),a=null,s=null,o=null,l=null,u=null,c=null;async function d(e,t){let r=function(e,t){let r;if(void 0===t.data||j6(t.data))return t;let n=ip.from(t.headers);return n.has("Content-Type")||void 0!==(r=e.defaults.headers.common)&&ip.from(r).has("Content-Type")||n.set("Content-Type","application/json"),t.headers=n,t}(e,function(e){let t=ip.from(e.headers);if(null!==o){let e=o()?.trim();e&&!t.has("Authorization")&&t.set("Authorization",`Bearer ${e}`)}if(null!==c)for(let[r,n]of Object.entries(c({url:e.url,method:e.method})))n&&!t.has(r)&&t.set(r,n);return e.headers=t,e}({...t})),n=function(e){let t,r=ip.from(e.headers),n=r.get("x-request-id");if("string"==typeof n&&n.length>0)return n;let i=(t=globalThis.crypto,"function"==typeof t?.randomUUID?t.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`);return r.set("x-request-id",i),e.headers=r,i}(r),i=function(){if("u">typeof window)return!1;let e=j9(),t=globalThis.process;return t?.env?.DEBUG_API==="true"||"production"!==e&&"test"!==e&&"testing"!==e}(),a=i?Date.now():0;try{let t=await e.request(r);return i&&Vr({requestConfig:r,requestId:n,status:t.status,durationMs:Date.now()-a,responseHeaders:t.headers,responseBody:t.data}),t}catch(e){throw i&&Vr({requestConfig:r,requestId:n,status:e.response?.status??0,durationMs:Date.now()-a,responseHeaders:e.response?.headers,responseBody:e.response?.data,error:e.message}),e}}async function h(e){return d(e.skipUnauthorizedRecovery?i:n,function(e){let{skipUnauthorizedRecovery:t,...r}=e;return r}(e))}let p=async e=>h({...e,skipUnauthorizedRecovery:!0});function f(){return null!==a}return{configureClientRuntime:function(t){let r,s=(r=function(e){let t=j8(e);if(0===t.length)return;let r=new Map;for(let[e,n]of t)r.set(e.toLowerCase(),n);return Object.fromEntries(Array.from(r.entries()).sort(([e],[t])=>e.localeCompare(t)))}(t.headers),JSON.stringify({...void 0!==t.baseURL?{baseURL:t.baseURL}:{},...void 0!==t.timeout?{timeout:t.timeout}:{},...void 0!==r?{headers:r}:{}}));if("{}"!==s){if(null!==a){if(a===s)return;let t=`${e} already configured. Existing: ${a}. New: ${s}.`;if("production"===j9())return void console.warn(t);throw Error(t)}for(let e of[n,i])void 0!==t.baseURL&&(e.defaults.baseURL=t.baseURL),void 0!==t.timeout&&(e.defaults.timeout=t.timeout),void 0!==t.headers&&function(e,t){let r=e.defaults.headers,n=r.common,i=ip.from(n);for(let[e,r]of j8(t))i.set(e,r);r.common=i.toJSON(),e.defaults.headers=r}(e,t.headers);a=s}},configureAccessTokenResolverRuntime:function(e){o=e},configureUnauthorizedHandlerRuntime:function(e){if(l=e,null===e){null!==s&&(n.interceptors.response.eject(s),s=null),u=null;return}null===s&&(s=n.interceptors.response.use(e=>e,async e=>{let t=e.config;if(e.response?.status!==401||null===l||void 0===t||t._apiRetried)return Promise.reject(e);if(null===u){let t=l;if(null===t)return Promise.reject(e);u=Promise.resolve().then(()=>t(e,{requestWithoutUnauthorizedRecovery:p})).finally(()=>{u=null})}try{if(!await u)return Promise.reject(e);t._apiRetried=!0;let r=ip.from(t.headers);return r.delete("Authorization"),t.headers=r,d(n,t)}catch{return Promise.reject(e)}}))},configureHeadersResolverRuntime:function(e){c=e},isClientConfiguredRuntime:f,assertClientConfiguredRuntime:function(){if(!f())throw Error(`${e} is not configured. Call ${t}(...) before making requests.`)},resetClientForTestsRuntime:function(){let e;if("test"!==(e=j9())&&"testing"!==e)throw Error("resetApiClientForTests() can only be called in test environment.");n=j4(r),i=j4(r),a=null,s=null,o=null,l=null,u=null,c=null},requestRuntime:h,requestWithoutUnauthorizedRecovery:p,addResponseInterceptorRuntime:function(e,t){return n.interceptors.response.use(e,t)}}}let Vi=Vn({clientName:"API node client",configureFunctionName:"configureNodeApiClient",defaultBaseURL:"https://api.vizbl.com"}),Va=Vi.configureClientRuntime;Vi.configureAccessTokenResolverRuntime,Vi.configureHeadersResolverRuntime,Vi.configureUnauthorizedHandlerRuntime,Vi.isClientConfiguredRuntime,Vi.assertClientConfiguredRuntime,Vi.resetClientForTestsRuntime;let Vs=Vi.requestRuntime;async function Vo(e){return Vs(e)}function Vl(e){let t=new FormData;function r(e,r){r instanceof Blob?t.append(e,r):r instanceof Date?t.append(e,r.toISOString()):"number"==typeof r||"boolean"==typeof r?t.append(e,String(r)):"string"==typeof r?t.append(e,r):"object"==typeof r&&t.append(e,new Blob([JSON.stringify(r)],{type:"application/json"}))}return e&&Object.entries(e).forEach(([e,t])=>{if(null!=t)if(Array.isArray(t))for(let n of t)null!=n&&r(e,n);else r(e,t)}),t}async function Vu(e,t={}){let{client:r=Vo,...n}=t,i=Vl(e);return(await r({method:"POST",url:"/inference/room-planes/run-raw",data:i,...n})).data}async function Vc(e,t={}){let{client:r=Vo,...n}=t;return(await r({method:"POST",url:"/public/widget/activate-wallart",params:e,...n})).data}async function Vd({tinuuid:e},t,r={}){let{client:n=Vo,...i}=r;return(await n({method:"GET",url:`/public/objects/by-tinuuid/${e}`,params:t,...i})).data}async function Vh(e,t,r={}){let{client:n=Vo,...i}=r;return(await n({method:"POST",url:"/public/objects/public",params:t,data:e,...i})).data}async function Vp(e,t={}){let{client:r=Vo,...n}=t,i=Vl(e);return(await r({method:"POST",url:"/public/inference/room-planes/run-raw",data:i,...n})).data}Vi.requestWithoutUnauthorizedRecovery,Vi.addResponseInterceptorRuntime;let Vf=Vn({clientName:"API client",configureFunctionName:"configureApiClient",defaultBaseURL:"https://api.vizbl.us"}),VA=Vf.configureClientRuntime;Vf.configureAccessTokenResolverRuntime,Vf.configureHeadersResolverRuntime,Vf.configureUnauthorizedHandlerRuntime,Vf.isClientConfiguredRuntime,Vf.assertClientConfiguredRuntime,Vf.resetClientForTestsRuntime;let Vg=Vf.requestRuntime;async function Vm(e){return Vg(e)}async function Vv(e,t={}){let{client:r=Vm,...n}=t;return(await r({method:"POST",url:"/obj/Fetch",data:e,...n})).data}async function Vb(e,t={}){let{client:r=Vm,...n}=t;return(await r({method:"POST",url:"/obj/GetPublic",data:e,...n})).data}function Vy(e,t){return["room-viewer","object",{apiKey:t.apiKey??null,source:t.source,tinuuid:e??null}]}async function Vw(e,t){return j1(t)?Vd({tinuuid:e},{productType:j2(t)},{baseURL:t.baseURL,headers:{"x-api-key":t.apiKey},signal:t.signal}):Vv({tinuuid:e},{signal:t.signal})}function Vx(...e){return ls(oc(e))}Vf.requestWithoutUnauthorizedRecovery,Vf.addResponseInterceptorRuntime;let VC=ll("cursor-pointer inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-xl transition-all disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary--hover active:bg-primary--pressed disabled:bg-primary--disabled disabled:opacity-20",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary--hover active:bg-secondary--pressed disabled:bg-secondary--disabled disabled:opacity-20",outline:"border border-button-outline bg-transparent text-foreground hover:border-button-outline-hover active:bg-button-outline-pressed disabled:border-border-dark disabled:opacity-20",ghost:"hover:bg-accent hover:text-accent-foreground active:bg-accent--pressed",contrast:"bg-contrast text-contrast-foreground hover:bg-contrast--hover active:bg-contrast--pressed disabled:bg-contrast--disabled disabled:opacity-30"},size:{default:"h-9 px-3.5 typo-button-normal [&_svg]:size-5",sm:"h-8 px-3 typo-button-small [&_svg]:size-4",lg:"h-11 px-4 typo-button-big [&_svg]:size-6",icon:"size-9 rounded-full [&_svg]:size-5","icon-sm":"size-8 rounded-full [&_svg]:size-4","icon-lg":"size-11 rounded-full [&_svg]:size-6"}},defaultVariants:{variant:"default",size:"default"}});function VE({className:e,variant:t,size:r,asChild:n=!1,...i}){return(0,rp.jsx)(n?oo:"button",{"data-slot":"button",className:Vx(VC({variant:t,size:r,className:e})),...i})}function VS({...e}){return(0,rp.jsx)(uT,{"data-slot":"dialog",...e})}function VM({...e}){return(0,rp.jsx)(uD,{"data-slot":"dialog-portal",...e})}function VI({...e}){return(0,rp.jsx)(uJ,{"data-slot":"dialog-close",...e})}function VB({className:e,...t}){return(0,rp.jsx)(uF,{"data-slot":"dialog-overlay",className:Vx("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...t})}function VT({className:e,children:t,showCloseButton:r=!0,portalContainer:n,...i}){return(0,rp.jsxs)(VM,{"data-slot":"dialog-portal",container:n,children:[(0,rp.jsx)(VB,{}),(0,rp.jsxs)(uU,{"data-slot":"dialog-content",className:Vx("bg-background-containers data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-6 rounded-3xl border-0 p-6 shadow-[var(--shadow-login)] duration-200 outline-none sm:max-w-120 sm:p-10",e),...i,children:[t,r&&(0,rp.jsxs)(uJ,{"data-slot":"dialog-close",className:"focus-visible:ring-ring/30 absolute top-4 right-4 inline-flex size-6 cursor-pointer items-center justify-center rounded-full text-icons-light transition-colors hover:text-icons-normal focus-visible:text-icons-dark focus-visible:ring-2 focus-visible:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0",children:[(0,rp.jsx)(u8,{className:"size-6"}),(0,rp.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function Vk({className:e,...t}){return(0,rp.jsx)("div",{"data-slot":"dialog-header",className:Vx("flex flex-col gap-2 text-left",e),...t})}function V_({className:e,...t}){return(0,rp.jsx)(uV,{"data-slot":"dialog-title",className:Vx("typo-base-18 text-text-dark",e),...t})}function VR({className:e,...t}){return(0,rp.jsx)(uq,{"data-slot":"dialog-description",className:Vx("typo-base-16 text-text-light",e),...t})}function VP(e){return(0,rp.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rp.jsx)("path",{d:"M22.5601 16.3031L14.8901 3.58311C14.58 3.09793 14.1526 2.69864 13.6476 2.42205C13.1425 2.14546 12.5759 2.00049 12.0001 2.00049C11.4243 2.00049 10.8577 2.14546 10.3526 2.42205C9.84755 2.69864 9.42024 3.09793 9.1101 3.58311L1.4401 16.3031C1.16915 16.7548 1.02189 17.2698 1.01311 17.7964C1.00434 18.323 1.13436 18.8427 1.3901 19.3031C1.68578 19.8214 2.11376 20.2518 2.6303 20.5505C3.14684 20.8492 3.73343 21.0054 4.3301 21.0031H19.6701C20.2629 21.0094 20.8468 20.8593 21.363 20.5678C21.8792 20.2764 22.3093 19.8539 22.6101 19.3431C22.8734 18.8779 23.0075 18.3508 22.9987 17.8163C22.9899 17.2818 22.8385 16.7594 22.5601 16.3031ZM20.8601 18.3531C20.7399 18.5597 20.5655 18.7295 20.3557 18.8441C20.146 18.9586 19.9089 19.0136 19.6701 19.0031H4.3301C4.09132 19.0136 3.85422 18.9586 3.64446 18.8441C3.4347 18.7295 3.26029 18.5597 3.1401 18.3531C3.05233 18.2011 3.00613 18.0286 3.00613 17.8531C3.00613 17.6776 3.05233 17.5051 3.1401 17.3531L10.8201 4.62311C10.9581 4.44082 11.1365 4.29298 11.3412 4.19119C11.5459 4.08939 11.7715 4.03642 12.0001 4.03642C12.2287 4.03642 12.4543 4.08939 12.659 4.19119C12.8637 4.29298 13.0421 4.44082 13.1801 4.62311L20.8501 17.3431C20.9413 17.4954 20.9902 17.6693 20.992 17.8468C20.9937 18.0243 20.9482 18.199 20.8601 18.3531Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M12.0001 17.0001C12.2653 17.0001 12.5197 16.8948 12.7072 16.7073C12.8948 16.5197 13.0001 16.2654 13.0001 16.0001C13.0001 15.7349 12.8948 15.4806 12.7072 15.293C12.5197 15.1055 12.2653 15.0001 12.0001 15.0001C11.7349 15.0001 11.4806 15.1055 11.293 15.293C11.1055 15.4806 11.0001 15.7349 11.0001 16.0001C11.0001 16.2654 11.1055 16.5197 11.293 16.7073C11.4806 16.8948 11.7349 17.0001 12.0001 17.0001Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M12.0001 8.00023C11.7349 8.00023 11.4806 8.10559 11.293 8.29313C11.1055 8.48066 11.0001 8.73502 11.0001 9.00023V13.0002C11.0001 13.2655 11.1055 13.5198 11.293 13.7073C11.4806 13.8949 11.7349 14.0002 12.0001 14.0002C12.2653 14.0002 12.5197 13.8949 12.7072 13.7073C12.8948 13.5198 13.0001 13.2655 13.0001 13.0002V9.00023C13.0001 8.73502 12.8948 8.48066 12.7072 8.29313C12.5197 8.10559 12.2653 8.00023 12.0001 8.00023Z",fill:"currentColor"})]})}function VD(e){return(0,rp.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",...e,children:(0,rp.jsx)("path",{d:"M8.21723 14.9975C8.10298 14.997 7.99004 14.9731 7.8854 14.9272C7.78077 14.8814 7.68665 14.8145 7.60889 14.7308L3.55889 10.4225C3.4075 10.2611 3.3264 10.0463 3.33343 9.82513C3.34046 9.604 3.43505 9.39471 3.59639 9.24332C3.75773 9.09192 3.97261 9.01082 4.19374 9.01785C4.41488 9.02489 4.62417 9.11948 4.77556 9.28082L8.20889 12.9392L15.2172 5.27248C15.2883 5.18392 15.3768 5.11083 15.4772 5.0577C15.5776 5.00458 15.6878 4.97254 15.8011 4.96355C15.9143 4.95456 16.0282 4.96882 16.1357 5.00544C16.2432 5.04207 16.3421 5.10029 16.4263 5.17652C16.5105 5.25276 16.5782 5.3454 16.6253 5.44877C16.6724 5.55213 16.6979 5.66403 16.7001 5.7776C16.7024 5.89116 16.6815 6.00399 16.6385 6.10916C16.5956 6.21433 16.5316 6.30961 16.4506 6.38915L8.83389 14.7225C8.75686 14.8077 8.66308 14.8761 8.55841 14.9234C8.45373 14.9707 8.34042 14.996 8.22556 14.9975H8.21723Z",fill:"currentColor"})})}function VL(e){return(0,rp.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:(0,rp.jsx)("path",{d:"M12.0002 15.496C11.8686 15.4968 11.7381 15.4716 11.6163 15.4218C11.4944 15.372 11.3836 15.2987 11.2902 15.206L7.29019 11.206C7.10188 11.0177 6.99609 10.7623 6.99609 10.496C6.99609 10.2297 7.10188 9.97434 7.29019 9.78604C7.47849 9.59773 7.73388 9.49194 8.00019 9.49194C8.26649 9.49194 8.52188 9.59773 8.71019 9.78604L12.0002 13.096L15.3002 9.91604C15.3922 9.81375 15.5043 9.73154 15.6295 9.67455C15.7547 9.61756 15.8903 9.58703 16.0279 9.58485C16.1654 9.58267 16.302 9.60889 16.4289 9.66189C16.5559 9.71488 16.6705 9.79349 16.7657 9.89282C16.8609 9.99214 16.9346 10.11 16.9821 10.2391C17.0297 10.3682 17.0501 10.5057 17.042 10.6431C17.034 10.7804 16.9977 10.9146 16.9355 11.0373C16.8732 11.16 16.7863 11.2685 16.6802 11.356L12.6802 15.216C12.4973 15.3924 12.2542 15.4925 12.0002 15.496Z",fill:"currentColor"})})}function VF(e){return(0,rp.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rp.jsx)("path",{d:"M12 2C11.7348 2 11.4804 2.10536 11.2929 2.29289C11.1054 2.48043 11 2.73478 11 3V5C11 5.26522 11.1054 5.51957 11.2929 5.70711C11.4804 5.89464 11.7348 6 12 6C12.2652 6 12.5196 5.89464 12.7071 5.70711C12.8946 5.51957 13 5.26522 13 5V3C13 2.73478 12.8946 2.48043 12.7071 2.29289C12.5196 2.10536 12.2652 2 12 2Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M21.0002 11H19.0002C18.735 11 18.4806 11.1054 18.2931 11.2929C18.1055 11.4804 18.0002 11.7348 18.0002 12C18.0002 12.2652 18.1055 12.5196 18.2931 12.7071C18.4806 12.8946 18.735 13 19.0002 13H21.0002C21.2654 13 21.5197 12.8946 21.7073 12.7071C21.8948 12.5196 22.0002 12.2652 22.0002 12C22.0002 11.7348 21.8948 11.4804 21.7073 11.2929C21.5197 11.1054 21.2654 11 21.0002 11Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M6 12C6 11.7348 5.89464 11.4804 5.70711 11.2929C5.51957 11.1054 5.26522 11 5 11H3C2.73478 11 2.48043 11.1054 2.29289 11.2929C2.10536 11.4804 2 11.7348 2 12C2 12.2652 2.10536 12.5196 2.29289 12.7071C2.48043 12.8946 2.73478 13 3 13H5C5.26522 13 5.51957 12.8946 5.70711 12.7071C5.89464 12.5196 6 12.2652 6 12Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M6.22009 5.00298C6.02357 4.82786 5.76656 4.7362 5.50358 4.74744C5.2406 4.75869 4.99234 4.87196 4.8115 5.06322C4.63065 5.25447 4.53143 5.50867 4.5349 5.77187C4.53838 6.03507 4.64426 6.28656 4.83009 6.47298L6.27009 7.86298C6.36673 7.95629 6.48117 8.02917 6.60659 8.07728C6.73201 8.12538 6.86584 8.14773 7.00009 8.14298C7.1348 8.14246 7.26801 8.11474 7.39173 8.06147C7.51546 8.0082 7.62714 7.93048 7.72009 7.83298C7.90634 7.64561 8.01088 7.39216 8.01088 7.12798C8.01088 6.86379 7.90634 6.61034 7.72009 6.42298L6.22009 5.00298Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M17 8.14285C17.2575 8.14182 17.5047 8.04153 17.69 7.86285L19.13 6.47285C19.3057 6.2893 19.4049 6.04577 19.4075 5.79172C19.4102 5.53767 19.316 5.29214 19.1441 5.10502C18.9723 4.91789 18.7356 4.80319 18.4823 4.78421C18.2289 4.76524 17.9779 4.84341 17.78 5.00285L16.34 6.42285C16.1538 6.61021 16.0493 6.86366 16.0493 7.12785C16.0493 7.39203 16.1538 7.64548 16.34 7.83285C16.5132 8.01557 16.7489 8.12627 17 8.14285Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M12 17.9999C11.7348 17.9999 11.4804 18.1053 11.2929 18.2928C11.1054 18.4803 11 18.7347 11 18.9999V20.9999C11 21.2651 11.1054 21.5195 11.2929 21.707C11.4804 21.8946 11.7348 21.9999 12 21.9999C12.2652 21.9999 12.5196 21.8946 12.7071 21.707C12.8946 21.5195 13 21.2651 13 20.9999V18.9999C13 18.7347 12.8946 18.4803 12.7071 18.2928C12.5196 18.1053 12.2652 17.9999 12 17.9999Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M17.7302 16.1399C17.5392 15.9556 17.2829 15.8547 17.0175 15.8594C16.7521 15.864 16.4995 15.974 16.3152 16.1649C16.1309 16.3559 16.0299 16.6122 16.0346 16.8776C16.0393 17.143 16.1492 17.3956 16.3402 17.5799L17.7802 18.9999C17.9702 19.1835 18.2251 19.2845 18.4893 19.2808C18.7535 19.277 19.0055 19.1688 19.1902 18.9799C19.2837 18.8868 19.3579 18.7762 19.4085 18.6543C19.4591 18.5325 19.4851 18.4019 19.4851 18.2699C19.4851 18.138 19.4591 18.0073 19.4085 17.8855C19.3579 17.7637 19.2837 17.653 19.1902 17.5599L17.7302 16.1399Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M6.27011 16.141L4.83011 17.531C4.73638 17.624 4.66198 17.7346 4.61121 17.8564C4.56045 17.9783 4.53431 18.109 4.53431 18.241C4.53431 18.373 4.56045 18.5037 4.61121 18.6256C4.66198 18.7474 4.73638 18.858 4.83011 18.951C4.9239 19.0467 5.03596 19.1226 5.15965 19.1741C5.28333 19.2256 5.41612 19.2518 5.55011 19.251C5.79662 19.2531 6.03522 19.1641 6.22011 19.001L7.66011 17.611C7.75466 17.5197 7.83031 17.4107 7.88273 17.2902C7.93516 17.1697 7.96334 17.0401 7.96566 16.9087C7.96798 16.7773 7.9444 16.6467 7.89626 16.5244C7.84813 16.4022 7.77637 16.2905 7.68511 16.196C7.59384 16.1014 7.48484 16.0258 7.36433 15.9734C7.24383 15.9209 7.11418 15.8928 6.98278 15.8904C6.85139 15.8881 6.72082 15.9117 6.59854 15.9598C6.47626 16.008 6.36466 16.0797 6.27011 16.171V16.141Z",fill:"currentColor"})]})}function VO(e){return(0,rp.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[(0,rp.jsx)("g",{clipPath:"url(#clip0_3784_10281)",children:(0,rp.jsx)("path",{d:"M20.739 11.3791L18.039 8.67909C17.955 8.59517 17.8554 8.52861 17.7458 8.48319C17.6361 8.43778 17.5186 8.4144 17.4 8.4144C17.2813 8.4144 17.1638 8.43778 17.0541 8.48319C16.9445 8.52861 16.8449 8.59517 16.761 8.67909C16.6771 8.763 16.6105 8.86262 16.5651 8.97226C16.5197 9.0819 16.4963 9.19941 16.4963 9.31808C16.4963 9.43676 16.5197 9.55427 16.5651 9.66391C16.6105 9.77355 16.6771 9.87317 16.761 9.95708L17.922 11.1001H12.9V6.0691L14.061 7.23909C14.1451 7.32246 14.2448 7.38843 14.3545 7.43322C14.4641 7.478 14.5815 7.50073 14.7 7.50009C14.8787 7.50113 15.0538 7.44891 15.2027 7.35009C15.3517 7.25127 15.4679 7.11032 15.5364 6.94523C15.605 6.78013 15.6228 6.59835 15.5876 6.42308C15.5525 6.24781 15.4659 6.08698 15.339 5.9611L12.639 3.26111C12.4705 3.09326 12.2423 2.99902 12.0045 2.99902C11.7666 2.99902 11.5385 3.09326 11.37 3.26111L8.66999 5.9611C8.58608 6.04442 8.5194 6.14346 8.47376 6.25255C8.42812 6.36164 8.40441 6.47866 8.404 6.59691C8.40358 6.71517 8.42646 6.83235 8.47132 6.94176C8.51619 7.05117 8.58217 7.15068 8.66549 7.23459C8.74882 7.31851 8.84785 7.38519 8.95695 7.43083C9.06604 7.47647 9.18306 7.50017 9.30131 7.50059C9.54014 7.50144 9.76952 7.40737 9.93899 7.23909L11.1 6.0781V11.1001H6.069L7.239 9.93908C7.40847 9.76961 7.50368 9.53975 7.50368 9.30008C7.50368 9.06041 7.40847 8.83056 7.239 8.66109C7.06953 8.49161 6.83967 8.39641 6.6 8.39641C6.36033 8.39641 6.13048 8.49161 5.961 8.66109L3.26101 11.3611C3.17764 11.4452 3.11167 11.5449 3.06689 11.6546C3.0221 11.7642 2.99938 11.8816 3.00002 12.0001C2.99933 12.1185 3.02203 12.2359 3.06682 12.3456C3.11161 12.4552 3.1776 12.555 3.26101 12.6391L5.961 15.3391C6.0451 15.4225 6.14483 15.4885 6.25449 15.5333C6.36414 15.578 6.48156 15.6007 6.6 15.6001C6.77896 15.6015 6.95429 15.5496 7.10354 15.4508C7.25279 15.3521 7.36918 15.211 7.43781 15.0458C7.50643 14.8805 7.52417 14.6985 7.48876 14.5231C7.45334 14.3476 7.36638 14.1868 7.239 14.0611L6.078 12.9001H11.1V17.9311L9.93899 16.7611C9.76952 16.5916 9.53966 16.4964 9.29999 16.4964C9.06032 16.4964 8.83047 16.5916 8.661 16.7611C8.49152 16.9305 8.39631 17.1604 8.39631 17.4001C8.39631 17.6397 8.49152 17.8696 8.661 18.0391L11.361 20.739C11.5297 20.9065 11.7578 21.0004 11.9955 21.0004C12.2332 21.0004 12.4612 20.9065 12.63 20.739L15.33 18.0391C15.4139 17.9551 15.4805 17.8555 15.5259 17.7459C15.5713 17.6362 15.5947 17.5187 15.5947 17.4001C15.5947 17.2814 15.5713 17.1639 15.5259 17.0542C15.4805 16.9446 15.4139 16.845 15.33 16.7611C15.2461 16.6771 15.1464 16.6106 15.0368 16.5652C14.9272 16.5198 14.8096 16.4964 14.691 16.4964C14.5723 16.4964 14.4548 16.5198 14.3452 16.5652C14.2355 16.6106 14.1359 16.6771 14.052 16.7611L12.9 17.9221V12.9001H17.931L16.761 14.0611C16.6558 14.166 16.5781 14.2952 16.5349 14.4374C16.4917 14.5795 16.4843 14.7301 16.5134 14.8758C16.5424 15.0215 16.607 15.1578 16.7013 15.2725C16.7957 15.3873 16.917 15.4769 17.0544 15.5335C17.164 15.5784 17.2815 15.6011 17.4 15.6001C17.5184 15.6008 17.6359 15.5782 17.7455 15.5334C17.8552 15.4886 17.9549 15.4226 18.039 15.3391L20.739 12.6391C20.8224 12.555 20.8884 12.4552 20.9331 12.3456C20.9779 12.2359 21.0006 12.1185 21 12.0001C20.9966 11.7671 20.9031 11.5445 20.739 11.3791Z",fill:"currentColor"})}),(0,rp.jsx)("defs",{children:(0,rp.jsx)("clipPath",{id:"clip0_3784_10281",children:(0,rp.jsx)("rect",{width:"24",height:"24",fill:"currentColor"})})})]})}function VN(e){return(0,rp.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rp.jsx)("path",{d:"M19.5398 5.08113C18.5372 4.08551 17.3458 3.30019 16.0356 2.77129C14.7253 2.24238 13.3226 1.98054 11.9098 2.00113C9.25763 1.9945 6.71146 3.04171 4.83141 4.91238C2.95135 6.78306 1.89143 9.32396 1.8848 11.9761C1.87817 14.6283 2.92538 17.1745 4.79605 19.0545C6.66673 20.9346 9.20763 21.9945 11.8598 22.0011C12.4313 22.0108 12.9898 21.8305 13.4477 21.4884C13.9057 21.1464 14.237 20.6619 14.3898 20.1111C14.4872 19.7134 14.4862 19.2979 14.3869 18.9006C14.2875 18.5033 14.0929 18.1362 13.8198 17.8311C13.7562 17.7594 13.7146 17.6709 13.7 17.5761C13.6854 17.4814 13.6984 17.3845 13.7374 17.2969C13.7765 17.2094 13.8399 17.1349 13.9201 17.0825C14.0003 17.03 14.0939 17.0018 14.1898 17.0011H15.8398C17.3927 17.0084 18.8909 16.4279 20.0336 15.3761C21.1762 14.3244 21.8786 12.8794 21.9998 11.3311C22.037 10.1767 21.838 9.02692 21.415 7.95218C20.992 6.87745 20.3539 5.90046 19.5398 5.08113ZM15.8798 15.0011H14.2298C13.7479 14.9984 13.2756 15.1355 12.8701 15.3959C12.4647 15.6563 12.1435 16.0288 11.9455 16.4681C11.7476 16.9075 11.6813 17.3948 11.7549 17.8711C11.8284 18.3473 12.0385 18.792 12.3598 19.1511C12.4224 19.2142 12.4666 19.2932 12.4877 19.3795C12.5088 19.4658 12.5061 19.5562 12.4798 19.6411C12.4298 19.8511 12.1998 19.9811 11.8898 20.0011C10.754 19.9869 9.63429 19.7309 8.60516 19.2502C7.57603 18.7695 6.66109 18.0751 5.92126 17.2132C5.18142 16.3513 4.63365 15.3417 4.31441 14.2516C3.99517 13.1615 3.91178 12.016 4.0698 10.8911C4.35496 9.00107 5.29935 7.27276 6.73593 6.01186C8.17251 4.75096 10.0087 4.03873 11.9198 4.00113H11.9998C13.1306 3.98632 14.253 4.19813 15.3007 4.62407C16.3483 5.05001 17.3001 5.68144 18.0998 6.48113C18.7238 7.10552 19.2141 7.85048 19.5407 8.67057C19.8674 9.49066 20.0236 10.3687 19.9998 11.2511C19.8963 12.2742 19.4184 13.2229 18.6579 13.9151C17.8974 14.6072 16.9081 14.994 15.8798 15.0011Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M11.9996 8.00025C12.3974 8.00025 12.7789 7.84222 13.0602 7.56091C13.3415 7.27961 13.4996 6.89808 13.4996 6.50025C13.4996 6.10243 13.3415 5.7209 13.0602 5.43959C12.7789 5.15829 12.3974 5.00025 11.9996 5.00025C11.6018 5.00025 11.2202 5.15829 10.9389 5.43959C10.6576 5.7209 10.4996 6.10243 10.4996 6.50025C10.4996 6.89808 10.6576 7.27961 10.9389 7.56091C11.2202 7.84222 11.6018 8.00025 11.9996 8.00025Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M15.2496 7.20116C15.079 7.29965 14.9294 7.43079 14.8094 7.58709C14.6895 7.74339 14.6014 7.92179 14.5504 8.1121C14.4994 8.30242 14.4864 8.50092 14.512 8.69627C14.5377 8.89162 14.6016 9.08 14.7001 9.25066C14.7986 9.42131 14.9298 9.57089 15.0861 9.69086C15.2424 9.81084 15.4208 9.89885 15.6111 9.94987C15.8014 10.0009 15.9999 10.0139 16.1952 9.98825C16.3906 9.96256 16.579 9.89865 16.7496 9.80016C17.0944 9.60125 17.3461 9.27352 17.4492 8.88907C17.5524 8.50462 17.4985 8.09494 17.2996 7.75016C17.1007 7.40538 16.773 7.15373 16.3885 7.05059C16.0041 6.94744 15.5944 7.00125 15.2496 7.20016V7.20116Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M8.74976 7.20016C8.57904 7.1018 8.39062 7.03803 8.19526 7.01249C7.99989 6.98695 7.80141 7.00014 7.61114 7.0513C7.42088 7.10247 7.24255 7.19061 7.08634 7.31069C6.93014 7.43077 6.79912 7.58045 6.70076 7.75116C6.6024 7.92188 6.53863 8.1103 6.51308 8.30567C6.48754 8.50103 6.50073 8.69951 6.5519 8.88978C6.60306 9.08005 6.6912 9.25837 6.81128 9.41458C6.93137 9.57078 7.08104 9.7018 7.25176 9.80016C7.59654 9.99881 8.00611 10.0524 8.39037 9.94903C8.77464 9.84569 9.10211 9.59394 9.30076 9.24916C9.4994 8.90438 9.55295 8.49481 9.44962 8.11055C9.34629 7.72629 9.09454 7.39881 8.74976 7.20016Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M6.15933 11.2603C5.9133 11.4264 5.7221 11.6618 5.60993 11.9366C5.49776 12.2115 5.46967 12.5135 5.52921 12.8043C5.58876 13.0951 5.73326 13.3617 5.94443 13.5704C6.1556 13.779 6.42393 13.9204 6.71546 13.9764C7.00698 14.0325 7.30858 14.0008 7.58208 13.8853C7.85557 13.7699 8.08866 13.5759 8.25183 13.3279C8.415 13.0799 8.50091 12.789 8.49868 12.4922C8.49646 12.1953 8.4062 11.9058 8.23933 11.6603C8.12971 11.4966 7.98873 11.3563 7.82454 11.2475C7.66035 11.1387 7.47622 11.0635 7.28279 11.0263C7.08936 10.9891 6.89047 10.9906 6.69763 11.0308C6.5048 11.0709 6.32183 11.1489 6.15933 11.2603Z",fill:"currentColor"})]})}function VQ(e){return(0,rp.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[(0,rp.jsx)("path",{d:"M20 15.9998C20.5522 15.9998 20.9999 16.4476 21 16.9998V18.9998C20.9999 19.7952 20.6835 20.5584 20.1211 21.1209C19.5585 21.6833 18.7955 21.9998 18 21.9998H6C5.20446 21.9998 4.44149 21.6833 3.87891 21.1209C3.31646 20.5584 3.00012 19.7952 3 18.9998V16.9998C3.00009 16.4476 3.44777 15.9998 4 15.9998C4.55223 15.9998 4.99991 16.4476 5 16.9998V18.9998C5.00012 19.2648 5.1056 19.5194 5.29297 19.7068C5.48048 19.8942 5.7349 19.9998 6 19.9998H18C18.2651 19.9998 18.5195 19.8942 18.707 19.7068C18.8944 19.5194 18.9999 19.2648 19 18.9998V16.9998C19.0001 16.4476 19.4478 15.9998 20 15.9998Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M11.3691 3.22437C11.7619 2.90402 12.3409 2.92662 12.707 3.29273L17.707 8.29273C18.0973 8.68328 18.0975 9.31635 17.707 9.7068C17.3166 10.097 16.6834 10.097 16.293 9.7068L13 6.41383V15.9998C12.9997 16.5518 12.552 16.9997 12 16.9998C11.4479 16.9998 11.0003 16.5518 11 15.9998V6.41383L7.70703 9.7068C7.31657 10.097 6.68343 10.097 6.29297 9.7068C5.90252 9.31635 5.90268 8.68328 6.29297 8.29273L11.293 3.29273L11.3691 3.22437Z",fill:"currentColor"})]})}let VU="var(--v-borders-medium)";function Vz({className:e,variant:t="default",size:r="default",state:n="loading",role:i,"aria-live":a,"aria-label":s,...o}){switch(t){case"logo":{let t="sm"===r?4:5;return(0,rp.jsxs)("svg",{...o,role:i??"status","aria-live":a??"polite","aria-label":s??("success"===n?"Success":"error"===n?"Error":"Loading"),width:"93",height:"91",viewBox:"0 0 93 91",fill:"none",xmlns:"http://www.w3.org/2000/svg","data-slot":"spinner","data-size":r,"data-state":n,className:Vx("spinner-logo shrink-0","sm"===r?"size-9":"size-22",e),children:[(0,rp.jsx)("g",{className:"spinner-logo__intro-shell",children:(0,rp.jsx)("path",{d:"M15.7495 62.7798L46.4936 45.0297M46.4936 45.0297L77.2661 62.5451M46.4936 45.0297L46.7111 9.62225M49.9213 79.4237L74.5719 65.1917C75.6436 64.5705 76.5344 63.6811 77.1541 62.6137C77.7738 61.5462 78.1003 60.3385 78.1007 59.1129L78.1729 30.7811C78.1734 29.5494 77.851 28.3427 77.2373 27.2798C76.6236 26.2169 75.7398 25.3343 74.6729 24.7189L50.1007 10.6155C47.926 9.3694 45.2455 9.37719 43.0689 10.6339L18.4183 24.8659C16.2385 26.1244 14.8946 28.4401 14.8895 30.9447L14.8173 59.2766C14.8168 60.5082 15.1392 61.7149 15.7529 62.7778C16.3666 63.8408 17.2504 64.7233 18.3173 65.3387L42.8895 79.4421C45.0642 80.6882 47.7447 80.6805 49.9213 79.4237Z",className:"spinner-logo__outline spinner-logo__outline--intro",vectorEffect:"sm"===r?void 0:"non-scaling-stroke"})}),(0,rp.jsx)("circle",{className:"spinner-logo__intro-orb",cx:"46.27",cy:"45.8",r:"11.18",fill:"white",stroke:VU,strokeWidth:t,strokeLinecap:"round",strokeLinejoin:"round"}),(0,rp.jsx)("circle",{className:"spinner-logo__result-ring",cx:"46.5",cy:"45.5",r:"33.46",fill:"white",stroke:VU,strokeWidth:t,strokeLinecap:"round",strokeLinejoin:"round"}),(0,rp.jsx)("g",{transform:"translate(27.786 31.4489)",children:(0,rp.jsx)("g",{className:"spinner-logo__result-glyph spinner-logo__result-glyph--success",children:(0,rp.jsx)("path",{d:"M13.6758 28.1023C13.3559 28.101 13.0397 28.0341 12.7467 27.9057C12.4537 27.7772 12.1902 27.59 11.9725 27.3557L0.632479 15.2923C0.208575 14.8406 -0.0185097 14.2389 0.00118164 13.6198C0.020873 13.0006 0.285727 12.4146 0.737479 11.9907C1.18923 11.5668 1.79088 11.3397 2.41006 11.3594C3.02924 11.3791 3.61524 11.6439 4.03915 12.0957L13.6525 22.339L33.2758 0.87233C33.475 0.624349 33.7227 0.419696 34.0038 0.270944C34.2849 0.122191 34.5935 0.0324784 34.9105 0.00731496C35.2276 -0.0178485 35.5464 0.0220682 35.8475 0.124615C36.1485 0.227162 36.4254 0.390174 36.6612 0.603637C36.897 0.8171 37.0866 1.07651 37.2185 1.36593C37.3503 1.65535 37.4216 1.96867 37.428 2.28665C37.4344 2.60463 37.3756 2.92056 37.2555 3.21502C37.1353 3.50949 36.9562 3.77627 36.7291 3.999L15.4025 27.3323C15.1868 27.5709 14.9242 27.7625 14.6311 27.895C14.338 28.0275 14.0208 28.0981 13.6991 28.1023H13.6758Z",fill:VU})})}),(0,rp.jsx)("g",{transform:"translate(32.4879 31.4885)",children:(0,rp.jsx)("g",{className:"spinner-logo__result-glyph spinner-logo__result-glyph--error",children:(0,rp.jsx)("path",{d:"M17.3045 14.0095L27.3378 3.99955C27.5554 3.78199 27.728 3.52371 27.8457 3.23946C27.9635 2.95521 28.0241 2.65055 28.0241 2.34288C28.0241 2.03521 27.9635 1.73055 27.8457 1.4463C27.728 1.16205 27.5554 0.903769 27.3378 0.686213C27.1203 0.468656 26.862 0.296082 26.5778 0.178341C26.2935 0.0606 25.9889 -4.58466e-09 25.6812 0C25.3735 4.58466e-09 25.0689 0.0606 24.7846 0.178341C24.5003 0.296082 24.2421 0.468656 24.0245 0.686213L14.0145 10.7195L4.00451 0.686213C3.56514 0.246838 2.96921 -4.62957e-09 2.34784 0C1.72647 4.62957e-09 1.13055 0.246838 0.691177 0.686213C0.251802 1.12559 0.0049634 1.72151 0.0049634 2.34288C0.00496339 2.96425 0.251802 3.56017 0.691177 3.99955L10.7245 14.0095L0.691177 24.0195C0.472196 24.2363 0.29836 24.4943 0.179723 24.7787C0.0610849 25.063 0 25.3681 0 25.6762C0 25.9843 0.0610849 26.2894 0.179723 26.5737C0.29836 26.8581 0.472196 27.1161 0.691177 27.3329C0.908091 27.5516 1.16616 27.7252 1.4505 27.8436C1.73484 27.9621 2.03982 28.0231 2.34784 28.0231C2.65587 28.0231 2.96085 27.9621 3.24519 27.8436C3.52953 27.7252 3.7876 27.5516 4.00451 27.3329L14.0145 17.2995L24.0245 27.3329C24.296 27.6078 24.6314 27.8111 25.0007 27.9245C25.3701 28.0379 25.7618 28.0579 26.1407 27.9828C26.5197 27.9077 26.8741 27.7397 27.1722 27.4939C27.4703 27.2481 27.7028 26.9322 27.8488 26.5745C28.0272 26.1459 28.0736 25.6738 27.9821 25.2187C27.8907 24.7636 27.6655 24.346 27.3355 24.0195L17.3045 14.0095Z",fill:VU})})})]})}case"default":return(0,rp.jsx)(VF,{...o,role:i??"status","aria-live":a??"polite","aria-label":s??"Loading","data-slot":"spinner",className:Vx("size-4 animate-spin",e)});default:return t}}function VH({className:e,orientation:t="horizontal",decorative:r=!0,...n}){return(0,rp.jsx)(cs,{"data-slot":"separator",decorative:r,orientation:t,className:Vx("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",e),...n})}let VG="u"<typeof window;function Vj(e,{defaultValue:t=!1,initializeWithValue:r=!0}={}){let[n,i]=(0,rd.useState)(()=>{if(r)return VG?t:window.matchMedia(e).matches;return t});return(0,rd.useEffect)(()=>{let t=window.matchMedia(e),r=()=>{i(t.matches)};return r(),t.addEventListener("change",r),()=>{t.removeEventListener("change",r)}},[e]),n}var VV=JSON.parse('{"version":1,"image":{"width":1152,"height":768,"fileName":"bathroom.jpg"},"camera":{"fovYDeg":46.95,"fx":884.1691,"fy":589.446,"cx":255.9992,"cy":256.0003,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-4.9139,1.1239,0.1328],[1.7293,1.1239,-1.9012],[4.8937,0.9661,8.4344],[-1.7494,0.9661,10.4683]],"polygon2D":[[-73044.5,7868],[69379.5,20259],[1730.3,485.3],[243.5,465.6]],"pixelCount":64473},{"id":2,"kind":"wall","polygon3D":[[-1.8438,5.8702,6.4128],[-0.1895,5.8702,7.1854],[-0.1834,-6.7435,7.1724],[-1.8377,-6.7435,6.3998]],"polygon2D":[[4,1193.4],[523.5,1106.3],[525.1,-447.3],[4.7,-547.7]],"pixelCount":46912},{"id":3,"kind":"wall","polygon3D":[[-0.3441,3.5388,7.4548],[1.1166,3.5388,3.9579],[1.1131,-4.5581,3.9565],[-0.3475,-4.5581,7.4534]],"polygon2D":[[484.2,803.7],[1137.2,1174.5],[1135.7,-634.6],[483.2,-156.7]],"pixelCount":18435},{"id":4,"kind":"wall","polygon3D":[[-2.9664,8.8209,12.276],[0.4037,8.8209,2.9966],[-0.5173,-6.6906,2.6621],[-3.8874,-6.6906,11.9415]],"polygon2D":[[95.3,1019.3],[844,2986.7],[189.4,-1838.2],[-71.6,-111.4]],"pixelCount":303}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),VW=JSON.parse('{"version":1,"image":{"width":1248,"height":832,"fileName":"bedroom.jpg"},"camera":{"fovYDeg":46.84,"fx":886.546,"fy":591.0306,"cx":256.0001,"cy":255.9998,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-4.0513,1.1899,-1.3067],[2.5725,1.1899,-2.0753],[3.87,0.1831,9.1068],[-2.7538,0.1831,9.8754]],"polygon2D":[[-174467.9,23273.1],[111806.3,23273.1],[1542.3,435.3],[21.4,433.8]],"pixelCount":101427},{"id":2,"kind":"wall","polygon3D":[[0.2754,3.5068,7.4975],[1.8879,3.5068,6.156],[1.4729,-6.0368,5.6572],[-0.1396,-6.0368,6.9987]],"polygon2D":[[703.4,865.2],[1286.7,963.1],[1186.6,-608.9],[580.9,-412.4]],"pixelCount":45487},{"id":3,"kind":"wall","polygon3D":[[-1.6906,3.9065,5.5869],[-0.1653,3.9065,7.3877],[0.198,-6.2752,7.08],[-1.3272,-6.2752,5.2792]],"polygon2D":[[-29.9,1087.5],[575.6,923.9],[684.4,-435.3],[80.7,-725.6]],"pixelCount":24698}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),Vq=JSON.parse('{"version":1,"image":{"width":1248,"height":832,"fileName":"entryway.jpg"},"camera":{"fovYDeg":46.86,"fx":886.1516,"fy":590.7677,"cx":255.9999,"cy":255.9997,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-8.6435,1.1708,2.4254],[1.2106,1.1708,-3.7261],[8.3191,0.9709,7.661],[-1.535,0.9709,13.8125]],"polygon2D":[[-7073.7,879.4],[52923.7,22895.4],[2969.5,537.7],[384,483.5]],"pixelCount":69575},{"id":2,"kind":"wall","polygon3D":[[-0.9123,3.856,3.1077],[-0.7274,3.856,6.2012],[-0.6851,-4.4714,6.1987],[-0.8699,-4.4714,3.1052]],"polygon2D":[[-10.1,1607.1],[370.6,1012.9],[385.3,-276.5],[18.9,-966.4]],"pixelCount":47763},{"id":3,"kind":"wall","polygon3D":[[-0.888,4.3857,6.582],[1.1141,4.3857,6.5081],[1.1088,-5.5794,6.3649],[-0.8933,-5.5794,6.4388]],"polygon2D":[[332.6,1055.7],[993.8,1062.9],[1000.3,-425.5],[324.3,-415.9]],"pixelCount":41609},{"id":4,"kind":"wall","polygon3D":[[1.2093,4.5168,6.7312],[1.1406,4.5168,3.9536],[1.1241,-5.6604,3.954],[1.1929,-5.6604,6.7316]],"polygon2D":[[1012.1,1060.2],[1247.1,1512.8],[1238.1,-958.3],[1006.8,-391.2]],"pixelCount":34711},{"id":5,"kind":"wall","polygon3D":[[-0.9999,3.3374,7.7388],[0.4764,3.3374,7.6913],[0.4746,-4.56,7.6329],[-1.0018,-4.56,7.6804]],"polygon2D":[[344.9,830],[757.8,832.6],[758.3,-157.5],[342.3,-154]],"pixelCount":5560}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAgAElEQVR42t2dabdsVXWG628ZHSMOjckIQ6MkRlDEFsVegyIYEAIqKii9NEJCK52A9CJEWmlCJ9IoCILNH8lz93PrZZ659t7nXO6HDDM/1KhTp2rXrvmu2c811+aCCy648MILfYQuuuiiiy+++MeFLrnkkv+c6L8muuyyy6644oorr7zyqquuuvrqq3/yk59cc801d9xxx913333XXXf99wL9x18/nXfeeeeee+75558vry7a0sUThVeQzy/YST+a6PwtnTcRF9zkHbMAcLlLL700AMD9yy+/fATgxhtv/PlE991337333vv/D4DKshUM5D6PFwxUAcil9gHQlv8SAFn+DQC4f+2111533XW33XbbPffcAwb3TvT/CQD5tSsG4f6FW1rh/rwEzMpUAAj3oasmcvnD/euvv/6GG25AEd15551gABINg79e7p911lnnnHPOrhhE81y4kyoAYpAr7ACgSUAESgCgBgASUJc/3P/pT3/6s5/97NZbb7399tubHNx///2/+tWv/k/Y95NV4iewjK7c0hVbunyiyyaCFUsYwFBZF4URTi5hsCgBjfsNgEiArK/6J8sfMwAAt9xyC6b4gQce+OWW5P7DDz/80EMPHTxDf7pKN0zE/Vy3JdbHQQLADx8xkGAfrIu2CMfl5LoWWpSA0QDsBQB+PACw/PGF4D5Mh/UYZJ6H+w8++CB/HijH79hJfMUBAbCOwR4B4OfDmREDGArTXK8xpRcVqkIw6wJ1CRgd0FkANABRQQHggS258Efu83iQAKxjMAvACgZ7BwAmjBjAt/B65H6TgwbAuVvatE/Ocl8A4v9cPVG1wPz4m266iSUPr+G+vB65z/NHHnnkIAHAxqDoljC4fqIRAG71IAEYMYjmUBSqDp8FYN4NrTDOml8BaA6oP6ABIJdl+hL3oQMyyLMA4PJib5YkwFtqAMxicKAAwJPYAy0wBCtXABCDmIH5OGDJAa0xsPqnAhAXKACgdlz469yXDhIAhODmm29u3PdR7jdTLAAVA+X4QAGAM7wiB2Ho6I+uA9A80V0AqAagOqANAF0gAMD9l9fw96GJ4D6PgNG4L0IHCQBCwJdW7jczEAzkfjAQhgAgzWIgDAahwiBb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"}}'),VY=JSON.parse('{"version":1,"image":{"width":1152,"height":768,"fileName":"living-room.jpg"},"camera":{"fovYDeg":46.91,"fx":885.0345,"fy":590.023,"cx":255.9995,"cy":256.0006,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-9.0471,1.1441,1.2581],[1.4149,1.1441,-4.3437],[8.6732,0.813,9.2121],[-1.7888,0.813,14.8138]],"polygon2D":[[-13743.9,1188.8],[56926.9,20635.4],[2450.8,462.1],[335.5,432.6]],"pixelCount":88236},{"id":2,"kind":"wall","polygon3D":[[-2.2646,3.6145,7.9916],[0.9936,3.6145,8.0919],[0.9975,-6.0145,7.964],[-2.2607,-6.0145,7.8638]],"polygon2D":[[11.7,784.3],[820.5,779.3],[825.4,-284.4],[3.5,-292.9]],"pixelCount":48816},{"id":3,"kind":"wall","polygon3D":[[-1.6686,3.4823,6.2591],[1.6181,3.4823,6.3756],[1.6324,-5.6636,5.9733],[-1.6544,-5.6636,5.8569]],"polygon2D":[[45.1,876.4],[1081.4,867.4],[1120.2,-455.1],[13.5,-471.8]],"pixelCount":28145},{"id":4,"kind":"wall","polygon3D":[[1.2612,4.5356,9.3158],[1.5173,4.5356,5.2171],[1.4349,-6.4437,5.2119],[1.1788,-6.4437,9.3107]],"polygon2D":[[845.6,814.9],[1155.1,1153.4],[1124.2,-710.2],[828.1,-228.5]],"pixelCount":20909}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),VJ=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-11.jpg"},"camera":{"fovYDeg":46.86,"fx":908.9087,"fy":590.7906,"cx":255.9987,"cy":256.0001,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[1.2985,1.1722,5.5054],[-1.6272,1.1722,4.846],[-0.6999,0.9798,0.7309],[2.2259,0.9798,1.3902]],"polygon2D":[[1837.4,969.4],[-192.2,1012.9],[-2399.9,2660.9],[6684.7,1707.2]],"pixelCount":21724},{"id":2,"kind":"wall","polygon3D":[[-0.9505,3.4707,3.555],[0.6996,3.4707,4.0983],[0.6109,-4.2935,4.3676],[-1.0392,-4.2935,3.8243]],"polygon2D":[[50.7,2114.5],[1606,1920.3],[1496.6,-824.6],[35.2,-1034.1]],"pixelCount":135151},{"id":3,"kind":"wall","polygon3D":[[0.7451,2.7204,4.5579],[1.0313,2.7204,3.7229],[1.0502,-4.07,3.7293],[0.7639,-4.07,4.5644]],"polygon2D":[[1580.4,1545.3],[1983.6,1746.1],[1999.8,-987.1],[1594.2,-687.6]],"pixelCount":28490}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAgAElEQVR42t2dabM9RZGHzyfypREy4zgG4QjMDG6gosiqCLigICKiCAjI5gIygLgMoDOy7/u+KbKKiriGn2We0w83yZtVXafv/UPMhXxxok+f7j7dv19VZlZWVvbqmmuuufbaa6+77rqfT/KLSf5nkv/tyS9/+cvY9rBfLJBy2M+3Szmm+2v+ybu9rpFrG/Hp+PzvLfnZz37mJ/LTLfnJT37y4x//+Oqrr/7Rj3501VVXXXnllf81yeWXX/7DH/7w0ksv/f73v/+9733v4osvZuPcc889/fTTL7vsMg7m4jfccAN3fv3113vwD37wA5C57777br/99htvvPHWW2/ltvmJywLdo48++tBDD91zzz0cc/fdd/N11aIvFgX0VoKAJTSUYwq+3esU6Ls0KOVrMBEb12xJpiFEAuQATK+c5IorrpADMAVrYIWA7373u2x/61vfOuusszjGc/0JoPnkdO7klltu4Sv/zjG33XYbN8z+u+6668knn3zggQdghcvy07333vvYY4+t4hkKWGP0uxxk+NqvLYLl4IVctv2gJaDbMwoHmYboBPYA5IpJ7ASATicAaPvBOeecQyfgGM769re/fcEFF3znO9+5+eabAQTcQZ/9/BGfdKk77riDJn/nnXfS3vnkdK5DT+ITAp544olVbv4BQYGe/uWnGwMCxjLoHHOH+bU99+czMiCg2xWkIRRREBD9QMUiBxAA4pdccomqhuPPOOMM0L/oooto6WDNfXI1DuYvuEn+kYZPq/feQO/CCy/kYAi4//77af6csormP4e+0KPprk8SBGRjsJCDwdd8qS43c1wu56NYiMwBgGoGwhJEJwhLcN555wEiKgjc+fX888/nmqh7LgUsXAT0ORh8UTU0eZ6IA/gLegC9hF/B7YlJOABUV8XwikLgrhT0cz/ocuDXLjFzO3fH5UYOBgqq0CAHxRSHJVAR0eoBl1aPFoIGDgABTuS2uQi3xHW44COPPHL3JNwVV/DiDz/8MHw8/fTTbHD8r371K87lpzUBBbXc8EU/ZEBAxq71nQZu1RIC8mEDhdb6Tgs7hHoJmLI7FFooFNGlk3z961/nE4Y4kgM4mJvhdLQQoPN500030dhp4OznAHil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"}}'),VK=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-12.jpg"},"camera":{"fovYDeg":46.91,"fx":907.7026,"fy":590.0067,"cx":255.9981,"cy":256.0012,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[2.672,1.316,6.1305],[-2.0106,1.316,6.4245],[-2.3631,0.9879,0.8107],[2.3196,0.9879,0.5167]],"polygon2D":[[2545.4,971.6],[-109.7,956.9],[-9335.6,2475.7],[16917.9,3514.4]],"pixelCount":38744},{"id":2,"kind":"wall","polygon3D":[[-1.3052,3.3024,4.7978],[0.8197,3.3024,5.4447],[0.7214,-5.1365,5.7676],[-1.4035,-5.1365,5.1207]],"polygon2D":[[35.4,1681.1],[1533.8,1558.6],[1443.5,-684.1],[28.2,-852.7]],"pixelCount":115187},{"id":3,"kind":"wall","polygon3D":[[0.8416,-1.0331,5.8907],[1.269,-1.0331,4.6406],[1.3241,-2.633,4.6594],[0.8967,-2.633,5.9096]],"polygon2D":[[1506.6,387.3],[1969.6,316.5],[2007.6,-196.6],[1538,-17.5]],"pixelCount":6152},{"id":4,"kind":"wall","polygon3D":[[0.6327,2.4819,4.523],[1.048,2.4819,4.4645],[1.0956,-4.2751,4.8023],[0.6803,-4.2751,4.8608]],"polygon2D":[[1496,1472],[1832.3,1482.8],[1808.9,-683.6],[1496.2,-667.6]],"pixelCount":1290}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),VX=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-13.jpg"},"camera":{"fovYDeg":46.89,"fx":908.1038,"fy":590.2675,"cx":255.9987,"cy":256.0003,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[3.2792,1.3056,9.6119],[-2.7571,1.3056,10.1592],[-3.8115,0.6999,-1.4706],[2.2248,0.6999,-2.0179]],"polygon2D":[[2210.2,853.6],[37.3,842.6],[-269409.8,21629.6],[158842.3,21629.6]],"pixelCount":31534},{"id":2,"kind":"wall","polygon3D":[[-0.5743,3.32,3.4235],[0.7368,3.32,2.7668],[0.8568,-3.7711,3.0063],[-0.4542,-3.7711,3.6631]],"polygon2D":[[405,2103.4],[1944.7,2448.4],[2011,-1230],[560.1,-892.9]],"pixelCount":125424},{"id":3,"kind":"wall","polygon3D":[[-1.3321,-1.8048,5.0373],[-0.8869,-1.8048,5.8802],[-0.903,-2.8694,5.8887],[-1.3482,-2.8694,5.0458]],"polygon2D":[[61.9,113],[465,190],[456.1,-80.3],[52.2,-202.3]],"pixelCount":1336}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),VZ=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-14.jpg"},"camera":{"fovYDeg":46.85,"fx":909.0403,"fy":590.8762,"cx":255.9978,"cy":256.0005,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-2.94,1.12,1.7007],[2.0573,1.12,0.6517],[2.9124,1.076,4.7249],[-2.085,1.076,5.7739]],"polygon2D":[[-5138.6,1638],[12210.4,3228.5],[3188.8,991.7],[-282.3,929.6]],"pixelCount":39164},{"id":2,"kind":"wall","polygon3D":[[-1.149,3.2799,4.3039],[0.9715,3.2799,4.4413],[0.9888,-4.3113,4.174],[-1.1317,-4.3113,4.0366]],"polygon2D":[[52,1793.3],[1776.7,1758],[1841.2,-899.6],[4.5,-952.3]],"pixelCount":124984},{"id":3,"kind":"wall","polygon3D":[[1.0927,4.0707,4.5124],[1.1069,4.0707,3.8596],[1.0596,-4.7237,3.8586],[1.0454,-4.7237,4.5114]],"polygon2D":[[1859.9,2003.4],[2018.4,2232.3],[1975.1,-1186.6],[1822.8,-920.9]],"pixelCount":12478},{"id":4,"kind":"wall","polygon3D":[[-0.9813,6.4779,3.8224],[-0.9379,6.4779,8.338],[-1.1517,-5.9419,8.3401],[-1.1951,-5.9419,3.8244]],"polygon2D":[[88.4,3192.5],[600.6,1815.6],[509.6,-418.9],[-109.7,-1680.9]],"pixelCount":1820}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),V$=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-15.jpg"},"camera":{"fovYDeg":46.78,"fx":910.4678,"fy":591.8041,"cx":256.0003,"cy":256.0005,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-3.567,1.4458,5.8989],[-2.171,1.4458,0.6437],[3.5896,1.349,2.174],[2.1936,1.349,7.4292]],"polygon2D":[[-1150.6,1018.3],[-10994.8,4024.9],[6872.4,1582.4],[2050.1,922.8]],"pixelCount":29996},{"id":2,"kind":"wall","polygon3D":[[-1.0442,4.4985,3.8051],[0.3624,4.4985,4.7905],[0.3446,-4.8826,4.816],[-1.062,-4.8826,3.8305]],"polygon2D":[[24,2426.5],[1269,2061],[1254.5,-873.4],[14,-1265.3]],"pixelCount":125241},{"id":3,"kind":"wall","polygon3D":[[0.5026,4.5778,5.3354],[1.2253,4.5778,4.2733],[1.123,-5.197,4.2037],[0.4002,-5.197,5.2657]],"polygon2D":[[1335,1939.3],[2019.8,2259.7],[1950.1,-1207.7],[1270.3,-833]],"pixelCount":63743},{"id":4,"kind":"wall","polygon3D":[[-0.7092,2.1349,4.0964],[0.4431,2.1349,2.7453],[0.4197,0.1215,2.7254],[-0.7326,0.1215,4.0764]],"polygon2D":[[384.3,1433.1],[1574,1818.5],[1547.7,717],[360.8,694.8]],"pixelCount":1277}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),V0=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room.jpg"},"camera":{"fovYDeg":46.86,"fx":909.32,"fy":591.06,"cx":256,"cy":256,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"kind":"floor","polygon3D":[[1.2985,1.1722,5.5054],[-1.6272,1.1722,4.846],[-0.6999,0.9798,0.7309],[2.2259,0.9798,1.3902]],"polygon2D":[[1837.4,969.4],[-192.2,1012.9],[-2399.9,2660.9],[6684.7,1707.2]],"pixelCount":21724,"id":1},{"kind":"wall","polygon3D":[[-0.9505,3.4707,3.555],[0.6996,3.4707,4.0983],[0.6109,-4.2935,4.3676],[-1.0392,-4.2935,3.8243]],"polygon2D":[[50.7,2114.5],[1606,1920.3],[1496.6,-824.6],[35.2,-1034.1]],"pixelCount":135151,"id":2},{"kind":"wall","polygon3D":[[0.7451,2.7204,4.5579],[1.0313,2.7204,3.7229],[1.0502,-4.07,3.7293],[0.7639,-4.07,4.5644]],"polygon2D":[[1580.4,1545.3],[1983.6,1746.1],[1999.8,-987.1],[1594.2,-687.6]],"pixelCount":28490,"id":3}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAP1klEQVR42u3d627bOBCAUdl+/3feBQoEbWzLNEVKM5xzfi3abJvqMl+s63YHSOjBYZvNCBAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQDQAAEAEAABABAAAQAQAAEABAABAAQAAQAEAAEABAABAAQAAQAEAAEABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAEAAEABAABAAQAAQAEAAEABAABAAQAAQAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAwAQXAEAAEABAABAAQAAQAEAAEABAABAAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAEAAEABAABAAQAAQAEAAEABAABAAQAAQAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAEAAEABAABAAQAAQAEAAEABAABAAQAAQAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAAXg9rJ8IACAA68/6lwQAEIBac18AAO51Zr0AAOQLwDaNAAACsPigFwCAiAHYriMAgACUG/0CAAiAAAgAIAACIACAAAiAAAACIAACAAiAAAgAIAAC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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAgAElEQVR42t2dabM9RZGHzyfypREy4zgG4QjMDG6gosiqCLigICKiCAjI5gIygLgMoDOy7/u+KbKKiriGn2We0w83yZtVXafv/UPMhXxxok+f7j7dv19VZlZWVvbqmmuuufbaa6+77rqfT/KLSf5nkv/tyS9/+cvY9rBfLJBy2M+3Szmm+2v+ybu9rpFrG/Hp+PzvLfnZz37mJ/LTLfnJT37y4x//+Oqrr/7Rj3501VVXXXnllf81yeWXX/7DH/7w0ksv/f73v/+9733v4osvZuPcc889/fTTL7vsMg7m4jfccAN3fv3113vwD37wA5C57777br/99htvvPHWW2/ltvmJywLdo48++tBDD91zzz0cc/fdd/N11aIvFgX0VoKAJTSUYwq+3esU6Ls0KOVrMBEb12xJpiFEAuQATK+c5IorrpADMAVrYIWA7373u2x/61vfOuusszjGc/0JoPnkdO7klltu4Sv/zjG33XYbN8z+u+6668knn3zggQdghcvy07333vvYY4+t4hkKWGP0uxxk+NqvLYLl4IVctv2gJaDbMwoHmYboBPYA5IpJ7ASATicAaPvBOeecQyfgGM769re/fcEFF3znO9+5+eabAQTcQZ/9/BGfdKk77riDJn/nnXfS3vnkdK5DT+ITAp544olVbv4BQYGe/uWnGwMCxjLoHHOH+bU99+czMiCg2xWkIRRREBD9QMUiBxAA4pdccomqhuPPOOMM0L/oooto6WDNfXI1DuYvuEn+kYZPq/feQO/CCy/kYAi4//77af6csormP4e+0KPprk8SBGRjsJCDwdd8qS43c1wu56NYiMwBgGoGwhJEJwhLcN555wEiKgjc+fX888/nmqh7LgUsXAT0ORh8UTU0eZ6IA/gLegC9hF/B7YlJOABUV8XwikLgrhT0cz/ocuDXLjFzO3fH5UYOBgqq0CAHxRSHJVAR0eoBl1aPFoIGDgABTuS2uQi3xHW44COPPHL3JNwVV/DiDz/8MHw8/fTTbHD8r371K87lpzUBBbXc8EU/ZEBAxq71nQZu1RIC8mEDhdb6Tgs7hHoJmLI7FFooFNGlk3z961/nE4Y4kgM4mJvhdLQQoPN500030dhp4OznAHil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"}}');let V1={arizo:{POSTER_URL:"https://viewer.arizo.ru/poster/app/index.html",ROOM_URL:"https://viewer.arizo.ru/room-viewer"},vizbl:{POSTER_URL:"https://viewer.vizbl.com/poster/app/index.html",ROOM_URL:"https://integrations.vizbl.com/room-viewer"}};function V2(e){return new URL(`public/room-example/${e}`,"https://cdn.neurodyn.ai/LG8wPakWNRI1O7ssxPuAcY61sOV3nsofvg4tHjAoumHFWIFoX9u0yeIk9K19I8_J55pBcLct6_ytKI9fCz4/").toString()}function V3(e={}){return{...V0,image:{...V0.image,...e}}}let V4=[{id:"room-example-11",name:"Room Example 11",image_url:V2("room-example-11.jpg"),scene:VJ},{id:"room-example-12",name:"Room Example 12",image_url:V2("room-example-12.jpg"),scene:VK},{id:"room-example-13",name:"Room Example 13",image_url:V2("room-example-13.jpg"),scene:VX},{id:"room-example-14",name:"Room Example 14",image_url:V2("room-example-14.jpg"),scene:VZ},{id:"room-example-15",name:"Room Example 15",image_url:V2("room-example-15.jpg"),scene:V$}],V5=[{id:"carpet-bathroom",name:"Bathroom",image_url:V2("bathroom.jpg"),scene:VV},{id:"carpet-bedroom",name:"Bedroom",image_url:V2("bedroom.jpg"),scene:VW},{id:"carpet-entryway",name:"Entryway",image_url:V2("entryway.jpg"),scene:Vq},{id:"carpet-living-room",name:"Living Room",image_url:V2("living-room.jpg"),scene:VY}];function V9(e,t){return t&&t.length>0?t:"carpet"===e?V5:V4}let V8=["RcSd3KphTyq_JQEjNCqKQA","gu0109ftQmS-UQkwcW010Q","nOfGLIZcRVeU93wOkHWSbg","ozzH5I2kQMW20ao-33C86A","DBA4wR-zT92vjtuOk9varg"],V6="97f6e38a-d092-41b4-ba62-1a870b54e964";function V7(e,t="m"){switch(t){case"cm":return e/100;case"in":return .0254*e;case"m":return e}}function We(e){let{t}=sa();return(0,rd.useMemo)(()=>[{value:0,label:t("mattingOptions.none")},{value:.05,label:`${Number((function(e,t){switch(t){case"cm":return 5;case"in":return 1.9685039370078743}})(.05,e).toFixed(2)).toString()} ${t(`units.${e}`)}`}],[e,t])}let Wt=(0,rd.createContext)(null);function Wr({children:e,src:t,tinuuid:r,type:n,width:i,height:a,displayUnit:s,name:o,rooms:l,apiKey:u,baseURL:c,source:d}){let h=function(){let{t:e}=sa();return(0,rd.useMemo)(()=>[{value:.025,label:`2.5 ${e("units.cm")}`},{value:.05,label:`5 ${e("units.cm")}`}],[e])}(),p=We(s),f=l&&0!==l.length?`${n}:provided:${l.map(e=>`${e.id}\u0000${e.name}\u0000${e.image_url}\u0000${!!e.scene}`).join("\x01")}`:`${n}:default`,A=(0,rd.useRef)(f),[g,m]=(0,rd.useState)(()=>V9(n,l)),[v,b]=(0,rd.useState)(()=>V9(n,l)[0].id),y=(0,rd.useMemo)(()=>g.find(e=>e.id===v)??g[0],[g,v]),[w,x]=(0,rd.useState)(r),[C,E]=(0,rd.useState)(null),[S,M]=(0,rd.useState)(h[0].value),[I,B]=(0,rd.useState)(p[0].value),[T,k]=(0,rd.useState)(0),[_,R]=(0,rd.useState)(0),[P,D]=(0,rd.useState)(!1),[L,F]=(0,rd.useState)(null),[O,N]=(0,rd.useState)(()=>({layoutReady:!1,placementReady:!1,materialReady:!1,artifactsReady:!1,assetsReady:!1,prepareReady:!1})),[Q,U]=(0,rd.useState)(!1),[z,H]=(0,rd.useState)(null),G=(0,rd.useRef)(null),j="poster"!==n,V="default"===d&&void 0!==u,W=s8({queryKey:["room-viewer","activate",{apiKey:u??null,source:d}],enabled:V,queryFn:({signal:e})=>Vc({productType:j2({apiKey:u,baseURL:c,source:d})},{baseURL:c,headers:{"x-api-key":u},signal:e})},sq,void 0),q=j3(W.error),Y=V&&W.isLoading,J=s8({queryKey:Vy(w??void 0,{apiKey:u,baseURL:c,source:d}),enabled:(!V||W.isSuccess||W.isError&&null===q)&&j&&null===C&&!!w,queryFn:async({signal:e})=>{if(!w)throw Error("Tinuuid is required.");return Vw(w,{apiKey:u,baseURL:c,signal:e,source:d})}},sq,void 0),K=J.data??null,X=C?.native?.glbUrl??null,Z=j3(J.error),$=z??q??Z,ee=(0,rd.useCallback)(e=>{N(t=>Object.assign({},t,e))},[]);(0,rd.useEffect)(()=>{if(A.current===f)return;A.current=f;let e=V9(n,l);m(e),b(e[0].id)},[f,l,n]),(0,rd.useEffect)(()=>{j&&(x(r),E(null),H(null))},[r,j]),(0,rd.useEffect)(()=>{H(null)},[u,d]),(0,rd.useEffect)(()=>{j&&K&&null===C&&E(K.materials?.[0]??null)},[C,K,j]);let et=(0,rd.useMemo)(()=>({src:t,glbUrl:X,tinuuid:w,type:n,name:o,rooms:g,setRooms:m,room:y,setRoomId:b,material:C,setTinuuid:x,width:i,height:a,displayUnit:s,frameWidth:S,matting:I,angle:T,rotation:_,isDragging:P,containerRef:L,setMaterial:E,setFrameWidth:M,setMatting:B,setAngle:k,setRotation:R,setIsDragging:D,setContainerRef:F,resourceRef:G,sceneLoad:O,patchSceneLoad:ee,isRoomScenePending:Q,setIsRoomScenePending:U,apiKey:u,baseURL:c,source:d,isViewerAccessPending:Y,accessError:$,setAccessError:H}),[t,X,w,n,o,g,y,C,i,a,s,S,I,T,_,L,P,O,ee,Q,u,c,d,Y,$]);return(0,rp.jsx)(Wt,{value:et,children:e})}function Wn(){let e=(0,rd.use)(Wt);if(!e)throw Error("useRoomViewer must be used within a RoomViewerProvider");return e}function Wi({className:e,...t}){return(0,rp.jsx)(co,{"data-slot":"label",className:Vx("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}function Wa({className:e,...t}){return(0,rp.jsx)("div",{"data-slot":"field-group",className:Vx("group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4",e),...t})}let Ws=ll("group/field flex w-full gap-3 data-[invalid=true]:text-destructive",{variants:{orientation:{vertical:["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],horizontal:["flex-row items-center","[&>[data-slot=field-label]]:flex-auto","has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"],responsive:["flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto","@md/field-group:[&>[data-slot=field-label]]:flex-auto","@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"]}},defaultVariants:{orientation:"vertical"}});function Wo({className:e,orientation:t="vertical",...r}){return(0,rp.jsx)("div",{role:"group","data-slot":"field","data-orientation":t,className:Vx(Ws({orientation:t}),e),...r})}function Wl({className:e,...t}){return(0,rp.jsx)(Wi,{"data-slot":"field-label",className:Vx("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50","has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4","has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10",e),...t})}function Wu({className:e,...t}){return(0,rp.jsx)("div",{"data-slot":"field-label",className:Vx("flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50",e),...t})}function Wc({...e}){return(0,rp.jsx)(d8,{"data-slot":"select",...e})}function Wd({...e}){return(0,rp.jsx)(ht,{"data-slot":"select-value",...e})}function Wh({className:e,size:t="default",children:r,...n}){return(0,rp.jsxs)(d7,{"data-slot":"select-trigger","data-size":t,className:Vx("flex w-fit items-center justify-between gap-2 whitespace-nowrap rounded-md border bg-background-white shadow-sm outline-none transition-colors cursor-pointer","border-border-medium","text-text-dark","hover:border-border-dark","focus-visible:border-border-dark","aria-invalid:border-border-red","disabled:cursor-not-allowed disabled:border-border-medium disabled:bg-background-base disabled:opacity-40","data-[size=default]:h-11 data-[size=default]:px-2 data-[size=default]:py-2.5 data-[size=default]:typo-base-16","data-[size=md]:h-9 data-[size=md]:px-2 data-[size=md]:py-2 data-[size=md]:typo-base-14","data-[size=sm]:h-[1.875rem] data-[size=sm]:px-2 data-[size=sm]:typo-base-12","*:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2","[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-6 [&_svg:not([class*='text-'])]:text-text-dark",e),...n,children:[r,(0,rp.jsx)(hr,{asChild:!0,children:(0,rp.jsx)(VL,{className:"size-6"})})]})}function Wp({className:e,children:t,position:r="item-aligned",align:n="center",portalContainer:i,...a}){return(0,rp.jsx)(hn,{container:i,children:(0,rp.jsxs)(ha,{"data-slot":"select-content",className:Vx("relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-xl border bg-background-white text-text-dark shadow-md","border-border-medium","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2","popper"===r&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:r,align:n,...a,children:[(0,rp.jsx)(WA,{}),(0,rp.jsx)(hA,{className:Vx("p-1","popper"===r&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),(0,rp.jsx)(Wg,{})]})})}function Wf({className:e,children:t,...r}){return(0,rp.jsxs)(hC,{"data-slot":"select-item",className:Vx("relative flex w-full cursor-pointer select-none items-center gap-2 rounded-md py-2.5 pr-8 pl-3 outline-hidden","typo-base-16 text-text-sub","focus:bg-background-base focus:text-text-dark","data-[disabled]:pointer-events-none data-[disabled]:opacity-50","[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-6 [&_svg:not([class*='text-'])]:text-text-dark","*:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...r,children:[(0,rp.jsx)("span",{"data-slot":"select-item-indicator",className:"absolute right-2 flex size-6 items-center justify-center",children:(0,rp.jsx)(hI,{children:(0,rp.jsx)(VD,{className:"size-5"})})}),(0,rp.jsx)(hS,{children:t})]})}function WA({className:e,...t}){return(0,rp.jsx)(hT,{"data-slot":"select-scroll-up-button",className:Vx("flex cursor-default items-center justify-center py-1",e),...t,children:(0,rp.jsx)(u6,{className:"size-4"})})}function Wg({className:e,...t}){return(0,rp.jsx)(h_,{"data-slot":"select-scroll-down-button",className:Vx("flex cursor-default items-center justify-center py-1",e),...t,children:(0,rp.jsx)(u7,{className:"size-4"})})}function Wm({className:e,...t}){let{containerRef:r,material:n,setMaterial:i,setTinuuid:a,apiKey:s,baseURL:o,source:l}=Wn(),{t:u}=sa(),c=function({queries:e,...t},r){let n=rA(void 0),i=rd.useContext(s2),a=rd.useContext(sZ),s=rd.useMemo(()=>e.map(e=>{let t=n.defaultQueryOptions(e);return t._optimisticResults=i?"isRestoring":"optimistic",t}),[e,n,i]);s.forEach(e=>{s3(e),s$(e,a)}),s0(a);let[o]=rd.useState(()=>new s7(n,s,t)),[l,u,c]=o.getOptimisticResult(s,t.combine),d=!i&&!1!==t.subscribed;rd.useSyncExternalStore(rd.useCallback(e=>d?o.subscribe(t$.batchCalls(e)):tR,[o,d]),()=>o.getCurrentResult(),()=>o.getCurrentResult()),rd.useEffect(()=>{o.setQueries(s,t)},[s,t,o]);let h=l.some((e,t)=>s5(s[t],e))?l.flatMap((e,t)=>{let r=s[t];if(r){let t=new sq(n,r);if(s5(r,e))return s9(r,t,a);s4(e,i)&&s9(r,t,a)}return[]}):[];if(h.length>0)throw Promise.all(h);let p=l.find((e,t)=>{let r=s[t];return r&&s1({result:e,errorResetBoundary:a,throwOnError:r.throwOnError,query:n.getQueryCache().get(r.queryHash),suspense:r.suspense})});if(p?.error)throw p.error;return u(c())}({queries:V8.map(e=>({queryKey:Vy(e,{apiKey:s,baseURL:o,source:l}),queryFn:({signal:t})=>Vw(e,{apiKey:s,baseURL:o,signal:t,source:l})}))});return(0,rd.useEffect)(()=>{let e=c[0]?.data,t=e?.materials?.[0],r=e?.tinuuid;null===n&&t&&r&&(i(t),a(r))},[n,c,i,a]),(0,rp.jsxs)(Wo,{className:Vx("w-fit",e),...t,children:[(0,rp.jsx)(Wl,{className:"text-xs text-text-sub font-medium",children:u("material")}),(0,rp.jsxs)(Wc,{value:n?.hid??void 0,onValueChange:e=>{let t=c.find(t=>t.data?.materials?.[0]?.hid===e)?.data;if(!t?.materials?.[0]||!t.tinuuid)return;let r=t.materials[0],n=t.tinuuid;i(r),a(n)},children:[(0,rp.jsx)(Wh,{className:"w-[145px]",size:"md",children:(0,rp.jsxs)(Wd,{placeholder:u("chooseMaterial"),children:[(0,rp.jsx)("div",{className:"size-5 rounded-full border border-border-light",style:{backgroundColor:`#${n?.miniature?.color?.hex}`}}),n?.miniature?.color?.name]})}),(0,rp.jsx)(Wp,{portalContainer:r,children:c.map(e=>{let t=e.data;if(!t?.materials?.[0]||!t.tinuuid)return null;let r=t.materials[0];return(0,rp.jsxs)(Wf,{value:r.hid,children:[(0,rp.jsx)("div",{className:"size-5 rounded-full border border-border-light",style:{backgroundColor:`#${r?.miniature?.color?.hex}`}}),r.miniature?.color?.name]},`${t.tinuuid}-${r.hid}`)})})]})]})}function Wv({className:e,...t}){return(0,rp.jsx)(p3,{"data-slot":"radio-group",className:Vx("grid gap-3",e),...t})}function Wb({checked:e,className:t,...r}){return(0,rp.jsx)("div",{className:Vx("absolute top-1/2 left-1/2 size-6 -translate-x-1/2 -translate-y-1/2","flex items-center justify-center rounded-full",e?"bg-lime-400":"bg-background-base-2",t),...r,children:(0,rp.jsx)(ce,{className:"text-constant-white size-3.5",strokeWidth:4})})}function Wy({className:e,variant:t="default",...r}){return(0,rp.jsxs)(p5,{"data-slot":"radio-group-item",className:Vx("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50","check"===t&&"size-6","inverted"===t&&"size-5 border-button-outline data-[state=checked]:border-border-red data-[state=checked]:border-4 data-[state=checked]:bg-constant-white cursor-pointer transition-all",e),...r,children:["check"===t&&(0,rp.jsx)("div",{className:"relative",children:(0,rp.jsx)(Wb,{})}),"inverted"!==t&&(0,rp.jsx)(p9,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:"check"===t?(0,rp.jsx)(Wb,{checked:!0}):(0,rp.jsx)(ct,{className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})]})}function Ww({className:e,children:t,...r}){let{className:n,onReachEnd:i,...a}=r.swiperOptions??{},{t:s}=sa(),[o,l]=(0,rd.useState)(null),[u,c]=(0,rd.useState)(!0),[d,h]=(0,rd.useState)(!1),[p,f]=(0,rd.useState)(!1),A=(0,rd.useCallback)(e=>{c(e.isBeginning),h(e.isEnd),f(e.isLocked)},[]),g=(0,rd.useCallback)(e=>{l(e),A(e)},[A]),m=(0,rd.useCallback)(e=>{h(!0),i?.(e)},[i]);return(0,rp.jsxs)("div",{className:Vx("relative w-full overflow-hidden",e),children:[(0,rp.jsx)(fZ,{className:Vx("w-full py-5",n),slidesPerView:"auto",slidesPerGroup:2,onSwiper:g,onReachBeginning:()=>c(!0),onReachEnd:m,onFromEdge:A,onLock:()=>f(!0),onUnlock:()=>f(!1),onResize:A,slidesOffsetBefore:24,slidesOffsetAfter:24,spaceBetween:12,...a,children:t}),(0,rp.jsxs)(VE,{className:Vx("absolute top-1/2 left-8 -translate-y-1/2 z-1",{hidden:u||p}),variant:"contrast",size:"icon",onClick:()=>o?.slidePrev(),children:[(0,rp.jsx)(cr,{}),(0,rp.jsx)("span",{className:"sr-only",children:s("previousSlide")})]}),(0,rp.jsxs)(VE,{className:Vx("absolute top-1/2 right-8 -translate-y-1/2 z-1",{hidden:d||p}),variant:"contrast",size:"icon",onClick:()=>o?.slideNext(),children:[(0,rp.jsx)(cn,{}),(0,rp.jsx)("span",{className:"sr-only",children:s("nextSlide")})]})]})}function Wx(e){return e.hid??""}function WC({className:e,...t}){let{material:r,tinuuid:n,setMaterial:i,setTinuuid:a,apiKey:s,baseURL:o,source:l,setAccessError:u}=Wn(),c=r?Wx(r):"",d=Vj("(max-width: 640px)"),{data:h,error:p,isFetchingNextPage:f,fetchNextPage:A,hasNextPage:g}=s8({queryKey:["room-viewer","public-objects",{apiKey:s??null,ownerId:V6,source:l}],queryFn:({pageParam:e,signal:t})=>{let r={page:e,owners:[V6]};return j1({apiKey:s,baseURL:o,source:l})?Vh(r,{productType:j2({apiKey:s,baseURL:o,source:l})},{baseURL:o,headers:{"x-api-key":s},signal:t}):Vb(r,{signal:t})},initialPageParam:1,getNextPageParam:(e,t,r)=>{if(e.objs?.length)return r+1},getPreviousPageParam:(e,t,r)=>{if(!(r<=1))return r-1}},oe,void 0),m=(0,rd.useMemo)(()=>h?.pages.flatMap(e=>e.objs??[])??[],[h]),v=m.find(e=>e.tinuuid===n),b=m.find(e=>e.tinuuid&&e.materials?.[0]);(0,rd.useEffect)(()=>{let e=j3(p);e&&u(e)},[p,u]),(0,rd.useEffect)(()=>{if(null!==r)return;let e=v??b,t=e?.materials?.[0];e&&t&&e.tinuuid&&(i(t),a(e.tinuuid))},[b,v,r,i,a]);let y=(0,rd.useCallback)(()=>{g&&!f&&A()},[A,g,f]);return(0,rp.jsx)("div",{className:Vx(e),...t,children:(0,rp.jsx)(Wv,{value:c||void 0,onValueChange:e=>{let t=m.find(t=>t.materials?.some(t=>Wx(t)===e)),r=t?.materials?.find(t=>Wx(t)===e);t&&r&&t.tinuuid&&(i(r),a(t.tinuuid))},children:(0,rp.jsx)(Ww,{swiperOptions:{onReachEnd:y,className:"py-2 sm:py-5"},children:m.flatMap(e=>e.materials?.map(t=>{let r=Wx(t);return e.tinuuid?(0,rp.jsx)(f$,{className:Vx("sm:w-25! w-18! transition-transform duration-200",r!==c&&"hover:scale-110"),children:(0,rp.jsxs)(Wl,{htmlFor:`material-${r}`,className:"size-full flex flex-col gap-1 has-data-[state=checked]:bg-transparent",children:[(0,rp.jsxs)("div",{className:"size-full relative sm:h-19 h-13 rounded-[0.75rem] overflow-hidden grid place-items-center sm:block",children:[(0,rp.jsx)("img",{src:t.previews?.[0]?.subRes?.small??t.previews?.[0]?.url,alt:t.name??"",className:"size-full object-cover"}),(0,rp.jsx)(Wy,{value:r,id:`material-${r}`,variant:"check",className:Vx("absolute sm:top-1.75 sm:right-1.75",{"sr-only":r!==c})})]}),!d&&(0,rp.jsx)("span",{className:Vx("block w-full text-xs text-left text-text-light truncate",{"text-text-dark":r===c}),children:t.name})]})},`${e.tinuuid}-${r}`):null})??[])})})})}let WE=(0,rd.createContext)(null),WS=(0,rd.createContext)(null);function WM({value:e,defaultValue:t,onValueChange:r,...n}){let[i,a]=(0,rd.useState)(t),s=e??i,o=(0,rd.useMemo)(()=>({value:s}),[s]),l=(0,rd.useCallback)(t=>{r?.(t),void 0===e&&a(t)},[r,e]);return(0,rp.jsx)(WE,{value:o,children:(0,rp.jsx)(f9,{"data-slot":"tabs",value:s,onValueChange:l,...n})})}let WI=ll("cursor-pointer group inline-flex items-center justify-center shrink-0 whitespace-nowrap outline-none transition-colors relative z-10 text-text-base [&_svg]:text-icons-normal [&_svg]:transition-colors hover:text-text-dark hover:[&_svg]:text-icons-dark active:bg-background-base-3 active:text-text-dark active:[&_svg]:text-icons-dark data-[state=active]:bg-background-white data-[state=active]:text-text-dark data-[state=active]:[&_svg]:text-icons-dark disabled:pointer-events-none disabled:opacity-50 focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",{variants:{size:{default:"h-7 rounded-lg px-2 typo-button-normal active:rounded-lg data-[state=active]:rounded-lg [&_svg]:size-4",sm:"h-6 rounded-[4px] px-2 typo-button-small active:rounded-lg data-[state=active]:rounded-lg [&_svg]:size-4",lg:"h-9 rounded-lg px-3 typo-button-big active:rounded-lg data-[state=active]:rounded-lg [&_svg]:size-6"}},defaultVariants:{size:"default"}}),WB=ll("relative inline-flex items-center rounded-xl bg-background-base-2",{variants:{size:{default:"p-1",sm:"p-[3px]",lg:"p-1"}},defaultVariants:{size:"default"}});function WT({className:e,children:t,size:r="default",...n}){let i=(0,rd.use)(WE),a=(0,rd.useRef)(null),s=(0,rd.useRef)(new Map),o=(0,rd.useRef)(null),l=(0,rd.useRef)(i?.value),u=(0,rd.useRef)(null),c=(0,rd.useCallback)(()=>{u.current=null;let e=o.current;if(!e)return;let t=l.current;if(!t){e.style.opacity="0";return}let r=a.current,n=s.current.get(t);if(!r||!n){e.style.opacity="0";return}let i=Math.round(n.offsetLeft),c=Math.round(n.offsetTop),d=Math.round(n.offsetWidth),h=Math.round(n.offsetHeight);e.style.transform=`translate3d(${i}px, ${c}px, 0)`,e.style.width=`${d}px`,e.style.height=`${h}px`,e.style.opacity="1"},[]),d=(0,rd.useCallback)(()=>{null===u.current&&(u.current=requestAnimationFrame(()=>{c()}))},[c]),h=(0,rd.useCallback)((e,t)=>{t?s.current.set(e,t):s.current.delete(e),d()},[d]);(0,rd.useLayoutEffect)(()=>{l.current=i?.value,null!==u.current&&(cancelAnimationFrame(u.current),u.current=null),c()},[i?.value,c]),(0,rd.useEffect)(()=>{let e=a.current;if(!e||"u"<typeof ResizeObserver)return;let t=new ResizeObserver(()=>d());t.observe(e);let r=i?.value;if(r){let e=s.current.get(r);e&&t.observe(e)}return()=>{t.disconnect()}},[d,i?.value]),(0,rd.useEffect)(()=>()=>{null!==u.current&&cancelAnimationFrame(u.current)},[]);let p=(0,rd.useMemo)(()=>({registerTrigger:h,size:r}),[h,r]);return(0,rp.jsx)(f6,{ref:a,"data-slot":"tabs-list",className:Vx(WB({size:r}),e),...n,children:(0,rp.jsxs)(WS,{value:p,children:[(0,rp.jsx)("div",{ref:o,"aria-hidden":!0,"data-slot":"tabs-indicator",className:"pointer-events-none absolute top-0 left-0 z-0 rounded-lg bg-background-white opacity-0 transition-[transform,width,height,opacity] duration-[250ms] ease-out motion-reduce:transition-none"}),t]})})}function Wk({className:e,size:t,children:r,value:n,...i}){let a=(0,rd.use)(WS),s=(0,rd.useRef)(null),o=t??a?.size??"default",l=Vx("relative z-10 inline-flex items-center justify-center","lg"===o?"gap-1.5":"gap-1");return(0,rd.useLayoutEffect)(()=>{if(a&&n)return a.registerTrigger(n,s.current),()=>{a.registerTrigger(n,null)}},[a,n]),(0,rp.jsx)(Ae,{ref:s,"data-slot":"tabs-trigger",className:Vx(WI({size:o}),"data-[state=active]:bg-transparent",e),value:n,...i,children:(0,rp.jsx)("span",{"data-slot":"tabs-trigger-content",className:l,children:r})})}function W_({className:e,...t}){let{displayUnit:r,matting:n,setMatting:i}=Wn(),{t:a}=sa(),s=We(r);return(0,rp.jsxs)(Wo,{className:Vx("w-fit",e),...t,children:[(0,rp.jsx)(Wl,{className:"text-xs text-text-sub font-medium",children:a("matting")}),(0,rp.jsx)(WM,{value:n.toString(),onValueChange:e=>i(Number(e)),children:(0,rp.jsx)(WT,{children:s.map(e=>(0,rp.jsx)(Wk,{value:e.value.toString(),children:e.label},e.value))})})]})}async function WR(e,t={}){let r=t.source??"default",n={image:e};return j1({apiKey:t.apiKey,source:r})?Vp(n,{baseURL:t.baseURL,headers:{"x-api-key":t.apiKey},signal:t.signal,params:{productType:j2({apiKey:t.apiKey,source:r})}}):t.signal?Vu(n,{signal:t.signal}):Vu(n)}WT.displayName=f6.displayName,Wk.displayName=Ae.displayName,Ar.displayName;let WP=0,WD=[{id:0,label:"empty",rgb:[0,0,0]},{id:1,label:"floor",rgb:[32,208,96]},{id:2,label:"wall-1",rgb:[255,59,48]},{id:3,label:"wall-2",rgb:[10,132,255]},{id:4,label:"ceiling",rgb:[255,214,10]},{id:5,label:"plane-5",rgb:[191,90,242]},{id:6,label:"plane-6",rgb:[255,159,10]},{id:7,label:"plane-7",rgb:[100,210,255]},{id:8,label:"plane-8",rgb:[255,45,85]}];async function WL(e,t){var r,n,i;let a,s,o,l,u=await (r=e.planeIds.dataPng,new Promise((e,t)=>{let n=new Image;n.onload=()=>e(n),n.onerror=()=>t(Error("Failed to load room plane id mask image.")),n.crossOrigin="anonymous",n.src=r})),c=e.planeIds.width||u.naturalWidth||u.width,d=e.planeIds.height||u.naturalHeight||u.height,h=document.createElement("canvas"),p=h.getContext("2d",{willReadFrequently:!0});if(!p)throw Error("Failed to prepare room plane mask canvas.");h.width=c,h.height=d,p.drawImage(u,0,0,c,d);let f=p.getImageData(0,0,c,d),A=document.createElement("canvas"),g=A.getContext("2d");if(!g)throw Error("Failed to prepare room debug mask canvas.");A.width=c,A.height=d;for(let e=0;e<c*d;e++){let t=4*e,r=function(e){return WD.find(t=>t.id===e)??{id:e,label:`plane-${e}`,rgb:[73*e%255,151*e%255,211*e%255]}}(f.data[t]??0);f.data[t]=r.rgb[0],f.data[t+1]=r.rgb[1],f.data[t+2]=r.rgb[2],f.data[t+3]=255}g.putImageData(f,0,0),n=await new Promise((e,t)=>{A.toBlob(r=>{r?e(r):t(Error("Failed to export room plane mask image."))},"image/png")}),s=Array.from((a=t.lastIndexOf("."))>0?t.slice(0,a):t).map(e=>{let t=e.charCodeAt(0),r="."===e||"_"===e||"-"===e;return t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||r?e:"-"}).join("").split("-").filter(Boolean).join("-"),i=`${s||"room"}.debug-mask.colors.png`,o=URL.createObjectURL(n),(l=document.createElement("a")).href=o,l.download=i,l.style.display="none",document.body.append(l),l.click(),l.remove(),window.setTimeout(()=>URL.revokeObjectURL(o),1e3)}function WF({className:e,...t}){let{t:r}=sa(),{rooms:n,room:i,setRoomId:a,setRooms:s,type:o,isRoomScenePending:l,setIsRoomScenePending:u,patchSceneLoad:c,apiKey:d,baseURL:h,source:p,setAccessError:f}=Wn(),A=Vj("(max-width: 640px)"),g=(0,rd.useId)(),m=(0,rd.useRef)(new Set),v=(0,rd.useRef)(null),b=(0,rd.useRef)(!0),y=(0,rd.useCallback)((e,t)=>r(`rooms.${t}`,{defaultValue:e}),[r]);(0,rd.useEffect)(()=>{let e=new Set(n.map(e=>e.image_url));for(let t of Array.from(m.current))e.has(t)||(URL.revokeObjectURL(t),m.current.delete(t))},[n]),(0,rd.useEffect)(()=>{let e=m.current;return()=>{for(let t of(b.current=!1,v.current?.abort(),Array.from(e)))URL.revokeObjectURL(t);e.clear()}},[]);let w=(0,rd.useCallback)(async e=>{let t=e.target.files?.[0];if(e.target.value="",!t)return;let r=null,n=new AbortController;v.current?.abort(),v.current=n,u(!0);try{r=URL.createObjectURL(t);let e=await WR(t,{apiKey:d,baseURL:h,source:p,signal:n.signal});if(n.signal.aborted||!b.current)return void URL.revokeObjectURL(r);(function(){try{return"1"===window.localStorage.getItem("neurodyn-room-viewer:debug-mask-export")}catch{return!1}})()&&WL(e,t.name).catch(e=>{console.error("Failed to export room debug mask",e)});let i={id:(WP+=1,`room-custom-${WP}`),name:t.name,image_url:r,scene:e};m.current.add(r),c({placementReady:!1,prepareReady:!1,artifactsReady:!1,assetsReady:!1}),s(e=>[i,...e]),a(i.id)}catch(t){if(r&&URL.revokeObjectURL(r),n.signal.aborted)return;let e=j3(t);if(e)return void f(e);console.error("Failed to prepare custom room scene",t)}finally{v.current===n&&(v.current=null,b.current&&u(!1))}},[d,h,c,f,u,a,s,p]);return(0,rp.jsx)("div",{className:Vx(e),...t,children:(0,rp.jsx)(Wv,{value:i.id,onValueChange:a,children:(0,rp.jsxs)(Ww,{swiperOptions:{className:"py-2 sm:py-5 pb-3 sm:pb-5"},children:[(0,rp.jsx)(f$,{className:"sm:w-25! w-21! h-auto",children:(0,rp.jsxs)(Wl,{htmlFor:g,className:Vx("flex size-full cursor-pointer items-center justify-center rounded-[0.75rem] border border-dashed border-muted-foreground/40 bg-transparent px-2 text-center text-xs leading-tight text-muted-foreground transition-colors hover:border-foreground/40 hover:text-foreground",l&&"cursor-wait opacity-80"),"aria-disabled":l,children:[l?(0,rp.jsxs)(rp.Fragment,{children:[(0,rp.jsx)(Vz,{className:"size-5"}),(0,rp.jsx)("span",{className:"sr-only",children:r("uploadOwnPhoto")})]}):r("uploadOwnPhoto"),(0,rp.jsx)("input",{id:g,type:"file",accept:"image/*",className:"sr-only",disabled:l,onChange:w})]})}),n.map(e=>(0,rp.jsx)(f$,{className:Vx("sm:w-25! w-21! transition-transform duration-200",e.id!==i.id&&"hover:scale-110"),children:(0,rp.jsxs)(Wl,{htmlFor:`room-${e.id}`,className:"size-full flex flex-col gap-1 has-data-[state=checked]:bg-transparent",children:[(0,rp.jsxs)("div",{className:"size-full relative h-17 sm:h-19 rounded-[0.75rem] overflow-hidden",children:[(0,rp.jsx)("img",{src:e.image_url,alt:y(e.name,e.id),className:"size-full object-cover",crossOrigin:"anonymous"}),(0,rp.jsx)(Wy,{value:e.id,id:`room-${e.id}`,variant:"check",className:Vx("absolute top-1.75 right-1.75",{"sr-only":e.id!==i.id})})]}),"carpet"===o&&!A&&(0,rp.jsx)("span",{className:Vx("block w-full text-xs text-left text-text-light truncate",{"text-text-dark":e.id===i.id}),children:y(e.name,e.id)})]})},e.id))]})})})}function WO({className:e,...t}){let{type:r}=Wn(),n=Vj("(max-width: 640px)");return(0,rp.jsxs)("div",{className:Vx("flex sm:items-end pl-0 overflow-hidden sm:flex-row flex-col py-3 sm:py-0",e),...t,children:[(0,rp.jsx)(WF,{className:Vx("shrink-0",{"sm:min-w-148.5 min-w-full":"carpet"===r,grow:"poster"===r})}),"poster"===r&&(0,rp.jsxs)("div",{className:"hidden gap-5 pr-6 pb-5 md:flex",children:[(0,rp.jsx)(Wm,{}),(0,rp.jsx)(W_,{})]}),"carpet"===r&&(0,rp.jsxs)(rp.Fragment,{children:[!n&&(0,rp.jsx)(VH,{orientation:"vertical"}),(0,rp.jsx)(WC,{})]})]})}function WN({className:e,...t}){let{name:r}=Wn();return(0,rp.jsx)("div",{className:Vx("h-16 flex items-center px-6",e),...t,children:(0,rp.jsx)("div",{className:"truncate",children:r})})}function WQ({variant:e,showDialogCloseButton:t=!1}){let{t:r}=sa();return(0,rp.jsxs)("div",{className:"flex size-full flex-col items-center justify-center gap-4 bg-radial from-background-containers to-background-base-2 p-4 text-center",children:[(0,rp.jsx)(VP,{className:"size-8 text-icons-light"}),(0,rp.jsx)("h2",{className:"typo-base-16 font-medium text-text-dark",children:r(`accessError.${e}`)}),t&&(0,rp.jsx)(VI,{asChild:!0,children:(0,rp.jsx)(VE,{variant:"secondary",children:r("close")})})]})}function WU({...e}){return(0,rp.jsx)(hj,{"data-slot":"popover",...e})}function Wz({...e}){return(0,rp.jsx)(hq,{"data-slot":"popover-trigger",...e})}function WH({className:e,align:t="center",sideOffset:r=4,portalContainer:n,...i}){return(0,rp.jsx)(hX,{container:n,children:(0,rp.jsx)(h$,{"data-slot":"popover-content",align:t,sideOffset:r,className:Vx("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",e),...i})})}function WG({className:e,defaultValue:t,value:r,min:n=0,max:i=100,variant:a="default","aria-label":s,"aria-labelledby":o,...l}){let u=(0,rd.useMemo)(()=>Array.isArray(r)?r:Array.isArray(t)?t:[n],[r,t,n]);return(0,rp.jsxs)(po,{"data-slot":"slider",defaultValue:t,value:r,min:n,max:i,"data-variant":a,"aria-label":s,"aria-labelledby":o,className:Vx("relative flex w-full touch-none cursor-pointer items-center select-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",e),...l,children:[(0,rp.jsx)(pf,{"data-slot":"slider-track",className:Vx("relative grow overflow-hidden rounded-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5","editor"===a?"bg-border-light data-[orientation=horizontal]:h-0.5":"bg-muted data-[orientation=horizontal]:h-1.5"),children:(0,rp.jsx)(pg,{"data-slot":"slider-range",className:Vx("absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full","editor"===a?"bg-background-blue":"bg-primary")})}),Array.from({length:u.length},(e,t)=>(0,rp.jsx)(pv,{"data-slot":"slider-thumb","aria-label":s,"aria-labelledby":o,className:Vx("ring-ring/50 block shrink-0 rounded-full border bg-white transition-[color,box-shadow] focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50","editor"===a?"size-3 border-background-blue shadow-none hover:ring-2 focus-visible:ring-2":"size-4 border-primary shadow-sm hover:ring-4 focus-visible:ring-4")},t))]})}let Wj=/oklch\(([0-9.]+)\s+([0-9.]+)\s+([0-9.]+)\)/;function WV(e,t){let r=e.match(Wj);return r?{l:Number.parseFloat(r[1]),c:Number.parseFloat(r[2]),h:Number.parseFloat(r[3])}:{l:t[0],c:t[1],h:t[2]}}function WW({data:e,foreground:t,background:r,robustness:n="M",className:i,...a}){let[s,o]=(0,rd.useState)(null);return((0,rd.useEffect)(()=>{(async()=>{try{let i=getComputedStyle(document.documentElement),a=t??i.getPropertyValue("--foreground"),s=r??i.getPropertyValue("--background"),l=WV(a,[.21,.006,285.885]),u=WV(s,[.985,0,0]),c=await vG.toString(e,{type:"svg",color:{dark:vz(vH({mode:"oklch",...l})),light:vz(vH({mode:"oklch",...u}))},width:200,errorCorrectionLevel:n,margin:0});o(c)}catch(e){console.error(e)}})()},[e,t,r,n]),s)?(0,rp.jsx)("div",{className:Vx("size-full","[&_svg]:size-full",i),dangerouslySetInnerHTML:{__html:s},...a}):null}let Wq=new TY,WY=Wq.getDevice(),WJ=Wq.getOS(),WK="iOS"===WJ.name,WX="Android"===WJ.name,WZ="mobile"===WY.type;function W$({className:e,...t}){let{src:r,tinuuid:n,type:i,width:a,height:s,name:o,containerRef:l,resourceRef:u}=Wn(),{t:c,i18n:d}=sa(),h=function(){let{i18n:e}=sa();return"ru"===(e.resolvedLanguage??e.language)?"arizo":"vizbl"}(),[p,f]=(0,rd.useState)(""),[A,g]=(0,rd.useState)(""),[m,v]=(0,rd.useState)(!1),[b,y]=(0,rd.useState)(!1),w=(0,rd.useRef)(null),x=d.resolvedLanguage??d.language,C=V1[h],E=(0,rd.useMemo)(()=>{if("carpet"===i&&n){let e=new URL(C.ROOM_URL);return e.searchParams.set("type",i),e.searchParams.set("tinuuid",n),e.searchParams.set("name",o),e.searchParams.set("language",x),e.toString()}let e=new URL(C.POSTER_URL);return e.searchParams.set("texture",r),e.searchParams.set("texture_width",(100*a).toString()),e.searchParams.set("texture_height",(100*s).toString()),decodeURIComponent(e.toString())},[r,n,i,a,s,o,x,C]),S=(0,rd.useMemo)(()=>{if(!n||"vizbl"!==h)return null;let e=new URL("https://appclip.apple.com/id");return e.searchParams.set("p","com.us.vizbl.Clip"),e.searchParams.set("tinuuid",n),e.toString()},[n,h]),M=async()=>{if("carpet"===i)return n?WK&&S?void window.location.assign(S):void v(!0):void 0;let e=w.current,t=u.current;if(e&&t)if(e.canActivateAR)try{y(!0);let e=t.clone(!0);if(e.position.set(0,0,0),WK){let t=new IK,r=await t.parseAsync(e),n=new File([r],"scene.usdz",{type:"model/vnd.usdz+zip"});f(URL.createObjectURL(n))}else{let t=new I9,r=await t.parseAsync(e,{binary:!0}),n=new File([r],"scene.glb",{type:"model/gltf-binary"});g(URL.createObjectURL(n))}}finally{y(!1)}else v(!0)};return((0,rd.useEffect)(()=>((""!==p||""!==A)&&w.current?.activateAR(),()=>{""!==p&&URL.revokeObjectURL(p),""!==A&&URL.revokeObjectURL(A)}),[p,A]),WX&&WZ||"carpet"===i&&!n)?null:(0,rp.jsxs)("div",{className:Vx(e),...t,children:[(0,rp.jsx)(VE,{variant:"contrast",disabled:b,onClick:M,children:c("ar.viewInPlace")}),(0,rp.jsx)(VS,{open:m,onOpenChange:v,children:(0,rp.jsxs)(VT,{className:"gap-6 sm:max-w-120",showCloseButton:!1,portalContainer:l,children:[(0,rp.jsx)("div",{className:"flex items-center justify-center p-10 bg-constant-white rounded-2xl",children:(0,rp.jsx)(WW,{className:"size-48",robustness:"H",data:E})}),(0,rp.jsx)("p",{className:"text-lg text-center text-text-sub font-medium",children:c("ar.scanQrCode")}),(0,rp.jsx)(VI,{asChild:!0,children:(0,rp.jsx)(VE,{variant:"contrast",size:"lg",children:c("close")})})]})}),(0,rp.jsx)("model-viewer",{ref:w,className:"fixed w-px h-px opacity-0 pointer-events-none",src:A,iosSrc:p,reveal:"manual",ar:!0,cameraControls:!0,arPlacement:"wall",arModes:"webxr",arScale:"fixed",shadowIntensity:1,interactionPromptThreshold:100})]})}let W0={width:void 0,height:void 0};function W1(e,t,r){return e[t]?Array.isArray(e[t])?e[t][0][r]:e[t][r]:"contentBoxSize"===t?e.contentRect["inlineSize"===r?"width":"height"]:void 0}function W2(e){return e.image.width/e.image.height}async function W3(e,t,r){let n=new Image;n.crossOrigin="anonymous",await new Promise((t,r)=>{n.onload=()=>t(),n.onerror=()=>r(Error("Failed to decode room plane id map.")),n.src=e});let i=document.createElement("canvas"),a=i.getContext("2d");if(!a)throw Error("Failed to get 2D context for room plane id map.");i.width=t,i.height=r,a.drawImage(n,0,0,t,r);var s=a.getImageData(0,0,t,r);let o=new Uint8Array(t*r);for(let e=0;e<o.length;e++)o[e]=s.data[4*e]??0;return{data:o,width:t,height:r}}async function W4(e,t){return new Promise((r,n)=>{e.toBlob(e=>{e?r(e):n(Error(t))},"image/png")})}function W5({ref:e}){let{camera:t,gl:r,invalidate:n,scene:i}=Hs();return(0,rd.useImperativeHandle)(e,()=>({capture:async()=>(n(),await new Promise(e=>requestAnimationFrame(()=>e())),r.render(i,t),W4(r.domElement,"Failed to create scene share image"))}),[t,r,n,i]),null}let W9=new bb(0,0,1),W8=new bb(0,0,1);function W6(e){return new bv().setFromUnitVectors(W9,e.clone().normalize())}let W7="NEURODYN_ROOM_SCENE_PATCH";function qe(e,t){let r=e.onBeforeCompile,n=e.customProgramCacheKey.bind(e),i=e.side,a=e.transparent,s=e.alphaToCoverage;return e.side=2,e.transparent=!0,e.alphaToCoverage=!0,e.onBeforeCompile=(n,i)=>{r?.call(e,n,i),function(e,t){e.uniforms.uPlaneIds={value:t.planeIdsTexture},e.uniforms.uShading={value:t.shadingTexture},e.uniforms.uActiveId=t.activePlaneIdUniform,e.uniforms.uPlaneIdsSize={value:t.planeIdsSize},e.uniforms.uViewport={value:t.viewport};let r=`
6609
+ ${em}`:em);function j1(e){return"shopify"===e.source||void 0!==e.apiKey}function j2(e){return"shopify"===e.source?"wallart-shopify":"wallart"}function j3(e){if(!ic(e))return null;let t=e.response?.status;return 401===t?"unauthorized":402===t?"payment-required":null}function j4(e){return ie.create({baseURL:e,timeout:3e4})}let j5=new Set(["common","delete","get","head","post","put","patch","options","purge","link","unlink"]);function j9(){return globalThis.process?.env?.NODE_ENV}function j8(e){if(void 0===e)return[];let t="function"==typeof e.toJSON?e.toJSON():e,r=[];return!function e(t,r){if(null!==t&&"object"==typeof t)for(let[n,i]of Object.entries(t)){if(null==i)continue;let t=n.toLowerCase();if("common"===t){e(i,r);continue}j5.has(t)||r.push([n,String(i)])}}(t,r),r}function j6(e){return!!("u">typeof FormData&&e instanceof FormData)||null!==e&&"object"==typeof e&&(e.constructor?.name==="FormData"||"function"==typeof e.getBoundary)}let j7=new Set(["authorization","cookie","set-cookie","x-xsrf-token"]);function Ve(e){if(null==e)return;let t="function"==typeof e.toJSON?e.toJSON():e;if(null===t||"object"!=typeof t)return;let r={};for(let[e,n]of Object.entries(t))null!=n&&(r[e]=j7.has(e.toLowerCase())?"[redacted]":String(n));return r}function Vt(e){if(null!=e){if("string"==typeof e)try{return JSON.parse(e)}catch{return e.length>2e3?`${e.slice(0,2e3)}… (${e.length} chars)`:e}return j6(e)?"[FormData]":e}}function Vr(e){let t=(e.requestConfig.method??"GET").toUpperCase(),r=e.requestConfig.url??"",n=`[api:server] ${t} ${r} → ${e.status} (${e.durationMs}ms)`,i={requestId:e.requestId,...e.error?{error:e.error}:{},params:e.requestConfig.params,requestBody:Vt(e.requestConfig.data),requestHeaders:Ve(e.requestConfig.headers),responseHeaders:Ve(e.responseHeaders),responseBody:Vt(e.responseBody)};(e.status>=500||void 0!==e.error&&0===e.status?console.error:e.status>=400?console.warn:console.log)(n,i)}function Vn({clientName:e,configureFunctionName:t,defaultBaseURL:r}){let n=j4(r),i=j4(r),a=null,s=null,o=null,l=null,u=null,c=null;async function d(e,t){let r=function(e,t){let r;if(void 0===t.data||j6(t.data))return t;let n=ip.from(t.headers);return n.has("Content-Type")||void 0!==(r=e.defaults.headers.common)&&ip.from(r).has("Content-Type")||n.set("Content-Type","application/json"),t.headers=n,t}(e,function(e){let t=ip.from(e.headers);if(null!==o){let e=o()?.trim();e&&!t.has("Authorization")&&t.set("Authorization",`Bearer ${e}`)}if(null!==c)for(let[r,n]of Object.entries(c({url:e.url,method:e.method})))n&&!t.has(r)&&t.set(r,n);return e.headers=t,e}({...t})),n=function(e){let t,r=ip.from(e.headers),n=r.get("x-request-id");if("string"==typeof n&&n.length>0)return n;let i=(t=globalThis.crypto,"function"==typeof t?.randomUUID?t.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`);return r.set("x-request-id",i),e.headers=r,i}(r),i=function(){if("u">typeof window)return!1;let e=j9(),t=globalThis.process;return t?.env?.DEBUG_API==="true"||"production"!==e&&"test"!==e&&"testing"!==e}(),a=i?Date.now():0;try{let t=await e.request(r);return i&&Vr({requestConfig:r,requestId:n,status:t.status,durationMs:Date.now()-a,responseHeaders:t.headers,responseBody:t.data}),t}catch(e){throw i&&Vr({requestConfig:r,requestId:n,status:e.response?.status??0,durationMs:Date.now()-a,responseHeaders:e.response?.headers,responseBody:e.response?.data,error:e.message}),e}}async function h(e){return d(e.skipUnauthorizedRecovery?i:n,function(e){let{skipUnauthorizedRecovery:t,...r}=e;return r}(e))}let p=async e=>h({...e,skipUnauthorizedRecovery:!0});function f(){return null!==a}return{configureClientRuntime:function(t){let r,s=(r=function(e){let t=j8(e);if(0===t.length)return;let r=new Map;for(let[e,n]of t)r.set(e.toLowerCase(),n);return Object.fromEntries(Array.from(r.entries()).sort(([e],[t])=>e.localeCompare(t)))}(t.headers),JSON.stringify({...void 0!==t.baseURL?{baseURL:t.baseURL}:{},...void 0!==t.timeout?{timeout:t.timeout}:{},...void 0!==r?{headers:r}:{}}));if("{}"!==s){if(null!==a){if(a===s)return;let t=`${e} already configured. Existing: ${a}. New: ${s}.`;if("production"===j9())return void console.warn(t);throw Error(t)}for(let e of[n,i])void 0!==t.baseURL&&(e.defaults.baseURL=t.baseURL),void 0!==t.timeout&&(e.defaults.timeout=t.timeout),void 0!==t.headers&&function(e,t){let r=e.defaults.headers,n=r.common,i=ip.from(n);for(let[e,r]of j8(t))i.set(e,r);r.common=i.toJSON(),e.defaults.headers=r}(e,t.headers);a=s}},configureAccessTokenResolverRuntime:function(e){o=e},configureUnauthorizedHandlerRuntime:function(e){if(l=e,null===e){null!==s&&(n.interceptors.response.eject(s),s=null),u=null;return}null===s&&(s=n.interceptors.response.use(e=>e,async e=>{let t=e.config;if(e.response?.status!==401||null===l||void 0===t||t._apiRetried)return Promise.reject(e);if(null===u){let t=l;if(null===t)return Promise.reject(e);u=Promise.resolve().then(()=>t(e,{requestWithoutUnauthorizedRecovery:p})).finally(()=>{u=null})}try{if(!await u)return Promise.reject(e);t._apiRetried=!0;let r=ip.from(t.headers);return r.delete("Authorization"),t.headers=r,d(n,t)}catch{return Promise.reject(e)}}))},configureHeadersResolverRuntime:function(e){c=e},isClientConfiguredRuntime:f,assertClientConfiguredRuntime:function(){if(!f())throw Error(`${e} is not configured. Call ${t}(...) before making requests.`)},resetClientForTestsRuntime:function(){let e;if("test"!==(e=j9())&&"testing"!==e)throw Error("resetApiClientForTests() can only be called in test environment.");n=j4(r),i=j4(r),a=null,s=null,o=null,l=null,u=null,c=null},requestRuntime:h,requestWithoutUnauthorizedRecovery:p,addResponseInterceptorRuntime:function(e,t){return n.interceptors.response.use(e,t)}}}let Vi=Vn({clientName:"API node client",configureFunctionName:"configureNodeApiClient",defaultBaseURL:"https://api.vizbl.com"}),Va=Vi.configureClientRuntime;Vi.configureAccessTokenResolverRuntime,Vi.configureHeadersResolverRuntime,Vi.configureUnauthorizedHandlerRuntime,Vi.isClientConfiguredRuntime,Vi.assertClientConfiguredRuntime,Vi.resetClientForTestsRuntime;let Vs=Vi.requestRuntime;async function Vo(e){return Vs(e)}function Vl(e){let t=new FormData;function r(e,r){r instanceof Blob?t.append(e,r):r instanceof Date?t.append(e,r.toISOString()):"number"==typeof r||"boolean"==typeof r?t.append(e,String(r)):"string"==typeof r?t.append(e,r):"object"==typeof r&&t.append(e,new Blob([JSON.stringify(r)],{type:"application/json"}))}return e&&Object.entries(e).forEach(([e,t])=>{if(null!=t)if(Array.isArray(t))for(let n of t)null!=n&&r(e,n);else r(e,t)}),t}async function Vu(e,t={}){let{client:r=Vo,...n}=t,i=Vl(e);return(await r({method:"POST",url:"/inference/room-planes/run-raw",data:i,...n})).data}async function Vc(e,t={}){let{client:r=Vo,...n}=t;return(await r({method:"POST",url:"/public/widget/activate-wallart",params:e,...n})).data}async function Vd({tinuuid:e},t,r={}){let{client:n=Vo,...i}=r;return(await n({method:"GET",url:`/public/objects/by-tinuuid/${e}`,params:t,...i})).data}async function Vh(e,t,r={}){let{client:n=Vo,...i}=r;return(await n({method:"POST",url:"/public/objects/public",params:t,data:e,...i})).data}async function Vp(e,t={}){let{client:r=Vo,...n}=t,i=Vl(e);return(await r({method:"POST",url:"/public/inference/room-planes/run-raw",data:i,...n})).data}Vi.requestWithoutUnauthorizedRecovery,Vi.addResponseInterceptorRuntime;let Vf=Vn({clientName:"API client",configureFunctionName:"configureApiClient",defaultBaseURL:"https://api.vizbl.us"}),VA=Vf.configureClientRuntime;Vf.configureAccessTokenResolverRuntime,Vf.configureHeadersResolverRuntime,Vf.configureUnauthorizedHandlerRuntime,Vf.isClientConfiguredRuntime,Vf.assertClientConfiguredRuntime,Vf.resetClientForTestsRuntime;let Vg=Vf.requestRuntime;async function Vm(e){return Vg(e)}async function Vv(e,t={}){let{client:r=Vm,...n}=t;return(await r({method:"POST",url:"/obj/Fetch",data:e,...n})).data}async function Vb(e,t={}){let{client:r=Vm,...n}=t;return(await r({method:"POST",url:"/obj/GetPublic",data:e,...n})).data}function Vy(e,t){return["room-viewer","object",{apiKey:t.apiKey??null,source:t.source,tinuuid:e??null}]}async function Vw(e,t){return j1(t)?Vd({tinuuid:e},{productType:j2(t)},{baseURL:t.baseURL,headers:{"x-api-key":t.apiKey},signal:t.signal}):Vv({tinuuid:e},{signal:t.signal})}async function Vx(e,t,r){let n={page:t,owners:[e]};if(!j1(r))return Vb(n,{signal:r.signal});let i=await Vh(n,{productType:j2(r)},{baseURL:r.baseURL,headers:{"x-api-key":r.apiKey},signal:r.signal});return{folder:i.folder,objs:i.objs,pages_count:i.pages_count}}function VC(...e){return ls(oc(e))}Vf.requestWithoutUnauthorizedRecovery,Vf.addResponseInterceptorRuntime;let VE=ll("cursor-pointer inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-xl transition-all disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary--hover active:bg-primary--pressed disabled:bg-primary--disabled disabled:opacity-20",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary--hover active:bg-secondary--pressed disabled:bg-secondary--disabled disabled:opacity-20",outline:"border border-button-outline bg-transparent text-foreground hover:border-button-outline-hover active:bg-button-outline-pressed disabled:border-border-dark disabled:opacity-20",ghost:"hover:bg-accent hover:text-accent-foreground active:bg-accent--pressed",contrast:"bg-contrast text-contrast-foreground hover:bg-contrast--hover active:bg-contrast--pressed disabled:bg-contrast--disabled disabled:opacity-30"},size:{default:"h-9 px-3.5 typo-button-normal [&_svg]:size-5",sm:"h-8 px-3 typo-button-small [&_svg]:size-4",lg:"h-11 px-4 typo-button-big [&_svg]:size-6",icon:"size-9 rounded-full [&_svg]:size-5","icon-sm":"size-8 rounded-full [&_svg]:size-4","icon-lg":"size-11 rounded-full [&_svg]:size-6"}},defaultVariants:{variant:"default",size:"default"}});function VS({className:e,variant:t,size:r,asChild:n=!1,...i}){return(0,rp.jsx)(n?oo:"button",{"data-slot":"button",className:VC(VE({variant:t,size:r,className:e})),...i})}function VM({...e}){return(0,rp.jsx)(uT,{"data-slot":"dialog",...e})}function VI({...e}){return(0,rp.jsx)(uD,{"data-slot":"dialog-portal",...e})}function VB({...e}){return(0,rp.jsx)(uJ,{"data-slot":"dialog-close",...e})}function VT({className:e,...t}){return(0,rp.jsx)(uF,{"data-slot":"dialog-overlay",className:VC("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...t})}function Vk({className:e,children:t,showCloseButton:r=!0,portalContainer:n,...i}){return(0,rp.jsxs)(VI,{"data-slot":"dialog-portal",container:n,children:[(0,rp.jsx)(VT,{}),(0,rp.jsxs)(uU,{"data-slot":"dialog-content",className:VC("bg-background-containers data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-6 rounded-3xl border-0 p-6 shadow-[var(--shadow-login)] duration-200 outline-none sm:max-w-120 sm:p-10",e),...i,children:[t,r&&(0,rp.jsxs)(uJ,{"data-slot":"dialog-close",className:"focus-visible:ring-ring/30 absolute top-4 right-4 inline-flex size-6 cursor-pointer items-center justify-center rounded-full text-icons-light transition-colors hover:text-icons-normal focus-visible:text-icons-dark focus-visible:ring-2 focus-visible:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0",children:[(0,rp.jsx)(u8,{className:"size-6"}),(0,rp.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function V_({className:e,...t}){return(0,rp.jsx)("div",{"data-slot":"dialog-header",className:VC("flex flex-col gap-2 text-left",e),...t})}function VR({className:e,...t}){return(0,rp.jsx)(uV,{"data-slot":"dialog-title",className:VC("typo-base-18 text-text-dark",e),...t})}function VP({className:e,...t}){return(0,rp.jsx)(uq,{"data-slot":"dialog-description",className:VC("typo-base-16 text-text-light",e),...t})}function VD(e){return(0,rp.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rp.jsx)("path",{d:"M22.5601 16.3031L14.8901 3.58311C14.58 3.09793 14.1526 2.69864 13.6476 2.42205C13.1425 2.14546 12.5759 2.00049 12.0001 2.00049C11.4243 2.00049 10.8577 2.14546 10.3526 2.42205C9.84755 2.69864 9.42024 3.09793 9.1101 3.58311L1.4401 16.3031C1.16915 16.7548 1.02189 17.2698 1.01311 17.7964C1.00434 18.323 1.13436 18.8427 1.3901 19.3031C1.68578 19.8214 2.11376 20.2518 2.6303 20.5505C3.14684 20.8492 3.73343 21.0054 4.3301 21.0031H19.6701C20.2629 21.0094 20.8468 20.8593 21.363 20.5678C21.8792 20.2764 22.3093 19.8539 22.6101 19.3431C22.8734 18.8779 23.0075 18.3508 22.9987 17.8163C22.9899 17.2818 22.8385 16.7594 22.5601 16.3031ZM20.8601 18.3531C20.7399 18.5597 20.5655 18.7295 20.3557 18.8441C20.146 18.9586 19.9089 19.0136 19.6701 19.0031H4.3301C4.09132 19.0136 3.85422 18.9586 3.64446 18.8441C3.4347 18.7295 3.26029 18.5597 3.1401 18.3531C3.05233 18.2011 3.00613 18.0286 3.00613 17.8531C3.00613 17.6776 3.05233 17.5051 3.1401 17.3531L10.8201 4.62311C10.9581 4.44082 11.1365 4.29298 11.3412 4.19119C11.5459 4.08939 11.7715 4.03642 12.0001 4.03642C12.2287 4.03642 12.4543 4.08939 12.659 4.19119C12.8637 4.29298 13.0421 4.44082 13.1801 4.62311L20.8501 17.3431C20.9413 17.4954 20.9902 17.6693 20.992 17.8468C20.9937 18.0243 20.9482 18.199 20.8601 18.3531Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M12.0001 17.0001C12.2653 17.0001 12.5197 16.8948 12.7072 16.7073C12.8948 16.5197 13.0001 16.2654 13.0001 16.0001C13.0001 15.7349 12.8948 15.4806 12.7072 15.293C12.5197 15.1055 12.2653 15.0001 12.0001 15.0001C11.7349 15.0001 11.4806 15.1055 11.293 15.293C11.1055 15.4806 11.0001 15.7349 11.0001 16.0001C11.0001 16.2654 11.1055 16.5197 11.293 16.7073C11.4806 16.8948 11.7349 17.0001 12.0001 17.0001Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M12.0001 8.00023C11.7349 8.00023 11.4806 8.10559 11.293 8.29313C11.1055 8.48066 11.0001 8.73502 11.0001 9.00023V13.0002C11.0001 13.2655 11.1055 13.5198 11.293 13.7073C11.4806 13.8949 11.7349 14.0002 12.0001 14.0002C12.2653 14.0002 12.5197 13.8949 12.7072 13.7073C12.8948 13.5198 13.0001 13.2655 13.0001 13.0002V9.00023C13.0001 8.73502 12.8948 8.48066 12.7072 8.29313C12.5197 8.10559 12.2653 8.00023 12.0001 8.00023Z",fill:"currentColor"})]})}function VL(e){return(0,rp.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",...e,children:(0,rp.jsx)("path",{d:"M8.21723 14.9975C8.10298 14.997 7.99004 14.9731 7.8854 14.9272C7.78077 14.8814 7.68665 14.8145 7.60889 14.7308L3.55889 10.4225C3.4075 10.2611 3.3264 10.0463 3.33343 9.82513C3.34046 9.604 3.43505 9.39471 3.59639 9.24332C3.75773 9.09192 3.97261 9.01082 4.19374 9.01785C4.41488 9.02489 4.62417 9.11948 4.77556 9.28082L8.20889 12.9392L15.2172 5.27248C15.2883 5.18392 15.3768 5.11083 15.4772 5.0577C15.5776 5.00458 15.6878 4.97254 15.8011 4.96355C15.9143 4.95456 16.0282 4.96882 16.1357 5.00544C16.2432 5.04207 16.3421 5.10029 16.4263 5.17652C16.5105 5.25276 16.5782 5.3454 16.6253 5.44877C16.6724 5.55213 16.6979 5.66403 16.7001 5.7776C16.7024 5.89116 16.6815 6.00399 16.6385 6.10916C16.5956 6.21433 16.5316 6.30961 16.4506 6.38915L8.83389 14.7225C8.75686 14.8077 8.66308 14.8761 8.55841 14.9234C8.45373 14.9707 8.34042 14.996 8.22556 14.9975H8.21723Z",fill:"currentColor"})})}function VF(e){return(0,rp.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:(0,rp.jsx)("path",{d:"M12.0002 15.496C11.8686 15.4968 11.7381 15.4716 11.6163 15.4218C11.4944 15.372 11.3836 15.2987 11.2902 15.206L7.29019 11.206C7.10188 11.0177 6.99609 10.7623 6.99609 10.496C6.99609 10.2297 7.10188 9.97434 7.29019 9.78604C7.47849 9.59773 7.73388 9.49194 8.00019 9.49194C8.26649 9.49194 8.52188 9.59773 8.71019 9.78604L12.0002 13.096L15.3002 9.91604C15.3922 9.81375 15.5043 9.73154 15.6295 9.67455C15.7547 9.61756 15.8903 9.58703 16.0279 9.58485C16.1654 9.58267 16.302 9.60889 16.4289 9.66189C16.5559 9.71488 16.6705 9.79349 16.7657 9.89282C16.8609 9.99214 16.9346 10.11 16.9821 10.2391C17.0297 10.3682 17.0501 10.5057 17.042 10.6431C17.034 10.7804 16.9977 10.9146 16.9355 11.0373C16.8732 11.16 16.7863 11.2685 16.6802 11.356L12.6802 15.216C12.4973 15.3924 12.2542 15.4925 12.0002 15.496Z",fill:"currentColor"})})}function VO(e){return(0,rp.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rp.jsx)("path",{d:"M12 2C11.7348 2 11.4804 2.10536 11.2929 2.29289C11.1054 2.48043 11 2.73478 11 3V5C11 5.26522 11.1054 5.51957 11.2929 5.70711C11.4804 5.89464 11.7348 6 12 6C12.2652 6 12.5196 5.89464 12.7071 5.70711C12.8946 5.51957 13 5.26522 13 5V3C13 2.73478 12.8946 2.48043 12.7071 2.29289C12.5196 2.10536 12.2652 2 12 2Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M21.0002 11H19.0002C18.735 11 18.4806 11.1054 18.2931 11.2929C18.1055 11.4804 18.0002 11.7348 18.0002 12C18.0002 12.2652 18.1055 12.5196 18.2931 12.7071C18.4806 12.8946 18.735 13 19.0002 13H21.0002C21.2654 13 21.5197 12.8946 21.7073 12.7071C21.8948 12.5196 22.0002 12.2652 22.0002 12C22.0002 11.7348 21.8948 11.4804 21.7073 11.2929C21.5197 11.1054 21.2654 11 21.0002 11Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M6 12C6 11.7348 5.89464 11.4804 5.70711 11.2929C5.51957 11.1054 5.26522 11 5 11H3C2.73478 11 2.48043 11.1054 2.29289 11.2929C2.10536 11.4804 2 11.7348 2 12C2 12.2652 2.10536 12.5196 2.29289 12.7071C2.48043 12.8946 2.73478 13 3 13H5C5.26522 13 5.51957 12.8946 5.70711 12.7071C5.89464 12.5196 6 12.2652 6 12Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M6.22009 5.00298C6.02357 4.82786 5.76656 4.7362 5.50358 4.74744C5.2406 4.75869 4.99234 4.87196 4.8115 5.06322C4.63065 5.25447 4.53143 5.50867 4.5349 5.77187C4.53838 6.03507 4.64426 6.28656 4.83009 6.47298L6.27009 7.86298C6.36673 7.95629 6.48117 8.02917 6.60659 8.07728C6.73201 8.12538 6.86584 8.14773 7.00009 8.14298C7.1348 8.14246 7.26801 8.11474 7.39173 8.06147C7.51546 8.0082 7.62714 7.93048 7.72009 7.83298C7.90634 7.64561 8.01088 7.39216 8.01088 7.12798C8.01088 6.86379 7.90634 6.61034 7.72009 6.42298L6.22009 5.00298Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M17 8.14285C17.2575 8.14182 17.5047 8.04153 17.69 7.86285L19.13 6.47285C19.3057 6.2893 19.4049 6.04577 19.4075 5.79172C19.4102 5.53767 19.316 5.29214 19.1441 5.10502C18.9723 4.91789 18.7356 4.80319 18.4823 4.78421C18.2289 4.76524 17.9779 4.84341 17.78 5.00285L16.34 6.42285C16.1538 6.61021 16.0493 6.86366 16.0493 7.12785C16.0493 7.39203 16.1538 7.64548 16.34 7.83285C16.5132 8.01557 16.7489 8.12627 17 8.14285Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M12 17.9999C11.7348 17.9999 11.4804 18.1053 11.2929 18.2928C11.1054 18.4803 11 18.7347 11 18.9999V20.9999C11 21.2651 11.1054 21.5195 11.2929 21.707C11.4804 21.8946 11.7348 21.9999 12 21.9999C12.2652 21.9999 12.5196 21.8946 12.7071 21.707C12.8946 21.5195 13 21.2651 13 20.9999V18.9999C13 18.7347 12.8946 18.4803 12.7071 18.2928C12.5196 18.1053 12.2652 17.9999 12 17.9999Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M17.7302 16.1399C17.5392 15.9556 17.2829 15.8547 17.0175 15.8594C16.7521 15.864 16.4995 15.974 16.3152 16.1649C16.1309 16.3559 16.0299 16.6122 16.0346 16.8776C16.0393 17.143 16.1492 17.3956 16.3402 17.5799L17.7802 18.9999C17.9702 19.1835 18.2251 19.2845 18.4893 19.2808C18.7535 19.277 19.0055 19.1688 19.1902 18.9799C19.2837 18.8868 19.3579 18.7762 19.4085 18.6543C19.4591 18.5325 19.4851 18.4019 19.4851 18.2699C19.4851 18.138 19.4591 18.0073 19.4085 17.8855C19.3579 17.7637 19.2837 17.653 19.1902 17.5599L17.7302 16.1399Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M6.27011 16.141L4.83011 17.531C4.73638 17.624 4.66198 17.7346 4.61121 17.8564C4.56045 17.9783 4.53431 18.109 4.53431 18.241C4.53431 18.373 4.56045 18.5037 4.61121 18.6256C4.66198 18.7474 4.73638 18.858 4.83011 18.951C4.9239 19.0467 5.03596 19.1226 5.15965 19.1741C5.28333 19.2256 5.41612 19.2518 5.55011 19.251C5.79662 19.2531 6.03522 19.1641 6.22011 19.001L7.66011 17.611C7.75466 17.5197 7.83031 17.4107 7.88273 17.2902C7.93516 17.1697 7.96334 17.0401 7.96566 16.9087C7.96798 16.7773 7.9444 16.6467 7.89626 16.5244C7.84813 16.4022 7.77637 16.2905 7.68511 16.196C7.59384 16.1014 7.48484 16.0258 7.36433 15.9734C7.24383 15.9209 7.11418 15.8928 6.98278 15.8904C6.85139 15.8881 6.72082 15.9117 6.59854 15.9598C6.47626 16.008 6.36466 16.0797 6.27011 16.171V16.141Z",fill:"currentColor"})]})}function VN(e){return(0,rp.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[(0,rp.jsx)("g",{clipPath:"url(#clip0_3784_10281)",children:(0,rp.jsx)("path",{d:"M20.739 11.3791L18.039 8.67909C17.955 8.59517 17.8554 8.52861 17.7458 8.48319C17.6361 8.43778 17.5186 8.4144 17.4 8.4144C17.2813 8.4144 17.1638 8.43778 17.0541 8.48319C16.9445 8.52861 16.8449 8.59517 16.761 8.67909C16.6771 8.763 16.6105 8.86262 16.5651 8.97226C16.5197 9.0819 16.4963 9.19941 16.4963 9.31808C16.4963 9.43676 16.5197 9.55427 16.5651 9.66391C16.6105 9.77355 16.6771 9.87317 16.761 9.95708L17.922 11.1001H12.9V6.0691L14.061 7.23909C14.1451 7.32246 14.2448 7.38843 14.3545 7.43322C14.4641 7.478 14.5815 7.50073 14.7 7.50009C14.8787 7.50113 15.0538 7.44891 15.2027 7.35009C15.3517 7.25127 15.4679 7.11032 15.5364 6.94523C15.605 6.78013 15.6228 6.59835 15.5876 6.42308C15.5525 6.24781 15.4659 6.08698 15.339 5.9611L12.639 3.26111C12.4705 3.09326 12.2423 2.99902 12.0045 2.99902C11.7666 2.99902 11.5385 3.09326 11.37 3.26111L8.66999 5.9611C8.58608 6.04442 8.5194 6.14346 8.47376 6.25255C8.42812 6.36164 8.40441 6.47866 8.404 6.59691C8.40358 6.71517 8.42646 6.83235 8.47132 6.94176C8.51619 7.05117 8.58217 7.15068 8.66549 7.23459C8.74882 7.31851 8.84785 7.38519 8.95695 7.43083C9.06604 7.47647 9.18306 7.50017 9.30131 7.50059C9.54014 7.50144 9.76952 7.40737 9.93899 7.23909L11.1 6.0781V11.1001H6.069L7.239 9.93908C7.40847 9.76961 7.50368 9.53975 7.50368 9.30008C7.50368 9.06041 7.40847 8.83056 7.239 8.66109C7.06953 8.49161 6.83967 8.39641 6.6 8.39641C6.36033 8.39641 6.13048 8.49161 5.961 8.66109L3.26101 11.3611C3.17764 11.4452 3.11167 11.5449 3.06689 11.6546C3.0221 11.7642 2.99938 11.8816 3.00002 12.0001C2.99933 12.1185 3.02203 12.2359 3.06682 12.3456C3.11161 12.4552 3.1776 12.555 3.26101 12.6391L5.961 15.3391C6.0451 15.4225 6.14483 15.4885 6.25449 15.5333C6.36414 15.578 6.48156 15.6007 6.6 15.6001C6.77896 15.6015 6.95429 15.5496 7.10354 15.4508C7.25279 15.3521 7.36918 15.211 7.43781 15.0458C7.50643 14.8805 7.52417 14.6985 7.48876 14.5231C7.45334 14.3476 7.36638 14.1868 7.239 14.0611L6.078 12.9001H11.1V17.9311L9.93899 16.7611C9.76952 16.5916 9.53966 16.4964 9.29999 16.4964C9.06032 16.4964 8.83047 16.5916 8.661 16.7611C8.49152 16.9305 8.39631 17.1604 8.39631 17.4001C8.39631 17.6397 8.49152 17.8696 8.661 18.0391L11.361 20.739C11.5297 20.9065 11.7578 21.0004 11.9955 21.0004C12.2332 21.0004 12.4612 20.9065 12.63 20.739L15.33 18.0391C15.4139 17.9551 15.4805 17.8555 15.5259 17.7459C15.5713 17.6362 15.5947 17.5187 15.5947 17.4001C15.5947 17.2814 15.5713 17.1639 15.5259 17.0542C15.4805 16.9446 15.4139 16.845 15.33 16.7611C15.2461 16.6771 15.1464 16.6106 15.0368 16.5652C14.9272 16.5198 14.8096 16.4964 14.691 16.4964C14.5723 16.4964 14.4548 16.5198 14.3452 16.5652C14.2355 16.6106 14.1359 16.6771 14.052 16.7611L12.9 17.9221V12.9001H17.931L16.761 14.0611C16.6558 14.166 16.5781 14.2952 16.5349 14.4374C16.4917 14.5795 16.4843 14.7301 16.5134 14.8758C16.5424 15.0215 16.607 15.1578 16.7013 15.2725C16.7957 15.3873 16.917 15.4769 17.0544 15.5335C17.164 15.5784 17.2815 15.6011 17.4 15.6001C17.5184 15.6008 17.6359 15.5782 17.7455 15.5334C17.8552 15.4886 17.9549 15.4226 18.039 15.3391L20.739 12.6391C20.8224 12.555 20.8884 12.4552 20.9331 12.3456C20.9779 12.2359 21.0006 12.1185 21 12.0001C20.9966 11.7671 20.9031 11.5445 20.739 11.3791Z",fill:"currentColor"})}),(0,rp.jsx)("defs",{children:(0,rp.jsx)("clipPath",{id:"clip0_3784_10281",children:(0,rp.jsx)("rect",{width:"24",height:"24",fill:"currentColor"})})})]})}function VQ(e){return(0,rp.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rp.jsx)("path",{d:"M19.5398 5.08113C18.5372 4.08551 17.3458 3.30019 16.0356 2.77129C14.7253 2.24238 13.3226 1.98054 11.9098 2.00113C9.25763 1.9945 6.71146 3.04171 4.83141 4.91238C2.95135 6.78306 1.89143 9.32396 1.8848 11.9761C1.87817 14.6283 2.92538 17.1745 4.79605 19.0545C6.66673 20.9346 9.20763 21.9945 11.8598 22.0011C12.4313 22.0108 12.9898 21.8305 13.4477 21.4884C13.9057 21.1464 14.237 20.6619 14.3898 20.1111C14.4872 19.7134 14.4862 19.2979 14.3869 18.9006C14.2875 18.5033 14.0929 18.1362 13.8198 17.8311C13.7562 17.7594 13.7146 17.6709 13.7 17.5761C13.6854 17.4814 13.6984 17.3845 13.7374 17.2969C13.7765 17.2094 13.8399 17.1349 13.9201 17.0825C14.0003 17.03 14.0939 17.0018 14.1898 17.0011H15.8398C17.3927 17.0084 18.8909 16.4279 20.0336 15.3761C21.1762 14.3244 21.8786 12.8794 21.9998 11.3311C22.037 10.1767 21.838 9.02692 21.415 7.95218C20.992 6.87745 20.3539 5.90046 19.5398 5.08113ZM15.8798 15.0011H14.2298C13.7479 14.9984 13.2756 15.1355 12.8701 15.3959C12.4647 15.6563 12.1435 16.0288 11.9455 16.4681C11.7476 16.9075 11.6813 17.3948 11.7549 17.8711C11.8284 18.3473 12.0385 18.792 12.3598 19.1511C12.4224 19.2142 12.4666 19.2932 12.4877 19.3795C12.5088 19.4658 12.5061 19.5562 12.4798 19.6411C12.4298 19.8511 12.1998 19.9811 11.8898 20.0011C10.754 19.9869 9.63429 19.7309 8.60516 19.2502C7.57603 18.7695 6.66109 18.0751 5.92126 17.2132C5.18142 16.3513 4.63365 15.3417 4.31441 14.2516C3.99517 13.1615 3.91178 12.016 4.0698 10.8911C4.35496 9.00107 5.29935 7.27276 6.73593 6.01186C8.17251 4.75096 10.0087 4.03873 11.9198 4.00113H11.9998C13.1306 3.98632 14.253 4.19813 15.3007 4.62407C16.3483 5.05001 17.3001 5.68144 18.0998 6.48113C18.7238 7.10552 19.2141 7.85048 19.5407 8.67057C19.8674 9.49066 20.0236 10.3687 19.9998 11.2511C19.8963 12.2742 19.4184 13.2229 18.6579 13.9151C17.8974 14.6072 16.9081 14.994 15.8798 15.0011Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M11.9996 8.00025C12.3974 8.00025 12.7789 7.84222 13.0602 7.56091C13.3415 7.27961 13.4996 6.89808 13.4996 6.50025C13.4996 6.10243 13.3415 5.7209 13.0602 5.43959C12.7789 5.15829 12.3974 5.00025 11.9996 5.00025C11.6018 5.00025 11.2202 5.15829 10.9389 5.43959C10.6576 5.7209 10.4996 6.10243 10.4996 6.50025C10.4996 6.89808 10.6576 7.27961 10.9389 7.56091C11.2202 7.84222 11.6018 8.00025 11.9996 8.00025Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M15.2496 7.20116C15.079 7.29965 14.9294 7.43079 14.8094 7.58709C14.6895 7.74339 14.6014 7.92179 14.5504 8.1121C14.4994 8.30242 14.4864 8.50092 14.512 8.69627C14.5377 8.89162 14.6016 9.08 14.7001 9.25066C14.7986 9.42131 14.9298 9.57089 15.0861 9.69086C15.2424 9.81084 15.4208 9.89885 15.6111 9.94987C15.8014 10.0009 15.9999 10.0139 16.1952 9.98825C16.3906 9.96256 16.579 9.89865 16.7496 9.80016C17.0944 9.60125 17.3461 9.27352 17.4492 8.88907C17.5524 8.50462 17.4985 8.09494 17.2996 7.75016C17.1007 7.40538 16.773 7.15373 16.3885 7.05059C16.0041 6.94744 15.5944 7.00125 15.2496 7.20016V7.20116Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M8.74976 7.20016C8.57904 7.1018 8.39062 7.03803 8.19526 7.01249C7.99989 6.98695 7.80141 7.00014 7.61114 7.0513C7.42088 7.10247 7.24255 7.19061 7.08634 7.31069C6.93014 7.43077 6.79912 7.58045 6.70076 7.75116C6.6024 7.92188 6.53863 8.1103 6.51308 8.30567C6.48754 8.50103 6.50073 8.69951 6.5519 8.88978C6.60306 9.08005 6.6912 9.25837 6.81128 9.41458C6.93137 9.57078 7.08104 9.7018 7.25176 9.80016C7.59654 9.99881 8.00611 10.0524 8.39037 9.94903C8.77464 9.84569 9.10211 9.59394 9.30076 9.24916C9.4994 8.90438 9.55295 8.49481 9.44962 8.11055C9.34629 7.72629 9.09454 7.39881 8.74976 7.20016Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M6.15933 11.2603C5.9133 11.4264 5.7221 11.6618 5.60993 11.9366C5.49776 12.2115 5.46967 12.5135 5.52921 12.8043C5.58876 13.0951 5.73326 13.3617 5.94443 13.5704C6.1556 13.779 6.42393 13.9204 6.71546 13.9764C7.00698 14.0325 7.30858 14.0008 7.58208 13.8853C7.85557 13.7699 8.08866 13.5759 8.25183 13.3279C8.415 13.0799 8.50091 12.789 8.49868 12.4922C8.49646 12.1953 8.4062 11.9058 8.23933 11.6603C8.12971 11.4966 7.98873 11.3563 7.82454 11.2475C7.66035 11.1387 7.47622 11.0635 7.28279 11.0263C7.08936 10.9891 6.89047 10.9906 6.69763 11.0308C6.5048 11.0709 6.32183 11.1489 6.15933 11.2603Z",fill:"currentColor"})]})}function VU(e){return(0,rp.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[(0,rp.jsx)("path",{d:"M20 15.9998C20.5522 15.9998 20.9999 16.4476 21 16.9998V18.9998C20.9999 19.7952 20.6835 20.5584 20.1211 21.1209C19.5585 21.6833 18.7955 21.9998 18 21.9998H6C5.20446 21.9998 4.44149 21.6833 3.87891 21.1209C3.31646 20.5584 3.00012 19.7952 3 18.9998V16.9998C3.00009 16.4476 3.44777 15.9998 4 15.9998C4.55223 15.9998 4.99991 16.4476 5 16.9998V18.9998C5.00012 19.2648 5.1056 19.5194 5.29297 19.7068C5.48048 19.8942 5.7349 19.9998 6 19.9998H18C18.2651 19.9998 18.5195 19.8942 18.707 19.7068C18.8944 19.5194 18.9999 19.2648 19 18.9998V16.9998C19.0001 16.4476 19.4478 15.9998 20 15.9998Z",fill:"currentColor"}),(0,rp.jsx)("path",{d:"M11.3691 3.22437C11.7619 2.90402 12.3409 2.92662 12.707 3.29273L17.707 8.29273C18.0973 8.68328 18.0975 9.31635 17.707 9.7068C17.3166 10.097 16.6834 10.097 16.293 9.7068L13 6.41383V15.9998C12.9997 16.5518 12.552 16.9997 12 16.9998C11.4479 16.9998 11.0003 16.5518 11 15.9998V6.41383L7.70703 9.7068C7.31657 10.097 6.68343 10.097 6.29297 9.7068C5.90252 9.31635 5.90268 8.68328 6.29297 8.29273L11.293 3.29273L11.3691 3.22437Z",fill:"currentColor"})]})}let Vz="var(--v-borders-medium)";function VH({className:e,variant:t="default",size:r="default",state:n="loading",role:i,"aria-live":a,"aria-label":s,...o}){switch(t){case"logo":{let t="sm"===r?4:5;return(0,rp.jsxs)("svg",{...o,role:i??"status","aria-live":a??"polite","aria-label":s??("success"===n?"Success":"error"===n?"Error":"Loading"),width:"93",height:"91",viewBox:"0 0 93 91",fill:"none",xmlns:"http://www.w3.org/2000/svg","data-slot":"spinner","data-size":r,"data-state":n,className:VC("spinner-logo shrink-0","sm"===r?"size-9":"size-22",e),children:[(0,rp.jsx)("g",{className:"spinner-logo__intro-shell",children:(0,rp.jsx)("path",{d:"M15.7495 62.7798L46.4936 45.0297M46.4936 45.0297L77.2661 62.5451M46.4936 45.0297L46.7111 9.62225M49.9213 79.4237L74.5719 65.1917C75.6436 64.5705 76.5344 63.6811 77.1541 62.6137C77.7738 61.5462 78.1003 60.3385 78.1007 59.1129L78.1729 30.7811C78.1734 29.5494 77.851 28.3427 77.2373 27.2798C76.6236 26.2169 75.7398 25.3343 74.6729 24.7189L50.1007 10.6155C47.926 9.3694 45.2455 9.37719 43.0689 10.6339L18.4183 24.8659C16.2385 26.1244 14.8946 28.4401 14.8895 30.9447L14.8173 59.2766C14.8168 60.5082 15.1392 61.7149 15.7529 62.7778C16.3666 63.8408 17.2504 64.7233 18.3173 65.3387L42.8895 79.4421C45.0642 80.6882 47.7447 80.6805 49.9213 79.4237Z",className:"spinner-logo__outline spinner-logo__outline--intro",vectorEffect:"sm"===r?void 0:"non-scaling-stroke"})}),(0,rp.jsx)("circle",{className:"spinner-logo__intro-orb",cx:"46.27",cy:"45.8",r:"11.18",fill:"white",stroke:Vz,strokeWidth:t,strokeLinecap:"round",strokeLinejoin:"round"}),(0,rp.jsx)("circle",{className:"spinner-logo__result-ring",cx:"46.5",cy:"45.5",r:"33.46",fill:"white",stroke:Vz,strokeWidth:t,strokeLinecap:"round",strokeLinejoin:"round"}),(0,rp.jsx)("g",{transform:"translate(27.786 31.4489)",children:(0,rp.jsx)("g",{className:"spinner-logo__result-glyph spinner-logo__result-glyph--success",children:(0,rp.jsx)("path",{d:"M13.6758 28.1023C13.3559 28.101 13.0397 28.0341 12.7467 27.9057C12.4537 27.7772 12.1902 27.59 11.9725 27.3557L0.632479 15.2923C0.208575 14.8406 -0.0185097 14.2389 0.00118164 13.6198C0.020873 13.0006 0.285727 12.4146 0.737479 11.9907C1.18923 11.5668 1.79088 11.3397 2.41006 11.3594C3.02924 11.3791 3.61524 11.6439 4.03915 12.0957L13.6525 22.339L33.2758 0.87233C33.475 0.624349 33.7227 0.419696 34.0038 0.270944C34.2849 0.122191 34.5935 0.0324784 34.9105 0.00731496C35.2276 -0.0178485 35.5464 0.0220682 35.8475 0.124615C36.1485 0.227162 36.4254 0.390174 36.6612 0.603637C36.897 0.8171 37.0866 1.07651 37.2185 1.36593C37.3503 1.65535 37.4216 1.96867 37.428 2.28665C37.4344 2.60463 37.3756 2.92056 37.2555 3.21502C37.1353 3.50949 36.9562 3.77627 36.7291 3.999L15.4025 27.3323C15.1868 27.5709 14.9242 27.7625 14.6311 27.895C14.338 28.0275 14.0208 28.0981 13.6991 28.1023H13.6758Z",fill:Vz})})}),(0,rp.jsx)("g",{transform:"translate(32.4879 31.4885)",children:(0,rp.jsx)("g",{className:"spinner-logo__result-glyph spinner-logo__result-glyph--error",children:(0,rp.jsx)("path",{d:"M17.3045 14.0095L27.3378 3.99955C27.5554 3.78199 27.728 3.52371 27.8457 3.23946C27.9635 2.95521 28.0241 2.65055 28.0241 2.34288C28.0241 2.03521 27.9635 1.73055 27.8457 1.4463C27.728 1.16205 27.5554 0.903769 27.3378 0.686213C27.1203 0.468656 26.862 0.296082 26.5778 0.178341C26.2935 0.0606 25.9889 -4.58466e-09 25.6812 0C25.3735 4.58466e-09 25.0689 0.0606 24.7846 0.178341C24.5003 0.296082 24.2421 0.468656 24.0245 0.686213L14.0145 10.7195L4.00451 0.686213C3.56514 0.246838 2.96921 -4.62957e-09 2.34784 0C1.72647 4.62957e-09 1.13055 0.246838 0.691177 0.686213C0.251802 1.12559 0.0049634 1.72151 0.0049634 2.34288C0.00496339 2.96425 0.251802 3.56017 0.691177 3.99955L10.7245 14.0095L0.691177 24.0195C0.472196 24.2363 0.29836 24.4943 0.179723 24.7787C0.0610849 25.063 0 25.3681 0 25.6762C0 25.9843 0.0610849 26.2894 0.179723 26.5737C0.29836 26.8581 0.472196 27.1161 0.691177 27.3329C0.908091 27.5516 1.16616 27.7252 1.4505 27.8436C1.73484 27.9621 2.03982 28.0231 2.34784 28.0231C2.65587 28.0231 2.96085 27.9621 3.24519 27.8436C3.52953 27.7252 3.7876 27.5516 4.00451 27.3329L14.0145 17.2995L24.0245 27.3329C24.296 27.6078 24.6314 27.8111 25.0007 27.9245C25.3701 28.0379 25.7618 28.0579 26.1407 27.9828C26.5197 27.9077 26.8741 27.7397 27.1722 27.4939C27.4703 27.2481 27.7028 26.9322 27.8488 26.5745C28.0272 26.1459 28.0736 25.6738 27.9821 25.2187C27.8907 24.7636 27.6655 24.346 27.3355 24.0195L17.3045 14.0095Z",fill:Vz})})})]})}case"default":return(0,rp.jsx)(VO,{...o,role:i??"status","aria-live":a??"polite","aria-label":s??"Loading","data-slot":"spinner",className:VC("size-4 animate-spin",e)});default:return t}}var VG=JSON.parse('{"version":1,"image":{"width":1152,"height":768,"fileName":"bathroom.jpg"},"camera":{"fovYDeg":46.95,"fx":884.1691,"fy":589.446,"cx":255.9992,"cy":256.0003,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-4.9139,1.1239,0.1328],[1.7293,1.1239,-1.9012],[4.8937,0.9661,8.4344],[-1.7494,0.9661,10.4683]],"polygon2D":[[-73044.5,7868],[69379.5,20259],[1730.3,485.3],[243.5,465.6]],"pixelCount":64473},{"id":2,"kind":"wall","polygon3D":[[-1.8438,5.8702,6.4128],[-0.1895,5.8702,7.1854],[-0.1834,-6.7435,7.1724],[-1.8377,-6.7435,6.3998]],"polygon2D":[[4,1193.4],[523.5,1106.3],[525.1,-447.3],[4.7,-547.7]],"pixelCount":46912},{"id":3,"kind":"wall","polygon3D":[[-0.3441,3.5388,7.4548],[1.1166,3.5388,3.9579],[1.1131,-4.5581,3.9565],[-0.3475,-4.5581,7.4534]],"polygon2D":[[484.2,803.7],[1137.2,1174.5],[1135.7,-634.6],[483.2,-156.7]],"pixelCount":18435},{"id":4,"kind":"wall","polygon3D":[[-2.9664,8.8209,12.276],[0.4037,8.8209,2.9966],[-0.5173,-6.6906,2.6621],[-3.8874,-6.6906,11.9415]],"polygon2D":[[95.3,1019.3],[844,2986.7],[189.4,-1838.2],[-71.6,-111.4]],"pixelCount":303}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),Vj=JSON.parse('{"version":1,"image":{"width":1248,"height":832,"fileName":"bedroom.jpg"},"camera":{"fovYDeg":46.84,"fx":886.546,"fy":591.0306,"cx":256.0001,"cy":255.9998,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-4.0513,1.1899,-1.3067],[2.5725,1.1899,-2.0753],[3.87,0.1831,9.1068],[-2.7538,0.1831,9.8754]],"polygon2D":[[-174467.9,23273.1],[111806.3,23273.1],[1542.3,435.3],[21.4,433.8]],"pixelCount":101427},{"id":2,"kind":"wall","polygon3D":[[0.2754,3.5068,7.4975],[1.8879,3.5068,6.156],[1.4729,-6.0368,5.6572],[-0.1396,-6.0368,6.9987]],"polygon2D":[[703.4,865.2],[1286.7,963.1],[1186.6,-608.9],[580.9,-412.4]],"pixelCount":45487},{"id":3,"kind":"wall","polygon3D":[[-1.6906,3.9065,5.5869],[-0.1653,3.9065,7.3877],[0.198,-6.2752,7.08],[-1.3272,-6.2752,5.2792]],"polygon2D":[[-29.9,1087.5],[575.6,923.9],[684.4,-435.3],[80.7,-725.6]],"pixelCount":24698}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),VV=JSON.parse('{"version":1,"image":{"width":1248,"height":832,"fileName":"entryway.jpg"},"camera":{"fovYDeg":46.86,"fx":886.1516,"fy":590.7677,"cx":255.9999,"cy":255.9997,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-8.6435,1.1708,2.4254],[1.2106,1.1708,-3.7261],[8.3191,0.9709,7.661],[-1.535,0.9709,13.8125]],"polygon2D":[[-7073.7,879.4],[52923.7,22895.4],[2969.5,537.7],[384,483.5]],"pixelCount":69575},{"id":2,"kind":"wall","polygon3D":[[-0.9123,3.856,3.1077],[-0.7274,3.856,6.2012],[-0.6851,-4.4714,6.1987],[-0.8699,-4.4714,3.1052]],"polygon2D":[[-10.1,1607.1],[370.6,1012.9],[385.3,-276.5],[18.9,-966.4]],"pixelCount":47763},{"id":3,"kind":"wall","polygon3D":[[-0.888,4.3857,6.582],[1.1141,4.3857,6.5081],[1.1088,-5.5794,6.3649],[-0.8933,-5.5794,6.4388]],"polygon2D":[[332.6,1055.7],[993.8,1062.9],[1000.3,-425.5],[324.3,-415.9]],"pixelCount":41609},{"id":4,"kind":"wall","polygon3D":[[1.2093,4.5168,6.7312],[1.1406,4.5168,3.9536],[1.1241,-5.6604,3.954],[1.1929,-5.6604,6.7316]],"polygon2D":[[1012.1,1060.2],[1247.1,1512.8],[1238.1,-958.3],[1006.8,-391.2]],"pixelCount":34711},{"id":5,"kind":"wall","polygon3D":[[-0.9999,3.3374,7.7388],[0.4764,3.3374,7.6913],[0.4746,-4.56,7.6329],[-1.0018,-4.56,7.6804]],"polygon2D":[[344.9,830],[757.8,832.6],[758.3,-157.5],[342.3,-154]],"pixelCount":5560}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAgAElEQVR42t2dabdsVXWG628ZHSMOjckIQ6MkRlDEFsVegyIYEAIqKii9NEJCK52A9CJEWmlCJ9IoCILNH8lz93PrZZ659t7nXO6HDDM/1KhTp2rXrvmu2c811+aCCy648MILfYQuuuiiiy+++MeFLrnkkv+c6L8muuyyy6644oorr7zyqquuuvrqq3/yk59cc801d9xxx913333XXXf99wL9x18/nXfeeeeee+75558vry7a0sUThVeQzy/YST+a6PwtnTcRF9zkHbMAcLlLL700AMD9yy+/fATgxhtv/PlE991337333vv/D4DKshUM5D6PFwxUAcil9gHQlv8SAFn+DQC4f+2111533XW33XbbPffcAwb3TvT/CQD5tSsG4f6FW1rh/rwEzMpUAAj3oasmcvnD/euvv/6GG25AEd15551gABINg79e7p911lnnnHPOrhhE81y4kyoAYpAr7ACgSUAESgCgBgASUJc/3P/pT3/6s5/97NZbb7399tubHNx///2/+tWv/k/Y95NV4iewjK7c0hVbunyiyyaCFUsYwFBZF4URTi5hsCgBjfsNgEiArK/6J8sfMwAAt9xyC6b4gQce+OWW5P7DDz/80EMPHTxDf7pKN0zE/Vy3JdbHQQLADx8xkGAfrIu2CMfl5LoWWpSA0QDsBQB+PACw/PGF4D5Mh/UYZJ6H+w8++CB/HijH79hJfMUBAbCOwR4B4OfDmREDGArTXK8xpRcVqkIw6wJ1CRgd0FkANABRQQHggS258Efu83iQAKxjMAvACgZ7BwAmjBjAt/B65H6TgwbAuVvatE/Ocl8A4v9cPVG1wPz4m266iSUPr+G+vB65z/NHHnnkIAHAxqDoljC4fqIRAG71IAEYMYjmUBSqDp8FYN4NrTDOml8BaA6oP6ABIJdl+hL3oQMyyLMA4PJib5YkwFtqAMxicKAAwJPYAy0wBCtXABCDmIH5OGDJAa0xsPqnAhAXKACgdlz469yXDhIAhODmm29u3PdR7jdTLAAVA+X4QAGAM7wiB2Ho6I+uA9A80V0AqAagOqANAF0gAMD9l9fw96GJ4D6PgNG4L0IHCQBCwJdW7jczEAzkfjAQhgAgzWIgDAahwiBb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"}}'),VW=JSON.parse('{"version":1,"image":{"width":1152,"height":768,"fileName":"living-room.jpg"},"camera":{"fovYDeg":46.91,"fx":885.0345,"fy":590.023,"cx":255.9995,"cy":256.0006,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-9.0471,1.1441,1.2581],[1.4149,1.1441,-4.3437],[8.6732,0.813,9.2121],[-1.7888,0.813,14.8138]],"polygon2D":[[-13743.9,1188.8],[56926.9,20635.4],[2450.8,462.1],[335.5,432.6]],"pixelCount":88236},{"id":2,"kind":"wall","polygon3D":[[-2.2646,3.6145,7.9916],[0.9936,3.6145,8.0919],[0.9975,-6.0145,7.964],[-2.2607,-6.0145,7.8638]],"polygon2D":[[11.7,784.3],[820.5,779.3],[825.4,-284.4],[3.5,-292.9]],"pixelCount":48816},{"id":3,"kind":"wall","polygon3D":[[-1.6686,3.4823,6.2591],[1.6181,3.4823,6.3756],[1.6324,-5.6636,5.9733],[-1.6544,-5.6636,5.8569]],"polygon2D":[[45.1,876.4],[1081.4,867.4],[1120.2,-455.1],[13.5,-471.8]],"pixelCount":28145},{"id":4,"kind":"wall","polygon3D":[[1.2612,4.5356,9.3158],[1.5173,4.5356,5.2171],[1.4349,-6.4437,5.2119],[1.1788,-6.4437,9.3107]],"polygon2D":[[845.6,814.9],[1155.1,1153.4],[1124.2,-710.2],[828.1,-228.5]],"pixelCount":20909}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),Vq=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-11.jpg"},"camera":{"fovYDeg":46.86,"fx":908.9087,"fy":590.7906,"cx":255.9987,"cy":256.0001,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[1.2985,1.1722,5.5054],[-1.6272,1.1722,4.846],[-0.6999,0.9798,0.7309],[2.2259,0.9798,1.3902]],"polygon2D":[[1837.4,969.4],[-192.2,1012.9],[-2399.9,2660.9],[6684.7,1707.2]],"pixelCount":21724},{"id":2,"kind":"wall","polygon3D":[[-0.9505,3.4707,3.555],[0.6996,3.4707,4.0983],[0.6109,-4.2935,4.3676],[-1.0392,-4.2935,3.8243]],"polygon2D":[[50.7,2114.5],[1606,1920.3],[1496.6,-824.6],[35.2,-1034.1]],"pixelCount":135151},{"id":3,"kind":"wall","polygon3D":[[0.7451,2.7204,4.5579],[1.0313,2.7204,3.7229],[1.0502,-4.07,3.7293],[0.7639,-4.07,4.5644]],"polygon2D":[[1580.4,1545.3],[1983.6,1746.1],[1999.8,-987.1],[1594.2,-687.6]],"pixelCount":28490}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAgAElEQVR42t2dabM9RZGHzyfypREy4zgG4QjMDG6gosiqCLigICKiCAjI5gIygLgMoDOy7/u+KbKKiriGn2We0w83yZtVXafv/UPMhXxxok+f7j7dv19VZlZWVvbqmmuuufbaa6+77rqfT/KLSf5nkv/tyS9/+cvY9rBfLJBy2M+3Szmm+2v+ybu9rpFrG/Hp+PzvLfnZz37mJ/LTLfnJT37y4x//+Oqrr/7Rj3501VVXXXnllf81yeWXX/7DH/7w0ksv/f73v/+9733v4osvZuPcc889/fTTL7vsMg7m4jfccAN3fv3113vwD37wA5C57777br/99htvvPHWW2/ltvmJywLdo48++tBDD91zzz0cc/fdd/N11aIvFgX0VoKAJTSUYwq+3esU6Ls0KOVrMBEb12xJpiFEAuQATK+c5IorrpADMAVrYIWA7373u2x/61vfOuusszjGc/0JoPnkdO7klltu4Sv/zjG33XYbN8z+u+6668knn3zggQdghcvy07333vvYY4+t4hkKWGP0uxxk+NqvLYLl4IVctv2gJaDbMwoHmYboBPYA5IpJ7ASATicAaPvBOeecQyfgGM769re/fcEFF3znO9+5+eabAQTcQZ/9/BGfdKk77riDJn/nnXfS3vnkdK5DT+ITAp544olVbv4BQYGe/uWnGwMCxjLoHHOH+bU99+czMiCg2xWkIRRREBD9QMUiBxAA4pdccomqhuPPOOMM0L/oooto6WDNfXI1DuYvuEn+kYZPq/feQO/CCy/kYAi4//77af6csormP4e+0KPprk8SBGRjsJCDwdd8qS43c1wu56NYiMwBgGoGwhJEJwhLcN555wEiKgjc+fX888/nmqh7LgUsXAT0ORh8UTU0eZ6IA/gLegC9hF/B7YlJOABUV8XwikLgrhT0cz/ocuDXLjFzO3fH5UYOBgqq0CAHxRSHJVAR0eoBl1aPFoIGDgABTuS2uQi3xHW44COPPHL3JNwVV/DiDz/8MHw8/fTTbHD8r371K87lpzUBBbXc8EU/ZEBAxq71nQZu1RIC8mEDhdb6Tgs7hHoJmLI7FFooFNGlk3z961/nE4Y4kgM4mJvhdLQQoPN500030dhp4OznAHil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"}}'),VY=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-12.jpg"},"camera":{"fovYDeg":46.91,"fx":907.7026,"fy":590.0067,"cx":255.9981,"cy":256.0012,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[2.672,1.316,6.1305],[-2.0106,1.316,6.4245],[-2.3631,0.9879,0.8107],[2.3196,0.9879,0.5167]],"polygon2D":[[2545.4,971.6],[-109.7,956.9],[-9335.6,2475.7],[16917.9,3514.4]],"pixelCount":38744},{"id":2,"kind":"wall","polygon3D":[[-1.3052,3.3024,4.7978],[0.8197,3.3024,5.4447],[0.7214,-5.1365,5.7676],[-1.4035,-5.1365,5.1207]],"polygon2D":[[35.4,1681.1],[1533.8,1558.6],[1443.5,-684.1],[28.2,-852.7]],"pixelCount":115187},{"id":3,"kind":"wall","polygon3D":[[0.8416,-1.0331,5.8907],[1.269,-1.0331,4.6406],[1.3241,-2.633,4.6594],[0.8967,-2.633,5.9096]],"polygon2D":[[1506.6,387.3],[1969.6,316.5],[2007.6,-196.6],[1538,-17.5]],"pixelCount":6152},{"id":4,"kind":"wall","polygon3D":[[0.6327,2.4819,4.523],[1.048,2.4819,4.4645],[1.0956,-4.2751,4.8023],[0.6803,-4.2751,4.8608]],"polygon2D":[[1496,1472],[1832.3,1482.8],[1808.9,-683.6],[1496.2,-667.6]],"pixelCount":1290}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),VJ=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-13.jpg"},"camera":{"fovYDeg":46.89,"fx":908.1038,"fy":590.2675,"cx":255.9987,"cy":256.0003,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[3.2792,1.3056,9.6119],[-2.7571,1.3056,10.1592],[-3.8115,0.6999,-1.4706],[2.2248,0.6999,-2.0179]],"polygon2D":[[2210.2,853.6],[37.3,842.6],[-269409.8,21629.6],[158842.3,21629.6]],"pixelCount":31534},{"id":2,"kind":"wall","polygon3D":[[-0.5743,3.32,3.4235],[0.7368,3.32,2.7668],[0.8568,-3.7711,3.0063],[-0.4542,-3.7711,3.6631]],"polygon2D":[[405,2103.4],[1944.7,2448.4],[2011,-1230],[560.1,-892.9]],"pixelCount":125424},{"id":3,"kind":"wall","polygon3D":[[-1.3321,-1.8048,5.0373],[-0.8869,-1.8048,5.8802],[-0.903,-2.8694,5.8887],[-1.3482,-2.8694,5.0458]],"polygon2D":[[61.9,113],[465,190],[456.1,-80.3],[52.2,-202.3]],"pixelCount":1336}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),VK=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-14.jpg"},"camera":{"fovYDeg":46.85,"fx":909.0403,"fy":590.8762,"cx":255.9978,"cy":256.0005,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-2.94,1.12,1.7007],[2.0573,1.12,0.6517],[2.9124,1.076,4.7249],[-2.085,1.076,5.7739]],"polygon2D":[[-5138.6,1638],[12210.4,3228.5],[3188.8,991.7],[-282.3,929.6]],"pixelCount":39164},{"id":2,"kind":"wall","polygon3D":[[-1.149,3.2799,4.3039],[0.9715,3.2799,4.4413],[0.9888,-4.3113,4.174],[-1.1317,-4.3113,4.0366]],"polygon2D":[[52,1793.3],[1776.7,1758],[1841.2,-899.6],[4.5,-952.3]],"pixelCount":124984},{"id":3,"kind":"wall","polygon3D":[[1.0927,4.0707,4.5124],[1.1069,4.0707,3.8596],[1.0596,-4.7237,3.8586],[1.0454,-4.7237,4.5114]],"polygon2D":[[1859.9,2003.4],[2018.4,2232.3],[1975.1,-1186.6],[1822.8,-920.9]],"pixelCount":12478},{"id":4,"kind":"wall","polygon3D":[[-0.9813,6.4779,3.8224],[-0.9379,6.4779,8.338],[-1.1517,-5.9419,8.3401],[-1.1951,-5.9419,3.8244]],"polygon2D":[[88.4,3192.5],[600.6,1815.6],[509.6,-418.9],[-109.7,-1680.9]],"pixelCount":1820}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),VX=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-15.jpg"},"camera":{"fovYDeg":46.78,"fx":910.4678,"fy":591.8041,"cx":256.0003,"cy":256.0005,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-3.567,1.4458,5.8989],[-2.171,1.4458,0.6437],[3.5896,1.349,2.174],[2.1936,1.349,7.4292]],"polygon2D":[[-1150.6,1018.3],[-10994.8,4024.9],[6872.4,1582.4],[2050.1,922.8]],"pixelCount":29996},{"id":2,"kind":"wall","polygon3D":[[-1.0442,4.4985,3.8051],[0.3624,4.4985,4.7905],[0.3446,-4.8826,4.816],[-1.062,-4.8826,3.8305]],"polygon2D":[[24,2426.5],[1269,2061],[1254.5,-873.4],[14,-1265.3]],"pixelCount":125241},{"id":3,"kind":"wall","polygon3D":[[0.5026,4.5778,5.3354],[1.2253,4.5778,4.2733],[1.123,-5.197,4.2037],[0.4002,-5.197,5.2657]],"polygon2D":[[1335,1939.3],[2019.8,2259.7],[1950.1,-1207.7],[1270.3,-833]],"pixelCount":63743},{"id":4,"kind":"wall","polygon3D":[[-0.7092,2.1349,4.0964],[0.4431,2.1349,2.7453],[0.4197,0.1215,2.7254],[-0.7326,0.1215,4.0764]],"polygon2D":[[384.3,1433.1],[1574,1818.5],[1547.7,717],[360.8,694.8]],"pixelCount":1277}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),VZ=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room.jpg"},"camera":{"fovYDeg":46.86,"fx":909.32,"fy":591.06,"cx":256,"cy":256,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"kind":"floor","polygon3D":[[1.2985,1.1722,5.5054],[-1.6272,1.1722,4.846],[-0.6999,0.9798,0.7309],[2.2259,0.9798,1.3902]],"polygon2D":[[1837.4,969.4],[-192.2,1012.9],[-2399.9,2660.9],[6684.7,1707.2]],"pixelCount":21724,"id":1},{"kind":"wall","polygon3D":[[-0.9505,3.4707,3.555],[0.6996,3.4707,4.0983],[0.6109,-4.2935,4.3676],[-1.0392,-4.2935,3.8243]],"polygon2D":[[50.7,2114.5],[1606,1920.3],[1496.6,-824.6],[35.2,-1034.1]],"pixelCount":135151,"id":2},{"kind":"wall","polygon3D":[[0.7451,2.7204,4.5579],[1.0313,2.7204,3.7229],[1.0502,-4.07,3.7293],[0.7639,-4.07,4.5644]],"polygon2D":[[1580.4,1545.3],[1983.6,1746.1],[1999.8,-987.1],[1594.2,-687.6]],"pixelCount":28490,"id":3}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAP1klEQVR42u3d627bOBCAUdl+/3feBQoEbWzLNEVKM5xzfi3abJvqMl+s63YHSOjBYZvNCBAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQDQAAEAEAABABAAAQAQAAEABAABAAQAAQAEAAEABAABAAQAAQAEAAEABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAEAAEABAABAAQAAQAEAAEABAABAAQAAQAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAwAQXAEAAEABAABAAQAAQAEAAEABAABAAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAEAAEABAABAAQAAQAEAAEABAABAAQAAQAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAEAAEABAABAAQAAQAEAAEABAABAAQAAQAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAAXg9rJ8IACAA68/6lwQAEIBac18AAO51Zr0AAOQLwDaNAAACsPigFwCAiAHYriMAgACUG/0CAAiAAAgAIAACIACAAAiAAAACIAACAAiAAAgAIAAC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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAgAElEQVR42t2dabM9RZGHzyfypREy4zgG4QjMDG6gosiqCLigICKiCAjI5gIygLgMoDOy7/u+KbKKiriGn2We0w83yZtVXafv/UPMhXxxok+f7j7dv19VZlZWVvbqmmuuufbaa6+77rqfT/KLSf5nkv/tyS9/+cvY9rBfLJBy2M+3Szmm+2v+ybu9rpFrG/Hp+PzvLfnZz37mJ/LTLfnJT37y4x//+Oqrr/7Rj3501VVXXXnllf81yeWXX/7DH/7w0ksv/f73v/+9733v4osvZuPcc889/fTTL7vsMg7m4jfccAN3fv3113vwD37wA5C57777br/99htvvPHWW2/ltvmJywLdo48++tBDD91zzz0cc/fdd/N11aIvFgX0VoKAJTSUYwq+3esU6Ls0KOVrMBEb12xJpiFEAuQATK+c5IorrpADMAVrYIWA7373u2x/61vfOuusszjGc/0JoPnkdO7klltu4Sv/zjG33XYbN8z+u+6668knn3zggQdghcvy07333vvYY4+t4hkKWGP0uxxk+NqvLYLl4IVctv2gJaDbMwoHmYboBPYA5IpJ7ASATicAaPvBOeecQyfgGM769re/fcEFF3znO9+5+eabAQTcQZ/9/BGfdKk77riDJn/nnXfS3vnkdK5DT+ITAp544olVbv4BQYGe/uWnGwMCxjLoHHOH+bU99+czMiCg2xWkIRRREBD9QMUiBxAA4pdccomqhuPPOOMM0L/oooto6WDNfXI1DuYvuEn+kYZPq/feQO/CCy/kYAi4//77af6csormP4e+0KPprk8SBGRjsJCDwdd8qS43c1wu56NYiMwBgGoGwhJEJwhLcN555wEiKgjc+fX888/nmqh7LgUsXAT0ORh8UTU0eZ6IA/gLegC9hF/B7YlJOABUV8XwikLgrhT0cz/ocuDXLjFzO3fH5UYOBgqq0CAHxRSHJVAR0eoBl1aPFoIGDgABTuS2uQi3xHW44COPPHL3JNwVV/DiDz/8MHw8/fTTbHD8r371K87lpzUBBbXc8EU/ZEBAxq71nQZu1RIC8mEDhdb6Tgs7hHoJmLI7FFooFNGlk3z961/nE4Y4kgM4mJvhdLQQoPN500030dhp4OznAHil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"}}');let V$={arizo:{POSTER_URL:"https://viewer.arizo.ru/poster/app/index.html",ROOM_URL:"https://viewer.arizo.ru/room-viewer"},vizbl:{POSTER_URL:"https://viewer.vizbl.com/poster/app/index.html",ROOM_URL:"https://integrations.vizbl.com/room-viewer"}};function V0(e){return new URL(`public/room-example/${e}`,"https://cdn.neurodyn.ai/LG8wPakWNRI1O7ssxPuAcY61sOV3nsofvg4tHjAoumHFWIFoX9u0yeIk9K19I8_J55pBcLct6_ytKI9fCz4/").toString()}function V1(e={}){return{...VZ,image:{...VZ.image,...e}}}let V2=[{id:"room-example-11",name:"Room Example 11",image_url:V0("room-example-11.jpg"),scene:Vq},{id:"room-example-12",name:"Room Example 12",image_url:V0("room-example-12.jpg"),scene:VY},{id:"room-example-13",name:"Room Example 13",image_url:V0("room-example-13.jpg"),scene:VJ},{id:"room-example-14",name:"Room Example 14",image_url:V0("room-example-14.jpg"),scene:VK},{id:"room-example-15",name:"Room Example 15",image_url:V0("room-example-15.jpg"),scene:VX}],V3=[{id:"carpet-bathroom",name:"Bathroom",image_url:V0("bathroom.jpg"),scene:VG},{id:"carpet-bedroom",name:"Bedroom",image_url:V0("bedroom.jpg"),scene:Vj},{id:"carpet-entryway",name:"Entryway",image_url:V0("entryway.jpg"),scene:VV},{id:"carpet-living-room",name:"Living Room",image_url:V0("living-room.jpg"),scene:VW}];function V4(e,t){return t&&t.length>0?t:"carpet"===e?V3:V2}let V5=["RcSd3KphTyq_JQEjNCqKQA","gu0109ftQmS-UQkwcW010Q","nOfGLIZcRVeU93wOkHWSbg","ozzH5I2kQMW20ao-33C86A","DBA4wR-zT92vjtuOk9varg"];function V9(e,t="m"){switch(t){case"cm":return e/100;case"in":return .0254*e;case"m":return e}}function V8(e){let{t}=sa();return(0,rd.useMemo)(()=>[{value:0,label:t("mattingOptions.none")},{value:.05,label:`${Number((function(e,t){switch(t){case"cm":return 5;case"in":return 1.9685039370078743}})(.05,e).toFixed(2)).toString()} ${t(`units.${e}`)}`}],[e,t])}let V6=(0,rd.createContext)(null);function V7({children:e,src:t,tinuuid:r,type:n,width:i,height:a,displayUnit:s,name:o,rooms:l,apiKey:u,baseURL:c,source:d}){let h=function(){let{t:e}=sa();return(0,rd.useMemo)(()=>[{value:.025,label:`2.5 ${e("units.cm")}`},{value:.05,label:`5 ${e("units.cm")}`}],[e])}(),p=V8(s),f=l&&0!==l.length?`${n}:provided:${l.map(e=>`${e.id}\u0000${e.name}\u0000${e.image_url}\u0000${!!e.scene}`).join("\x01")}`:`${n}:default`,A=(0,rd.useRef)(f),[g,m]=(0,rd.useState)(()=>V4(n,l)),[v,b]=(0,rd.useState)(()=>V4(n,l)[0].id),y=(0,rd.useMemo)(()=>g.find(e=>e.id===v)??g[0],[g,v]),[w,x]=(0,rd.useState)(r),[C,E]=(0,rd.useState)(null),[S,M]=(0,rd.useState)(h[0].value),[I,B]=(0,rd.useState)(p[0].value),[T,k]=(0,rd.useState)(0),[_,R]=(0,rd.useState)(0),[P,D]=(0,rd.useState)(!1),[L,F]=(0,rd.useState)(null),[O,N]=(0,rd.useState)(()=>({layoutReady:!1,placementReady:!1,materialReady:!1,artifactsReady:!1,assetsReady:!1,prepareReady:!1})),[Q,U]=(0,rd.useState)(!1),[z,H]=(0,rd.useState)(null),G=(0,rd.useRef)(null),j="poster"!==n,V="default"===d&&void 0!==u,W=s8({queryKey:["room-viewer","activate",{apiKey:u??null,source:d}],enabled:V,queryFn:({signal:e})=>Vc({productType:j2({apiKey:u,baseURL:c,source:d})},{baseURL:c,headers:{"x-api-key":u},signal:e})},sq,void 0),q=j3(W.error),Y=V&&W.isLoading,J=s8({queryKey:Vy(r??void 0,{apiKey:u,baseURL:c,source:d}),enabled:(!V||W.isSuccess||W.isError&&null===q)&&j&&null===C&&!!r,queryFn:async({signal:e})=>{if(!r)throw Error("Tinuuid is required.");return Vw(r,{apiKey:u,baseURL:c,signal:e,source:d})}},sq,void 0),K=J.data??null,X=C?.native?.glbUrl??null,Z=j3(J.error),$=z??q??Z,ee=(0,rd.useCallback)(e=>{N(t=>Object.assign({},t,e))},[]);(0,rd.useEffect)(()=>{if(A.current===f)return;A.current=f;let e=V4(n,l);m(e),b(e[0].id)},[f,l,n]),(0,rd.useEffect)(()=>{j&&(x(r),E(null),H(null))},[r,j]),(0,rd.useEffect)(()=>{H(null)},[u,d]),(0,rd.useEffect)(()=>{j&&K&&null===C&&E(K.materials?.[0]??null)},[C,K,j]);let et=(0,rd.useMemo)(()=>({src:t,glbUrl:X,tinuuid:w,viewedObject:K,type:n,name:o,rooms:g,setRooms:m,room:y,setRoomId:b,material:C,setTinuuid:x,width:i,height:a,displayUnit:s,frameWidth:S,matting:I,angle:T,rotation:_,isDragging:P,containerRef:L,setMaterial:E,setFrameWidth:M,setMatting:B,setAngle:k,setRotation:R,setIsDragging:D,setContainerRef:F,resourceRef:G,sceneLoad:O,patchSceneLoad:ee,isRoomScenePending:Q,setIsRoomScenePending:U,apiKey:u,baseURL:c,source:d,isViewerAccessPending:Y,accessError:$,setAccessError:H}),[t,X,w,K,n,o,g,y,C,i,a,s,S,I,T,_,L,P,O,ee,Q,u,c,d,Y,$]);return(0,rp.jsx)(V6,{value:et,children:e})}function We(){let e=(0,rd.use)(V6);if(!e)throw Error("useRoomViewer must be used within a RoomViewerProvider");return e}function Wt({className:e,...t}){return(0,rp.jsx)(ci,{"data-slot":"label",className:VC("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}function Wr({className:e,orientation:t="horizontal",decorative:r=!0,...n}){return(0,rp.jsx)(co,{"data-slot":"separator",decorative:r,orientation:t,className:VC("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",e),...n})}function Wn({className:e,...t}){return(0,rp.jsx)("div",{"data-slot":"field-group",className:VC("group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4",e),...t})}let Wi=ll("group/field flex w-full gap-3 data-[invalid=true]:text-destructive",{variants:{orientation:{vertical:["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],horizontal:["flex-row items-center","[&>[data-slot=field-label]]:flex-auto","has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"],responsive:["flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto","@md/field-group:[&>[data-slot=field-label]]:flex-auto","@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"]}},defaultVariants:{orientation:"vertical"}});function Wa({className:e,orientation:t="vertical",...r}){return(0,rp.jsx)("div",{role:"group","data-slot":"field","data-orientation":t,className:VC(Wi({orientation:t}),e),...r})}function Ws({className:e,...t}){return(0,rp.jsx)(Wt,{"data-slot":"field-label",className:VC("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50","has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4","has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10",e),...t})}function Wo({className:e,...t}){return(0,rp.jsx)("div",{"data-slot":"field-label",className:VC("flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50",e),...t})}function Wl({...e}){return(0,rp.jsx)(d8,{"data-slot":"select",...e})}function Wu({...e}){return(0,rp.jsx)(ht,{"data-slot":"select-value",...e})}function Wc({className:e,size:t="default",children:r,...n}){return(0,rp.jsxs)(d7,{"data-slot":"select-trigger","data-size":t,className:VC("flex w-fit items-center justify-between gap-2 whitespace-nowrap rounded-md border bg-background-white shadow-sm outline-none transition-colors cursor-pointer","border-border-medium","text-text-dark","hover:border-border-dark","focus-visible:border-border-dark","aria-invalid:border-border-red","disabled:cursor-not-allowed disabled:border-border-medium disabled:bg-background-base disabled:opacity-40","data-[size=default]:h-11 data-[size=default]:px-2 data-[size=default]:py-2.5 data-[size=default]:typo-base-16","data-[size=md]:h-9 data-[size=md]:px-2 data-[size=md]:py-2 data-[size=md]:typo-base-14","data-[size=sm]:h-[1.875rem] data-[size=sm]:px-2 data-[size=sm]:typo-base-12","*:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2","[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-6 [&_svg:not([class*='text-'])]:text-text-dark",e),...n,children:[r,(0,rp.jsx)(hr,{asChild:!0,children:(0,rp.jsx)(VF,{className:"size-6"})})]})}function Wd({className:e,children:t,position:r="item-aligned",align:n="center",portalContainer:i,...a}){return(0,rp.jsx)(hn,{container:i,children:(0,rp.jsxs)(ha,{"data-slot":"select-content",className:VC("relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-xl border bg-background-white text-text-dark shadow-md","border-border-medium","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2","popper"===r&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:r,align:n,...a,children:[(0,rp.jsx)(Wp,{}),(0,rp.jsx)(hA,{className:VC("p-1","popper"===r&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),(0,rp.jsx)(Wf,{})]})})}function Wh({className:e,children:t,...r}){return(0,rp.jsxs)(hC,{"data-slot":"select-item",className:VC("relative flex w-full cursor-pointer select-none items-center gap-2 rounded-md py-2.5 pr-8 pl-3 outline-hidden","typo-base-16 text-text-sub","focus:bg-background-base focus:text-text-dark","data-[disabled]:pointer-events-none data-[disabled]:opacity-50","[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-6 [&_svg:not([class*='text-'])]:text-text-dark","*:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...r,children:[(0,rp.jsx)("span",{"data-slot":"select-item-indicator",className:"absolute right-2 flex size-6 items-center justify-center",children:(0,rp.jsx)(hI,{children:(0,rp.jsx)(VL,{className:"size-5"})})}),(0,rp.jsx)(hS,{children:t})]})}function Wp({className:e,...t}){return(0,rp.jsx)(hT,{"data-slot":"select-scroll-up-button",className:VC("flex cursor-default items-center justify-center py-1",e),...t,children:(0,rp.jsx)(u6,{className:"size-4"})})}function Wf({className:e,...t}){return(0,rp.jsx)(h_,{"data-slot":"select-scroll-down-button",className:VC("flex cursor-default items-center justify-center py-1",e),...t,children:(0,rp.jsx)(u7,{className:"size-4"})})}function WA({className:e,...t}){let{containerRef:r,material:n,setMaterial:i,setTinuuid:a,apiKey:s,baseURL:o,source:l}=We(),{t:u}=sa(),c=function({queries:e,...t},r){let n=rA(void 0),i=rd.useContext(s2),a=rd.useContext(sZ),s=rd.useMemo(()=>e.map(e=>{let t=n.defaultQueryOptions(e);return t._optimisticResults=i?"isRestoring":"optimistic",t}),[e,n,i]);s.forEach(e=>{s3(e),s$(e,a)}),s0(a);let[o]=rd.useState(()=>new s7(n,s,t)),[l,u,c]=o.getOptimisticResult(s,t.combine),d=!i&&!1!==t.subscribed;rd.useSyncExternalStore(rd.useCallback(e=>d?o.subscribe(t$.batchCalls(e)):tR,[o,d]),()=>o.getCurrentResult(),()=>o.getCurrentResult()),rd.useEffect(()=>{o.setQueries(s,t)},[s,t,o]);let h=l.some((e,t)=>s5(s[t],e))?l.flatMap((e,t)=>{let r=s[t];if(r){let t=new sq(n,r);if(s5(r,e))return s9(r,t,a);s4(e,i)&&s9(r,t,a)}return[]}):[];if(h.length>0)throw Promise.all(h);let p=l.find((e,t)=>{let r=s[t];return r&&s1({result:e,errorResetBoundary:a,throwOnError:r.throwOnError,query:n.getQueryCache().get(r.queryHash),suspense:r.suspense})});if(p?.error)throw p.error;return u(c())}({queries:V5.map(e=>({queryKey:Vy(e,{apiKey:s,baseURL:o,source:l}),queryFn:({signal:t})=>Vw(e,{apiKey:s,baseURL:o,signal:t,source:l})}))});return(0,rd.useEffect)(()=>{let e=c[0]?.data,t=e?.materials?.[0],r=e?.tinuuid;null===n&&t&&r&&(i(t),a(r))},[n,c,i,a]),(0,rp.jsxs)(Wa,{className:VC("w-fit",e),...t,children:[(0,rp.jsx)(Ws,{className:"text-xs text-text-sub font-medium",children:u("material")}),(0,rp.jsxs)(Wl,{value:n?.hid??void 0,onValueChange:e=>{let t=c.find(t=>t.data?.materials?.[0]?.hid===e)?.data;if(!t?.materials?.[0]||!t.tinuuid)return;let r=t.materials[0],n=t.tinuuid;i(r),a(n)},children:[(0,rp.jsx)(Wc,{className:"w-[145px]",size:"md",children:(0,rp.jsxs)(Wu,{placeholder:u("chooseMaterial"),children:[(0,rp.jsx)("div",{className:"size-5 rounded-full border border-border-light",style:{backgroundColor:`#${n?.miniature?.color?.hex}`}}),n?.miniature?.color?.name]})}),(0,rp.jsx)(Wd,{portalContainer:r,children:c.map(e=>{let t=e.data;if(!t?.materials?.[0]||!t.tinuuid)return null;let r=t.materials[0];return(0,rp.jsxs)(Wh,{value:r.hid,children:[(0,rp.jsx)("div",{className:"size-5 rounded-full border border-border-light",style:{backgroundColor:`#${r?.miniature?.color?.hex}`}}),r.miniature?.color?.name]},`${t.tinuuid}-${r.hid}`)})})]})]})}function Wg({className:e,...t}){return(0,rp.jsx)(p3,{"data-slot":"radio-group",className:VC("grid gap-3",e),...t})}function Wm({checked:e,className:t,...r}){return(0,rp.jsx)("div",{className:VC("absolute top-1/2 left-1/2 size-6 -translate-x-1/2 -translate-y-1/2","flex items-center justify-center rounded-full",e?"bg-lime-400":"bg-background-base-2",t),...r,children:(0,rp.jsx)(ce,{className:"text-constant-white size-3.5",strokeWidth:4})})}function Wv({className:e,variant:t="default",...r}){return(0,rp.jsxs)(p5,{"data-slot":"radio-group-item",className:VC("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50","check"===t&&"size-6","inverted"===t&&"size-5 border-button-outline data-[state=checked]:border-border-red data-[state=checked]:border-4 data-[state=checked]:bg-constant-white cursor-pointer transition-all",e),...r,children:["check"===t&&(0,rp.jsx)("div",{className:"relative",children:(0,rp.jsx)(Wm,{})}),"inverted"!==t&&(0,rp.jsx)(p9,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:"check"===t?(0,rp.jsx)(Wm,{checked:!0}):(0,rp.jsx)(ct,{className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})]})}let Wb="u"<typeof window;function Wy(e,{defaultValue:t=!1,initializeWithValue:r=!0}={}){let[n,i]=(0,rd.useState)(()=>{if(r)return Wb?t:window.matchMedia(e).matches;return t});return(0,rd.useEffect)(()=>{let t=window.matchMedia(e),r=()=>{i(t.matches)};return r(),t.addEventListener("change",r),()=>{t.removeEventListener("change",r)}},[e]),n}function Ww({className:e,children:t,...r}){let{className:n,onReachEnd:i,...a}=r.swiperOptions??{},{t:s}=sa(),[o,l]=(0,rd.useState)(null),[u,c]=(0,rd.useState)(!0),[d,h]=(0,rd.useState)(!1),[p,f]=(0,rd.useState)(!1),A=(0,rd.useCallback)(e=>{c(e.isBeginning),h(e.isEnd),f(e.isLocked)},[]),g=(0,rd.useCallback)(e=>{l(e),A(e)},[A]),m=(0,rd.useCallback)(e=>{h(!0),i?.(e)},[i]);return(0,rp.jsxs)("div",{className:VC("relative w-full overflow-hidden",e),children:[(0,rp.jsx)(fZ,{className:VC("w-full py-5",n),slidesPerView:"auto",slidesPerGroup:2,onSwiper:g,onReachBeginning:()=>c(!0),onReachEnd:m,onFromEdge:A,onLock:()=>f(!0),onUnlock:()=>f(!1),onResize:A,slidesOffsetBefore:24,slidesOffsetAfter:24,spaceBetween:12,...a,children:t}),(0,rp.jsxs)(VS,{className:VC("absolute top-1/2 left-8 -translate-y-1/2 z-1",{hidden:u||p}),variant:"contrast",size:"icon",onClick:()=>o?.slidePrev(),children:[(0,rp.jsx)(cr,{}),(0,rp.jsx)("span",{className:"sr-only",children:s("previousSlide")})]}),(0,rp.jsxs)(VS,{className:VC("absolute top-1/2 right-8 -translate-y-1/2 z-1",{hidden:d||p}),variant:"contrast",size:"icon",onClick:()=>o?.slideNext(),children:[(0,rp.jsx)(cn,{}),(0,rp.jsx)("span",{className:"sr-only",children:s("nextSlide")})]})]})}function Wx(e){return e.hid??""}function WC({className:e,...t}){var r;let{material:n,tinuuid:i,viewedObject:a,setMaterial:s,setTinuuid:o,apiKey:l,baseURL:u,source:c,setAccessError:d}=We(),h=n?Wx(n):"",p=Wy("(max-width: 640px)"),f=a?.owner?.uuid,{data:A,error:g,isFetchingNextPage:m,fetchNextPage:v,hasNextPage:b}=s8({queryKey:["room-viewer","public-objects",{apiKey:(r={apiKey:l,baseURL:u,source:c}).apiKey??null,ownerUuid:f??null,source:r.source}],enabled:!!f,queryFn:({pageParam:e,signal:t})=>{if(!f)throw Error("Owner uuid is required.");return Vx(f,e,{apiKey:l,baseURL:u,signal:t,source:c})},initialPageParam:1,getNextPageParam:(e,t,r)=>void 0!==e.pages_count?r<e.pages_count?r+1:void 0:e.objs?.length?r+1:void 0,getPreviousPageParam:(e,t,r)=>{if(!(r<=1))return r-1}},oe,void 0),y=(0,rd.useMemo)(()=>A?.pages.flatMap(e=>e.objs??[])??[],[A]),w=(0,rd.useMemo)(()=>y.filter(e=>!!(e.tinuuid&&e.materials?.[0]&&!(a?.uuid&&e.uuid===a.uuid||a?.tinuuid&&e.tinuuid===a.tinuuid))),[y,a]),x=w.find(e=>e.tinuuid===i),C=w.find(e=>e.tinuuid&&e.materials?.[0]);(0,rd.useEffect)(()=>{let e=j3(g);e&&d(e)},[g,d]),(0,rd.useEffect)(()=>{A&&0===w.length&&b&&!m&&v()},[A,v,b,m,w.length]),(0,rd.useEffect)(()=>{if(null!==n)return;let e=x??C,t=e?.materials?.[0];e&&t&&e.tinuuid&&(s(t),o(e.tinuuid))},[C,x,n,s,o]);let E=(0,rd.useCallback)(()=>{b&&!m&&v()},[v,b,m]);return 0===w.length?null:(0,rp.jsxs)(rp.Fragment,{children:[!p&&(0,rp.jsx)(Wr,{orientation:"vertical"}),(0,rp.jsx)("div",{className:VC(e),...t,children:(0,rp.jsx)(Wg,{value:h||void 0,onValueChange:e=>{let t=w.find(t=>t.materials?.some(t=>Wx(t)===e)),r=t?.materials?.find(t=>Wx(t)===e);t&&r&&t.tinuuid&&(s(r),o(t.tinuuid))},children:(0,rp.jsx)(Ww,{swiperOptions:{onReachEnd:E,className:"py-2 sm:py-5"},children:w.flatMap(e=>e.materials?.map(t=>{let r=Wx(t);return e.tinuuid?(0,rp.jsx)(f$,{className:VC("sm:w-25! w-18! transition-transform duration-200",r!==h&&"hover:scale-110"),children:(0,rp.jsxs)(Ws,{htmlFor:`material-${r}`,className:"size-full flex flex-col gap-1 has-data-[state=checked]:bg-transparent",children:[(0,rp.jsxs)("div",{className:"size-full relative sm:h-19 h-13 rounded-[0.75rem] overflow-hidden grid place-items-center sm:block",children:[(0,rp.jsx)("img",{src:t.previews?.[0]?.subRes?.small??t.previews?.[0]?.url,alt:t.name??"",className:"size-full object-cover"}),(0,rp.jsx)(Wv,{value:r,id:`material-${r}`,variant:"check",className:VC("absolute sm:top-1.75 sm:right-1.75",{"sr-only":r!==h})})]}),!p&&(0,rp.jsx)("span",{className:VC("block w-full text-xs text-left text-text-light truncate",{"text-text-dark":r===h}),children:t.name})]})},`${e.tinuuid}-${r}`):null})??[])})})})]})}let WE=(0,rd.createContext)(null),WS=(0,rd.createContext)(null);function WM({value:e,defaultValue:t,onValueChange:r,...n}){let[i,a]=(0,rd.useState)(t),s=e??i,o=(0,rd.useMemo)(()=>({value:s}),[s]),l=(0,rd.useCallback)(t=>{r?.(t),void 0===e&&a(t)},[r,e]);return(0,rp.jsx)(WE,{value:o,children:(0,rp.jsx)(f9,{"data-slot":"tabs",value:s,onValueChange:l,...n})})}let WI=ll("cursor-pointer group inline-flex items-center justify-center shrink-0 whitespace-nowrap outline-none transition-colors relative z-10 text-text-base [&_svg]:text-icons-normal [&_svg]:transition-colors hover:text-text-dark hover:[&_svg]:text-icons-dark active:bg-background-base-3 active:text-text-dark active:[&_svg]:text-icons-dark data-[state=active]:bg-background-white data-[state=active]:text-text-dark data-[state=active]:[&_svg]:text-icons-dark disabled:pointer-events-none disabled:opacity-50 focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",{variants:{size:{default:"h-7 rounded-lg px-2 typo-button-normal active:rounded-lg data-[state=active]:rounded-lg [&_svg]:size-4",sm:"h-6 rounded-[4px] px-2 typo-button-small active:rounded-lg data-[state=active]:rounded-lg [&_svg]:size-4",lg:"h-9 rounded-lg px-3 typo-button-big active:rounded-lg data-[state=active]:rounded-lg [&_svg]:size-6"}},defaultVariants:{size:"default"}}),WB=ll("relative inline-flex items-center rounded-xl bg-background-base-2",{variants:{size:{default:"p-1",sm:"p-[3px]",lg:"p-1"}},defaultVariants:{size:"default"}});function WT({className:e,children:t,size:r="default",...n}){let i=(0,rd.use)(WE),a=(0,rd.useRef)(null),s=(0,rd.useRef)(new Map),o=(0,rd.useRef)(null),l=(0,rd.useRef)(i?.value),u=(0,rd.useRef)(null),c=(0,rd.useCallback)(()=>{u.current=null;let e=o.current;if(!e)return;let t=l.current;if(!t){e.style.opacity="0";return}let r=a.current,n=s.current.get(t);if(!r||!n){e.style.opacity="0";return}let i=Math.round(n.offsetLeft),c=Math.round(n.offsetTop),d=Math.round(n.offsetWidth),h=Math.round(n.offsetHeight);e.style.transform=`translate3d(${i}px, ${c}px, 0)`,e.style.width=`${d}px`,e.style.height=`${h}px`,e.style.opacity="1"},[]),d=(0,rd.useCallback)(()=>{null===u.current&&(u.current=requestAnimationFrame(()=>{c()}))},[c]),h=(0,rd.useCallback)((e,t)=>{t?s.current.set(e,t):s.current.delete(e),d()},[d]);(0,rd.useLayoutEffect)(()=>{l.current=i?.value,null!==u.current&&(cancelAnimationFrame(u.current),u.current=null),c()},[i?.value,c]),(0,rd.useEffect)(()=>{let e=a.current;if(!e||"u"<typeof ResizeObserver)return;let t=new ResizeObserver(()=>d());t.observe(e);let r=i?.value;if(r){let e=s.current.get(r);e&&t.observe(e)}return()=>{t.disconnect()}},[d,i?.value]),(0,rd.useEffect)(()=>()=>{null!==u.current&&cancelAnimationFrame(u.current)},[]);let p=(0,rd.useMemo)(()=>({registerTrigger:h,size:r}),[h,r]);return(0,rp.jsx)(f6,{ref:a,"data-slot":"tabs-list",className:VC(WB({size:r}),e),...n,children:(0,rp.jsxs)(WS,{value:p,children:[(0,rp.jsx)("div",{ref:o,"aria-hidden":!0,"data-slot":"tabs-indicator",className:"pointer-events-none absolute top-0 left-0 z-0 rounded-lg bg-background-white opacity-0 transition-[transform,width,height,opacity] duration-[250ms] ease-out motion-reduce:transition-none"}),t]})})}function Wk({className:e,size:t,children:r,value:n,...i}){let a=(0,rd.use)(WS),s=(0,rd.useRef)(null),o=t??a?.size??"default",l=VC("relative z-10 inline-flex items-center justify-center","lg"===o?"gap-1.5":"gap-1");return(0,rd.useLayoutEffect)(()=>{if(a&&n)return a.registerTrigger(n,s.current),()=>{a.registerTrigger(n,null)}},[a,n]),(0,rp.jsx)(Ae,{ref:s,"data-slot":"tabs-trigger",className:VC(WI({size:o}),"data-[state=active]:bg-transparent",e),value:n,...i,children:(0,rp.jsx)("span",{"data-slot":"tabs-trigger-content",className:l,children:r})})}function W_({className:e,...t}){let{displayUnit:r,matting:n,setMatting:i}=We(),{t:a}=sa(),s=V8(r);return(0,rp.jsxs)(Wa,{className:VC("w-fit",e),...t,children:[(0,rp.jsx)(Ws,{className:"text-xs text-text-sub font-medium",children:a("matting")}),(0,rp.jsx)(WM,{value:n.toString(),onValueChange:e=>i(Number(e)),children:(0,rp.jsx)(WT,{children:s.map(e=>(0,rp.jsx)(Wk,{value:e.value.toString(),children:e.label},e.value))})})]})}async function WR(e,t={}){let r=t.source??"default",n={image:e};return j1({apiKey:t.apiKey,source:r})?Vp(n,{baseURL:t.baseURL,headers:{"x-api-key":t.apiKey},signal:t.signal,params:{productType:j2({apiKey:t.apiKey,source:r})}}):t.signal?Vu(n,{signal:t.signal}):Vu(n)}WT.displayName=f6.displayName,Wk.displayName=Ae.displayName,Ar.displayName;let WP=0,WD=[{id:0,label:"empty",rgb:[0,0,0]},{id:1,label:"floor",rgb:[32,208,96]},{id:2,label:"wall-1",rgb:[255,59,48]},{id:3,label:"wall-2",rgb:[10,132,255]},{id:4,label:"ceiling",rgb:[255,214,10]},{id:5,label:"plane-5",rgb:[191,90,242]},{id:6,label:"plane-6",rgb:[255,159,10]},{id:7,label:"plane-7",rgb:[100,210,255]},{id:8,label:"plane-8",rgb:[255,45,85]}];async function WL(e,t){var r,n,i;let a,s,o,l,u=await (r=e.planeIds.dataPng,new Promise((e,t)=>{let n=new Image;n.onload=()=>e(n),n.onerror=()=>t(Error("Failed to load room plane id mask image.")),n.crossOrigin="anonymous",n.src=r})),c=e.planeIds.width||u.naturalWidth||u.width,d=e.planeIds.height||u.naturalHeight||u.height,h=document.createElement("canvas"),p=h.getContext("2d",{willReadFrequently:!0});if(!p)throw Error("Failed to prepare room plane mask canvas.");h.width=c,h.height=d,p.drawImage(u,0,0,c,d);let f=p.getImageData(0,0,c,d),A=document.createElement("canvas"),g=A.getContext("2d");if(!g)throw Error("Failed to prepare room debug mask canvas.");A.width=c,A.height=d;for(let e=0;e<c*d;e++){let t=4*e,r=function(e){return WD.find(t=>t.id===e)??{id:e,label:`plane-${e}`,rgb:[73*e%255,151*e%255,211*e%255]}}(f.data[t]??0);f.data[t]=r.rgb[0],f.data[t+1]=r.rgb[1],f.data[t+2]=r.rgb[2],f.data[t+3]=255}g.putImageData(f,0,0),n=await new Promise((e,t)=>{A.toBlob(r=>{r?e(r):t(Error("Failed to export room plane mask image."))},"image/png")}),s=Array.from((a=t.lastIndexOf("."))>0?t.slice(0,a):t).map(e=>{let t=e.charCodeAt(0),r="."===e||"_"===e||"-"===e;return t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||r?e:"-"}).join("").split("-").filter(Boolean).join("-"),i=`${s||"room"}.debug-mask.colors.png`,o=URL.createObjectURL(n),(l=document.createElement("a")).href=o,l.download=i,l.style.display="none",document.body.append(l),l.click(),l.remove(),window.setTimeout(()=>URL.revokeObjectURL(o),1e3)}function WF({className:e,...t}){let{t:r}=sa(),{rooms:n,room:i,setRoomId:a,setRooms:s,type:o,isRoomScenePending:l,setIsRoomScenePending:u,patchSceneLoad:c,apiKey:d,baseURL:h,source:p,setAccessError:f}=We(),A=Wy("(max-width: 640px)"),g=(0,rd.useId)(),m=(0,rd.useRef)(new Set),v=(0,rd.useRef)(null),b=(0,rd.useRef)(!0),y=(0,rd.useCallback)((e,t)=>r(`rooms.${t}`,{defaultValue:e}),[r]);(0,rd.useEffect)(()=>{let e=new Set(n.map(e=>e.image_url));for(let t of Array.from(m.current))e.has(t)||(URL.revokeObjectURL(t),m.current.delete(t))},[n]),(0,rd.useEffect)(()=>{let e=m.current;return()=>{for(let t of(b.current=!1,v.current?.abort(),Array.from(e)))URL.revokeObjectURL(t);e.clear()}},[]);let w=(0,rd.useCallback)(async e=>{let t=e.target.files?.[0];if(e.target.value="",!t)return;let r=null,n=new AbortController;v.current?.abort(),v.current=n,u(!0);try{r=URL.createObjectURL(t);let e=await WR(t,{apiKey:d,baseURL:h,source:p,signal:n.signal});if(n.signal.aborted||!b.current)return void URL.revokeObjectURL(r);(function(){try{return"1"===window.localStorage.getItem("neurodyn-room-viewer:debug-mask-export")}catch{return!1}})()&&WL(e,t.name).catch(e=>{console.error("Failed to export room debug mask",e)});let i={id:(WP+=1,`room-custom-${WP}`),name:t.name,image_url:r,scene:e};m.current.add(r),c({placementReady:!1,prepareReady:!1,artifactsReady:!1,assetsReady:!1}),s(e=>[i,...e]),a(i.id)}catch(t){if(r&&URL.revokeObjectURL(r),n.signal.aborted)return;let e=j3(t);if(e)return void f(e);console.error("Failed to prepare custom room scene",t)}finally{v.current===n&&(v.current=null,b.current&&u(!1))}},[d,h,c,f,u,a,s,p]);return(0,rp.jsx)("div",{className:VC(e),...t,children:(0,rp.jsx)(Wg,{value:i.id,onValueChange:a,children:(0,rp.jsxs)(Ww,{swiperOptions:{className:"py-2 sm:py-5 pb-3 sm:pb-5"},children:[(0,rp.jsx)(f$,{className:"sm:w-25! w-21! h-auto",children:(0,rp.jsxs)(Ws,{htmlFor:g,className:VC("flex size-full cursor-pointer items-center justify-center rounded-[0.75rem] border border-dashed border-muted-foreground/40 bg-transparent px-2 text-center text-xs leading-tight text-muted-foreground transition-colors hover:border-foreground/40 hover:text-foreground",l&&"cursor-wait opacity-80"),"aria-disabled":l,children:[l?(0,rp.jsxs)(rp.Fragment,{children:[(0,rp.jsx)(VH,{className:"size-5"}),(0,rp.jsx)("span",{className:"sr-only",children:r("uploadOwnPhoto")})]}):r("uploadOwnPhoto"),(0,rp.jsx)("input",{id:g,type:"file",accept:"image/*",className:"sr-only",disabled:l,onChange:w})]})}),n.map(e=>(0,rp.jsx)(f$,{className:VC("sm:w-25! w-21! transition-transform duration-200",e.id!==i.id&&"hover:scale-110"),children:(0,rp.jsxs)(Ws,{htmlFor:`room-${e.id}`,className:"size-full flex flex-col gap-1 has-data-[state=checked]:bg-transparent",children:[(0,rp.jsxs)("div",{className:"size-full relative h-17 sm:h-19 rounded-[0.75rem] overflow-hidden",children:[(0,rp.jsx)("img",{src:e.image_url,alt:y(e.name,e.id),className:"size-full object-cover",crossOrigin:"anonymous"}),(0,rp.jsx)(Wv,{value:e.id,id:`room-${e.id}`,variant:"check",className:VC("absolute top-1.75 right-1.75",{"sr-only":e.id!==i.id})})]}),"carpet"===o&&!A&&(0,rp.jsx)("span",{className:VC("block w-full text-xs text-left text-text-light truncate",{"text-text-dark":e.id===i.id}),children:y(e.name,e.id)})]})},e.id))]})})})}function WO({className:e,...t}){let{type:r}=We();return(0,rp.jsxs)("div",{className:VC("flex sm:items-end pl-0 overflow-hidden sm:flex-row flex-col py-3 sm:py-0",e),...t,children:[(0,rp.jsx)(WF,{className:VC("shrink-0",{"sm:min-w-148.5 min-w-full":"carpet"===r,grow:"poster"===r})}),"poster"===r&&(0,rp.jsxs)("div",{className:"hidden gap-5 pr-6 pb-5 md:flex",children:[(0,rp.jsx)(WA,{}),(0,rp.jsx)(W_,{})]}),"carpet"===r&&(0,rp.jsx)(WC,{})]})}function WN({className:e,...t}){let{name:r}=We();return(0,rp.jsx)("div",{className:VC("h-16 flex items-center px-6",e),...t,children:(0,rp.jsx)("div",{className:"truncate",children:r})})}function WQ({variant:e,showDialogCloseButton:t=!1}){let{t:r}=sa();return(0,rp.jsxs)("div",{className:"flex size-full flex-col items-center justify-center gap-4 bg-radial from-background-containers to-background-base-2 p-4 text-center",children:[(0,rp.jsx)(VD,{className:"size-8 text-icons-light"}),(0,rp.jsx)("h2",{className:"typo-base-16 font-medium text-text-dark",children:r(`accessError.${e}`)}),t&&(0,rp.jsx)(VB,{asChild:!0,children:(0,rp.jsx)(VS,{variant:"secondary",children:r("close")})})]})}function WU({...e}){return(0,rp.jsx)(hj,{"data-slot":"popover",...e})}function Wz({...e}){return(0,rp.jsx)(hq,{"data-slot":"popover-trigger",...e})}function WH({className:e,align:t="center",sideOffset:r=4,portalContainer:n,...i}){return(0,rp.jsx)(hX,{container:n,children:(0,rp.jsx)(h$,{"data-slot":"popover-content",align:t,sideOffset:r,className:VC("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",e),...i})})}function WG({className:e,defaultValue:t,value:r,min:n=0,max:i=100,variant:a="default","aria-label":s,"aria-labelledby":o,...l}){let u=(0,rd.useMemo)(()=>Array.isArray(r)?r:Array.isArray(t)?t:[n],[r,t,n]);return(0,rp.jsxs)(po,{"data-slot":"slider",defaultValue:t,value:r,min:n,max:i,"data-variant":a,"aria-label":s,"aria-labelledby":o,className:VC("relative flex w-full touch-none cursor-pointer items-center select-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",e),...l,children:[(0,rp.jsx)(pf,{"data-slot":"slider-track",className:VC("relative grow overflow-hidden rounded-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5","editor"===a?"bg-border-light data-[orientation=horizontal]:h-0.5":"bg-muted data-[orientation=horizontal]:h-1.5"),children:(0,rp.jsx)(pg,{"data-slot":"slider-range",className:VC("absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full","editor"===a?"bg-background-blue":"bg-primary")})}),Array.from({length:u.length},(e,t)=>(0,rp.jsx)(pv,{"data-slot":"slider-thumb","aria-label":s,"aria-labelledby":o,className:VC("ring-ring/50 block shrink-0 rounded-full border bg-white transition-[color,box-shadow] focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50","editor"===a?"size-3 border-background-blue shadow-none hover:ring-2 focus-visible:ring-2":"size-4 border-primary shadow-sm hover:ring-4 focus-visible:ring-4")},t))]})}let Wj=/oklch\(([0-9.]+)\s+([0-9.]+)\s+([0-9.]+)\)/;function WV(e,t){let r=e.match(Wj);return r?{l:Number.parseFloat(r[1]),c:Number.parseFloat(r[2]),h:Number.parseFloat(r[3])}:{l:t[0],c:t[1],h:t[2]}}function WW({data:e,foreground:t,background:r,robustness:n="M",className:i,...a}){let[s,o]=(0,rd.useState)(null);return((0,rd.useEffect)(()=>{(async()=>{try{let i=getComputedStyle(document.documentElement),a=t??i.getPropertyValue("--foreground"),s=r??i.getPropertyValue("--background"),l=WV(a,[.21,.006,285.885]),u=WV(s,[.985,0,0]),c=await vG.toString(e,{type:"svg",color:{dark:vz(vH({mode:"oklch",...l})),light:vz(vH({mode:"oklch",...u}))},width:200,errorCorrectionLevel:n,margin:0});o(c)}catch(e){console.error(e)}})()},[e,t,r,n]),s)?(0,rp.jsx)("div",{className:VC("size-full","[&_svg]:size-full",i),dangerouslySetInnerHTML:{__html:s},...a}):null}let Wq=new TY,WY=Wq.getDevice(),WJ=Wq.getOS(),WK="iOS"===WJ.name,WX="Android"===WJ.name,WZ="mobile"===WY.type;function W$({className:e,...t}){let{src:r,tinuuid:n,type:i,width:a,height:s,name:o,containerRef:l,resourceRef:u}=We(),{t:c,i18n:d}=sa(),h=function(){let{i18n:e}=sa();return"ru"===(e.resolvedLanguage??e.language)?"arizo":"vizbl"}(),[p,f]=(0,rd.useState)(""),[A,g]=(0,rd.useState)(""),[m,v]=(0,rd.useState)(!1),[b,y]=(0,rd.useState)(!1),w=(0,rd.useRef)(null),x=d.resolvedLanguage??d.language,C=V$[h],E=(0,rd.useMemo)(()=>{if("carpet"===i&&n){let e=new URL(C.ROOM_URL);return e.searchParams.set("type",i),e.searchParams.set("tinuuid",n),e.searchParams.set("name",o),e.searchParams.set("language",x),e.toString()}let e=new URL(C.POSTER_URL);return e.searchParams.set("texture",r),e.searchParams.set("texture_width",(100*a).toString()),e.searchParams.set("texture_height",(100*s).toString()),decodeURIComponent(e.toString())},[r,n,i,a,s,o,x,C]),S=(0,rd.useMemo)(()=>{if(!n||"vizbl"!==h)return null;let e=new URL("https://appclip.apple.com/id");return e.searchParams.set("p","com.us.vizbl.Clip"),e.searchParams.set("tinuuid",n),e.toString()},[n,h]),M=async()=>{if("carpet"===i)return n?WK&&S?void window.location.assign(S):void v(!0):void 0;let e=w.current,t=u.current;if(e&&t)if(e.canActivateAR)try{y(!0);let e=t.clone(!0);if(e.position.set(0,0,0),WK){let t=new IK,r=await t.parseAsync(e),n=new File([r],"scene.usdz",{type:"model/vnd.usdz+zip"});f(URL.createObjectURL(n))}else{let t=new I9,r=await t.parseAsync(e,{binary:!0}),n=new File([r],"scene.glb",{type:"model/gltf-binary"});g(URL.createObjectURL(n))}}finally{y(!1)}else v(!0)};return((0,rd.useEffect)(()=>((""!==p||""!==A)&&w.current?.activateAR(),()=>{""!==p&&URL.revokeObjectURL(p),""!==A&&URL.revokeObjectURL(A)}),[p,A]),WX&&WZ||"carpet"===i&&!n)?null:(0,rp.jsxs)("div",{className:VC(e),...t,children:[(0,rp.jsx)(VS,{variant:"contrast",disabled:b,onClick:M,children:c("ar.viewInPlace")}),(0,rp.jsx)(VM,{open:m,onOpenChange:v,children:(0,rp.jsxs)(Vk,{className:"gap-6 sm:max-w-120",showCloseButton:!1,portalContainer:l,children:[(0,rp.jsx)("div",{className:"flex items-center justify-center p-10 bg-constant-white rounded-2xl",children:(0,rp.jsx)(WW,{className:"size-48",robustness:"H",data:E})}),(0,rp.jsx)("p",{className:"text-lg text-center text-text-sub font-medium",children:c("ar.scanQrCode")}),(0,rp.jsx)(VB,{asChild:!0,children:(0,rp.jsx)(VS,{variant:"contrast",size:"lg",children:c("close")})})]})}),(0,rp.jsx)("model-viewer",{ref:w,className:"fixed w-px h-px opacity-0 pointer-events-none",src:A,iosSrc:p,reveal:"manual",ar:!0,cameraControls:!0,arPlacement:"wall",arModes:"webxr",arScale:"fixed",shadowIntensity:1,interactionPromptThreshold:100})]})}let W0={width:void 0,height:void 0};function W1(e,t,r){return e[t]?Array.isArray(e[t])?e[t][0][r]:e[t][r]:"contentBoxSize"===t?e.contentRect["inlineSize"===r?"width":"height"]:void 0}function W2(e){return e.image.width/e.image.height}async function W3(e,t,r){let n=new Image;n.crossOrigin="anonymous",await new Promise((t,r)=>{n.onload=()=>t(),n.onerror=()=>r(Error("Failed to decode room plane id map.")),n.src=e});let i=document.createElement("canvas"),a=i.getContext("2d");if(!a)throw Error("Failed to get 2D context for room plane id map.");i.width=t,i.height=r,a.drawImage(n,0,0,t,r);var s=a.getImageData(0,0,t,r);let o=new Uint8Array(t*r);for(let e=0;e<o.length;e++)o[e]=s.data[4*e]??0;return{data:o,width:t,height:r}}async function W4(e,t){return new Promise((r,n)=>{e.toBlob(e=>{e?r(e):n(Error(t))},"image/png")})}function W5({ref:e}){let{camera:t,gl:r,invalidate:n,scene:i}=Hs();return(0,rd.useImperativeHandle)(e,()=>({capture:async()=>(n(),await new Promise(e=>requestAnimationFrame(()=>e())),r.render(i,t),W4(r.domElement,"Failed to create scene share image"))}),[t,r,n,i]),null}let W9=new bb(0,0,1),W8=new bb(0,0,1);function W6(e){return new bv().setFromUnitVectors(W9,e.clone().normalize())}let W7="NEURODYN_ROOM_SCENE_PATCH";function qe(e,t){let r=e.onBeforeCompile,n=e.customProgramCacheKey.bind(e),i=e.side,a=e.transparent,s=e.alphaToCoverage;return e.side=2,e.transparent=!0,e.alphaToCoverage=!0,e.onBeforeCompile=(n,i)=>{r?.call(e,n,i),function(e,t){e.uniforms.uPlaneIds={value:t.planeIdsTexture},e.uniforms.uShading={value:t.shadingTexture},e.uniforms.uActiveId=t.activePlaneIdUniform,e.uniforms.uPlaneIdsSize={value:t.planeIdsSize},e.uniforms.uViewport={value:t.viewport};let r=`
6610
6610
  {
6611
6611
  vec2 _neurodynRoomUv = gl_FragCoord.xy / uViewport;
6612
6612
  float _neurodynRoomCoverage = neurodynRoomScenePlaneCoverage(_neurodynRoomUv);
@@ -6650,5 +6650,5 @@ ${em}`:em);function j1(e){return"shopify"===e.source||void 0!==e.apiKey}function
6650
6650
  #endif
6651
6651
  `);if(n.includes("#include <output_fragment>")){e.fragmentShader=n.replace("#include <output_fragment>",`${r}
6652
6652
  #include <output_fragment>`);return}e.fragmentShader=n.replace("#include <opaque_fragment>",`${r}
6653
- #include <opaque_fragment>`)}(n,t)},e.customProgramCacheKey=()=>`${n()}|neurodyn-room-scene-v2`,e.needsUpdate=!0,()=>{e.onBeforeCompile=r,e.customProgramCacheKey=n,e.side=i,e.transparent=a,e.alphaToCoverage=s,e.needsUpdate=!0}}let qt=Math.PI/2;function qr({glbUrl:e,position:t,quaternion:r,materialPatch:n}){let{resourceRef:i,rotation:a,setIsDragging:s}=Wn(),o=HX(e),l=(0,rd.useMemo)(()=>o.scene.clone(!0),[o]),u=(0,rd.useMemo)(()=>{let e;return e=new Set,l.traverse(t=>{if(!t.isMesh||!t.material)return;if(Array.isArray(t.material)){t.material=t.material.map(t=>{let r=t.clone();return e.add(r),r});return}let r=t.material.clone();e.add(r),t.material=r}),Array.from(e)},[l]),c=(0,rd.useMemo)(()=>bg.degToRad(a),[a]);return(0,rd.useLayoutEffect)(()=>{let e=u.map(e=>qe(e,n));return()=>{e.forEach(e=>e())}},[u,n]),(0,rp.jsx)("group",{ref:i,position:t,quaternion:r,onPointerDown:()=>s(!0),onPointerUp:()=>s(!1),onPointerLeave:()=>s(!1),children:(0,rp.jsx)("group",{"rotation-z":c,children:(0,rp.jsx)("group",{"rotation-x":qt,children:(0,rp.jsx)("primitive",{object:l})})})})}function qn(e,t){(0,rd.useLayoutEffect)(()=>{let r=e.current;if(r)return qe(r,t)},[e,t])}let qi=[1,1,1];function qa({node:e,position:t,scale:r=qi,uvScale:n,materialPatch:i}){let a=(0,rd.useRef)(null);return(0,rd.useEffect)(()=>{if(!a.current||void 0===n)return;let t=a.current.geometry.attributes.uv,r=e.geometry.attributes.uv.array;for(let e=0;e<t.count;e++){let i=r[2*e],a=r[2*e+1];t.setXY(e,i*n,a)}t.needsUpdate=!0},[n,e.geometry]),(0,rd.useLayoutEffect)(()=>{let e=a.current?.material;if(!e)return;let t=(Array.isArray(e)?e:[e]).map(e=>qe(e,i));return()=>{t.forEach(e=>e())}},[i,e]),(0,rp.jsx)(H0,{ref:a,object:e,position:t,scale:r})}function qs({width:e,height:t,materialPatch:r}){let{material:n}=Wn(),{nodes:i}=HX(n?.native?.glbUrl),a=(0,rd.useMemo)(()=>{let e=new bb,t={};["vizbl0","vizbl1","vizbl2","vizbl3","vizbl4","vizbl5","vizbl6","vizbl7"].forEach(r=>{let n=i[r];if(!n?.geometry)return;let a=n.clone();a.geometry=n.geometry.clone(),Array.isArray(n.material)?a.material=n.material.map(e=>e.clone()):n.material&&(a.material=n.material.clone()),a.updateMatrixWorld(!0),a.geometry.applyMatrix4(a.matrixWorld),a.position.set(0,0,0),a.rotation.set(0,0,0),a.scale.set(1,1,1),a.updateMatrixWorld(!0),a.geometry.computeBoundingBox(),a.geometry.boundingBox&&(a.geometry.boundingBox.getCenter(e),a.geometry.translate(-e.x,-e.y,-e.z)),a.geometry.computeBoundingBox(),t[r]=a});let r=t.vizbl0;if(!r?.geometry)throw Error("Corner mesh not found");let n=r.geometry.boundingBox,a=n.max.x-n.min.x,s=n.max.y-n.min.y,o={top:0,bottom:0,left:0,right:0},l={top:0,bottom:0,left:0,right:0},u=t.vizbl1;if(u?.geometry){let e=u.geometry.boundingBox;o.top=e.max.x-e.min.x,l.top=e.max.y-e.min.y}let c=t.vizbl3;if(c?.geometry){let e=c.geometry.boundingBox;o.right=e.max.y-e.min.y,l.right=e.max.x-e.min.x}let d=t.vizbl5;if(d?.geometry){let e=d.geometry.boundingBox;o.bottom=e.max.x-e.min.x,l.bottom=e.max.y-e.min.y}let h=t.vizbl7;if(h?.geometry){let e=h.geometry.boundingBox;o.left=e.max.y-e.min.y,l.left=e.max.x-e.min.x}return{cornerSize:{width:a,height:s},barLengths:o,barThickness:l,normalizedNodes:t}},[i]),s=e-2*a.cornerSize.width+.002,o=t-2*a.cornerSize.height+.002,l=s/a.barLengths.top,u=s/a.barLengths.bottom,c=o/a.barLengths.left,d=o/a.barLengths.right;return(0,rp.jsxs)("group",{children:[(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl0,position:[-e/2+a.cornerSize.width/2-.001,t/2-a.cornerSize.height/2+.001,0],materialPatch:r}),(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl1,position:[0,t/2-a.barThickness.top/2+.001,0],scale:[l,1,1],uvScale:l,materialPatch:r}),(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl2,position:[e/2-a.cornerSize.width/2+.001,t/2-a.cornerSize.height/2+.001,0],materialPatch:r}),(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl3,position:[e/2-a.barThickness.right/2+.001,0,0],scale:[1,d,1],uvScale:d,materialPatch:r}),(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl4,position:[e/2-a.cornerSize.width/2+.001,-t/2+a.cornerSize.height/2-.001,0],materialPatch:r}),(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl5,position:[0,-t/2+a.barThickness.bottom/2-.001,0],scale:[u,1,1],uvScale:u,materialPatch:r}),(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl6,position:[-e/2+a.cornerSize.width/2-.001,-t/2+a.cornerSize.height/2-.001,0],materialPatch:r}),(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl7,position:[-e/2+a.barThickness.left/2-.001,0,0],scale:[1,c,1],uvScale:c,materialPatch:r})]})}function qo({width:e,height:t,position:r,quaternion:n,materialPatch:i}){let a=(0,rd.useRef)(null);return qn(a,i),(0,rp.jsxs)("mesh",{position:r,quaternion:n,children:[(0,rp.jsx)("planeGeometry",{args:[e,t]}),(0,rp.jsx)("meshStandardMaterial",{ref:a,color:"white"})]})}function ql({src:e,position:t,quaternion:r,materialPatch:n}){let{width:i,height:a,angle:s,material:o,frameWidth:l,rotation:u,resourceRef:c,matting:d,setIsDragging:h}=Wn(),p=Hu(Sh,e),f=(0,rd.useRef)(null),A=(0,rd.useMemo)(()=>bg.degToRad(s),[s]),g=(0,rd.useMemo)(()=>bg.degToRad(u),[u]);qn(f,n);let m=i+2*d,v=a+2*d,b=d>0?m:i,y=d>0?v:a;return(0,rp.jsx)("group",{ref:c,position:t,quaternion:r,onPointerDown:()=>h(!0),onPointerUp:()=>h(!1),onPointerLeave:()=>h(!1),children:(0,rp.jsxs)("group",{rotation:[0,g,A],children:[o?.native?.glbUrl&&l>0&&(0,rp.jsx)(qs,{width:b,height:y,materialPatch:n}),d>0&&(0,rp.jsx)(qo,{width:m,height:v,position:[0,0,.01],materialPatch:n}),(0,rp.jsxs)("mesh",{position:[0,0,.02],children:[(0,rp.jsx)("planeGeometry",{args:[i,a]}),(0,rp.jsx)("meshStandardMaterial",{ref:f,map:p})]})]})})}function qu(){let{room:e}=Wn(),t=Hs(e=>e.scene),r=Hu(Sh,e.image_url);return(0,rd.useLayoutEffect)(()=>(r.colorSpace="srgb",t.background=r,()=>{t.background===r&&(t.background=null)}),[t,r]),null}function qc({plane:e,geometry:t,setPlaneRef:r}){return(0,rp.jsx)("mesh",{ref:t=>r(e,t),geometry:t,userData:{planeId:e.id,kind:e.kind},children:(0,rp.jsx)("meshBasicMaterial",{visible:!1,side:2})})}function qd(){let{src:e,glbUrl:t,type:r,room:n,patchSceneLoad:i}=Wn(),{gl:a,size:s,camera:o,invalidate:l,raycaster:u,pointer:c}=Hs(),d=(0,rd.useMemo)(()=>n.scene??V3(),[n.scene]),[h,p]=Hu(Sh,[d.planeIds.dataPng,d.shading?.dataPng??"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNoaGgAAAMEAYFL09IQAAAAAElFTkSuQmCC"]),f=(0,rd.useMemo)(()=>({value:0}),[]),A=(0,rd.useMemo)(()=>new bm(1,1),[]),g=(0,rd.useMemo)(()=>new bm(d.planeIds.width,d.planeIds.height),[d.planeIds.height,d.planeIds.width]),m=(0,rd.useMemo)(()=>({planeIdsTexture:h,shadingTexture:p,planeIdsSize:g,viewport:A,activePlaneIdUniform:f}),[f,g,h,p,A]),[v,b]=(0,rd.useState)(null),[y,w]=(0,rd.useState)(null),x=(0,rd.useRef)(null),C=(0,rd.useRef)(new Map),E=(0,rd.useMemo)(()=>d.planes.filter(e=>"carpet"===r?"floor"===e.kind:"floor"!==e.kind),[d.planes,r]),S=(0,rd.useMemo)(()=>E.map(e=>e.id),[E]),M=(0,rd.useMemo)(()=>new Map(d.planes.map(e=>{let t,r;return[e.id,(t=e.polygon3D.flatMap(e=>(function(e,t){let[r,n,i]=e;return[r*(W2(t)*(t.camera.fx/t.camera.fy)),i,-n]})(e,d)),(r=new wm).setAttribute("position",new wu(t,3)),e.polygon3D.length>=4&&r.setIndex([0,1,2,0,2,3]),r)]})),[d]),I=(0,rd.useCallback)((e,t)=>{t?C.current.set(e.id,t):C.current.delete(e.id)},[]);(0,rd.useLayoutEffect)(()=>{o instanceof wz&&(o.fov=d.camera.fovYDeg),o.position.set(0,0,0),o.up.set(0,0,1),o.lookAt(0,1,0),o.updateProjectionMatrix(),l()},[o,l,d.camera.fovYDeg]),(0,rd.useLayoutEffect)(()=>{h.minFilter=1003,h.magFilter=1003,h.wrapS=1001,h.wrapT=1001,h.generateMipmaps=!1,h.needsUpdate=!0,p.minFilter=1006,p.magFilter=1006,p.wrapS=1001,p.wrapT=1001,p.generateMipmaps=!1,p.needsUpdate=!0},[h,p]),(0,rd.useLayoutEffect)(()=>{a.getDrawingBufferSize(A),A.set(Math.max(1,A.x),Math.max(1,A.y))},[a,s.height,s.width,A]),(0,rd.useEffect)(()=>{let e=!1;return b(null),W3(d.planeIds.dataPng,d.planeIds.width,d.planeIds.height).then(t=>{e||b(t)}).catch(t=>{console.error(t),e||b(null)}),()=>{e=!0}},[d.planeIds]),(0,rd.useEffect)(()=>{w(null),x.current=null,f.value=0,i({placementReady:!1,prepareReady:!1,artifactsReady:!1})},[f,i,n.id,r]);let B=(0,rd.useCallback)((e,t)=>{let n,i,a,s,u,c,d,h,p,A=(i=new bb((n=e.geometry.attributes.position).getX(0),n.getY(0),n.getZ(0)),a=new bb(n.getX(1),n.getY(1),n.getZ(1)),s=new bb(n.getX(2),n.getY(2),n.getZ(2)),u=new bb().crossVectors(a.sub(i),s.sub(i)).normalize(),c=o.position.clone().sub(t).normalize(),0>u.dot(c)&&u.multiplyScalar(-1),d=u,h=t.clone().addScaledVector(d,.05),p=function(e,t){if("carpet"===t)return W6(e);let r=e.clone().normalize(),n=W8.clone().addScaledVector(r,-W8.dot(r));if(1e-6>n.lengthSq())return W6(r);n.normalize();let i=new bb().crossVectors(n,r).normalize(),a=new ys().makeBasis(i,n,r);return new bv().setFromRotationMatrix(a)}(d,r),{position:h.toArray(),quaternion:p.toArray(),activePlaneId:e.userData.planeId});x.current=A.activePlaneId,f.value=A.activePlaneId,w(A),l()},[f,o,l,r]),T=(0,rd.useCallback)(e=>v?function({activePlaneId:e,allowedPlaneIds:t,camera:r,planeIdMap:n,planeMap:i,pointer:a,raycaster:s}){let o=new Set(t),l=[],u=new Set,c=e=>{!(null===e||u.has(e))&&o.has(e)&&(u.add(e),l.push(e))};for(let o of(c(function(e,t){let r=Math.floor((e.x+1)*.5*t.width),n=Math.floor((1-e.y)*.5*t.height);if(r<0||n<0||r>=t.width||n>=t.height)return null;let i=t.data[n*t.width+r]??0;return i>0?i:null}(a,n)),c(e),t.forEach(c),s.setFromCamera(a,r),l)){let e=i.get(o),t=e?s.intersectObject(e,!1)[0]:null;if(t)return t}return null}({activePlaneId:x.current,allowedPlaneIds:S,camera:o,planeIdMap:v,planeMap:C.current,pointer:e,raycaster:u}):null,[S,o,v,u]);(0,rd.useEffect)(()=>{if(!v||null!==y)return;let e=E[0],t=e?C.current.get(e.id):null;t&&B(t,function(e){let t=e.geometry.attributes.position,r=new bb;for(let e=0;e<t.count;e++)r.add(new bb(t.getX(e),t.getY(e),t.getZ(e)));return r.divideScalar(Math.max(1,t.count))}(t))},[E,v,y,B]),(0,rd.useEffect)(()=>{i({artifactsReady:null!==v,placementReady:null!==y,prepareReady:null!==y})},[i,v,y]);let k=(0,rd.useCallback)(()=>{let e=T(c);e&&B(e.object,e.point)},[T,c,B]);return(0,rp.jsxs)(rp.Fragment,{children:["carpet"===r?y&&t&&(0,rp.jsx)(G0,{autoTransform:!1,onDrag:k,children:(0,rp.jsx)(qr,{glbUrl:t,position:y.position,quaternion:y.quaternion,materialPatch:m})}):y&&e&&(0,rp.jsx)(G0,{autoTransform:!1,onDrag:k,children:(0,rp.jsx)(ql,{src:e,position:y.position,quaternion:y.quaternion,materialPatch:m})}),d.planes.map(e=>(0,rp.jsx)(qc,{plane:e,geometry:M.get(e.id),setPlaneRef:I},e.id)),(0,rp.jsx)(qu,{})]})}let qh={position:[0,0,0],up:[0,0,1],near:.01,far:100};function qp({className:e,ref:t,captureRef:r,onSizeChange:n,...i}){let{room:a,src:s,glbUrl:o,type:l,patchSceneLoad:u}=Wn(),{active:c}=G3(),d=W2((0,rd.useMemo)(()=>a.scene??V3(),[a.scene])),h=(0,rd.useRef)(null),p=(0,rd.useRef)(!1),f=(0,rd.useCallback)(e=>{(h.current=e,"function"==typeof t)?t(e):t&&(t.current=e)},[t]),A=Vj("(max-width: 639px)"),{width:g,height:m}=function(e){let t,{ref:r,box:n="content-box"}=e,[{width:i,height:a},s]=(0,rd.useState)(W0),o=(t=(0,rd.useRef)(!1),(0,rd.useEffect)(()=>(t.current=!0,()=>{t.current=!1}),[]),(0,rd.useCallback)(()=>t.current,[])),l=(0,rd.useRef)({...W0}),u=(0,rd.useRef)(void 0);return u.current=e.onResize,(0,rd.useEffect)(()=>{if(!r.current||"u"<typeof window||!("ResizeObserver"in window))return;let e=new ResizeObserver(([e])=>{let t="border-box"===n?"borderBoxSize":"device-pixel-content-box"===n?"devicePixelContentBoxSize":"contentBoxSize",r=W1(e,t,"inlineSize"),i=W1(e,t,"blockSize");if(l.current.width!==r||l.current.height!==i){let e={width:r,height:i};l.current.width=r,l.current.height=i,u.current?u.current(e):o()&&s(e)}});return e.observe(r.current,{box:n}),()=>{e.disconnect()}},[n,r,o]),{width:i,height:a}}({ref:h}),v=(0,rd.useMemo)(()=>{if(!g||!m||!d)return null;let e=g,t=m;return A?e=(t=m)*d:g/m>d?e=m*d:t=g/d,{width:e,height:t}},[g,m,d,A]);return(0,rd.useLayoutEffect)(()=>{v&&n?.(v.width,v.height)},[v,n]),(0,rd.useEffect)(()=>{if(!v||p.current)return;p.current=!0;let e=window.setTimeout(()=>{window.dispatchEvent(new Event("resize"))},250);return()=>{window.clearTimeout(e)}},[v]),(0,rd.useEffect)(()=>{u({placementReady:!1,prepareReady:!1})},[u,a.id,l]),(0,rd.useEffect)(()=>{u({layoutReady:null!==v})},[u,v]),(0,rd.useEffect)(()=>{u({materialReady:"poster"===l?!!s:!!o})},[o,u,s,l]),(0,rd.useEffect)(()=>{u({assetsReady:!c})},[c,u]),(0,rp.jsx)("div",{ref:f,className:Vx("size-full flex items-center justify-center sm:pt-21 sm:pb-12",e),...i,children:v&&(0,rp.jsx)(jV,{className:"bg-transparent",frameloop:"demand",camera:qh,gl:{toneMapping:4,toneMappingExposure:1.2,alpha:!0,preserveDrawingBuffer:!0},style:{width:`${v.width}px`,height:`${v.height}px`},children:(0,rp.jsxs)(rd.Suspense,{fallback:null,children:[(0,rp.jsx)(W5,{ref:r}),(0,rp.jsx)(jz,{files:"poster"===l?["https://cdn.neurodyn.ai/assets/hdr/neutral.hdr"]:void 0,preset:"carpet"===l?"warehouse":void 0}),(0,rp.jsx)(qd,{})]})})})}function qf({className:e,...t}){let{containerRef:r,isDragging:n,angle:i,rotation:a,setAngle:s,setRotation:o,type:l}=Wn(),{t:u}=sa(),c=(0,rd.useRef)(null),d=(0,rd.useRef)(null),[h,p]=(0,rd.useState)(!1),f=Vj("(max-width: 639px)"),A=Vj("(min-width: 768px)"),g="poster"===l||"carpet"===l&&!A,m=(0,rd.useMemo)(()=>"u">typeof navigator&&"function"==typeof navigator.share,[]),v=(0,rd.useCallback)(()=>{f&&c.current?.centerView()},[f]),b=(0,rd.useCallback)(async()=>{if(!m)return;let e=window.location.href,t=u("poster"===l?"shareMessage.poster":"shareMessage.carpet"),r=`${t}
6654
- ${e}`;p(!0);try{let t=d.current;if(t)try{let e=await t.capture(),n=new File([e],"room-scene.png",{type:e.type||"image/png"});if(navigator.canShare?.({files:[n]}))return void await navigator.share({text:r,files:[n]})}catch(e){console.error("Failed to generate scene screenshot for sharing",e)}await navigator.share({text:r,url:e})}catch(e){e instanceof DOMException&&"AbortError"===e.name||console.error("Failed to share scene",e)}finally{p(!1)}},[m,u,l]);return(0,rp.jsxs)("div",{className:Vx("relative flex items-center justify-center overflow-hidden",e),...t,children:[(0,rp.jsx)(go,{ref:c,disabled:n,children:(0,rp.jsx)(gl,{wrapperClass:"neurodyn-rzpp-wrapper size-full!",contentClass:"neurodyn-rzpp-content h-full! min-w-full sm:max-w-full",children:(0,rp.jsx)(qp,{captureRef:d,onSizeChange:v})})}),(0,rp.jsx)(W$,{className:"absolute bottom-4 left-4 sm:bottom-6 sm:left-6"}),"carpet"===l&&(0,rp.jsxs)("div",{className:"bg-button-dark typo-button-normal absolute bottom-6 left-1/2 hidden h-9 -translate-x-1/2 items-center gap-1.5 rounded-lg px-3.75 text-text-white md:inline-flex",children:[(0,rp.jsx)("span",{className:"shrink-0",children:u("scene.position")}),(0,rp.jsx)(WG,{value:[a],onValueChange:([e])=>o(e??0),min:-180,max:180,step:1,className:"w-29.5 **:data-[slot=slider-range]:bg-transparent **:data-[slot=slider-thumb]:border-background-base-3 **:data-[slot=slider-thumb]]:bg-background-base-3 **:data-[slot=slider-track]:bg-icons-normal","aria-label":u("scene.position")})]}),(0,rp.jsxs)("div",{className:"absolute right-4 bottom-4 inline-flex items-center gap-2 sm:right-6 sm:bottom-6",children:[g&&(0,rp.jsxs)(WU,{children:[(0,rp.jsx)(Wz,{asChild:!0,children:(0,rp.jsxs)(VE,{variant:"contrast",size:f?"icon":"default",children:[(0,rp.jsx)(VO,{className:"size-5"}),(0,rp.jsx)("span",{className:"sr-only sm:not-sr-only",children:u("scene.tunePosition")})]})}),(0,rp.jsx)(WH,{className:"px-3 py-3.5 bg-button-dark border-button-dark text-text-white",side:"top",align:"end",portalContainer:r,children:(0,rp.jsxs)(Wa,{children:[(0,rp.jsxs)(Wo,{orientation:"horizontal",children:[(0,rp.jsx)(Wu,{children:u("scene.rotation")}),(0,rp.jsx)(WG,{value:[a],onValueChange:([e])=>o(e??0),min:-180,max:180,step:1,className:"w-40.5 **:data-[slot=slider-range]:bg-transparent **:data-[slot=slider-thumb]:border-background-base-3 **:data-[slot=slider-thumb]]:bg-background-base-3 **:data-[slot=slider-track]:bg-icons-normal","aria-label":u("scene.rotation")})]}),"poster"===l&&(0,rp.jsxs)(Wo,{orientation:"horizontal",children:[(0,rp.jsx)(Wu,{children:u("scene.angle")}),(0,rp.jsx)(WG,{value:[i],onValueChange:([e])=>s(e??0),max:75,min:-75,step:1,className:"w-40.5 **:data-[slot=slider-range]:bg-transparent **:data-[slot=slider-thumb]:border-background-base-3 **:data-[slot=slider-thumb]]:bg-background-base-3 **:data-[slot=slider-track]:bg-icons-normal","aria-label":u("scene.angle")})]})]})})]}),"poster"===l&&(0,rp.jsxs)(VE,{variant:"contrast",size:f?"icon":"default",disabled:!m||h,onClick:b,children:[(0,rp.jsx)(VQ,{className:"size-5"}),(0,rp.jsx)("span",{className:"sr-only sm:not-sr-only",children:u("scene.share")})]}),f&&"poster"===l&&(0,rp.jsxs)(WU,{children:[(0,rp.jsx)(Wz,{asChild:!0,children:(0,rp.jsx)(VE,{variant:"contrast",size:"icon",children:(0,rp.jsx)(VN,{})})}),(0,rp.jsxs)(WH,{className:"grid gap-5",portalContainer:r,children:[(0,rp.jsx)(Wm,{}),(0,rp.jsx)(W_,{})]})]})]})]})}function qA({showDialogCloseButton:e=!1}){let{setContainerRef:t,sceneLoad:r,isRoomScenePending:n,isViewerAccessPending:i,accessError:a}=Wn(),{t:s}=sa(),o=i||n||!Object.values(r).every(Boolean);return a?(0,rp.jsx)("div",{ref:t,className:"relative size-full overflow-hidden bg-radial from-background-containers to-background-base-2 text-foreground",children:(0,rp.jsx)(WQ,{variant:a,showDialogCloseButton:e})}):(0,rp.jsxs)("div",{ref:t,className:"relative size-full bg-radial from-background-containers to-background-base-2 text-foreground overflow-hidden",children:[e&&(0,rp.jsx)(VI,{asChild:!0,children:(0,rp.jsxs)(VE,{className:"absolute top-3 right-6 z-20",variant:"secondary",children:[s("close"),(0,rp.jsx)(u8,{})]})}),!i&&(0,rp.jsxs)(rp.Fragment,{children:[(0,rp.jsx)(WN,{className:"absolute top-0 right-0 left-0 z-15"}),(0,rp.jsxs)("div",{className:"size-full max-w-full grid grid-rows-[1fr_auto]",children:[(0,rp.jsx)(qf,{className:"size-full min-h-0"}),(0,rp.jsx)(WO,{className:"bg-background"})]})]}),(0,rp.jsx)("div",{"aria-hidden":!o,className:Vx("absolute inset-0 z-10 flex items-center justify-center bg-radial from-background-containers to-background-base-2 transition-opacity",o?"opacity-100 pointer-events-auto duration-0":"opacity-0 pointer-events-none duration-250ms"),children:(0,rp.jsx)(Vz,{variant:"logo"})})]})}let qg=new rc({defaultOptions:{queries:{gcTime:1/0,refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(ic(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function qm({type:e,src:t,tinuuid:r,name:n,height:i,width:a,language:s,dimensionUnit:o="m",displayUnit:l="cm",rooms:u,apiKey:c,source:d="default",showDialogCloseButton:h=!1}){let{i18n:p}=sa(),f=c?.trim()||void 0,A="poster"===e?function(e,t,r="m"){return{width:V7(e??0,r),height:V7(t??0,r)}}(a,i,o):null;return(0,rd.useEffect)(()=>{"string"==typeof s&&p.changeLanguage(s)},[p,s]),(0,rp.jsx)(rg,{client:qg,children:(0,rp.jsx)(Wr,{src:t??null,tinuuid:r??null,type:e,name:n,width:A?.width??0,height:A?.height??0,displayUnit:l,rooms:u,apiKey:f,baseURL:"shopify"===d?"/apps/vizbl/http":void 0,source:d,children:(0,rp.jsx)(qA,{showDialogCloseButton:h})})})}function qv({type:e,src:t,tinuuid:r,width:n,height:i,dimensionUnit:a,displayUnit:s,name:o,language:l,rooms:u,apiKey:c,source:d,...h}){let[p,f]=(0,rd.useState)(null);return(0,rp.jsxs)(rp.Fragment,{children:[(0,al.createPortal)((0,rp.jsx)("style",{children:jX.A}),document.head),(0,al.createPortal)((0,rp.jsxs)(sS.div,{style:{display:"block",letterSpacing:"normal",zIndex:0x7fffffff},children:[(0,rp.jsx)("style",{children:j0}),(0,rp.jsx)("div",{ref:f}),p&&(0,rp.jsx)(jK,{root:p,storageKey:"neurodyn-theme",children:(0,rp.jsx)(ss,{i18n:jZ,children:(0,rp.jsx)(VS,{...h,children:(0,rp.jsxs)(VT,{className:"min-w-full h-svh p-0 rounded-none sm:p-0",portalContainer:p,showCloseButton:!1,onInteractOutside:e=>{e.preventDefault()},children:[(0,rp.jsxs)(Vk,{className:"sr-only",children:[(0,rp.jsx)(V_,{children:o}),(0,rp.jsx)(VR,{})]}),(0,rp.jsx)(qm,{type:e,src:t,tinuuid:r,name:o,height:i,width:n,dimensionUnit:a,displayUnit:s,language:l,rooms:u,apiKey:c,source:d,showDialogCloseButton:!0})]})})})})]}),document.body)]})}VA({baseURL:"https://api.neurodyn.ai/v1/"}),Va({baseURL:"https://api.neurodyn.ai/"});let qb=iB({clientName:"API node client",configureFunctionName:"configureNodeApiClient",defaultBaseURL:"https://api.vizbl.com"});qb.configureClientRuntime,qb.configureAccessTokenResolverRuntime,qb.configureHeadersResolverRuntime,qb.configureUnauthorizedHandlerRuntime,qb.isClientConfiguredRuntime,qb.assertClientConfiguredRuntime,qb.resetClientForTestsRuntime;let qy=qb.requestRuntime;async function qw(e){return qy(e)}async function qx(e,t={}){let{client:r=qw,...n}=t;return(await r({method:"POST",url:"/public/widget/activate-wallart",params:e,...n})).data}qb.requestWithoutUnauthorizedRecovery,qb.addResponseInterceptorRuntime,(ez=tC||(tC={})).assertEqual=e=>{},ez.assertIs=function(e){},ez.assertNever=function(e){throw Error()},ez.arrayToEnum=e=>{let t={};for(let r of e)t[r]=r;return t},ez.getValidEnumValues=e=>{let t=ez.objectKeys(e).filter(t=>"number"!=typeof e[e[t]]),r={};for(let n of t)r[n]=e[n];return ez.objectValues(r)},ez.objectValues=e=>ez.objectKeys(e).map(function(t){return e[t]}),ez.objectKeys="function"==typeof Object.keys?e=>Object.keys(e):e=>{let t=[];for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t},ez.find=(e,t)=>{for(let r of e)if(t(r))return r},ez.isInteger="function"==typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"==typeof e&&Number.isFinite(e)&&Math.floor(e)===e,ez.joinValues=function(e,t=" | "){return e.map(e=>"string"==typeof e?`'${e}'`:e).join(t)},ez.jsonStringifyReplacer=(e,t)=>"bigint"==typeof t?t.toString():t,(tE||(tE={})).mergeShapes=(e,t)=>({...e,...t});let qC=tC.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),qE=e=>{switch(typeof e){case"undefined":return qC.undefined;case"string":return qC.string;case"number":return Number.isNaN(e)?qC.nan:qC.number;case"boolean":return qC.boolean;case"function":return qC.function;case"bigint":return qC.bigint;case"symbol":return qC.symbol;case"object":if(Array.isArray(e))return qC.array;if(null===e)return qC.null;if(e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch)return qC.promise;if("u">typeof Map&&e instanceof Map)return qC.map;if("u">typeof Set&&e instanceof Set)return qC.set;if("u">typeof Date&&e instanceof Date)return qC.date;return qC.object;default:return qC.unknown}},qS=tC.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class qM extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};const t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){let t=e||function(e){return e.message},r={_errors:[]},n=e=>{for(let i of e.issues)if("invalid_union"===i.code)i.unionErrors.map(n);else if("invalid_return_type"===i.code)n(i.returnTypeError);else if("invalid_arguments"===i.code)n(i.argumentsError);else if(0===i.path.length)r._errors.push(t(i));else{let e=r,n=0;for(;n<i.path.length;){let r=i.path[n];n===i.path.length-1?(e[r]=e[r]||{_errors:[]},e[r]._errors.push(t(i))):e[r]=e[r]||{_errors:[]},e=e[r],n++}}};return n(this),r}static assert(e){if(!(e instanceof qM))throw Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,tC.jsonStringifyReplacer,2)}get isEmpty(){return 0===this.issues.length}flatten(e=e=>e.message){let t={},r=[];for(let n of this.issues)if(n.path.length>0){let r=n.path[0];t[r]=t[r]||[],t[r].push(e(n))}else r.push(e(n));return{formErrors:r,fieldErrors:t}}get formErrors(){return this.flatten()}}qM.create=e=>new qM(e);let qI=(e,t)=>{let r;switch(e.code){case qS.invalid_type:r=e.received===qC.undefined?"Required":`Expected ${e.expected}, received ${e.received}`;break;case qS.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(e.expected,tC.jsonStringifyReplacer)}`;break;case qS.unrecognized_keys:r=`Unrecognized key(s) in object: ${tC.joinValues(e.keys,", ")}`;break;case qS.invalid_union:r="Invalid input";break;case qS.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${tC.joinValues(e.options)}`;break;case qS.invalid_enum_value:r=`Invalid enum value. Expected ${tC.joinValues(e.options)}, received '${e.received}'`;break;case qS.invalid_arguments:r="Invalid function arguments";break;case qS.invalid_return_type:r="Invalid function return type";break;case qS.invalid_date:r="Invalid date";break;case qS.invalid_string:"object"==typeof e.validation?"includes"in e.validation?(r=`Invalid input: must include "${e.validation.includes}"`,"number"==typeof e.validation.position&&(r=`${r} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?r=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?r=`Invalid input: must end with "${e.validation.endsWith}"`:tC.assertNever(e.validation):r="regex"!==e.validation?`Invalid ${e.validation}`:"Invalid";break;case qS.too_small:r="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:"number"===e.type||"bigint"===e.type?`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:"date"===e.type?`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:"Invalid input";break;case qS.too_big:r="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:"number"===e.type?`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"bigint"===e.type?`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"date"===e.type?`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:"Invalid input";break;case qS.custom:r="Invalid input";break;case qS.invalid_intersection_types:r="Intersection results could not be merged";break;case qS.not_multiple_of:r=`Number must be a multiple of ${e.multipleOf}`;break;case qS.not_finite:r="Number must be finite";break;default:r=t.defaultError,tC.assertNever(e)}return{message:r}};(eH=tS||(tS={})).errToObj=e=>"string"==typeof e?{message:e}:e||{},eH.toString=e=>"string"==typeof e?e:e?.message;let qB=e=>{let{data:t,path:r,errorMaps:n,issueData:i}=e,a=[...r,...i.path||[]],s={...i,path:a};if(void 0!==i.message)return{...i,path:a,message:i.message};let o="";for(let e of n.filter(e=>!!e).slice().reverse())o=e(s,{data:t,defaultError:o}).message;return{...i,path:a,message:o}};function qT(e,t){let r=qB({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,qI,void 0].filter(e=>!!e)});e.common.issues.push(r)}class qk{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(e,t){let r=[];for(let n of t){if("aborted"===n.status)return q_;"dirty"===n.status&&e.dirty(),r.push(n.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,t){let r=[];for(let e of t){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return qk.mergeObjectSync(e,r)}static mergeObjectSync(e,t){let r={};for(let n of t){let{key:t,value:i}=n;if("aborted"===t.status||"aborted"===i.status)return q_;"dirty"===t.status&&e.dirty(),"dirty"===i.status&&e.dirty(),"__proto__"!==t.value&&(void 0!==i.value||n.alwaysSet)&&(r[t.value]=i.value)}return{status:e.value,value:r}}}let q_=Object.freeze({status:"aborted"}),qR=e=>({status:"dirty",value:e}),qP=e=>({status:"valid",value:e}),qD=e=>"u">typeof Promise&&e instanceof Promise;class qL{constructor(e,t,r,n){this._cachedPath=[],this.parent=e,this.data=t,this._path=r,this._key=n}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}let qF=(e,t)=>{if("valid"===t.status)return{success:!0,data:t.value};if(!e.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new qM(e.common.issues);return this._error=t,this._error}}};function qO(e){if(!e)return{};let{errorMap:t,invalid_type_error:r,required_error:n,description:i}=e;if(t&&(r||n))throw Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return"invalid_enum_value"===t.code?{message:a??i.defaultError}:void 0===i.data?{message:a??n??i.defaultError}:"invalid_type"!==t.code?{message:i.defaultError}:{message:a??r??i.defaultError}},description:i}}class qN{get description(){return this._def.description}_getType(e){return qE(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:qE(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new qk,ctx:{common:e.parent.common,data:e.data,parsedType:qE(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(qD(t))throw Error("Synchronous parse encountered promise.");return t}_parseAsync(e){return Promise.resolve(this._parse(e))}parse(e,t){let r=this.safeParse(e,t);if(r.success)return r.data;throw r.error}safeParse(e,t){let r={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:qE(e)},n=this._parseSync({data:e,path:r.path,parent:r});return qF(r,n)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:qE(e)};if(!this["~standard"].async)try{let r=this._parseSync({data:e,path:[],parent:t});return"valid"===r.status?{value:r.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>"valid"===e.status?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let r=await this.safeParseAsync(e,t);if(r.success)return r.data;throw r.error}async safeParseAsync(e,t){let r={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:qE(e)},n=this._parse({data:e,path:r.path,parent:r});return qF(r,await (qD(n)?n:Promise.resolve(n)))}refine(e,t){return this._refinement((r,n)=>{let i=e(r),a=()=>n.addIssue({code:qS.custom,..."string"==typeof t||void 0===t?{message:t}:"function"==typeof t?t(r):t});return"u">typeof Promise&&i instanceof Promise?i.then(e=>!!e||(a(),!1)):!!i||(a(),!1)})}refinement(e,t){return this._refinement((r,n)=>!!e(r)||(n.addIssue("function"==typeof t?t(r,n):t),!1))}_refinement(e){return new Yw({schema:this,typeName:tM.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:e=>this["~validate"](e)}}optional(){return Yx.create(this,this._def)}nullable(){return YC.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Yi.create(this)}promise(){return Yy.create(this,this._def)}or(e){return Ys.create([this,e],this._def)}and(e){return Yu.create(this,e,this._def)}transform(e){return new Yw({...qO(this._def),schema:this,typeName:tM.ZodEffects,effect:{type:"transform",transform:e}})}default(e){return new YE({...qO(this._def),innerType:this,defaultValue:"function"==typeof e?e:()=>e,typeName:tM.ZodDefault})}brand(){return new YI({typeName:tM.ZodBranded,type:this,...qO(this._def)})}catch(e){return new YS({...qO(this._def),innerType:this,catchValue:"function"==typeof e?e:()=>e,typeName:tM.ZodCatch})}describe(e){return new this.constructor({...this._def,description:e})}pipe(e){return YB.create(this,e)}readonly(){return YT.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}let qQ=/^c[^\s-]{8,}$/i,qU=/^[0-9a-z]+$/,qz=/^[0-9A-HJKMNP-TV-Z]{26}$/i,qH=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,qG=/^[a-z0-9_-]{21}$/i,qj=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,qV=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,qW=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,qq=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,qY=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,qJ=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,qK=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,qX=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,qZ=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,q$="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",q0=RegExp(`^${q$}$`);function q1(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:null==e.precision&&(t=`${t}(\\.\\d+)?`);let r=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${r}`}class q2 extends qN{_parse(e){var t,r,n,i;let a;if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==qC.string){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.string,received:t.parsedType}),q_}let s=new qk;for(let o of this._def.checks)if("min"===o.kind)e.data.length<o.value&&(qT(a=this._getOrReturnCtx(e,a),{code:qS.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),s.dirty());else if("max"===o.kind)e.data.length>o.value&&(qT(a=this._getOrReturnCtx(e,a),{code:qS.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),s.dirty());else if("length"===o.kind){let t=e.data.length>o.value,r=e.data.length<o.value;(t||r)&&(a=this._getOrReturnCtx(e,a),t?qT(a,{code:qS.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):r&&qT(a,{code:qS.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),s.dirty())}else if("email"===o.kind)qW.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"email",code:qS.invalid_string,message:o.message}),s.dirty());else if("emoji"===o.kind)S||(S=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),S.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"emoji",code:qS.invalid_string,message:o.message}),s.dirty());else if("uuid"===o.kind)qH.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"uuid",code:qS.invalid_string,message:o.message}),s.dirty());else if("nanoid"===o.kind)qG.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"nanoid",code:qS.invalid_string,message:o.message}),s.dirty());else if("cuid"===o.kind)qQ.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"cuid",code:qS.invalid_string,message:o.message}),s.dirty());else if("cuid2"===o.kind)qU.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"cuid2",code:qS.invalid_string,message:o.message}),s.dirty());else if("ulid"===o.kind)qz.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"ulid",code:qS.invalid_string,message:o.message}),s.dirty());else if("url"===o.kind)try{new URL(e.data)}catch{qT(a=this._getOrReturnCtx(e,a),{validation:"url",code:qS.invalid_string,message:o.message}),s.dirty()}else"regex"===o.kind?(o.regex.lastIndex=0,o.regex.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"regex",code:qS.invalid_string,message:o.message}),s.dirty())):"trim"===o.kind?e.data=e.data.trim():"includes"===o.kind?e.data.includes(o.value,o.position)||(qT(a=this._getOrReturnCtx(e,a),{code:qS.invalid_string,validation:{includes:o.value,position:o.position},message:o.message}),s.dirty()):"toLowerCase"===o.kind?e.data=e.data.toLowerCase():"toUpperCase"===o.kind?e.data=e.data.toUpperCase():"startsWith"===o.kind?e.data.startsWith(o.value)||(qT(a=this._getOrReturnCtx(e,a),{code:qS.invalid_string,validation:{startsWith:o.value},message:o.message}),s.dirty()):"endsWith"===o.kind?e.data.endsWith(o.value)||(qT(a=this._getOrReturnCtx(e,a),{code:qS.invalid_string,validation:{endsWith:o.value},message:o.message}),s.dirty()):"datetime"===o.kind?(function(e){let t=`${q$}T${q1(e)}`,r=[];return r.push(e.local?"Z?":"Z"),e.offset&&r.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${r.join("|")})`,RegExp(`^${t}$`)})(o).test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{code:qS.invalid_string,validation:"datetime",message:o.message}),s.dirty()):"date"===o.kind?q0.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{code:qS.invalid_string,validation:"date",message:o.message}),s.dirty()):"time"===o.kind?RegExp(`^${q1(o)}$`).test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{code:qS.invalid_string,validation:"time",message:o.message}),s.dirty()):"duration"===o.kind?qV.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"duration",code:qS.invalid_string,message:o.message}),s.dirty()):"ip"===o.kind?(t=e.data,!(("v4"===(r=o.version)||!r)&&qq.test(t)||("v6"===r||!r)&&qJ.test(t))&&1&&(qT(a=this._getOrReturnCtx(e,a),{validation:"ip",code:qS.invalid_string,message:o.message}),s.dirty())):"jwt"===o.kind?!function(e,t){if(!qj.test(e))return!1;try{let[r]=e.split(".");if(!r)return!1;let n=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),i=JSON.parse(atob(n));if("object"!=typeof i||null===i||"typ"in i&&i?.typ!=="JWT"||!i.alg||t&&i.alg!==t)return!1;return!0}catch{return!1}}(e.data,o.alg)&&(qT(a=this._getOrReturnCtx(e,a),{validation:"jwt",code:qS.invalid_string,message:o.message}),s.dirty()):"cidr"===o.kind?(n=e.data,!(("v4"===(i=o.version)||!i)&&qY.test(n)||("v6"===i||!i)&&qK.test(n))&&1&&(qT(a=this._getOrReturnCtx(e,a),{validation:"cidr",code:qS.invalid_string,message:o.message}),s.dirty())):"base64"===o.kind?qX.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"base64",code:qS.invalid_string,message:o.message}),s.dirty()):"base64url"===o.kind?qZ.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"base64url",code:qS.invalid_string,message:o.message}),s.dirty()):tC.assertNever(o);return{status:s.value,value:e.data}}_regex(e,t,r){return this.refinement(t=>e.test(t),{validation:t,code:qS.invalid_string,...tS.errToObj(r)})}_addCheck(e){return new q2({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...tS.errToObj(e)})}url(e){return this._addCheck({kind:"url",...tS.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...tS.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...tS.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...tS.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...tS.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...tS.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...tS.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...tS.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...tS.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...tS.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...tS.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...tS.errToObj(e)})}datetime(e){return"string"==typeof e?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:void 0===e?.precision?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...tS.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return"string"==typeof e?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:void 0===e?.precision?null:e?.precision,...tS.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...tS.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...tS.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...tS.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...tS.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...tS.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...tS.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...tS.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...tS.errToObj(t)})}nonempty(e){return this.min(1,tS.errToObj(e))}trim(){return new q2({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new q2({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new q2({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>"datetime"===e.kind)}get isDate(){return!!this._def.checks.find(e=>"date"===e.kind)}get isTime(){return!!this._def.checks.find(e=>"time"===e.kind)}get isDuration(){return!!this._def.checks.find(e=>"duration"===e.kind)}get isEmail(){return!!this._def.checks.find(e=>"email"===e.kind)}get isURL(){return!!this._def.checks.find(e=>"url"===e.kind)}get isEmoji(){return!!this._def.checks.find(e=>"emoji"===e.kind)}get isUUID(){return!!this._def.checks.find(e=>"uuid"===e.kind)}get isNANOID(){return!!this._def.checks.find(e=>"nanoid"===e.kind)}get isCUID(){return!!this._def.checks.find(e=>"cuid"===e.kind)}get isCUID2(){return!!this._def.checks.find(e=>"cuid2"===e.kind)}get isULID(){return!!this._def.checks.find(e=>"ulid"===e.kind)}get isIP(){return!!this._def.checks.find(e=>"ip"===e.kind)}get isCIDR(){return!!this._def.checks.find(e=>"cidr"===e.kind)}get isBase64(){return!!this._def.checks.find(e=>"base64"===e.kind)}get isBase64url(){return!!this._def.checks.find(e=>"base64url"===e.kind)}get minLength(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}q2.create=e=>new q2({checks:[],typeName:tM.ZodString,coerce:e?.coerce??!1,...qO(e)});class q3 extends qN{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){let t;if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==qC.number){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.number,received:t.parsedType}),q_}let r=new qk;for(let n of this._def.checks)"int"===n.kind?tC.isInteger(e.data)||(qT(t=this._getOrReturnCtx(e,t),{code:qS.invalid_type,expected:"integer",received:"float",message:n.message}),r.dirty()):"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.too_small,minimum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),r.dirty()):"max"===n.kind?(n.inclusive?e.data>n.value:e.data>=n.value)&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.too_big,maximum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),r.dirty()):"multipleOf"===n.kind?0!==function(e,t){let r=(e.toString().split(".")[1]||"").length,n=(t.toString().split(".")[1]||"").length,i=r>n?r:n;return Number.parseInt(e.toFixed(i).replace(".",""))%Number.parseInt(t.toFixed(i).replace(".",""))/10**i}(e.data,n.value)&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):"finite"===n.kind?Number.isFinite(e.data)||(qT(t=this._getOrReturnCtx(e,t),{code:qS.not_finite,message:n.message}),r.dirty()):tC.assertNever(n);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,tS.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tS.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tS.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tS.toString(t))}setLimit(e,t,r,n){return new q3({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tS.toString(n)}]})}_addCheck(e){return new q3({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:tS.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:tS.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:tS.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:tS.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:tS.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tS.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:tS.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:tS.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:tS.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>"int"===e.kind||"multipleOf"===e.kind&&tC.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let r of this._def.checks)if("finite"===r.kind||"int"===r.kind||"multipleOf"===r.kind)return!0;else"min"===r.kind?(null===t||r.value>t)&&(t=r.value):"max"===r.kind&&(null===e||r.value<e)&&(e=r.value);return Number.isFinite(t)&&Number.isFinite(e)}}q3.create=e=>new q3({checks:[],typeName:tM.ZodNumber,coerce:e?.coerce||!1,...qO(e)});class q4 extends qN{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){let t;if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==qC.bigint)return this._getInvalidInput(e);let r=new qk;for(let n of this._def.checks)"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.too_small,type:"bigint",minimum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):"max"===n.kind?(n.inclusive?e.data>n.value:e.data>=n.value)&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):"multipleOf"===n.kind?e.data%n.value!==BigInt(0)&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):tC.assertNever(n);return{status:r.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.bigint,received:t.parsedType}),q_}gte(e,t){return this.setLimit("min",e,!0,tS.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tS.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tS.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tS.toString(t))}setLimit(e,t,r,n){return new q4({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tS.toString(n)}]})}_addCheck(e){return new q4({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:tS.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:tS.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:tS.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:tS.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tS.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}q4.create=e=>new q4({checks:[],typeName:tM.ZodBigInt,coerce:e?.coerce??!1,...qO(e)});class q5 extends qN{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==qC.boolean){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.boolean,received:t.parsedType}),q_}return qP(e.data)}}q5.create=e=>new q5({typeName:tM.ZodBoolean,coerce:e?.coerce||!1,...qO(e)});class q9 extends qN{_parse(e){let t;if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==qC.date){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.date,received:t.parsedType}),q_}if(Number.isNaN(e.data.getTime()))return qT(this._getOrReturnCtx(e),{code:qS.invalid_date}),q_;let r=new qk;for(let n of this._def.checks)"min"===n.kind?e.data.getTime()<n.value&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.too_small,message:n.message,inclusive:!0,exact:!1,minimum:n.value,type:"date"}),r.dirty()):"max"===n.kind?e.data.getTime()>n.value&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),r.dirty()):tC.assertNever(n);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new q9({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:tS.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:tS.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return null!=e?new Date(e):null}}q9.create=e=>new q9({checks:[],coerce:e?.coerce||!1,typeName:tM.ZodDate,...qO(e)});class q8 extends qN{_parse(e){if(this._getType(e)!==qC.symbol){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.symbol,received:t.parsedType}),q_}return qP(e.data)}}q8.create=e=>new q8({typeName:tM.ZodSymbol,...qO(e)});class q6 extends qN{_parse(e){if(this._getType(e)!==qC.undefined){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.undefined,received:t.parsedType}),q_}return qP(e.data)}}q6.create=e=>new q6({typeName:tM.ZodUndefined,...qO(e)});class q7 extends qN{_parse(e){if(this._getType(e)!==qC.null){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.null,received:t.parsedType}),q_}return qP(e.data)}}q7.create=e=>new q7({typeName:tM.ZodNull,...qO(e)});class Ye extends qN{constructor(){super(...arguments),this._any=!0}_parse(e){return qP(e.data)}}Ye.create=e=>new Ye({typeName:tM.ZodAny,...qO(e)});class Yt extends qN{constructor(){super(...arguments),this._unknown=!0}_parse(e){return qP(e.data)}}Yt.create=e=>new Yt({typeName:tM.ZodUnknown,...qO(e)});class Yr extends qN{_parse(e){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.never,received:t.parsedType}),q_}}Yr.create=e=>new Yr({typeName:tM.ZodNever,...qO(e)});class Yn extends qN{_parse(e){if(this._getType(e)!==qC.undefined){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.void,received:t.parsedType}),q_}return qP(e.data)}}Yn.create=e=>new Yn({typeName:tM.ZodVoid,...qO(e)});class Yi extends qN{_parse(e){let{ctx:t,status:r}=this._processInputParams(e),n=this._def;if(t.parsedType!==qC.array)return qT(t,{code:qS.invalid_type,expected:qC.array,received:t.parsedType}),q_;if(null!==n.exactLength){let e=t.data.length>n.exactLength.value,i=t.data.length<n.exactLength.value;(e||i)&&(qT(t,{code:e?qS.too_big:qS.too_small,minimum:i?n.exactLength.value:void 0,maximum:e?n.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:n.exactLength.message}),r.dirty())}if(null!==n.minLength&&t.data.length<n.minLength.value&&(qT(t,{code:qS.too_small,minimum:n.minLength.value,type:"array",inclusive:!0,exact:!1,message:n.minLength.message}),r.dirty()),null!==n.maxLength&&t.data.length>n.maxLength.value&&(qT(t,{code:qS.too_big,maximum:n.maxLength.value,type:"array",inclusive:!0,exact:!1,message:n.maxLength.message}),r.dirty()),t.common.async)return Promise.all([...t.data].map((e,r)=>n.type._parseAsync(new qL(t,e,t.path,r)))).then(e=>qk.mergeArray(r,e));let i=[...t.data].map((e,r)=>n.type._parseSync(new qL(t,e,t.path,r)));return qk.mergeArray(r,i)}get element(){return this._def.type}min(e,t){return new Yi({...this._def,minLength:{value:e,message:tS.toString(t)}})}max(e,t){return new Yi({...this._def,maxLength:{value:e,message:tS.toString(t)}})}length(e,t){return new Yi({...this._def,exactLength:{value:e,message:tS.toString(t)}})}nonempty(e){return this.min(1,e)}}Yi.create=(e,t)=>new Yi({type:e,minLength:null,maxLength:null,exactLength:null,typeName:tM.ZodArray,...qO(t)});class Ya extends qN{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;let e=this._def.shape(),t=tC.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==qC.object){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.object,received:t.parsedType}),q_}let{status:t,ctx:r}=this._processInputParams(e),{shape:n,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof Yr&&"strip"===this._def.unknownKeys))for(let e in r.data)i.includes(e)||a.push(e);let s=[];for(let e of i){let t=n[e],i=r.data[e];s.push({key:{status:"valid",value:e},value:t._parse(new qL(r,i,r.path,e)),alwaysSet:e in r.data})}if(this._def.catchall instanceof Yr){let e=this._def.unknownKeys;if("passthrough"===e)for(let e of a)s.push({key:{status:"valid",value:e},value:{status:"valid",value:r.data[e]}});else if("strict"===e)a.length>0&&(qT(r,{code:qS.unrecognized_keys,keys:a}),t.dirty());else if("strip"===e);else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let e=this._def.catchall;for(let t of a){let n=r.data[t];s.push({key:{status:"valid",value:t},value:e._parse(new qL(r,n,r.path,t)),alwaysSet:t in r.data})}}return r.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of s){let r=await t.key,n=await t.value;e.push({key:r,value:n,alwaysSet:t.alwaysSet})}return e}).then(e=>qk.mergeObjectSync(t,e)):qk.mergeObjectSync(t,s)}get shape(){return this._def.shape()}strict(e){return tS.errToObj,new Ya({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(t,r)=>{let n=this._def.errorMap?.(t,r).message??r.defaultError;return"unrecognized_keys"===t.code?{message:tS.errToObj(e).message??n}:{message:n}}}:{}})}strip(){return new Ya({...this._def,unknownKeys:"strip"})}passthrough(){return new Ya({...this._def,unknownKeys:"passthrough"})}extend(e){return new Ya({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new Ya({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:tM.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new Ya({...this._def,catchall:e})}pick(e){let t={};for(let r of tC.objectKeys(e))e[r]&&this.shape[r]&&(t[r]=this.shape[r]);return new Ya({...this._def,shape:()=>t})}omit(e){let t={};for(let r of tC.objectKeys(this.shape))e[r]||(t[r]=this.shape[r]);return new Ya({...this._def,shape:()=>t})}deepPartial(){return function e(t){if(t instanceof Ya){let r={};for(let n in t.shape){let i=t.shape[n];r[n]=Yx.create(e(i))}return new Ya({...t._def,shape:()=>r})}if(t instanceof Yi)return new Yi({...t._def,type:e(t.element)});if(t instanceof Yx)return Yx.create(e(t.unwrap()));if(t instanceof YC)return YC.create(e(t.unwrap()));if(t instanceof Yc)return Yc.create(t.items.map(t=>e(t)));else return t}(this)}partial(e){let t={};for(let r of tC.objectKeys(this.shape)){let n=this.shape[r];e&&!e[r]?t[r]=n:t[r]=n.optional()}return new Ya({...this._def,shape:()=>t})}required(e){let t={};for(let r of tC.objectKeys(this.shape))if(e&&!e[r])t[r]=this.shape[r];else{let e=this.shape[r];for(;e instanceof Yx;)e=e._def.innerType;t[r]=e}return new Ya({...this._def,shape:()=>t})}keyof(){return Ym(tC.objectKeys(this.shape))}}Ya.create=(e,t)=>new Ya({shape:()=>e,unknownKeys:"strip",catchall:Yr.create(),typeName:tM.ZodObject,...qO(t)}),Ya.strictCreate=(e,t)=>new Ya({shape:()=>e,unknownKeys:"strict",catchall:Yr.create(),typeName:tM.ZodObject,...qO(t)}),Ya.lazycreate=(e,t)=>new Ya({shape:e,unknownKeys:"strip",catchall:Yr.create(),typeName:tM.ZodObject,...qO(t)});class Ys extends qN{_parse(e){let{ctx:t}=this._processInputParams(e),r=this._def.options;if(t.common.async)return Promise.all(r.map(async e=>{let r={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:r}),ctx:r}})).then(function(e){for(let t of e)if("valid"===t.result.status)return t.result;for(let r of e)if("dirty"===r.result.status)return t.common.issues.push(...r.ctx.common.issues),r.result;let r=e.map(e=>new qM(e.ctx.common.issues));return qT(t,{code:qS.invalid_union,unionErrors:r}),q_});{let e,n=[];for(let i of r){let r={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:r});if("valid"===a.status)return a;"dirty"!==a.status||e||(e={result:a,ctx:r}),r.common.issues.length&&n.push(r.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=n.map(e=>new qM(e));return qT(t,{code:qS.invalid_union,unionErrors:i}),q_}}get options(){return this._def.options}}Ys.create=(e,t)=>new Ys({options:e,typeName:tM.ZodUnion,...qO(t)});let Yo=e=>{if(e instanceof YA)return Yo(e.schema);if(e instanceof Yw)return Yo(e.innerType());if(e instanceof Yg)return[e.value];if(e instanceof Yv)return e.options;if(e instanceof Yb)return tC.objectValues(e.enum);else if(e instanceof YE)return Yo(e._def.innerType);else if(e instanceof q6)return[void 0];else if(e instanceof q7)return[null];else if(e instanceof Yx)return[void 0,...Yo(e.unwrap())];else if(e instanceof YC)return[null,...Yo(e.unwrap())];else if(e instanceof YI)return Yo(e.unwrap());else if(e instanceof YT)return Yo(e.unwrap());else if(e instanceof YS)return Yo(e._def.innerType);else return[]};class Yl extends qN{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==qC.object)return qT(t,{code:qS.invalid_type,expected:qC.object,received:t.parsedType}),q_;let r=this.discriminator,n=t.data[r],i=this.optionsMap.get(n);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(qT(t,{code:qS.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),q_)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,r){let n=new Map;for(let r of t){let t=Yo(r.shape[e]);if(!t.length)throw Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let i of t){if(n.has(i))throw Error(`Discriminator property ${String(e)} has duplicate value ${String(i)}`);n.set(i,r)}}return new Yl({typeName:tM.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...qO(r)})}}class Yu extends qN{_parse(e){let{status:t,ctx:r}=this._processInputParams(e),n=(e,n)=>{if("aborted"===e.status||"aborted"===n.status)return q_;let i=function e(t,r){let n=qE(t),i=qE(r);if(t===r)return{valid:!0,data:t};if(n===qC.object&&i===qC.object){let n=tC.objectKeys(r),i=tC.objectKeys(t).filter(e=>-1!==n.indexOf(e)),a={...t,...r};for(let n of i){let i=e(t[n],r[n]);if(!i.valid)return{valid:!1};a[n]=i.data}return{valid:!0,data:a}}if(n===qC.array&&i===qC.array){if(t.length!==r.length)return{valid:!1};let n=[];for(let i=0;i<t.length;i++){let a=e(t[i],r[i]);if(!a.valid)return{valid:!1};n.push(a.data)}return{valid:!0,data:n}}if(n===qC.date&&i===qC.date&&+t==+r)return{valid:!0,data:t};return{valid:!1}}(e.value,n.value);return i.valid?(("dirty"===e.status||"dirty"===n.status)&&t.dirty(),{status:t.value,value:i.data}):(qT(r,{code:qS.invalid_intersection_types}),q_)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([e,t])=>n(e,t)):n(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}Yu.create=(e,t,r)=>new Yu({left:e,right:t,typeName:tM.ZodIntersection,...qO(r)});class Yc extends qN{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==qC.array)return qT(r,{code:qS.invalid_type,expected:qC.array,received:r.parsedType}),q_;if(r.data.length<this._def.items.length)return qT(r,{code:qS.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),q_;!this._def.rest&&r.data.length>this._def.items.length&&(qT(r,{code:qS.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());let n=[...r.data].map((e,t)=>{let n=this._def.items[t]||this._def.rest;return n?n._parse(new qL(r,e,r.path,t)):null}).filter(e=>!!e);return r.common.async?Promise.all(n).then(e=>qk.mergeArray(t,e)):qk.mergeArray(t,n)}get items(){return this._def.items}rest(e){return new Yc({...this._def,rest:e})}}Yc.create=(e,t)=>{if(!Array.isArray(e))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new Yc({items:e,typeName:tM.ZodTuple,rest:null,...qO(t)})};class Yd extends qN{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==qC.object)return qT(r,{code:qS.invalid_type,expected:qC.object,received:r.parsedType}),q_;let n=[],i=this._def.keyType,a=this._def.valueType;for(let e in r.data)n.push({key:i._parse(new qL(r,e,r.path,e)),value:a._parse(new qL(r,r.data[e],r.path,e)),alwaysSet:e in r.data});return r.common.async?qk.mergeObjectAsync(t,n):qk.mergeObjectSync(t,n)}get element(){return this._def.valueType}static create(e,t,r){return new Yd(t instanceof qN?{keyType:e,valueType:t,typeName:tM.ZodRecord,...qO(r)}:{keyType:q2.create(),valueType:e,typeName:tM.ZodRecord,...qO(t)})}}class Yh extends qN{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==qC.map)return qT(r,{code:qS.invalid_type,expected:qC.map,received:r.parsedType}),q_;let n=this._def.keyType,i=this._def.valueType,a=[...r.data.entries()].map(([e,t],a)=>({key:n._parse(new qL(r,e,r.path,[a,"key"])),value:i._parse(new qL(r,t,r.path,[a,"value"]))}));if(r.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let r of a){let n=await r.key,i=await r.value;if("aborted"===n.status||"aborted"===i.status)return q_;("dirty"===n.status||"dirty"===i.status)&&t.dirty(),e.set(n.value,i.value)}return{status:t.value,value:e}})}{let e=new Map;for(let r of a){let n=r.key,i=r.value;if("aborted"===n.status||"aborted"===i.status)return q_;("dirty"===n.status||"dirty"===i.status)&&t.dirty(),e.set(n.value,i.value)}return{status:t.value,value:e}}}}Yh.create=(e,t,r)=>new Yh({valueType:t,keyType:e,typeName:tM.ZodMap,...qO(r)});class Yp extends qN{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==qC.set)return qT(r,{code:qS.invalid_type,expected:qC.set,received:r.parsedType}),q_;let n=this._def;null!==n.minSize&&r.data.size<n.minSize.value&&(qT(r,{code:qS.too_small,minimum:n.minSize.value,type:"set",inclusive:!0,exact:!1,message:n.minSize.message}),t.dirty()),null!==n.maxSize&&r.data.size>n.maxSize.value&&(qT(r,{code:qS.too_big,maximum:n.maxSize.value,type:"set",inclusive:!0,exact:!1,message:n.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let r=new Set;for(let n of e){if("aborted"===n.status)return q_;"dirty"===n.status&&t.dirty(),r.add(n.value)}return{status:t.value,value:r}}let s=[...r.data.values()].map((e,t)=>i._parse(new qL(r,e,r.path,t)));return r.common.async?Promise.all(s).then(e=>a(e)):a(s)}min(e,t){return new Yp({...this._def,minSize:{value:e,message:tS.toString(t)}})}max(e,t){return new Yp({...this._def,maxSize:{value:e,message:tS.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}Yp.create=(e,t)=>new Yp({valueType:e,minSize:null,maxSize:null,typeName:tM.ZodSet,...qO(t)});class Yf extends qN{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==qC.function)return qT(t,{code:qS.invalid_type,expected:qC.function,received:t.parsedType}),q_;function r(e,r){return qB({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,qI,qI].filter(e=>!!e),issueData:{code:qS.invalid_arguments,argumentsError:r}})}function n(e,r){return qB({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,qI,qI].filter(e=>!!e),issueData:{code:qS.invalid_return_type,returnTypeError:r}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof Yy){let e=this;return qP(async function(...t){let s=new qM([]),o=await e._def.args.parseAsync(t,i).catch(e=>{throw s.addIssue(r(t,e)),s}),l=await Reflect.apply(a,this,o);return await e._def.returns._def.type.parseAsync(l,i).catch(e=>{throw s.addIssue(n(l,e)),s})})}{let e=this;return qP(function(...t){let s=e._def.args.safeParse(t,i);if(!s.success)throw new qM([r(t,s.error)]);let o=Reflect.apply(a,this,s.data),l=e._def.returns.safeParse(o,i);if(!l.success)throw new qM([n(o,l.error)]);return l.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new Yf({...this._def,args:Yc.create(e).rest(Yt.create())})}returns(e){return new Yf({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,r){return new Yf({args:e||Yc.create([]).rest(Yt.create()),returns:t||Yt.create(),typeName:tM.ZodFunction,...qO(r)})}}class YA extends qN{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}YA.create=(e,t)=>new YA({getter:e,typeName:tM.ZodLazy,...qO(t)});class Yg extends qN{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return qT(t,{received:t.data,code:qS.invalid_literal,expected:this._def.value}),q_}return{status:"valid",value:e.data}}get value(){return this._def.value}}function Ym(e,t){return new Yv({values:e,typeName:tM.ZodEnum,...qO(t)})}Yg.create=(e,t)=>new Yg({value:e,typeName:tM.ZodLiteral,...qO(t)});class Yv extends qN{_parse(e){if("string"!=typeof e.data){let t=this._getOrReturnCtx(e),r=this._def.values;return qT(t,{expected:tC.joinValues(r),received:t.parsedType,code:qS.invalid_type}),q_}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),r=this._def.values;return qT(t,{received:t.data,code:qS.invalid_enum_value,options:r}),q_}return qP(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return Yv.create(e,{...this._def,...t})}exclude(e,t=this._def){return Yv.create(this.options.filter(t=>!e.includes(t)),{...this._def,...t})}}Yv.create=Ym;class Yb extends qN{_parse(e){let t=tC.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==qC.string&&r.parsedType!==qC.number){let e=tC.objectValues(t);return qT(r,{expected:tC.joinValues(e),received:r.parsedType,code:qS.invalid_type}),q_}if(this._cache||(this._cache=new Set(tC.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let e=tC.objectValues(t);return qT(r,{received:r.data,code:qS.invalid_enum_value,options:e}),q_}return qP(e.data)}get enum(){return this._def.values}}Yb.create=(e,t)=>new Yb({values:e,typeName:tM.ZodNativeEnum,...qO(t)});class Yy extends qN{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==qC.promise&&!1===t.common.async?(qT(t,{code:qS.invalid_type,expected:qC.promise,received:t.parsedType}),q_):qP((t.parsedType===qC.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}}Yy.create=(e,t)=>new Yy({type:e,typeName:tM.ZodPromise,...qO(t)});class Yw extends qN{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===tM.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:r}=this._processInputParams(e),n=this._def.effect||null,i={addIssue:e=>{qT(r,e),e.fatal?t.abort():t.dirty()},get path(){return r.path}};if(i.addIssue=i.addIssue.bind(i),"preprocess"===n.type){let e=n.transform(r.data,i);if(r.common.async)return Promise.resolve(e).then(async e=>{if("aborted"===t.value)return q_;let n=await this._def.schema._parseAsync({data:e,path:r.path,parent:r});return"aborted"===n.status?q_:"dirty"===n.status||"dirty"===t.value?qR(n.value):n});{if("aborted"===t.value)return q_;let n=this._def.schema._parseSync({data:e,path:r.path,parent:r});return"aborted"===n.status?q_:"dirty"===n.status||"dirty"===t.value?qR(n.value):n}}if("refinement"===n.type){let e=e=>{let t=n.refinement(e,i);if(r.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(!1!==r.common.async)return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(r=>"aborted"===r.status?q_:("dirty"===r.status&&t.dirty(),e(r.value).then(()=>({status:t.value,value:r.value}))));{let n=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===n.status?q_:("dirty"===n.status&&t.dirty(),e(n.value),{status:t.value,value:n.value})}}if("transform"===n.type)if(!1!==r.common.async)return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(e=>"valid"!==e.status?q_:Promise.resolve(n.transform(e.value,i)).then(e=>({status:t.value,value:e})));else{let e=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if("valid"!==e.status)return q_;let a=n.transform(e.value,i);if(a instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:a}}tC.assertNever(n)}}Yw.create=(e,t,r)=>new Yw({schema:e,typeName:tM.ZodEffects,effect:t,...qO(r)}),Yw.createWithPreprocess=(e,t,r)=>new Yw({schema:t,effect:{type:"preprocess",transform:e},typeName:tM.ZodEffects,...qO(r)});class Yx extends qN{_parse(e){return this._getType(e)===qC.undefined?qP(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}Yx.create=(e,t)=>new Yx({innerType:e,typeName:tM.ZodOptional,...qO(t)});class YC extends qN{_parse(e){return this._getType(e)===qC.null?qP(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}YC.create=(e,t)=>new YC({innerType:e,typeName:tM.ZodNullable,...qO(t)});class YE extends qN{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return t.parsedType===qC.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}YE.create=(e,t)=>new YE({innerType:e,typeName:tM.ZodDefault,defaultValue:"function"==typeof t.default?t.default:()=>t.default,...qO(t)});class YS extends qN{_parse(e){let{ctx:t}=this._processInputParams(e),r={...t,common:{...t.common,issues:[]}},n=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return qD(n)?n.then(e=>({status:"valid",value:"valid"===e.status?e.value:this._def.catchValue({get error(){return new qM(r.common.issues)},input:r.data})})):{status:"valid",value:"valid"===n.status?n.value:this._def.catchValue({get error(){return new qM(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}YS.create=(e,t)=>new YS({innerType:e,typeName:tM.ZodCatch,catchValue:"function"==typeof t.catch?t.catch:()=>t.catch,...qO(t)});class YM extends qN{_parse(e){if(this._getType(e)!==qC.nan){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.nan,received:t.parsedType}),q_}return{status:"valid",value:e.data}}}YM.create=e=>new YM({typeName:tM.ZodNaN,...qO(e)}),Symbol("zod_brand");class YI extends qN{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return this._def.type._parse({data:r,path:t.path,parent:t})}unwrap(){return this._def.type}}class YB extends qN{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return"aborted"===e.status?q_:"dirty"===e.status?(t.dirty(),qR(e.value)):this._def.out._parseAsync({data:e.value,path:r.path,parent:r})})();{let e=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===e.status?q_:"dirty"===e.status?(t.dirty(),{status:"dirty",value:e.value}):this._def.out._parseSync({data:e.value,path:r.path,parent:r})}}static create(e,t){return new YB({in:e,out:t,typeName:tM.ZodPipeline})}}class YT extends qN{_parse(e){let t=this._def.innerType._parse(e),r=e=>("valid"===e.status&&(e.value=Object.freeze(e.value)),e);return qD(t)?t.then(e=>r(e)):r(t)}unwrap(){return this._def.innerType}}YT.create=(e,t)=>new YT({innerType:e,typeName:tM.ZodReadonly,...qO(t)}),Ya.lazycreate,(eG=tM||(tM={})).ZodString="ZodString",eG.ZodNumber="ZodNumber",eG.ZodNaN="ZodNaN",eG.ZodBigInt="ZodBigInt",eG.ZodBoolean="ZodBoolean",eG.ZodDate="ZodDate",eG.ZodSymbol="ZodSymbol",eG.ZodUndefined="ZodUndefined",eG.ZodNull="ZodNull",eG.ZodAny="ZodAny",eG.ZodUnknown="ZodUnknown",eG.ZodNever="ZodNever",eG.ZodVoid="ZodVoid",eG.ZodArray="ZodArray",eG.ZodObject="ZodObject",eG.ZodUnion="ZodUnion",eG.ZodDiscriminatedUnion="ZodDiscriminatedUnion",eG.ZodIntersection="ZodIntersection",eG.ZodTuple="ZodTuple",eG.ZodRecord="ZodRecord",eG.ZodMap="ZodMap",eG.ZodSet="ZodSet",eG.ZodFunction="ZodFunction",eG.ZodLazy="ZodLazy",eG.ZodLiteral="ZodLiteral",eG.ZodEnum="ZodEnum",eG.ZodEffects="ZodEffects",eG.ZodNativeEnum="ZodNativeEnum",eG.ZodOptional="ZodOptional",eG.ZodNullable="ZodNullable",eG.ZodDefault="ZodDefault",eG.ZodCatch="ZodCatch",eG.ZodPromise="ZodPromise",eG.ZodBranded="ZodBranded",eG.ZodPipeline="ZodPipeline",eG.ZodReadonly="ZodReadonly";let Yk=q2.create,Y_=q3.create;YM.create,q4.create;let YR=q5.create;q9.create,q8.create,q6.create,q7.create,Ye.create;let YP=Yt.create;Yr.create,Yn.create,Yi.create;let YD=Ya.create;Ya.strictCreate,Ys.create,Yl.create,Yu.create,Yc.create,Yd.create,Yh.create,Yp.create,Yf.create,YA.create,Yg.create;let YL=Yv.create;Yb.create,Yy.create,Yw.create,Yx.create,YC.create;let YF=Yw.createWithPreprocess;YB.create;let YO=YL(["cm","inch"]),YN=YL(["different_fields","one_field"]),YQ=YL(["left_bottom","center","right_bottom","left_center","right_center"]),YU=YD({buttonLabel:Yk(),backgroundColor:Yk(),borderColor:Yk(),textColor:Yk(),borderRadius:Y_(),borderWidth:Y_()}),Yz=YD({units:YO,productWidthAndHeight:YN,metafieldForWidth:Yk().nullable(),metafieldForHeight:Yk().nullable(),metafieldForWidthAndHeight:Yk().nullable(),widgetPosition:YQ,_widgetSettings:YU.optional(),isWidgetActive:YR()}),YH="/apps/vizbl/http",YG=YD({metafields:Yk().trim().min(1),posterPic:Yk().trim().min(1),title:Yk().trim().optional()}),Yj=YF(e=>"string"==typeof e?JSON.parse(e):e,YD({metafield:YP(),tinuuid:Yk().trim().optional()}));async function YV(e,t){let r=await qx({productType:"wallart-shopify",variant_id:e,metafield_key:"poster_settings"},{baseURL:YH,signal:t});return function(e){let t,r,n=YG.safeParse("string"!=typeof e?e:JSON.parse(e));if(!n.success)return null;let i=Yj.safeParse(n.data.metafields);if(!i.success)return null;let a=(t=function(e){if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return}}(i.data.metafield),(r=Yz.safeParse(t)).success?r.data:null);return a?{settings:a,posterPic:n.data.posterPic,title:n.data.title??null,tinuuid:i.data.tinuuid??null}:null}(r.body??r)}let YW="44px",Yq="60px",YY={left_center:{left:Yq,top:"50%",transform:"translateY(-50%)"},left_bottom:{left:Yq,bottom:YW},center:{left:`calc(50% + ${Yq})`,bottom:YW,transform:"translateX(-50%)"},right_bottom:{right:Yq,bottom:YW},right_center:{right:Yq,top:"50%",transform:"translateY(-50%)"}},YJ=YF(e=>"number"==typeof e&&Number.isFinite(e)?String(e):e,Yk().trim().regex(/^\d+$/));function YK(e){let t=YJ.safeParse(e);return t.success?t.data:null}function YX(e){return e?e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?e.value:e.getAttribute("value"):null}let YZ=["product-form","[data-main-product]",'[id*="MainProduct"]',".product",".product__info-wrapper",".product__info-container","#MainContent"],Y$=[".product-recommendations",".related-products","[data-product-recommendations]"];async function Y0(e,t={}){let{client:r=iR,...n}=t;return(await r({method:"POST",url:"/shopify/GetRoomsForWidget",data:e,...n})).data}async function Y1(e,t){let r=await Y0(void 0,{params:{variant_id:e},signal:t});return function(e){let{rooms:t}="string"==typeof e?JSON.parse(e):e;return t.filter(e=>!1!==e.active).sort((e,t)=>(e.position??0)-(t.position??0)).map(({active:e,position:t,...r})=>r)}(r.body??r)}var Y2=i("./src/shopify.css?inline");function Y3(){let e=function({documentRef:e=document,locationRef:t=window.location,analytics:r=window.ShopifyAnalytics}={}){var n;let i=e.body;if(i?.classList.contains("template-collection"))return!1;if(n=t.pathname,/(?:^|\/)products\/[^/]+/i.test(n)||r?.meta?.page?.pageType?.toLowerCase()==="product")return!0;let a=e.querySelector('meta[property="og:type"]')?.getAttribute("content");return!!(a?.trim().toLowerCase()==="product"||i?.classList.contains("template-product"))}();return{isProductPage:e,variantId:e?function({documentRef:e=document,locationRef:t=window.location}={}){return function(e=window.location){return YK(new URLSearchParams(e.search).get("variant"))}(t)??function(e=document){for(let{field:t}of Array.from(e.querySelectorAll('form[action*="/cart/add"]')).flatMap((t,r)=>{let n;return[...Array.from(t.querySelectorAll('input[name="id"], select[name="id"]')),...!(n=t.getAttribute("id"))?[]:Array.from(e.querySelectorAll('input[name="id"][form], select[name="id"][form]')).filter(e=>e.getAttribute("form")===n)].map((e,n)=>({field:e,formIndex:r,fieldIndex:n,score:function(e){let t=0,r=(e.getAttribute("id")??"").toLowerCase(),n=(e.getAttribute("class")??"").toLowerCase();for(let i of(r.includes("product-form")&&(t+=100),n.includes("product-form")&&(t+=80),YZ))e.closest(i)&&(t+=25);for(let r of Y$)e.closest(r)&&(t-=100);return t}(t)}))}).sort((e,t)=>t.score-e.score||e.formIndex-t.formIndex||e.fieldIndex-t.fieldIndex)){let e=YK(YX(t));if(e)return e}return null}(e)??function(e=document){for(let t of Array.from(e.querySelectorAll('[name="id"][form^="product-form"]'))){let e=YK(YX(t));if(e)return e}return null}(e)??function(e=document){let t=e.querySelector("[data-selected-variant-id]");return YK(t?.getAttribute("data-selected-variant-id")??null)}(e)}():null}}function Y4(){let e=function(){let[e,t]=(0,rd.useState)(Y3);return(0,rd.useEffect)(()=>{let e=null,r=window.history.pushState,n=window.history.replaceState,i=()=>{null===e&&(e=window.requestAnimationFrame(()=>{e=null,t(e=>{let t=Y3();return e.isProductPage===t.isProductPage&&e.variantId===t.variantId?e:t})}))};window.history.pushState=function(...e){let t=r.apply(this,e);return i(),t},window.history.replaceState=function(...e){let t=n.apply(this,e);return i(),t};let a=ao('body.template-product, body.template-collection, meta[property="og:type"], form[action*="/cart/add"], form[action*="/cart/add"] [name="id"], [name="id"][form], [data-selected-variant-id]',{initialize(e){let t;return{add(){t=(e=>{var t;let r=(t=e).matches("body")?["class"]:t.matches('meta[property="og:type"]')?["content"]:t.matches('form[action*="/cart/add"]')?["action","class","id"]:t.matches('form[action*="/cart/add"] [name="id"], [name="id"][form]')?["form","value"]:t.matches("[data-selected-variant-id]")?["data-selected-variant-id"]:[];if(0===r.length)return;let n=new MutationObserver(i);return n.observe(e,{attributes:!0,attributeFilter:r}),()=>{n.disconnect()}})(e),i()},remove(){t?.(),t=void 0,i()}}}});return document.addEventListener("change",i,!0),document.addEventListener("input",i,!0),document.addEventListener("click",i,!0),window.addEventListener("popstate",i),i(),()=>{null!==e&&window.cancelAnimationFrame(e),window.history.pushState=r,window.history.replaceState=n,a.abort(),document.removeEventListener("change",i,!0),document.removeEventListener("input",i,!0),document.removeEventListener("click",i,!0),window.removeEventListener("popstate",i)}},[]),e}(),[t,r]=(0,rd.useState)(!1),{data:n}=s8({queryKey:["vizbl-shopify-room-viewer","activation",e.variantId],queryFn:({signal:t})=>YV(e.variantId??"",t),enabled:e.isProductPage&&null!==e.variantId,staleTime:3e5,gcTime:3e5,refetchOnWindowFocus:!1},sq,void 0),{data:i}=s8({queryKey:["vizbl-shopify-room-viewer","rooms-for-widget",e.variantId],queryFn:({signal:t})=>Y1(e.variantId??"",t),enabled:!!n?.settings.isWidgetActive&&null!==e.variantId,staleTime:3e5,gcTime:3e5,refetchOnWindowFocus:!1},sq,void 0),a=(0,rd.useCallback)(()=>{r(!0)},[]),s=(0,rd.useCallback)(e=>{r(e)},[]);if(!e.isProductPage||!e.variantId||!n?.settings.isWidgetActive)return null;let{settings:o,posterPic:l,title:u}=n,c=o._widgetSettings,d=function(e){if("one_field"===e.productWidthAndHeight){let[t,r]=e.metafieldForWidthAndHeight.split("x");return{width:Number(t),height:Number(r)}}return{width:Number(e.metafieldForWidth),height:Number(e.metafieldForHeight)}}(o),h="inch"===o.units?"in":"cm";return(0,rp.jsxs)(rp.Fragment,{children:[(0,rp.jsx)("button",{type:"button",onClick:a,style:{position:"fixed",zIndex:0x7ffffffe,display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"13.522px 21.635px",borderStyle:"solid",borderColor:c?.borderColor??"rgba(65, 90, 229, 0.3)",borderWidth:c?.borderWidth??1,borderRadius:c?.borderRadius??121.053,background:c?.backgroundColor??"#ffffff",boxShadow:"0px 0px 20px 0px rgba(23, 32, 51, 0.14), 0px 16px 32px 0px rgba(23, 32, 51, 0.17)",color:c?.textColor??"#111111",boxSizing:"border-box",cursor:"pointer",maxWidth:"calc(100vw - 16px)",fontFamily:'Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',fontSize:18,fontWeight:600,letterSpacing:0,lineHeight:"18px",margin:0,appearance:"none",...YY[o.widgetPosition]},children:c?.buttonLabel??"View in place"}),(0,rp.jsx)(qv,{open:t,onOpenChange:s,type:"poster",source:"shopify",src:l,name:u??"",rooms:i,width:d.width,height:d.height,dimensionUnit:h}),t&&(0,al.createPortal)((0,rp.jsx)("style",{children:Y2.A}),document.head)]})}let Y5="vizbl-shopify-room-viewer",Y9=new rc({defaultOptions:{queries:{refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(ic(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function Y8(){let e,t=((e=document.getElementById(Y5))||((e=document.createElement("div")).id=Y5,document.body.appendChild(e)),e),r=iP.createRoot(t);r.render((0,rd.createElement)(rg,{client:Y9},(0,rd.createElement)(Y4)));let n=ao(`#${Y5}`,{remove(){n.abort(),r.unmount(),Y8()}})}ik({baseURL:YH}),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Y8,{once:!0}):Y8()})()})();
6653
+ #include <opaque_fragment>`)}(n,t)},e.customProgramCacheKey=()=>`${n()}|neurodyn-room-scene-v2`,e.needsUpdate=!0,()=>{e.onBeforeCompile=r,e.customProgramCacheKey=n,e.side=i,e.transparent=a,e.alphaToCoverage=s,e.needsUpdate=!0}}let qt=Math.PI/2;function qr({glbUrl:e,position:t,quaternion:r,materialPatch:n}){let{resourceRef:i,rotation:a,setIsDragging:s}=We(),o=HX(e),l=(0,rd.useMemo)(()=>o.scene.clone(!0),[o]),u=(0,rd.useMemo)(()=>{let e;return e=new Set,l.traverse(t=>{if(!t.isMesh||!t.material)return;if(Array.isArray(t.material)){t.material=t.material.map(t=>{let r=t.clone();return e.add(r),r});return}let r=t.material.clone();e.add(r),t.material=r}),Array.from(e)},[l]),c=(0,rd.useMemo)(()=>bg.degToRad(a),[a]);return(0,rd.useLayoutEffect)(()=>{let e=u.map(e=>qe(e,n));return()=>{e.forEach(e=>e())}},[u,n]),(0,rp.jsx)("group",{ref:i,position:t,quaternion:r,onPointerDown:()=>s(!0),onPointerUp:()=>s(!1),onPointerLeave:()=>s(!1),children:(0,rp.jsx)("group",{"rotation-z":c,children:(0,rp.jsx)("group",{"rotation-x":qt,children:(0,rp.jsx)("primitive",{object:l})})})})}function qn(e,t){(0,rd.useLayoutEffect)(()=>{let r=e.current;if(r)return qe(r,t)},[e,t])}let qi=[1,1,1];function qa({node:e,position:t,scale:r=qi,uvScale:n,materialPatch:i}){let a=(0,rd.useRef)(null);return(0,rd.useEffect)(()=>{if(!a.current||void 0===n)return;let t=a.current.geometry.attributes.uv,r=e.geometry.attributes.uv.array;for(let e=0;e<t.count;e++){let i=r[2*e],a=r[2*e+1];t.setXY(e,i*n,a)}t.needsUpdate=!0},[n,e.geometry]),(0,rd.useLayoutEffect)(()=>{let e=a.current?.material;if(!e)return;let t=(Array.isArray(e)?e:[e]).map(e=>qe(e,i));return()=>{t.forEach(e=>e())}},[i,e]),(0,rp.jsx)(H0,{ref:a,object:e,position:t,scale:r})}function qs({width:e,height:t,materialPatch:r}){let{material:n}=We(),{nodes:i}=HX(n?.native?.glbUrl),a=(0,rd.useMemo)(()=>{let e=new bb,t={};["vizbl0","vizbl1","vizbl2","vizbl3","vizbl4","vizbl5","vizbl6","vizbl7"].forEach(r=>{let n=i[r];if(!n?.geometry)return;let a=n.clone();a.geometry=n.geometry.clone(),Array.isArray(n.material)?a.material=n.material.map(e=>e.clone()):n.material&&(a.material=n.material.clone()),a.updateMatrixWorld(!0),a.geometry.applyMatrix4(a.matrixWorld),a.position.set(0,0,0),a.rotation.set(0,0,0),a.scale.set(1,1,1),a.updateMatrixWorld(!0),a.geometry.computeBoundingBox(),a.geometry.boundingBox&&(a.geometry.boundingBox.getCenter(e),a.geometry.translate(-e.x,-e.y,-e.z)),a.geometry.computeBoundingBox(),t[r]=a});let r=t.vizbl0;if(!r?.geometry)throw Error("Corner mesh not found");let n=r.geometry.boundingBox,a=n.max.x-n.min.x,s=n.max.y-n.min.y,o={top:0,bottom:0,left:0,right:0},l={top:0,bottom:0,left:0,right:0},u=t.vizbl1;if(u?.geometry){let e=u.geometry.boundingBox;o.top=e.max.x-e.min.x,l.top=e.max.y-e.min.y}let c=t.vizbl3;if(c?.geometry){let e=c.geometry.boundingBox;o.right=e.max.y-e.min.y,l.right=e.max.x-e.min.x}let d=t.vizbl5;if(d?.geometry){let e=d.geometry.boundingBox;o.bottom=e.max.x-e.min.x,l.bottom=e.max.y-e.min.y}let h=t.vizbl7;if(h?.geometry){let e=h.geometry.boundingBox;o.left=e.max.y-e.min.y,l.left=e.max.x-e.min.x}return{cornerSize:{width:a,height:s},barLengths:o,barThickness:l,normalizedNodes:t}},[i]),s=e-2*a.cornerSize.width+.002,o=t-2*a.cornerSize.height+.002,l=s/a.barLengths.top,u=s/a.barLengths.bottom,c=o/a.barLengths.left,d=o/a.barLengths.right;return(0,rp.jsxs)("group",{children:[(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl0,position:[-e/2+a.cornerSize.width/2-.001,t/2-a.cornerSize.height/2+.001,0],materialPatch:r}),(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl1,position:[0,t/2-a.barThickness.top/2+.001,0],scale:[l,1,1],uvScale:l,materialPatch:r}),(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl2,position:[e/2-a.cornerSize.width/2+.001,t/2-a.cornerSize.height/2+.001,0],materialPatch:r}),(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl3,position:[e/2-a.barThickness.right/2+.001,0,0],scale:[1,d,1],uvScale:d,materialPatch:r}),(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl4,position:[e/2-a.cornerSize.width/2+.001,-t/2+a.cornerSize.height/2-.001,0],materialPatch:r}),(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl5,position:[0,-t/2+a.barThickness.bottom/2-.001,0],scale:[u,1,1],uvScale:u,materialPatch:r}),(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl6,position:[-e/2+a.cornerSize.width/2-.001,-t/2+a.cornerSize.height/2-.001,0],materialPatch:r}),(0,rp.jsx)(qa,{node:a.normalizedNodes.vizbl7,position:[-e/2+a.barThickness.left/2-.001,0,0],scale:[1,c,1],uvScale:c,materialPatch:r})]})}function qo({width:e,height:t,position:r,quaternion:n,materialPatch:i}){let a=(0,rd.useRef)(null);return qn(a,i),(0,rp.jsxs)("mesh",{position:r,quaternion:n,children:[(0,rp.jsx)("planeGeometry",{args:[e,t]}),(0,rp.jsx)("meshStandardMaterial",{ref:a,color:"white"})]})}function ql({src:e,position:t,quaternion:r,materialPatch:n}){let{width:i,height:a,angle:s,material:o,frameWidth:l,rotation:u,resourceRef:c,matting:d,setIsDragging:h}=We(),p=Hu(Sh,e),f=(0,rd.useRef)(null),A=(0,rd.useMemo)(()=>bg.degToRad(s),[s]),g=(0,rd.useMemo)(()=>bg.degToRad(u),[u]);qn(f,n);let m=i+2*d,v=a+2*d,b=d>0?m:i,y=d>0?v:a;return(0,rp.jsx)("group",{ref:c,position:t,quaternion:r,onPointerDown:()=>h(!0),onPointerUp:()=>h(!1),onPointerLeave:()=>h(!1),children:(0,rp.jsxs)("group",{rotation:[0,g,A],children:[o?.native?.glbUrl&&l>0&&(0,rp.jsx)(qs,{width:b,height:y,materialPatch:n}),d>0&&(0,rp.jsx)(qo,{width:m,height:v,position:[0,0,.01],materialPatch:n}),(0,rp.jsxs)("mesh",{position:[0,0,.02],children:[(0,rp.jsx)("planeGeometry",{args:[i,a]}),(0,rp.jsx)("meshStandardMaterial",{ref:f,map:p})]})]})})}function qu(){let{room:e}=We(),t=Hs(e=>e.scene),r=Hu(Sh,e.image_url);return(0,rd.useLayoutEffect)(()=>(r.colorSpace="srgb",t.background=r,()=>{t.background===r&&(t.background=null)}),[t,r]),null}function qc({plane:e,geometry:t,setPlaneRef:r}){return(0,rp.jsx)("mesh",{ref:t=>r(e,t),geometry:t,userData:{planeId:e.id,kind:e.kind},children:(0,rp.jsx)("meshBasicMaterial",{visible:!1,side:2})})}function qd(){let{src:e,glbUrl:t,type:r,room:n,patchSceneLoad:i}=We(),{gl:a,size:s,camera:o,invalidate:l,raycaster:u,pointer:c}=Hs(),d=(0,rd.useMemo)(()=>n.scene??V1(),[n.scene]),[h,p]=Hu(Sh,[d.planeIds.dataPng,d.shading?.dataPng??"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNoaGgAAAMEAYFL09IQAAAAAElFTkSuQmCC"]),f=(0,rd.useMemo)(()=>({value:0}),[]),A=(0,rd.useMemo)(()=>new bm(1,1),[]),g=(0,rd.useMemo)(()=>new bm(d.planeIds.width,d.planeIds.height),[d.planeIds.height,d.planeIds.width]),m=(0,rd.useMemo)(()=>({planeIdsTexture:h,shadingTexture:p,planeIdsSize:g,viewport:A,activePlaneIdUniform:f}),[f,g,h,p,A]),[v,b]=(0,rd.useState)(null),[y,w]=(0,rd.useState)(null),x=(0,rd.useRef)(null),C=(0,rd.useRef)(new Map),E=(0,rd.useMemo)(()=>d.planes.filter(e=>"carpet"===r?"floor"===e.kind:"floor"!==e.kind),[d.planes,r]),S=(0,rd.useMemo)(()=>E.map(e=>e.id),[E]),M=(0,rd.useMemo)(()=>new Map(d.planes.map(e=>{let t,r;return[e.id,(t=e.polygon3D.flatMap(e=>(function(e,t){let[r,n,i]=e;return[r*(W2(t)*(t.camera.fx/t.camera.fy)),i,-n]})(e,d)),(r=new wm).setAttribute("position",new wu(t,3)),e.polygon3D.length>=4&&r.setIndex([0,1,2,0,2,3]),r)]})),[d]),I=(0,rd.useCallback)((e,t)=>{t?C.current.set(e.id,t):C.current.delete(e.id)},[]);(0,rd.useLayoutEffect)(()=>{o instanceof wz&&(o.fov=d.camera.fovYDeg),o.position.set(0,0,0),o.up.set(0,0,1),o.lookAt(0,1,0),o.updateProjectionMatrix(),l()},[o,l,d.camera.fovYDeg]),(0,rd.useLayoutEffect)(()=>{h.minFilter=1003,h.magFilter=1003,h.wrapS=1001,h.wrapT=1001,h.generateMipmaps=!1,h.needsUpdate=!0,p.minFilter=1006,p.magFilter=1006,p.wrapS=1001,p.wrapT=1001,p.generateMipmaps=!1,p.needsUpdate=!0},[h,p]),(0,rd.useLayoutEffect)(()=>{a.getDrawingBufferSize(A),A.set(Math.max(1,A.x),Math.max(1,A.y))},[a,s.height,s.width,A]),(0,rd.useEffect)(()=>{let e=!1;return b(null),W3(d.planeIds.dataPng,d.planeIds.width,d.planeIds.height).then(t=>{e||b(t)}).catch(t=>{console.error(t),e||b(null)}),()=>{e=!0}},[d.planeIds]),(0,rd.useEffect)(()=>{w(null),x.current=null,f.value=0,i({placementReady:!1,prepareReady:!1,artifactsReady:!1})},[f,i,n.id,r]);let B=(0,rd.useCallback)((e,t)=>{let n,i,a,s,u,c,d,h,p,A=(i=new bb((n=e.geometry.attributes.position).getX(0),n.getY(0),n.getZ(0)),a=new bb(n.getX(1),n.getY(1),n.getZ(1)),s=new bb(n.getX(2),n.getY(2),n.getZ(2)),u=new bb().crossVectors(a.sub(i),s.sub(i)).normalize(),c=o.position.clone().sub(t).normalize(),0>u.dot(c)&&u.multiplyScalar(-1),d=u,h=t.clone().addScaledVector(d,.05),p=function(e,t){if("carpet"===t)return W6(e);let r=e.clone().normalize(),n=W8.clone().addScaledVector(r,-W8.dot(r));if(1e-6>n.lengthSq())return W6(r);n.normalize();let i=new bb().crossVectors(n,r).normalize(),a=new ys().makeBasis(i,n,r);return new bv().setFromRotationMatrix(a)}(d,r),{position:h.toArray(),quaternion:p.toArray(),activePlaneId:e.userData.planeId});x.current=A.activePlaneId,f.value=A.activePlaneId,w(A),l()},[f,o,l,r]),T=(0,rd.useCallback)(e=>v?function({activePlaneId:e,allowedPlaneIds:t,camera:r,planeIdMap:n,planeMap:i,pointer:a,raycaster:s}){let o=new Set(t),l=[],u=new Set,c=e=>{!(null===e||u.has(e))&&o.has(e)&&(u.add(e),l.push(e))};for(let o of(c(function(e,t){let r=Math.floor((e.x+1)*.5*t.width),n=Math.floor((1-e.y)*.5*t.height);if(r<0||n<0||r>=t.width||n>=t.height)return null;let i=t.data[n*t.width+r]??0;return i>0?i:null}(a,n)),c(e),t.forEach(c),s.setFromCamera(a,r),l)){let e=i.get(o),t=e?s.intersectObject(e,!1)[0]:null;if(t)return t}return null}({activePlaneId:x.current,allowedPlaneIds:S,camera:o,planeIdMap:v,planeMap:C.current,pointer:e,raycaster:u}):null,[S,o,v,u]);(0,rd.useEffect)(()=>{if(!v||null!==y)return;let e=E[0],t=e?C.current.get(e.id):null;t&&B(t,function(e){let t=e.geometry.attributes.position,r=new bb;for(let e=0;e<t.count;e++)r.add(new bb(t.getX(e),t.getY(e),t.getZ(e)));return r.divideScalar(Math.max(1,t.count))}(t))},[E,v,y,B]),(0,rd.useEffect)(()=>{i({artifactsReady:null!==v,placementReady:null!==y,prepareReady:null!==y})},[i,v,y]);let k=(0,rd.useCallback)(()=>{let e=T(c);e&&B(e.object,e.point)},[T,c,B]);return(0,rp.jsxs)(rp.Fragment,{children:["carpet"===r?y&&t&&(0,rp.jsx)(G0,{autoTransform:!1,onDrag:k,children:(0,rp.jsx)(qr,{glbUrl:t,position:y.position,quaternion:y.quaternion,materialPatch:m})}):y&&e&&(0,rp.jsx)(G0,{autoTransform:!1,onDrag:k,children:(0,rp.jsx)(ql,{src:e,position:y.position,quaternion:y.quaternion,materialPatch:m})}),d.planes.map(e=>(0,rp.jsx)(qc,{plane:e,geometry:M.get(e.id),setPlaneRef:I},e.id)),(0,rp.jsx)(qu,{})]})}let qh={position:[0,0,0],up:[0,0,1],near:.01,far:100};function qp({className:e,ref:t,captureRef:r,onSizeChange:n,...i}){let{room:a,src:s,glbUrl:o,type:l,patchSceneLoad:u}=We(),{active:c}=G3(),d=W2((0,rd.useMemo)(()=>a.scene??V1(),[a.scene])),h=(0,rd.useRef)(null),p=(0,rd.useRef)(!1),f=(0,rd.useCallback)(e=>{(h.current=e,"function"==typeof t)?t(e):t&&(t.current=e)},[t]),A=Wy("(max-width: 639px)"),{width:g,height:m}=function(e){let t,{ref:r,box:n="content-box"}=e,[{width:i,height:a},s]=(0,rd.useState)(W0),o=(t=(0,rd.useRef)(!1),(0,rd.useEffect)(()=>(t.current=!0,()=>{t.current=!1}),[]),(0,rd.useCallback)(()=>t.current,[])),l=(0,rd.useRef)({...W0}),u=(0,rd.useRef)(void 0);return u.current=e.onResize,(0,rd.useEffect)(()=>{if(!r.current||"u"<typeof window||!("ResizeObserver"in window))return;let e=new ResizeObserver(([e])=>{let t="border-box"===n?"borderBoxSize":"device-pixel-content-box"===n?"devicePixelContentBoxSize":"contentBoxSize",r=W1(e,t,"inlineSize"),i=W1(e,t,"blockSize");if(l.current.width!==r||l.current.height!==i){let e={width:r,height:i};l.current.width=r,l.current.height=i,u.current?u.current(e):o()&&s(e)}});return e.observe(r.current,{box:n}),()=>{e.disconnect()}},[n,r,o]),{width:i,height:a}}({ref:h}),v=(0,rd.useMemo)(()=>{if(!g||!m||!d)return null;let e=g,t=m;return A?e=(t=m)*d:g/m>d?e=m*d:t=g/d,{width:e,height:t}},[g,m,d,A]);return(0,rd.useLayoutEffect)(()=>{v&&n?.(v.width,v.height)},[v,n]),(0,rd.useEffect)(()=>{if(!v||p.current)return;p.current=!0;let e=window.setTimeout(()=>{window.dispatchEvent(new Event("resize"))},250);return()=>{window.clearTimeout(e)}},[v]),(0,rd.useEffect)(()=>{u({placementReady:!1,prepareReady:!1})},[u,a.id,l]),(0,rd.useEffect)(()=>{u({layoutReady:null!==v})},[u,v]),(0,rd.useEffect)(()=>{u({materialReady:"poster"===l?!!s:!!o})},[o,u,s,l]),(0,rd.useEffect)(()=>{u({assetsReady:!c})},[c,u]),(0,rp.jsx)("div",{ref:f,className:VC("size-full flex items-center justify-center sm:pt-21 sm:pb-12",e),...i,children:v&&(0,rp.jsx)(jV,{className:"bg-transparent",frameloop:"demand",camera:qh,gl:{toneMapping:4,toneMappingExposure:1.2,alpha:!0,preserveDrawingBuffer:!0},style:{width:`${v.width}px`,height:`${v.height}px`},children:(0,rp.jsxs)(rd.Suspense,{fallback:null,children:[(0,rp.jsx)(W5,{ref:r}),(0,rp.jsx)(jz,{files:"poster"===l?["https://cdn.neurodyn.ai/assets/hdr/neutral.hdr"]:void 0,preset:"carpet"===l?"warehouse":void 0}),(0,rp.jsx)(qd,{})]})})})}function qf({className:e,...t}){let{containerRef:r,isDragging:n,angle:i,rotation:a,setAngle:s,setRotation:o,type:l}=We(),{t:u}=sa(),c=(0,rd.useRef)(null),d=(0,rd.useRef)(null),[h,p]=(0,rd.useState)(!1),f=Wy("(max-width: 639px)"),A=Wy("(min-width: 768px)"),g="poster"===l||"carpet"===l&&!A,m=(0,rd.useMemo)(()=>"u">typeof navigator&&"function"==typeof navigator.share,[]),v=(0,rd.useCallback)(()=>{f&&c.current?.centerView()},[f]),b=(0,rd.useCallback)(async()=>{if(!m)return;let e=window.location.href,t=u("poster"===l?"shareMessage.poster":"shareMessage.carpet"),r=`${t}
6654
+ ${e}`;p(!0);try{let t=d.current;if(t)try{let e=await t.capture(),n=new File([e],"room-scene.png",{type:e.type||"image/png"});if(navigator.canShare?.({files:[n]}))return void await navigator.share({text:r,files:[n]})}catch(e){console.error("Failed to generate scene screenshot for sharing",e)}await navigator.share({text:r,url:e})}catch(e){e instanceof DOMException&&"AbortError"===e.name||console.error("Failed to share scene",e)}finally{p(!1)}},[m,u,l]);return(0,rp.jsxs)("div",{className:VC("relative flex items-center justify-center overflow-hidden",e),...t,children:[(0,rp.jsx)(go,{ref:c,disabled:n,children:(0,rp.jsx)(gl,{wrapperClass:"neurodyn-rzpp-wrapper size-full!",contentClass:"neurodyn-rzpp-content h-full! min-w-full sm:max-w-full",children:(0,rp.jsx)(qp,{captureRef:d,onSizeChange:v})})}),(0,rp.jsx)(W$,{className:"absolute bottom-4 left-4 sm:bottom-6 sm:left-6"}),"carpet"===l&&(0,rp.jsxs)("div",{className:"bg-button-dark typo-button-normal absolute bottom-6 left-1/2 hidden h-9 -translate-x-1/2 items-center gap-1.5 rounded-lg px-3.75 text-text-white md:inline-flex",children:[(0,rp.jsx)("span",{className:"shrink-0",children:u("scene.position")}),(0,rp.jsx)(WG,{value:[a],onValueChange:([e])=>o(e??0),min:-180,max:180,step:1,className:"w-29.5 **:data-[slot=slider-range]:bg-transparent **:data-[slot=slider-thumb]:border-background-base-3 **:data-[slot=slider-thumb]]:bg-background-base-3 **:data-[slot=slider-track]:bg-icons-normal","aria-label":u("scene.position")})]}),(0,rp.jsxs)("div",{className:"absolute right-4 bottom-4 inline-flex items-center gap-2 sm:right-6 sm:bottom-6",children:[g&&(0,rp.jsxs)(WU,{children:[(0,rp.jsx)(Wz,{asChild:!0,children:(0,rp.jsxs)(VS,{variant:"contrast",size:f?"icon":"default",children:[(0,rp.jsx)(VN,{className:"size-5"}),(0,rp.jsx)("span",{className:"sr-only sm:not-sr-only",children:u("scene.tunePosition")})]})}),(0,rp.jsx)(WH,{className:"px-3 py-3.5 bg-button-dark border-button-dark text-text-white",side:"top",align:"end",portalContainer:r,children:(0,rp.jsxs)(Wn,{children:[(0,rp.jsxs)(Wa,{orientation:"horizontal",children:[(0,rp.jsx)(Wo,{children:u("scene.rotation")}),(0,rp.jsx)(WG,{value:[a],onValueChange:([e])=>o(e??0),min:-180,max:180,step:1,className:"w-40.5 **:data-[slot=slider-range]:bg-transparent **:data-[slot=slider-thumb]:border-background-base-3 **:data-[slot=slider-thumb]]:bg-background-base-3 **:data-[slot=slider-track]:bg-icons-normal","aria-label":u("scene.rotation")})]}),"poster"===l&&(0,rp.jsxs)(Wa,{orientation:"horizontal",children:[(0,rp.jsx)(Wo,{children:u("scene.angle")}),(0,rp.jsx)(WG,{value:[i],onValueChange:([e])=>s(e??0),max:75,min:-75,step:1,className:"w-40.5 **:data-[slot=slider-range]:bg-transparent **:data-[slot=slider-thumb]:border-background-base-3 **:data-[slot=slider-thumb]]:bg-background-base-3 **:data-[slot=slider-track]:bg-icons-normal","aria-label":u("scene.angle")})]})]})})]}),"poster"===l&&(0,rp.jsxs)(VS,{variant:"contrast",size:f?"icon":"default",disabled:!m||h,onClick:b,children:[(0,rp.jsx)(VU,{className:"size-5"}),(0,rp.jsx)("span",{className:"sr-only sm:not-sr-only",children:u("scene.share")})]}),f&&"poster"===l&&(0,rp.jsxs)(WU,{children:[(0,rp.jsx)(Wz,{asChild:!0,children:(0,rp.jsx)(VS,{variant:"contrast",size:"icon",children:(0,rp.jsx)(VQ,{})})}),(0,rp.jsxs)(WH,{className:"grid gap-5",portalContainer:r,children:[(0,rp.jsx)(WA,{}),(0,rp.jsx)(W_,{})]})]})]})]})}function qA({showDialogCloseButton:e=!1}){let{setContainerRef:t,sceneLoad:r,isRoomScenePending:n,isViewerAccessPending:i,accessError:a}=We(),{t:s}=sa(),o=i||n||!Object.values(r).every(Boolean);return a?(0,rp.jsx)("div",{ref:t,className:"relative size-full overflow-hidden bg-radial from-background-containers to-background-base-2 text-foreground",children:(0,rp.jsx)(WQ,{variant:a,showDialogCloseButton:e})}):(0,rp.jsxs)("div",{ref:t,className:"relative size-full bg-radial from-background-containers to-background-base-2 text-foreground overflow-hidden",children:[e&&(0,rp.jsx)(VB,{asChild:!0,children:(0,rp.jsxs)(VS,{className:"absolute top-3 right-6 z-20",variant:"secondary",children:[s("close"),(0,rp.jsx)(u8,{})]})}),!i&&(0,rp.jsxs)(rp.Fragment,{children:[(0,rp.jsx)(WN,{className:"absolute top-0 right-0 left-0 z-15"}),(0,rp.jsxs)("div",{className:"size-full max-w-full grid grid-rows-[1fr_auto]",children:[(0,rp.jsx)(qf,{className:"size-full min-h-0"}),(0,rp.jsx)(WO,{className:"bg-background"})]})]}),(0,rp.jsx)("div",{"aria-hidden":!o,className:VC("absolute inset-0 z-10 flex items-center justify-center bg-radial from-background-containers to-background-base-2 transition-opacity",o?"opacity-100 pointer-events-auto duration-0":"opacity-0 pointer-events-none duration-250ms"),children:(0,rp.jsx)(VH,{variant:"logo"})})]})}let qg=new rc({defaultOptions:{queries:{gcTime:1/0,refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(ic(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function qm({type:e,src:t,tinuuid:r,name:n,height:i,width:a,language:s,dimensionUnit:o="m",displayUnit:l="cm",rooms:u,apiKey:c,source:d="default",showDialogCloseButton:h=!1}){let{i18n:p}=sa(),f=c?.trim()||void 0,A="poster"===e?function(e,t,r="m"){return{width:V9(e??0,r),height:V9(t??0,r)}}(a,i,o):null;return(0,rd.useEffect)(()=>{"string"==typeof s&&p.changeLanguage(s)},[p,s]),(0,rp.jsx)(rg,{client:qg,children:(0,rp.jsx)(V7,{src:t??null,tinuuid:r??null,type:e,name:n,width:A?.width??0,height:A?.height??0,displayUnit:l,rooms:u,apiKey:f,baseURL:"shopify"===d?"/apps/vizbl-wall-art/http":void 0,source:d,children:(0,rp.jsx)(qA,{showDialogCloseButton:h})})})}function qv({type:e,src:t,tinuuid:r,width:n,height:i,dimensionUnit:a,displayUnit:s,name:o,language:l,rooms:u,apiKey:c,source:d,...h}){let[p,f]=(0,rd.useState)(null);return(0,rp.jsxs)(rp.Fragment,{children:[(0,al.createPortal)((0,rp.jsx)("style",{children:jX.A}),document.head),(0,al.createPortal)((0,rp.jsxs)(sS.div,{style:{display:"block",letterSpacing:"normal",zIndex:0x7fffffff},children:[(0,rp.jsx)("style",{children:j0}),(0,rp.jsx)("div",{ref:f}),p&&(0,rp.jsx)(jK,{root:p,storageKey:"neurodyn-theme",children:(0,rp.jsx)(ss,{i18n:jZ,children:(0,rp.jsx)(VM,{...h,children:(0,rp.jsxs)(Vk,{className:"min-w-full h-svh p-0 rounded-none sm:p-0",portalContainer:p,showCloseButton:!1,onInteractOutside:e=>{e.preventDefault()},children:[(0,rp.jsxs)(V_,{className:"sr-only",children:[(0,rp.jsx)(VR,{children:o}),(0,rp.jsx)(VP,{})]}),(0,rp.jsx)(qm,{type:e,src:t,tinuuid:r,name:o,height:i,width:n,dimensionUnit:a,displayUnit:s,language:l,rooms:u,apiKey:c,source:d,showDialogCloseButton:!0})]})})})})]}),document.body)]})}VA({baseURL:"https://api.neurodyn.ai/v1/"}),Va({baseURL:"https://api.neurodyn.ai/"});let qb=iB({clientName:"API node client",configureFunctionName:"configureNodeApiClient",defaultBaseURL:"https://api.vizbl.com"});qb.configureClientRuntime,qb.configureAccessTokenResolverRuntime,qb.configureHeadersResolverRuntime,qb.configureUnauthorizedHandlerRuntime,qb.isClientConfiguredRuntime,qb.assertClientConfiguredRuntime,qb.resetClientForTestsRuntime;let qy=qb.requestRuntime;async function qw(e){return qy(e)}async function qx(e,t={}){let{client:r=qw,...n}=t;return(await r({method:"POST",url:"/public/widget/activate-wallart",params:e,...n})).data}qb.requestWithoutUnauthorizedRecovery,qb.addResponseInterceptorRuntime,(ez=tC||(tC={})).assertEqual=e=>{},ez.assertIs=function(e){},ez.assertNever=function(e){throw Error()},ez.arrayToEnum=e=>{let t={};for(let r of e)t[r]=r;return t},ez.getValidEnumValues=e=>{let t=ez.objectKeys(e).filter(t=>"number"!=typeof e[e[t]]),r={};for(let n of t)r[n]=e[n];return ez.objectValues(r)},ez.objectValues=e=>ez.objectKeys(e).map(function(t){return e[t]}),ez.objectKeys="function"==typeof Object.keys?e=>Object.keys(e):e=>{let t=[];for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t},ez.find=(e,t)=>{for(let r of e)if(t(r))return r},ez.isInteger="function"==typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"==typeof e&&Number.isFinite(e)&&Math.floor(e)===e,ez.joinValues=function(e,t=" | "){return e.map(e=>"string"==typeof e?`'${e}'`:e).join(t)},ez.jsonStringifyReplacer=(e,t)=>"bigint"==typeof t?t.toString():t,(tE||(tE={})).mergeShapes=(e,t)=>({...e,...t});let qC=tC.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),qE=e=>{switch(typeof e){case"undefined":return qC.undefined;case"string":return qC.string;case"number":return Number.isNaN(e)?qC.nan:qC.number;case"boolean":return qC.boolean;case"function":return qC.function;case"bigint":return qC.bigint;case"symbol":return qC.symbol;case"object":if(Array.isArray(e))return qC.array;if(null===e)return qC.null;if(e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch)return qC.promise;if("u">typeof Map&&e instanceof Map)return qC.map;if("u">typeof Set&&e instanceof Set)return qC.set;if("u">typeof Date&&e instanceof Date)return qC.date;return qC.object;default:return qC.unknown}},qS=tC.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class qM extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};const t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){let t=e||function(e){return e.message},r={_errors:[]},n=e=>{for(let i of e.issues)if("invalid_union"===i.code)i.unionErrors.map(n);else if("invalid_return_type"===i.code)n(i.returnTypeError);else if("invalid_arguments"===i.code)n(i.argumentsError);else if(0===i.path.length)r._errors.push(t(i));else{let e=r,n=0;for(;n<i.path.length;){let r=i.path[n];n===i.path.length-1?(e[r]=e[r]||{_errors:[]},e[r]._errors.push(t(i))):e[r]=e[r]||{_errors:[]},e=e[r],n++}}};return n(this),r}static assert(e){if(!(e instanceof qM))throw Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,tC.jsonStringifyReplacer,2)}get isEmpty(){return 0===this.issues.length}flatten(e=e=>e.message){let t={},r=[];for(let n of this.issues)if(n.path.length>0){let r=n.path[0];t[r]=t[r]||[],t[r].push(e(n))}else r.push(e(n));return{formErrors:r,fieldErrors:t}}get formErrors(){return this.flatten()}}qM.create=e=>new qM(e);let qI=(e,t)=>{let r;switch(e.code){case qS.invalid_type:r=e.received===qC.undefined?"Required":`Expected ${e.expected}, received ${e.received}`;break;case qS.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(e.expected,tC.jsonStringifyReplacer)}`;break;case qS.unrecognized_keys:r=`Unrecognized key(s) in object: ${tC.joinValues(e.keys,", ")}`;break;case qS.invalid_union:r="Invalid input";break;case qS.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${tC.joinValues(e.options)}`;break;case qS.invalid_enum_value:r=`Invalid enum value. Expected ${tC.joinValues(e.options)}, received '${e.received}'`;break;case qS.invalid_arguments:r="Invalid function arguments";break;case qS.invalid_return_type:r="Invalid function return type";break;case qS.invalid_date:r="Invalid date";break;case qS.invalid_string:"object"==typeof e.validation?"includes"in e.validation?(r=`Invalid input: must include "${e.validation.includes}"`,"number"==typeof e.validation.position&&(r=`${r} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?r=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?r=`Invalid input: must end with "${e.validation.endsWith}"`:tC.assertNever(e.validation):r="regex"!==e.validation?`Invalid ${e.validation}`:"Invalid";break;case qS.too_small:r="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:"number"===e.type||"bigint"===e.type?`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:"date"===e.type?`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:"Invalid input";break;case qS.too_big:r="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:"number"===e.type?`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"bigint"===e.type?`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"date"===e.type?`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:"Invalid input";break;case qS.custom:r="Invalid input";break;case qS.invalid_intersection_types:r="Intersection results could not be merged";break;case qS.not_multiple_of:r=`Number must be a multiple of ${e.multipleOf}`;break;case qS.not_finite:r="Number must be finite";break;default:r=t.defaultError,tC.assertNever(e)}return{message:r}};(eH=tS||(tS={})).errToObj=e=>"string"==typeof e?{message:e}:e||{},eH.toString=e=>"string"==typeof e?e:e?.message;let qB=e=>{let{data:t,path:r,errorMaps:n,issueData:i}=e,a=[...r,...i.path||[]],s={...i,path:a};if(void 0!==i.message)return{...i,path:a,message:i.message};let o="";for(let e of n.filter(e=>!!e).slice().reverse())o=e(s,{data:t,defaultError:o}).message;return{...i,path:a,message:o}};function qT(e,t){let r=qB({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,qI,void 0].filter(e=>!!e)});e.common.issues.push(r)}class qk{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(e,t){let r=[];for(let n of t){if("aborted"===n.status)return q_;"dirty"===n.status&&e.dirty(),r.push(n.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,t){let r=[];for(let e of t){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return qk.mergeObjectSync(e,r)}static mergeObjectSync(e,t){let r={};for(let n of t){let{key:t,value:i}=n;if("aborted"===t.status||"aborted"===i.status)return q_;"dirty"===t.status&&e.dirty(),"dirty"===i.status&&e.dirty(),"__proto__"!==t.value&&(void 0!==i.value||n.alwaysSet)&&(r[t.value]=i.value)}return{status:e.value,value:r}}}let q_=Object.freeze({status:"aborted"}),qR=e=>({status:"dirty",value:e}),qP=e=>({status:"valid",value:e}),qD=e=>"u">typeof Promise&&e instanceof Promise;class qL{constructor(e,t,r,n){this._cachedPath=[],this.parent=e,this.data=t,this._path=r,this._key=n}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}let qF=(e,t)=>{if("valid"===t.status)return{success:!0,data:t.value};if(!e.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new qM(e.common.issues);return this._error=t,this._error}}};function qO(e){if(!e)return{};let{errorMap:t,invalid_type_error:r,required_error:n,description:i}=e;if(t&&(r||n))throw Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return"invalid_enum_value"===t.code?{message:a??i.defaultError}:void 0===i.data?{message:a??n??i.defaultError}:"invalid_type"!==t.code?{message:i.defaultError}:{message:a??r??i.defaultError}},description:i}}class qN{get description(){return this._def.description}_getType(e){return qE(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:qE(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new qk,ctx:{common:e.parent.common,data:e.data,parsedType:qE(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(qD(t))throw Error("Synchronous parse encountered promise.");return t}_parseAsync(e){return Promise.resolve(this._parse(e))}parse(e,t){let r=this.safeParse(e,t);if(r.success)return r.data;throw r.error}safeParse(e,t){let r={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:qE(e)},n=this._parseSync({data:e,path:r.path,parent:r});return qF(r,n)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:qE(e)};if(!this["~standard"].async)try{let r=this._parseSync({data:e,path:[],parent:t});return"valid"===r.status?{value:r.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>"valid"===e.status?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let r=await this.safeParseAsync(e,t);if(r.success)return r.data;throw r.error}async safeParseAsync(e,t){let r={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:qE(e)},n=this._parse({data:e,path:r.path,parent:r});return qF(r,await (qD(n)?n:Promise.resolve(n)))}refine(e,t){return this._refinement((r,n)=>{let i=e(r),a=()=>n.addIssue({code:qS.custom,..."string"==typeof t||void 0===t?{message:t}:"function"==typeof t?t(r):t});return"u">typeof Promise&&i instanceof Promise?i.then(e=>!!e||(a(),!1)):!!i||(a(),!1)})}refinement(e,t){return this._refinement((r,n)=>!!e(r)||(n.addIssue("function"==typeof t?t(r,n):t),!1))}_refinement(e){return new Yw({schema:this,typeName:tM.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:e=>this["~validate"](e)}}optional(){return Yx.create(this,this._def)}nullable(){return YC.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Yi.create(this)}promise(){return Yy.create(this,this._def)}or(e){return Ys.create([this,e],this._def)}and(e){return Yu.create(this,e,this._def)}transform(e){return new Yw({...qO(this._def),schema:this,typeName:tM.ZodEffects,effect:{type:"transform",transform:e}})}default(e){return new YE({...qO(this._def),innerType:this,defaultValue:"function"==typeof e?e:()=>e,typeName:tM.ZodDefault})}brand(){return new YI({typeName:tM.ZodBranded,type:this,...qO(this._def)})}catch(e){return new YS({...qO(this._def),innerType:this,catchValue:"function"==typeof e?e:()=>e,typeName:tM.ZodCatch})}describe(e){return new this.constructor({...this._def,description:e})}pipe(e){return YB.create(this,e)}readonly(){return YT.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}let qQ=/^c[^\s-]{8,}$/i,qU=/^[0-9a-z]+$/,qz=/^[0-9A-HJKMNP-TV-Z]{26}$/i,qH=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,qG=/^[a-z0-9_-]{21}$/i,qj=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,qV=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,qW=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,qq=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,qY=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,qJ=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,qK=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,qX=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,qZ=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,q$="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",q0=RegExp(`^${q$}$`);function q1(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:null==e.precision&&(t=`${t}(\\.\\d+)?`);let r=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${r}`}class q2 extends qN{_parse(e){var t,r,n,i;let a;if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==qC.string){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.string,received:t.parsedType}),q_}let s=new qk;for(let o of this._def.checks)if("min"===o.kind)e.data.length<o.value&&(qT(a=this._getOrReturnCtx(e,a),{code:qS.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),s.dirty());else if("max"===o.kind)e.data.length>o.value&&(qT(a=this._getOrReturnCtx(e,a),{code:qS.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),s.dirty());else if("length"===o.kind){let t=e.data.length>o.value,r=e.data.length<o.value;(t||r)&&(a=this._getOrReturnCtx(e,a),t?qT(a,{code:qS.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):r&&qT(a,{code:qS.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),s.dirty())}else if("email"===o.kind)qW.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"email",code:qS.invalid_string,message:o.message}),s.dirty());else if("emoji"===o.kind)S||(S=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),S.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"emoji",code:qS.invalid_string,message:o.message}),s.dirty());else if("uuid"===o.kind)qH.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"uuid",code:qS.invalid_string,message:o.message}),s.dirty());else if("nanoid"===o.kind)qG.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"nanoid",code:qS.invalid_string,message:o.message}),s.dirty());else if("cuid"===o.kind)qQ.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"cuid",code:qS.invalid_string,message:o.message}),s.dirty());else if("cuid2"===o.kind)qU.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"cuid2",code:qS.invalid_string,message:o.message}),s.dirty());else if("ulid"===o.kind)qz.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"ulid",code:qS.invalid_string,message:o.message}),s.dirty());else if("url"===o.kind)try{new URL(e.data)}catch{qT(a=this._getOrReturnCtx(e,a),{validation:"url",code:qS.invalid_string,message:o.message}),s.dirty()}else"regex"===o.kind?(o.regex.lastIndex=0,o.regex.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"regex",code:qS.invalid_string,message:o.message}),s.dirty())):"trim"===o.kind?e.data=e.data.trim():"includes"===o.kind?e.data.includes(o.value,o.position)||(qT(a=this._getOrReturnCtx(e,a),{code:qS.invalid_string,validation:{includes:o.value,position:o.position},message:o.message}),s.dirty()):"toLowerCase"===o.kind?e.data=e.data.toLowerCase():"toUpperCase"===o.kind?e.data=e.data.toUpperCase():"startsWith"===o.kind?e.data.startsWith(o.value)||(qT(a=this._getOrReturnCtx(e,a),{code:qS.invalid_string,validation:{startsWith:o.value},message:o.message}),s.dirty()):"endsWith"===o.kind?e.data.endsWith(o.value)||(qT(a=this._getOrReturnCtx(e,a),{code:qS.invalid_string,validation:{endsWith:o.value},message:o.message}),s.dirty()):"datetime"===o.kind?(function(e){let t=`${q$}T${q1(e)}`,r=[];return r.push(e.local?"Z?":"Z"),e.offset&&r.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${r.join("|")})`,RegExp(`^${t}$`)})(o).test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{code:qS.invalid_string,validation:"datetime",message:o.message}),s.dirty()):"date"===o.kind?q0.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{code:qS.invalid_string,validation:"date",message:o.message}),s.dirty()):"time"===o.kind?RegExp(`^${q1(o)}$`).test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{code:qS.invalid_string,validation:"time",message:o.message}),s.dirty()):"duration"===o.kind?qV.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"duration",code:qS.invalid_string,message:o.message}),s.dirty()):"ip"===o.kind?(t=e.data,!(("v4"===(r=o.version)||!r)&&qq.test(t)||("v6"===r||!r)&&qJ.test(t))&&1&&(qT(a=this._getOrReturnCtx(e,a),{validation:"ip",code:qS.invalid_string,message:o.message}),s.dirty())):"jwt"===o.kind?!function(e,t){if(!qj.test(e))return!1;try{let[r]=e.split(".");if(!r)return!1;let n=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),i=JSON.parse(atob(n));if("object"!=typeof i||null===i||"typ"in i&&i?.typ!=="JWT"||!i.alg||t&&i.alg!==t)return!1;return!0}catch{return!1}}(e.data,o.alg)&&(qT(a=this._getOrReturnCtx(e,a),{validation:"jwt",code:qS.invalid_string,message:o.message}),s.dirty()):"cidr"===o.kind?(n=e.data,!(("v4"===(i=o.version)||!i)&&qY.test(n)||("v6"===i||!i)&&qK.test(n))&&1&&(qT(a=this._getOrReturnCtx(e,a),{validation:"cidr",code:qS.invalid_string,message:o.message}),s.dirty())):"base64"===o.kind?qX.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"base64",code:qS.invalid_string,message:o.message}),s.dirty()):"base64url"===o.kind?qZ.test(e.data)||(qT(a=this._getOrReturnCtx(e,a),{validation:"base64url",code:qS.invalid_string,message:o.message}),s.dirty()):tC.assertNever(o);return{status:s.value,value:e.data}}_regex(e,t,r){return this.refinement(t=>e.test(t),{validation:t,code:qS.invalid_string,...tS.errToObj(r)})}_addCheck(e){return new q2({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...tS.errToObj(e)})}url(e){return this._addCheck({kind:"url",...tS.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...tS.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...tS.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...tS.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...tS.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...tS.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...tS.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...tS.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...tS.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...tS.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...tS.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...tS.errToObj(e)})}datetime(e){return"string"==typeof e?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:void 0===e?.precision?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...tS.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return"string"==typeof e?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:void 0===e?.precision?null:e?.precision,...tS.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...tS.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...tS.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...tS.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...tS.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...tS.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...tS.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...tS.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...tS.errToObj(t)})}nonempty(e){return this.min(1,tS.errToObj(e))}trim(){return new q2({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new q2({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new q2({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>"datetime"===e.kind)}get isDate(){return!!this._def.checks.find(e=>"date"===e.kind)}get isTime(){return!!this._def.checks.find(e=>"time"===e.kind)}get isDuration(){return!!this._def.checks.find(e=>"duration"===e.kind)}get isEmail(){return!!this._def.checks.find(e=>"email"===e.kind)}get isURL(){return!!this._def.checks.find(e=>"url"===e.kind)}get isEmoji(){return!!this._def.checks.find(e=>"emoji"===e.kind)}get isUUID(){return!!this._def.checks.find(e=>"uuid"===e.kind)}get isNANOID(){return!!this._def.checks.find(e=>"nanoid"===e.kind)}get isCUID(){return!!this._def.checks.find(e=>"cuid"===e.kind)}get isCUID2(){return!!this._def.checks.find(e=>"cuid2"===e.kind)}get isULID(){return!!this._def.checks.find(e=>"ulid"===e.kind)}get isIP(){return!!this._def.checks.find(e=>"ip"===e.kind)}get isCIDR(){return!!this._def.checks.find(e=>"cidr"===e.kind)}get isBase64(){return!!this._def.checks.find(e=>"base64"===e.kind)}get isBase64url(){return!!this._def.checks.find(e=>"base64url"===e.kind)}get minLength(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}q2.create=e=>new q2({checks:[],typeName:tM.ZodString,coerce:e?.coerce??!1,...qO(e)});class q3 extends qN{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){let t;if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==qC.number){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.number,received:t.parsedType}),q_}let r=new qk;for(let n of this._def.checks)"int"===n.kind?tC.isInteger(e.data)||(qT(t=this._getOrReturnCtx(e,t),{code:qS.invalid_type,expected:"integer",received:"float",message:n.message}),r.dirty()):"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.too_small,minimum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),r.dirty()):"max"===n.kind?(n.inclusive?e.data>n.value:e.data>=n.value)&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.too_big,maximum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),r.dirty()):"multipleOf"===n.kind?0!==function(e,t){let r=(e.toString().split(".")[1]||"").length,n=(t.toString().split(".")[1]||"").length,i=r>n?r:n;return Number.parseInt(e.toFixed(i).replace(".",""))%Number.parseInt(t.toFixed(i).replace(".",""))/10**i}(e.data,n.value)&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):"finite"===n.kind?Number.isFinite(e.data)||(qT(t=this._getOrReturnCtx(e,t),{code:qS.not_finite,message:n.message}),r.dirty()):tC.assertNever(n);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,tS.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tS.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tS.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tS.toString(t))}setLimit(e,t,r,n){return new q3({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tS.toString(n)}]})}_addCheck(e){return new q3({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:tS.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:tS.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:tS.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:tS.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:tS.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tS.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:tS.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:tS.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:tS.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>"int"===e.kind||"multipleOf"===e.kind&&tC.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let r of this._def.checks)if("finite"===r.kind||"int"===r.kind||"multipleOf"===r.kind)return!0;else"min"===r.kind?(null===t||r.value>t)&&(t=r.value):"max"===r.kind&&(null===e||r.value<e)&&(e=r.value);return Number.isFinite(t)&&Number.isFinite(e)}}q3.create=e=>new q3({checks:[],typeName:tM.ZodNumber,coerce:e?.coerce||!1,...qO(e)});class q4 extends qN{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){let t;if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==qC.bigint)return this._getInvalidInput(e);let r=new qk;for(let n of this._def.checks)"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.too_small,type:"bigint",minimum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):"max"===n.kind?(n.inclusive?e.data>n.value:e.data>=n.value)&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):"multipleOf"===n.kind?e.data%n.value!==BigInt(0)&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):tC.assertNever(n);return{status:r.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.bigint,received:t.parsedType}),q_}gte(e,t){return this.setLimit("min",e,!0,tS.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tS.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tS.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tS.toString(t))}setLimit(e,t,r,n){return new q4({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tS.toString(n)}]})}_addCheck(e){return new q4({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:tS.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:tS.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:tS.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:tS.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tS.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}q4.create=e=>new q4({checks:[],typeName:tM.ZodBigInt,coerce:e?.coerce??!1,...qO(e)});class q5 extends qN{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==qC.boolean){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.boolean,received:t.parsedType}),q_}return qP(e.data)}}q5.create=e=>new q5({typeName:tM.ZodBoolean,coerce:e?.coerce||!1,...qO(e)});class q9 extends qN{_parse(e){let t;if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==qC.date){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.date,received:t.parsedType}),q_}if(Number.isNaN(e.data.getTime()))return qT(this._getOrReturnCtx(e),{code:qS.invalid_date}),q_;let r=new qk;for(let n of this._def.checks)"min"===n.kind?e.data.getTime()<n.value&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.too_small,message:n.message,inclusive:!0,exact:!1,minimum:n.value,type:"date"}),r.dirty()):"max"===n.kind?e.data.getTime()>n.value&&(qT(t=this._getOrReturnCtx(e,t),{code:qS.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),r.dirty()):tC.assertNever(n);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new q9({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:tS.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:tS.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return null!=e?new Date(e):null}}q9.create=e=>new q9({checks:[],coerce:e?.coerce||!1,typeName:tM.ZodDate,...qO(e)});class q8 extends qN{_parse(e){if(this._getType(e)!==qC.symbol){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.symbol,received:t.parsedType}),q_}return qP(e.data)}}q8.create=e=>new q8({typeName:tM.ZodSymbol,...qO(e)});class q6 extends qN{_parse(e){if(this._getType(e)!==qC.undefined){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.undefined,received:t.parsedType}),q_}return qP(e.data)}}q6.create=e=>new q6({typeName:tM.ZodUndefined,...qO(e)});class q7 extends qN{_parse(e){if(this._getType(e)!==qC.null){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.null,received:t.parsedType}),q_}return qP(e.data)}}q7.create=e=>new q7({typeName:tM.ZodNull,...qO(e)});class Ye extends qN{constructor(){super(...arguments),this._any=!0}_parse(e){return qP(e.data)}}Ye.create=e=>new Ye({typeName:tM.ZodAny,...qO(e)});class Yt extends qN{constructor(){super(...arguments),this._unknown=!0}_parse(e){return qP(e.data)}}Yt.create=e=>new Yt({typeName:tM.ZodUnknown,...qO(e)});class Yr extends qN{_parse(e){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.never,received:t.parsedType}),q_}}Yr.create=e=>new Yr({typeName:tM.ZodNever,...qO(e)});class Yn extends qN{_parse(e){if(this._getType(e)!==qC.undefined){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.void,received:t.parsedType}),q_}return qP(e.data)}}Yn.create=e=>new Yn({typeName:tM.ZodVoid,...qO(e)});class Yi extends qN{_parse(e){let{ctx:t,status:r}=this._processInputParams(e),n=this._def;if(t.parsedType!==qC.array)return qT(t,{code:qS.invalid_type,expected:qC.array,received:t.parsedType}),q_;if(null!==n.exactLength){let e=t.data.length>n.exactLength.value,i=t.data.length<n.exactLength.value;(e||i)&&(qT(t,{code:e?qS.too_big:qS.too_small,minimum:i?n.exactLength.value:void 0,maximum:e?n.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:n.exactLength.message}),r.dirty())}if(null!==n.minLength&&t.data.length<n.minLength.value&&(qT(t,{code:qS.too_small,minimum:n.minLength.value,type:"array",inclusive:!0,exact:!1,message:n.minLength.message}),r.dirty()),null!==n.maxLength&&t.data.length>n.maxLength.value&&(qT(t,{code:qS.too_big,maximum:n.maxLength.value,type:"array",inclusive:!0,exact:!1,message:n.maxLength.message}),r.dirty()),t.common.async)return Promise.all([...t.data].map((e,r)=>n.type._parseAsync(new qL(t,e,t.path,r)))).then(e=>qk.mergeArray(r,e));let i=[...t.data].map((e,r)=>n.type._parseSync(new qL(t,e,t.path,r)));return qk.mergeArray(r,i)}get element(){return this._def.type}min(e,t){return new Yi({...this._def,minLength:{value:e,message:tS.toString(t)}})}max(e,t){return new Yi({...this._def,maxLength:{value:e,message:tS.toString(t)}})}length(e,t){return new Yi({...this._def,exactLength:{value:e,message:tS.toString(t)}})}nonempty(e){return this.min(1,e)}}Yi.create=(e,t)=>new Yi({type:e,minLength:null,maxLength:null,exactLength:null,typeName:tM.ZodArray,...qO(t)});class Ya extends qN{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;let e=this._def.shape(),t=tC.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==qC.object){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.object,received:t.parsedType}),q_}let{status:t,ctx:r}=this._processInputParams(e),{shape:n,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof Yr&&"strip"===this._def.unknownKeys))for(let e in r.data)i.includes(e)||a.push(e);let s=[];for(let e of i){let t=n[e],i=r.data[e];s.push({key:{status:"valid",value:e},value:t._parse(new qL(r,i,r.path,e)),alwaysSet:e in r.data})}if(this._def.catchall instanceof Yr){let e=this._def.unknownKeys;if("passthrough"===e)for(let e of a)s.push({key:{status:"valid",value:e},value:{status:"valid",value:r.data[e]}});else if("strict"===e)a.length>0&&(qT(r,{code:qS.unrecognized_keys,keys:a}),t.dirty());else if("strip"===e);else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let e=this._def.catchall;for(let t of a){let n=r.data[t];s.push({key:{status:"valid",value:t},value:e._parse(new qL(r,n,r.path,t)),alwaysSet:t in r.data})}}return r.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of s){let r=await t.key,n=await t.value;e.push({key:r,value:n,alwaysSet:t.alwaysSet})}return e}).then(e=>qk.mergeObjectSync(t,e)):qk.mergeObjectSync(t,s)}get shape(){return this._def.shape()}strict(e){return tS.errToObj,new Ya({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(t,r)=>{let n=this._def.errorMap?.(t,r).message??r.defaultError;return"unrecognized_keys"===t.code?{message:tS.errToObj(e).message??n}:{message:n}}}:{}})}strip(){return new Ya({...this._def,unknownKeys:"strip"})}passthrough(){return new Ya({...this._def,unknownKeys:"passthrough"})}extend(e){return new Ya({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new Ya({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:tM.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new Ya({...this._def,catchall:e})}pick(e){let t={};for(let r of tC.objectKeys(e))e[r]&&this.shape[r]&&(t[r]=this.shape[r]);return new Ya({...this._def,shape:()=>t})}omit(e){let t={};for(let r of tC.objectKeys(this.shape))e[r]||(t[r]=this.shape[r]);return new Ya({...this._def,shape:()=>t})}deepPartial(){return function e(t){if(t instanceof Ya){let r={};for(let n in t.shape){let i=t.shape[n];r[n]=Yx.create(e(i))}return new Ya({...t._def,shape:()=>r})}if(t instanceof Yi)return new Yi({...t._def,type:e(t.element)});if(t instanceof Yx)return Yx.create(e(t.unwrap()));if(t instanceof YC)return YC.create(e(t.unwrap()));if(t instanceof Yc)return Yc.create(t.items.map(t=>e(t)));else return t}(this)}partial(e){let t={};for(let r of tC.objectKeys(this.shape)){let n=this.shape[r];e&&!e[r]?t[r]=n:t[r]=n.optional()}return new Ya({...this._def,shape:()=>t})}required(e){let t={};for(let r of tC.objectKeys(this.shape))if(e&&!e[r])t[r]=this.shape[r];else{let e=this.shape[r];for(;e instanceof Yx;)e=e._def.innerType;t[r]=e}return new Ya({...this._def,shape:()=>t})}keyof(){return Ym(tC.objectKeys(this.shape))}}Ya.create=(e,t)=>new Ya({shape:()=>e,unknownKeys:"strip",catchall:Yr.create(),typeName:tM.ZodObject,...qO(t)}),Ya.strictCreate=(e,t)=>new Ya({shape:()=>e,unknownKeys:"strict",catchall:Yr.create(),typeName:tM.ZodObject,...qO(t)}),Ya.lazycreate=(e,t)=>new Ya({shape:e,unknownKeys:"strip",catchall:Yr.create(),typeName:tM.ZodObject,...qO(t)});class Ys extends qN{_parse(e){let{ctx:t}=this._processInputParams(e),r=this._def.options;if(t.common.async)return Promise.all(r.map(async e=>{let r={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:r}),ctx:r}})).then(function(e){for(let t of e)if("valid"===t.result.status)return t.result;for(let r of e)if("dirty"===r.result.status)return t.common.issues.push(...r.ctx.common.issues),r.result;let r=e.map(e=>new qM(e.ctx.common.issues));return qT(t,{code:qS.invalid_union,unionErrors:r}),q_});{let e,n=[];for(let i of r){let r={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:r});if("valid"===a.status)return a;"dirty"!==a.status||e||(e={result:a,ctx:r}),r.common.issues.length&&n.push(r.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=n.map(e=>new qM(e));return qT(t,{code:qS.invalid_union,unionErrors:i}),q_}}get options(){return this._def.options}}Ys.create=(e,t)=>new Ys({options:e,typeName:tM.ZodUnion,...qO(t)});let Yo=e=>{if(e instanceof YA)return Yo(e.schema);if(e instanceof Yw)return Yo(e.innerType());if(e instanceof Yg)return[e.value];if(e instanceof Yv)return e.options;if(e instanceof Yb)return tC.objectValues(e.enum);else if(e instanceof YE)return Yo(e._def.innerType);else if(e instanceof q6)return[void 0];else if(e instanceof q7)return[null];else if(e instanceof Yx)return[void 0,...Yo(e.unwrap())];else if(e instanceof YC)return[null,...Yo(e.unwrap())];else if(e instanceof YI)return Yo(e.unwrap());else if(e instanceof YT)return Yo(e.unwrap());else if(e instanceof YS)return Yo(e._def.innerType);else return[]};class Yl extends qN{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==qC.object)return qT(t,{code:qS.invalid_type,expected:qC.object,received:t.parsedType}),q_;let r=this.discriminator,n=t.data[r],i=this.optionsMap.get(n);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(qT(t,{code:qS.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),q_)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,r){let n=new Map;for(let r of t){let t=Yo(r.shape[e]);if(!t.length)throw Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let i of t){if(n.has(i))throw Error(`Discriminator property ${String(e)} has duplicate value ${String(i)}`);n.set(i,r)}}return new Yl({typeName:tM.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...qO(r)})}}class Yu extends qN{_parse(e){let{status:t,ctx:r}=this._processInputParams(e),n=(e,n)=>{if("aborted"===e.status||"aborted"===n.status)return q_;let i=function e(t,r){let n=qE(t),i=qE(r);if(t===r)return{valid:!0,data:t};if(n===qC.object&&i===qC.object){let n=tC.objectKeys(r),i=tC.objectKeys(t).filter(e=>-1!==n.indexOf(e)),a={...t,...r};for(let n of i){let i=e(t[n],r[n]);if(!i.valid)return{valid:!1};a[n]=i.data}return{valid:!0,data:a}}if(n===qC.array&&i===qC.array){if(t.length!==r.length)return{valid:!1};let n=[];for(let i=0;i<t.length;i++){let a=e(t[i],r[i]);if(!a.valid)return{valid:!1};n.push(a.data)}return{valid:!0,data:n}}if(n===qC.date&&i===qC.date&&+t==+r)return{valid:!0,data:t};return{valid:!1}}(e.value,n.value);return i.valid?(("dirty"===e.status||"dirty"===n.status)&&t.dirty(),{status:t.value,value:i.data}):(qT(r,{code:qS.invalid_intersection_types}),q_)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([e,t])=>n(e,t)):n(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}Yu.create=(e,t,r)=>new Yu({left:e,right:t,typeName:tM.ZodIntersection,...qO(r)});class Yc extends qN{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==qC.array)return qT(r,{code:qS.invalid_type,expected:qC.array,received:r.parsedType}),q_;if(r.data.length<this._def.items.length)return qT(r,{code:qS.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),q_;!this._def.rest&&r.data.length>this._def.items.length&&(qT(r,{code:qS.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());let n=[...r.data].map((e,t)=>{let n=this._def.items[t]||this._def.rest;return n?n._parse(new qL(r,e,r.path,t)):null}).filter(e=>!!e);return r.common.async?Promise.all(n).then(e=>qk.mergeArray(t,e)):qk.mergeArray(t,n)}get items(){return this._def.items}rest(e){return new Yc({...this._def,rest:e})}}Yc.create=(e,t)=>{if(!Array.isArray(e))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new Yc({items:e,typeName:tM.ZodTuple,rest:null,...qO(t)})};class Yd extends qN{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==qC.object)return qT(r,{code:qS.invalid_type,expected:qC.object,received:r.parsedType}),q_;let n=[],i=this._def.keyType,a=this._def.valueType;for(let e in r.data)n.push({key:i._parse(new qL(r,e,r.path,e)),value:a._parse(new qL(r,r.data[e],r.path,e)),alwaysSet:e in r.data});return r.common.async?qk.mergeObjectAsync(t,n):qk.mergeObjectSync(t,n)}get element(){return this._def.valueType}static create(e,t,r){return new Yd(t instanceof qN?{keyType:e,valueType:t,typeName:tM.ZodRecord,...qO(r)}:{keyType:q2.create(),valueType:e,typeName:tM.ZodRecord,...qO(t)})}}class Yh extends qN{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==qC.map)return qT(r,{code:qS.invalid_type,expected:qC.map,received:r.parsedType}),q_;let n=this._def.keyType,i=this._def.valueType,a=[...r.data.entries()].map(([e,t],a)=>({key:n._parse(new qL(r,e,r.path,[a,"key"])),value:i._parse(new qL(r,t,r.path,[a,"value"]))}));if(r.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let r of a){let n=await r.key,i=await r.value;if("aborted"===n.status||"aborted"===i.status)return q_;("dirty"===n.status||"dirty"===i.status)&&t.dirty(),e.set(n.value,i.value)}return{status:t.value,value:e}})}{let e=new Map;for(let r of a){let n=r.key,i=r.value;if("aborted"===n.status||"aborted"===i.status)return q_;("dirty"===n.status||"dirty"===i.status)&&t.dirty(),e.set(n.value,i.value)}return{status:t.value,value:e}}}}Yh.create=(e,t,r)=>new Yh({valueType:t,keyType:e,typeName:tM.ZodMap,...qO(r)});class Yp extends qN{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==qC.set)return qT(r,{code:qS.invalid_type,expected:qC.set,received:r.parsedType}),q_;let n=this._def;null!==n.minSize&&r.data.size<n.minSize.value&&(qT(r,{code:qS.too_small,minimum:n.minSize.value,type:"set",inclusive:!0,exact:!1,message:n.minSize.message}),t.dirty()),null!==n.maxSize&&r.data.size>n.maxSize.value&&(qT(r,{code:qS.too_big,maximum:n.maxSize.value,type:"set",inclusive:!0,exact:!1,message:n.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let r=new Set;for(let n of e){if("aborted"===n.status)return q_;"dirty"===n.status&&t.dirty(),r.add(n.value)}return{status:t.value,value:r}}let s=[...r.data.values()].map((e,t)=>i._parse(new qL(r,e,r.path,t)));return r.common.async?Promise.all(s).then(e=>a(e)):a(s)}min(e,t){return new Yp({...this._def,minSize:{value:e,message:tS.toString(t)}})}max(e,t){return new Yp({...this._def,maxSize:{value:e,message:tS.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}Yp.create=(e,t)=>new Yp({valueType:e,minSize:null,maxSize:null,typeName:tM.ZodSet,...qO(t)});class Yf extends qN{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==qC.function)return qT(t,{code:qS.invalid_type,expected:qC.function,received:t.parsedType}),q_;function r(e,r){return qB({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,qI,qI].filter(e=>!!e),issueData:{code:qS.invalid_arguments,argumentsError:r}})}function n(e,r){return qB({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,qI,qI].filter(e=>!!e),issueData:{code:qS.invalid_return_type,returnTypeError:r}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof Yy){let e=this;return qP(async function(...t){let s=new qM([]),o=await e._def.args.parseAsync(t,i).catch(e=>{throw s.addIssue(r(t,e)),s}),l=await Reflect.apply(a,this,o);return await e._def.returns._def.type.parseAsync(l,i).catch(e=>{throw s.addIssue(n(l,e)),s})})}{let e=this;return qP(function(...t){let s=e._def.args.safeParse(t,i);if(!s.success)throw new qM([r(t,s.error)]);let o=Reflect.apply(a,this,s.data),l=e._def.returns.safeParse(o,i);if(!l.success)throw new qM([n(o,l.error)]);return l.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new Yf({...this._def,args:Yc.create(e).rest(Yt.create())})}returns(e){return new Yf({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,r){return new Yf({args:e||Yc.create([]).rest(Yt.create()),returns:t||Yt.create(),typeName:tM.ZodFunction,...qO(r)})}}class YA extends qN{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}YA.create=(e,t)=>new YA({getter:e,typeName:tM.ZodLazy,...qO(t)});class Yg extends qN{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return qT(t,{received:t.data,code:qS.invalid_literal,expected:this._def.value}),q_}return{status:"valid",value:e.data}}get value(){return this._def.value}}function Ym(e,t){return new Yv({values:e,typeName:tM.ZodEnum,...qO(t)})}Yg.create=(e,t)=>new Yg({value:e,typeName:tM.ZodLiteral,...qO(t)});class Yv extends qN{_parse(e){if("string"!=typeof e.data){let t=this._getOrReturnCtx(e),r=this._def.values;return qT(t,{expected:tC.joinValues(r),received:t.parsedType,code:qS.invalid_type}),q_}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),r=this._def.values;return qT(t,{received:t.data,code:qS.invalid_enum_value,options:r}),q_}return qP(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return Yv.create(e,{...this._def,...t})}exclude(e,t=this._def){return Yv.create(this.options.filter(t=>!e.includes(t)),{...this._def,...t})}}Yv.create=Ym;class Yb extends qN{_parse(e){let t=tC.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==qC.string&&r.parsedType!==qC.number){let e=tC.objectValues(t);return qT(r,{expected:tC.joinValues(e),received:r.parsedType,code:qS.invalid_type}),q_}if(this._cache||(this._cache=new Set(tC.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let e=tC.objectValues(t);return qT(r,{received:r.data,code:qS.invalid_enum_value,options:e}),q_}return qP(e.data)}get enum(){return this._def.values}}Yb.create=(e,t)=>new Yb({values:e,typeName:tM.ZodNativeEnum,...qO(t)});class Yy extends qN{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==qC.promise&&!1===t.common.async?(qT(t,{code:qS.invalid_type,expected:qC.promise,received:t.parsedType}),q_):qP((t.parsedType===qC.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}}Yy.create=(e,t)=>new Yy({type:e,typeName:tM.ZodPromise,...qO(t)});class Yw extends qN{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===tM.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:r}=this._processInputParams(e),n=this._def.effect||null,i={addIssue:e=>{qT(r,e),e.fatal?t.abort():t.dirty()},get path(){return r.path}};if(i.addIssue=i.addIssue.bind(i),"preprocess"===n.type){let e=n.transform(r.data,i);if(r.common.async)return Promise.resolve(e).then(async e=>{if("aborted"===t.value)return q_;let n=await this._def.schema._parseAsync({data:e,path:r.path,parent:r});return"aborted"===n.status?q_:"dirty"===n.status||"dirty"===t.value?qR(n.value):n});{if("aborted"===t.value)return q_;let n=this._def.schema._parseSync({data:e,path:r.path,parent:r});return"aborted"===n.status?q_:"dirty"===n.status||"dirty"===t.value?qR(n.value):n}}if("refinement"===n.type){let e=e=>{let t=n.refinement(e,i);if(r.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(!1!==r.common.async)return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(r=>"aborted"===r.status?q_:("dirty"===r.status&&t.dirty(),e(r.value).then(()=>({status:t.value,value:r.value}))));{let n=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===n.status?q_:("dirty"===n.status&&t.dirty(),e(n.value),{status:t.value,value:n.value})}}if("transform"===n.type)if(!1!==r.common.async)return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(e=>"valid"!==e.status?q_:Promise.resolve(n.transform(e.value,i)).then(e=>({status:t.value,value:e})));else{let e=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if("valid"!==e.status)return q_;let a=n.transform(e.value,i);if(a instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:a}}tC.assertNever(n)}}Yw.create=(e,t,r)=>new Yw({schema:e,typeName:tM.ZodEffects,effect:t,...qO(r)}),Yw.createWithPreprocess=(e,t,r)=>new Yw({schema:t,effect:{type:"preprocess",transform:e},typeName:tM.ZodEffects,...qO(r)});class Yx extends qN{_parse(e){return this._getType(e)===qC.undefined?qP(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}Yx.create=(e,t)=>new Yx({innerType:e,typeName:tM.ZodOptional,...qO(t)});class YC extends qN{_parse(e){return this._getType(e)===qC.null?qP(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}YC.create=(e,t)=>new YC({innerType:e,typeName:tM.ZodNullable,...qO(t)});class YE extends qN{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return t.parsedType===qC.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}YE.create=(e,t)=>new YE({innerType:e,typeName:tM.ZodDefault,defaultValue:"function"==typeof t.default?t.default:()=>t.default,...qO(t)});class YS extends qN{_parse(e){let{ctx:t}=this._processInputParams(e),r={...t,common:{...t.common,issues:[]}},n=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return qD(n)?n.then(e=>({status:"valid",value:"valid"===e.status?e.value:this._def.catchValue({get error(){return new qM(r.common.issues)},input:r.data})})):{status:"valid",value:"valid"===n.status?n.value:this._def.catchValue({get error(){return new qM(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}YS.create=(e,t)=>new YS({innerType:e,typeName:tM.ZodCatch,catchValue:"function"==typeof t.catch?t.catch:()=>t.catch,...qO(t)});class YM extends qN{_parse(e){if(this._getType(e)!==qC.nan){let t=this._getOrReturnCtx(e);return qT(t,{code:qS.invalid_type,expected:qC.nan,received:t.parsedType}),q_}return{status:"valid",value:e.data}}}YM.create=e=>new YM({typeName:tM.ZodNaN,...qO(e)}),Symbol("zod_brand");class YI extends qN{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return this._def.type._parse({data:r,path:t.path,parent:t})}unwrap(){return this._def.type}}class YB extends qN{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return"aborted"===e.status?q_:"dirty"===e.status?(t.dirty(),qR(e.value)):this._def.out._parseAsync({data:e.value,path:r.path,parent:r})})();{let e=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===e.status?q_:"dirty"===e.status?(t.dirty(),{status:"dirty",value:e.value}):this._def.out._parseSync({data:e.value,path:r.path,parent:r})}}static create(e,t){return new YB({in:e,out:t,typeName:tM.ZodPipeline})}}class YT extends qN{_parse(e){let t=this._def.innerType._parse(e),r=e=>("valid"===e.status&&(e.value=Object.freeze(e.value)),e);return qD(t)?t.then(e=>r(e)):r(t)}unwrap(){return this._def.innerType}}YT.create=(e,t)=>new YT({innerType:e,typeName:tM.ZodReadonly,...qO(t)}),Ya.lazycreate,(eG=tM||(tM={})).ZodString="ZodString",eG.ZodNumber="ZodNumber",eG.ZodNaN="ZodNaN",eG.ZodBigInt="ZodBigInt",eG.ZodBoolean="ZodBoolean",eG.ZodDate="ZodDate",eG.ZodSymbol="ZodSymbol",eG.ZodUndefined="ZodUndefined",eG.ZodNull="ZodNull",eG.ZodAny="ZodAny",eG.ZodUnknown="ZodUnknown",eG.ZodNever="ZodNever",eG.ZodVoid="ZodVoid",eG.ZodArray="ZodArray",eG.ZodObject="ZodObject",eG.ZodUnion="ZodUnion",eG.ZodDiscriminatedUnion="ZodDiscriminatedUnion",eG.ZodIntersection="ZodIntersection",eG.ZodTuple="ZodTuple",eG.ZodRecord="ZodRecord",eG.ZodMap="ZodMap",eG.ZodSet="ZodSet",eG.ZodFunction="ZodFunction",eG.ZodLazy="ZodLazy",eG.ZodLiteral="ZodLiteral",eG.ZodEnum="ZodEnum",eG.ZodEffects="ZodEffects",eG.ZodNativeEnum="ZodNativeEnum",eG.ZodOptional="ZodOptional",eG.ZodNullable="ZodNullable",eG.ZodDefault="ZodDefault",eG.ZodCatch="ZodCatch",eG.ZodPromise="ZodPromise",eG.ZodBranded="ZodBranded",eG.ZodPipeline="ZodPipeline",eG.ZodReadonly="ZodReadonly";let Yk=q2.create,Y_=q3.create;YM.create,q4.create;let YR=q5.create;q9.create,q8.create,q6.create,q7.create,Ye.create;let YP=Yt.create;Yr.create,Yn.create,Yi.create;let YD=Ya.create;Ya.strictCreate,Ys.create,Yl.create,Yu.create,Yc.create,Yd.create,Yh.create,Yp.create,Yf.create,YA.create,Yg.create;let YL=Yv.create;Yb.create,Yy.create,Yw.create,Yx.create,YC.create;let YF=Yw.createWithPreprocess;YB.create;let YO=YL(["cm","inch"]),YN=YL(["different_fields","one_field"]),YQ=YL(["left_bottom","center","right_bottom","left_center","right_center"]),YU=YD({buttonLabel:Yk(),backgroundColor:Yk(),borderColor:Yk(),textColor:Yk(),borderRadius:Y_(),borderWidth:Y_()}),Yz=YD({units:YO,productWidthAndHeight:YN,metafieldForWidth:Yk().nullable(),metafieldForHeight:Yk().nullable(),metafieldForWidthAndHeight:Yk().nullable(),widgetPosition:YQ,_widgetSettings:YU.optional(),isWidgetActive:YR()}),YH="/apps/vizbl-wall-art/http",YG=YD({metafields:Yk().trim().min(1),posterPic:Yk().trim().min(1),title:Yk().trim().optional()}),Yj=YF(e=>"string"==typeof e?JSON.parse(e):e,YD({metafield:YP(),tinuuid:Yk().trim().optional()}));async function YV(e,t){let r=await qx({productType:"wallart-shopify",variant_id:e,metafield_key:"poster_settings"},{baseURL:YH,signal:t});return function(e){let t,r,n=YG.safeParse("string"!=typeof e?e:JSON.parse(e));if(!n.success)return null;let i=Yj.safeParse(n.data.metafields);if(!i.success)return null;let a=(t=function(e){if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return}}(i.data.metafield),(r=Yz.safeParse(t)).success?r.data:null);return a?{settings:a,posterPic:n.data.posterPic,title:n.data.title??null,tinuuid:i.data.tinuuid??null}:null}(r.body??r)}let YW="44px",Yq="60px",YY={left_center:{left:Yq,top:"50%",transform:"translateY(-50%)"},left_bottom:{left:Yq,bottom:YW},center:{left:`calc(50% + ${Yq})`,bottom:YW,transform:"translateX(-50%)"},right_bottom:{right:Yq,bottom:YW},right_center:{right:Yq,top:"50%",transform:"translateY(-50%)"}},YJ=YF(e=>"number"==typeof e&&Number.isFinite(e)?String(e):e,Yk().trim().regex(/^\d+$/));function YK(e){let t=YJ.safeParse(e);return t.success?t.data:null}function YX(e){return e?e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?e.value:e.getAttribute("value"):null}let YZ=["product-form","[data-main-product]",'[id*="MainProduct"]',".product",".product__info-wrapper",".product__info-container","#MainContent"],Y$=[".product-recommendations",".related-products","[data-product-recommendations]"];async function Y0(e,t={}){let{client:r=iR,...n}=t;return(await r({method:"POST",url:"/shopify/GetRoomsForWidget",data:e,...n})).data}async function Y1(e,t){let r=await Y0(void 0,{params:{variant_id:e},signal:t});return function(e){let{rooms:t}="string"==typeof e?JSON.parse(e):e;return t.filter(e=>!1!==e.active).sort((e,t)=>(e.position??0)-(t.position??0)).map(({active:e,position:t,...r})=>r)}(r.body??r)}var Y2=i("./src/shopify.css?inline");function Y3(){let e=function({documentRef:e=document,locationRef:t=window.location,analytics:r=window.ShopifyAnalytics}={}){var n;let i=e.body;if(i?.classList.contains("template-collection"))return!1;if(n=t.pathname,/(?:^|\/)products\/[^/]+/i.test(n)||r?.meta?.page?.pageType?.toLowerCase()==="product")return!0;let a=e.querySelector('meta[property="og:type"]')?.getAttribute("content");return!!(a?.trim().toLowerCase()==="product"||i?.classList.contains("template-product"))}();return{isProductPage:e,variantId:e?function({documentRef:e=document,locationRef:t=window.location}={}){return function(e=window.location){return YK(new URLSearchParams(e.search).get("variant"))}(t)??function(e=document){for(let{field:t}of Array.from(e.querySelectorAll('form[action*="/cart/add"]')).flatMap((t,r)=>{let n;return[...Array.from(t.querySelectorAll('input[name="id"], select[name="id"]')),...!(n=t.getAttribute("id"))?[]:Array.from(e.querySelectorAll('input[name="id"][form], select[name="id"][form]')).filter(e=>e.getAttribute("form")===n)].map((e,n)=>({field:e,formIndex:r,fieldIndex:n,score:function(e){let t=0,r=(e.getAttribute("id")??"").toLowerCase(),n=(e.getAttribute("class")??"").toLowerCase();for(let i of(r.includes("product-form")&&(t+=100),n.includes("product-form")&&(t+=80),YZ))e.closest(i)&&(t+=25);for(let r of Y$)e.closest(r)&&(t-=100);return t}(t)}))}).sort((e,t)=>t.score-e.score||e.formIndex-t.formIndex||e.fieldIndex-t.fieldIndex)){let e=YK(YX(t));if(e)return e}return null}(e)??function(e=document){for(let t of Array.from(e.querySelectorAll('[name="id"][form^="product-form"]'))){let e=YK(YX(t));if(e)return e}return null}(e)??function(e=document){let t=e.querySelector("[data-selected-variant-id]");return YK(t?.getAttribute("data-selected-variant-id")??null)}(e)}():null}}function Y4(){let e=function(){let[e,t]=(0,rd.useState)(Y3);return(0,rd.useEffect)(()=>{let e=null,r=window.history.pushState,n=window.history.replaceState,i=()=>{null===e&&(e=window.requestAnimationFrame(()=>{e=null,t(e=>{let t=Y3();return e.isProductPage===t.isProductPage&&e.variantId===t.variantId?e:t})}))};window.history.pushState=function(...e){let t=r.apply(this,e);return i(),t},window.history.replaceState=function(...e){let t=n.apply(this,e);return i(),t};let a=ao('body.template-product, body.template-collection, meta[property="og:type"], form[action*="/cart/add"], form[action*="/cart/add"] [name="id"], [name="id"][form], [data-selected-variant-id]',{initialize(e){let t;return{add(){t=(e=>{var t;let r=(t=e).matches("body")?["class"]:t.matches('meta[property="og:type"]')?["content"]:t.matches('form[action*="/cart/add"]')?["action","class","id"]:t.matches('form[action*="/cart/add"] [name="id"], [name="id"][form]')?["form","value"]:t.matches("[data-selected-variant-id]")?["data-selected-variant-id"]:[];if(0===r.length)return;let n=new MutationObserver(i);return n.observe(e,{attributes:!0,attributeFilter:r}),()=>{n.disconnect()}})(e),i()},remove(){t?.(),t=void 0,i()}}}});return document.addEventListener("change",i,!0),document.addEventListener("input",i,!0),document.addEventListener("click",i,!0),window.addEventListener("popstate",i),i(),()=>{null!==e&&window.cancelAnimationFrame(e),window.history.pushState=r,window.history.replaceState=n,a.abort(),document.removeEventListener("change",i,!0),document.removeEventListener("input",i,!0),document.removeEventListener("click",i,!0),window.removeEventListener("popstate",i)}},[]),e}(),[t,r]=(0,rd.useState)(!1),{data:n}=s8({queryKey:["vizbl-shopify-room-viewer","activation",e.variantId],queryFn:({signal:t})=>YV(e.variantId??"",t),enabled:e.isProductPage&&null!==e.variantId,staleTime:3e5,gcTime:3e5,refetchOnWindowFocus:!1},sq,void 0),{data:i}=s8({queryKey:["vizbl-shopify-room-viewer","rooms-for-widget",e.variantId],queryFn:({signal:t})=>Y1(e.variantId??"",t),enabled:!!n?.settings.isWidgetActive&&null!==e.variantId,staleTime:3e5,gcTime:3e5,refetchOnWindowFocus:!1},sq,void 0),a=(0,rd.useCallback)(()=>{r(!0)},[]),s=(0,rd.useCallback)(e=>{r(e)},[]);if(!e.isProductPage||!e.variantId||!n?.settings.isWidgetActive)return null;let{settings:o,posterPic:l,title:u}=n,c=o._widgetSettings,d=function(e){if("one_field"===e.productWidthAndHeight){let[t,r]=e.metafieldForWidthAndHeight.split("x");return{width:Number(t),height:Number(r)}}return{width:Number(e.metafieldForWidth),height:Number(e.metafieldForHeight)}}(o),h="inch"===o.units?"in":"cm";return(0,rp.jsxs)(rp.Fragment,{children:[(0,rp.jsx)("button",{type:"button",onClick:a,style:{position:"fixed",zIndex:0x7ffffffe,display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"13.522px 21.635px",borderStyle:"solid",borderColor:c?.borderColor??"rgba(65, 90, 229, 0.3)",borderWidth:c?.borderWidth??1,borderRadius:c?.borderRadius??121.053,background:c?.backgroundColor??"#ffffff",boxShadow:"0px 0px 20px 0px rgba(23, 32, 51, 0.14), 0px 16px 32px 0px rgba(23, 32, 51, 0.17)",color:c?.textColor??"#111111",boxSizing:"border-box",cursor:"pointer",maxWidth:"calc(100vw - 16px)",fontFamily:'Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',fontSize:18,fontWeight:600,letterSpacing:0,lineHeight:"18px",margin:0,appearance:"none",...YY[o.widgetPosition]},children:c?.buttonLabel??"View in place"}),(0,rp.jsx)(qv,{open:t,onOpenChange:s,type:"poster",source:"shopify",src:l,name:u??"",rooms:i,width:d.width,height:d.height,dimensionUnit:h}),t&&(0,al.createPortal)((0,rp.jsx)("style",{children:Y2.A}),document.head)]})}let Y5="vizbl-shopify-room-viewer",Y9=new rc({defaultOptions:{queries:{refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(ic(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function Y8(){let e,t=((e=document.getElementById(Y5))||((e=document.createElement("div")).id=Y5,document.body.appendChild(e)),e),r=iP.createRoot(t);r.render((0,rd.createElement)(rg,{client:Y9},(0,rd.createElement)(Y4)));let n=ao(`#${Y5}`,{remove(){n.abort(),r.unmount(),Y8()}})}ik({baseURL:YH}),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Y8,{once:!0}):Y8()})()})();