{"version":3,"file":"BreadcrumbsCode.DLWC1tyb.mjs","names":["useId","useMemo","useRef","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/CwuUkUk8PbksSKplj700/pD4EnW8sAcfMaBKKc0j4/BreadcrumbsCode.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,useLocaleInfo}from\"framer\";import{AnimatePresence,LayoutGroup,motion,useReducedMotion}from\"framer-motion\";import{createPortal}from\"react-dom\";import{useCallback,useEffect,useId,useLayoutEffect,useMemo,useRef,useState}from\"react\";// The site serves locales under URL prefixes, so a crumb link like \"/customers\" must become\n// \"/nl/customers\" on the Dutch site or the breadcrumb sends visitors back to English.\nconst LOCALE_SEGMENTS=[\"nl\",\"de\",\"fr\",\"es\",\"it\",\"uk\",\"us\"];const LOCALE_CODE_TO_PREFIX={nl:\"/nl\",de:\"/de\",fr:\"/fr\",es:\"/es\",it:\"/it\",\"en-gb\":\"/uk\",\"en-us\":\"/us\",uk:\"/uk\",us:\"/us\"};function currentLocalePrefix(localeCode){const code=(localeCode||\"\").toLowerCase();if(code&&LOCALE_CODE_TO_PREFIX[code])return LOCALE_CODE_TO_PREFIX[code];if(code)return\"\";if(typeof window!==\"undefined\"){const segment=(window.location.pathname.split(\"/\")[1]||\"\").toLowerCase();if(LOCALE_SEGMENTS.includes(segment))return\"/\"+segment;}return\"\";}function localizeLink(link,prefix){if(!prefix||!link||!link.startsWith(\"/\"))return link;const segment=(link.split(\"/\")[1]||\"\").toLowerCase();if(LOCALE_SEGMENTS.includes(segment))return link;return link===\"/\"?prefix+\"/\":prefix+link;}/** A Link control arrives as a string or as an object carrying the value; take the base value. */function readLink(input){if(typeof input===\"string\")return input;if(!input||typeof input!==\"object\")return\"\";const candidate=input;return readLink(candidate.value)||readLink(candidate.url)||readLink(candidate.href);}const LEVEL_COUNT=4;// Sample crumbs so the component stays visible on the canvas; the published site renders\n// nothing when no crumb is filled in. A wrong breadcrumb is worse than none.\nconst CANVAS_SAMPLE=[{title:\"Monday Merch\",link:\"/\"},{title:\"Customers\",link:\"/customers\"},{title:\"Stories\",link:\"/customers/stories\"}];function trailFromProps(props,isCanvas){const crumbs=[];for(let level=1;level<=LEVEL_COUNT;level++){const title=String(props[`level${level}Title`]??\"\").trim();if(title)crumbs.push({title,link:readLink(props[`level${level}Link`])});}const cmsTitle=String(props.cmsTitle??\"\").trim();if(cmsTitle)crumbs.push({title:cmsTitle,link:readLink(props.cmsLink)});return crumbs.length?crumbs:isCanvas?CANVAS_SAMPLE:[];}/** Fewest crumbs the ellipsis may stand in for. One would cost a name and buy no room. */const MIN_FOLDED_CRUMBS=2;function collapseRungs(count){const parent=count-2;if(parent<0)return[[]];const range=(from,to)=>from>to?[]:Array.from({length:to-from+1},(_,offset)=>from+offset);const rungs=[[],range(1,parent),range(0,parent)];return rungs.filter((rung,index)=>index===0||rung.length>=MIN_FOLDED_CRUMBS&&rung.length>rungs[index-1].length);}function rowWidth(metrics,hidden,ancestorWidth){const currentIndex=metrics.crumbWidths.length-1;const folded=new Set(hidden);let items=folded.size>0?1:0;let width=folded.size>0?metrics.ellipsisWidth:0;metrics.crumbWidths.forEach((natural,index)=>{if(folded.has(index))return;items+=1;width+=index===currentIndex?natural:ancestorWidth(index);});const separators=Math.max(0,items-1);return width+separators*metrics.separatorWidth+Math.max(0,items+separators-1)*metrics.gap;}function fitBreadcrumbs(metrics,available){if(!(available>0)||metrics.crumbWidths.length<2)return[];const rungs=collapseRungs(metrics.crumbWidths.length);const natural=index=>metrics.crumbWidths[index];const truncated=index=>Math.min(metrics.crumbWidths[index],metrics.ancestorFloor);for(const rung of rungs){if(rowWidth(metrics,rung,natural)<=available)return rung;if(rowWidth(metrics,rung,truncated)<=available)return rung;}return rungs[rungs.length-1];}const sameIndexes=(left,right)=>left.length===right.length&&left.every((value,index)=>value===right[index]);/* ----- design tokens, identical to the shop -----\n   The type is pinned here rather than inherited: the shop sets its own tracking per page, so a\n   trail that inherited would read differently on www than in the shop. 20px line boxes leave\n   room for the descenders that the truncation would otherwise clip. */// The stack the site's own body copy uses, so the trail reads like the paragraphs around it.\n// Inter first, exactly as in the shop; the rest only matters where Inter is unavailable.\nconst FONT='Inter, -apple-system, \"system-ui\", \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif';const EASE=\"cubic-bezier(0.22, 1, 0.36, 1)\";const EASE_ARRAY=[.22,1,.36,1];const ANCESTOR_FLOOR_REM=5;const ROW_GAP=8;const CSS=`\n.mm-crumbs { position: relative; width: max-content; max-width: 100%; min-width: 0; user-select: none; view-transition-name: breadcrumb; font-family: ${FONT}; font-size: 14px; line-height: 20px; letter-spacing: -0.01em; }\n.mm-crumbs__frame { position: relative; width: 100%; }\n.mm-crumbs__row { display: flex; flex-wrap: nowrap; align-items: center; gap: ${ROW_GAP}px; min-height: 24px; width: 100%; min-width: 0; margin: 0; padding: 0; list-style: none; overflow-x: clip; }\n.mm-crumbs__row--center { justify-content: center; } .mm-crumbs__row--right { justify-content: flex-end; }\n.mm-crumbs__item { min-width: 0; flex: 0 1 auto; }\n.mm-crumbs__item--fixed { flex: none; white-space: nowrap; }\n.mm-crumbs__link { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #6e6e73; text-decoration: none; text-underline-offset: 4px; transition: color 150ms ${EASE}; }\n.mm-crumbs__link:hover, .mm-crumbs__link:focus-visible { color: #1d1d1f; text-decoration: underline; }\n.mm-crumbs__current { color: #1d1d1f; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.mm-crumbs__separator { color: #86868b; }\n.mm-crumbs__toggle { position: relative; display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0; border: 0; border-radius: 4px; background: none; font: inherit; color: #6e6e73; cursor: pointer; transition: color 150ms ${EASE}, transform 150ms ${EASE}; }\n.mm-crumbs__toggle::after { content: \"\"; position: absolute; inset: -10px; }\n.mm-crumbs__toggle:hover, .mm-crumbs__toggle:focus-visible { color: #1d1d1f; }\n.mm-crumbs__toggle:active { transform: scale(0.9); }\n.mm-crumbs__panel { position: absolute; z-index: 2147483000; margin: 0; padding: 6px; list-style: none; transform-origin: top left; border: 1px solid #e8e8eb; border-radius: 8px; background: #fff; box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); font-family: ${FONT}; font-size: 14px; line-height: 20px; letter-spacing: -0.01em; user-select: none; }\n.mm-crumbs__panel-link { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 4px 8px; border-radius: 4px; line-height: 20px; color: #6e6e73; text-decoration: none; text-underline-offset: 4px; transition: color 150ms ${EASE}; }\n.mm-crumbs__panel-link:hover, .mm-crumbs__panel-link:focus-visible { color: #1d1d1f; text-decoration: underline; }\n.mm-crumbs__measure { height: 0; overflow: hidden; visibility: hidden; pointer-events: none; }\n.mm-crumbs__measure ol { display: flex; flex-wrap: nowrap; align-items: center; gap: ${ROW_GAP}px; width: max-content; margin: 0; padding: 0; list-style: none; white-space: nowrap; line-height: 20px; }\n@media (prefers-reduced-motion: reduce) { .mm-crumbs__toggle:active { transform: none; } }\n`;function rowItemsFor(crumbs,hidden){const folded=new Set(hidden);const row=[];const add=item=>{if(row.length)row.push({kind:\"separator\",key:`after-${row[row.length-1].key}`});row.push(item);};crumbs.forEach((crumb,index)=>{if(folded.has(index)){if(row[row.length-1]?.kind!==\"ellipsis\")add({kind:\"ellipsis\",key:\"ellipsis\"});return;}const key=`${index}-${crumb.title}`;const isCurrent=index===crumbs.length-1;add(isCurrent?{kind:\"current\",key,crumb}:{kind:\"ancestor\",key,index,crumb});});return row;}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n */export default function BreadcrumbsCode(props){const{align=\"left\",style}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const reduceMotion=useReducedMotion()??false;const localeInfo=typeof useLocaleInfo===\"function\"?useLocaleInfo():null;const localePrefix=currentLocalePrefix(localeInfo?.activeLocale?.code||\"\");const panelId=`mm-crumbs-panel-${useId().replace(/:/g,\"\")}`;const crumbs=useMemo(()=>trailFromProps(props,isCanvas),[props,isCanvas]);const trailKey=crumbs.map(crumb=>`${crumb.link} ${crumb.title}`).join(\"\\n\");const navRef=useRef(null);const frameRef=useRef(null);const measureRef=useRef(null);const[metrics,setMetrics]=useState(null);const[hidden,setHidden]=useState([]);const[available,setAvailable]=useState(null);const[open,setOpen]=useState(false);// Where the disclosure sits in the document: under the ellipsis, never past the trail's edge.\n// It is rendered into <body>, because in Framer every stack clips its overflow and the\n// trail's own stack is exactly one row tall, so a panel inside it would never be seen.\nconst[anchor,setAnchor]=useState(null);const panelRef=useRef(null);// Row motion runs only between fits the visitor can see, never during the first paint.\nconst[motionReady,setMotionReady]=useState(false);/** The layer the instance sits in: past Framer's content-sized container around the nav. */const columnElement=()=>navRef.current?.parentElement?.parentElement??null;/** The room the trail has: the column's content width, or the nav's own when there is none. */const availableWidth=useCallback(()=>{const column=columnElement();if(column){const computed=getComputedStyle(column);const padding=Number.parseFloat(computed.paddingLeft)+Number.parseFloat(computed.paddingRight);const width=column.clientWidth-(Number.isFinite(padding)?padding:0);if(width>0)return width;}return navRef.current?.getBoundingClientRect().width??0;},[]);const refit=useCallback(current=>{if(!current)return;const room=availableWidth();setAvailable(room||null);const next=fitBreadcrumbs(current,room);setHidden(previous=>sameIndexes(previous,next)?previous:next);},[availableWidth]);const measureAndFit=useCallback(()=>{const row=measureRef.current;if(!row||typeof window===\"undefined\")return;const rem=Number.parseFloat(getComputedStyle(document.documentElement).fontSize)||16;const width=element=>element?element.getBoundingClientRect().width:0;const next={crumbWidths:Array.from(row.querySelectorAll(\"[data-measure='label']\")).map(label=>Math.ceil(width(label))),separatorWidth:width(row.querySelector(\"[data-measure='separator']\")),ellipsisWidth:width(row.querySelector(\"[data-measure='ellipsis']\")),gap:ROW_GAP,ancestorFloor:ANCESTOR_FLOOR_REM*rem};setMetrics(next);refit(next);},[refit]);// Measure on mount and whenever the trail changes, holding motion until the fit has\n// painted; measure again once web fonts land, because they change every label's width.\nuseLayoutEffect(()=>{setMotionReady(false);setPinned(false);setOpen(false);measureAndFit();const frame=requestAnimationFrame(()=>setMotionReady(true));return()=>cancelAnimationFrame(frame);},[trailKey,measureAndFit]);useEffect(()=>{if(typeof document===\"undefined\"||!document.fonts?.ready)return;let cancelled=false;void document.fonts.ready.then(()=>{if(!cancelled)measureAndFit();});return()=>{cancelled=true;};},[measureAndFit]);useEffect(()=>{const target=columnElement()??navRef.current;if(!target||typeof ResizeObserver===\"undefined\")return;const observer=new ResizeObserver(()=>refit(metrics));observer.observe(target);return()=>observer.disconnect();},[metrics,refit]);useEffect(()=>{if(typeof document===\"undefined\")return;const onPointerDown=event=>{if(!withinDisclosure(event.target))closeDisclosure();};document.addEventListener(\"pointerdown\",onPointerDown);return()=>document.removeEventListener(\"pointerdown\",onPointerDown);},[]);const foldedCrumbs=hidden.map(index=>crumbs[index]).filter(Boolean);useEffect(()=>{if(!foldedCrumbs.length)closeDisclosure();},[foldedCrumbs.length]);const withinDisclosure=node=>Boolean(navRef.current?.contains(node)||panelRef.current?.contains(node));// The panel hangs under the ellipsis, its labels flush with the dots: the button's left,\n// less the panel and link padding. It never runs past the trail's right edge.\nconst PANEL_TEXT_INSET=14;const anchorToTrail=()=>{const nav=navRef.current;const button=nav?.querySelector(\".mm-crumbs__toggle\");if(!nav||!button)return;const trail=nav.getBoundingClientRect();const dots=button.getBoundingClientRect();const left=Math.max(trail.left,dots.left-PANEL_TEXT_INSET);setAnchor({left:left+window.scrollX,top:trail.bottom+window.scrollY+8,maxWidth:Math.max(trail.right-left,160)});};/**\n     * Hovering opens the disclosure, clicking keeps it open.\n     *\n     * A mouse click is always preceded by a hover, so a plain toggle would close the panel the\n     * moment you reached for it. The click pins instead: the panel stays until you click\n     * again, press Escape, or move focus or a pointer outside the trail. Touch and keyboard\n     * have no hover, so for them the click is simply what opens it.\n     */const[pinned,setPinned]=useState(false);const canHover=()=>typeof window!==\"undefined\"&&window.matchMedia(\"(hover: hover) and (pointer: fine)\").matches;const hoverCloseTimer=useRef(null);const cancelHoverClose=()=>{if(hoverCloseTimer.current)clearTimeout(hoverCloseTimer.current);hoverCloseTimer.current=null;};const openDisclosure=()=>{cancelHoverClose();anchorToTrail();setOpen(true);};const closeDisclosure=()=>{cancelHoverClose();setPinned(false);setOpen(false);};const toggleOpen=()=>{if(pinned){closeDisclosure();return;}setPinned(true);openDisclosure();};const openOnHover=event=>{if(event.pointerType!==\"mouse\"||!canHover())return;openDisclosure();};const scheduleHoverClose=()=>{if(!canHover()||pinned)return;cancelHoverClose();hoverCloseTimer.current=setTimeout(()=>setOpen(false),150);};useEffect(()=>cancelHoverClose,[]);const closeAndRefocus=()=>{closeDisclosure();navRef.current?.querySelector(\".mm-crumbs__toggle\")?.focus();};const onKeyDown=event=>{if(event.key===\"Escape\"&&open)closeAndRefocus();};const onBlur=event=>{if(!withinDisclosure(event.relatedTarget))closeDisclosure();};// The panel is not a descendant of the nav, so it closes on resize and scroll rather\n// than chasing the trail around the page.\nuseEffect(()=>{if(!open||typeof window===\"undefined\")return;const close=()=>closeDisclosure();window.addEventListener(\"resize\",close);window.addEventListener(\"scroll\",close,{passive:true});return()=>{window.removeEventListener(\"resize\",close);window.removeEventListener(\"scroll\",close);};},[open]);if(crumbs.length<2)return null;const rowItems=rowItemsFor(crumbs,hidden);const ancestorStyle=index=>{const natural=metrics?.crumbWidths[index];if(natural===undefined||!metrics)return undefined;return{minWidth:Math.min(natural,metrics.ancestorFloor)};};const href=link=>localizeLink(link,localePrefix)||\"#\";const rowClass=`mm-crumbs__row${align===\"left\"?\"\":` mm-crumbs__row--${align}`}`;// Folding is a move, not a cut: crumbs that stay slide to their new place, the ones\n// that leave fade where they stood. Under reduced motion only the fades remain.\nconst animateLayout=motionReady&&!reduceMotion;// While motion is held, leaving items are removed at once instead of fading out.\nconst fade={initial:motionReady?{opacity:0}:false,animate:{opacity:1},exit:motionReady?{opacity:0}:undefined};return /*#__PURE__*/_jsxs(\"nav\",{ref:navRef,\"aria-label\":\"Breadcrumb\",className:\"mm-crumbs\",style:{...style,maxWidth:available??undefined},onKeyDown:onKeyDown,onBlur:onBlur,onPointerEnter:cancelHoverClose,onPointerLeave:scheduleHoverClose,children:[/*#__PURE__*/_jsx(\"style\",{children:CSS}),/*#__PURE__*/_jsx(\"div\",{ref:frameRef,className:\"mm-crumbs__frame\",children:/*#__PURE__*/_jsx(LayoutGroup,{id:`${panelId}-row`,children:/*#__PURE__*/_jsx(\"ol\",{className:rowClass,children:/*#__PURE__*/_jsx(AnimatePresence,{initial:false,children:rowItems.map(item=>{const layoutProps={layout:animateLayout?\"position\":false,transition:{layout:{duration:.3,ease:EASE_ARRAY},opacity:{duration:item.kind===\"separator\"?.15:.2,ease:EASE_ARRAY}},...fade};if(item.kind===\"separator\"){return /*#__PURE__*/_jsx(motion.li,{...layoutProps,className:\"mm-crumbs__item mm-crumbs__item--fixed mm-crumbs__separator\",\"aria-hidden\":\"true\",children:\"/\"},item.key);}if(item.kind===\"current\"){return /*#__PURE__*/_jsx(motion.li,{...layoutProps,className:\"mm-crumbs__item mm-crumbs__current\",\"aria-current\":\"page\",children:item.crumb.title},item.key);}if(item.kind===\"ancestor\"){return /*#__PURE__*/_jsx(motion.li,{...layoutProps,className:\"mm-crumbs__item\",style:ancestorStyle(item.index),children:/*#__PURE__*/_jsx(\"a\",{className:\"mm-crumbs__link\",href:href(item.crumb.link),children:item.crumb.title})},item.key);}return /*#__PURE__*/_jsx(motion.li,{...layoutProps,className:\"mm-crumbs__item mm-crumbs__item--fixed\",children:/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"mm-crumbs__toggle\",\"aria-label\":open?\"Hide levels\":\"Show hidden levels\",\"aria-expanded\":open,\"aria-controls\":panelId,onClick:toggleOpen,onPointerEnter:openOnHover,children:\"…\"})},item.key);})})})})}),typeof document!==\"undefined\"&&/*#__PURE__*/createPortal(/*#__PURE__*/_jsx(AnimatePresence,{children:open&&anchor&&/*#__PURE__*/_jsx(motion.ul,{ref:panelRef,id:panelId,className:\"mm-crumbs__panel\",style:{left:anchor.left,top:anchor.top,maxWidth:anchor.maxWidth},initial:reduceMotion?{opacity:0}:{opacity:0,y:-4,scale:.95},animate:{opacity:1,y:0,scale:1},exit:reduceMotion?{opacity:0}:{opacity:0,y:-4,scale:.95},transition:{duration:open?.2:.15,ease:EASE_ARRAY},onKeyDown:onKeyDown,onBlur:onBlur,onPointerEnter:cancelHoverClose,onPointerLeave:scheduleHoverClose,children:foldedCrumbs.map(crumb=>/*#__PURE__*/_jsx(\"li\",{children:/*#__PURE__*/_jsx(\"a\",{className:\"mm-crumbs__panel-link\",href:href(crumb.link),children:crumb.title})},`${crumb.link}-${crumb.title}`))})}),document.body),/*#__PURE__*/_jsx(\"div\",{className:\"mm-crumbs__measure\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsxs(\"ol\",{ref:measureRef,children:[crumbs.map((crumb,index)=>/*#__PURE__*/_jsx(\"li\",{\"data-measure\":\"label\",children:crumb.title},`${index}-${crumb.title}`)),/*#__PURE__*/_jsx(\"li\",{\"data-measure\":\"separator\",children:\"/\"}),/*#__PURE__*/_jsx(\"li\",{\"data-measure\":\"ellipsis\",style:{width:24},children:\"…\"})]})})]});}addPropertyControls(BreadcrumbsCode,{level1Title:{type:ControlType.String,title:\"Level 1 Title\",defaultValue:\"\",placeholder:\"Leave empty to skip\"},level1Link:{type:ControlType.Link,title:\"Level 1 Link\"},level2Title:{type:ControlType.String,title:\"Level 2 Title\",defaultValue:\"\",placeholder:\"Leave empty to skip\"},level2Link:{type:ControlType.Link,title:\"Level 2 Link\"},level3Title:{type:ControlType.String,title:\"Level 3 Title\",defaultValue:\"\",placeholder:\"Leave empty to skip\"},level3Link:{type:ControlType.Link,title:\"Level 3 Link\"},level4Title:{type:ControlType.String,title:\"Level 4 Title\",defaultValue:\"\",placeholder:\"Leave empty to skip\"},level4Link:{type:ControlType.Link,title:\"Level 4 Link\"},cmsTitle:{type:ControlType.String,title:\"CMS Title\",defaultValue:\"\",placeholder:\"Bind to CMS title\"},cmsLink:{type:ControlType.Link,title:\"CMS Link\"},align:{type:ControlType.Enum,title:\"Align\",defaultValue:\"left\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],displaySegmentedControl:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"BreadcrumbsCode\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BreadcrumbsCode.map"],"mappings":"oVAEoL,SAAS,GAAoB,EAAW,CAAC,IAAM,GAAM,GAAY,GAAA,CAAI,YAAY,EAAE,GAAG,GAAM,EAAsB,GAAM,OAAO,EAAsB,GAAM,GAAG,EAAK,MAAM,GAAG,GAAU,IAAS,OAAY,CAAC,IAAM,GAAS,EAAO,SAAS,SAAS,MAAM,GAAG,CAAC,CAAC,IAAI,GAAA,CAAI,YAAY,EAAE,GAAG,EAAgB,SAAS,CAAO,EAAE,MAAM,IAAI,CAAQ,CAAC,MAAM,EAAG,CAAC,SAAS,GAAa,EAAK,EAAO,CAAC,GAAG,CAAC,GAAQ,CAAC,GAAM,CAAC,EAAK,WAAW,GAAG,EAAE,OAAO,EAAK,IAAM,GAAS,EAAK,MAAM,GAAG,CAAC,CAAC,IAAI,GAAA,CAAI,YAAY,EAAmD,OAA9C,EAAgB,SAAS,CAAO,EAAS,EAAY,IAAO,IAAI,EAAO,IAAI,EAAO,CAAK,CAAmG,SAAS,EAAS,EAAM,CAAC,GAAG,OAAO,GAAQ,SAAS,OAAO,EAAM,GAAG,CAAC,GAAO,OAAO,GAAQ,SAAS,MAAM,GAAG,IAAM,EAAU,EAAM,OAAO,EAAS,EAAU,KAAK,GAAG,EAAS,EAAU,GAAG,GAAG,EAAS,EAAU,IAAI,CAAE,CAEp6B,SAAS,GAAe,EAAM,EAAS,CAAC,IAAM,EAAO,CAAC,EAAE,IAAI,IAAI,EAAM,EAAE,GAAO,EAAY,IAAQ,CAAC,IAAM,EAAM,OAAO,EAAM,QAAQ,EAAM,SAAS,EAAE,CAAC,CAAC,KAAK,EAAK,GAAM,EAAO,KAAK,CAAC,QAAM,KAAK,EAAS,EAAM,QAAQ,EAAM,MAAM,CAAC,CAAC,CAAE,CAAC,IAAM,EAAS,OAAO,EAAM,UAAU,EAAE,CAAC,CAAC,KAAK,EAAyE,OAApE,GAAS,EAAO,KAAK,CAAC,MAAM,EAAS,KAAK,EAAS,EAAM,OAAO,CAAC,CAAC,EAAS,EAAO,OAAO,EAAO,EAAS,EAAc,CAAC,CAAE,CAAqH,SAAS,EAAc,EAAM,CAAC,IAAM,EAAO,EAAM,EAAE,GAAG,EAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAM,GAAO,EAAK,IAAK,EAAK,EAAG,CAAC,EAAE,MAAM,KAAK,CAAC,OAAO,EAAG,EAAK,CAAC,GAAG,EAAE,IAAS,EAAK,CAAM,EAAQ,EAAM,CAAC,CAAC,EAAE,EAAM,EAAE,CAAM,EAAE,EAAM,EAAE,CAAM,CAAC,EAAE,OAAO,EAAM,QAAQ,EAAK,IAAQ,IAAQ,GAAG,EAAK,QAAQ,GAAmB,EAAK,OAAO,EAAM,EAAM,EAAE,CAAC,MAAM,CAAE,CAAC,SAAS,EAAS,EAAQ,EAAO,EAAc,CAAC,IAAM,EAAa,EAAQ,YAAY,OAAO,EAAQ,EAAO,IAAI,IAAI,CAAM,EAAM,EAAM,IAAO,KAAK,GAAU,EAAM,EAAO,KAAK,EAAE,EAAQ,cAAc,EAAE,EAAQ,YAAY,SAAS,EAAQ,IAAQ,CAAI,EAAO,IAAI,CAAK,IAAS,GAAO,EAAE,GAAO,IAAQ,EAAa,EAAQ,EAAc,CAAK,EAAE,CAAC,EAAE,IAAM,EAAW,KAAK,IAAI,EAAE,EAAM,CAAC,EAAE,OAAO,EAAM,EAAW,EAAQ,eAAe,KAAK,IAAI,EAAE,EAAM,EAAW,CAAC,EAAE,EAAQ,GAAI,CAAC,SAAS,GAAe,EAAQ,EAAU,CAAC,GAAG,EAAE,EAAU,IAAI,EAAQ,YAAY,OAAO,EAAE,MAAM,CAAC,EAAE,IAAM,EAAM,EAAc,EAAQ,YAAY,MAAM,EAAQ,EAAQ,GAAO,EAAQ,YAAY,GAAa,EAAU,GAAO,KAAK,IAAI,EAAQ,YAAY,GAAO,EAAQ,aAAa,EAAE,IAAI,IAAM,KAAQ,EAAgE,GAAtD,EAAS,EAAQ,EAAK,CAAO,GAAG,GAAyB,EAAS,EAAQ,EAAK,CAAS,GAAG,EAAU,OAAO,EAAM,OAAO,EAAM,EAAM,OAAO,EAAG,CA0Br3D,SAAS,GAAY,EAAO,EAAO,CAAC,IAAM,EAAO,IAAI,IAAI,CAAM,EAAQ,EAAI,CAAC,EAAQ,EAAI,GAAM,CAAI,EAAI,QAAO,EAAI,KAAK,CAAC,KAAK,YAAY,IAAI,SAAS,EAAI,EAAI,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,EAAI,KAAK,CAAI,CAAE,EAAwS,OAAtS,EAAO,SAAS,EAAM,IAAQ,CAAC,GAAG,EAAO,IAAI,CAAK,EAAE,CAAI,EAAI,EAAI,OAAO,EAAE,EAAE,OAAO,YAAW,EAAI,CAAC,KAAK,WAAW,IAAI,UAAU,CAAC,EAAE,MAAO,CAAC,IAAM,EAAI,GAAG,EAAM,GAAG,EAAM,QAAc,EAAU,IAAQ,EAAO,OAAO,EAAE,EAAI,EAAU,CAAC,KAAK,UAAU,MAAI,OAAK,EAAE,CAAC,KAAK,WAAW,MAAI,QAAM,OAAK,CAAC,CAAE,CAAC,EAAS,CAAI,CAGhf,SAAwB,EAAgB,EAAM,CAAC,GAAK,CAAC,QAAM,OAAO,SAAO,EAAY,EAAS,EAAa,QAAQ,IAAI,EAAa,OAAa,EAAa,GAAiB,GAAG,GAAoF,GAAa,IAA1E,OAAO,GAAgB,WAAW,EAAc,EAAE,KAAA,EAAwD,cAAc,MAAM,EAAE,EAAQ,EAAQ,mBAAmBA,GAAM,CAAC,CAAC,QAAQ,KAAK,EAAE,IAAU,EAAOC,MAAY,GAAe,EAAM,CAAQ,EAAE,CAAC,EAAM,CAAQ,CAAC,EAAQ,EAAS,EAAO,IAAI,GAAO,GAAG,EAAM,KAAK,GAAG,EAAM,OAAO,CAAC,CAAC,KAAK;CAAI,EAAQ,EAAOC,EAAO,IAAI,EAAQ,EAASA,EAAO,IAAI,EAAQ,EAAWA,EAAO,IAAI,EAAO,CAAC,EAAQ,GAAYC,EAAS,IAAI,EAAO,CAAC,EAAO,GAAWA,EAAS,CAAC,CAAC,EAAO,CAAC,EAAU,GAAcA,EAAS,IAAI,EAAO,CAAC,EAAK,GAASA,EAAS,EAAK,EAG5wB,CAAC,EAAO,IAAWA,EAAS,IAAI,EAAQ,EAASD,EAAO,IAAI,EAC5D,CAAC,EAAY,GAAgBC,EAAS,EAAK,EAAoG,MAAkB,EAAO,SAAS,eAAe,eAAe,KAA0G,EAAeC,MAAgB,CAAC,IAAM,EAAO,EAAc,EAAE,GAAG,EAAO,CAAC,IAAM,EAAS,iBAAiB,CAAM,EAAQ,EAAQ,OAAO,WAAW,EAAS,WAAW,EAAE,OAAO,WAAW,EAAS,YAAY,EAAQ,EAAM,EAAO,aAAa,OAAO,SAAS,CAAO,EAAE,EAAQ,GAAG,GAAG,EAAM,EAAE,OAAO,CAAM,CAAC,OAAO,EAAO,SAAS,sBAAsB,CAAC,CAAC,OAAO,CAAE,EAAE,CAAC,CAAC,EAAQ,EAAMA,EAAY,GAAS,CAAC,GAAG,CAAC,EAAQ,OAAO,IAAM,EAAK,EAAe,EAAE,EAAa,GAAM,IAAI,EAAE,IAAM,EAAK,GAAe,EAAQ,CAAI,EAAE,EAAU,GAAU,EAAY,EAAS,CAAI,EAAE,EAAS,CAAI,CAAE,EAAE,CAAC,CAAc,CAAC,EAAQ,EAAcA,MAAgB,CAAC,IAAM,EAAI,EAAW,QAAQ,GAAG,CAAC,GAAY,IAAS,OAAY,OAAO,IAAM,EAAI,OAAO,WAAW,iBAAiB,SAAS,eAAe,CAAC,CAAC,QAAQ,GAAG,GAAS,EAAM,GAAS,EAAQ,EAAQ,sBAAsB,CAAC,CAAC,MAAM,EAAQ,EAAK,CAAC,YAAY,MAAM,KAAK,EAAI,iBAAiB,wBAAwB,CAAC,CAAC,CAAC,IAAI,GAAO,KAAK,KAAK,EAAM,CAAK,CAAC,CAAC,EAAE,eAAe,EAAM,EAAI,cAAc,4BAA4B,CAAC,EAAE,cAAc,EAAM,EAAI,cAAc,2BAA2B,CAAC,EAAE,IAAI,EAAQ,cAAc,EAAmB,CAAG,EAAE,EAAW,CAAI,EAAE,EAAM,CAAI,CAAE,EAAE,CAAC,CAAK,CAAC,EAE7+C,MAAoB,CAAC,EAAe,EAAK,EAAE,EAAU,EAAK,EAAE,EAAQ,EAAK,EAAE,EAAc,EAAE,IAAM,EAAM,0BAA0B,EAAe,EAAI,CAAC,EAAE,UAAU,qBAAqB,CAAK,CAAE,EAAE,CAAC,EAAS,CAAa,CAAC,EAAE,MAAc,CAAC,GAAG,OAAO,SAAW,KAAa,CAAC,SAAS,OAAO,MAAM,OAAO,IAAI,EAAU,GAA2E,OAArE,SAAc,MAAM,MAAM,SAAS,CAAK,GAAU,EAAc,CAAE,CAAC,MAAY,CAAC,EAAU,EAAK,CAAE,EAAE,CAAC,CAAa,CAAC,EAAE,MAAc,CAAC,IAAM,EAAO,EAAc,GAAG,EAAO,QAAQ,GAAG,CAAC,GAAQ,OAAO,eAAiB,IAAY,OAAO,IAAM,EAAS,IAAI,mBAAmB,EAAM,CAAO,CAAC,EAA2B,OAAzB,EAAS,QAAQ,CAAM,MAAY,EAAS,WAAW,CAAE,EAAE,CAAC,EAAQ,CAAK,CAAC,EAAE,MAAc,CAAC,GAAG,OAAO,SAAW,IAAY,OAAO,IAAM,EAAc,GAAO,CAAK,EAAiB,EAAM,MAAM,GAAE,EAAgB,CAAE,EAAyD,OAAvD,SAAS,iBAAiB,cAAc,CAAa,MAAY,SAAS,oBAAoB,cAAc,CAAa,CAAE,EAAE,CAAC,CAAC,EAAE,IAAM,EAAa,EAAO,IAAI,GAAO,EAAO,EAAM,CAAC,CAAC,OAAO,OAAO,EAAE,MAAc,CAAK,EAAa,QAAO,EAAgB,CAAE,EAAE,CAAC,EAAa,MAAM,CAAC,EAAE,IAAM,EAAiB,GAAM,GAAQ,EAAO,SAAS,SAAS,CAAI,GAAG,EAAS,SAAS,SAAS,CAAI,GAE1oC,OAAkB,CAAC,IAAM,EAAI,EAAO,QAAc,EAAO,GAAK,cAAc,oBAAoB,EAAE,GAAG,CAAC,GAAK,CAAC,EAAO,OAAO,IAAM,EAAM,EAAI,sBAAsB,EAAQ,EAAK,EAAO,sBAAsB,EAAQ,EAAK,KAAK,IAAI,EAAM,KAAK,EAAK,KAAK,EAAgB,EAAE,GAAU,CAAC,KAAK,EAAK,EAAO,QAAQ,IAAI,EAAM,OAAO,EAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,EAAM,MAAM,EAAK,GAAG,CAAC,CAAC,CAAE,EAO3Y,CAAC,EAAO,GAAWD,EAAS,EAAK,EAAQ,MAAoB,IAAS,QAAa,EAAO,WAAW,oCAAoC,CAAC,CAAC,QAAc,EAAgBD,EAAO,IAAI,EAAQ,MAAqB,CAAI,EAAgB,SAAQ,aAAa,EAAgB,OAAO,EAAE,EAAgB,QAAQ,IAAK,EAAQ,OAAmB,CAAC,EAAiB,EAAE,GAAc,EAAE,EAAQ,EAAI,CAAE,EAAQ,MAAoB,CAAC,EAAiB,EAAE,EAAU,EAAK,EAAE,EAAQ,EAAK,CAAE,EAAQ,OAAe,CAAC,GAAG,EAAO,CAAC,EAAgB,EAAE,MAAO,CAAC,EAAU,EAAI,EAAE,GAAe,CAAE,EAAQ,GAAY,GAAO,CAAI,EAAM,cAAc,SAAS,CAAC,EAAS,GAAS,GAAe,CAAE,EAAQ,MAAuB,CAAI,CAAC,EAAS,GAAG,IAAc,EAAiB,EAAE,EAAgB,QAAQ,eAAe,EAAQ,EAAK,EAAE,GAAG,EAAE,EAAE,MAAc,EAAiB,CAAC,CAAC,EAAE,IAAM,OAAoB,CAAC,EAAgB,EAAE,EAAO,SAAS,cAAc,oBAAoB,CAAC,EAAE,MAAM,CAAE,EAAQ,GAAU,GAAO,CAAI,EAAM,MAAM,UAAU,GAAK,GAAgB,CAAE,EAAQ,GAAO,GAAO,CAAK,EAAiB,EAAM,aAAa,GAAE,EAAgB,CAAE,EAEryB,GAA1S,MAAc,CAAC,GAAG,CAAC,GAAa,IAAS,OAAY,OAAO,IAAM,MAAU,EAAgB,EAAiG,OAA/F,EAAO,iBAAiB,SAAS,CAAK,EAAE,EAAO,iBAAiB,SAAS,EAAM,CAAC,QAAQ,EAAI,CAAC,MAAY,CAAC,EAAO,oBAAoB,SAAS,CAAK,EAAE,EAAO,oBAAoB,SAAS,CAAK,CAAE,CAAE,EAAE,CAAC,CAAI,CAAC,EAAK,EAAO,OAAO,EAAE,OAAO,KAAK,IAAM,GAAS,GAAY,EAAO,CAAM,EAAQ,GAAc,GAAO,CAAC,IAAM,EAAQ,GAAS,YAAY,GAAU,SAAU,IAAA,IAAW,CAAC,GAAyB,MAAM,CAAC,SAAS,KAAK,IAAI,EAAQ,EAAQ,aAAa,CAAC,CAAE,EAAQ,EAAK,GAAM,GAAa,EAAK,EAAY,GAAG,IAAU,GAAS,iBAAiB,IAAQ,OAAO,GAAG,oBAAoB,MAE5pB,GAAc,GAAa,CAAC,EAC5B,GAAK,CAAC,QAAQ,EAAY,CAAC,QAAQ,CAAC,EAAE,GAAM,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAY,CAAC,QAAQ,CAAC,EAAE,IAAA,EAAS,EAAE,OAAoB,EAAM,MAAM,CAAC,IAAI,EAAO,aAAa,aAAa,UAAU,YAAY,MAAM,CAAC,GAAG,EAAM,SAAS,GAAW,IAAA,EAAS,EAAY,aAAiB,UAAO,eAAe,EAAiB,eAAe,EAAmB,SAAS,CAAc,EAAK,QAAQ,CAAC,SAAS,CAAG,CAAC,EAAe,EAAK,MAAM,CAAC,IAAI,EAAS,UAAU,mBAAmB,SAAsB,EAAK,GAAY,CAAC,GAAG,GAAG,EAAQ,MAAM,SAAsB,EAAK,KAAK,CAAC,UAAU,GAAS,SAAsB,EAAK,GAAgB,CAAC,QAAQ,GAAM,SAAS,GAAS,IAAI,GAAM,CAAC,IAAM,EAAY,CAAC,OAAO,GAAc,WAAW,GAAM,WAAW,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAU,EAAE,QAAQ,CAAC,SAAS,EAAK,OAAO,YAAY,IAAI,GAAG,KAAK,CAAU,CAAC,EAAE,GAAG,EAAI,EAAwoB,OAAnoB,EAAK,OAAO,YAAiC,EAAK,EAAO,GAAG,CAAC,GAAG,EAAY,UAAU,8DAA8D,cAAc,OAAO,SAAS,GAAG,EAAE,EAAK,GAAG,EAAM,EAAK,OAAO,UAA+B,EAAK,EAAO,GAAG,CAAC,GAAG,EAAY,UAAU,qCAAqC,eAAe,OAAO,SAAS,EAAK,MAAM,KAAK,EAAE,EAAK,GAAG,EAAM,EAAK,OAAO,WAAgC,EAAK,EAAO,GAAG,CAAC,GAAG,EAAY,UAAU,kBAAkB,MAAM,GAAc,EAAK,KAAK,EAAE,SAAsB,EAAK,IAAI,CAAC,UAAU,kBAAkB,KAAK,EAAK,EAAK,MAAM,IAAI,EAAE,SAAS,EAAK,MAAM,KAAK,CAAC,CAAC,EAAE,EAAK,GAAG,EAAuB,EAAK,EAAO,GAAG,CAAC,GAAG,EAAY,UAAU,yCAAyC,SAAsB,EAAK,SAAS,CAAC,KAAK,SAAS,UAAU,oBAAoB,aAAa,EAAK,cAAc,qBAAqB,gBAAgB,EAAK,gBAAgB,EAAQ,QAAQ,GAAW,eAAe,GAAY,SAAS,GAAG,CAAC,CAAC,EAAE,EAAK,GAAG,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,SAAW,KAA0B,GAA0B,EAAK,GAAgB,CAAC,SAAS,GAAM,GAAqB,EAAK,EAAO,GAAG,CAAC,IAAI,EAAS,GAAG,EAAQ,UAAU,mBAAmB,MAAM,CAAC,KAAK,EAAO,KAAK,IAAI,EAAO,IAAI,SAAS,EAAO,QAAQ,EAAE,QAAQ,EAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,KAAK,EAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,GAAG,EAAE,WAAW,CAAC,SAAS,EAAK,GAAG,IAAI,KAAK,CAAU,EAAY,aAAiB,UAAO,eAAe,EAAiB,eAAe,EAAmB,SAAS,EAAa,IAAI,GAAoB,EAAK,KAAK,CAAC,SAAsB,EAAK,IAAI,CAAC,UAAU,wBAAwB,KAAK,EAAK,EAAM,IAAI,EAAE,SAAS,EAAM,KAAK,CAAC,CAAC,EAAE,GAAG,EAAM,KAAK,GAAG,EAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,EAAe,EAAK,MAAM,CAAC,UAAU,qBAAqB,cAAc,OAAO,SAAsB,EAAM,KAAK,CAAC,IAAI,EAAW,SAAS,CAAC,EAAO,KAAK,EAAM,IAAqB,EAAK,KAAK,CAAC,eAAe,QAAQ,SAAS,EAAM,KAAK,EAAE,GAAG,EAAM,GAAG,EAAM,OAAO,CAAC,EAAe,EAAK,KAAK,CAAC,eAAe,YAAY,SAAS,GAAG,CAAC,EAAe,EAAK,KAAK,CAAC,eAAe,WAAW,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,6CArDx7F,IAA+E,KAA+E,IAAoC,IAAuF,EAE3U,EAAgB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAQ,EAAsB,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,QAAQ,MAAM,QAAQ,MAAM,GAAG,MAAM,GAAG,KAAK,EAAi4B,EAAY,EAEzjC,EAAc,CAAC,CAAC,MAAM,eAAe,KAAK,GAAG,EAAE,CAAC,MAAM,YAAY,KAAK,YAAY,EAAE,CAAC,MAAM,UAAU,KAAK,oBAAoB,CAAC,EAAyf,EAAkB,EAA6uC,GAAa,EAAK,IAAQ,EAAK,SAAS,EAAM,QAAQ,EAAK,OAAO,EAAM,IAAQ,IAAQ,EAAM,EAAM,EAK59D,EAAK,sFAA4F,EAAK,iCAAuC,EAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAQ,EAAmB,EAAQ,EAAQ,EAAQ,EAAI;wJACzE,EAAK;;gFAE7E,EAAQ;;;;8MAIsH,EAAK;;;;wQAIqD,EAAK,oBAAoB,EAAK;;;;oSAIF,EAAK;+PAC1C,EAAK;;;uFAG7K,EAAQ;;EAyBk5F,EAAoB,EAAgB,CAAC,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,YAAY,qBAAqB,EAAE,WAAW,CAAC,KAAK,EAAY,KAAK,MAAM,cAAc,EAAE,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,YAAY,qBAAqB,EAAE,WAAW,CAAC,KAAK,EAAY,KAAK,MAAM,cAAc,EAAE,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,YAAY,qBAAqB,EAAE,WAAW,CAAC,KAAK,EAAY,KAAK,MAAM,cAAc,EAAE,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,YAAY,qBAAqB,EAAE,WAAW,CAAC,KAAK,EAAY,KAAK,MAAM,cAAc,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,YAAY,mBAAmB,EAAE,QAAQ,CAAC,KAAK,EAAY,KAAK,MAAM,UAAU,EAAE,MAAM,CAAC,KAAK,EAAY,KAAK,MAAM,QAAQ,aAAa,OAAO,QAAQ,CAAC,OAAO,SAAS,OAAO,EAAE,aAAa,CAAC,OAAO,SAAS,OAAO,EAAE,wBAAwB,EAAI,CAAC,CAAC"}