{"version":3,"file":"RollingText_1.-Pi16EEU.mjs","names":["useState","useRef","_Fragment"],"sources":["https:/framerusercontent.com/modules/iyRtaGAyJMAy4cRxHsAm/wII6iBxOl7ecNYaUyCzh/RollingText_1.js"],"sourcesContent":["// Rolling Text Animation with Advanced Animation Patterns\n// Adds new animation options: bounce, wave, elastic, spring, easeIn, easeOut, easeInOut, and more\n// New features: Animation direction, Custom character sets, Performance & Accessibility\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useState,useEffect,useRef,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,useInView}from\"framer-motion\";/**\n * Vertical Text Rolling Animation (Advanced)\n *\n * Each character position shows a vertical column of characters rolling to reveal the final character. Now with animation direction control, custom character sets, and accessibility features.\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 120\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function RollingText(props){const{mode=\"text\",text=\"MOTION\",initialNumber=58,finalNumber=100,prefix=\"\",suffix=\"\",duplicateCount=8,rollDuration=2,staggerDelay=.1,initialDelay=0,autoPlay=true,textColor=\"#FFFFFF\",prefixSuffixColor=\"#FFFFFF\",font,animationPattern=\"sequential\",animationTrigger=\"inView\",animationDirection=\"auto\",useCustomCharacterSet=false,customCharacterSet=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\",respectReducedMotion=true,separator=\"\"}=props;const[isAnimating,setIsAnimating]=useState(false);const[prefersReducedMotion,setPrefersReducedMotion]=useState(false);const containerRef=useRef(null);const isInView=useInView(containerRef,{once:true});const isStatic=useIsStaticRenderer();// Determine what text to display based on mode\nconst displayText=mode===\"number\"?`${prefix}${finalNumber}${suffix}`:text;const initialText=mode===\"number\"?`${prefix}${initialNumber}${suffix}`:text;// Helper to determine if a character at a given index is prefix or suffix\nconst isPrefixOrSuffix=index=>{if(mode!==\"number\")return false;const prefixLength=prefix.length;const totalLength=displayText.length;const suffixLength=suffix.length;return index<prefixLength||index>=totalLength-suffixLength;};// Check for reduced motion preference\nuseEffect(()=>{if(typeof window!==\"undefined\"&&respectReducedMotion){const mediaQuery=window.matchMedia(\"(prefers-reduced-motion: reduce)\");setPrefersReducedMotion(mediaQuery.matches);const handleChange=e=>{setPrefersReducedMotion(e.matches);};mediaQuery.addEventListener(\"change\",handleChange);return()=>mediaQuery.removeEventListener(\"change\",handleChange);}},[respectReducedMotion]);useEffect(()=>{let shouldAnimate=false;if(autoPlay&&!isStatic&&!prefersReducedMotion){if(animationTrigger===\"inView\"&&isInView)shouldAnimate=true;if(animationTrigger===\"onAppear\")shouldAnimate=true;}if(shouldAnimate){const timer=setTimeout(()=>{startTransition(()=>setIsAnimating(true));},100+initialDelay*1e3);return()=>clearTimeout(timer);}},[autoPlay,isInView,isStatic,animationTrigger,prefersReducedMotion,initialDelay]);const handleReplay=()=>{if(prefersReducedMotion&&respectReducedMotion)return;startTransition(()=>{setIsAnimating(false);setTimeout(()=>{startTransition(()=>setIsAnimating(true));},50);});};const characters=displayText.split(\"\");// For random, generate a stable random delay per character\nconst randomDelays=characters.map((_,i)=>Math.random()*staggerDelay*characters.length);// For wave, bounce, elastic, spring, easeIn, easeOut, easeInOut, set up pattern-specific delays and easings\nfunction getDelay(index){const baseDelay=(()=>{switch(animationPattern){case\"sequential\":return index*staggerDelay;case\"alternating\":return index*staggerDelay;case\"random\":return randomDelays[index];case\"together\":return 0;case\"wave\":return Math.sin(index)*staggerDelay*2+index*staggerDelay*.5;case\"bounce\":return index*staggerDelay*.7;case\"elastic\":return index*staggerDelay*.5;case\"spring\":return index*staggerDelay*.5;case\"easeIn\":return index*staggerDelay*.8;case\"easeOut\":return index*staggerDelay*.8;case\"easeInOut\":return index*staggerDelay*.8;default:return index*staggerDelay;}})();return baseDelay+initialDelay;}function getEase(){switch(animationPattern){case\"bounce\":return[.68,-.55,.27,1.55];case\"wave\":return[.4,0,.2,1];case\"elastic\":return[.87,0,.13,1];case\"spring\":return\"spring\";case\"easeIn\":return[.42,0,1,1];case\"easeOut\":return[0,0,.58,1];case\"easeInOut\":return[.42,0,.58,1];default:return[.25,.46,.45,.94];}}// Generate character set for rolling effect\nfunction generateCharacterSet(targetChar,charIndex){if(mode===\"number\"){// Check if the current character is a digit\nif(!/^\\d$/.test(targetChar)){// If it's not a digit (prefix/suffix), just return the character as-is\nreturn[targetChar];}// For number mode, generate a sequence from initial digit to target digit\nconst targetDigit=parseInt(targetChar);// Find the corresponding digit in the initial text\nlet initialDigit=0;if(charIndex<initialText.length){const initialChar=initialText[charIndex];if(/^\\d$/.test(initialChar)){initialDigit=parseInt(initialChar);}}const sequence=[];// Start with the initial digit\nsequence.push(initialDigit.toString());// Add intermediate digits for rolling effect\nconst extraRolls=Math.max(3,duplicateCount-2);for(let i=0;i<extraRolls;i++){// Create a smooth progression from initial to target\nconst progress=(i+1)/(extraRolls+1);const intermediateDigit=Math.floor(initialDigit+(targetDigit-initialDigit)*progress);sequence.push(Math.abs(intermediateDigit%10).toString());}// End with the target digit\nsequence.push(targetDigit.toString());return sequence;}if(!useCustomCharacterSet){// Default behavior: use the same character repeated\nreturn Array(duplicateCount).fill(targetChar);}const chars=customCharacterSet.split(\"\");const result=[];// Start with target character, fill with random characters, end with target character\nresult.push(targetChar)// Always start with the target character\n;for(let i=0;i<duplicateCount-2;i++){const randomChar=chars[Math.floor(Math.random()*chars.length)];result.push(randomChar);}result.push(targetChar)// Always end with the target character\n;return result;}// If reduced motion is preferred, show static text\nif(prefersReducedMotion&&respectReducedMotion){return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...props.style,position:\"relative\",width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",overflow:\"hidden\"},children:/*#__PURE__*/_jsx(\"span\",{style:{color:textColor,...font},children:displayText})});}return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...props.style,position:\"relative\",width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",overflow:\"hidden\",userSelect:\"none\"},children:/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"center\",gap:\"0.05em\",...font},children:characters.map((char,index)=>/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(CharacterColumn,{character:char,characterSet:generateCharacterSet(char,index),rollDuration:rollDuration,delay:getDelay(index),isAnimating:isAnimating,textColor:textColor,prefixSuffixColor:prefixSuffixColor,isPrefixOrSuffix:isPrefixOrSuffix(index),font:font,isStatic:isStatic,animationPattern:animationPattern,characterIndex:index,ease:getEase(),animationDirection:animationDirection,mode:mode},`${char}-${index}`),separator&&(()=>{if(mode!==\"number\")return false;// Calculate position from the right, excluding prefix and suffix\n    const prefixLength=prefix.length;const suffixLength=suffix.length;const numberStartIndex=prefixLength;const numberEndIndex=characters.length-suffixLength;// Only add separator within the number portion\n    if(index<numberStartIndex||index>=numberEndIndex-1)return false;// Calculate position from right within the number\n    const positionFromRight=numberEndIndex-1-index;// Add separator every 3 digits from the right\n    return positionFromRight>0&&positionFromRight%3===0;})()&&/*#__PURE__*/_jsx(motion.span,{style:{color:textColor,...font},initial:{opacity:0},animate:isAnimating?{opacity:1}:{opacity:0},transition:{duration:rollDuration,delay:getDelay(index),ease:getEase()},children:separator})]}))})});}function CharacterColumn({character,characterSet,rollDuration,delay,isAnimating,textColor,prefixSuffixColor,isPrefixOrSuffix,font,isStatic,animationPattern,characterIndex,ease,animationDirection,mode}){// Calculate the height needed to show one character\nconst lineHeight=parseFloat(font?.lineHeight||\"1em\");const fontSize=parseFloat(font?.fontSize||\"60px\");const characterHeight=fontSize*lineHeight;// Calculate total scroll distance (all characters minus the final visible one)\nconst totalScrollDistance=characterHeight*(characterSet.length-1);// Determine animation direction\nlet shouldRollFromBottom=false;if(animationDirection===\"down\"){shouldRollFromBottom=true;}else if(animationDirection===\"up\"){shouldRollFromBottom=false;}else{// Use existing logic for alternating pattern\nconst isOddPosition=characterIndex%2===1;shouldRollFromBottom=animationPattern===\"alternating\"?isOddPosition:false;}// Set initial and final positions based on direction\nconst initialY=shouldRollFromBottom?-totalScrollDistance:0;const finalY=shouldRollFromBottom?0:-totalScrollDistance;const displayColor=isPrefixOrSuffix?prefixSuffixColor:textColor;if(isStatic){return /*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",height:`${characterHeight}px`,overflow:\"hidden\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:/*#__PURE__*/_jsx(\"span\",{style:{color:displayColor,...font,lineHeight:font?.lineHeight||\"1em\"},children:character})});}return /*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",height:`${characterHeight}px`,overflow:\"hidden\",display:\"flex\",alignItems:\"flex-start\",justifyContent:\"center\"},children:/*#__PURE__*/_jsx(motion.div,{style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\"},initial:{y:initialY,opacity:0},animate:isAnimating?{y:finalY,opacity:1}:{y:initialY,opacity:0},transition:{duration:rollDuration,delay:delay,ease:ease,type:typeof ease===\"string\"?ease:\"tween\"},children:characterSet.map((char,index)=>/*#__PURE__*/_jsx(\"span\",{style:{color:displayColor,height:`${characterHeight}px`,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",...font,lineHeight:font?.lineHeight||\"1em\"},children:char},index))})});}addPropertyControls(RollingText,{mode:{type:ControlType.Enum,title:\"Mode\",options:[\"text\",\"number\"],optionTitles:[\"Text\",\"Number\"],defaultValue:\"text\",displaySegmentedControl:true},text:{type:ControlType.String,title:\"Text\",defaultValue:\"MOTION\",hidden:({mode})=>mode===\"number\"},initialNumber:{type:ControlType.Number,title:\"Initial Number\",defaultValue:58,min:0,max:999999,hidden:({mode})=>mode===\"text\"},finalNumber:{type:ControlType.Number,title:\"Final Number\",defaultValue:100,min:0,max:999999,hidden:({mode})=>mode===\"text\"},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\",placeholder:\"$\",hidden:({mode})=>mode===\"text\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\",placeholder:\"%\",hidden:({mode})=>mode===\"text\"},separator:{type:ControlType.String,title:\"Separator\",defaultValue:\"\",placeholder:\",\"},animationPattern:{type:ControlType.Enum,title:\"Animation Pattern\",options:[\"sequential\",\"alternating\",\"random\",\"together\",\"bounce\",\"wave\",\"elastic\",\"spring\",\"easeIn\",\"easeOut\",\"easeInOut\"],optionTitles:[\"Sequential\",\"Alternating\",\"Random\",\"Together\",\"Bounce\",\"Wave\",\"Elastic\",\"Spring\",\"Ease In\",\"Ease Out\",\"Ease InOut\"],defaultValue:\"sequential\",displaySegmentedControl:false},animationTrigger:{type:ControlType.Enum,title:\"Trigger\",options:[\"inView\",\"onAppear\"],optionTitles:[\"In View\",\"On Appear\"],defaultValue:\"inView\",displaySegmentedControl:false},animationDirection:{type:ControlType.Enum,title:\"Direction\",options:[\"up\",\"down\",\"auto\"],optionTitles:[\"Up\",\"Down\",\"Auto\"],defaultValue:\"auto\",displaySegmentedControl:false},useCustomCharacterSet:{type:ControlType.Boolean,title:\"Custom Characters\",defaultValue:false,enabledTitle:\"Custom\",disabledTitle:\"Same Letter\",displaySegmentedControl:false},customCharacterSet:{type:ControlType.String,title:\"Character Set\",defaultValue:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\",placeholder:\"Enter characters to roll through...\",hidden:({useCustomCharacterSet})=>!useCustomCharacterSet},respectReducedMotion:{type:ControlType.Boolean,title:\"Respect Reduced Motion\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\",displaySegmentedControl:false},font:{type:ControlType.Font,title:\"Font\",defaultValue:{fontSize:\"60px\",variant:\"Bold\",letterSpacing:\"-0.02em\",lineHeight:\"1em\"},controls:\"extended\",defaultFontType:\"sans-serif\"},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#FFFFFF\"},prefixSuffixColor:{type:ControlType.Color,title:\"Prefix/Suffix Color\",defaultValue:\"#FFFFFF\",hidden:({mode})=>mode===\"text\"},duplicateCount:{type:ControlType.Number,title:\"Roll Count\",defaultValue:8,min:3,max:20,step:1,hidden:({useCustomCharacterSet})=>useCustomCharacterSet},rollDuration:{type:ControlType.Number,title:\"Roll Duration\",defaultValue:2,min:.5,max:5,step:.1,unit:\"s\"},staggerDelay:{type:ControlType.Number,title:\"Stagger Delay\",defaultValue:.1,min:0,max:.5,step:.01,unit:\"s\"},initialDelay:{type:ControlType.Number,title:\"Initial Delay\",defaultValue:0,min:0,max:5,step:.1,unit:\"s\"},autoPlay:{type:ControlType.Boolean,title:\"Auto Play\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",displaySegmentedControl:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RollingText\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"400\",\"framerIntrinsicHeight\":\"120\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RollingText_1.map"],"mappings":"2RAaG,SAAwB,EAAY,EAAM,CAAC,GAAK,CAAC,OAAK,OAAO,OAAK,SAAS,gBAAc,GAAG,cAAY,IAAI,SAAO,GAAG,SAAO,GAAG,iBAAe,EAAE,eAAa,EAAE,eAAa,GAAG,eAAa,EAAE,WAAS,GAAK,YAAU,UAAU,oBAAkB,UAAU,OAAK,mBAAiB,aAAa,mBAAiB,SAAS,qBAAmB,OAAO,wBAAsB,GAAM,qBAAmB,uCAAuC,uBAAqB,GAAK,YAAU,IAAI,EAAW,CAAC,EAAY,GAAgBA,EAAS,GAAM,CAAM,CAAC,EAAqB,GAAyBA,EAAS,GAAM,CAAO,EAAaC,EAAO,KAAK,CAAO,EAAS,EAAU,EAAa,CAAC,KAAK,GAAK,CAAC,CAAO,EAAS,GAAqB,CAClsB,EAAY,IAAO,SAAS,GAAG,IAAS,IAAc,IAAS,EAAW,EAAY,IAAO,SAAS,GAAG,IAAS,IAAgB,IAAS,EAC3I,EAAiB,GAAO,CAAC,GAAG,IAAO,SAAS,MAAO,GAAM,IAAM,EAAa,EAAO,OAAa,EAAY,EAAY,OAAa,EAAa,EAAO,OAAO,OAAO,EAAM,GAAc,GAAO,EAAY,GACpN,MAAc,CAAC,GAAU,IAAS,QAAa,EAAqB,CAAC,IAAM,EAAW,EAAO,WAAW,mCAAmC,CAAC,EAAwB,EAAW,QAAQ,CAAC,IAAM,EAAa,GAAG,CAAC,EAAwB,EAAE,QAAQ,EAAsD,OAAnD,EAAW,iBAAiB,SAAS,EAAa,KAAW,EAAW,oBAAoB,SAAS,EAAa,GAAI,CAAC,EAAqB,CAAC,CAAC,MAAc,CAAC,IAAI,EAAc,GAAsK,GAA7J,GAAU,CAAC,GAAU,CAAC,IAAyB,IAAmB,UAAU,IAAS,EAAc,IAAQ,IAAmB,aAAW,EAAc,KAAS,EAAc,CAAC,IAAM,EAAM,eAAe,CAAC,MAAoB,EAAe,GAAK,CAAC,EAAG,IAAI,EAAa,IAAI,CAAC,UAAU,aAAa,EAAM,GAAI,CAAC,EAAS,EAAS,EAAS,EAAiB,EAAqB,EAAa,CAAC,CAA8L,IAAM,EAAW,EAAY,MAAM,GAAG,CACxgC,EAAa,EAAW,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,EAAa,EAAW,OAAO,CACtF,SAAS,EAAS,EAAM,CAAujB,WAAjiB,CAAC,OAAO,EAAP,CAAyB,IAAI,aAAa,OAAO,EAAM,EAAa,IAAI,cAAc,OAAO,EAAM,EAAa,IAAI,SAAS,OAAO,EAAa,GAAO,IAAI,WAAW,MAAO,GAAE,IAAI,OAAO,OAAO,KAAK,IAAI,EAAM,CAAC,EAAa,EAAE,EAAM,EAAa,GAAG,IAAI,SAAS,OAAO,EAAM,EAAa,GAAG,IAAI,UAAU,OAAO,EAAM,EAAa,GAAG,IAAI,SAAS,OAAO,EAAM,EAAa,GAAG,IAAI,SAAS,OAAO,EAAM,EAAa,GAAG,IAAI,UAAU,OAAO,EAAM,EAAa,GAAG,IAAI,YAAY,OAAO,EAAM,EAAa,GAAG,QAAQ,OAAO,EAAM,MAAkB,CAAkB,EAAc,SAAS,GAAS,CAAC,OAAO,EAAP,CAAyB,IAAI,SAAS,MAAM,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,UAAU,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,SAAS,MAAM,SAAS,IAAI,SAAS,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,UAAU,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,YAAY,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,EAC95B,SAAS,EAAqB,EAAW,EAAU,CAAC,GAAG,IAAO,SAAS,CACvE,GAAG,CAAC,OAAO,KAAK,EAAW,CAC3B,MAAM,CAAC,EAAW,CAClB,IAAM,EAAY,SAAS,EAAW,CAClC,EAAa,EAAE,GAAG,EAAU,EAAY,OAAO,CAAC,IAAM,EAAY,EAAY,GAAc,OAAO,KAAK,EAAY,GAAE,EAAa,SAAS,EAAY,EAAG,IAAM,EAAS,EAAE,CAChL,EAAS,KAAK,EAAa,UAAU,CAAC,CACtC,IAAM,EAAW,KAAK,IAAI,EAAE,EAAe,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAW,IAAI,CAC3E,IAAM,GAAU,EAAE,IAAI,EAAW,GAAS,EAAkB,KAAK,MAAM,GAAc,EAAY,GAAc,EAAS,CAAC,EAAS,KAAK,KAAK,IAAI,EAAkB,GAAG,CAAC,UAAU,CAAC,CAC3I,OAAtC,EAAS,KAAK,EAAY,UAAU,CAAC,CAAQ,EAAU,GAAG,CAAC,EAC3D,OAAO,MAAM,EAAe,CAAC,KAAK,EAAW,CAAE,IAAM,EAAM,EAAmB,MAAM,GAAG,CAAO,EAAO,EAAE,CACvG,EAAO,KAAK,EAAW,CACtB,IAAI,IAAI,EAAE,EAAE,EAAE,EAAe,EAAE,IAAI,CAAC,IAAM,EAAW,EAAM,KAAK,MAAM,KAAK,QAAQ,CAAC,EAAM,OAAO,EAAE,EAAO,KAAK,EAAW,CAC1H,OAD4H,EAAO,KAAK,EAAW,CAC5I,EACwU,OAA7U,GAAsB,EAA0C,EAAK,MAAM,CAAC,IAAI,EAAa,MAAM,CAAC,GAAG,EAAM,MAAM,SAAS,WAAW,MAAM,OAAO,OAAO,OAAO,QAAQ,OAAO,WAAW,SAAS,eAAe,SAAS,SAAS,SAAS,CAAC,SAAsB,EAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAU,GAAG,EAAK,CAAC,SAAS,EAAY,CAAC,CAAC,CAAC,CAAsB,EAAK,MAAM,CAAC,IAAI,EAAa,MAAM,CAAC,GAAG,EAAM,MAAM,SAAS,WAAW,MAAM,OAAO,OAAO,OAAO,QAAQ,OAAO,WAAW,SAAS,eAAe,SAAS,SAAS,SAAS,WAAW,OAAO,CAAC,SAAsB,EAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,OAAO,WAAW,SAAS,eAAe,SAAS,IAAI,SAAS,GAAG,EAAK,CAAC,SAAS,EAAW,KAAK,EAAK,IAAqB,EAAMC,EAAU,CAAC,SAAS,CAAc,EAAK,EAAgB,CAAC,UAAU,EAAK,aAAa,EAAqB,EAAK,EAAM,CAAc,eAAa,MAAM,EAAS,EAAM,CAAa,cAAsB,YAA4B,oBAAkB,iBAAiB,EAAiB,EAAM,CAAM,OAAc,WAA0B,mBAAiB,eAAe,EAAM,KAAK,GAAS,CAAoB,qBAAwB,OAAK,CAAC,GAAG,EAAK,GAAG,IAAQ,CAAC,QAAgB,CAAC,GAAG,IAAO,SAAS,MAAO,GACrsC,IAAM,EAAa,EAAO,OAAa,EAAa,EAAO,OAAa,EAAiB,EAAmB,EAAe,EAAW,OAAO,EAC7I,GAAG,EAAM,GAAkB,GAAO,EAAe,EAAE,MAAO,GAC1D,IAAM,EAAkB,EAAe,EAAE,EACzC,OAAO,EAAkB,GAAG,EAAkB,GAAI,KAAM,EAAe,EAAK,EAAO,KAAK,CAAC,MAAM,CAAC,MAAM,EAAU,GAAG,EAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,SAAS,EAAa,MAAM,EAAS,EAAM,CAAC,KAAK,GAAS,CAAC,CAAC,SAAS,EAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,SAAS,EAAgB,CAAC,YAAU,eAAa,eAAa,QAAM,cAAY,YAAU,oBAAkB,mBAAiB,OAAK,WAAS,mBAAiB,iBAAe,OAAK,qBAAmB,QAAM,CAC5e,IAAM,EAAW,WAAW,GAAM,YAAY,MAAM,CAAyD,EAAzC,WAAW,GAAM,UAAU,OAAO,CAAgC,EAChI,EAAoB,GAAiB,EAAa,OAAO,GAC3D,EAAqB,GAAM,GAAG,IAAqB,OAAQ,EAAqB,WAAc,IAAqB,KAAM,EAAqB,OAAW,CAC7J,IAAM,EAAc,EAAe,GAAI,EAAE,EAAqB,IAAmB,cAAc,EAAc,GAC7G,IAAM,EAAS,EAAqB,CAAC,EAAoB,EAAQ,EAAO,EAAqB,EAAE,CAAC,EAA0B,EAAa,EAAiB,EAAkB,EAA+T,OAAlT,EAA8B,EAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,OAAO,GAAG,EAAgB,IAAI,SAAS,SAAS,QAAQ,OAAO,WAAW,SAAS,eAAe,SAAS,CAAC,SAAsB,EAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAa,GAAG,EAAK,WAAW,GAAM,YAAY,MAAM,CAAC,SAAS,EAAU,CAAC,CAAC,CAAC,CAAsB,EAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,OAAO,GAAG,EAAgB,IAAI,SAAS,SAAS,QAAQ,OAAO,WAAW,aAAa,eAAe,SAAS,CAAC,SAAsB,EAAK,EAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,OAAO,cAAc,SAAS,WAAW,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAS,QAAQ,EAAE,CAAC,QAAQ,EAAY,CAAC,EAAE,EAAO,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAS,QAAQ,EAAE,CAAC,WAAW,CAAC,SAAS,EAAmB,QAAW,OAAK,KAAK,OAAO,GAAO,SAAS,EAAK,QAAQ,CAAC,SAAS,EAAa,KAAK,EAAK,IAAqB,EAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAa,OAAO,GAAG,EAAgB,IAAI,QAAQ,OAAO,WAAW,SAAS,eAAe,SAAS,GAAG,EAAK,WAAW,GAAM,YAAY,MAAM,CAAC,SAAS,EAAK,CAAC,EAAM,CAAC,CAAC,CAAC,CAAC,CAAC,sBAtC1mC,IAA6D,IAAwE,IAA4C,CAsC27B,EAAoB,EAAY,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,QAAQ,CAAC,OAAO,SAAS,CAAC,aAAa,CAAC,OAAO,SAAS,CAAC,aAAa,OAAO,wBAAwB,GAAK,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,aAAa,SAAS,QAAQ,CAAC,UAAQ,IAAO,SAAS,CAAC,cAAc,CAAC,KAAK,EAAY,OAAO,MAAM,iBAAiB,aAAa,GAAG,IAAI,EAAE,IAAI,OAAO,QAAQ,CAAC,UAAQ,IAAO,OAAO,CAAC,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,eAAe,aAAa,IAAI,IAAI,EAAE,IAAI,OAAO,QAAQ,CAAC,UAAQ,IAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,GAAG,YAAY,IAAI,QAAQ,CAAC,UAAQ,IAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,GAAG,YAAY,IAAI,QAAQ,CAAC,UAAQ,IAAO,OAAO,CAAC,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,YAAY,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAY,KAAK,MAAM,oBAAoB,QAAQ,CAAC,aAAa,cAAc,SAAS,WAAW,SAAS,OAAO,UAAU,SAAS,SAAS,UAAU,YAAY,CAAC,aAAa,CAAC,aAAa,cAAc,SAAS,WAAW,SAAS,OAAO,UAAU,SAAS,UAAU,WAAW,aAAa,CAAC,aAAa,aAAa,wBAAwB,GAAM,CAAC,iBAAiB,CAAC,KAAK,EAAY,KAAK,MAAM,UAAU,QAAQ,CAAC,SAAS,WAAW,CAAC,aAAa,CAAC,UAAU,YAAY,CAAC,aAAa,SAAS,wBAAwB,GAAM,CAAC,mBAAmB,CAAC,KAAK,EAAY,KAAK,MAAM,YAAY,QAAQ,CAAC,KAAK,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,OAAO,OAAO,CAAC,aAAa,OAAO,wBAAwB,GAAM,CAAC,sBAAsB,CAAC,KAAK,EAAY,QAAQ,MAAM,oBAAoB,aAAa,GAAM,aAAa,SAAS,cAAc,cAAc,wBAAwB,GAAM,CAAC,mBAAmB,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,uCAAuC,YAAY,sCAAsC,QAAQ,CAAC,2BAAyB,CAAC,EAAsB,CAAC,qBAAqB,CAAC,KAAK,EAAY,QAAQ,MAAM,yBAAyB,aAAa,GAAK,aAAa,MAAM,cAAc,KAAK,wBAAwB,GAAM,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,aAAa,CAAC,SAAS,OAAO,QAAQ,OAAO,cAAc,UAAU,WAAW,MAAM,CAAC,SAAS,WAAW,gBAAgB,aAAa,CAAC,UAAU,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,aAAa,UAAU,CAAC,kBAAkB,CAAC,KAAK,EAAY,MAAM,MAAM,sBAAsB,aAAa,UAAU,QAAQ,CAAC,UAAQ,IAAO,OAAO,CAAC,eAAe,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,QAAQ,CAAC,2BAAyB,EAAsB,CAAC,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAY,QAAQ,MAAM,YAAY,aAAa,GAAK,aAAa,KAAK,cAAc,MAAM,wBAAwB,GAAM,CAAC,CAAC"}