{"version":3,"file":"StructuredData.ChEuO0m6.mjs","names":["useRef","useCallback","React.useId","React.useRef"],"sources":["https:/framerusercontent.com/modules/RB6EIyOMfUpaJDbVyJ0F/8utw7NIiEEpXfNAcor6i/Shimmercustom.js","https:/framerusercontent.com/modules/qFOnpSTSFvjs0DZKS0vg/iXjek0P1g5CQdzcGdsEI/StructuredData.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useRef,useEffect,useCallback}from\"react\";/**\n * ShimmerGrid — Framer Custom Code Component v5\n *\n * Invisible at rest. On hover reveals a soft radial grid.\n * The outer radius is a large, wide, gentle falloff (the base grid).\n * The inner radius near the cursor shifts tiles toward an accent colour.\n * Uses window mousemove so it works beneath other layers at z-index 0.\n */// ─── Parse colour via canvas pixel read (respects alpha) ─────────────────────\nconst _colorCache={};function parseColor(color){if(_colorCache[color])return _colorCache[color];const cv=document.createElement(\"canvas\");cv.width=1;cv.height=1;const ctx=cv.getContext(\"2d\");ctx.fillStyle=color;ctx.fillRect(0,0,1,1);const[r,g,b,a]=ctx.getImageData(0,0,1,1).data;const result={r,g,b,a:a/255};_colorCache[color]=result;return result;}// ─── Smoothstep ───────────────────────────────────────────────────────────────\nfunction smoothstep(edge0,edge1,x){if(edge1<=edge0)return x<=edge0?1:0;const t=Math.max(0,Math.min(1,(x-edge0)/(edge1-edge0)));return t*t*(3-2*t);}// ─── Component ────────────────────────────────────────────────────────────────\nexport default function ShimmerGrid({tileSize,baseColor,baseRadius,baseFalloff,accentColor,accentRadius,accentFalloff,animationSpeed,backgroundColor,style}){const containerRef=useRef(null);const canvasRef=useRef(null);const stateRef=useRef({x:-99999,y:-99999,inside:false});// opacityMap: 0→1 overall tile visibility (outer radius)\n// accentMap:  0→1 colour shift base→accent (inner radius)\nconst opacityMapRef=useRef(null);const accentMapRef=useRef(null);const dimsRef=useRef({cols:0,rows:0,w:0,h:0});const rafRef=useRef(0);const propsRef=useRef({tileSize,baseColor,baseRadius,baseFalloff,accentColor,accentRadius,accentFalloff,animationSpeed,backgroundColor});useEffect(()=>{propsRef.current={tileSize,baseColor,baseRadius,baseFalloff,accentColor,accentRadius,accentFalloff,animationSpeed,backgroundColor};});// ── Canvas setup ──────────────────────────────────────────────────────────\nconst setupCanvas=useCallback(()=>{const container=containerRef.current;const canvas=canvasRef.current;if(!container||!canvas)return;const w=container.offsetWidth;const h=container.offsetHeight;if(w===0||h===0)return;canvas.width=w;canvas.height=h;const ts=propsRef.current.tileSize;const cols=Math.ceil(w/ts);const rows=Math.ceil(h/ts);dimsRef.current={cols,rows,w,h};opacityMapRef.current=new Float32Array(cols*rows);accentMapRef.current=new Float32Array(cols*rows);},[]);// ── Draw loop ─────────────────────────────────────────────────────────────\nuseEffect(()=>{let running=true;function draw(){if(!running)return;const canvas=canvasRef.current;const container=containerRef.current;if(!canvas||!container){rafRef.current=requestAnimationFrame(draw);return;}const ctx=canvas.getContext(\"2d\");if(!ctx){rafRef.current=requestAnimationFrame(draw);return;}const{cols,rows,w,h}=dimsRef.current;const oMap=opacityMapRef.current;const aMap=accentMapRef.current;if(!oMap||!aMap||w===0||h===0){rafRef.current=requestAnimationFrame(draw);return;}const{tileSize:ts,baseColor:bc,baseRadius:br,baseFalloff:bf,accentColor:ac,accentRadius:ar,accentFalloff:af,animationSpeed:spd,backgroundColor:bg}=propsRef.current;const{x:gx,y:gy,inside}=stateRef.current;const rect=container.getBoundingClientRect();const lx=gx-rect.left;const ly=gy-rect.top;// Lerp speed: gentle range so slow feels drifty and fast feels snappy\nconst speed=.015+spd/100*.135;const base=parseColor(bc);const accent=parseColor(ac);ctx.fillStyle=bg;ctx.fillRect(0,0,w,h);for(let row=0;row<rows;row++){for(let col=0;col<cols;col++){const idx=row*cols+col;const cx=col*ts+ts/2;const cy=row*ts+ts/2;const dist=Math.sqrt((cx-lx)**2+(cy-ly)**2);let opacityTarget=0;let accentTarget=0;if(inside){// Outer: 1 inside br, smooth fade to 0 at br+bf\nopacityTarget=1-smoothstep(br,br+bf,dist);// Inner: 1 inside ar, smooth fade to 0 at ar+af\naccentTarget=1-smoothstep(ar,ar+af,dist);}oMap[idx]+=(opacityTarget-oMap[idx])*speed;aMap[idx]+=(accentTarget-aMap[idx])*speed;const opacity=oMap[idx];const accentW=aMap[idx];if(opacity<.003)continue;// Blend colour channels base→accent\nconst r=Math.round(base.r+(accent.r-base.r)*accentW);const g=Math.round(base.g+(accent.g-base.g)*accentW);const b=Math.round(base.b+(accent.b-base.b)*accentW);// Blend picker alpha base→accent, then multiply by radial opacity\nconst pickerAlpha=base.a+(accent.a-base.a)*accentW;const finalAlpha=opacity*pickerAlpha;if(finalAlpha<.003)continue;const x=col*ts;const y=row*ts;ctx.strokeStyle=`rgba(${r},${g},${b},${finalAlpha})`;ctx.lineWidth=1;ctx.strokeRect(x+.5,y+.5,ts-1,ts-1);}}rafRef.current=requestAnimationFrame(draw);}rafRef.current=requestAnimationFrame(draw);return()=>{running=false;cancelAnimationFrame(rafRef.current);};},[]);// ── Resize when tileSize changes ──────────────────────────────────────────\nuseEffect(()=>{setupCanvas();},[tileSize,setupCanvas]);// ── Global mouse tracker ──────────────────────────────────────────────────\nuseEffect(()=>{const onMove=e=>{const container=containerRef.current;if(!container)return;const rect=container.getBoundingClientRect();const inside=e.clientX>=rect.left&&e.clientX<=rect.right&&e.clientY>=rect.top&&e.clientY<=rect.bottom;stateRef.current={x:e.clientX,y:e.clientY,inside};};const onLeave=()=>{stateRef.current={...stateRef.current,inside:false};};window.addEventListener(\"mousemove\",onMove,{passive:true});document.documentElement.addEventListener(\"mouseleave\",onLeave);return()=>{window.removeEventListener(\"mousemove\",onMove);document.documentElement.removeEventListener(\"mouseleave\",onLeave);};},[]);// ── Mount + resize observer ───────────────────────────────────────────────\nuseEffect(()=>{setupCanvas();const ro=new ResizeObserver(()=>setupCanvas());if(containerRef.current)ro.observe(containerRef.current);return()=>ro.disconnect();},[setupCanvas]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",...style},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{display:\"block\",width:\"100%\",height:\"100%\"}})});}// ─── Defaults — tuned to match reference (light bg, large tiles, faint lines) ─\nShimmerGrid.defaultProps={tileSize:130,baseColor:\"rgba(100, 120, 200, 0.18)\",baseRadius:300,baseFalloff:250,accentColor:\"rgba(80, 100, 180, 0.35)\",accentRadius:80,accentFalloff:180,animationSpeed:8,backgroundColor:\"#ffffff\"};// ─── Framer Property Controls ─────────────────────────────────────────────────\naddPropertyControls(ShimmerGrid,{backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#ffffff\"},tileSize:{type:ControlType.Number,title:\"Tile Size\",defaultValue:130,min:8,max:400,step:2,unit:\"px\",displayStepper:true},baseColor:{type:ControlType.Color,title:\"Grid Base\",defaultValue:\"rgba(100, 120, 200, 0.18)\"},baseRadius:{type:ControlType.Number,title:\"Base Radius\",defaultValue:300,min:0,max:1200,step:10,unit:\"px\",displayStepper:true},baseFalloff:{type:ControlType.Number,title:\"Base Falloff\",defaultValue:250,min:0,max:800,step:10,unit:\"px\",displayStepper:true},accentColor:{type:ControlType.Color,title:\"Hover Accent\",defaultValue:\"rgba(80, 100, 180, 0.35)\"},accentRadius:{type:ControlType.Number,title:\"Accent Radius\",defaultValue:80,min:0,max:600,step:10,unit:\"px\",displayStepper:true},accentFalloff:{type:ControlType.Number,title:\"Accent Falloff\",defaultValue:180,min:0,max:800,step:10,unit:\"px\",displayStepper:true},animationSpeed:{type:ControlType.Number,title:\"Anim. Speed\",defaultValue:8,min:1,max:100,step:1,displayStepper:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ShimmerGrid\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Shimmercustom.map","// User request: Create a StructuredData code component that injects Schema.org JSON-LD into document head for SEO/AI discoverability; render nothing visible and do not affect layout; expose a json textarea string control; validate via JSON.parse in try/catch client-side; inject/remove/re-inject script on mount/unmount/json change; guard against duplicate injection using an instance-derived data attribute; skip injection in Framer canvas/editor render-restricted contexts; default json is an empty string.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function StructuredData(props){const{json=\"\"}=props;const instanceId=React.useId();const warnedInvalidRef=React.useRef(false);const scriptRef=React.useRef(null);React.useEffect(()=>{if(RenderTarget.hasRestrictions())return;if(typeof window===\"undefined\"||typeof document===\"undefined\")return;const trimmed=json.trim();if(!trimmed){return;}try{JSON.parse(trimmed);}catch(_error){if(!warnedInvalidRef.current){warnedInvalidRef.current=true;console.warn(\"StructuredData: Invalid JSON-LD string passed to `json` prop. Injection skipped.\");}return;}warnedInvalidRef.current=false;const attributeName=\"data-structured-data-id\";const existing=document.head.querySelector(`script[type=\"application/ld+json\"][${attributeName}=\"${instanceId}\"]`);if(existing){existing.remove();}const script=document.createElement(\"script\");script.type=\"application/ld+json\";script.setAttribute(attributeName,instanceId);script.text=trimmed;document.head.appendChild(script);scriptRef.current=script;return()=>{if(scriptRef.current&&scriptRef.current.parentNode){scriptRef.current.parentNode.removeChild(scriptRef.current);}scriptRef.current=null;};},[instanceId,json]);return /*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",style:{position:\"relative\",display:\"none\",width:0,height:0,overflow:\"hidden\"}});}addPropertyControls(StructuredData,{json:{type:ControlType.String,title:\"JSON\",defaultValue:\"\",displayTextArea:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"StructuredData\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./StructuredData.map"],"mappings":"oNAQqB,SAAS,EAAW,EAAM,CAAC,GAAG,EAAY,GAAO,OAAO,EAAY,GAAO,IAAM,EAAG,SAAS,cAAc,QAAQ,EAAE,EAAG,MAAM,EAAE,EAAG,OAAO,EAAE,IAAM,EAAI,EAAG,WAAW,IAAI,EAAE,EAAI,UAAU,EAAM,EAAI,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,GAAK,CAAC,EAAE,EAAE,EAAE,GAAG,EAAI,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAW,EAAO,CAAC,EAAE,IAAE,IAAE,EAAE,EAAE,GAAG,EAA4B,MAA1B,GAAY,GAAO,EAAc,CAAO,CAC5V,SAAS,EAAW,EAAM,EAAM,EAAE,CAAC,GAAG,GAAO,EAAM,MAAO,KAAG,GAAU,IAAM,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,GAAG,EAAE,IAAQ,EAAM,EAAM,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAG,CAClJ,SAAwB,EAAY,CAAC,WAAS,YAAU,aAAW,cAAY,cAAY,eAAa,gBAAc,iBAAe,kBAAgB,SAAO,CAAC,IAAM,EAAaA,EAAO,IAAI,EAAQ,EAAUA,EAAO,IAAI,EAAQ,EAASA,EAAO,CAAC,EAAE,OAAO,EAAE,OAAO,OAAO,EAAK,CAAC,EAE1Q,EAAcA,EAAO,IAAI,EAAQ,EAAaA,EAAO,IAAI,EAAQ,EAAQA,EAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAQ,EAAOA,EAAO,CAAC,EAAQ,EAASA,EAAO,CAAC,WAAS,YAAU,aAAW,cAAY,cAAY,eAAa,gBAAc,iBAAe,iBAAe,CAAC,EAAE,MAAc,CAAC,EAAS,QAAQ,CAAC,WAAS,YAAU,aAAW,cAAY,cAAY,eAAa,gBAAc,iBAAe,iBAAe,CAAE,CAAC,EACla,IAAM,EAAYC,MAAgB,CAAC,IAAM,EAAU,EAAa,QAAc,EAAO,EAAU,QAAQ,GAAG,CAAC,GAAW,CAAC,EAAO,OAAO,IAAM,EAAE,EAAU,YAAkB,EAAE,EAAU,aAAa,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,EAAO,MAAM,EAAE,EAAO,OAAO,EAAE,IAAM,EAAG,EAAS,QAAQ,SAAe,EAAK,KAAK,KAAK,EAAE,CAAE,EAAQ,EAAK,KAAK,KAAK,EAAE,CAAE,EAAE,EAAQ,QAAQ,CAAC,OAAK,OAAK,IAAE,GAAC,EAAE,EAAc,QAAQ,IAAI,aAAa,EAAK,CAAI,EAAE,EAAa,QAAQ,IAAI,aAAa,EAAK,CAAI,CAAE,EAAE,CAAC,CAAC,EASxS,OARhL,MAAc,CAAC,IAAI,EAAQ,GAAK,SAAS,GAAM,CAAC,GAAG,CAAC,EAAQ,OAAO,IAAM,EAAO,EAAU,QAAc,EAAU,EAAa,QAAQ,GAAG,CAAC,GAAQ,CAAC,EAAU,CAAC,EAAO,QAAQ,sBAAsB,CAAI,EAAE,MAAO,CAAC,IAAM,EAAI,EAAO,WAAW,IAAI,EAAE,GAAG,CAAC,EAAI,CAAC,EAAO,QAAQ,sBAAsB,CAAI,EAAE,MAAO,CAAC,GAAK,CAAC,OAAK,OAAK,IAAE,KAAG,EAAQ,QAAc,EAAK,EAAc,QAAc,EAAK,EAAa,QAAQ,GAAG,CAAC,GAAM,CAAC,GAAM,IAAI,GAAG,IAAI,EAAE,CAAC,EAAO,QAAQ,sBAAsB,CAAI,EAAE,MAAO,CAAC,GAAK,CAAC,SAAS,EAAG,UAAU,EAAG,WAAW,EAAG,YAAY,EAAG,YAAY,EAAG,aAAa,EAAG,cAAc,EAAG,eAAe,EAAI,gBAAgB,GAAI,EAAS,QAAa,CAAC,EAAE,EAAG,EAAE,EAAG,UAAQ,EAAS,QAAc,EAAK,EAAU,sBAAsB,EAAQ,EAAG,EAAG,EAAK,KAAW,EAAG,EAAG,EAAK,IACnwB,EAAM,KAAK,EAAI,IAAI,KAAW,EAAK,EAAW,CAAE,EAAQ,EAAO,EAAW,CAAE,EAAE,EAAI,UAAU,EAAG,EAAI,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAI,EAAE,EAAI,EAAK,IAAO,IAAI,IAAI,EAAI,EAAE,EAAI,EAAK,IAAM,CAAC,IAAM,EAAI,EAAI,EAAK,EAAU,EAAG,EAAI,EAAG,EAAG,EAAQ,EAAG,EAAI,EAAG,EAAG,EAAQ,EAAK,KAAK,MAAM,EAAG,IAAK,GAAG,EAAG,IAAK,CAAC,EAAM,EAAc,EAAM,EAAa,EAAK,IAC9U,EAAc,EAAE,EAAW,EAAG,EAAG,EAAG,CAAI,EACxC,EAAa,EAAE,EAAW,EAAG,EAAG,EAAG,CAAI,GAAG,EAAK,KAAO,EAAc,EAAK,IAAM,EAAM,EAAK,KAAO,EAAa,EAAK,IAAM,EAAM,IAAM,EAAQ,EAAK,GAAW,EAAQ,EAAK,GAAK,GAAG,EAAQ,KAAK,SAC/L,IAAM,EAAE,KAAK,MAAM,EAAK,GAAG,EAAO,EAAE,EAAK,GAAG,CAAO,EAAQ,EAAE,KAAK,MAAM,EAAK,GAAG,EAAO,EAAE,EAAK,GAAG,CAAO,EAAQ,EAAE,KAAK,MAAM,EAAK,GAAG,EAAO,EAAE,EAAK,GAAG,CAAO,EACpG,EAAW,GAAlD,EAAK,GAAG,EAAO,EAAE,EAAK,GAAG,GAA6C,GAAG,EAAW,KAAK,SAAS,IAAM,EAAE,EAAI,EAAS,EAAE,EAAI,EAAG,EAAI,YAAY,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAW,GAAG,EAAI,UAAU,EAAE,EAAI,WAAW,EAAE,GAAG,EAAE,GAAG,EAAG,EAAE,EAAG,CAAC,CAAE,CAAE,EAAO,QAAQ,sBAAsB,CAAI,CAAE,CAA4C,MAA3C,GAAO,QAAQ,sBAAsB,CAAI,MAAY,CAAC,EAAQ,GAAM,qBAAqB,EAAO,OAAO,CAAE,CAAE,EAAE,CAAC,CAAC,EACxZ,MAAc,CAAC,EAAY,CAAE,EAAE,CAAC,EAAS,CAAW,CAAC,EACrD,MAAc,CAAC,IAAM,EAAO,GAAG,CAAC,IAAM,EAAU,EAAa,QAAQ,GAAG,CAAC,EAAU,OAAO,IAAM,EAAK,EAAU,sBAAsB,EAAQ,EAAO,EAAE,SAAS,EAAK,MAAM,EAAE,SAAS,EAAK,OAAO,EAAE,SAAS,EAAK,KAAK,EAAE,SAAS,EAAK,OAAO,EAAS,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,QAAM,CAAE,EAAQ,MAAY,CAAC,EAAS,QAAQ,CAAC,GAAG,EAAS,QAAQ,OAAO,EAAK,CAAE,EAA6H,OAA3H,EAAO,iBAAiB,YAAY,EAAO,CAAC,QAAQ,EAAI,CAAC,EAAE,SAAS,gBAAgB,iBAAiB,aAAa,CAAO,MAAY,CAAC,EAAO,oBAAoB,YAAY,CAAM,EAAE,SAAS,gBAAgB,oBAAoB,aAAa,CAAO,CAAE,CAAE,EAAE,CAAC,CAAC,EACxmB,MAAc,CAAC,EAAY,EAAE,IAAM,EAAG,IAAI,mBAAmB,EAAY,CAAC,EAA2D,OAAtD,EAAa,SAAQ,EAAG,QAAQ,EAAa,OAAO,MAAY,EAAG,WAAW,CAAE,EAAE,CAAC,CAAW,CAAC,EAAsB,EAAK,MAAM,CAAC,IAAI,EAAa,MAAM,CAAC,SAAS,WAAW,MAAM,OAAO,OAAO,OAAO,SAAS,SAAS,GAAG,CAAK,EAAE,SAAsB,EAAK,SAAS,CAAC,IAAI,EAAU,MAAM,CAAC,QAAQ,QAAQ,MAAM,OAAO,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAE,uBAtBnX,IAAoD,IAAgD,EAQxI,EAAY,CAAC,EAenB,EAAY,aAAa,CAAC,SAAS,IAAI,UAAU,4BAA4B,WAAW,IAAI,YAAY,IAAI,YAAY,2BAA2B,aAAa,GAAG,cAAc,IAAI,eAAe,EAAE,gBAAgB,SAAS,EAC/N,EAAoB,EAAY,CAAC,gBAAgB,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,aAAa,SAAS,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,KAAK,eAAe,EAAI,EAAE,UAAU,CAAC,KAAK,EAAY,MAAM,MAAM,YAAY,aAAa,2BAA2B,EAAE,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,aAAa,IAAI,IAAI,EAAE,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,eAAe,EAAI,EAAE,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,eAAe,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,KAAK,KAAK,eAAe,EAAI,EAAE,YAAY,CAAC,KAAK,EAAY,MAAM,MAAM,eAAe,aAAa,0BAA0B,EAAE,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,KAAK,KAAK,eAAe,EAAI,EAAE,cAAc,CAAC,KAAK,EAAY,OAAO,MAAM,iBAAiB,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,KAAK,KAAK,eAAe,EAAI,EAAE,eAAe,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,eAAe,EAAI,CAAC,CAAC,KCpBniC,SAAwB,EAAe,EAAM,CAAC,GAAK,CAAC,OAAK,IAAI,EAAY,EAAWC,EAAY,EAAQ,EAAiBC,EAAa,EAAK,EAAQ,EAAUA,EAAa,IAAI,EAAw9B,OAAt9B,MAAoB,CAA0C,GAAtC,EAAa,gBAAgB,GAAmB,IAAS,QAAa,OAAO,SAAW,IAAY,OAAO,IAAM,EAAQ,EAAK,KAAK,EAAE,GAAG,CAAC,EAAS,OAAQ,GAAG,CAAC,KAAK,MAAM,CAAO,CAAE,MAAc,CAAK,EAAiB,UAAS,EAAiB,QAAQ,GAAK,QAAQ,KAAK,kFAAkF,GAAG,MAAO,CAAC,EAAiB,QAAQ,GAAM,IAAM,EAAc,0BAAgC,EAAS,SAAS,KAAK,cAAc,sCAAsC,EAAc,IAAI,EAAW,GAAG,EAAK,GAAU,EAAS,OAAO,EAAG,IAAM,EAAO,SAAS,cAAc,QAAQ,EAAiK,MAA/J,GAAO,KAAK,sBAAsB,EAAO,aAAa,EAAc,CAAU,EAAE,EAAO,KAAK,EAAQ,SAAS,KAAK,YAAY,CAAM,EAAE,EAAU,QAAQ,MAAiB,CAAI,EAAU,SAAS,EAAU,QAAQ,YAAY,EAAU,QAAQ,WAAW,YAAY,EAAU,OAAO,EAAG,EAAU,QAAQ,IAAK,CAAE,EAAE,CAAC,EAAW,CAAI,CAAC,EAAsB,EAAK,OAAO,CAAC,cAAc,OAAO,MAAM,CAAC,SAAS,WAAW,QAAQ,OAAO,MAAM,EAAE,OAAO,EAAE,SAAS,QAAQ,CAAC,CAAC,CAAE,qBAHruC,IAA4B,IAAiE,EAGyoC,EAAoB,EAAe,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,aAAa,GAAG,gBAAgB,EAAI,CAAC,CAAC"}