{"version":3,"file":"Slider.lrxLTSWH.mjs","names":["useRef","useId","_Fragment"],"sources":["https:/framerusercontent.com/modules/PxkFhho65I7svX6ILzxo/WQcFweVkvDwLoRciCkXr/Slider.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect,useId,useRef}from\"react\";/**\n * Slider: één carrousel voor de hele site, waar je via de slot \"Kaarten\"\n * elk canvas-component in kunt hangen.\n *\n * Vervangt de drie losse carrousels die er los van elkaar waren gebouwd\n * (aanbodrij op de vakpagina, vakkenrij op /pakketten, Voordelen Slider op de\n * homepage). Wat dit component zelf regelt en wat je dus niet meer per pagina\n * hoeft na te bouwen:\n *\n * - de oneindige lus in BEIDE richtingen. De kaarten worden intern verdubbeld,\n *   dus je zet ze maar één keer in de slot. scrollLeft wordt in een band\n *   gehouden die midden in de verdubbelde inhoud ligt, zodat er links en rechts\n *   altijd inhoud over is (een browser klemt scrollLeft immers op 0);\n * - scroll-snapping, zodat een veeg op telefoon altijd netjes uitlijnt;\n * - slepen met de muis met een lichte uitloop, want CSS-snapping grijpt alleen\n *   in bij een echte scroll en niet bij een sleep;\n * - het langzaam automatisch doorschuiven, zoals de Reviews Ticker, dat stilvalt\n *   zodra je er met de muis overheen gaat en dat onder 1200px en op touch\n *   helemaal uit staat;\n * - twee ronde pijlknoppen, standaard alleen op tablet en telefoon.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 1200\n * @framerIntrinsicHeight 560\n */export default function Slider(props){const{kaarten=[],gap=24,zijpadding=24,bovenpadding=8,onderpadding=24,oneindig=true,automatisch=true,snelheid=35,knoppen=\"touch\",knopVulling=\"#ffffff\",knopRand=\"rgba(19, 24, 61, 0.14)\",knopIcoon=\"#13183d\",style}=props;const viewportRef=useRef(null);/** Tot wanneer het automatisch schuiven zijn mond houdt, zodat het een\n     *  vloeiende scrollTo van een sleep of een pijlknop niet afkapt. */const wachtRef=useRef(0);const klasse=\"jojo-slider-\"+useId().replace(/[^a-zA-Z0-9]/g,\"\");const reeks=kaarten.length;const lus=oneindig&&reeks>1;const SNAP=\"x mandatory\";/** Breedte van één kaart plus de tussenruimte: de afstand tussen twee snappunten. */function pitch(el){const kaart=el.firstElementChild;if(!kaart)return el.clientWidth*.8;return kaart.getBoundingClientRect().width+gap;}/**\n     * De band waarbinnen scrollLeft mag liggen: precies één reeks lang en\n     * gecentreerd in de verdubbelde inhoud, zodat er aan beide kanten evenveel\n     * over is. Werkt alleen als één reeks breder is dan het venster.\n     */function band(el){const breedte=pitch(el)*reeks;return{breedte,laag:Math.max(0,(breedte-el.clientWidth)/2)};}/** Zet scrollLeft terug in de band. De sprong is precies één reeks, dus je\n     *  blijft op hetzelfde snappunt staan en ziet identieke kaarten. */function normaliseer(el){if(!lus)return;const{breedte,laag}=band(el);if(!breedte||breedte<=el.clientWidth)return;let x=el.scrollLeft;if(x>=laag&&x<laag+breedte)return;while(x>=laag+breedte)x-=breedte;while(x<laag)x+=breedte;const bewaard=el.style.scrollSnapType;el.style.scrollSnapType=\"none\";el.scrollLeft=x;void el.offsetWidth;el.style.scrollSnapType=bewaard||SNAP;}function stap(richting){const el=viewportRef.current;if(!el)return;// Eerst de lus terugzetten, dan pas animeren: een correctie tijdens een\n// vloeiende animatie wordt door de browser afgekapt.\nnormaliseer(el);const p=pitch(el);wachtRef.current=(typeof performance!==\"undefined\"?performance.now():0)+500;el.scrollTo({left:(Math.round(el.scrollLeft/p)+richting)*p,behavior:\"smooth\"});}useEffect(()=>{const el=viewportRef.current;if(!el)return;const kanMeten=typeof window!==\"undefined\"&&typeof window.matchMedia===\"function\";const vraag=q=>kanMeten?window.matchMedia(q):{matches:false};/**\n         * Automatisch schuiven vraagt TWEE dingen tegelijk, en allebei om hun\n         * eigen reden:\n         *\n         * - vanaf 1200px, dezelfde grens waarop de pijlknoppen verdwijnen. Op de\n         *   Tablet- en Phone-breakpoint hoort hij stil te staan, en dat geldt ook\n         *   voor een desktopvenster dat naar die maat is versmald: in de preview\n         *   van Framer en in de apparaatweergave van een browser kijk je met een\n         *   echte muis naar een telefoonbreedte, en dan is de apparaattoets\n         *   hieronder niet genoeg;\n         * - een muisapparaat, want het stoppen hangt aan hover. Op touch bestaat\n         *   hover niet, dus daar zou hij nooit meer stilvallen. Een brede tablet\n         *   in liggende stand komt daarmee door de breedtetoets maar niet door\n         *   deze.\n         *\n         * Zonder lus zou hij tegen het einde aanlopen en daar blijven staan,\n         * vandaar dat `lus` ook een voorwaarde is.\n         */const mqBreed=vraag(\"(min-width: 1200px) and (hover: hover) and (pointer: fine)\");const mqRustig=vraag(\"(prefers-reduced-motion: reduce)\");const magAuto=()=>automatisch&&lus&&snelheid>0&&mqBreed.matches&&!mqRustig.matches;/** Waar het snappen naar terug moet: tijdens automatisch schuiven uit,\n         *  want mandatory snapping vecht met een scrollLeft per frame. */const rust=()=>magAuto()?\"none\":SNAP;// Meteen in de band gaan staan, anders begin je op 0 en kun je de eerste\n// keer niet naar links. De kaarten links zijn identiek, dus je ziet niets.\nconst start=requestAnimationFrame(()=>normaliseer(el));let bezig;const opScroll=()=>{const max=el.scrollWidth-el.clientWidth;// Tegen een harde rand staat het scrollen toch al stil, dus daar mag\n// de correctie meteen; midden in een beweging niet, want dan hak je\n// de vaart eraf.\nif(el.scrollLeft<=2||el.scrollLeft>=max-2){if(bezig)clearTimeout(bezig);normaliseer(el);return;}if(bezig)clearTimeout(bezig);bezig=setTimeout(()=>normaliseer(el),140);};let actief=false;let pointerLuisteraarsActief=false;let startX=0;let startScroll=0;let gesleept=0;let vorigeX=0;let vorigeT=0;let snelheidSleep=0;/** Een selectie die er al stond weghalen, zodat er tijdens het slepen\n         *  geen blauwe balk in de kaarten blijft staan. */const wisSelectie=()=>{const sel=typeof window!==\"undefined\"&&window.getSelection?window.getSelection():null;if(sel&&!sel.isCollapsed)sel.removeAllRanges();};const omlaag=e=>{if(e.pointerType!==\"mouse\"||e.button!==0)return;actief=true;gesleept=0;snelheidSleep=0;startX=e.clientX;vorigeX=e.clientX;vorigeT=e.timeStamp;startScroll=el.scrollLeft;el.style.scrollSnapType=\"none\";// Slepen is schuiven, geen selecteren: zolang de knop ingedrukt is\n// mag de tekst in de kaarten niet oplichten.\nel.style.userSelect=\"none\";el.style.setProperty(\"-webkit-user-select\",\"none\");wisSelectie();koppelPointerLuisteraars();};const beweeg=e=>{if(!actief)return;const dx=e.clientX-startX;if(Math.abs(dx)<3)return;gesleept=Math.abs(dx);const dt=e.timeStamp-vorigeT;if(dt>0)snelheidSleep=(e.clientX-vorigeX)/dt;vorigeX=e.clientX;vorigeT=e.timeStamp;el.scrollLeft=startScroll-dx;el.style.cursor=\"grabbing\";wisSelectie();e.preventDefault();};const koppelPointerLuisteraars=()=>{if(pointerLuisteraarsActief)return;window.addEventListener(\"pointermove\",beweeg);window.addEventListener(\"pointerup\",omhoog);window.addEventListener(\"pointercancel\",omhoog);pointerLuisteraarsActief=true;};const ontkoppelPointerLuisteraars=()=>{if(!pointerLuisteraarsActief)return;window.removeEventListener(\"pointermove\",beweeg);window.removeEventListener(\"pointerup\",omhoog);window.removeEventListener(\"pointercancel\",omhoog);pointerLuisteraarsActief=false;};const omhoog=()=>{if(!actief)return;actief=false;ontkoppelPointerLuisteraars();el.style.cursor=\"\";el.style.userSelect=\"\";el.style.removeProperty(\"-webkit-user-select\");if(gesleept>8){// Een sleep mag geen klik op de kaart eronder worden.\nconst slik=ev=>{ev.preventDefault();ev.stopPropagation();};el.addEventListener(\"click\",slik,{capture:true,once:true});setTimeout(()=>el.removeEventListener(\"click\",slik,{capture:true}),0);}// Lichte uitloop in de richting waarin je losliet, daarna naar het\n// dichtstbijzijnde snappunt.\nconst p=pitch(el);const uitloop=Math.max(-p,Math.min(p,-snelheidSleep*90));wachtRef.current=(typeof performance!==\"undefined\"?performance.now():0)+500;el.scrollTo({left:Math.round((el.scrollLeft+uitloop)/p)*p,behavior:\"smooth\"});setTimeout(()=>{el.style.scrollSnapType=rust();normaliseer(el);},420);};/**\n         * De selectie stoppen hoort op `selectstart` en niet op `pointerdown`:\n         * de browser vuurt selectstart net voordat hij begint te selecteren, dus\n         * een preventDefault hier haalt alleen de selectie weg. Een\n         * preventDefault op pointerdown zou ook de focus en de klik op een link\n         * in de kaart afpakken. selectstart borrelt op uit de kaart, dus de\n         * luisteraar kan op het venster blijven staan.\n         */const opSelectie=e=>{if(actief)e.preventDefault();};el.addEventListener(\"scroll\",opScroll,{passive:true});el.addEventListener(\"pointerdown\",omlaag);el.addEventListener(\"selectstart\",opSelectie);// --- Automatisch schuiven ------------------------------------------\nlet raf=0;let hover=false;let focus=false;let inBeeld=true;let vorigeFrame=0;/** De eigen, niet-afgeronde positie. De browser mag scrollLeft afronden;\n         *  door zelf een float bij te houden blijft de snelheid kloppen. */let doel=0;const opHover=()=>{hover=true;};const opWeg=()=>{hover=false;};const opFocus=()=>{focus=true;};const opBlur=()=>{focus=false;};let waarnemer;const tik=t=>{raf=requestAnimationFrame(tik);if(!vorigeFrame){vorigeFrame=t;doel=el.scrollLeft;return;}// Klemmen, anders schiet hij een halve reeks door na een tabwissel.\nconst dt=Math.min(t-vorigeFrame,50);vorigeFrame=t;if(hover||focus||actief||!inBeeld||t<wachtRef.current){doel=el.scrollLeft;return;}// Iets anders heeft de scrollpositie verzet (een sleep, een pijl,\n// de luscorrectie): meelopen in plaats van terugtrekken.\nif(Math.abs(el.scrollLeft-doel)>2)doel=el.scrollLeft;doel+=snelheid*dt/1e3;el.scrollLeft=doel;const voor=el.scrollLeft;normaliseer(el);if(el.scrollLeft!==voor)doel=el.scrollLeft;};el.addEventListener(\"mouseenter\",opHover);el.addEventListener(\"mouseleave\",opWeg);el.addEventListener(\"focusin\",opFocus);el.addEventListener(\"focusout\",opBlur);if(typeof IntersectionObserver===\"function\"){waarnemer=new IntersectionObserver(regels=>{inBeeld=regels.some(r=>r.isIntersecting);},{rootMargin:\"128px\"});waarnemer.observe(el);}/**\n         * Aan- en uitzetten op het moment dat de meting omslaat, en niet één keer\n         * bij het laden. Anders blijft een venster dat over de 1200px heen wordt\n         * gesleept staan op wat het bij het laden toevallig was, en dat is precies\n         * wat je in de preview van Framer ziet als je van breakpoint wisselt.\n         */const herzie=()=>{const aan=magAuto();if(aan&&!raf){el.style.scrollSnapType=\"none\";vorigeFrame=0;raf=requestAnimationFrame(tik);}else if(!aan&&raf){cancelAnimationFrame(raf);raf=0;el.style.scrollSnapType=SNAP;normaliseer(el);}};// Safari kende tot 14 alleen addListener; vandaar de terugval.\nconst luister=mq=>{if(typeof mq.addEventListener===\"function\")mq.addEventListener(\"change\",herzie);else if(typeof mq.addListener===\"function\")mq.addListener(herzie);};const zwijg=mq=>{if(typeof mq.removeEventListener===\"function\")mq.removeEventListener(\"change\",herzie);else if(typeof mq.removeListener===\"function\")mq.removeListener(herzie);};if(kanMeten){luister(mqBreed);luister(mqRustig);}herzie();return()=>{cancelAnimationFrame(start);el.removeEventListener(\"scroll\",opScroll);el.removeEventListener(\"pointerdown\",omlaag);el.removeEventListener(\"selectstart\",opSelectie);ontkoppelPointerLuisteraars();el.removeEventListener(\"mouseenter\",opHover);el.removeEventListener(\"mouseleave\",opWeg);el.removeEventListener(\"focusin\",opFocus);el.removeEventListener(\"focusout\",opBlur);if(kanMeten){zwijg(mqBreed);zwijg(mqRustig);}if(waarnemer)waarnemer.disconnect();if(raf)cancelAnimationFrame(raf);if(bezig)clearTimeout(bezig);};},[reeks,gap,lus,automatisch,snelheid]);const rijen=lus?[0,1]:[0];const knopStijl={width:48,height:48,borderRadius:100,background:knopVulling,border:\"1px solid \"+knopRand,boxShadow:\"0px 2px 6px 0px rgba(19, 24, 61, 0.08)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",cursor:\"pointer\",padding:0,color:knopIcoon};return /*#__PURE__*/_jsxs(\"div\",{style:{...style,display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:24},children:[/*#__PURE__*/_jsx(\"style\",{children:`.${klasse}{scrollbar-width:none;-ms-overflow-style:none;cursor:grab;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scroll-snap-type:${SNAP};scroll-padding-left:${zijpadding}px;scroll-padding-right:${zijpadding}px}\n.${klasse}::-webkit-scrollbar{display:none}\n.${klasse}>*{scroll-snap-align:start;scroll-snap-stop:always;flex:0 0 auto}\n.${klasse} img{-webkit-user-drag:none;user-select:none}\n@media (prefers-reduced-motion: reduce){.${klasse}{scroll-behavior:auto}}\n.${klasse}-knoppen{display:flex;flex-direction:row;gap:16px}\n${knoppen===\"touch\"?`@media (min-width:1200px){.${klasse}-knoppen{display:none}}`:\"\"}\n${knoppen===\"nooit\"?`.${klasse}-knoppen{display:none!important}`:\"\"}`}),/*#__PURE__*/_jsx(\"div\",{ref:viewportRef,className:klasse,style:{display:\"flex\",flexDirection:\"row\",gap,width:\"100%\",overflowX:\"auto\",overflowY:\"hidden\",padding:`${bovenpadding}px ${zijpadding}px ${onderpadding}px ${zijpadding}px`},children:rijen.map(r=>kaarten.map((kaart,i)=>/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":r===1||undefined,children:kaart},r+\"-\"+i)))}),/*#__PURE__*/_jsxs(\"div\",{className:klasse+\"-knoppen\",children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Vorige kaart\",style:knopStijl,onClick:()=>stap(-1),children:/*#__PURE__*/_jsx(Pijl,{richting:\"links\"})}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Volgende kaart\",style:knopStijl,onClick:()=>stap(1),children:/*#__PURE__*/_jsx(Pijl,{richting:\"rechts\"})})]})]});}function Pijl({richting}){return /*#__PURE__*/_jsx(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",\"aria-hidden\":\"true\",children:richting===\"rechts\"?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"path\",{d:\"M5 12h14\"}),/*#__PURE__*/_jsx(\"path\",{d:\"m12 5 7 7-7 7\"})]}):/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"path\",{d:\"M19 12H5\"}),/*#__PURE__*/_jsx(\"path\",{d:\"m12 19-7-7 7-7\"})]})});}addPropertyControls(Slider,{kaarten:{type:ControlType.Array,title:\"Kaarten\",control:{type:ControlType.ComponentInstance}},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:24,min:0,max:96,step:4},zijpadding:{type:ControlType.Number,title:\"Zijpadding\",defaultValue:24,min:0,max:128,step:4},bovenpadding:{type:ControlType.Number,title:\"Boven\",defaultValue:8,min:0,max:128,step:4},onderpadding:{type:ControlType.Number,title:\"Onder\",defaultValue:24,min:0,max:128,step:4},oneindig:{type:ControlType.Boolean,title:\"Oneindig\",defaultValue:true},automatisch:{type:ControlType.Boolean,title:\"Automatisch\",defaultValue:true,description:\"Alleen vanaf 1200px en met een muis. Stopt zodra je erover gaat.\"},snelheid:{type:ControlType.Number,title:\"Snelheid\",defaultValue:35,min:5,max:120,step:5,unit:\"px/s\",hidden:p=>p.automatisch===false},knoppen:{type:ControlType.Enum,title:\"Knoppen\",options:[\"touch\",\"altijd\",\"nooit\"],optionTitles:[\"Alleen op touch\",\"Altijd\",\"Nooit\"],defaultValue:\"touch\"},knopVulling:{type:ControlType.Color,title:\"Knop vlak\",defaultValue:\"#ffffff\"},knopRand:{type:ControlType.Color,title:\"Knop rand\",defaultValue:\"rgba(19, 24, 61, 0.14)\"},knopIcoon:{type:ControlType.Color,title:\"Knop icoon\",defaultValue:\"#13183d\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Slider\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"1200\",\"framerIntrinsicHeight\":\"560\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Slider.map"],"mappings":"oNAyBG,SAAwB,EAAO,EAAM,CAAC,GAAK,CAAC,UAAQ,CAAC,EAAE,MAAI,GAAG,aAAW,GAAG,eAAa,EAAE,eAAa,GAAG,WAAS,GAAK,cAAY,GAAK,WAAS,GAAG,UAAQ,QAAQ,cAAY,UAAU,WAAS,yBAAyB,YAAU,UAAU,SAAO,EAAY,EAAYA,EAAO,IAAI,EACjN,EAASA,EAAO,CAAC,EAAQ,EAAO,eAAeC,EAAM,CAAC,CAAC,QAAQ,gBAAgB,EAAE,EAAQ,EAAM,EAAQ,OAAa,EAAI,GAAU,EAAM,EAAQ,EAAK,cAAmG,SAAS,EAAM,EAAG,CAAC,IAAM,EAAM,EAAG,kBAAqD,OAA/B,EAAsC,EAAM,sBAAsB,CAAC,CAAC,MAAM,EAA7D,EAAG,YAAY,EAAkD,CAIrc,SAAS,EAAK,EAAG,CAAC,IAAM,EAAQ,EAAM,CAAE,EAAE,EAAM,MAAM,CAAC,UAAQ,KAAK,KAAK,IAAI,GAAG,EAAQ,EAAG,aAAa,CAAC,CAAC,CAAE,CAC3C,SAAS,EAAY,EAAG,CAAC,GAAG,CAAC,EAAI,OAAO,GAAK,CAAC,UAAQ,QAAM,EAAK,CAAE,EAAE,GAAG,CAAC,GAAS,GAAS,EAAG,YAAY,OAAO,IAAI,EAAE,EAAG,WAAW,GAAG,GAAG,GAAM,EAAE,EAAK,EAAQ,OAAO,KAAM,GAAG,EAAK,GAAQ,GAAG,EAAQ,KAAM,EAAE,GAAK,GAAG,EAAQ,IAAM,EAAQ,EAAG,MAAM,eAAe,EAAG,MAAM,eAAe,OAAO,EAAG,WAAW,EAAE,EAAQ,YAAY,EAAG,MAAM,eAAe,GAAS,CAAK,CAAC,SAAS,EAAK,EAAS,CAAC,IAAM,EAAG,EAAY,QAAQ,GAAG,CAAC,EAAG,OAEpf,EAAY,CAAE,EAAE,IAAM,EAAE,EAAM,CAAE,EAAE,EAAS,SAAS,OAAO,YAAc,IAAY,YAAY,IAAI,EAAE,GAAG,IAAI,EAAG,SAAS,CAAC,MAAM,KAAK,MAAM,EAAG,WAAW,CAAC,EAAE,GAAU,EAAE,SAAS,QAAQ,CAAC,CAAE,CAAC,MAAc,CAAC,IAAM,EAAG,EAAY,QAAQ,GAAG,CAAC,EAAG,OAAO,IAAM,EAAgB,IAAS,QAAa,OAAO,EAAO,YAAa,WAAiB,EAAM,GAAG,EAAS,EAAO,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAK,EAiBpX,EAAQ,EAAM,4DAA4D,EAAQ,EAAS,EAAM,kCAAkC,EAAQ,MAAY,GAAa,GAAK,EAAS,GAAG,EAAQ,SAAS,CAAC,EAAS,QACjJ,MAAS,EAAQ,EAAE,OAAO,EAEpG,EAAM,0BAA0B,EAAY,CAAE,CAAC,EAAM,EAAY,MAAa,CAAC,IAAM,EAAI,EAAG,YAAY,EAAG,YAGjH,GAAG,EAAG,YAAY,GAAG,EAAG,YAAY,EAAI,EAAE,CAAI,GAAM,aAAa,CAAK,EAAE,EAAY,CAAE,EAAE,MAAO,CAAI,GAAM,aAAa,CAAK,EAAE,EAAM,eAAe,EAAY,CAAE,EAAE,GAAG,CAAE,EAAM,EAAO,GAAU,EAAyB,GAAU,EAAO,EAAM,EAAY,EAAM,EAAS,EAAM,EAAQ,EAAM,EAAQ,EAAM,EAAc,EACxP,MAAgB,CAAC,IAAM,EAAW,IAAS,QAAa,EAAO,aAAa,EAAO,aAAa,EAAE,KAAQ,GAAK,CAAC,EAAI,aAAY,EAAI,gBAAgB,CAAE,EAAQ,EAAO,GAAG,CAAI,EAAE,cAAc,SAAS,EAAE,SAAS,IAAS,EAAO,GAAK,EAAS,EAAE,EAAc,EAAE,EAAO,EAAE,QAAQ,EAAQ,EAAE,QAAQ,EAAQ,EAAE,UAAU,EAAY,EAAG,WAAW,EAAG,MAAM,eAAe,OAE1a,EAAG,MAAM,WAAW,OAAO,EAAG,MAAM,YAAY,sBAAsB,MAAM,EAAE,EAAY,EAAE,EAAyB,EAAE,EAAQ,EAAO,GAAG,CAAC,GAAG,CAAC,EAAO,OAAO,IAAM,EAAG,EAAE,QAAQ,EAAO,GAAG,KAAK,IAAI,CAAE,EAAE,EAAE,OAAO,EAAS,KAAK,IAAI,CAAE,EAAE,IAAM,EAAG,EAAE,UAAU,EAAW,EAAG,IAAE,GAAe,EAAE,QAAQ,GAAS,GAAG,EAAQ,EAAE,QAAQ,EAAQ,EAAE,UAAU,EAAG,WAAW,EAAY,EAAG,EAAG,MAAM,OAAO,WAAW,EAAY,EAAE,EAAE,eAAe,CAAE,EAAQ,MAA6B,CAAI,AAA0K,KAA1I,EAAO,iBAAiB,cAAc,CAAM,EAAE,EAAO,iBAAiB,YAAY,CAAM,EAAE,EAAO,iBAAiB,gBAAgB,CAAM,EAA2B,GAAK,EAAQ,MAAgC,CAAK,AAAmL,KAAnJ,EAAO,oBAAoB,cAAc,CAAM,EAAE,EAAO,oBAAoB,YAAY,CAAM,EAAE,EAAO,oBAAoB,gBAAgB,CAAM,EAA2B,GAAM,EAAQ,MAAW,CAAC,GAAG,CAAC,EAAO,OAA2I,GAApI,EAAO,GAAM,EAA4B,EAAE,EAAG,MAAM,OAAO,GAAG,EAAG,MAAM,WAAW,GAAG,EAAG,MAAM,eAAe,qBAAqB,EAAK,EAAS,EAAE,CACtlC,IAAM,EAAK,GAAI,CAAC,EAAG,eAAe,EAAE,EAAG,gBAAgB,CAAE,EAAE,EAAG,iBAAiB,QAAQ,EAAK,CAAC,QAAQ,GAAK,KAAK,EAAI,CAAC,EAAE,eAAe,EAAG,oBAAoB,QAAQ,EAAK,CAAC,QAAQ,EAAI,CAAC,EAAE,CAAC,CAAE,CAE5L,IAAM,EAAE,EAAM,CAAE,EAAQ,EAAQ,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,EAAc,EAAE,CAAC,EAAE,EAAS,SAAS,OAAO,YAAc,IAAY,YAAY,IAAI,EAAE,GAAG,IAAI,EAAG,SAAS,CAAC,KAAK,KAAK,OAAO,EAAG,WAAW,GAAS,CAAC,EAAE,EAAE,SAAS,QAAQ,CAAC,EAAE,eAAe,CAAC,EAAG,MAAM,eAAe,EAAK,EAAE,EAAY,CAAE,CAAE,EAAE,GAAG,CAAE,EAO1R,EAAW,GAAG,CAAI,GAAO,EAAE,eAAe,CAAE,EAAE,EAAG,iBAAiB,SAAS,EAAS,CAAC,QAAQ,EAAI,CAAC,EAAE,EAAG,iBAAiB,cAAc,CAAM,EAAE,EAAG,iBAAiB,cAAc,CAAU,EAC3M,IAAI,EAAI,EAAM,EAAM,GAAU,EAAM,GAAU,EAAQ,GAAS,EAAY,EACK,EAAK,EAAQ,MAAY,CAAC,EAAM,EAAK,EAAQ,MAAU,CAAC,EAAM,EAAM,EAAQ,MAAY,CAAC,EAAM,EAAK,EAAQ,MAAW,CAAC,EAAM,EAAM,EAAM,EAAgB,EAAI,GAAG,CAAgC,GAA/B,EAAI,sBAAsB,CAAG,EAAK,CAAC,EAAY,CAAC,EAAY,EAAE,EAAK,EAAG,WAAW,MAAO,CAC1U,IAAM,EAAG,KAAK,IAAI,EAAE,EAAY,EAAE,EAAgB,GAAd,EAAY,EAAK,GAAO,GAAO,GAAQ,CAAC,GAAS,EAAE,EAAS,QAAQ,CAAC,EAAK,EAAG,WAAW,MAAO,CAEhI,KAAK,IAAI,EAAG,WAAW,CAAI,EAAE,IAAE,EAAK,EAAG,YAAW,GAAM,EAAS,EAAG,IAAI,EAAG,WAAW,EAAK,IAAM,EAAK,EAAG,WAAW,EAAY,CAAE,EAAK,EAAG,aAAa,IAAK,EAAK,EAAG,WAAW,EAAE,EAAG,iBAAiB,aAAa,CAAO,EAAE,EAAG,iBAAiB,aAAa,CAAK,EAAE,EAAG,iBAAiB,UAAU,CAAO,EAAE,EAAG,iBAAiB,WAAW,CAAM,EAAK,OAAO,sBAAuB,aAAY,EAAU,IAAI,qBAAqB,GAAQ,CAAC,EAAQ,EAAO,KAAK,GAAG,EAAE,cAAc,CAAE,EAAE,CAAC,WAAW,OAAO,CAAC,EAAE,EAAU,QAAQ,CAAE,GAKvf,IAAM,MAAW,CAAC,IAAM,EAAI,EAAQ,EAAK,GAAK,CAAC,GAAK,EAAG,MAAM,eAAe,OAAO,EAAY,EAAE,EAAI,sBAAsB,CAAG,GAAW,CAAC,GAAK,IAAK,qBAAqB,CAAG,EAAE,EAAI,EAAE,EAAG,MAAM,eAAe,EAAK,EAAY,CAAE,EAAG,EACvO,EAAQ,GAAI,CAAI,OAAO,EAAG,kBAAmB,WAAW,EAAG,iBAAiB,SAAS,CAAM,EAAU,OAAO,EAAG,aAAc,YAAW,EAAG,YAAY,CAAM,CAAE,EAAQ,EAAM,GAAI,CAAI,OAAO,EAAG,qBAAsB,WAAW,EAAG,oBAAoB,SAAS,CAAM,EAAU,OAAO,EAAG,gBAAiB,YAAW,EAAG,eAAe,CAAM,CAAE,EAA4D,OAAvD,IAAU,EAAQ,CAAO,EAAE,EAAQ,CAAQ,GAAG,EAAO,MAAY,CAAC,qBAAqB,CAAK,EAAE,EAAG,oBAAoB,SAAS,CAAQ,EAAE,EAAG,oBAAoB,cAAc,CAAM,EAAE,EAAG,oBAAoB,cAAc,CAAU,EAAE,EAA4B,EAAE,EAAG,oBAAoB,aAAa,CAAO,EAAE,EAAG,oBAAoB,aAAa,CAAK,EAAE,EAAG,oBAAoB,UAAU,CAAO,EAAE,EAAG,oBAAoB,WAAW,CAAM,EAAK,IAAU,EAAM,CAAO,EAAE,EAAM,CAAQ,GAAM,GAAU,EAAU,WAAW,EAAK,GAAI,qBAAqB,CAAG,EAAK,GAAM,aAAa,CAAK,CAAE,CAAE,EAAE,CAAC,EAAM,EAAI,EAAI,EAAY,CAAQ,CAAC,EAAE,IAAM,EAAM,EAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAQ,EAAU,CAAC,MAAM,GAAG,OAAO,GAAG,aAAa,IAAI,WAAW,EAAY,OAAO,aAAa,EAAS,UAAU,yCAAyC,QAAQ,OAAO,WAAW,SAAS,eAAe,SAAS,OAAO,UAAU,QAAQ,EAAE,MAAM,CAAS,EAAE,OAAoB,EAAM,MAAM,CAAC,MAAM,CAAC,GAAG,EAAM,QAAQ,OAAO,cAAc,SAAS,WAAW,SAAS,IAAI,EAAE,EAAE,SAAS,CAAc,EAAK,QAAQ,CAAC,SAAS,IAAI,EAAO,4IAA4I,EAAK,uBAAuB,EAAW,0BAA0B,EAAW;GAClmD,EAAO;GACP,EAAO;GACP,EAAO;2CACiC,EAAO;GAC/C,EAAO;EACR,IAAU,QAAQ,8BAA8B,EAAO,yBAAyB,GAAG;EACnF,IAAU,QAAQ,IAAI,EAAO,kCAAkC,IAAI,CAAC,EAAe,EAAK,MAAM,CAAC,IAAI,EAAY,UAAU,EAAO,MAAM,CAAC,QAAQ,OAAO,cAAc,MAAM,MAAI,MAAM,OAAO,UAAU,OAAO,UAAU,SAAS,QAAQ,GAAG,EAAa,KAAK,EAAW,KAAK,EAAa,KAAK,EAAW,GAAG,EAAE,SAAS,EAAM,IAAI,GAAG,EAAQ,KAAK,EAAM,IAAiB,EAAK,MAAM,CAAC,cAAc,IAAI,GAAG,IAAA,GAAU,SAAS,CAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe,EAAM,MAAM,CAAC,UAAU,EAAO,WAAW,SAAS,CAAc,EAAK,SAAS,CAAC,KAAK,SAAS,aAAa,eAAe,MAAM,EAAU,YAAY,EAAK,EAAE,EAAE,SAAsB,EAAK,EAAK,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAe,EAAK,SAAS,CAAC,KAAK,SAAS,aAAa,iBAAiB,MAAM,EAAU,YAAY,EAAK,CAAC,EAAE,SAAsB,EAAK,EAAK,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,SAAS,EAAK,CAAC,YAAU,CAAC,OAAoB,EAAK,MAAM,CAAC,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,OAAO,eAAe,YAAY,IAAI,cAAc,QAAQ,eAAe,QAAQ,cAAc,OAAO,SAAS,IAAW,SAAsB,EAAMC,EAAU,CAAC,SAAS,CAAc,EAAK,OAAO,CAAC,EAAE,UAAU,CAAC,EAAe,EAAK,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,EAAe,EAAMA,EAAU,CAAC,SAAS,CAAc,EAAK,OAAO,CAAC,EAAE,UAAU,CAAC,EAAe,EAAK,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,qBAvF5uC,IAAoD,IAA0C,EAuF+oC,EAAoB,EAAO,CAAC,QAAQ,CAAC,KAAK,EAAY,MAAM,MAAM,UAAU,QAAQ,CAAC,KAAK,EAAY,iBAAiB,CAAC,EAAE,IAAI,CAAC,KAAK,EAAY,OAAO,MAAM,MAAM,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,EAAY,QAAQ,MAAM,WAAW,aAAa,EAAI,EAAE,YAAY,CAAC,KAAK,EAAY,QAAQ,MAAM,cAAc,aAAa,GAAK,YAAY,kEAAkE,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,OAAO,OAAO,GAAG,EAAE,cAAc,EAAK,EAAE,QAAQ,CAAC,KAAK,EAAY,KAAK,MAAM,UAAU,QAAQ,CAAC,QAAQ,SAAS,OAAO,EAAE,aAAa,CAAC,kBAAkB,SAAS,OAAO,EAAE,aAAa,OAAO,EAAE,YAAY,CAAC,KAAK,EAAY,MAAM,MAAM,YAAY,aAAa,SAAS,EAAE,SAAS,CAAC,KAAK,EAAY,MAAM,MAAM,YAAY,aAAa,wBAAwB,EAAE,UAAU,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,aAAa,SAAS,CAAC,CAAC"}