{"version":3,"file":"LessonCard.PHdNCmCt.mjs","names":["useState","useMemo","_Fragment"],"sources":["https:/framerusercontent.com/modules/9e2v5sLMkCwqNxzDviuU/DK4waTkxAqCxt5Fjzl6Y/LessonCard.js"],"sourcesContent":["/**\n * LessonCard — Movement Wisdom Yoga\n *\n * The card used everywhere a lesson is shown: the /lessons grid, the home-page\n * ticker, and \"keep going\" rows at the bottom of a lesson.\n *\n * Designed to live INSIDE a Framer CMS Collection List. Bind each property to\n * a field on the Lessons collection once, and every card renders itself.\n *\n * It renders a `data-mw-cat` attribute on its root. LessonFilterBar and\n * LessonLoadMore read that attribute to filter and paginate — which is why no\n * per-category CMS list is needed. The attribute may hold SEVERAL slugs,\n * space-separated: a lesson in both Yoga Classes and Yoga Knowledge appears\n * under both tabs.\n *\n * Card art (2026-08-17): the Video thumbnail WINS over the Hero image whenever\n * it has a source. A thumbnail says \"this is a video\" at a glance and is framed\n * for the card crop; a hero is an illustration composed for an article header.\n * Most lessons have only one of the two, so in practice this is a null check.\n * Bind BOTH image props — Video thumbnail -> `Video Thumbnail` (qIH814XAN),\n * Hero image -> `Hero Image` (d3Nzibe6J) — and the card picks per lesson.\n *\n * ALT TEXT (2026-08-20): bind the `Alt text` control to `Hero Alt Text`\n * (kM5ffRA_L). Before that binding existed the card read alt off the Framer\n * ResponsiveImage object — but the lesson's alt lives in a SEPARATE CMS string\n * field, so `image.alt` was always empty and all 45 images on /lessons shipped\n * `alt=\"\"`. Resolution order is now:\n *     1. the `altText` prop  (the correct source — bind it)\n *     2. alt carried on the chosen image object\n *     3. alt carried on the other image object\n *     4. the lesson title\n * Step 4 means the card can never emit an empty alt again, even unbound: a\n * title is a weaker alt than a written description, but it is never nothing,\n * and this image is always a link to the thing the title names.\n *\n * Root element: renders an <a> only when a `link` is provided. When the card is\n * placed inside an already-linked Framer frame (the home-page ticker), leave the\n * Link control empty and the root renders a <div> instead — this avoids nested\n * <a> elements, which fail Framer's SEO/optimization check.\n *\n * Category resolution, in order (2026-08-17):\n *   1. the `category` prop — bind this to the Categories field. Accepts titles\n *      (\"Yoga Classes\") or slugs (\"yoga-classes\"), one or many, comma- or\n *      space-separated. This is the correct source; everything below is a\n *      fallback for when the prop is left unbound.\n *   2. derived from the first tag (map below). \"Yoga Class\" -> yoga-classes.\n *   3. Lesson Type \"Practice\" -> yoga-classes. A follow-along practice is a\n *      class by definition.\n *   4. fallback: Yoga Knowledge.\n *\n * The eyebrow shows ONE category — the most specific match, per PRIORITY.\n * Yoga Knowledge is the catch-all and always loses to a more specific one.\n *\n * Play button (2026-08-19): matches the full-size video player's play button\n * (see VideoEmbed.tsx) — solid amber circle, white triangle, optically\n * centered via a marginLeft offset rather than geometric centering.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n */import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useState,useMemo}from\"react\";import{addPropertyControls,ControlType}from\"framer\";const FONT='\"Satoshi\", ui-sans-serif, system-ui, -apple-system, sans-serif';const CATS=[{slug:\"yoga-classes\",label:\"Yoga classes\"},{slug:\"yoga-teacher-training\",label:\"Yoga teacher training\"},{slug:\"for-teachers\",label:\"For teachers\"},{slug:\"yoga-knowledge\",label:\"Yoga knowledge\"}];/** Most specific first. Drives which single category the eyebrow shows. */const PRIORITY=CATS.map(c=>c.slug);const DEFAULT_CAT=CATS[3]// Yoga knowledge\n;/** \"Yoga Classes\", \"yoga-classes\", \"Yoga_Classes\" all normalise to the same key. */function norm(s){return String(s||\"\").toLowerCase().replace(/[^a-z0-9]+/g,\" \").trim();}const BY_KEY={};CATS.forEach(c=>{BY_KEY[norm(c.slug)]=c;BY_KEY[norm(c.label)]=c;});/**\n * Fallback map, used only when the Category prop is unbound or unrecognised.\n * Keyed on the FIRST tag. Once Categories is bound this is never consulted.\n */const TAG_TO_CAT={\"yoga class\":\"yoga-classes\",\"yoga classes\":\"yoga-classes\",\"yoga teacher training\":\"yoga-teacher-training\",\"teaching skills\":\"for-teachers\",\"yoga business\":\"for-teachers\",\"yoga philosophy\":\"yoga-knowledge\",\"yoga anatomy\":\"yoga-knowledge\",\"yoga poses\":\"yoga-knowledge\",\"yoga styles\":\"yoga-knowledge\",meditation:\"yoga-knowledge\",breathwork:\"yoga-knowledge\",\"myths spirituality\":\"yoga-knowledge\",\"myths and spirituality\":\"yoga-knowledge\"};/** Returns every category this lesson belongs to, ordered by PRIORITY. */function resolveCategories(category,tags,lessonType){const hits=[];const add=c=>{if(c&&!hits.includes(c))hits.push(c);};// 1. the Category prop — may carry several values, joined by Framer.\nString(category||\"\").split(/[,;|/]+/).forEach(part=>add(BY_KEY[norm(part)]));if(hits.length)return sortByPriority(hits);// 2. first tag\nconst firstTag=norm(String(tags||\"\").split(\",\")[0]);const bySlug=TAG_TO_CAT[firstTag];if(bySlug)add(CATS.find(c=>c.slug===bySlug));if(hits.length)return hits;// 3. a follow-along practice is a class\nif(lessonType===\"Practice\")add(BY_KEY[\"yoga classes\"]);if(hits.length)return hits;// 4. catch-all\nreturn[DEFAULT_CAT];}function sortByPriority(list){return[...list].sort((a,b)=>PRIORITY.indexOf(a.slug)-PRIORITY.indexOf(b.slug));}/**\n * Normalises either shape a Framer image prop can arrive in — a plain URL\n * string, or a ResponsiveImage object — and returns null when there is no\n * usable source, so callers can simply do `thumb || hero`.\n */function imageSource(img){if(!img)return null;if(typeof img===\"string\"){const src=img.trim();return src?{src}:null;}const src=typeof img.src===\"string\"?img.src.trim():\"\";if(!src)return null;return{src,srcSet:img.srcSet,alt:img.alt};}function durationLabel(minutes,type,hasVideo){const m=Math.max(0,Math.round(minutes||0));let verb=\"read\";if(type===\"Practice\")verb=\"practice\";else if(type===\"Video\")verb=\"watch\";else if(type===\"Audio\")verb=\"listen\";else if(!type&&hasVideo)verb=\"watch\";if(!m)return verb===\"read\"?\"Article\":\"Video\";return`${m} min ${verb}`;}export default function LessonCard(props){const{title,image,videoThumbnail,altText,link,tags,category,durationMin,lessonType,videoEmbedCode,access,eyebrowSource,aspect,radius,accent,ink,muted,playColor,style}=props;const[hover,setHover]=useState(false);const cats=useMemo(()=>resolveCategories(category,tags,lessonType),[category,tags,lessonType]);const cat=cats[0];const catAttr=cats.map(c=>c.slug).join(\" \");// Video thumbnail wins; hero image is the fallback.\nconst art=useMemo(()=>{const thumb=imageSource(videoThumbnail);const hero=imageSource(image);const chosen=thumb||hero;if(!chosen)return null;// The CMS alt field is the real source. Then whichever image object\n// carries an alt. Then the title — never an empty string.\nconst alt=String(altText||\"\").trim()||chosen.alt||(chosen===thumb?hero?.alt:thumb?.alt)||String(title||\"\").trim();return{...chosen,alt};},[videoThumbnail,image,altText,title]);const hasVideo=!!(videoEmbedCode&&String(videoEmbedCode).trim());const isPlayable=lessonType===\"Video\"||lessonType===\"Practice\"||hasVideo;const isGated=access===\"Email\"||access===\"Members\";const firstTag=(tags||\"\").split(\",\")[0].trim();const eyebrow=eyebrowSource===\"Tag\"&&firstTag?firstTag:cat.label;// Only become an anchor when we actually have a destination. Otherwise the\n// parent frame supplies the link and an extra <a> here would nest links.\nconst href=typeof link===\"string\"&&link.trim()?link.trim():undefined;const Root=href?\"a\":\"div\";const rootLinkProps=href?{href}:{};return /*#__PURE__*/_jsxs(Root,{...rootLinkProps,\"data-mw-cat\":catAttr,\"data-mw-lesson\":\"1\",onMouseEnter:()=>setHover(true),onMouseLeave:()=>setHover(false),style:{display:\"block\",textDecoration:\"none\",color:ink,fontFamily:FONT,cursor:\"pointer\",transform:hover?\"translateY(-4px)\":\"translateY(0)\",transition:\"transform 200ms cubic-bezier(0.165,0.84,0.44,1)\",...style},children:[/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\",aspectRatio:String(aspect),borderRadius:radius,overflow:\"hidden\",background:\"#E9E7EE\"},children:[art&&/*#__PURE__*/_jsx(\"img\",{src:art.src,srcSet:art.srcSet,alt:art.alt,loading:\"lazy\",decoding:\"async\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\",transform:hover?\"scale(1.04)\":\"scale(1)\",transition:\"transform 600ms cubic-bezier(0.165,0.84,0.44,1)\"}}),isPlayable&&/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",left:12,bottom:12,width:36,height:36,borderRadius:\"50%\",background:playColor,boxShadow:\"0 4px 24px rgba(0,0,0,0.35)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 20 20\",\"aria-hidden\":\"true\",focusable:\"false\",style:{width:\"42%\",height:\"42%\",marginLeft:\"8%\"},fill:\"#fff\",children:/*#__PURE__*/_jsx(\"polygon\",{points:\"4,2 18,10 4,18\"})})}),isGated&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",top:12,right:12,display:\"flex\",alignItems:\"center\",gap:6,padding:\"6px 11px 6px 9px\",borderRadius:999,background:\"rgba(255,255,255,0.94)\",boxShadow:\"0 1px 2px rgba(28,22,19,.08)\",fontSize:11.5,fontWeight:700,color:ink,whiteSpace:\"nowrap\"},children:[/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",\"aria-hidden\":\"true\",focusable:\"false\",style:{width:11,height:11,fill:accent},children:/*#__PURE__*/_jsx(\"path\",{d:\"M12 1a5 5 0 00-5 5v3H6a2 2 0 00-2 2v9a2 2 0 002 2h12a2 2 0 002-2v-9a2 2 0 00-2-2h-1V6a5 5 0 00-5-5zm-3 8V6a3 3 0 016 0v3H9z\"})}),access===\"Members\"?\"Members\":\"Free with email\"]})]}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:11.5,fontWeight:700,letterSpacing:\"0.13em\",textTransform:\"uppercase\",color:accent,margin:\"14px 0 6px\"},children:eyebrow}),/*#__PURE__*/_jsx(\"h3\",{style:{margin:0,fontSize:17,fontWeight:700,lineHeight:1.32,letterSpacing:\"-0.005em\",textDecoration:hover?\"underline\":\"none\",textUnderlineOffset:3,textDecorationThickness:1.5},children:title}),/*#__PURE__*/_jsxs(\"div\",{style:{marginTop:8,fontSize:13,color:muted,display:\"flex\",alignItems:\"center\",gap:7},children:[/*#__PURE__*/_jsx(\"span\",{children:durationLabel(durationMin,lessonType,hasVideo)}),firstTag&&eyebrowSource!==\"Tag\"&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",style:{width:3,height:3,borderRadius:\"50%\",background:\"#D1CFC9\"}}),/*#__PURE__*/_jsx(\"span\",{children:firstTag})]})]})]});}LessonCard.defaultProps={title:\"Lesson title placeholder\",altText:\"\",tags:\"Yoga Philosophy\",category:\"\",durationMin:8,lessonType:\"Written\",videoEmbedCode:\"\",access:\"Free\",eyebrowSource:\"Category\",aspect:\"16 / 10\",radius:16,accent:\"#4A2F80\",ink:\"#1C1613\",muted:\"#8A8880\",playColor:\"#FFAB3D\"};addPropertyControls(LessonCard,{title:{type:ControlType.String,title:\"Title\"},videoThumbnail:{type:ControlType.ResponsiveImage,title:\"Video thumb\",description:\"Bind to Video Thumbnail. Wins over Hero image whenever it is set.\"},image:{type:ControlType.ResponsiveImage,title:\"Hero image\"},altText:{type:ControlType.String,title:\"Alt text\",description:'BIND THIS to Hero Alt Text. Framer keeps the lesson\\'s alt in its own CMS field, not on the image object, so without this binding the card ships alt=\"\". Falls back to the lesson title.'},link:{type:ControlType.Link,title:\"Link\",description:\"Leave empty when the card sits inside an already-linked frame — that avoids nested links.\"},tags:{type:ControlType.String,title:\"Tags\"},category:{type:ControlType.String,title:\"Category\",description:\"BIND THIS to the Categories field. Titles or slugs, one or many. Left empty, the card guesses from Tags and Lesson Type.\"},durationMin:{type:ControlType.Number,title:\"Duration min\",min:0,max:300,step:1,displayStepper:true},lessonType:{type:ControlType.Enum,title:\"Lesson type\",options:[\"Written\",\"Video\",\"Practice\",\"Audio\",\"Quick tip\"]},videoEmbedCode:{type:ControlType.String,title:\"Video embed\",description:\"Only used to detect that a lesson has video.\"},access:{type:ControlType.Enum,title:\"Access\",options:[\"Free\",\"Email\",\"Members\"]},eyebrowSource:{type:ControlType.Enum,title:\"Eyebrow\",options:[\"Category\",\"Tag\"]},aspect:{type:ControlType.Enum,title:\"Aspect\",options:[\"16 / 10\",\"16 / 9\",\"4 / 3\",\"1 / 1\",\"4 / 5\"]},radius:{type:ControlType.Number,title:\"Radius\",min:0,max:40},accent:{type:ControlType.Color,title:\"Accent\"},ink:{type:ControlType.Color,title:\"Ink\"},muted:{type:ControlType.Color,title:\"Muted\"},playColor:{type:ControlType.Color,title:\"Play button\",description:\"Matches the amber used on the full-size video player's play button.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"LessonCard\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LessonCard.map"],"mappings":"+LA4DqF,SAAS,EAAK,EAAE,CAAC,OAAO,OAAO,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,cAAc,GAAG,CAAC,CAAC,KAAK,CAAE,CAGuW,SAAS,EAAkB,EAAS,EAAK,EAAW,CAAC,IAAM,EAAK,CAAC,EAAQ,EAAI,GAAG,CAAI,GAAG,CAAC,EAAK,SAAS,CAAC,GAAE,EAAK,KAAK,CAAC,CAAE,EAC3jB,GAA7E,OAAO,GAAU,EAAE,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,QAAQ,GAAM,EAAI,EAAO,EAAK,CAAI,EAAE,CAAC,EAAK,EAAK,OAAO,OAAO,EAAe,CAAI,EACtH,IAAM,EAAS,EAAK,OAAO,GAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAQ,EAAO,EAAW,GAE5E,OAFyF,GAAO,EAAI,EAAK,KAAK,GAAG,EAAE,OAAO,CAAM,CAAC,EAAK,EAAK,SACxI,IAAa,YAAW,EAAI,EAAO,eAAe,EAAK,EAAK,QAAc,EACvE,CAAC,CAAW,CAAE,CAAC,SAAS,EAAe,EAAK,CAAC,MAAM,CAAC,GAAG,CAAI,CAAC,CAAC,MAAM,EAAE,IAAI,EAAS,QAAQ,EAAE,IAAI,EAAE,EAAS,QAAQ,EAAE,IAAI,CAAC,CAAE,CAI/H,SAAS,EAAY,EAAI,CAAC,GAAG,CAAC,EAAI,OAAO,KAAK,GAAG,OAAO,GAAM,SAAS,CAAC,IAAM,EAAI,EAAI,KAAK,EAAE,OAAO,EAAI,CAAC,KAAG,EAAE,IAAK,CAAC,IAAM,EAAI,OAAO,EAAI,KAAM,SAAS,EAAI,IAAI,KAAK,EAAE,GAAuB,OAAhB,EAAsB,CAAC,MAAI,OAAO,EAAI,OAAO,IAAI,EAAI,GAAG,EAA7C,IAA+C,CAAC,SAAS,EAAc,EAAQ,EAAK,EAAS,CAAC,IAAM,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,GAAS,CAAC,CAAC,EAAM,EAAK,OAAuM,OAA7L,IAAO,WAAW,EAAK,WAAmB,IAAO,QAAQ,EAAK,QAAgB,IAAO,QAAQ,EAAK,SAAiB,CAAC,GAAM,IAAS,EAAK,SAAY,EAA+C,GAAG,EAAE,OAAO,IAAlD,IAAO,OAAO,UAAU,OAAiC,CAAC,SAAwB,EAAW,EAAM,CAAC,GAAK,CAAC,QAAM,QAAM,iBAAe,UAAQ,OAAK,OAAK,WAAS,cAAY,aAAW,iBAAe,SAAO,gBAAc,SAAO,SAAO,SAAO,MAAI,QAAM,YAAU,SAAO,EAAW,CAAC,EAAM,GAAUA,EAAS,EAAK,EAAQ,EAAKC,MAAY,EAAkB,EAAS,EAAK,CAAU,EAAE,CAAC,EAAS,EAAK,CAAU,CAAC,EAAQ,EAAI,EAAK,GAAS,EAAQ,EAAK,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,GAAG,EACj8B,EAAIA,MAAY,CAAC,IAAM,EAAM,EAAY,CAAc,EAAQ,EAAK,EAAY,CAAK,EAAQ,EAAO,GAAO,EAAK,GAAG,CAAC,EAAO,OAAO,KAExI,IAAM,EAAI,OAAO,GAAS,EAAE,CAAC,CAAC,KAAK,GAAG,EAAO,MAAM,IAAS,EAAM,GAAM,IAAI,GAAO,MAAM,OAAO,GAAO,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAO,KAAG,CAAE,EAAE,CAAC,EAAe,EAAM,EAAQ,CAAK,CAAC,EAAQ,EAAS,CAAC,EAAE,GAAgB,OAAO,CAAc,CAAC,CAAC,KAAK,GAAS,EAAW,IAAa,SAAS,IAAa,YAAY,EAAe,EAAQ,IAAS,SAAS,IAAS,UAAgB,GAAU,GAAM,GAAA,CAAI,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAQ,EAAQ,IAAgB,OAAO,EAAS,EAAS,EAAI,MAEjd,EAAK,OAAO,GAAO,UAAU,EAAK,KAAK,EAAE,EAAK,KAAK,EAAE,IAAA,GAAuE,OAAoB,EAAtE,EAAK,IAAI,MAAwE,CAAC,GAA/C,EAAK,CAAC,MAAI,EAAE,CAAC,EAAmD,cAAc,EAAQ,iBAAiB,IAAI,iBAAiB,EAAS,EAAI,EAAE,iBAAiB,EAAS,EAAK,EAAE,MAAM,CAAC,QAAQ,QAAQ,eAAe,OAAO,MAAM,EAAI,WAAW,EAAK,OAAO,UAAU,UAAU,EAAM,mBAAmB,gBAAgB,WAAW,kDAAkD,GAAG,CAAK,EAAE,SAAS,CAAc,EAAM,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,MAAM,OAAO,YAAY,OAAO,CAAM,EAAE,aAAa,EAAO,SAAS,SAAS,WAAW,SAAS,EAAE,SAAS,CAAC,GAAkB,EAAK,MAAM,CAAC,IAAI,EAAI,IAAI,OAAO,EAAI,OAAO,IAAI,EAAI,IAAI,QAAQ,OAAO,SAAS,QAAQ,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,UAAU,QAAQ,QAAQ,QAAQ,UAAU,EAAM,cAAc,WAAW,WAAW,iDAAiD,CAAC,CAAC,EAAE,GAAyB,EAAK,MAAM,CAAC,cAAc,OAAO,MAAM,CAAC,SAAS,WAAW,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,MAAM,WAAW,EAAU,UAAU,8BAA8B,QAAQ,OAAO,WAAW,SAAS,eAAe,QAAQ,EAAE,SAAsB,EAAK,MAAM,CAAC,QAAQ,YAAY,cAAc,OAAO,UAAU,QAAQ,MAAM,CAAC,MAAM,MAAM,OAAO,MAAM,WAAW,IAAI,EAAE,KAAK,OAAO,SAAsB,EAAK,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAsB,EAAM,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,IAAI,GAAG,MAAM,GAAG,QAAQ,OAAO,WAAW,SAAS,IAAI,EAAE,QAAQ,mBAAmB,aAAa,IAAI,WAAW,yBAAyB,UAAU,+BAA+B,SAAS,KAAK,WAAW,IAAI,MAAM,EAAI,WAAW,QAAQ,EAAE,SAAS,CAAc,EAAK,MAAM,CAAC,QAAQ,YAAY,cAAc,OAAO,UAAU,QAAQ,MAAM,CAAC,MAAM,GAAG,OAAO,GAAG,KAAK,CAAM,EAAE,SAAsB,EAAK,OAAO,CAAC,EAAE,6HAA6H,CAAC,CAAC,CAAC,EAAE,IAAS,UAAU,UAAU,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe,EAAK,MAAM,CAAC,MAAM,CAAC,SAAS,KAAK,WAAW,IAAI,cAAc,SAAS,cAAc,YAAY,MAAM,EAAO,OAAO,YAAY,EAAE,SAAS,CAAO,CAAC,EAAe,EAAK,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,GAAG,WAAW,IAAI,WAAW,KAAK,cAAc,WAAW,eAAe,EAAM,YAAY,OAAO,oBAAoB,EAAE,wBAAwB,GAAG,EAAE,SAAS,CAAK,CAAC,EAAe,EAAM,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,GAAG,MAAM,EAAM,QAAQ,OAAO,WAAW,SAAS,IAAI,CAAC,EAAE,SAAS,CAAc,EAAK,OAAO,CAAC,SAAS,EAAc,EAAY,EAAW,CAAQ,CAAC,CAAC,EAAE,GAAU,IAAgB,OAAoB,EAAMC,EAAU,CAAC,SAAS,CAAc,EAAK,OAAO,CAAC,cAAc,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,MAAM,WAAW,SAAS,CAAC,CAAC,EAAe,EAAK,OAAO,CAAC,SAAS,CAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,6BAjB7wF,IAAoC,IAAoD,EAAO,EAAK,iEAAuE,EAAK,CAAC,CAAC,KAAK,eAAe,MAAM,cAAc,EAAE,CAAC,KAAK,wBAAwB,MAAM,uBAAuB,EAAE,CAAC,KAAK,eAAe,MAAM,cAAc,EAAE,CAAC,KAAK,iBAAiB,MAAM,gBAAgB,CAAC,EAAmF,EAAS,EAAK,IAAI,GAAG,EAAE,IAAI,EAAQ,EAAY,EAAK,GACxZ,EAAO,CAAC,EAAE,EAAK,QAAQ,GAAG,CAAC,EAAO,EAAK,EAAE,IAAI,GAAG,EAAE,EAAO,EAAK,EAAE,KAAK,GAAG,CAAE,CAAC,EAGpP,EAAW,CAAC,aAAa,eAAe,eAAe,eAAe,wBAAwB,wBAAwB,kBAAkB,eAAe,gBAAgB,eAAe,kBAAkB,iBAAiB,eAAe,iBAAiB,aAAa,iBAAiB,cAAc,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,qBAAqB,iBAAiB,yBAAyB,gBAAgB,EAay5E,EAAW,aAAa,CAAC,MAAM,2BAA2B,QAAQ,GAAG,KAAK,kBAAkB,SAAS,GAAG,YAAY,EAAE,WAAW,UAAU,eAAe,GAAG,OAAO,OAAO,cAAc,WAAW,OAAO,UAAU,OAAO,GAAG,OAAO,UAAU,IAAI,UAAU,MAAM,UAAU,UAAU,SAAS,EAAE,EAAoB,EAAW,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,EAAE,eAAe,CAAC,KAAK,EAAY,gBAAgB,MAAM,cAAc,YAAY,mEAAmE,EAAE,MAAM,CAAC,KAAK,EAAY,gBAAgB,MAAM,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,YAAY,yLAA0L,EAAE,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,YAAY,2FAA2F,EAAE,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,MAAM,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,YAAY,0HAA0H,EAAE,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,eAAe,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,eAAe,EAAI,EAAE,WAAW,CAAC,KAAK,EAAY,KAAK,MAAM,cAAc,QAAQ,CAAC,UAAU,QAAQ,WAAW,QAAQ,WAAW,CAAC,EAAE,eAAe,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,YAAY,8CAA8C,EAAE,OAAO,CAAC,KAAK,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,OAAO,QAAQ,SAAS,CAAC,EAAE,cAAc,CAAC,KAAK,EAAY,KAAK,MAAM,UAAU,QAAQ,CAAC,WAAW,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,UAAU,SAAS,QAAQ,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAY,MAAM,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,OAAO,EAAE,UAAU,CAAC,KAAK,EAAY,MAAM,MAAM,cAAc,YAAY,qEAAqE,CAAC,CAAC"}