{"version":3,"file":"shared-lib.jMew6wNe.mjs","names":["useMemo","useRef","useState","useMemo","useRef","useState","Tag"],"sources":["https:/framerusercontent.com/modules/KDxaMvwbGuRN2xbTbg0p/4jLBPiRhx2CcIItge8uB/Imagepixel.js","https:/framerusercontent.com/modules/gFVYESOdEeAHQPS19KH9/vWf2Hk3quZAHcGdbPQV8/FramerPixelReveal.js"],"sourcesContent":["\"use client\";import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useLayoutEffect,useRef,useState,useMemo}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * PixelReveal Media\n * A custom Framer code component that reveals an image or video through a pixelated animation.\n */export default function PixelRevealMedia(props){const isStatic=useIsStaticRenderer();const{mediaType,imageSrc,videoSrc,thumbnail,autoplay,loop,muted,objectFit,lightColor,frameDuration,stepsStr,densityStr,dropRatesStr,lightChancesStr,trigger,scrollThreshold,repeat,style}=props;// Safely extract properties from the ResponsiveImage object\nconst resolvedImageSrc=typeof imageSrc===\"object\"&&imageSrc!==null?imageSrc.src:imageSrc;const resolvedImageSrcSet=typeof imageSrc===\"object\"&&imageSrc!==null?imageSrc.srcSet:undefined;const resolvedImageAlt=typeof imageSrc===\"object\"&&imageSrc!==null&&imageSrc.alt?imageSrc.alt:\"Pixel Reveal Media\";// ── STATIC CANVAS PREVIEW ─────────────────────────────────────────────────\n// In Framer's canvas editor, useIsStaticRenderer() returns true.\n// We render a plain img/video thumbnail only — no canvas, no animation,\n// no RAF loops, no ResizeObservers. This prevents the blank-white-box\n// that occurs when the animation effect runs inside the editor iframe.\nif(isStatic){const src=mediaType===\"image\"?resolvedImageSrc:thumbnail||videoSrc;return /*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",width:\"100%\",height:\"100%\",...style},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\"},children:/*#__PURE__*/_jsx(\"img\",{src:src,srcSet:mediaType===\"image\"?resolvedImageSrcSet:undefined,alt:mediaType===\"image\"?resolvedImageAlt:\"Pixel Reveal Media\",style:{width:\"100%\",height:\"100%\",objectFit:objectFit,display:\"block\"}})})});}// ── LIVE / PREVIEW RENDER ─────────────────────────────────────────────────\n// Helper to parse comma-separated number strings\nconst parseNumArray=str=>{return str.split(\",\").map(s=>parseFloat(s.trim())).filter(n=>!isNaN(n));};const steps=useMemo(()=>parseNumArray(stepsStr),[stepsStr]);const densityThresholds=useMemo(()=>parseNumArray(densityStr),[densityStr]);const dropRates=useMemo(()=>parseNumArray(dropRatesStr),[dropRatesStr]);const lightChances=useMemo(()=>parseNumArray(lightChancesStr),[lightChancesStr]);// Handle Framer's CSS variable color tokens\nconst resolveColor=colorValue=>{if(colorValue&&colorValue.startsWith(\"var(\")){return colorValue;}return colorValue;};const resolvedLightColor=resolveColor(lightColor);const containerRef=useRef(null);const canvasRef=useRef(null);const wrapperRef=useRef(null);const imageRef=useRef(null);const videoRef=useRef(null);const hasTriggeredRef=useRef(false);// If trigger is hover, start at the end of the animation (normal media)\nconst initialStepsLength=parseNumArray(stepsStr).length;const[stepIndex,setStepIndex]=useState(trigger===\"hover\"?initialStepsLength-1:0);const[mediaReady,setMediaReady]=useState(false);const[retryTick,setRetryTick]=useState(0);const[prevDepsString,setPrevDepsString]=useState(\"\");// Trigger state\nconst[isTriggered,setIsTriggered]=useState(trigger===\"auto\");// Create a dependency string to detect when we need to restart the animation\nconst depsString=`${mediaType}-${resolvedImageSrc}-${videoSrc}-${stepsStr}-${frameDuration}-${densityStr}-${dropRatesStr}-${lightChancesStr}-${resolvedLightColor}-${trigger}-${objectFit}`;// Derived state: reset stepIndex immediately when dependencies change\nif(depsString!==prevDepsString){setPrevDepsString(depsString);setStepIndex(trigger===\"hover\"?parseNumArray(stepsStr).length-1:0);setIsTriggered(trigger===\"auto\");hasTriggeredRef.current=false;}// FIX: Catch cached media that doesn't fire the onLoad event in the live browser\nuseEffect(()=>{if(mediaType===\"image\"&&imageRef.current?.complete&&imageRef.current.naturalWidth>0){setMediaReady(true);}else if(mediaType===\"video\"&&videoRef.current&&videoRef.current.readyState>=2){setMediaReady(true);}},[mediaType,resolvedImageSrc,videoSrc]);// Force layout observation to ensure canvas matches container size exactly\nuseLayoutEffect(()=>{const resizeObserver=new ResizeObserver(()=>{setRetryTick(t=>t+1);});if(wrapperRef.current){resizeObserver.observe(wrapperRef.current);}return()=>resizeObserver.disconnect();},[]);// Scroll Observer\nuseEffect(()=>{if(trigger!==\"scroll\"||!wrapperRef.current)return;const observer=new IntersectionObserver(([entry])=>{if(entry.isIntersecting){if(!repeat&&hasTriggeredRef.current)return;setIsTriggered(true);hasTriggeredRef.current=true;}else{if(repeat){setIsTriggered(false);setStepIndex(0)// Resets the animation when it leaves the screen\n;}}},{// Positive margin triggers before it enters, negative triggers after it enters\nrootMargin:`0px 0px -${scrollThreshold}% 0px`});observer.observe(wrapperRef.current);return()=>observer.disconnect();},[trigger,scrollThreshold,repeat]);// Draw Media Helper (Replicates CSS Object-Fit)\nconst drawMediaToCanvas=(ctx,media,width,height)=>{const isVideo=media.tagName===\"VIDEO\";const mw=isVideo?media.videoWidth:media.naturalWidth;const mh=isVideo?media.videoHeight:media.naturalHeight;if(!mw||!mh)return false;let dx=0,dy=0,dw=width,dh=height;const ratio=mw/mh;const viewRatio=width/height;if(objectFit===\"cover\"){if(ratio>viewRatio){dw=height*ratio;dx=(width-dw)/2;}else{dh=width/ratio;dy=(height-dh)/2;}}else if(objectFit===\"contain\"){if(ratio>viewRatio){dh=width/ratio;dy=(height-dh)/2;}else{dw=height*ratio;dx=(width-dw)/2;}}try{ctx.drawImage(media,dx,dy,dw,dh);return true;}catch(e){return false;}};useEffect(()=>{if(!mediaReady)return;if(stepIndex>=steps.length)return;let isActive=true;let timer;const drawFrame=()=>{if(!isActive)return;const currentBlockSize=steps[stepIndex];if(currentBlockSize===0){return;}const container=containerRef.current;const canvas=canvasRef.current;const currentMedia=mediaType===\"video\"?videoRef.current:imageRef.current;if(!container||!canvas||!currentMedia){timer=setTimeout(()=>{if(isActive)setRetryTick(t=>t+1);},50);return;}const containerRect=container.getBoundingClientRect();const width=Math.ceil(containerRect.width);const height=Math.ceil(containerRect.height);if(width===0||height===0){timer=setTimeout(()=>{if(isActive)setRetryTick(t=>t+1);},50);return;}let actualLightColor=resolvedLightColor;if(resolvedLightColor&&resolvedLightColor.includes(\"var(\")){const tempDiv=document.createElement(\"div\");tempDiv.style.color=resolvedLightColor;tempDiv.style.display=\"none\";container.appendChild(tempDiv);actualLightColor=window.getComputedStyle(tempDiv).color;container.removeChild(tempDiv);}const dpr=window.devicePixelRatio||1;canvas.width=width*dpr;canvas.height=height*dpr;const ctx=canvas.getContext(\"2d\");if(!ctx)return;ctx.scale(dpr,dpr);// Setup offscreen canvas to extract colors\nconst offscreen=document.createElement(\"canvas\");offscreen.width=width;offscreen.height=height;const offCtx=offscreen.getContext(\"2d\",{willReadFrequently:true});if(!offCtx)return;const drawnSuccessfully=drawMediaToCanvas(offCtx,currentMedia,width,height);if(!drawnSuccessfully){timer=setTimeout(()=>{if(isActive)setRetryTick(t=>t+1);},50);return;}let imageData;// FIX: Gracefully handle CORS security errors to prevent silent crashing\ntry{imageData=offCtx.getImageData(0,0,width,height).data;}catch(error){console.warn(\"PixelReveal: Canvas blocked by CORS. Bypassing animation to show media.\",error);if(isActive)setStepIndex(steps.length-1);return;}ctx.clearRect(0,0,width,height);const blocks=[];for(let y=0;y<height;y+=currentBlockSize){for(let x=0;x<width;x+=currentBlockSize){let maxA=0;// Sample color from the center of the block\nlet sampleX=Math.min(x+Math.floor(currentBlockSize/2),width-1);let sampleY=Math.min(y+Math.floor(currentBlockSize/2),height-1);let sampleI=(sampleY*width+sampleX)*4;let blockR=imageData[sampleI];let blockG=imageData[sampleI+1];let blockB=imageData[sampleI+2];let blockAlphaRaw=imageData[sampleI+3];// Find max alpha to determine if block should be rendered\nfor(let by=0;by<currentBlockSize;by+=1){for(let bx=0;bx<currentBlockSize;bx+=1){const px=x+bx;const py=y+by;if(px<width&&py<height){const i=(py*width+px)*4;const a=imageData[i+3];if(a>maxA)maxA=a;}}}const densityThreshold=densityThresholds[stepIndex]??0;if(maxA>densityThreshold){blocks.push({x,y,r:blockR,g:blockG,b:blockB,a:blockAlphaRaw/255});}}}const dropRate=dropRates[stepIndex]??0;const lightChance=lightChances[stepIndex]??0;const keepCount=Math.ceil(blocks.length*(1-dropRate));for(let i=blocks.length-1;i>0;i--){const j=Math.floor(Math.random()*(i+1));[blocks[i],blocks[j]]=[blocks[j],blocks[i]];}const blocksToDraw=blocks.slice(0,keepCount);for(const block of blocksToDraw){const isLight=Math.random()<lightChance;if(isLight&&actualLightColor){ctx.fillStyle=actualLightColor;}else{ctx.fillStyle=`rgba(${block.r}, ${block.g}, ${block.b}, ${block.a})`;}ctx.fillRect(block.x,block.y,currentBlockSize,currentBlockSize);}timer=setTimeout(()=>{if(isActive&&isTriggered)setStepIndex(prev=>prev+1);},frameDuration);};if(stepIndex===0){requestAnimationFrame(()=>{requestAnimationFrame(()=>{drawFrame();});});}else{drawFrame();}return()=>{isActive=false;clearTimeout(timer);};},[stepIndex,mediaReady,mediaType,steps,frameDuration,densityThresholds,dropRates,lightChances,resolvedLightColor,retryTick,isTriggered,objectFit]);const isComplete=steps[stepIndex]===0;return /*#__PURE__*/_jsx(\"div\",{ref:wrapperRef,onMouseEnter:()=>{if(trigger===\"hover\"){if(!repeat&&hasTriggeredRef.current)return;setStepIndex(0)// Instantly turn into pixels\n;setIsTriggered(true);hasTriggeredRef.current=true;}},style:{display:\"flex\",width:\"100%\",height:\"100%\",...style},children:/*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\"},children:[mediaType===\"image\"?/*#__PURE__*/_jsx(\"img\",{ref:imageRef,src:resolvedImageSrc,srcSet:resolvedImageSrcSet,alt:resolvedImageAlt,crossOrigin:\"anonymous\",onLoad:()=>setMediaReady(true),style:{opacity:isComplete?1:0,width:\"100%\",height:\"100%\",objectFit:objectFit,display:\"block\"}}):/*#__PURE__*/_jsx(\"video\",{ref:videoRef,src:videoSrc,poster:thumbnail,autoPlay:autoplay,loop:loop,muted:muted,playsInline:true,crossOrigin:\"anonymous\",onLoadedData:()=>setMediaReady(true),style:{opacity:isComplete?1:0,width:\"100%\",height:\"100%\",objectFit:objectFit,display:\"block\"}}),/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{position:\"absolute\",top:0,left:0,right:0,bottom:0,pointerEvents:\"none\",width:\"100%\",height:\"100%\",opacity:isComplete?0:1}})]})});}PixelRevealMedia.defaultProps={mediaType:\"image\",imageSrc:\"https://images.unsplash.com/photo-1550684848-fac1c5b4e853?ixlib=rb-4.0.3&auto=format&fit=crop&w=1000&q=80\",videoSrc:\"\",thumbnail:\"\",autoplay:true,loop:true,muted:true,objectFit:\"cover\",lightColor:\"rgba(255, 255, 255, 0.8)\",frameDuration:150,stepsStr:\"64, 32, 16, 8, 4, 0\",densityStr:\"80, 45, 25, 10, 5, 0\",dropRatesStr:\"0.85, 0.65, 0.4, 0.15, 0.05, 0\",lightChancesStr:\"0.2, 0.1, 0.05, 0.02, 0.01, 0\",trigger:\"auto\",scrollThreshold:20,repeat:true};addPropertyControls(PixelRevealMedia,{mediaType:{type:ControlType.Enum,title:\"Media\",options:[\"image\",\"video\"],optionTitles:[\"Image\",\"Video\"],defaultValue:\"image\"},imageSrc:{type:ControlType.ResponsiveImage,title:\"Image\",hidden(props){return props.mediaType!==\"image\";}},videoSrc:{type:ControlType.File,title:\"Video File\",allowedFileTypes:[\"mp4\",\"webm\"],hidden(props){return props.mediaType!==\"video\";}},thumbnail:{type:ControlType.Image,title:\"Thumbnail\",hidden(props){return props.mediaType!==\"video\";}},autoplay:{type:ControlType.Boolean,title:\"Autoplay\",defaultValue:true,hidden(props){return props.mediaType!==\"video\";}},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:true,hidden(props){return props.mediaType!==\"video\";}},muted:{type:ControlType.Boolean,title:\"Muted\",defaultValue:true,hidden(props){return props.mediaType!==\"video\";}},objectFit:{type:ControlType.Enum,title:\"Object Fit\",options:[\"cover\",\"contain\",\"fill\"],optionTitles:[\"Cover\",\"Contain\",\"Fill\"],defaultValue:\"cover\"},trigger:{type:ControlType.Enum,title:\"Trigger\",options:[\"auto\",\"hover\",\"scroll\"],optionTitles:[\"Auto\",\"Hover\",\"Scroll\"],defaultValue:\"auto\",description:\"When should the reveal animation start?\"},repeat:{type:ControlType.Boolean,title:\"Repeat\",defaultValue:true,description:\"If true, the animation repeats on hover or when scrolling into view. If false, it plays only once.\",hidden(props){return props.trigger===\"auto\";}},scrollThreshold:{type:ControlType.Number,title:\"Scroll Trigger %\",description:\"Percentage from bottom of screen to trigger (e.g. 20 means 20% from bottom).\",defaultValue:20,min:0,max:100,hidden(props){return props.trigger!==\"scroll\";}},lightColor:{type:ControlType.Color,title:\"Flash Color\",description:\"An optional color used to randomly flash pixels during the animation.\",defaultValue:\"rgba(255, 255, 255, 0.8)\"},frameDuration:{type:ControlType.Number,title:\"Frame Duration\",description:\"The duration of each animation frame in milliseconds.\",defaultValue:150,min:50,max:1e3,step:10},stepsStr:{type:ControlType.String,title:\"Steps (px)\",description:\"Comma-separated list of pixel block sizes for each frame. End with 0 to reveal media.\",defaultValue:\"64, 32, 16, 8, 4, 0\"},densityStr:{type:ControlType.String,title:\"Density (0-255)\",description:\"Comma-separated list of alpha thresholds for detecting media in each frame.\",defaultValue:\"80, 45, 25, 10, 5, 0\"},dropRatesStr:{type:ControlType.String,title:\"Drop Rates (0-1)\",description:\"Comma-separated list of probabilities (0 to 1) to drop a pixel block in each frame.\",defaultValue:\"0.85, 0.65, 0.4, 0.15, 0.05, 0\"},lightChancesStr:{type:ControlType.String,title:\"Flash Chances\",description:\"Comma-separated list of probabilities (0 to 1) for a pixel to flash with the Flash Color.\",defaultValue:\"0.2, 0.1, 0.05, 0.02, 0.01, 0\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PixelRevealMedia\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Imagepixel.map","\"use client\";import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useLayoutEffect,useRef,useState,useMemo}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * PixelReveal\n * A custom Framer code component that reveals text through a pixelated animation.\n * 100% compatible with Framer, using inline styles and no external CSS dependencies.\n */export default function PixelRevealComp(props){const{text,subTextLeft,subTextRight,subTextColor,subTextFont,subTextGap,subTextPadding,textColor,lightColor,fullWidth,frameDuration,stepsStr,densityStr,dropRatesStr,lightChancesStr,trigger,scrollThreshold,repeat,style,htmlTag,alignment}=props;// Detect if we are on the Framer canvas\nconst isCanvas=RenderTarget.current()===RenderTarget.canvas;// Helper to parse comma-separated number strings\nconst parseNumArray=str=>{return str.split(\",\").map(s=>parseFloat(s.trim())).filter(n=>!isNaN(n));};const steps=useMemo(()=>parseNumArray(stepsStr),[stepsStr]);const densityThresholds=useMemo(()=>parseNumArray(densityStr),[densityStr]);const dropRates=useMemo(()=>parseNumArray(dropRatesStr),[dropRatesStr]);const lightChances=useMemo(()=>parseNumArray(lightChancesStr),[lightChancesStr]);// Handle Framer's CSS variable color tokens\nconst resolveColor=colorValue=>{if(colorValue&&colorValue.startsWith(\"var(\")){return colorValue;}return colorValue;};const resolvedTextColor=resolveColor(textColor);const resolvedLightColor=resolveColor(lightColor);const resolvedSubTextColor=resolveColor(subTextColor);// Changed to HTMLSpanElement to prevent nesting errors\nconst containerRef=useRef(null);const canvasRef=useRef(null);const subContainerRef=useRef(null);const subCanvasRef=useRef(null);const wrapperRef=useRef(null);const measureRef=useRef(null);const hasTriggeredRef=useRef(false);// If trigger is hover OR we are on the canvas, start at the end of the animation (normal text)\nconst initialStepsLength=parseNumArray(stepsStr).length;const[stepIndex,setStepIndex]=useState(isCanvas||trigger===\"hover\"?initialStepsLength-1:0);const[fontsLoaded,setFontsLoaded]=useState(false);const[retryTick,setRetryTick]=useState(0);const[prevDepsString,setPrevDepsString]=useState(\"\");const[fontStyles,setFontStyles]=useState({});const[calculatedFontSize,setCalculatedFontSize]=useState(props.font?.fontSize!==undefined?parseFloat(props.font.fontSize):100);// Trigger state\nconst[isTriggered,setIsTriggered]=useState(trigger===\"auto\");// Create a dependency string to detect when we need to restart the animation\nconst depsString=`${text}-${subTextLeft}-${subTextRight}-${fullWidth}-${stepsStr}-${frameDuration}-${densityStr}-${dropRatesStr}-${lightChancesStr}-${resolvedLightColor}-${resolvedTextColor}-${resolvedSubTextColor}-${JSON.stringify(props.font)}-${JSON.stringify(props.subTextFont)}-${trigger}-${alignment}`;// Derived state: reset stepIndex immediately when dependencies change\nif(depsString!==prevDepsString){setPrevDepsString(depsString);setStepIndex(isCanvas||trigger===\"hover\"?parseNumArray(stepsStr).length-1:0);setIsTriggered(trigger===\"auto\");hasTriggeredRef.current=false;}// Extract font styles from Framer's font control\nuseEffect(()=>{if(props.font){const newStyles={...props.font};const extractedFontSize=props.font.fontSize!==undefined?parseFloat(props.font.fontSize):100;setFontStyles(newStyles);if(!fullWidth){setCalculatedFontSize(extractedFontSize);}}else{setFontStyles({});if(!fullWidth){setCalculatedFontSize(100);}}},[props.font,fullWidth]);// Calculate font size for fullWidth.\n// Re-measure not only when the container changes, but also when the real\n// webfont finishes loading. This keeps Framer Preview/Published output\n// consistent with the Canvas, where the font is usually already cached.\nuseLayoutEffect(()=>{if(!fullWidth){return;}let lastContainerWidth=-1;let lastMeasureWidth=-1;let raf1=null;let raf2=null;const measureAndScale=()=>{if(!wrapperRef.current||!measureRef.current)return;const containerWidth=wrapperRef.current.getBoundingClientRect().width;const measureWidth=measureRef.current.getBoundingClientRect().width;// Recalculate when either the available width OR the measured text\n// width changes. Font loading can change measureWidth without\n// changing containerWidth.\nif(Math.abs(containerWidth-lastContainerWidth)<.5&&Math.abs(measureWidth-lastMeasureWidth)<.5){return;}lastContainerWidth=containerWidth;lastMeasureWidth=measureWidth;if(measureWidth>0&&containerWidth>0){const newFontSize=containerWidth/measureWidth*100;setCalculatedFontSize(newFontSize);}else{const fallbackFontSize=props.font?.fontSize!==undefined?parseFloat(props.font.fontSize):100;setCalculatedFontSize(fallbackFontSize);}};// Measure immediately, then once again after two paint frames. This\n// catches late font/layout updates in Preview and Published pages.\nmeasureAndScale();raf1=requestAnimationFrame(()=>{raf2=requestAnimationFrame(measureAndScale);});const resizeObserver=new ResizeObserver(()=>{measureAndScale();});if(wrapperRef.current){resizeObserver.observe(wrapperRef.current);}return()=>{resizeObserver.disconnect();if(raf1!==null)cancelAnimationFrame(raf1);if(raf2!==null)cancelAnimationFrame(raf2);};},[fullWidth,text,props.font,fontsLoaded,retryTick]);useEffect(()=>{let isMounted=true;const startAnimation=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(isMounted)setFontsLoaded(true);});});};document.fonts.ready.then(startAnimation);const handleFontsLoaded=()=>{if(isMounted){setRetryTick(t=>t+1);}};if(\"fonts\"in document){document.fonts.addEventListener(\"loadingdone\",handleFontsLoaded);}const fallback=setTimeout(startAnimation,500);return()=>{isMounted=false;clearTimeout(fallback);if(\"fonts\"in document){document.fonts.removeEventListener(\"loadingdone\",handleFontsLoaded);}};},[]);// Scroll Observer\nuseEffect(()=>{if(isCanvas||trigger!==\"scroll\"||!wrapperRef.current)return;const observer=new IntersectionObserver(([entry])=>{if(entry.isIntersecting){if(!repeat&&hasTriggeredRef.current)return;setIsTriggered(true);hasTriggeredRef.current=true;}else{if(repeat){setIsTriggered(false);setStepIndex(0)// Resets the animation when it leaves the screen\n;}}},{// Positive margin triggers before it enters, negative triggers after it enters\nrootMargin:`0px 0px -${scrollThreshold}% 0px`});observer.observe(wrapperRef.current);return()=>observer.disconnect();},[isCanvas,trigger,scrollThreshold,repeat]);useEffect(()=>{if(isCanvas)return;// Prevent canvas drawing loop when in Framer editor\nif(!fontsLoaded)return;if(stepIndex>=steps.length)return;let isActive=true;let timer;const resolveComputedColor=(container,colorValue)=>{if(!colorValue||!colorValue.includes(\"var(\"))return colorValue;const tempSpan=document.createElement(\"span\");tempSpan.style.color=colorValue;tempSpan.style.display=\"none\";container.appendChild(tempSpan);const resolved=window.getComputedStyle(tempSpan).color;container.removeChild(tempSpan);return resolved;};const drawPixelLayer=(container,canvas,fallbackColor)=>{// Empty subtext is allowed, so simply skip that layer.\nif(!container||!canvas)return true;const containerRect=container.getBoundingClientRect();const width=Math.ceil(containerRect.width);const height=Math.ceil(containerRect.height);if(width===0||height===0)return false;const computedStyle=window.getComputedStyle(container);const actualTextColor=computedStyle.color||resolveComputedColor(container,fallbackColor);const actualLightColor=resolveComputedColor(container,resolvedLightColor);const currentBlockSize=steps[stepIndex];if(currentBlockSize===0)return true;const dpr=window.devicePixelRatio||1;canvas.width=width*dpr;canvas.height=height*dpr;const ctx=canvas.getContext(\"2d\");if(!ctx)return true;ctx.scale(dpr,dpr);const offscreen=document.createElement(\"canvas\");offscreen.width=width;offscreen.height=height;const offCtx=offscreen.getContext(\"2d\",{willReadFrequently:true});if(!offCtx)return true;offCtx.font=`${computedStyle.fontWeight} ${computedStyle.fontSize} ${computedStyle.fontFamily}`;offCtx.fillStyle=actualTextColor;offCtx.textBaseline=\"middle\";offCtx.textAlign=\"center\";const spans=container.querySelectorAll(\".char-span\");spans.forEach(span=>{const rect=span.getBoundingClientRect();const spanStyle=window.getComputedStyle(span);// Each layer may have a different font (headline vs subtext),\n// so draw using the actual computed style of the character.\noffCtx.font=`${spanStyle.fontWeight} ${spanStyle.fontSize} ${spanStyle.fontFamily}`;offCtx.fillStyle=spanStyle.color||actualTextColor;const x=rect.left-containerRect.left+rect.width/2;const y=rect.top-containerRect.top+rect.height/2;offCtx.fillText(span.textContent||\"\",x,y);});const imageData=offCtx.getImageData(0,0,width,height).data;ctx.clearRect(0,0,width,height);const blocks=[];for(let y=0;y<height;y+=currentBlockSize){for(let x=0;x<width;x+=currentBlockSize){let maxA=0;for(let by=0;by<currentBlockSize;by+=1){for(let bx=0;bx<currentBlockSize;bx+=1){const px=x+bx;const py=y+by;if(px<width&&py<height){const i=(py*width+px)*4;const a=imageData[i+3];if(a>maxA)maxA=a;}}}const densityThreshold=densityThresholds[stepIndex]??0;if(maxA>densityThreshold)blocks.push({x,y});}}const dropRate=dropRates[stepIndex]??0;const lightChance=lightChances[stepIndex]??0;const keepCount=Math.ceil(blocks.length*(1-dropRate));for(let i=blocks.length-1;i>0;i--){const j=Math.floor(Math.random()*(i+1));[blocks[i],blocks[j]]=[blocks[j],blocks[i]];}for(const block of blocks.slice(0,keepCount)){const isLight=Math.random()<lightChance;ctx.fillStyle=isLight?actualLightColor:actualTextColor;ctx.fillRect(block.x,block.y,currentBlockSize,currentBlockSize);}return true;};const drawFrame=()=>{if(!isActive)return;const currentBlockSize=steps[stepIndex];if(currentBlockSize===0)return;const mainReady=drawPixelLayer(containerRef.current,canvasRef.current,resolvedTextColor);const hasSubtext=Boolean(subTextLeft||subTextRight);const subReady=hasSubtext?drawPixelLayer(subContainerRef.current,subCanvasRef.current,resolvedSubTextColor):true;if(!mainReady||!subReady){timer=setTimeout(()=>{if(isActive)setRetryTick(t=>t+1);},50);return;}// One shared step index means headline + both subtexts reveal\n// in perfect sync with exactly the same pixel timing.\ntimer=setTimeout(()=>{if(isActive&&isTriggered)setStepIndex(prev=>prev+1);},frameDuration);};if(stepIndex===0){requestAnimationFrame(()=>{requestAnimationFrame(()=>{drawFrame();});});}else{drawFrame();}return()=>{isActive=false;clearTimeout(timer);};},[isCanvas,stepIndex,fontsLoaded,text,subTextLeft,subTextRight,steps,frameDuration,densityThresholds,dropRates,lightChances,resolvedLightColor,resolvedTextColor,resolvedSubTextColor,retryTick,fullWidth,calculatedFontSize,isTriggered,props.font,props.subTextFont]);// Force complete state if on canvas\nconst isComplete=isCanvas?true:steps[stepIndex]===0;const textAlign=alignment||props.font?.textAlign||\"center\";// FIX: Cast as 'any' to bypass TS union complexity limits\nconst Tag=htmlTag;return /*#__PURE__*/_jsxs(Tag,{ref:wrapperRef,onMouseEnter:()=>{if(isCanvas)return;if(trigger===\"hover\"){if(!repeat&&hasTriggeredRef.current)return;setStepIndex(0)// Instantly turn into pixels\n;setIsTriggered(true);hasTriggeredRef.current=true;}},style:{display:\"flex\",flexDirection:\"column\",alignItems:\"stretch\",justifyContent:\"flex-start\",margin:0,overflow:\"visible\",...style,...fullWidth?{width:\"100%\",height:\"auto\",minHeight:\"auto\"}:{}},children:[fullWidth&&/*#__PURE__*/_jsx(\"span\",{ref:measureRef,style:{position:\"absolute\",visibility:\"hidden\",whiteSpace:\"pre\",pointerEvents:\"none\",top:-9999,left:-9999,...fontStyles,fontSize:\"100px\"},children:text}),/*#__PURE__*/_jsxs(\"span\",{ref:containerRef,style:{position:\"relative\",display:\"flex\",alignItems:\"center\",width:fullWidth?\"100%\":\"auto\",height:fullWidth?`${calculatedFontSize}px`:\"auto\",color:resolvedTextColor,...fontStyles,fontSize:`${calculatedFontSize}px`,textAlign},children:[/*#__PURE__*/_jsx(\"span\",{style:{opacity:isComplete?1:0,whiteSpace:fullWidth?\"pre\":\"pre-wrap\",wordBreak:\"break-word\",display:\"block\",width:\"100%\",textAlign},children:text.split(\"\").map((char,i)=>/*#__PURE__*/_jsx(\"span\",{className:\"char-span\",children:char},i))}),/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{position:\"absolute\",top:0,left:0,right:0,bottom:0,pointerEvents:\"none\",width:\"100%\",height:\"100%\",opacity:isComplete?0:1}})]}),(subTextLeft||subTextRight)&&/*#__PURE__*/_jsxs(\"span\",{ref:subContainerRef,style:{position:\"relative\",display:\"flex\",width:\"100%\",alignItems:\"center\",justifyContent:\"space-between\",boxSizing:\"border-box\",marginTop:`${subTextGap}px`,paddingLeft:`${subTextPadding}px`,paddingRight:`${subTextPadding}px`,color:resolvedSubTextColor,...subTextFont},children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",textAlign:\"left\",whiteSpace:\"pre-wrap\",opacity:isComplete?1:0},children:subTextLeft.split(\"\").map((char,i)=>/*#__PURE__*/_jsx(\"span\",{className:\"char-span\",children:char},`left-${i}`))}),/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",textAlign:\"right\",whiteSpace:\"pre-wrap\",opacity:isComplete?1:0},children:subTextRight.split(\"\").map((char,i)=>/*#__PURE__*/_jsx(\"span\",{className:\"char-span\",children:char},`right-${i}`))}),/*#__PURE__*/_jsx(\"canvas\",{ref:subCanvasRef,style:{position:\"absolute\",top:0,left:0,right:0,bottom:0,pointerEvents:\"none\",width:\"100%\",height:\"100%\",opacity:isComplete?0:1}})]})]});}PixelRevealComp.defaultProps={text:\"INTERSECTING CULTURE & TECHNOLOGY AROUND THE WORLD\",subTextLeft:\"\",subTextRight:\"\",subTextColor:\"#1a1a1a\",subTextGap:8,subTextPadding:0,textColor:\"#1a1a1a\",lightColor:\"#a3a3a3\",fullWidth:false,frameDuration:200,stepsStr:\"64, 32, 16, 8, 0\",densityStr:\"80, 45, 25, 10, 0\",dropRatesStr:\"0.85, 0.65, 0.4, 0.15, 0\",lightChancesStr:\"0.3, 0.2, 0.1, 0.05, 0\",trigger:\"auto\",scrollThreshold:20,repeat:true,htmlTag:\"div\",alignment:\"center\"};addPropertyControls(PixelRevealComp,{htmlTag:{type:ControlType.Enum,title:\"HTML Tag\",options:[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"p\",\"div\",\"span\"],optionTitles:[\"H1\",\"H2\",\"H3\",\"H4\",\"H5\",\"H6\",\"P\",\"Div\",\"Span\"],defaultValue:\"div\",description:\"Select the semantic HTML tag for SEO and accessibility.\"},trigger:{type:ControlType.Enum,title:\"Trigger\",options:[\"auto\",\"hover\",\"scroll\"],optionTitles:[\"Auto\",\"Hover\",\"Scroll\"],defaultValue:\"auto\",description:\"When should the reveal animation start?\"},repeat:{type:ControlType.Boolean,title:\"Repeat\",defaultValue:true,description:\"If true, the animation repeats on hover or when scrolling into view. If false, it plays only once.\",hidden(props){return props.trigger===\"auto\";}},scrollThreshold:{type:ControlType.Number,title:\"Scroll Trigger %\",description:\"Percentage from bottom of screen to trigger (e.g. 20 means 20% from bottom).\",defaultValue:20,min:0,max:100,hidden(props){return props.trigger!==\"scroll\";}},text:{type:ControlType.String,title:\"Text\",description:\"The text to reveal with the pixelation effect.\",defaultValue:\"INTERSECTING CULTURE & TECHNOLOGY AROUND THE WORLD\",displayTextArea:true},alignment:{type:ControlType.Enum,title:\"Alignment\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"center\",description:\"Align the revealed text within the component.\"},subTextLeft:{type:ControlType.String,title:\"Subtext Left\",defaultValue:\"\",placeholder:\"Left subtext\"},subTextRight:{type:ControlType.String,title:\"Subtext Right\",defaultValue:\"\",placeholder:\"Right subtext\"},subTextFont:{type:ControlType.Font,title:\"Subtext Font\",controls:\"extended\",defaultValue:{fontSize:16,fontWeight:500,lineHeight:1.1,letterSpacing:0}},subTextColor:{type:ControlType.Color,title:\"Subtext Color\",defaultValue:\"#1a1a1a\"},subTextGap:{type:ControlType.Number,title:\"Subtext Gap\",defaultValue:8,min:0,max:120,step:1,unit:\"px\"},subTextPadding:{type:ControlType.Number,title:\"Subtext Inset\",defaultValue:0,min:0,max:200,step:1,unit:\"px\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultValue:{fontSize:100,fontWeight:700,lineHeight:.85,letterSpacing:-.04,textAlign:\"center\"}},textColor:{type:ControlType.Color,title:\"Text Color\",description:\"The primary color of the text and the dark pixels.\",defaultValue:\"#1a1a1a\"},lightColor:{type:ControlType.Color,title:\"Light Color\",description:\"The color of the highlighted/light pixels during the animation.\",defaultValue:\"#a3a3a3\"},fullWidth:{type:ControlType.Boolean,title:\"Full Width\",description:\"Scale the text to fit the entire width of the container.\",defaultValue:false},frameDuration:{type:ControlType.Number,title:\"Frame Duration\",description:\"The duration of each animation frame in milliseconds.\",defaultValue:200,min:50,max:1e3,step:10},stepsStr:{type:ControlType.String,title:\"Steps (px)\",description:\"Comma-separated list of pixel block sizes for each frame. End with 0 to reveal text.\",defaultValue:\"64, 32, 16, 8, 0\"},densityStr:{type:ControlType.String,title:\"Density (0-255)\",description:\"Comma-separated list of alpha thresholds for detecting text in each frame.\",defaultValue:\"80, 45, 25, 10, 0\"},dropRatesStr:{type:ControlType.String,title:\"Drop Rates (0-1)\",description:\"Comma-separated list of probabilities (0 to 1) to drop a pixel block in each frame.\",defaultValue:\"0.85, 0.65, 0.4, 0.15, 0\"},lightChancesStr:{type:ControlType.String,title:\"Light Chances\",description:\"Comma-separated list of probabilities (0 to 1) for a pixel to be the Light Color.\",defaultValue:\"0.3, 0.2, 0.1, 0.05, 0\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PixelRevealComp\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FramerPixelReveal.map"],"mappings":"qOAGG,SAAwB,EAAiB,EAAM,CAAC,IAAM,EAAS,EAAoB,EAAO,CAAC,YAAU,WAAS,WAAS,YAAU,WAAS,OAAK,QAAM,YAAU,aAAW,gBAAc,WAAS,aAAW,eAAa,kBAAgB,UAAQ,kBAAgB,SAAO,UAAO,EAC5Q,EAAiB,OAAO,GAAW,UAAU,EAAgB,EAAS,IAAI,EAAe,EAAoB,OAAO,GAAW,UAAU,EAAgB,EAAS,OAAO,IAAA,GAAgB,EAAiB,OAAO,GAAW,UAAU,GAAiB,EAAS,IAAI,EAAS,IAAI,qBAKvR,GAAG,EAAS,CAAC,IAAM,EAAI,IAAY,QAAQ,EAAiB,GAAW,EAAS,OAAoB,EAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,OAAO,MAAM,OAAO,OAAO,OAAO,GAAG,EAAK,EAAE,SAAsB,EAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,MAAM,OAAO,OAAO,OAAO,SAAS,QAAQ,EAAE,SAAsB,EAAK,MAAM,CAAK,MAAI,OAAO,IAAY,QAAQ,EAAoB,IAAA,GAAU,IAAI,IAAY,QAAQ,EAAiB,qBAAqB,MAAM,CAAC,MAAM,OAAO,OAAO,OAAiB,YAAU,QAAQ,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAEpgB,IAAM,EAAc,GAAa,EAAI,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAU,EAAMA,MAAY,EAAc,CAAQ,EAAE,CAAC,CAAQ,CAAC,EAAQ,EAAkBA,MAAY,EAAc,CAAU,EAAE,CAAC,CAAU,CAAC,EAAQ,EAAUA,MAAY,EAAc,CAAY,EAAE,CAAC,CAAY,CAAC,EAAQ,EAAaA,MAAY,EAAc,CAAe,EAAE,CAAC,CAAe,CAAC,EACxQ,GAAxG,IAAgB,GAAY,EAAW,WAAW,MAAM,EAAU,GAAyD,CAAa,CAAU,EAAQ,EAAaC,EAAO,IAAI,EAAQ,EAAUA,EAAO,IAAI,EAAQ,EAAWA,EAAO,IAAI,EAAQ,EAASA,EAAO,IAAI,EAAQ,EAASA,EAAO,IAAI,EAAQ,EAAgBA,EAAO,EAAK,EACtV,GAAmB,EAAc,CAAQ,CAAC,CAAC,OAAY,CAAC,EAAU,GAAcC,EAAS,IAAU,QAAQ,GAAmB,EAAE,CAAC,EAAO,CAAC,EAAW,GAAeA,EAAS,EAAK,EAAO,CAAC,EAAU,GAAcA,EAAS,CAAC,EAAO,CAAC,EAAe,IAAmBA,EAAS,EAAE,EACjR,CAAC,EAAY,GAAgBA,EAAS,IAAU,MAAM,EACrD,GAAW,GAAG,EAAU,GAAG,EAAiB,GAAG,EAAS,GAAG,EAAS,GAAG,EAAc,GAAG,EAAW,GAAG,EAAa,GAAG,EAAgB,GAAG,EAAmB,GAAG,EAAQ,GAAG,IAC7K,KAAa,IAAgB,GAAkB,EAAU,EAAE,EAAa,IAAU,QAAQ,EAAc,CAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAe,IAAU,MAAM,EAAE,EAAgB,QAAQ,IAC1L,MAAc,EAAI,IAAY,SAAS,EAAS,SAAS,UAAU,EAAS,QAAQ,aAAa,GAAgC,IAAY,SAAS,EAAS,SAAS,EAAS,QAAQ,YAAY,IAAjG,EAAc,EAAI,CAAuG,EAAE,CAAC,EAAU,EAAiB,CAAQ,CAAC,EACpQ,MAAoB,CAAC,IAAM,EAAe,IAAI,mBAAmB,CAAC,EAAa,GAAG,EAAE,CAAC,CAAE,CAAC,EAAqE,OAAhE,EAAW,SAAS,EAAe,QAAQ,EAAW,OAAO,MAAa,EAAe,WAAW,CAAE,EAAE,CAAC,CAAC,EACvM,MAAc,CAAC,GAAG,IAAU,UAAU,CAAC,EAAW,QAAQ,OAAO,IAAM,EAAS,IAAI,sBAAsB,CAAC,KAAS,CAAC,GAAG,EAAM,eAAe,CAAC,GAAG,CAAC,GAAQ,EAAgB,QAAQ,OAAO,EAAe,EAAI,EAAE,EAAgB,QAAQ,EAAK,MAAS,IAAQ,EAAe,EAAK,EAAE,EAAa,CAAC,EAC7R,EAAE,CACL,WAAW,YAAY,EAAgB,MAAM,CAAC,EAAuC,OAArC,EAAS,QAAQ,EAAW,OAAO,MAAY,EAAS,WAAW,CAAE,EAAE,CAAC,EAAQ,EAAgB,CAAM,CAAC,EACvJ,IAAM,IAAmB,EAAI,EAAM,EAAM,IAAS,CAAC,IAAM,EAAQ,EAAM,UAAU,QAAc,EAAG,EAAQ,EAAM,WAAW,EAAM,aAAmB,EAAG,EAAQ,EAAM,YAAY,EAAM,cAAc,GAAG,CAAC,GAAI,CAAC,EAAG,MAAO,GAAM,IAAI,EAAG,EAAE,EAAG,EAAE,EAAG,EAAM,EAAG,EAAa,EAAM,EAAG,EAAS,EAAU,EAAM,EAAU,IAAY,QAAY,EAAM,GAAW,EAAG,EAAO,EAAM,GAAI,EAAM,GAAI,IAAQ,EAAG,EAAM,EAAM,GAAI,EAAO,GAAI,GAAY,IAAY,YAAc,EAAM,GAAW,EAAG,EAAM,EAAM,GAAI,EAAO,GAAI,IAAQ,EAAG,EAAO,EAAM,GAAI,EAAM,GAAI,IAAI,GAAG,CAAkC,OAAjC,EAAI,UAAU,EAAM,EAAG,EAAG,EAAG,CAAE,EAAS,EAAK,MAAS,CAAC,MAAO,EAAM,CAAC,EAAE,MAAc,CAAuB,GAAnB,CAAC,GAAqB,GAAW,EAAM,OAAO,OAAO,IAAI,EAAS,GAAS,EAAY,MAAc,CAAC,GAAG,CAAC,EAAS,OAAO,IAAM,EAAiB,EAAM,GAAW,GAAG,IAAmB,EAAG,OAAQ,IAAM,EAAU,EAAa,QAAc,EAAO,EAAU,QAAc,EAAa,IAAY,QAAQ,EAAS,QAAQ,EAAS,QAAQ,GAAG,CAAC,GAAW,CAAC,GAAQ,CAAC,EAAa,CAAC,EAAM,eAAe,CAAI,GAAS,EAAa,GAAG,EAAE,CAAC,CAAE,EAAE,EAAE,EAAE,MAAO,CAAC,IAAM,EAAc,EAAU,sBAAsB,EAAQ,EAAM,KAAK,KAAK,EAAc,KAAK,EAAQ,EAAO,KAAK,KAAK,EAAc,MAAM,EAAE,GAAG,IAAQ,GAAG,IAAS,EAAE,CAAC,EAAM,eAAe,CAAI,GAAS,EAAa,GAAG,EAAE,CAAC,CAAE,EAAE,EAAE,EAAE,MAAO,CAAC,IAAI,EAAiB,EAAmB,GAAG,GAAoB,EAAmB,SAAS,MAAM,EAAE,CAAC,IAAM,EAAQ,SAAS,cAAc,KAAK,EAAE,EAAQ,MAAM,MAAM,EAAmB,EAAQ,MAAM,QAAQ,OAAO,EAAU,YAAY,CAAO,EAAE,EAAiB,EAAO,iBAAiB,CAAO,CAAC,CAAC,MAAM,EAAU,YAAY,CAAO,CAAE,CAAC,IAAM,EAAI,EAAO,kBAAkB,EAAE,EAAO,MAAM,EAAM,EAAI,EAAO,OAAO,EAAO,EAAI,IAAM,EAAI,EAAO,WAAW,IAAI,EAAE,GAAG,CAAC,EAAI,OAAO,EAAI,MAAM,EAAI,CAAG,EACrwD,IAAM,EAAU,SAAS,cAAc,QAAQ,EAAE,EAAU,MAAM,EAAM,EAAU,OAAO,EAAO,IAAM,EAAO,EAAU,WAAW,KAAK,CAAC,mBAAmB,EAAI,CAAC,EAAE,GAAG,CAAC,EAAO,OAAmF,GAAG,CAAvD,GAAkB,EAAO,EAAa,EAAM,CAA4B,EAAE,CAAC,EAAM,eAAe,CAAI,GAAS,EAAa,GAAG,EAAE,CAAC,CAAE,EAAE,EAAE,EAAE,MAAO,CAAC,IAAI,EAC/V,GAAG,CAAC,EAAU,EAAO,aAAa,EAAE,EAAE,EAAM,CAAM,CAAC,CAAC,IAAK,OAAO,EAAM,CAAC,QAAQ,KAAK,0EAA0E,CAAK,EAAK,GAAS,EAAa,EAAM,OAAO,CAAC,EAAE,MAAO,CAAC,EAAI,UAAU,EAAE,EAAE,EAAM,CAAM,EAAE,IAAM,EAAO,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAO,GAAG,EAAkB,IAAI,IAAI,EAAE,EAAE,EAAE,EAAM,GAAG,EAAiB,CAAC,IAAI,EAAK,EAC9V,EAAQ,KAAK,IAAI,EAAE,KAAK,MAAM,EAAiB,CAAC,EAAE,EAAM,CAAC,EAAsE,GAAxD,KAAK,IAAI,EAAE,KAAK,MAAM,EAAiB,CAAC,EAAE,EAAO,CAAsB,EAAE,EAAM,GAAS,EAAM,EAAO,EAAU,GAAa,EAAO,EAAU,EAAQ,GAAO,EAAO,EAAU,EAAQ,GAAO,EAAc,EAAU,EAAQ,GACvS,IAAI,IAAI,EAAG,EAAE,EAAG,EAAiB,GAAI,EAAG,IAAI,IAAI,EAAG,EAAE,EAAG,EAAiB,GAAI,EAAE,CAAC,IAAM,EAAG,EAAE,EAAS,EAAG,EAAE,EAAG,GAAG,EAAG,GAAO,EAAG,EAAO,CAAC,IAAM,GAAG,EAAG,EAAM,GAAI,EAAQ,EAAE,EAAU,EAAE,GAAM,EAAE,IAAK,EAAK,EAAE,CAAC,CAAE,IAAM,EAAiB,EAAkB,IAAY,EAAK,EAAK,GAAkB,EAAO,KAAK,CAAC,IAAE,IAAE,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAc,GAAG,CAAC,CAAG,CAAE,IAAM,EAAS,EAAU,IAAY,EAAQ,EAAY,EAAa,IAAY,EAAQ,EAAU,KAAK,KAAK,EAAO,QAAQ,EAAE,EAAS,EAAE,IAAI,IAAI,EAAE,EAAO,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,IAAM,EAAE,KAAK,MAAM,KAAK,OAAO,GAAG,EAAE,EAAE,EAAE,CAAC,EAAO,GAAG,EAAO,IAAI,CAAC,EAAO,GAAG,EAAO,EAAE,CAAE,CAAC,IAAM,EAAa,EAAO,MAAM,EAAE,CAAS,EAAE,IAAI,IAAM,KAAS,EAA4B,KAAK,OAAO,EAAE,GAAwB,EAAkB,EAAI,UAAU,EAAuB,EAAI,UAAU,QAAQ,EAAM,EAAE,IAAI,EAAM,EAAE,IAAI,EAAM,EAAE,IAAI,EAAM,EAAE,GAAI,EAAI,SAAS,EAAM,EAAE,EAAM,EAAE,EAAiB,CAAgB,EAAG,EAAM,eAAe,CAAI,GAAU,GAAY,EAAa,GAAM,EAAK,CAAC,CAAE,EAAE,CAAa,CAAE,EAA+G,OAA1G,IAAY,EAAG,0BAA0B,CAAC,0BAA0B,CAAC,EAAU,CAAE,CAAC,CAAE,CAAC,EAAQ,EAAU,MAAa,CAAC,EAAS,GAAM,aAAa,CAAK,CAAE,CAAE,EAAE,CAAC,EAAU,EAAW,EAAU,EAAM,EAAc,EAAkB,EAAU,EAAa,EAAmB,EAAU,EAAY,CAAS,CAAC,EAAE,IAAM,EAAW,EAAM,KAAa,EAAE,OAAoB,EAAK,MAAM,CAAC,IAAI,EAAW,iBAAiB,CAAC,GAAG,IAAU,QAAQ,CAAC,GAAG,CAAC,GAAQ,EAAgB,QAAQ,OAAO,EAAa,CAAC,EACl+C,EAAe,EAAI,EAAE,EAAgB,QAAQ,EAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,OAAO,MAAM,OAAO,OAAO,OAAO,GAAG,EAAK,EAAE,SAAsB,EAAM,MAAM,CAAC,IAAI,EAAa,MAAM,CAAC,SAAS,WAAW,MAAM,OAAO,OAAO,OAAO,SAAS,QAAQ,EAAE,SAAS,CAAC,IAAY,QAAqB,EAAK,MAAM,CAAC,IAAI,EAAS,IAAI,EAAiB,OAAO,EAAoB,IAAI,EAAiB,YAAY,YAAY,WAAW,EAAc,EAAI,EAAE,MAAM,CAAC,QAAQ,KAAe,MAAM,OAAO,OAAO,OAAiB,YAAU,QAAQ,OAAO,CAAC,CAAC,EAAe,EAAK,QAAQ,CAAC,IAAI,EAAS,IAAI,EAAS,OAAO,EAAU,SAAS,EAAc,OAAW,QAAM,YAAY,GAAK,YAAY,YAAY,iBAAiB,EAAc,EAAI,EAAE,MAAM,CAAC,QAAQ,KAAe,MAAM,OAAO,OAAO,OAAiB,YAAU,QAAQ,OAAO,CAAC,CAAC,EAAe,EAAK,SAAS,CAAC,IAAI,EAAU,MAAM,CAAC,SAAS,WAAW,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,OAAO,MAAM,OAAO,OAAO,OAAO,QAAQ,GAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,qBA3Bv5B,IAAqE,IAAwE,EA2B2wB,EAAiB,aAAa,CAAC,UAAU,QAAQ,SAAS,4GAA4G,SAAS,GAAG,UAAU,GAAG,SAAS,GAAK,KAAK,GAAK,MAAM,GAAK,UAAU,QAAQ,WAAW,2BAA2B,cAAc,IAAI,SAAS,sBAAsB,WAAW,uBAAuB,aAAa,iCAAiC,gBAAgB,gCAAgC,QAAQ,OAAO,gBAAgB,GAAG,OAAO,EAAI,EAAE,EAAoB,EAAiB,CAAC,UAAU,CAAC,KAAK,EAAY,KAAK,MAAM,QAAQ,QAAQ,CAAC,QAAQ,OAAO,EAAE,aAAa,CAAC,QAAQ,OAAO,EAAE,aAAa,OAAO,EAAE,SAAS,CAAC,KAAK,EAAY,gBAAgB,MAAM,QAAQ,OAAO,EAAM,CAAC,OAAO,EAAM,YAAY,OAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,EAAY,KAAK,MAAM,aAAa,iBAAiB,CAAC,MAAM,MAAM,EAAE,OAAO,EAAM,CAAC,OAAO,EAAM,YAAY,OAAQ,CAAC,EAAE,UAAU,CAAC,KAAK,EAAY,MAAM,MAAM,YAAY,OAAO,EAAM,CAAC,OAAO,EAAM,YAAY,OAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,EAAY,QAAQ,MAAM,WAAW,aAAa,GAAK,OAAO,EAAM,CAAC,OAAO,EAAM,YAAY,OAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,EAAY,QAAQ,MAAM,OAAO,aAAa,GAAK,OAAO,EAAM,CAAC,OAAO,EAAM,YAAY,OAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,EAAY,QAAQ,MAAM,QAAQ,aAAa,GAAK,OAAO,EAAM,CAAC,OAAO,EAAM,YAAY,OAAQ,CAAC,EAAE,UAAU,CAAC,KAAK,EAAY,KAAK,MAAM,aAAa,QAAQ,CAAC,QAAQ,UAAU,MAAM,EAAE,aAAa,CAAC,QAAQ,UAAU,MAAM,EAAE,aAAa,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAY,KAAK,MAAM,UAAU,QAAQ,CAAC,OAAO,QAAQ,QAAQ,EAAE,aAAa,CAAC,OAAO,QAAQ,QAAQ,EAAE,aAAa,OAAO,YAAY,yCAAyC,EAAE,OAAO,CAAC,KAAK,EAAY,QAAQ,MAAM,SAAS,aAAa,GAAK,YAAY,qGAAqG,OAAO,EAAM,CAAC,OAAO,EAAM,UAAU,MAAO,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAY,OAAO,MAAM,mBAAmB,YAAY,+EAA+E,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,OAAO,EAAM,CAAC,OAAO,EAAM,UAAU,QAAS,CAAC,EAAE,WAAW,CAAC,KAAK,EAAY,MAAM,MAAM,cAAc,YAAY,wEAAwE,aAAa,0BAA0B,EAAE,cAAc,CAAC,KAAK,EAAY,OAAO,MAAM,iBAAiB,YAAY,wDAAwD,aAAa,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,YAAY,wFAAwF,aAAa,qBAAqB,EAAE,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,kBAAkB,YAAY,8EAA8E,aAAa,sBAAsB,EAAE,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,mBAAmB,YAAY,sFAAsF,aAAa,gCAAgC,EAAE,gBAAgB,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,YAAY,4FAA4F,aAAa,+BAA+B,CAAC,CAAC,KCvB1sI,SAAwB,EAAgB,EAAM,CAAC,GAAK,CAAC,OAAK,cAAY,eAAa,eAAa,cAAY,aAAW,iBAAe,YAAU,aAAW,YAAU,gBAAc,WAAS,aAAW,eAAa,kBAAgB,UAAQ,kBAAgB,SAAO,SAAM,UAAQ,aAAW,EACzR,EAAS,EAAa,QAAQ,IAAI,EAAa,OAC/C,EAAc,GAAa,EAAI,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAU,EAAMC,MAAY,EAAc,CAAQ,EAAE,CAAC,CAAQ,CAAC,EAAQ,EAAkBA,MAAY,EAAc,CAAU,EAAE,CAAC,CAAU,CAAC,EAAQ,EAAUA,MAAY,EAAc,CAAY,EAAE,CAAC,CAAY,CAAC,EAAQ,EAAaA,MAAY,EAAc,CAAe,EAAE,CAAC,CAAe,CAAC,EAC7X,EAAa,IAAgB,GAAY,EAAW,WAAW,MAAM,EAAU,GAAsC,EAAkB,EAAa,CAAS,EAAQ,EAAmB,EAAa,CAAU,EAAQ,EAAqB,EAAa,CAAY,EACrQ,EAAaC,EAAO,IAAI,EAAQ,EAAUA,EAAO,IAAI,EAAQ,EAAgBA,EAAO,IAAI,EAAQ,GAAaA,EAAO,IAAI,EAAQ,EAAWA,EAAO,IAAI,EAAQ,EAAWA,EAAO,IAAI,EAAQ,EAAgBA,EAAO,EAAK,EACxN,EAAmB,EAAc,CAAQ,CAAC,CAAC,OAAY,CAAC,EAAU,GAAcC,EAAS,GAAU,IAAU,QAAQ,EAAmB,EAAE,CAAC,EAAO,CAAC,EAAY,IAAgBA,EAAS,EAAK,EAAO,CAAC,EAAU,GAAcA,EAAS,CAAC,EAAO,CAAC,GAAe,IAAmBA,EAAS,EAAE,EAAO,CAAC,EAAW,IAAeA,EAAS,CAAC,CAAC,EAAO,CAAC,GAAmB,IAAuBA,EAAS,EAAM,MAAM,WAAW,IAAA,GAA0C,IAAhC,WAAW,EAAM,KAAK,QAAQ,CAAK,EACzc,CAAC,GAAY,IAAgBA,EAAS,IAAU,MAAM,EACrD,GAAW,GAAG,EAAK,GAAG,EAAY,GAAG,EAAa,GAAG,EAAU,GAAG,EAAS,GAAG,EAAc,GAAG,EAAW,GAAG,EAAa,GAAG,EAAgB,GAAG,EAAmB,GAAG,EAAkB,GAAG,EAAqB,GAAG,KAAK,UAAU,EAAM,IAAI,EAAE,GAAG,KAAK,UAAU,EAAM,WAAW,EAAE,GAAG,EAAQ,GAAG,IACpS,KAAa,KAAgB,GAAkB,EAAU,EAAE,EAAa,GAAU,IAAU,QAAQ,EAAc,CAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,GAAe,IAAU,MAAM,EAAE,EAAgB,QAAQ,IACpM,MAAc,CAAC,GAAG,EAAM,KAAK,CAAC,IAAM,EAAU,CAAC,GAAG,EAAM,IAAI,EAAQ,EAAkB,EAAM,KAAK,WAAW,IAAA,GAA0C,IAAhC,WAAW,EAAM,KAAK,QAAQ,EAAM,GAAc,CAAS,EAAM,GAAW,GAAsB,CAAiB,CAAG,MAAM,GAAc,CAAC,CAAC,EAAM,GAAW,GAAsB,GAAG,CAAI,EAAE,CAAC,EAAM,KAAK,CAAS,CAAC,EAIxU,MAAoB,CAAC,GAAG,CAAC,EAAW,OAAQ,IAAI,EAAmB,GAAO,EAAiB,GAAO,EAAK,KAAS,EAAK,KAAW,MAAoB,CAAC,GAAG,CAAC,EAAW,SAAS,CAAC,EAAW,QAAQ,OAAO,IAAM,EAAe,EAAW,QAAQ,sBAAsB,CAAC,CAAC,MAAY,EAAa,EAAW,QAAQ,sBAAsB,CAAC,CAAC,MAGzU,UAAK,IAAI,EAAe,CAAkB,EAAE,IAAI,KAAK,IAAI,EAAa,CAAgB,EAAE,IAA4E,GAAhE,EAAmB,EAAe,EAAiB,EAAgB,EAAa,GAAG,EAAe,EAAE,CAAC,IAAM,EAAY,EAAe,EAAa,IAAI,GAAsB,CAAW,CAAE,KAAK,CAAC,IAAM,EAAiB,EAAM,MAAM,WAAW,IAAA,GAA0C,IAAhC,WAAW,EAAM,KAAK,QAAQ,EAAM,GAAsB,CAAgB,CAAE,CAAC,EAE5a,EAAgB,EAAE,EAAK,0BAA0B,CAAC,EAAK,sBAAsB,CAAe,CAAE,CAAC,EAAE,IAAM,EAAe,IAAI,mBAAmB,CAAC,EAAgB,CAAE,CAAC,EAAqE,OAAhE,EAAW,SAAS,EAAe,QAAQ,EAAW,OAAO,MAAa,CAAC,EAAe,WAAW,EAAK,IAAO,MAAK,qBAAqB,CAAI,EAAK,IAAO,MAAK,qBAAqB,CAAI,CAAE,CAAE,EAAE,CAAC,EAAU,EAAK,EAAM,KAAK,EAAY,CAAS,CAAC,EAAE,MAAc,CAAC,IAAI,EAAU,GAAW,MAAmB,CAAC,0BAA0B,CAAC,0BAA0B,CAAI,GAAU,GAAe,EAAI,CAAE,CAAC,CAAE,CAAC,CAAE,EAAE,SAAS,MAAM,MAAM,KAAK,CAAc,EAAE,IAAM,MAAsB,CAAI,GAAW,EAAa,GAAG,EAAE,CAAC,CAAG,EAAK,UAAU,UAAU,SAAS,MAAM,iBAAiB,cAAc,CAAiB,EAAG,IAAM,EAAS,WAAW,EAAe,GAAG,EAAE,UAAU,CAAC,EAAU,GAAM,aAAa,CAAQ,EAAK,UAAU,UAAU,SAAS,MAAM,oBAAoB,cAAc,CAAiB,CAAG,CAAE,EAAE,CAAC,CAAC,EAC57B,MAAc,CAAC,GAAG,GAAU,IAAU,UAAU,CAAC,EAAW,QAAQ,OAAO,IAAM,EAAS,IAAI,sBAAsB,CAAC,KAAS,CAAC,GAAG,EAAM,eAAe,CAAC,GAAG,CAAC,GAAQ,EAAgB,QAAQ,OAAO,GAAe,EAAI,EAAE,EAAgB,QAAQ,EAAK,MAAS,IAAQ,GAAe,EAAK,EAAE,EAAa,CAAC,EACvS,EAAE,CACL,WAAW,YAAY,EAAgB,MAAM,CAAC,EAAuC,OAArC,EAAS,QAAQ,EAAW,OAAO,MAAY,EAAS,WAAW,CAAE,EAAE,CAAC,EAAS,EAAQ,EAAgB,CAAM,CAAC,EAAE,MAAc,CACzJ,GAD6J,GACjL,CAAC,GAAsB,GAAW,EAAM,OAAO,OAAO,IAAI,EAAS,GAAS,EAAY,GAAsB,EAAU,IAAa,CAAC,GAAG,CAAC,GAAY,CAAC,EAAW,SAAS,MAAM,EAAE,OAAO,EAAW,IAAM,EAAS,SAAS,cAAc,MAAM,EAAE,EAAS,MAAM,MAAM,EAAW,EAAS,MAAM,QAAQ,OAAO,EAAU,YAAY,CAAQ,EAAE,IAAM,EAAS,EAAO,iBAAiB,CAAQ,CAAC,CAAC,MAAsC,OAAhC,EAAU,YAAY,CAAQ,EAAS,CAAS,EAAQ,GAAgB,EAAU,EAAO,IAAgB,CACpf,GAAG,CAAC,GAAW,CAAC,EAAO,MAAO,GAAK,IAAM,EAAc,EAAU,sBAAsB,EAAQ,EAAM,KAAK,KAAK,EAAc,KAAK,EAAQ,EAAO,KAAK,KAAK,EAAc,MAAM,EAAE,GAAG,IAAQ,GAAG,IAAS,EAAE,MAAO,GAAM,IAAM,EAAc,EAAO,iBAAiB,CAAS,EAAQ,EAAgB,EAAc,OAAO,EAAqB,EAAU,CAAa,EAAQ,EAAiB,EAAqB,EAAU,CAAkB,EAAQ,EAAiB,EAAM,GAAW,GAAG,IAAmB,EAAE,MAAO,GAAK,IAAM,EAAI,EAAO,kBAAkB,EAAE,EAAO,MAAM,EAAM,EAAI,EAAO,OAAO,EAAO,EAAI,IAAM,EAAI,EAAO,WAAW,IAAI,EAAE,GAAG,CAAC,EAAI,MAAO,GAAK,EAAI,MAAM,EAAI,CAAG,EAAE,IAAM,EAAU,SAAS,cAAc,QAAQ,EAAE,EAAU,MAAM,EAAM,EAAU,OAAO,EAAO,IAAM,EAAO,EAAU,WAAW,KAAK,CAAC,mBAAmB,EAAI,CAAC,EAAE,GAAG,CAAC,EAAO,MAAO,GAAK,EAAO,KAAK,GAAG,EAAc,WAAW,GAAG,EAAc,SAAS,GAAG,EAAc,aAAa,EAAO,UAAU,EAAgB,EAAO,aAAa,SAAS,EAAO,UAAU,SAA8D,EAA/B,iBAAiB,YAAkB,CAAC,CAAC,QAAQ,GAAM,CAAC,IAAM,EAAK,EAAK,sBAAsB,EAAQ,EAAU,EAAO,iBAAiB,CAAI,EAEzqC,EAAO,KAAK,GAAG,EAAU,WAAW,GAAG,EAAU,SAAS,GAAG,EAAU,aAAa,EAAO,UAAU,EAAU,OAAO,EAAgB,IAAM,EAAE,EAAK,KAAK,EAAc,KAAK,EAAK,MAAM,EAAQ,EAAE,EAAK,IAAI,EAAc,IAAI,EAAK,OAAO,EAAE,EAAO,SAAS,EAAK,aAAa,GAAG,EAAE,CAAC,CAAE,CAAC,EAAE,IAAM,EAAU,EAAO,aAAa,EAAE,EAAE,EAAM,CAAM,CAAC,CAAC,KAAK,EAAI,UAAU,EAAE,EAAE,EAAM,CAAM,EAAE,IAAM,EAAO,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAO,GAAG,EAAkB,IAAI,IAAI,EAAE,EAAE,EAAE,EAAM,GAAG,EAAiB,CAAC,IAAI,EAAK,EAAE,IAAI,IAAI,EAAG,EAAE,EAAG,EAAiB,GAAI,EAAG,IAAI,IAAI,EAAG,EAAE,EAAG,EAAiB,GAAI,EAAE,CAAC,IAAM,EAAG,EAAE,EAAS,EAAG,EAAE,EAAG,GAAG,EAAG,GAAO,EAAG,EAAO,CAAyB,IAAM,EAAE,GAAvB,EAAG,EAAM,GAAI,EAAsB,GAAM,EAAE,IAAK,EAAK,EAAE,CAAC,CAAE,IAAM,EAAiB,EAAkB,IAAY,EAAK,EAAK,GAAiB,EAAO,KAAK,CAAC,IAAE,GAAC,CAAC,CAAE,CAAE,IAAM,EAAS,EAAU,IAAY,EAAQ,EAAY,EAAa,IAAY,EAAQ,EAAU,KAAK,KAAK,EAAO,QAAQ,EAAE,EAAS,EAAE,IAAI,IAAI,EAAE,EAAO,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,IAAM,EAAE,KAAK,MAAM,KAAK,OAAO,GAAG,EAAE,EAAE,EAAE,CAAC,EAAO,GAAG,EAAO,IAAI,CAAC,EAAO,GAAG,EAAO,EAAE,CAAE,CAAC,IAAI,IAAM,KAAS,EAAO,MAAM,EAAE,CAAS,EAA2C,EAAI,UAA9B,KAAK,OAAO,EAAE,EAAkC,EAAiB,EAAgB,EAAI,SAAS,EAAM,EAAE,EAAM,EAAE,EAAiB,CAAgB,EAAG,MAAO,EAAK,EAAQ,MAAc,CAA6D,GAAzD,CAAC,GAAuC,EAAM,KAAiC,EAAE,OAAO,IAAM,EAAU,EAAe,EAAa,QAAQ,EAAU,QAAQ,CAAiB,EAA4D,EAAjC,GAAa,EAAwC,EAAe,EAAgB,QAAQ,GAAa,QAAQ,CAAoB,EAAE,GAAK,GAAG,CAAC,GAAW,CAAC,EAAS,CAAC,EAAM,eAAe,CAAI,GAAS,EAAa,GAAG,EAAE,CAAC,CAAE,EAAE,EAAE,EAAE,MAAO,CAErrD,EAAM,eAAe,CAAI,GAAU,IAAY,EAAa,GAAM,EAAK,CAAC,CAAE,EAAE,CAAa,CAAE,EAA+G,OAA1G,IAAY,EAAG,0BAA0B,CAAC,0BAA0B,CAAC,EAAU,CAAE,CAAC,CAAE,CAAC,EAAQ,EAAU,MAAa,CAAC,EAAS,GAAM,aAAa,CAAK,CAAE,CAAE,EAAE,CAAC,EAAS,EAAU,EAAY,EAAK,EAAY,EAAa,EAAM,EAAc,EAAkB,EAAU,EAAa,EAAmB,EAAkB,EAAqB,EAAU,EAAU,GAAmB,GAAY,EAAM,KAAK,EAAM,WAAW,CAAC,EACjgB,IAAM,EAAW,EAAS,GAAK,EAAM,KAAa,EAAQ,GAAU,GAAW,EAAM,MAAM,WAAW,SACpF,OAAoB,EAAMC,EAAI,CAAC,IAAI,EAAW,iBAAiB,CAAI,OAAmB,IAAU,QAAQ,CAAC,GAAG,CAAC,GAAQ,EAAgB,QAAQ,OAAO,EAAa,CAAC,EACnL,GAAe,EAAI,EAAE,EAAgB,QAAQ,EAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,OAAO,cAAc,SAAS,WAAW,UAAU,eAAe,aAAa,OAAO,EAAE,SAAS,UAAU,GAAG,GAAM,GAAG,EAAU,CAAC,MAAM,OAAO,OAAO,OAAO,UAAU,MAAM,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,GAAwB,EAAK,OAAO,CAAC,IAAI,EAAW,MAAM,CAAC,SAAS,WAAW,WAAW,SAAS,WAAW,MAAM,cAAc,OAAO,IAAI,MAAM,KAAK,MAAM,GAAG,EAAW,SAAS,OAAO,EAAE,SAAS,CAAI,CAAC,EAAe,EAAM,OAAO,CAAC,IAAI,EAAa,MAAM,CAAC,SAAS,WAAW,QAAQ,OAAO,WAAW,SAAS,MAAM,EAAU,OAAO,OAAO,OAAO,EAAU,GAAG,GAAmB,IAAI,OAAO,MAAM,EAAkB,GAAG,EAAW,SAAS,GAAG,GAAmB,IAAI,YAAS,EAAE,SAAS,CAAc,EAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAe,WAAW,EAAU,MAAM,WAAW,UAAU,aAAa,QAAQ,QAAQ,MAAM,OAAO,YAAS,EAAE,SAAS,EAAK,MAAM,EAAE,CAAC,CAAC,KAAK,EAAK,IAAiB,EAAK,OAAO,CAAC,UAAU,YAAY,SAAS,CAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAe,EAAK,SAAS,CAAC,IAAI,EAAU,MAAM,CAAC,SAAS,WAAW,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,OAAO,MAAM,OAAO,OAAO,OAAO,QAAQ,GAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAa,IAA4B,EAAM,OAAO,CAAC,IAAI,EAAgB,MAAM,CAAC,SAAS,WAAW,QAAQ,OAAO,MAAM,OAAO,WAAW,SAAS,eAAe,gBAAgB,UAAU,aAAa,UAAU,GAAG,EAAW,IAAI,YAAY,GAAG,EAAe,IAAI,aAAa,GAAG,EAAe,IAAI,MAAM,EAAqB,GAAG,CAAW,EAAE,SAAS,CAAc,EAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,QAAQ,UAAU,OAAO,WAAW,WAAW,QAAQ,IAAc,EAAE,SAAS,EAAY,MAAM,EAAE,CAAC,CAAC,KAAK,EAAK,IAAiB,EAAK,OAAO,CAAC,UAAU,YAAY,SAAS,CAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAe,EAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,QAAQ,UAAU,QAAQ,WAAW,WAAW,QAAQ,IAAc,EAAE,SAAS,EAAa,MAAM,EAAE,CAAC,CAAC,KAAK,EAAK,IAAiB,EAAK,OAAO,CAAC,UAAU,YAAY,SAAS,CAAI,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,EAAe,EAAK,SAAS,CAAC,IAAI,GAAa,MAAM,CAAC,SAAS,WAAW,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,OAAO,MAAM,OAAO,OAAO,OAAO,QAAQ,GAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,qBAlC/kE,IAAqE,IAAiE,EAkC08D,EAAgB,aAAa,CAAC,KAAK,qDAAqD,YAAY,GAAG,aAAa,GAAG,aAAa,UAAU,WAAW,EAAE,eAAe,EAAE,UAAU,UAAU,WAAW,UAAU,UAAU,GAAM,cAAc,IAAI,SAAS,mBAAmB,WAAW,oBAAoB,aAAa,2BAA2B,gBAAgB,yBAAyB,QAAQ,OAAO,gBAAgB,GAAG,OAAO,GAAK,QAAQ,MAAM,UAAU,QAAQ,EAAE,EAAoB,EAAgB,CAAC,QAAQ,CAAC,KAAK,EAAY,KAAK,MAAM,WAAW,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,MAAM,MAAM,EAAE,aAAa,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,MAAM,MAAM,EAAE,aAAa,MAAM,YAAY,yDAAyD,EAAE,QAAQ,CAAC,KAAK,EAAY,KAAK,MAAM,UAAU,QAAQ,CAAC,OAAO,QAAQ,QAAQ,EAAE,aAAa,CAAC,OAAO,QAAQ,QAAQ,EAAE,aAAa,OAAO,YAAY,yCAAyC,EAAE,OAAO,CAAC,KAAK,EAAY,QAAQ,MAAM,SAAS,aAAa,GAAK,YAAY,qGAAqG,OAAO,EAAM,CAAC,OAAO,EAAM,UAAU,MAAO,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAY,OAAO,MAAM,mBAAmB,YAAY,+EAA+E,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,OAAO,EAAM,CAAC,OAAO,EAAM,UAAU,QAAS,CAAC,EAAE,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,YAAY,iDAAiD,aAAa,qDAAqD,gBAAgB,EAAI,EAAE,UAAU,CAAC,KAAK,EAAY,KAAK,MAAM,YAAY,QAAQ,CAAC,OAAO,SAAS,OAAO,EAAE,aAAa,CAAC,OAAO,SAAS,OAAO,EAAE,aAAa,SAAS,YAAY,+CAA+C,EAAE,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,eAAe,aAAa,GAAG,YAAY,cAAc,EAAE,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,YAAY,eAAe,EAAE,YAAY,CAAC,KAAK,EAAY,KAAK,MAAM,eAAe,SAAS,WAAW,aAAa,CAAC,SAAS,GAAG,WAAW,IAAI,WAAW,IAAI,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,EAAY,MAAM,MAAM,gBAAgB,aAAa,SAAS,EAAE,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,EAAE,eAAe,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,EAAE,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,SAAS,WAAW,aAAa,CAAC,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,cAAc,KAAK,UAAU,QAAQ,CAAC,EAAE,UAAU,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,YAAY,qDAAqD,aAAa,SAAS,EAAE,WAAW,CAAC,KAAK,EAAY,MAAM,MAAM,cAAc,YAAY,kEAAkE,aAAa,SAAS,EAAE,UAAU,CAAC,KAAK,EAAY,QAAQ,MAAM,aAAa,YAAY,2DAA2D,aAAa,EAAK,EAAE,cAAc,CAAC,KAAK,EAAY,OAAO,MAAM,iBAAiB,YAAY,wDAAwD,aAAa,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,YAAY,uFAAuF,aAAa,kBAAkB,EAAE,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,kBAAkB,YAAY,6EAA6E,aAAa,mBAAmB,EAAE,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,mBAAmB,YAAY,sFAAsF,aAAa,0BAA0B,EAAE,gBAAgB,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,YAAY,oFAAoF,aAAa,wBAAwB,CAAC,CAAC"}