{"version":3,"sources":["../../node_modules/gsap/ScrollTrigger.js","../../node_modules/gsap/ScrollToPlugin.js","../../src/js/partials/animations.js","src/js/main.js","../../src/js/partials/cards.js","../../src/js/partials/menu.js","../../node_modules/ssr-window/ssr-window.esm.js","../../node_modules/dom7/dom7.esm.js","../../node_modules/swiper/shared/dom.js","../../node_modules/swiper/shared/utils.js","../../node_modules/swiper/shared/get-support.js","../../node_modules/swiper/shared/get-device.js","../../node_modules/swiper/shared/get-browser.js","../../node_modules/swiper/core/events-emitter.js","../../node_modules/swiper/core/update/index.js","../../node_modules/swiper/core/update/updateSize.js","../../node_modules/swiper/core/update/updateSlides.js","../../node_modules/swiper/core/update/updateAutoHeight.js","../../node_modules/swiper/core/update/updateSlidesOffset.js","../../node_modules/swiper/core/update/updateSlidesProgress.js","../../node_modules/swiper/core/update/updateProgress.js","../../node_modules/swiper/core/update/updateSlidesClasses.js","../../node_modules/swiper/core/update/updateActiveIndex.js","../../node_modules/swiper/core/update/updateClickedSlide.js","../../node_modules/swiper/core/translate/index.js","../../node_modules/swiper/core/translate/getTranslate.js","../../node_modules/swiper/core/translate/setTranslate.js","../../node_modules/swiper/core/translate/minTranslate.js","../../node_modules/swiper/core/translate/maxTranslate.js","../../node_modules/swiper/core/translate/translateTo.js","../../node_modules/swiper/core/transition/transitionEmit.js","../../node_modules/swiper/core/slide/index.js","../../node_modules/swiper/core/slide/slideTo.js","../../node_modules/swiper/core/slide/slideToLoop.js","../../node_modules/swiper/core/slide/slideNext.js","../../node_modules/swiper/core/slide/slidePrev.js","../../node_modules/swiper/core/slide/slideReset.js","../../node_modules/swiper/core/slide/slideToClosest.js","../../node_modules/swiper/core/slide/slideToClickedSlide.js","../../node_modules/swiper/core/loop/index.js","../../node_modules/swiper/core/loop/loopCreate.js","../../node_modules/swiper/core/loop/loopFix.js","../../node_modules/swiper/core/loop/loopDestroy.js","../../node_modules/swiper/core/events/onTouchStart.js","../../node_modules/swiper/core/events/onTouchMove.js","../../node_modules/swiper/core/events/onTouchEnd.js","../../node_modules/swiper/core/events/onResize.js","../../node_modules/swiper/core/events/onClick.js","../../node_modules/swiper/core/events/onScroll.js","../../node_modules/swiper/core/events/index.js","../../node_modules/swiper/core/breakpoints/setBreakpoint.js","../../node_modules/swiper/core/classes/index.js","../../node_modules/swiper/core/classes/addClasses.js","../../node_modules/swiper/core/classes/removeClasses.js","../../node_modules/swiper/core/check-overflow/index.js","../../node_modules/swiper/core/defaults.js","../../node_modules/swiper/core/moduleExtendParams.js","../../node_modules/swiper/core/core.js","../../node_modules/swiper/core/transition/index.js","../../node_modules/swiper/core/transition/setTransition.js","../../node_modules/swiper/core/transition/transitionStart.js","../../node_modules/swiper/core/transition/transitionEnd.js","../../node_modules/swiper/core/grab-cursor/index.js","../../node_modules/swiper/core/grab-cursor/setGrabCursor.js","../../node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","../../node_modules/swiper/core/breakpoints/index.js","../../node_modules/swiper/core/breakpoints/getBreakpoint.js","../../node_modules/swiper/core/images/index.js","../../node_modules/swiper/core/images/loadImage.js","../../node_modules/swiper/core/images/preloadImages.js","../../node_modules/swiper/shared/create-element-if-not-defined.js","../../node_modules/swiper/shared/classes-to-selector.js","../../node_modules/swiper/core/modules/resize/resize.js","../../node_modules/swiper/core/modules/observer/observer.js","../../src/js/partials/sliders.js","../../node_modules/swiper/modules/navigation/navigation.js","../../node_modules/swiper/modules/pagination/pagination.js","../../src/js/main.js"],"names":["main","gsap","_coreInitted","_win","_doc","_docEl","_body","_root","_resizeDelay","_raf","_request","_toArray","_clamp","_time2","_syncInterval","_refreshing","_pointerIsDown","_transformProp","_i","_prevWidth","_prevHeight","_autoRefresh","_sort","_limitCallbacks","_creatingMedia","_lastMediaTick","_startup","_proxies","_scrollers","_getTime","Date","now","_time1","_lastScrollTime","_enabled","_passThrough","v","_windowExists","window","_getGSAP","registerPlugin","_isViewport","e","indexOf","_getProxyProp","element","property","_getScrollFunc","_ref","s","sc","i","offset","_vertical","push","value","arguments","length","_getBoundsFunc","_winOffsets","width","innerWidth","height","innerHeight","_getBounds","_maxScroll","_ref3","d2","d","a","Math","max","_iterateAutoRefresh","func","events","_isString","_isFunction","_isNumber","_isObject","_callIfFunc","_combineFunc","f1","f2","result1","result2","_abs","abs","_scrollLeft","_scrollTop","_left","_top","_right","_bottom","_width","_height","_Right","_Left","_Top","_Bottom","_padding","_margin","_Width","_Height","_px","_horizontal","p","p2","os","os2","scrollTo","pageXOffset","op","pageYOffset","_getComputedStyle","getComputedStyle","_setDefaults","obj","defaults","withoutTransforms","tween","to","x","y","xPercent","yPercent","rotation","rotationX","rotationY","scale","skewX","skewY","progress","bounds","getBoundingClientRect","kill","_getSize","_ref4","_multiListener","types","callback","split","forEach","type","_addListener","addEventListener","passive","_removeListener","removeEventListener","_markerDefaults","startColor","endColor","indent","fontSize","fontWeight","_defaults","toggleActions","anticipatePin","_keywords","top","left","center","bottom","right","_offsetToPx","size","eqIndex","relative","charAt","parseFloat","substr","_createMarker","name","container","direction","_ref5","matchWidthEl","createElement","useFixedPosition","isScroller","parent","isStart","color","css","offsetWidth","_isStart","setAttribute","style","cssText","innerText","insertBefore","children","_offset","_positionMarker","marker","start","flipped","vars","display","side","oppositeSide","_isFlipped","set","_triggers","_ids","_sync","_updateAll","_onScroll","_dispatch","_onResize","restart","_listeners","_emptyArray","_media","_onMediaChange","index","tick","ticker","frame","matches","_revertAll","matchMedia","_revertRecorded","_refreshAll","_softRefresh","ScrollTrigger","map","f","_savedStyles","media","uncache","trigger","scroll","rec","revert","force","skipRevert","refreshInits","sort","refresh","result","render","pause","_lastScroll","_direction","l","time","recordVelocity","update","_propNamesToCopy","_stateProps","concat","_swapPinIn","pin","spacer","cs","spacerState","parentNode","spacerStyle","pinStyle","position","overflow","boxSizing","_setState","appendChild","_capsExp","state","t","removeProperty","replace","toLowerCase","_getState","_parsePosition","scrollerSize","markerScroller","self","scrollerBounds","borderWidth","scrollerMax","localOffset","globalOffset","offsets","m","round","_prefixExp","_reparent","_stOrig","test","core","getCache","_getTweenCreator","scroller","lastScroll1","lastScroll2","getScroll","prop","getTween","initialValue","change1","change2","onComplete","modifiers","ratio","call","animation","register","console","warn","this","init","prototype","tweenTo","pinCache","snapFunc","isReverted","scroll1","scroll2","end","markerStart","markerEnd","markerStartTrigger","markerEndTrigger","markerVars","change","pinOriginalState","pinActiveState","pinState","pinGetter","pinSetter","pinStart","pinChange","spacingStart","markerStartSetter","markerEndSetter","snap1","snap2","scrubTween","scrubSmooth","snapDurClamp","snapDelayedCall","prevProgress","prevScroll","prevAnimProgress","nodeType","horizontal","_vars","onUpdate","toggleClass","id","onToggle","onRefresh","scrub","pinSpacing","invalidateOnRefresh","onScrubComplete","onSnapComplete","once","snap","pinReparent","isToggle","scrollerCache","isViewport","pinType","callbacks","onEnter","onLeave","onEnterBack","onLeaveBack","markers","onRefreshInit","getScrollerSize","_ref2","_getSizeFunc","getScrollerOffsets","_getOffsetsFunc","tweenScroll","lazy","_initted","immediateRender","scrollTrigger","ease","duration","snapTo","scrollBehavior","labels","utils","_getLabels","min","delayedCall","delay","getVelocity","totalProgress","velocity","naturalEnd","endValue","endScroll","data","isActive","targets","className","force3D","getProperty","quickSetter","r","enabled","prevRefreshing","removeChild","_swapPinOut","soft","invalidate","isVertical","override","curTrigger","curPin","oppositeScroll","otherPinOffset","parsedEnd","parsedEndTrigger","endTrigger","parsedStart","triggerIndex","_pinPush","ceil","omitOffsets","_copyState","splice","_pinOffset","reset","toggleState","action","stateChanged","toggled","clipped","el","classList","enable","add","disable","allowAnimation","document","documentElement","body","toArray","clamp","globals","requestAnimationFrame","setTimeout","bodyStyle","border","borderTop","setInterval","checkPrefix","w","h","hidden","config","slice","limitCallbacks","ms","syncInterval","clearInterval","autoRefreshEvents","scrollerProxy","target","unshift","mq","addListener","clearMatchMedia","query","version","saveStyles","create","safe","maxScroll","getScrollFunc","getById","getAll","isScrolling","batch","varsCopy","interval","batchMax","proxyCallback","elements","triggers","b","refreshPriority","_window","_config","_max","axis","dim","client","_buildGetter","toUpperCase","_getOffset","rect","isRoot","cRect","clientTop","scrollTop","clientLeft","scrollLeft","_parseVal","currentVal","isNaN","_initCore","autoKillThreshold","ScrollToPlugin","rawVars","isWin","autoKill","getX","getY","xPrev","yPrev","offsetX","_props","skipX","offsetY","skipY","yDif","xDif","threshold","pt","_pt","_next","onAutoKill","apply","onAutoKillParams","both","getOffset","buildGetter","Animations","bodyHeight","querySelector","offsetHeight","header","remove","scrollToLinks","querySelectorAll","Array","from","link","href","getAttribute","event","preventDefault","item","tl","timeline","paused","opacity","animateStaggerValue","tlStaggerValues","stagger","bgLogo","tlBgLogo","animateImagesContainer","animateImagesRow","animateImagesRowReverse","Linear","easeNone","Cards","node","clickAction","bind","_proto","addListeners","toggle","destroy","title","resetAll","items","elem","destroyAll","Menu","ctaOpen","ctaClose","navigationMobile","mobileLinks","mobileLinksArray","toggleMenuAction","clickLinkAction","_this","_this2","isObject","constructor","Object","extend","src","keys","key","ssrDocument","activeElement","blur","nodeName","getElementById","createEvent","initEvent","childNodes","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getPropertyValue","Image","screen","clearTimeout","cancelAnimationFrame","getWindow","win","Dom7","super","proto","__proto__","defineProperty","get","makeReactive","arrayFlat","arr","res","isArray","arrayFilter","filter","$","selector","context","html","trim","toCreate","tempParent","innerHTML","qsa","uniqueArray","arrayUnique","fn","Methods","addClass","classes","classNames","c","removeClass","hasClass","contains","attr","attrs","attrName","removeAttr","removeAttribute","transform","transition","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","is","parents","k","handleEvent","undefined","j","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","evt","detail","bubbles","cancelable","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","outerHeight","box","scrollY","scrollX","props","each","text","textContent","compareWith","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","prepend","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","closest","find","foundElements","found","nextTick","getTranslate","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","isNode","HTMLElement","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","startPosition","translate","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","easeProgress","cos","PI","currentPosition","support","deviceCached","browser","getSupport","smoothScroll","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","screenHeight","match","ipad","ipod","iphone","windows","macos","calcDevice","getBrowser","isSafari","isWebView","calcBrowser","methodName","writable","eventsEmitter","priority","eventsListeners","destroyed","method","onceHandler","__emitterProxy","_len","_key","onAny","eventsAnyListeners","offAny","eventHandler","emit","_len2","_key2","updateSize","$el","clientWidth","clientHeight","isHorizontal","parseInt","Number","assign","updateSlides","getDirectionLabel","marginRight","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","floor","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","step","slideTo","initial","Error","indexAsNumber","isFinite","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","currentSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","composedPath","lastClickTime","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","passiveListeners","move","cancel","updateOnWindowResize","events$1","attachEvents","detachEvents","isGridEnabled","addClasses","suffixes","entries","prefix","resultClasses","prepareClasses","autoheight","fill","centered","emitContainerClasses","removeClasses","resizeObserver","createElements","url","breakpointsBase","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","moving","isLocked","cursor","unsetGrabCursor","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","points","point","minRatio","wasLocked","lastSlideIndex","lastSlideRightEdge","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","options","getWrapper","wrapper","deleteInstance","cleanStyles","object","deleteProps","static","newDefaults","module","installModule","createElementIfNotDefined","checkProps","classesToSelector","prototypeGroup","protoMethod","use","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","SwiperCore","getEl","toggleEl","disabled","disabledClass","tagName","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","_s","targetEl","pagination","clickable","isHidden","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","progressbarDirection","scaleX","scaleY","paginationHTML","numberOfBullets","Sliders","slider","arrows","setOptions","initSlider","keyboardControl","swiperInstance","Main"],"mappings":";;;;;AAAA,IAAAA,KAAA,WAAA;;;;;;;;;EAWA,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EA8SAC,EAEJC,EA9SAC,EAAW,EACPC,EAAW,GACXC,EAAa,GACbC,EAAWC,KAAKC,IAChBC,EAASH,IACTI,EAAkB,EAClBC,EAAW,EACXC,EAAe,SAAsBC,GACvC,OAAOA,GAELC,EAAgB,WAClB,MAAyB,oBAAXC,QAEZC,EAAW,WACb,OAAOtC,GAAQoC,MAAoBpC,EAAOqC,OAAOrC,OAASA,EAAKuC,gBAAkBvC,GAE/EwC,EAAc,SAAqBC,GACrC,SAAUnC,EAAMoC,QAAQD,IAEtBE,EAAgB,SAAuBC,EAASC,GAClD,OAAQnB,EAASgB,QAAQE,IAAYlB,EAASA,EAASgB,QAAQE,GAAW,GAAGC,IAE3EC,EAAiB,SAAwBF,EAASG,GACpD,IAAIC,EAAID,EAAKC,EACTC,EAAKF,EAAKE,GAEVC,EAAIvB,EAAWe,QAAQE,GACvBO,EAASF,IAAOG,GAAUH,GAAK,EAAI,EAGvC,QADEC,IAAMA,EAAIvB,EAAW0B,KAAKT,GAAW,GAChCjB,EAAWuB,EAAIC,KAAYxB,EAAWuB,EAAIC,GAAUR,EAAcC,EAASI,KAAOR,EAAYI,GAAWK,EAAK,SAAUK,GAC7H,OAAOC,UAAUC,OAASZ,EAAQI,GAAKM,EAAQV,EAAQI,OAGvDS,EAAiB,SAAwBb,GAC3C,OAAOD,EAAcC,EAAS,2BAA6BJ,EAAYI,GAAW,WAGhF,OAFAc,GAAYC,MAAQzD,EAAK0D,WACzBF,GAAYG,OAAS3D,EAAK4D,YACnBJ,IACL,WACF,OAAOK,GAAWnB,MAkBlBoB,EAAa,SAAoBpB,EAASqB,GAC5C,IAAIjB,EAAIiB,EAAMjB,EACVkB,EAAKD,EAAMC,GACXC,EAAIF,EAAME,EACVC,EAAIH,EAAMG,EACd,OAAQpB,EAAI,SAAWkB,KAAQE,EAAIzB,EAAcC,EAASI,IAAMoB,IAAMX,EAAeb,EAAfa,GAA0BU,GAAK3B,EAAYI,GAAWyB,KAAKC,IAAIlE,EAAO4C,GAAI3C,EAAM2C,KAAO9C,EAAK,QAAUgE,IAAO9D,EAAO,SAAW8D,IAAO7D,EAAM,SAAW6D,IAAOtB,EAAQI,GAAKJ,EAAQ,SAAWsB,IAElQK,EAAsB,SAA6BC,EAAMC,GAC3D,IAAK,IAAIvB,EAAI,EAAGA,EAAI9B,EAAaoC,OAAQN,GAAK,IAC1CuB,IAAWA,EAAO/B,QAAQtB,EAAa8B,EAAI,MAAQsB,EAAKpD,EAAa8B,GAAI9B,EAAa8B,EAAI,GAAI9B,EAAa8B,EAAI,KAGjHwB,EAAY,SAAmBpB,GACjC,MAAwB,iBAAVA,GAEZqB,EAAc,SAAqBrB,GACrC,MAAwB,mBAAVA,GAEZsB,EAAY,SAAmBtB,GACjC,MAAwB,iBAAVA,GAEZuB,EAAY,SAAmBvB,GACjC,MAAwB,iBAAVA,GAEZwB,EAAc,SAAqBxB,GACrC,OAAOqB,EAAYrB,IAAUA,KAE3ByB,EAAe,SAAsBC,EAAIC,GAC3C,OAAO,WACL,IAAIC,EAAUJ,EAAYE,GACtBG,EAAUL,EAAYG,GAE1B,OAAO,WACLH,EAAYI,GAEZJ,EAAYK,MAIdC,EAAOf,KAAKgB,IACZC,EAAc,aACdC,EAAa,YACbC,EAAQ,OACRC,EAAO,MACPC,EAAS,QACTC,EAAU,SACVC,GAAS,QACTC,GAAU,SACVC,GAAS,QACTC,GAAQ,OACRC,GAAO,MACPC,GAAU,SACVC,GAAW,UACXC,GAAU,SACVC,GAAS,QACTC,GAAU,SACVC,GAAM,KACNC,GAAc,CAChBvD,EAAGsC,EACHkB,EAAGhB,EACHiB,GAAIV,GACJW,GAAIhB,EACJiB,IAAKb,GACL3B,EAAGyB,GACH1B,GAAIkC,GACJhC,EAAG,IACHnB,GAAI,SAAYK,GACd,OAAOC,UAAUC,OAAStD,EAAK0G,SAAStD,EAAOF,GAAUH,MAAQ/C,EAAK2G,aAAe1G,EAAgB,YAAKC,EAAkB,YAAKC,EAAiB,YAAK,IAGvJ+C,GAAY,CACdJ,EAAGuC,EACHiB,EAAGf,EACHgB,GAAIT,GACJU,GAAIf,EACJgB,IAAKV,GACL9B,EAAG0B,GACH3B,GAAImC,GACJjC,EAAG,IACH0C,GAAIP,GACJtD,GAAI,SAAYK,GACd,OAAOC,UAAUC,OAAStD,EAAK0G,SAASL,GAAYtD,KAAMK,GAASpD,EAAK6G,aAAe5G,EAAe,WAAKC,EAAiB,WAAKC,EAAgB,WAAK,IAGtJ2G,GAAoB,SAA2BpE,GACjD,OAAO1C,EAAK+G,iBAAiBrE,IAM/BsE,GAAe,SAAsBC,EAAKC,GACxC,IAAK,IAAIZ,KAAKY,EACZZ,KAAKW,IAAQA,EAAIX,GAAKY,EAASZ,IAGjC,OAAOW,GAGTpD,GAAa,SAAoBnB,EAASyE,GACxC,IAAIC,EAAQD,GAAoE,6BAA/CL,GAAkBpE,GAAS5B,IAAkDhB,EAAKuH,GAAG3E,EAAS,CAC7H4E,EAAG,EACHC,EAAG,EACHC,SAAU,EACVC,SAAU,EACVC,SAAU,EACVC,UAAW,EACXC,UAAW,EACXC,MAAO,EACPC,MAAO,EACPC,MAAO,IACNC,SAAS,GACRC,EAASvF,EAAQwF,wBAErB,OADAd,GAASA,EAAMY,SAAS,GAAGG,OACpBF,GAELG,GAAW,SAAkB1F,EAAS2F,GACxC,IAAIrE,EAAKqE,EAAMrE,GACf,OAAOtB,EAAQ,SAAWsB,IAAOtB,EAAQ,SAAWsB,IAAO,GAgBzDsE,GAAiB,SAAwBhE,EAAM5B,EAAS6F,EAAOC,GACjE,OAAOD,EAAME,MAAM,KAAKC,SAAQ,SAAUC,GACxC,OAAOrE,EAAK5B,EAASiG,EAAMH,OAG3BI,GAAe,SAAsBlG,EAASiG,EAAMrE,GACtD,OAAO5B,EAAQmG,iBAAiBF,EAAMrE,EAAM,CAC1CwE,SAAS,KAGTC,GAAkB,SAAyBrG,EAASiG,EAAMrE,GAC5D,OAAO5B,EAAQsG,oBAAoBL,EAAMrE,IAEvC2E,GAAkB,CACpBC,WAAY,QACZC,SAAU,MACVC,OAAQ,EACRC,SAAU,OACVC,WAAY,UAEVC,GAAY,CACdC,cAAe,OACfC,cAAe,GAEbC,GAAY,CACdC,IAAK,EACLC,KAAM,EACNC,OAAQ,GACRC,OAAQ,EACRC,MAAO,GAELC,GAAc,SAAqB5G,EAAO6G,GAC5C,GAAIzF,EAAUpB,GAAQ,CACpB,IAAI8G,EAAU9G,EAAMZ,QAAQ,KACxB2H,GAAYD,IAAY9G,EAAMgH,OAAOF,EAAU,GAAK,GAAKG,WAAWjH,EAAMkH,OAAOJ,EAAU,IAAM,EAEjGC,IACF/G,EAAMZ,QAAQ,KAAO0H,IAAYC,GAAYF,EAAO,KACpD7G,EAAQA,EAAMkH,OAAO,EAAGJ,EAAU,IAGpC9G,EAAQ+G,GAAY/G,KAASsG,GAAYA,GAAUtG,GAAS6G,GAAQ7G,EAAMZ,QAAQ,KAAO6H,WAAWjH,GAAS6G,EAAO,IAAMI,WAAWjH,IAAU,GAGjJ,OAAOA,GAELmH,GAAgB,SAAuB5B,EAAM6B,EAAMC,EAAWC,EAAWC,EAAO1H,EAAQ2H,GAC1F,IAAI1B,EAAayB,EAAMzB,WACnBC,EAAWwB,EAAMxB,SACjBE,EAAWsB,EAAMtB,SACjBD,EAASuB,EAAMvB,OACfE,EAAaqB,EAAMrB,WAEnB/G,EAAItC,EAAK4K,cAAc,OACvBC,EAAmBxI,EAAYmI,IAAsD,UAAxChI,EAAcgI,EAAW,WACtEM,GAA2C,IAA9BpC,EAAKnG,QAAQ,YAC1BwI,EAASF,EAAmB3K,EAAQsK,EACpCQ,GAAqC,IAA3BtC,EAAKnG,QAAQ,SACvB0I,EAAQD,EAAU/B,EAAaC,EAC/BgC,EAAM,gBAAkBD,EAAQ,cAAgB7B,EAAW,UAAY6B,EAAQ,gBAAkB5B,EAAa,uIAclH,OAZA6B,GAAO,aAAeJ,GAAcD,EAAmB,SAAW,cACjEC,IAAeD,KAAsBK,IAAQT,IAAcxH,GAAYsC,EAASC,GAAW,KAAOxC,EAASoH,WAAWjB,IAAW,OAClIwB,IAAiBO,GAAO,+CAAiDP,EAAaQ,YAAc,OACpG7I,EAAE8I,SAAWJ,EACb1I,EAAE+I,aAAa,QAAS,eAAiB3C,GACzCpG,EAAEgJ,MAAMC,QAAUL,EAClB5I,EAAEkJ,UAAYjB,GAAiB,IAATA,EAAa7B,EAAO,IAAM6B,EAAO7B,EACvDqC,EAAOU,aAAanJ,EAAGyI,EAAOW,SAAS,IACvCpJ,EAAEqJ,QAAUrJ,EAAE,SAAWmI,EAAU9D,GAAG5C,IAEtC6H,GAAgBtJ,EAAG,EAAGmI,EAAWO,GAE1B1I,GAELsJ,GAAkB,SAAyBC,EAAQC,EAAOrB,EAAWsB,GACvE,IAAIC,EAAO,CACTC,QAAS,SAEPC,EAAOzB,EAAUsB,EAAU,MAAQ,MACnCI,EAAe1B,EAAUsB,EAAU,KAAO,OAC9CF,EAAOO,WAAaL,EACpBC,EAAKvB,EAAUxG,EAAI,WAAa8H,GAAW,IAAM,EACjDC,EAAKvB,EAAUxG,GAAK8H,EAAU,EAAI,EAClCC,EAAK,SAAWE,EAAOjG,IAAU,EACjC+F,EAAK,SAAWG,EAAelG,IAAU,EACzC+F,EAAKvB,EAAUpE,GAAKyF,EACpBjM,EAAKwM,IAAIR,EAAQG,IAEfM,GAAY,GACZC,GAAO,GACPC,GAAQ,WACV,OAAOlM,IAAaA,EAAWD,EAAKoM,MAElCC,GAAY,WACTpM,IACHA,EAAWD,EAAKoM,IAChB5K,GAAmB8K,GAAU,eAC7B9K,EAAkBJ,MAGlBmL,GAAY,WACd,OAAQjM,GAAeP,EAAayM,SAAQ,IAG9CC,GAAa,GACTC,GAAc,GACdC,GAAS,GAITC,GAAiB,SAAwB3K,GAC3C,IAGI4K,EAHAC,EAAOtN,EAAKuN,OAAOC,MACnBC,EAAU,GACVvK,EAAI,EAGR,GAAI1B,IAAmB8L,GAAQ7L,EAAU,CAGvC,IAFAiM,KAEOxK,EAAIiK,GAAO3J,OAAQN,GAAK,GAC7BmK,EAAQnN,EAAKyN,WAAWR,GAAOjK,IAAIuK,WAErBN,GAAOjK,EAAI,KAEvBiK,GAAOjK,EAAI,GAAKmK,EAChBA,EAAQI,EAAQpK,KAAKH,GAAKwK,GAAW,EAAGP,GAAOjK,KAAOyB,EAAYwI,GAAOjK,EAAI,KAAOiK,GAAOjK,EAAI,MAOnG,IAHA0K,KAGK1K,EAAI,EAAGA,EAAIuK,EAAQjK,OAAQN,IAC9BmK,EAAQI,EAAQvK,GAChB3B,EAAiB4L,GAAOE,GACxBF,GAAOE,EAAQ,GAAKF,GAAOE,EAAQ,GAAG5K,GAGxClB,EAAiB,EAEjBsM,GAAY,EAAG,GAEfrM,EAAiB8L,EAEjBR,GAAU,gBAGVgB,GAAe,SAASA,IAC1B,OAAO7E,GAAgB8E,GAAe,YAAaD,IAAiBD,IAAY,IAE9Ef,GAAY,SAAmBjE,GACjC,OAAOoE,GAAWpE,IAASoE,GAAWpE,GAAMmF,KAAI,SAAUC,GACxD,OAAOA,QACHf,IAEJgB,GAAe,GAEnBN,GAAkB,SAAyBO,GACzC,IAAK,IAAIjL,EAAI,EAAGA,EAAIgL,GAAa1K,OAAQN,GAAK,EACvCiL,GAASD,GAAahL,EAAI,KAAOiL,IACpCD,GAAahL,GAAGuI,MAAMC,QAAUwC,GAAahL,EAAI,GACjDgL,GAAahL,EAAI,GAAGkL,QAAU,IAIhCV,GAAa,SAAoBrF,EAAM8F,GACzC,IAAIE,EAEJ,IAAKpN,EAAK,EAAGA,EAAKwL,GAAUjJ,OAAQvC,IAClCoN,EAAU5B,GAAUxL,GAEfkN,GAASE,EAAQF,QAAUA,IAC1B9F,EACFgG,EAAQhG,KAAK,IAEbgG,EAAQC,OAAOC,MAAQF,EAAQC,OAAOC,IAAMF,EAAQC,UAEpDD,EAAQG,WAKdZ,GAAgBO,GAEhBA,GAASrB,GAAU,WAEjBe,GAAc,SAAqBY,EAAOC,GAC5C,IAAI1M,GAAoByM,EAAxB,CAMA,IAAIE,EAAe7B,GAAU,eAK7B,IAHAzL,GAAS0M,GAAca,OACvBF,GAAchB,KAETzM,EAAK,EAAGA,EAAKwL,GAAUjJ,OAAQvC,IAClCwL,GAAUxL,GAAI4N,UAShB,IANAF,EAAa/F,SAAQ,SAAUkG,GAC7B,OAAOA,GAAUA,EAAOC,QAAUD,EAAOC,QAAQ,MAGnD9N,EAAKwL,GAAUjJ,OAERvC,KACLwL,GAAUxL,GAAIqN,OAAOC,IAAM,EAG7BhO,EAAayO,QAEblC,GAAU,gBA1BRhE,GAAaiF,GAAe,YAAaD,KA4BzCmB,GAAc,EACdC,GAAa,EACbtC,GAAa,WACf,IAAIuC,EAAI1C,GAAUjJ,OACd4L,EAAOxN,IACPyN,EAAiBD,EAAOrN,GAAU,GAClCuM,EAASa,GAAK1C,GAAU,GAAG6B,SAgB/B,GAdAY,GAAaD,GAAcX,GAAU,EAAI,EACzCW,GAAcX,EAEVe,IACErN,IAAoBjB,GAAkBqO,EAAOpN,EAAkB,MACjEA,EAAkB,EAElB8K,GAAU,cAGZlM,EAASmB,EACTA,EAASqN,GAGPF,GAAa,EAAG,CAGlB,IAFAjO,EAAKkO,EAEElO,KACLwL,GAAUxL,IAAOwL,GAAUxL,GAAIqO,OAAO,EAAGD,GAG3CH,GAAa,OAEb,IAAKjO,EAAK,EAAGA,EAAKkO,EAAGlO,IACnBwL,GAAUxL,IAAOwL,GAAUxL,GAAIqO,OAAO,EAAGD,GAI7C5O,EAAW,GAET8O,GAAmB,CAAC/J,EAAOC,EAAME,EAASD,EAAQS,eAAmBA,cAAkBA,YAAgBA,aAAiB,UAAW,aAAc,SACjJqJ,GAAcD,GAAiBE,OAAO,CAAC7J,GAAQC,GAAS,YAAa,WAAgB,YAAiB,WAAYM,GAASD,GAAUA,aAAiBA,eAAmBA,gBAAoBA,gBAa7LwJ,GAAa,SAAoBC,EAAKC,EAAQC,EAAIC,GACpD,GAAIH,EAAII,aAAeH,EAAQ,CAM7B,IALA,IAGIpJ,EAHAtD,EAAIqM,GAAiB/L,OACrBwM,EAAcJ,EAAOnE,MACrBwE,EAAWN,EAAIlE,MAGZvI,KAEL8M,EADAxJ,EAAI+I,GAAiBrM,IACJ2M,EAAGrJ,GAGtBwJ,EAAYE,SAA2B,aAAhBL,EAAGK,SAA0B,WAAa,WAClD,WAAfL,EAAGzD,UAAyB4D,EAAY5D,QAAU,gBAClD6D,EAAgB,OAAIA,EAAe,MAAI,OACvCD,EAAYG,SAAW,UACvBH,EAAYI,UAAY,aACxBJ,EAAkB,MAAI1H,GAASqH,EAAKpJ,IAAeD,GACnD0J,EAAmB,OAAI1H,GAASqH,EAAKvM,IAAakD,GAClD0J,EAAoB,QAAIC,EAAgB,OAAIA,EAAa,IAAIA,EAAc,KAAI,IAE/EI,GAAUP,GAEVG,EAAe,MAAIA,EAAuB,SAAIJ,EAAS,MACvDI,EAAgB,OAAIA,EAAwB,UAAIJ,EAAU,OAC1DI,EAAiB,QAAIJ,EAAW,QAChCF,EAAII,WAAWnE,aAAagE,EAAQD,GACpCC,EAAOU,YAAYX,KAGnBY,GAAW,WACXF,GAAY,SAAmBG,GACjC,GAAIA,EAOF,IANA,IAGIhK,EACAlD,EAJAmI,EAAQ+E,EAAMC,EAAEhF,MAChB0D,EAAIqB,EAAMhN,OACVN,EAAI,EAIDA,EAAIiM,EAAGjM,GAAK,EACjBI,EAAQkN,EAAMtN,EAAI,GAClBsD,EAAIgK,EAAMtN,GAENI,EACFmI,EAAMjF,GAAKlD,EACFmI,EAAMjF,IACfiF,EAAMiF,eAAelK,EAAEmK,QAAQJ,GAAU,OAAOK,gBAKpDC,GAAY,SAAmBjO,GAOjC,IALA,IAAIuM,EAAIK,GAAYhM,OAChBiI,EAAQ7I,EAAQ6I,MAChB+E,EAAQ,GACRtN,EAAI,EAEDA,EAAIiM,EAAGjM,IACZsN,EAAMnN,KAAKmM,GAAYtM,GAAIuI,EAAM+D,GAAYtM,KAI/C,OADAsN,EAAMC,EAAI7N,EACH4N,GAiBL9M,GAAc,CAChBoG,KAAM,EACND,IAAK,GAEHiH,GAAiB,SAAwBxN,EAAO+K,EAAS0C,EAAcnG,EAAW0D,EAAQtC,EAAQgF,EAAgBC,EAAMC,EAAgBC,EAAanG,EAAkBoG,GAOzK,GANAzM,EAAYrB,KAAWA,EAAQA,EAAM2N,IAEjCvM,EAAUpB,IAAiC,QAAvBA,EAAMkH,OAAO,EAAG,KACtClH,EAAQ8N,GAAmC,MAApB9N,EAAMgH,OAAO,GAAaJ,GAAY,IAAM5G,EAAMkH,OAAO,GAAIuG,GAAgB,IAGjGnM,EAAUtB,GAuBJ0N,GACTjF,GAAgBiF,EAAgBD,EAAcnG,GAAW,OAxBpC,CACrBjG,EAAY0J,KAAaA,EAAUA,EAAQ4C,IAE3C,IAGII,EACAC,EACAlF,EALAxJ,EAAUlC,EAAS2N,GAAS,IAAMhO,EAClC8H,EAASpE,GAAWnB,IAAY,GAChC2O,EAAUjO,EAAMqF,MAAM,KAKpBR,IAAWA,EAAO2B,MAAS3B,EAAO0B,MAA+C,SAAvC7C,GAAkBpE,GAASwJ,UAEzEA,EAAUxJ,EAAQ6I,MAAMW,QACxBxJ,EAAQ6I,MAAMW,QAAU,QACxBjE,EAASpE,GAAWnB,GACpBwJ,EAAUxJ,EAAQ6I,MAAMW,QAAUA,EAAUxJ,EAAQ6I,MAAMiF,eAAe,YAG3EW,EAAcnH,GAAYqH,EAAQ,GAAIpJ,EAAOyC,EAAUzG,IACvDmN,EAAepH,GAAYqH,EAAQ,IAAM,IAAKR,GAC9CzN,EAAQ6E,EAAOyC,EAAUpE,GAAK0K,EAAetG,EAAUpE,GAAK2K,EAAcE,EAAc/C,EAASgD,EACjGN,GAAkBjF,GAAgBiF,EAAgBM,EAAc1G,EAAWmG,EAAeO,EAAe,IAAMN,EAAezF,UAAY+F,EAAe,IACzJP,GAAgBA,EAAeO,EAKjC,GAAItF,EAAQ,CACV,IAAIkE,EAAW5M,EAAQyN,EACnB5F,EAAUa,EAAOT,SACrB6F,EAAc,SAAWxG,EAAU1G,GAEnC6H,GAAgBC,EAAQkE,EAAUtF,EAAWO,GAAW+E,EAAW,KAAO/E,IAAYH,EAAmB3G,KAAKC,IAAIjE,EAAM+Q,GAAchR,EAAOgR,IAAgBpF,EAAO+D,WAAWqB,KAAiBlB,EAAW,GAEvMlF,IACFkG,EAAiBnN,GAAWiN,GAC5BhG,IAAqBgB,EAAOP,MAAMb,EAAU9D,GAAGN,GAAK0K,EAAetG,EAAU9D,GAAGN,GAAKoE,EAAU9D,GAAG0K,EAAIxF,EAAOF,QAAUxF,KAI3H,OAAOjC,KAAKoN,MAAMnO,IAEhBoO,GAAa,iCACbC,GAAY,SAAmB/O,EAASsI,EAAQrB,EAAKC,GACvD,GAAIlH,EAAQmN,aAAe7E,EAAQ,CACjC,IACI1E,EACAqJ,EAFApE,EAAQ7I,EAAQ6I,MAIpB,GAAIP,IAAW7K,EAAO,CAKpB,IAAKmG,KAJL5D,EAAQgP,QAAUnG,EAAMC,QAExBmE,EAAK7I,GAAkBpE,IAIf4D,GAAMkL,GAAWG,KAAKrL,KAAMqJ,EAAGrJ,IAA0B,iBAAbiF,EAAMjF,IAAyB,MAANA,IACzEiF,EAAMjF,GAAKqJ,EAAGrJ,IAIlBiF,EAAM5B,IAAMA,EACZ4B,EAAM3B,KAAOA,OAEb2B,EAAMC,QAAU9I,EAAQgP,QAG1B5R,EAAK8R,KAAKC,SAASnP,GAASwL,QAAU,EACtClD,EAAOoF,YAAY1N,KAIvBoP,GAAmB,SAA0BC,EAAUrH,GACrD,IAGAsH,EACIC,EAJAC,EAAYtP,EAAemP,EAAUrH,GACrCyH,EAAO,UAAYzH,EAAUnE,GAsCjC,OADAwL,EAASI,GAAQD,EAjCF,SAASE,EAAS1L,EAAUuF,EAAMoG,EAAcC,EAASC,GACtE,IAAInL,EAAQgL,EAAShL,MACjBoL,EAAavG,EAAKuG,WAClBC,EAAY,GA2BhB,OA1BArL,GAASA,EAAMe,OACf6J,EAAc7N,KAAKoN,MAAMc,GACzBpG,EAAKkG,GAAQzL,EACbuF,EAAKwG,UAAYA,EAEjBA,EAAUN,GAAQ,SAAU/O,GAY1B,OAXAA,EAAQe,KAAKoN,MAAMW,QAELF,GAAe5O,IAAU6O,GAErC7K,EAAMe,OACNiK,EAAShL,MAAQ,GAEjBhE,EAAQiP,EAAeC,EAAUlL,EAAMsL,MAAQH,EAAUnL,EAAMsL,MAAQtL,EAAMsL,MAG/ET,EAAcD,EACPA,EAAc7N,KAAKoN,MAAMnO,IAGlC6I,EAAKuG,WAAa,WAChBJ,EAAShL,MAAQ,EACjBoL,GAAcA,EAAWG,KAAKvL,IAGhCA,EAAQgL,EAAShL,MAAQtH,EAAKuH,GAAG0K,EAAU9F,KAQ/C5F,GAAYO,GAAK1D,GACV,IAAI2K,GAA6B,WACtC,SAASA,EAAc5B,EAAM2G,GAC3B7S,GAAgB8N,EAAcgF,SAAS/S,IAASgT,QAAQC,KAAK,6CAC7DC,KAAKC,KAAKhH,EAAM2G,GAwwBlB,OArwBa/E,EAAcqF,UAEpBD,KAAO,SAAchH,EAAM2G,GAIhC,GAHAI,KAAKhL,SAAW,EAChBgL,KAAK/G,MAAQ+G,KAAK7K,KAAK,GAElBpG,EAAL,CASA,IAiCIoR,EACAC,EACAC,EACAC,EACAC,EACAC,EACAzH,EACA0H,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAxE,EACAzM,EACAkR,EACAC,EACAC,GACAC,GACAC,GACA3E,GACA4E,GACAC,GACA9E,GACA+E,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GArmB2CxS,GAgiB3CgI,IAJJuB,EAAOjF,GAAaxC,EAAUyH,IAASvH,EAAUuH,IAASA,EAAKkJ,SAAW,CACxEhH,QAASlC,GACPA,EAAM1C,KAEW6L,WAAa/O,GAAcnD,GAC5CmS,GAAQpJ,EACRqJ,GAAWD,GAAMC,SACjBC,GAAcF,GAAME,YACpBC,GAAKH,GAAMG,GACXC,GAAWJ,GAAMI,SACjBC,GAAYL,GAAMK,UAClBC,GAAQN,GAAMM,MACdxH,GAAUkH,GAAMlH,QAChBsB,GAAM4F,GAAM5F,IACZmG,GAAaP,GAAMO,WACnBC,GAAsBR,GAAMQ,oBAC5BpM,GAAgB4L,GAAM5L,cACtBqM,GAAkBT,GAAMS,gBACxBC,GAAiBV,GAAMU,eACvBC,GAAOX,GAAMW,KACbC,GAAOZ,GAAMY,KACbC,GAAcb,GAAMa,YACpBC,IAAYR,IAAmB,IAAVA,GACrB5D,GAAWvR,EAASyL,EAAK8F,UAAY/R,GAAM,GAC3CoW,GAAgBtW,EAAK8R,KAAKC,SAASE,IACnCsE,GAAa/T,EAAYyP,IACzBjH,GAAmB,YAAamB,EAAwB,UAAjBA,EAAKqK,QAAsBD,IAAqD,UAAvC5T,EAAcsP,GAAU,WACxGwE,GAAY,CAACtK,EAAKuK,QAASvK,EAAKwK,QAASxK,EAAKyK,YAAazK,EAAK0K,aAChEnN,GAAgB2M,IAAYlK,EAAKzC,cAAcf,MAAM,KACrDmO,GAAU,YAAa3K,EAAOA,EAAK2K,QAAUrN,GAAUqN,QACvD3F,GAAcoF,GAAa,EAAIhM,WAAWvD,GAAkBiL,IAAU,SAAWrH,GAAUnE,GAAKL,MAAY,EAC5G6K,GAAOiC,KACP6D,GAAgB5K,EAAK4K,eAAiB,WACxC,OAAO5K,EAAK4K,cAAc9F,KAExB+F,GArqBW,SAAsB/E,EAAUsE,EAAYU,GAC7D,IAAI9S,EAAI8S,EAAM9S,EACVD,EAAK+S,EAAM/S,GACXE,EAAI6S,EAAM7S,EACd,OAAQA,EAAIzB,EAAcsP,EAAU,0BAA4B,WAC9D,OAAO7N,IAAID,IACT,WACF,OAAQoS,EAAarW,EAAK,QAAUgE,GAAM+N,EAAS,SAAW/N,KAAQ,GA8pBhDgT,CAAajF,GAAUsE,GAAY3L,IACrDuM,GA5pBc,SAAyBvU,EAAS2T,GACtD,OAAQA,IAAe7U,EAASgB,QAAQE,GAAWa,EAAeb,GAAW,WAC3E,OAAOc,IA0pBkB0T,CAAgBnF,GAAUsE,IAuCnDtF,GAAK9C,MAAQ5M,EACboI,IAAiB,GAEjB8C,GAAUpJ,KAAK4N,IAEfA,GAAKgB,SAAWA,GAChBhB,GAAK3C,OAASxL,EAAemP,GAAUrH,IACvC6I,EAAUxC,GAAK3C,SACf2C,GAAK9E,KAAOA,EACZ2G,EAAYA,GAAa3G,EAAK2G,UAC9B,oBAAqB3G,IAAS9K,EAAQ,GACtCiV,GAAce,YAAcf,GAAce,aAAe,CACvDxN,IAAKmI,GAAiBC,GAAU7O,IAChC0G,KAAMkI,GAAiBC,GAAU1L,KAEnC0K,GAAKoC,QAAUA,EAAUiD,GAAce,YAAYzM,GAAUpE,GAEzDsM,IACFA,EAAU3G,KAAKmL,MAAO,EACtBxE,EAAUyE,WAA+C,IAAnCzE,EAAU3G,KAAKqL,kBAAsD,IAAzBrL,EAAKqL,iBAA6B1E,EAAU/D,OAAO,GAAG,GAAM,GAC9HkC,GAAK6B,UAAYA,EAAU9D,QAC3B8D,EAAU2E,cAAgBxG,IAC1B8D,GAAcnQ,EAAUiR,KAAUA,MAClBf,GAAa9U,EAAKuH,GAAGuL,EAAW,CAC9C4E,KAAM,SACNC,SAAU5C,GACVrC,WAAY,WACV,OAAOsD,IAAmBA,GAAgB/E,QAG9C2D,GAAQ,EACRc,KAAOA,GAAK5C,EAAU3G,KAAKuJ,KAGzBS,KACFtR,EAAUsR,MAAUA,GAAO,CACzByB,OAAQzB,KAEVnW,EAAKwM,IAAI+J,GAAa,CAAClW,EAAOD,GAAU6R,GAAU,CAChD4F,eAAgB,SAGlBtE,EAAW5O,EAAYwR,GAAKyB,QAAUzB,GAAKyB,OAAyB,WAAhBzB,GAAKyB,OAhnB9C,SAAoB9E,GACnC,OAAO,SAAUxP,GACf,IAGIkD,EAHApC,EAAI,GACJ0T,EAAShF,EAAUgF,OACnBH,EAAW7E,EAAU6E,WAGzB,IAAKnR,KAAKsR,EACR1T,EAAEf,KAAKyU,EAAOtR,GAAKmR,GAGrB,OAAO3X,EAAK+X,MAAM5B,KAAK/R,EAAGd,IAqmBuD0U,CAAWlF,GAAa9S,EAAK+X,MAAM5B,KAAKA,GAAKyB,QAC5H5C,GAAemB,GAAKwB,UAAY,CAC9BM,IAAK,GACL3T,IAAK,GAEP0Q,GAAenQ,EAAUmQ,IAAgBrU,EAAOqU,GAAaiD,IAAKjD,GAAa1Q,KAAO3D,EAAOqU,GAAcA,IAC3GC,GAAkBjV,EAAKkY,YAAY/B,GAAKgC,OAASpD,GAAc,GAAK,IAAK,WACvE,GAAI1Q,KAAKgB,IAAI4L,GAAKmH,eAAiB,KAAOrX,EAAgB,CACxD,IAAIsX,EAAgBvF,IAAcuD,GAAWvD,EAAUuF,gBAAkBpH,GAAK/I,SAC1EoQ,GAAYD,EAAgBxD,KAAUjT,IAAahB,GAAU,KAAQ,EACrE4R,EAAUpN,EAAKkT,EAAW,GAAKA,EAAW,KAC1CC,EAAaF,EAAgB7F,EAC7BgG,EAAW7X,EAAO,EAAG,EAAG4S,EAASgF,EAAYtH,KAC7C3C,EAAS2C,GAAK3C,SACdmK,EAAYpU,KAAKoN,MAAMxF,EAAQuM,EAAWvE,GAC1C3M,EAAQ+L,EAAQ/L,MAEpB,GAAIgH,GAAUqF,GAAOrF,GAAUrC,GAASwM,IAAcnK,EAAQ,CAC5D,GAAIhH,IAAUA,EAAMiQ,UAAYjQ,EAAMoR,MAAQrU,KAAKgB,IAAIoT,EAAYnK,GAEjE,OAGF+E,EAAQoF,EAAW,CACjBd,SAAU3C,GAAa5P,EAAkF,KAA7Ef,KAAKC,IAAIc,EAAKmT,EAAaF,GAAgBjT,EAAKoT,EAAWH,IAA0BC,EAAW,KAAQ,IACpIZ,KAAMvB,GAAKuB,MAAQ,SACnBgB,KAAMrU,KAAKgB,IAAIoT,EAAYnK,GAE3BoE,WAAY,WACVkC,GAAQC,GAAQ/B,IAAcuD,GAAWvD,EAAUuF,gBAAkBpH,GAAK/I,SAC1E+N,IAAkBA,GAAehF,MAElC3C,EAAQkE,EAAUyB,EAAQwE,EAAYnK,EAASkE,EAAUyB,SAErDhD,GAAK0H,UACd1D,GAAgBjI,SAAQ,MAEzBgC,SAGL0G,KAAOhJ,GAAKgJ,IAAMzE,IAClB5C,GAAU4C,GAAK5C,QAAU3N,EAAS2N,IAAWsB,IAAK,GAClDA,IAAc,IAARA,GAAetB,GAAU3N,EAASiP,IAAK,GAC7CjL,EAAU+Q,MAAiBA,GAAc,CACvCmD,QAASvK,GACTwK,UAAWpD,KAGT9F,MACa,IAAfmG,IAAwBA,KAAe3P,KAAY2P,MAAcA,IAA4D,SAA9C9O,GAAkB2I,GAAII,YAAY3D,UAA6BlG,IAE9I+K,GAAKtB,IAAMA,IACM,IAAjBxD,EAAK2M,SAAqB9Y,EAAKwM,IAAImD,GAAK,CACtCmJ,SAAS,KAEXxF,EAAWtT,EAAK8R,KAAKC,SAASpC,KAEhBC,OAMZsE,EAAmBZ,EAASc,UAJ5Bd,EAAS1D,OAASA,EAASzP,EAAK4K,cAAc,OAC9C6E,EAAOpE,aAAa,QAAS,cAAgBkK,GAAK,eAAiBA,GAAK,KACxEpC,EAASc,SAAWF,EAAmBrD,GAAUlB,KAKnDsB,GAAKrB,OAASA,EAAS0D,EAAS1D,OAChCC,GAAK7I,GAAkB2I,IACvB8E,GAAe5E,GAAGiG,GAAalL,GAAUjE,KACzC0N,EAAYrU,EAAK+Y,YAAYpJ,IAC7B2E,EAAYtU,EAAKgZ,YAAYrJ,GAAK/E,GAAUxG,EAAGkC,IAE/CoJ,GAAWC,GAAKC,EAAQC,IAExBuE,EAAWvD,GAAUlB,KAGnBmH,KACF9C,EAAanP,EAAUiS,IAAW5P,GAAa4P,GAAS3N,IAAmBA,GAC3E2K,EAAqBrJ,GAAc,iBAAkBiL,GAAIzD,GAAUrH,GAAWoJ,EAAY,GAC1FD,EAAmBtJ,GAAc,eAAgBiL,GAAIzD,GAAUrH,GAAWoJ,EAAY,EAAGF,GACzF3Q,EAAS2Q,EAAmB,SAAWlJ,GAAU9D,GAAG5C,IACpD0P,EAAcnJ,GAAc,QAASiL,GAAIzD,GAAUrH,GAAWoJ,EAAY7Q,GAC1E0Q,EAAYpJ,GAAc,MAAOiL,GAAIzD,GAAUrH,GAAWoJ,EAAY7Q,GAEjE6H,MAtuBwCpI,GAuuBzBqP,IAtuBTxG,MAAMyE,SAAmD,aAAxClJ,GAAkBpE,IAASsN,SAA0B,WAAa,WAwuB5FlQ,EAAKwM,IAAI,CAACsH,EAAoBC,GAAmB,CAC/C+E,SAAS,IAEXpE,GAAoB1U,EAAKgZ,YAAYlF,EAAoBlJ,GAAUxG,EAAGkC,IACtEqO,GAAkB3U,EAAKgZ,YAAYjF,EAAkBnJ,GAAUxG,EAAGkC,MAItE2K,GAAKzC,OAAS,SAAUA,GACtB,IAAIyK,GAAe,IAAXzK,IAAqByC,GAAKiI,QAC9BC,EAAiBrY,EAEjBmY,IAAMzF,IACJyF,IACF9D,GAAa9Q,KAAKC,IAAI2M,GAAK3C,SAAU2C,GAAK3C,OAAOC,KAAO,GAExD2G,GAAejE,GAAK/I,SACpBkN,GAAmBtC,GAAaA,EAAU5K,YAG5C0L,GAAe,CAACA,EAAaC,EAAWC,EAAoBC,GAAkBnL,SAAQ,SAAU4I,GAC9F,OAAOA,EAAE/F,MAAMW,QAAU6M,EAAI,OAAS,WAExCA,IAAMnY,EAAc,GACpBmQ,GAAK3B,OAAO2J,GAEZnY,EAAcqY,EACdxJ,KAAQsJ,EApdE,SAAqBtJ,EAAKC,EAAQY,GAGlD,GAFAH,GAAUG,GAENb,EAAII,aAAeH,EAAQ,CAC7B,IAAI1E,EAAS0E,EAAOG,WAEhB7E,IACFA,EAAOU,aAAa+D,EAAKC,GACzB1E,EAAOkO,YAAYxJ,KA4cLyJ,CAAY1J,GAAKC,EAAQsE,KAAsBkC,KAAgBnF,GAAK0H,WAAajJ,GAAWC,GAAKC,EAAQ5I,GAAkB2I,IAAMG,KAC7I0D,EAAayF,IAIjBhI,GAAKpC,QAAU,SAAUyK,GACvB,IAAIxY,GAAgBmQ,GAAKiI,QAIzB,GAAIvJ,IAAO2J,GAAQtX,EACjB8G,GAAaiF,EAAe,YAAaD,QAD3C,CAMAhN,EAAc,EACdgU,IAAcA,GAAWzM,OACzB0N,IAAuBjD,GAAaA,EAAU5K,SAAS,GAAGqR,aAC1D/F,GAAcvC,GAAKzC,SAqBnB,IAnBA,IAUIqB,EACA1H,EACAmG,EACAkL,EACAC,EACAC,EACAC,EACAC,EAjBAzP,EAAO6M,KACP9F,EAAiBiG,KACjB7S,EAAMN,EAAWiO,GAAUrH,IAC3BzH,EAAS,EACT0W,EAAiB,EACjBC,EAAY3N,EAAKwH,IACjBoG,EAAmB5N,EAAK6N,YAAc3L,GACtC4L,EAAc9N,EAAKF,QAAyB,IAAfE,EAAKF,MAAc,EAAI0D,KAAQtB,GAAU,MAAQ,UAC9E6L,EAAe7L,IAAWhK,KAAKC,IAAI,EAAGmI,GAAU/J,QAAQuO,MAAU,EAClE/N,EAAIgX,EAUDhX,MAELyW,EAASlN,GAAUvJ,GAAGyM,OACXgK,IAAWtL,IAAWsL,IAAWhK,KAAQlD,GAAUvJ,GAAGsL,SAsBnE,IAnBAvC,EAAQ6E,GAAemJ,EAAa5L,GAASlE,EAAMS,GAAWqG,GAAK3C,SAAUsF,EAAaE,EAAoB7C,GAAMC,EAAgBC,GAAanG,GAAkB1G,KAASqL,IAAO,KAAQ,GAC3LhL,EAAYmV,KAAeA,EAAYA,EAAU7I,KAE7CvM,EAAUoV,KAAeA,EAAUpX,QAAQ,SACxCoX,EAAUpX,QAAQ,KACrBoX,GAAapV,EAAUuV,GAAeA,EAAYtR,MAAM,KAAK,GAAK,IAAMmR,GAExE3W,EAAS+G,GAAY4P,EAAUtP,OAAO,GAAIL,GAC1C2P,EAAYpV,EAAUuV,GAAeA,EAAchO,EAAQ9I,EAE3D4W,EAAmB1L,KAIvBsF,EAAMtP,KAAKC,IAAI2H,EAAO6E,GAAegJ,IAAcC,EAAmB,SAAWzV,GAAMyV,EAAkB5P,EAAMS,GAAWqG,GAAK3C,SAAWnL,EAAQ0Q,EAAWE,EAAkB9C,GAAMC,EAAgBC,GAAanG,GAAkB1G,MAAU,KAC9O2P,EAASN,EAAM1H,IAAUA,GAAS,MAAS,KAC3C9I,EAAS,EACTD,EAAIgX,EAEGhX,MAELyW,GADAD,EAAajN,GAAUvJ,IACHyM,MAEN+J,EAAWzN,MAAQyN,EAAWS,SAAWlO,IACrD4D,EAAK6J,EAAW/F,IAAM+F,EAAWzN,MACjC0N,IAAWtL,KAAYlL,GAAU0M,GACjC8J,IAAWhK,KAAQkK,GAAkBhK,IAezC,GAXA5D,GAAS9I,EACTwQ,GAAOxQ,EACP8N,GAAKkJ,SAAWN,EAEZjG,GAAezQ,KAEjB0M,EAAK,IACFjF,GAAUxG,GAAK,KAAOjB,EACzBnD,EAAKwM,IAAI,CAACoH,EAAaC,GAAYhE,IAGjCF,GACFE,EAAK7I,GAAkB2I,IACvB6J,EAAa5O,KAAcxH,GAC3BkL,EAAS2C,GAAK3C,SAEdiG,GAAWhK,WAAW8J,EAAUzJ,GAAUxG,IAAMyV,GAC/CvV,GAAOqP,EAAM,KAAO4C,GAAalW,EAAQ4R,IAAUxG,MAAM,YAAcb,GAAUxG,GAAK,UAEvFsL,GAAWC,GAAKC,EAAQC,GAExBuE,EAAWvD,GAAUlB,IAErBxH,EAASpE,GAAW4L,IAAK,GACzBiK,EAAiB5O,IAAoBlI,EAAemP,GAAUuH,EAAajT,GAAcnD,GAApDN,GAEjCgT,MACFhG,GAAc,CAACgG,GAAalL,GAAUjE,IAAKsN,EAAS4F,EAAiBvT,KACzDmK,EAAIb,GAChB1M,EAAI4S,KAAe5P,GAAWoC,GAASqH,GAAK/E,IAAaqJ,EAAS4F,EAAiB,IAC9E/J,GAAYzM,KAAKuH,GAAUzG,EAAGjB,EAAIoD,IAEvC+J,GAAUP,IAEV9E,IAAoBiG,GAAK3C,OAAO6G,KAG9BnK,MACFyO,EAAW,CACT5P,IAAK1B,EAAO0B,KAAO2P,EAAalL,EAASrC,EAAQ2N,GAAkBtT,GACnEwD,KAAM3B,EAAO2B,MAAQ0P,EAAaI,EAAiBtL,EAASrC,GAAS3F,GACrE8J,UAAW,aACXF,SAAU,UAEG,MAAIuJ,EAAuB,SAAIpV,KAAK+V,KAAKjS,EAAOxE,OAAS2C,GACxEmT,EAAgB,OAAIA,EAAwB,UAAIpV,KAAK+V,KAAKjS,EAAOtE,QAAUyC,GAC3EmT,EAAgB,OAAIA,EAAuB,UAAIA,EAAyB,YAAIA,EAA0B,aAAIA,EAAwB,WAAI,IACtIA,EAAiB,QAAI5J,EAAW,QAChC4J,EAAwB,WAAI5J,EAAkB,WAC9C4J,EAA0B,aAAI5J,EAAoB,aAClD4J,EAA2B,cAAI5J,EAAqB,cACpD4J,EAAyB,YAAI5J,EAAmB,YAChDsE,EAvgBO,SAAoB3D,EAAOiJ,EAAUY,GAOpD,IANA,IAIA7T,EAJIsI,EAAS,GACTK,EAAIqB,EAAMhN,OACVN,EAAImX,EAAc,EAAI,EAInBnX,EAAIiM,EAAGjM,GAAK,EACjBsD,EAAIgK,EAAMtN,GACV4L,EAAOzL,KAAKmD,EAAGA,KAAKiT,EAAWA,EAASjT,GAAKgK,EAAMtN,EAAI,IAIzD,OADA4L,EAAO2B,EAAID,EAAMC,EACV3B,EA0fkBwL,CAAWpG,EAAkBuF,EAAUrD,KAGtDtD,GAEFA,EAAU5K,SAAS,GAAG,GACtBsM,GAAYH,EAAUzJ,GAAUxG,GAAKmQ,GAAWN,EAAS4F,EACzD5F,IAAWO,IAAaL,EAAeoG,OAAOpG,EAAe3Q,OAAS,EAAG,GAEzEsP,EAAU5K,SAAS,GAAG,IAEtBsM,GAAYP,OAET,GAAI5F,IAAW4C,GAAK3C,SAIzB,IAFAnG,EAASkG,GAAQ0B,WAEV5H,GAAUA,IAAW9H,GACtB8H,EAAOqS,aACTvO,GAAS9D,EAAOqS,WAChB7G,GAAOxL,EAAOqS,YAGhBrS,EAASA,EAAO4H,WAIpB,IAAK7M,EAAI,EAAGA,EAAIgX,EAAchX,KAE5BwW,EAAajN,GAAUvJ,GAAGyM,OACX+J,IAAerL,IAAWqL,IAAe/J,KAAQlD,GAAUvJ,GAAGsL,QAAO,GAGtFyC,GAAKhF,MAAQA,EACbgF,GAAK0C,IAAMA,GACXF,EAAUC,EAAUzC,GAAK3C,UAEf6G,IAAclE,GAAK3C,OAAO6G,IACpClE,GAAKzC,QAAO,GACZ1N,EAAc,EACdsU,IAAoBiB,IAAYvD,EAAU5K,SAASkN,IAAkB,GAEjEF,KAAiBjE,GAAK/I,WAExB4M,IAAchC,EAAUuF,cAAcnD,IAAc,GAEpDjE,GAAK/I,SAAWgN,GAChBjE,GAAK3B,UAGPK,IAAOmG,KAAelG,EAAO4K,WAAanW,KAAKoN,MAAMR,GAAK/I,SAAWsM,KACrEoB,IAAaA,GAAU3E,MAGzBA,GAAKmH,YAAc,WACjB,OAAQnH,GAAK3C,SAAWoF,IAAY9R,IAAahB,GAAU,KAAQ,GAGrEqQ,GAAK3B,OAAS,SAAUmL,EAAOpL,GAC7B,IAIIsJ,EAEA+B,EACAC,EACAC,EACAC,EATAvM,EAAS2C,GAAK3C,SACd9H,EAAIiU,EAAQ,GAAKnM,EAASrC,GAASgI,EACnC6G,EAAUtU,EAAI,EAAI,EAAIA,EAAI,EAAI,EAAIA,GAAK,EACvC0O,EAAejE,GAAK/I,SAqBxB,GAbImH,IACFqE,EAAUD,EACVA,EAAUnF,EAEN6H,KACFtB,GAAQD,GACRA,GAAQ9B,IAAcuD,GAAWvD,EAAUuF,gBAAkByC,IAKjEnR,KAAkBmR,GAAWnL,KAAQ7O,IAAgBW,GAAYO,GAAmBiK,EAAQqC,GAAUA,EAASoF,IAAY9R,IAAahB,GAAU+I,KAAkBmR,EAAU,MAE1KA,IAAY5F,GAAgBjE,GAAKiI,QAAS,CAkB5C,GAdA0B,GADAC,GAFAlC,EAAW1H,GAAK0H,WAAamC,GAAWA,EAAU,QACpC5F,GAAgBA,EAAe,OAEjB4F,KAAc5F,EAE1CjE,GAAKrG,UAAYkQ,EAAU5F,EAAe,GAAK,EAC/CjE,GAAK/I,SAAW4S,EAEXzE,MACCvB,IAAehU,GAAgBW,EAGxBqR,GACTA,EAAUuF,cAAcyC,IAAWha,IAHnCgU,GAAW3I,KAAKkM,cAAgByC,EAChChG,GAAWyE,aAAavM,YAMxB2C,GAGF,GAFA8K,GAAS3E,KAAelG,EAAOnE,MAAMqK,GAAalL,GAAUjE,KAAO8N,IAE9DzJ,IAEE,GAAI4P,EAAc,CAGvB,GAFAD,GAAUF,GAASK,EAAU5F,GAAgBvB,EAAM,EAAIrF,GAAUA,EAAS,GAAKtK,EAAWiO,GAAUrH,IAEhGwL,GACF,GAAKqE,IAAU9B,IAAYgC,EAMzBhJ,GAAUhC,GAAKC,OANmB,CAClC,IAAIzH,EAASpE,GAAW4L,IAAK,GACzB7D,EAAUwC,EAASrC,EAEvB0F,GAAUhC,GAAKtP,EAAO8H,EAAO0B,KAAOe,KAAcxH,GAAY0I,EAAU,GAAKxF,GAAK6B,EAAO2B,MAAQc,KAAcxH,GAAY,EAAI0I,GAAWxF,IAM9I+J,GAAUsI,GAAYgC,EAASxG,EAAiBC,GAEhDI,KAAcP,GAAU6G,EAAU,GAAKnC,GAAYrE,EAAUC,IAAwB,IAAZuG,GAAkBH,EAAqB,EAAZnG,WAjBpGF,EAAUC,GAAWC,GAAYsG,GAqBrC3E,KAAS9C,EAAQ/L,QAAUxG,IAAgBW,GAAYwT,GAAgBjI,SAAQ,GAC/EyI,KAAgBoF,GAAW3E,IAAQ4E,IAAYA,EAAU,IAAMxZ,KAAqBZ,EAAS+U,GAAYmD,SAAShQ,SAAQ,SAAUmS,GAClI,OAAOA,EAAGC,UAAUrC,GAAYzC,GAAO,MAAQ,UAAUT,GAAYoD,cAGvErD,KAAaa,KAAaoE,GAASjF,GAASvE,IAExC2J,IAAiB9Z,GACnB4Z,EAAcI,IAAY5F,EAAe,EAAgB,IAAZ4F,EAAgB,EAAqB,IAAjB5F,EAAqB,EAAI,EAEtFmB,KACFsE,GAAUE,GAA8C,SAAnCnR,GAAcgR,EAAc,IAAiBhR,GAAcgR,EAAc,IAAMhR,GAAcgR,GAE9G5H,IAAyB,aAAX6H,GAAoC,UAAXA,GAAsBA,KAAU7H,KAC1D,aAAX6H,EACF7H,EAAU9D,QAAQqJ,cAAc,GACZ,UAAXsC,EACT7H,EAAU9F,SAAQ,GAAMgC,QAExB8D,EAAU6H,MAIdnF,IAAYA,GAASvE,MAGnB4J,GAAYvZ,IAEdqU,IAAYkF,GAAWlF,GAAS1E,IAChCwF,GAAUiE,IAAgBjE,GAAUiE,GAAazJ,IACjDiF,KAAqB,IAAZ4E,EAAgB7J,GAAK5I,MAAK,EAAO,GAAKoO,GAAUiE,GAAe,GAEnEG,GAGHpE,GADAiE,EAA0B,IAAZI,EAAgB,EAAI,IACRrE,GAAUiE,GAAazJ,MAG5CoF,IAAYb,KAAa1U,GAClC0U,GAASvE,IAKT0D,KACFD,GAAkBpG,GAAUwF,EAAmBvH,WAAa,EAAI,IAChEoI,GAAgBrG,KAIpB2C,GAAKgK,OAAS,WACPhK,GAAKiI,UACRjI,GAAKiI,SAAU,EAEfpQ,GAAamJ,GAAU,SAAUlF,IAEjCjE,GAAamJ,GAAU,SAAUpF,IAEjCkK,IAAiBjO,GAAaiF,EAAe,cAAegJ,IAC3DjE,GAAcA,EAAUoI,IAAuBlb,EAAKkY,YAAY,KAAM,WACrE,OAAOjM,GAAS0H,GAAO1C,GAAKpC,eACvBoF,EAAS,OAAUhI,EAAQ0H,EAAM,GAFT1C,GAAKpC,YAMxCoC,GAAKkK,QAAU,SAAUV,EAAOW,GAC9B,GAAInK,GAAKiI,WACG,IAAVuB,GAAmBxJ,GAAKzC,SACxByC,GAAKiI,QAAUjI,GAAK0H,UAAW,EAC/ByC,GAAkBtG,IAAcA,GAAW9F,QAC3CmG,GAAa,EACb7B,IAAaA,EAASlF,QAAU,GAChC2I,IAAiB9N,GAAgB8E,EAAe,cAAegJ,IAE3D9B,KACFA,GAAgBjG,QAChBqE,EAAQ/L,OAAS+L,EAAQ/L,MAAMe,SAAWgL,EAAQ/L,MAAQ,KAGvDiP,IAAY,CAGf,IAFA,IAAIrT,EAAIuJ,GAAUjJ,OAEXN,KACL,GAAIuJ,GAAUvJ,GAAG+O,WAAaA,IAAYxF,GAAUvJ,KAAO+N,GACzD,OAIJhI,GAAgBgJ,GAAU,SAAUlF,IAEpC9D,GAAgBgJ,GAAU,SAAUpF,MAK1CoE,GAAK5I,KAAO,SAAUmG,EAAQ4M,GAC5BnK,GAAKkK,QAAQ3M,EAAQ4M,GACrB1F,WAAahJ,GAAKgJ,IAElB,IAAIxS,EAAIuJ,GAAU/J,QAAQuO,IAE1BxE,GAAU8N,OAAOrX,EAAG,GAEpBA,IAAMjC,GAAMiO,GAAa,GAAKjO,IAE1B6R,IACFA,EAAU2E,cAAgB,KAC1BjJ,GAAUsE,EAAU/D,QAAQ,GAC5BqM,GAAkBtI,EAAUzK,QAG9BuL,GAAe,CAACA,EAAaC,EAAWC,EAAoBC,GAAkBnL,SAAQ,SAAU4I,GAC9F,OAAOA,EAAEzB,WAAWqJ,YAAY5H,MAElC8B,IAAaA,EAASlF,QAAU,IAGlC6C,GAAKgK,cA/lBH/H,KAAK5D,OAAS4D,KAAKrE,QAAUqE,KAAK7K,KAAOnG,GAkmB7C6L,EAAcgF,SAAW,SAAkBjB,GACzC,IAAK7R,IACHD,EAAO8R,GAAQxP,IAEXF,KAAmBC,OAAOgZ,WAC5Bnb,EAAOmC,OACPlC,EAAOkb,SACPjb,EAASD,EAAKmb,gBACdjb,EAAQF,EAAKob,MAGXvb,IACFU,EAAWV,EAAK+X,MAAMyD,QACtB7a,EAASX,EAAK+X,MAAM0D,MACpBzb,EAAK8R,KAAK4J,QAAQ,gBAAiB3N,GAE/B1N,IAAO,CACTG,EAAON,EAAKyb,uBAAyB,SAAU1N,GAC7C,OAAO2N,WAAW3N,EAAG,KAGvBnF,GAAa5I,EAAM,aAAc2M,IAEjCvM,EAAQ,CAACJ,EAAMC,EAAMC,EAAQC,GAE7ByI,GAAa3I,EAAM,SAAU0M,IAG7B,IAEI1E,EAFA0T,EAAYxb,EAAMoL,MAClBqQ,EAASD,EAAUE,UAEvBF,EAAUE,UAAY,iBAEtB5T,EAASpE,GAAW1D,GACpB+C,GAAUoO,EAAInN,KAAKoN,MAAMtJ,EAAO0B,IAAMzG,GAAUH,OAAS,EAEzDsD,GAAYiL,EAAInN,KAAKoN,MAAMtJ,EAAO2B,KAAOvD,GAAYtD,OAAS,EAC9D6Y,EAASD,EAAUE,UAAYD,EAASD,EAAUnL,eAAe,cACjE7P,EAAgBmb,YAAYrP,GAAO,KACnC3M,EAAKkY,YAAY,IAAK,WACpB,OAAOzW,EAAW,KAGpBqH,GAAa3I,EAAM,cAAe+B,GAGlC4G,GAAazI,EAAO,aAAc6B,GAGlCsG,GAAeM,GAAc3I,EAAM,oCAAoC,WACrE,OAAOY,EAAiB,KAG1ByH,GAAeM,GAAc3I,EAAM,8BAA8B,WAC/D,OAAOY,EAAiB,KAG1BC,EAAiBhB,EAAK+X,MAAMkE,YAAY,aAExCzM,GAAYnM,KAAKrC,GAEjBf,EAAe2B,IACfrB,EAAeP,EAAKkY,YAAY,GAAKrK,IAAamB,QAClD5N,EAAe,CAACjB,EAAM,mBAAoB,WACxC,IAAI+b,EAAIhc,EAAK0D,WACTuY,EAAIjc,EAAK4D,YAET3D,EAAKic,QACPlb,EAAagb,EACb/a,EAAcgb,GACLjb,IAAegb,GAAK/a,IAAgBgb,GAC7CpP,MAED5M,EAAM,mBAAoB0N,GAAa3N,EAAM,OAAQ,WACtD,OAAO8B,GAAmB6L,MACzB3N,EAAM,SAAU6M,IAEnBxI,EAAoBuE,IAK1B,OAAO7I,GAGT8N,EAAc3G,SAAW,SAAkBiV,GACzC,IAAK,IAAI7V,KAAK6V,EACZ5S,GAAUjD,GAAK6V,EAAO7V,IAI1BuH,EAAc1F,KAAO,WACnBpG,EAAW,EAEXwK,GAAU6P,MAAM,GAAG1T,SAAQ,SAAUyF,GACnC,OAAOA,EAAQhG,KAAK,OAIxB0F,EAAcsO,OAAS,SAAgBlQ,GACrC,mBAAoBA,IAAS7K,IAAoB6K,EAAKoQ,gBACtD,IAAIC,EAAKrQ,EAAKsQ,aACdD,GAAME,cAAc7b,KAAmBA,EAAgB2b,IAAOR,YAAYrP,GAAO6P,GACjF,sBAAuBrQ,IAAS5H,EAAoB0E,KAAoB1E,EAAoBuE,GAAcqD,EAAKwQ,mBAAqB,UAGtI5O,EAAc6O,cAAgB,SAAuBC,EAAQ1Q,GAC3D,IAAIsE,EAAI/P,EAASmc,GAAQ,GAEzBra,EAAYiO,GAAK/O,EAASob,QAAQ5c,EAAMiM,EAAM9L,EAAO8L,EAAM/L,EAAQ+L,GAAQzK,EAASob,QAAQrM,EAAGtE,IAGjG4B,EAAcJ,WAAa,SAAoBxB,GAE7C,IAAI4Q,EAAIvW,EAAGtD,EAAGsB,EAAMsK,EAEpB,IAAKtI,KAAK2F,EACRjJ,EAAIiK,GAAOzK,QAAQ8D,GACnBhC,EAAO2H,EAAK3F,GACZjF,EAAiBiF,EAEP,QAANA,EACFhC,KAEAuY,EAAK7c,EAAKyN,WAAWnH,MAGnBuW,EAAGtP,UAAYqB,EAAStK,MAEnBtB,GACHiK,GAAOjK,EAAI,GAAK6B,EAAaoI,GAAOjK,EAAI,GAAIsB,GAC5C2I,GAAOjK,EAAI,GAAK6B,EAAaoI,GAAOjK,EAAI,GAAI4L,KAE5C5L,EAAIiK,GAAO3J,OAEX2J,GAAO9J,KAAKmD,EAAGhC,EAAMsK,GAErBiO,EAAGC,YAAcD,EAAGC,YAAY5P,IAAkB2P,EAAGhU,iBAAiB,SAAUqE,KAGlFD,GAAOjK,EAAI,GAAK6Z,EAAGtP,SAIvBlM,EAAiB,EAGnB,OAAO4L,IAGTY,EAAckP,gBAAkB,SAAyBC,GACvDA,IAAU/P,GAAO3J,OAAS,IAC1B0Z,EAAQ/P,GAAOzK,QAAQwa,KACd,GAAK/P,GAAOoN,OAAO2C,EAAO,IAG9BnP,EA3wB+B,GA6wBxCA,GAAcoP,QAAU,QAExBpP,GAAcqP,WAAa,SAAUxE,GACnC,OAAOA,EAAUlY,EAASkY,GAAShQ,SAAQ,SAAUiU,GACnD,IAAI3Z,EAAIgL,GAAaxL,QAAQma,GAE7B3Z,GAAK,GAAKgL,GAAaqM,OAAOrX,EAAG,GAEjCgL,GAAa7K,KAAKwZ,EAAQA,EAAOpR,MAAMC,QAAS1L,EAAK8R,KAAKC,SAAS8K,GAAStb,MACzE2M,IAGPH,GAAcS,OAAS,SAAU8K,EAAMnL,GACrC,OAAOT,IAAY4L,EAAMnL,IAG3BJ,GAAcsP,OAAS,SAAUlR,EAAM2G,GACrC,OAAO,IAAI/E,GAAc5B,EAAM2G,IAGjC/E,GAAcc,QAAU,SAAUyO,GAChC,OAAOA,EAAOvQ,KAAcc,IAAY,IAG1CE,GAAcuB,OAAS1C,GAEvBmB,GAAcwP,UAAY,SAAU3a,EAAS0S,GAC3C,OAAOtR,EAAWpB,EAAS0S,EAAa/O,GAAcnD,KAGxD2K,GAAcyP,cAAgB,SAAU5a,EAAS0S,GAC/C,OAAOxS,EAAepC,EAASkC,GAAS,GAAI0S,EAAa/O,GAAcnD,KAGzE2K,GAAc0P,QAAU,SAAU/H,GAChC,OAAOhJ,GAAKgJ,IAGd3H,GAAc2P,OAAS,WACrB,OAAOjR,GAAU6P,MAAM,IAGzBvO,GAAc4P,YAAc,WAC1B,QAAS3b,GAGX+L,GAAchF,iBAAmB,SAAUF,EAAMH,GAC/C,IAAItE,EAAI6I,GAAWpE,KAAUoE,GAAWpE,GAAQ,KAC/CzE,EAAE1B,QAAQgG,IAAatE,EAAEf,KAAKqF,IAGjCqF,GAAc7E,oBAAsB,SAAUL,EAAMH,GAClD,IAAItE,EAAI6I,GAAWpE,GACf3F,EAAIkB,GAAKA,EAAE1B,QAAQgG,GACvBxF,GAAK,GAAKkB,EAAEmW,OAAOrX,EAAG,IAGxB6K,GAAc6P,MAAQ,SAAUhF,EAASzM,GACvC,IAmBI3F,EAnBAsI,EAAS,GACT+O,EAAW,GACXC,EAAW3R,EAAK2R,UAAY,KAC5BC,EAAW5R,EAAK4R,UAAY,IAC5BC,EAAgB,SAAuBnV,EAAMH,GAC/C,IAAIuV,EAAW,GACXC,EAAW,GACX/F,EAAQnY,EAAKkY,YAAY4F,GAAU,WACrCpV,EAASuV,EAAUC,GACnBD,EAAW,GACXC,EAAW,MACVlP,QACH,OAAO,SAAUiC,GACfgN,EAASza,QAAU2U,EAAMnL,SAAQ,GACjCiR,EAAS5a,KAAK4N,EAAK5C,SACnB6P,EAAS7a,KAAK4N,GACd8M,GAAYE,EAASza,QAAU2U,EAAMjQ,SAAS,KAKlD,IAAK1B,KAAK2F,EACR0R,EAASrX,GAAwB,OAAnBA,EAAEgE,OAAO,EAAG,IAAe7F,EAAYwH,EAAK3F,KAAa,kBAANA,EAAwBwX,EAAcxX,EAAG2F,EAAK3F,IAAM2F,EAAK3F,GAsB5H,OAnBI7B,EAAYoZ,KACdA,EAAWA,IAEXjV,GAAaiF,GAAe,WAAW,WACrC,OAAOgQ,EAAW5R,EAAK4R,eAI3Brd,EAASkY,GAAShQ,SAAQ,SAAUiU,GAClC,IAAIR,EAAS,GAEb,IAAK7V,KAAKqX,EACRxB,EAAO7V,GAAKqX,EAASrX,GAGvB6V,EAAOhO,QAAUwO,EACjB/N,EAAOzL,KAAK0K,GAAcsP,OAAOhB,OAG5BvN,GAGTf,GAAca,KAAO,SAAUpK,GAC7B,OAAOiI,GAAUmC,KAAKpK,GAAQ,SAAUJ,EAAG+Z,GACzC,OAAwC,KAAhC/Z,EAAE+H,KAAKiS,iBAAmB,GAAYha,EAAE6H,OAASkS,EAAElS,OAAyC,KAAhCkS,EAAEhS,KAAKiS,iBAAmB,OAIlG9b,KAActC,EAAKuC,eAAewL;;;;;;;;;;AChjDlC,IAAI/N,GACAC,GACAoe,GACAje,GACAC,GACAK,GACA4d,GACAlc,GAAgB,WAClB,MAAyB,oBAAXC,QAEZC,GAAW,WACb,OAAOtC,IAAQoC,OAAoBpC,GAAOqC,OAAOrC,OAASA,GAAKuC,gBAAkBvC,IAE/E0E,GAAY,SAAmBpB,GACjC,MAAwB,iBAAVA,GAEZib,GAAO,SAAc3b,EAAS4b,GAChC,IAAIC,EAAe,MAATD,EAAe,QAAU,SAC/BlQ,EAAS,SAAWmQ,EACpBC,EAAS,SAAWD,EACxB,OAAO7b,IAAYyb,IAAWzb,IAAYxC,IAAUwC,IAAYvC,GAAQgE,KAAKC,IAAIlE,GAAOkO,GAASjO,GAAMiO,KAAY+P,GAAQ,QAAUI,IAAQre,GAAOse,IAAWre,GAAMqe,IAAW9b,EAAQ0L,GAAU1L,EAAQ,SAAW6b,IAEnNE,GAAe,SAAsBlc,EAAG+b,GAE1C,IAAIhY,EAAI,UAAqB,MAATgY,EAAe,OAAS,OAU5C,OARI/b,IAAM4b,KACa,MAAjB5b,EAAEoE,YACJL,EAAI,OAASgY,EAAKI,cAAgB,SAElCnc,EAAiB,MAAbrC,GAAOoG,GAAapG,GAASC,IAI9B,WACL,OAAOoC,EAAE+D,KAGTqY,GAAa,SAAoBjc,EAAS+H,GAC5C,IAAImU,EAAOpe,GAASkC,GAAS,GAAGwF,wBAC5B2W,GAAUpU,GAAaA,IAAc0T,IAAW1T,IAActK,GAC9D2e,EAAQD,EAAS,CACnBlV,IAAKzJ,GAAO6e,WAAaZ,GAAQtX,aAAe3G,GAAO8e,WAAa7e,GAAM6e,WAAa,GACvFpV,KAAM1J,GAAO+e,YAAcd,GAAQxX,aAAezG,GAAOgf,YAAc/e,GAAM+e,YAAc,IACzFzU,EAAUvC,wBACVmJ,EAAU,CACZ/J,EAAGsX,EAAKhV,KAAOkV,EAAMlV,KACrBrC,EAAGqX,EAAKjV,IAAMmV,EAAMnV,KAStB,OANKkV,GAAUpU,IAEb4G,EAAQ/J,GAAKmX,GAAahU,EAAW,IAAxBgU,GACbpN,EAAQ9J,GAAKkX,GAAahU,EAAW,IAAxBgU,IAGRpN,GAEL8N,GAAY,SAAmB/b,EAAOuZ,EAAQ2B,EAAMc,EAAYnc,GAClE,OAAQoc,MAAMjc,IAA2B,iBAAVA,EAAkDoB,GAAUpB,IAA8B,MAApBA,EAAMgH,OAAO,GAAaC,WAAWjH,EAAMkH,OAAO,KAA2B,MAApBlH,EAAMgH,OAAO,IAAc,EAAI,GAAKgV,EAAanc,EAAmB,QAAVG,EAAkBib,GAAK1B,EAAQ2B,GAAQrb,EAASkB,KAAK4T,IAAIsG,GAAK1B,EAAQ2B,GAAOK,GAAWvb,EAAOuZ,GAAQ2B,GAAQrb,GAAnRoH,WAAWjH,GAASH,GAEtEqc,GAAY,WACdxf,GAAOsC,KAEHF,MAAmBpC,IAAQqb,SAASE,OACtC8C,GAAUhc,OACVhC,GAAQgb,SAASE,KACjBnb,GAASib,SAASC,gBAClB5a,GAAWV,GAAK+X,MAAMyD,QACtBxb,GAAKqc,OAAO,CACVoD,kBAAmB,IAErBnB,GAAUte,GAAKqc,SACfpc,GAAe,IAIRyf,GAAiB,CAC1BvC,QAAS,QACTzS,KAAM,WACNiV,QAAS,EACT5M,SAAU,SAAkBjB,GAC1B9R,GAAO8R,EAEP0N,MAEFrM,KAAM,SAAc0J,EAAQvZ,EAAOgE,EAAO+F,EAAOuL,GAC1C3Y,IACHuf,KAGF,IAAI9G,EAAOxF,KACXwF,EAAKkH,MAAQ/C,IAAWwB,GACxB3F,EAAKmE,OAASA,EACdnE,EAAKpR,MAAQA,EAEQ,iBAAVhE,EAKLoB,IAJJpB,EAAQ,CACNmE,EAAGnE,IAGemE,IAAkB,QAAZnE,EAAMmE,GAAqC,MAAtBnE,EAAMmE,EAAE6C,OAAO,KAC5DhH,EAAMkE,EAAIlE,EAAMmE,GAETnE,EAAM+R,WACf/R,EAAQ,CACNmE,EAAGnE,EACHkE,EAAGlE,IAIPoV,EAAKvM,KAAO7I,EACZoV,EAAKmH,WAAavc,EAAMuc,SACxBnH,EAAKoH,KAAOnB,GAAa9B,EAAQ,KACjCnE,EAAKqH,KAAOpB,GAAa9B,EAAQ,KACjCnE,EAAKlR,EAAIkR,EAAKsH,MAAQtH,EAAKoH,OAC3BpH,EAAKjR,EAAIiR,EAAKuH,MAAQvH,EAAKqH,OAEZ,MAAXzc,EAAMkE,GACRkR,EAAKwC,IAAIxC,EAAM,IAAKA,EAAKlR,EAAG6X,GAAU/b,EAAMkE,EAAGqV,EAAQ,IAAKnE,EAAKlR,EAAGlE,EAAM4c,SAAW,GAAI7S,EAAOuL,EAASvU,KAAKoN,OAE9GiH,EAAKyH,OAAO9c,KAAK,eAEjBqV,EAAK0H,MAAQ,EAGA,MAAX9c,EAAMmE,GACRiR,EAAKwC,IAAIxC,EAAM,IAAKA,EAAKjR,EAAG4X,GAAU/b,EAAMmE,EAAGoV,EAAQ,IAAKnE,EAAKjR,EAAGnE,EAAM+c,SAAW,GAAIhT,EAAOuL,EAASvU,KAAKoN,OAE9GiH,EAAKyH,OAAO9c,KAAK,eAEjBqV,EAAK4H,MAAQ,GAGjBvR,OAAQ,SAAgB6D,EAAO8F,GAc7B,IAbA,IAOIlR,EACAC,EACA8Y,EACAC,EACAC,EAXAC,EAAKhI,EAAKiI,IACV9D,EAASnE,EAAKmE,OACdvV,EAAQoR,EAAKpR,MACbuY,EAAWnH,EAAKmH,SAChBG,EAAQtH,EAAKsH,MACbC,EAAQvH,EAAKuH,MACbL,EAAQlH,EAAKkH,MAOVc,GACLA,EAAGzH,EAAErG,EAAO8N,EAAGvc,GACfuc,EAAKA,EAAGE,MAGVpZ,EAAIoY,IAAUlH,EAAK0H,MAAQ1H,EAAKoH,OAASE,EAEzCO,GADA9Y,EAAImY,IAAUlH,EAAK4H,MAAQ5H,EAAKqH,OAASE,GAC9BA,EACXO,EAAOhZ,EAAIwY,EACXS,EAAYnC,GAAQmB,kBAEhB/G,EAAKlR,EAAI,IAEXkR,EAAKlR,EAAI,GAGPkR,EAAKjR,EAAI,IACXiR,EAAKjR,EAAI,GAGPoY,KAEGnH,EAAK0H,QAAUI,EAAOC,GAAaD,GAAQC,IAAcjZ,EAAI+W,GAAK1B,EAAQ,OAC7EnE,EAAK0H,MAAQ,IAGV1H,EAAK4H,QAAUC,EAAOE,GAAaF,GAAQE,IAAchZ,EAAI8W,GAAK1B,EAAQ,OAC7EnE,EAAK4H,MAAQ,GAGX5H,EAAK0H,OAAS1H,EAAK4H,QACrBhZ,EAAMe,OAEFqQ,EAAKvM,KAAK0U,YACZnI,EAAKvM,KAAK0U,WAAWC,MAAMxZ,EAAOoR,EAAKvM,KAAK4U,kBAAoB,MAKlEnB,EACFvB,GAAQzX,SAAU8R,EAAK0H,MAAiB5Y,EAATkR,EAAKlR,EAAQkR,EAAK4H,MAAiB7Y,EAATiR,EAAKjR,IAEzDiR,EAAK4H,QACRzD,EAAOqC,UAAYxG,EAAKjR,GAGrBiR,EAAK0H,QACRvD,EAAOuC,WAAa1G,EAAKlR,IAI7BkR,EAAKsH,MAAQtH,EAAKlR,EAClBkR,EAAKuH,MAAQvH,EAAKjR,GAEpBY,KAAM,SAAcxF,GAClB,IAAIme,EAAoB,aAAbne,GAEPme,GAAqB,eAAbne,KACVqQ,KAAKkN,MAAQ,IAGXY,GAAqB,eAAbne,KACVqQ,KAAKoN,MAAQ,KAInBZ,GAAepb,IAAMia,GACrBmB,GAAeuB,UAAYpC,GAC3Ba,GAAewB,YAAcvC,GAC7Brc,MAActC,GAAKuC,eAAemd,IChOlC1f,KAAKuC,eAAewL,IACpB/N,KAAKuC,eAAemd,ICmyDpB,IDjyDqByB,GAAAA,WCkyDnB,SAASA,KA2JT,OD37DShO,EAAAA,KAAP,WAEF,IAAIiO,EAAa/F,SAASgG,cAAc,QAAQC,aAE5CC,EAASlG,SAASgG,cAAc,WAMjBtT,GAAcsP,OAAO,CACvChP,QAAS,UACTpC,MAAO,MACP0H,IAAK,KAAOyN,EACZtK,SAAS,EACTnH,IAAK,UACLmG,YAAY,EACZY,QAAS,WAAA,OAAM6K,EAAOvG,UAAUE,IAAI,qBACpCvE,QAAS,WAAA,OAAM4K,EAAOvG,UAAUwG,OAAO,qBACvC5K,YAAa,WAAA,OAAM2K,EAAOvG,UAAUE,IAAI,qBACxCrE,YAAa,WAAA,OAAM0K,EAAOvG,UAAUwG,OAAO,uBAO5C,IAAMC,EAAgBpG,SAASqG,iBAAiB,mBACrBC,MAAMC,KAAKH,GAEnB7Y,SAAQ,SAAAiZ,GAE1B,IAAMC,EAAOD,EAAKE,aAAa,QAE/BF,EAAK9Y,iBAAiB,SAAS,SAAAiZ,GAC9BA,EAAMC,iBACNjiB,KAAKuH,GAAGlF,OAAQ,CAACsV,SAAU,IAAK/Q,SAAS,CAACa,EAAGqa,EAAMzB,QAAS,aAQxChF,SAASqG,iBAAiB,mBAElC9Y,SAAQ,SAAAsZ,GAErB,IAAIC,EAAKniB,KAAKoiB,SAAS,CAAEC,QAAQ,IAEjCF,EAAGP,KAAKM,EAAM,CACbvK,SAAU,EACV2K,QAAS,EACT7a,EAAG,GACHiQ,KAAM,aAGP3J,GAAcsP,OAAO,CACpBhP,QAAS6T,EACTjW,MAAO,UACP0H,IAAK,aACLb,UAAWqP,EACXrL,SAAS,EACTpN,cAAe,8BAUE1J,KAAKoiB,SAAS,CAAEC,QAAQ,IAE9B9a,GAAGga,EAAQ,CACvB5J,SAAU,IACV2K,QAAS,EACT5K,KAAM,aACNS,MAAO,EACPW,SAAS,IAOV,IAAMyJ,EAAsBlH,SAASqG,iBAAiB,0BAElDc,EAAkBxiB,KAAKoiB,SAAS,CAAEC,QAAQ,IAE9CG,EAAgBZ,KAAKW,EAAqB,CACzC5K,SAAU,IACV2K,QAAS,EACT7a,EAAG,GACHiQ,KAAM,WACN+K,QAAS,KACTtK,MAAO,MAGRpK,GAAcsP,OAAO,CACpBhP,QAAS,oCACTpC,MAAO,UACP0H,IAAK,aACLb,UAAW0P,EACX1L,SAAS,EACTpN,cAAe,2BAOhB,IAAMgZ,EAASrH,SAASgG,cAAc,YAElCsB,EAAW3iB,KAAKoiB,SAAS,CAAEC,QAAQ,IAEvCM,EAASf,KAAKc,EAAQ,CACrB/K,SAAU,EACVjQ,SAAU,GACVC,UAAW,GACX+P,KAAM,kBACNoB,SAAS,IAGV/K,GAAcsP,OAAO,CACpBhP,QAAS,uBACTpC,MAAO,UACP0H,IAAK,aACLb,UAAW6P,EACX7L,SAAS,EACTpN,cAAe,yBACfmM,MAAO,KAQR,IAAM+M,EAAyBvH,SAASgG,cAAc,8BAEhDwB,EAAmBD,EAAuBlB,iBAAiB,wBAE3DoB,EAA0BF,EAAuBlB,iBAAiB,gCAExEmB,EAAiBja,SAAQ,SAAAsZ,GAExB,IAAIC,EAAKniB,KAAKoiB,SAAS,CAAGC,QAAQ,IAElCF,EAAGP,KAAKM,EAAM,CACbvK,SAAU,EACVjQ,UAAW,GACXgQ,KAAMqL,OAAOC,SACblK,SAAS,IAGV/K,GAAcsP,OAAO,CACpBhP,QAASuU,EACT3W,MAAO,UACP0H,IAAK,aACLb,UAAWqP,EACXrL,SAAS,EACTpN,cAAe,yBACfmM,MAAO,QAKTiN,EAAwBla,SAAQ,SAAAsZ,GAE/B,IAAIC,EAAKniB,KAAKoiB,SAAS,CAAGC,QAAQ,IAElCF,EAAG5a,GAAG2a,EAAM,CACXvK,SAAU,EACVjQ,UAAW,GACXgQ,KAAMqL,OAAOC,SACblK,SAAS,IAGV/K,GAAcsP,OAAO,CACpBhP,QAASuU,EACT3W,MAAO,UACP0H,IAAK,aACLb,UAAWqP,EACXrL,SAAS,EACTpN,cAAe,yBACfmM,MAAO,SCgwDFsL,ED77DYA,GEPA8B,GAAAA,WAEjB,SAAYC,EAAAA,EAAM7V,GACd6F,KAAKgQ,KAAOA,EACZhQ,KAAK7F,MAAQA,EAEb6F,KAAKiQ,YAAcjQ,KAAKiQ,YAAYC,KAAKlQ,MAEzCA,KAAKC,ODq8DX,IAAIkQ,EAASJ,EAAM7P,UA4CnB,OC9+DED,EAAAA,KAAA,WACID,KAAKuH,QACLvH,KAAKoQ,gBAGTA,EAAAA,aAAA,WACIpQ,KAAKgQ,KAAKna,iBAAiB,QAASmK,KAAKiQ,cDu8D/CE,ECp8DEF,YAAA,SAAY1gB,GACRyQ,KAAKgQ,KAAKlI,UAAUuI,OAAO,SAG/B9I,EAAAA,MAAA,WACIvH,KAAKgQ,KAAKlI,UAAUwG,OAAO,SAI/BgC,EAAAA,QAAA,WACItQ,KAAKuQ,MAAMva,oBAAoB,QAASgK,KAAKiQ,aAC7CjQ,KAAKuH,SAGFiJ,EAAAA,SAAP,WACI9H,YAAW,WACPqH,EAAMU,MAAM/a,SAAQ,SAAAgb,GAChBA,EAAKnJ,aAEV,MAGAoJ,EAAAA,WAAP,WACIZ,EAAMU,MAAM/a,SAAQ,SAAAgb,GAChBA,EAAKJ,cAINrQ,EAAAA,KAAP,WACI8P,EAAMU,MAAQhC,MAAMC,KAAKvG,SAASqG,iBAAiB,eAAe1T,KAAI,SAACkV,EAAM7V,GAAP,OAAiB,IAAI4V,EAAMC,EAAM7V,ODw8DtG4V,ECz/DYA,GCAAa,GAAAA,WAEjB,SAAAA,EAAYZ,GAERhQ,KAAKgQ,KAAOA,EACZhQ,KAAK6Q,QAAU7Q,KAAKgQ,KAAK7B,cAAc,gBACvCnO,KAAK8Q,SAAW3I,SAASgG,cAAc,eACvCnO,KAAK+Q,iBAAmB5I,SAASgG,cAAc,4BAC/CnO,KAAKgR,YAAchR,KAAK+Q,iBAAiBvC,iBAAiB,mBAC1DxO,KAAKiR,iBAAoBxC,MAAMC,KAAK1O,KAAKgR,aAEzChR,KAAKkR,iBAAmBlR,KAAKkR,iBAAiBhB,KAAKlQ,MACnDA,KAAKmR,gBAAkBnR,KAAKmR,gBAAgBjB,KAAKlQ,MAEjDA,KAAKC,OFy/DX,IAAIkQ,EAASS,EAAK1Q,UA6ClB,OEniEED,EAAAA,KAAA,WACID,KAAKuH,QACLvH,KAAKoQ,gBAGTA,EAAAA,aAAA,WAAe,IAAAgB,EAAApR,KAEXA,KAAK6Q,QAAQhb,iBAAiB,QAASmK,KAAKkR,kBAC5ClR,KAAK8Q,SAASjb,iBAAiB,QAASmK,KAAKkR,kBAE7ClR,KAAKiR,iBAAiBvb,SAAQ,SAAAiZ,GACnCA,EAAK9Y,iBAAiB,QAASub,EAAKD,qBF4/DrChB,EEx/DEe,iBAAA,SAAiB3hB,GACbA,EAAEwf,iBACF/O,KAAK+Q,iBAAiBjJ,UAAUuI,OAAO,SF2/D7CF,EEx/DEgB,gBAAA,SAAgB5hB,GACfyQ,KAAK+Q,iBAAiBjJ,UAAUwG,OAAO,SAGxC/G,EAAAA,MAAA,WACIvH,KAAK+Q,iBAAiBjJ,UAAUwG,OAAO,SAIpCgC,EAAAA,QAAP,WAAiB,IAAAe,EAAArR,KAEbA,KAAK6Q,QAAQ7a,oBAAoB,QAASgK,KAAKiQ,aAC/CjQ,KAAK8Q,SAAS9a,oBAAoB,QAASgK,KAAKiQ,aAEhDjQ,KAAKiR,iBAAiBvb,SAAQ,SAAAiZ,GACnCA,EAAK3Y,oBAAoB,QAASqb,EAAKF,oBAGlCnR,KAAKuH,SAGFtH,EAAAA,KAAP,WACI2Q,EAAK5B,KAAO,IAAI4B,EAAKzI,SAASgG,cAAc,aFy/D3CyC,EEpjEYA,GCYrB,SAASU,GAASrd,GACd,OAAgB,OAARA,GACW,iBAARA,GACP,gBAAiBA,GACjBA,EAAIsd,cAAgBC,OAE5B,SAASC,GAAO9H,EAAS,GAAI+H,EAAM,IAC/BF,OAAOG,KAAKD,GAAKhc,SAASkc,SACK,IAAhBjI,EAAOiI,GACdjI,EAAOiI,GAAOF,EAAIE,GACbN,GAASI,EAAIE,KAClBN,GAAS3H,EAAOiI,KAChBJ,OAAOG,KAAKD,EAAIE,IAAMthB,OAAS,GAC/BmhB,GAAO9H,EAAOiI,GAAMF,EAAIE,OAKpC,MAAMC,GAAc,CAChBxJ,KAAM,GACNxS,qBACAG,wBACA8b,cAAe,CACXC,SACAC,SAAU,IAEd7D,cAAa,IACF,KAEXK,iBAAgB,IACL,GAEXyD,eAAc,IACH,KAEXC,YAAW,KACA,CACHC,gBAGRta,cAAa,KACF,CACHc,SAAU,GACVyZ,WAAY,GACZ7Z,MAAO,GACPD,iBACA+Z,qBAAoB,IACT,KAInBC,gBAAe,KACJ,IAEXC,WAAU,IACC,KAEXC,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACV/D,KAAM,GACNgE,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGhB,SAASC,KACL,MAAMC,EAA0B,oBAAb9K,SAA2BA,SAAW,GAEzD,OADAsJ,GAAOwB,EAAKpB,IACLoB,EAGX,MAAMC,GAAY,CACd/K,SAAU0J,GACVsB,UAAW,CACPC,UAAW,IAEfZ,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACV/D,KAAM,GACNgE,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEZM,QAAS,CACLC,iBACAC,cACAC,OACAC,UAEJC,YAAa,WACT,OAAO1T,MAEXnK,qBACAG,wBACAjC,iBAAgB,KACL,CACH4f,iBAAgB,IACL,KAInBC,UACAjlB,SACAklB,OAAQ,GACRnL,eACAoL,iBACArZ,WAAU,KACC,IAEXgO,sBAAsBjT,GACQ,oBAAfkT,YACPlT,IACO,MAEJkT,WAAWlT,EAAU,GAEhCue,qBAAqBvR,GACS,oBAAfkG,YAGXoL,aAAatR,KAGrB,SAASwR,KACL,MAAMC,EAAwB,oBAAX9kB,OAAyBA,OAAS,GAErD,OADAsiB,GAAOwC,EAAKf,IACLe,ECpHX,MAAMC,WAAazF,MACjB8C,YAAYd,GACW,iBAAVA,EACT0D,MAAM1D,IAEN0D,SAAU1D,GAAS,IAnBzB,SAAsBxc,GACpB,MAAMmgB,EAAQngB,EAAIogB,UAClB7C,OAAO8C,eAAergB,EAAK,YAAa,CACtCsgB,IAAG,IACMH,EAGT9a,IAAIlJ,GACFgkB,EAAMC,UAAYjkB,KAYlBokB,CAAaxU,QAMnB,SAASyU,GAAUC,EAAM,IACvB,MAAMC,EAAM,GAQZ,OAPAD,EAAIhf,SAAQmS,IACN4G,MAAMmG,QAAQ/M,GAChB8M,EAAIxkB,QAAQskB,GAAU5M,IAEtB8M,EAAIxkB,KAAK0X,MAGN8M,EAET,SAASE,GAAYH,EAAKlf,GACxB,OAAOiZ,MAAMvO,UAAU4U,OAAOnV,KAAK+U,EAAKlf,GAgC1C,SAASuf,GAAEC,EAAUC,GACnB,MAAM9lB,EAAS6kB,KACT7L,EAAW6K,KACjB,IAAI0B,EAAM,GAEV,IAAKO,GAAWD,aAAoBd,GAClC,OAAOc,EAGT,IAAKA,EACH,OAAO,IAAId,GAAKQ,GAGlB,GAAwB,iBAAbM,EAAuB,CAChC,MAAME,EAAOF,EAASG,OAEtB,GAAID,EAAK1lB,QAAQ,MAAQ,GAAK0lB,EAAK1lB,QAAQ,MAAQ,EAAG,CACpD,IAAI4lB,EAAW,MACa,IAAxBF,EAAK1lB,QAAQ,SAAc4lB,EAAW,MACd,IAAxBF,EAAK1lB,QAAQ,SAAc4lB,EAAW,SACd,IAAxBF,EAAK1lB,QAAQ,QAAwC,IAAxB0lB,EAAK1lB,QAAQ,SAAc4lB,EAAW,MACxC,IAA3BF,EAAK1lB,QAAQ,YAAiB4lB,EAAW,SACb,IAA5BF,EAAK1lB,QAAQ,aAAkB4lB,EAAW,UAC9C,MAAMC,EAAalN,EAAStQ,cAAcud,GAC1CC,EAAWC,UAAYJ,EAEvB,IAAK,IAAIllB,EAAI,EAAGA,EAAIqlB,EAAWjD,WAAW9hB,OAAQN,GAAK,EACrD0kB,EAAIvkB,KAAKklB,EAAWjD,WAAWpiB,SAGjC0kB,EA7CN,SAAaM,EAAUC,GACrB,GAAwB,iBAAbD,EACT,MAAO,CAACA,GAGV,MAAM9jB,EAAI,GACJyjB,EAAMM,EAAQzG,iBAAiBwG,GAErC,IAAK,IAAIhlB,EAAI,EAAGA,EAAI2kB,EAAIrkB,OAAQN,GAAK,EACnCkB,EAAEf,KAAKwkB,EAAI3kB,IAGb,OAAOkB,EAiCGqkB,CAAIP,EAASG,OAAQF,GAAW9M,QAGnC,GAAI6M,EAAS7S,UAAY6S,IAAa7lB,GAAU6lB,IAAa7M,EAClEuM,EAAIvkB,KAAK6kB,QACJ,GAAIvG,MAAMmG,QAAQI,GAAW,CAClC,GAAIA,aAAoBd,GAAM,OAAOc,EACrCN,EAAMM,EAGR,OAAO,IAAId,GAtEb,SAAqBQ,GACnB,MAAMc,EAAc,GAEpB,IAAK,IAAIxlB,EAAI,EAAGA,EAAI0kB,EAAIpkB,OAAQN,GAAK,GACE,IAAjCwlB,EAAYhmB,QAAQklB,EAAI1kB,KAAYwlB,EAAYrlB,KAAKukB,EAAI1kB,IAG/D,OAAOwlB,EA+DSC,CAAYf,IAG9BK,GAAEW,GAAKxB,GAAKhU,UC9HZ,MAAMyV,GAAU,CACdC,SDiIF,YAAqBC,GACnB,MAAMC,EAAarB,GAAUoB,EAAQ/a,KAAIib,GAAKA,EAAEtgB,MAAM,QAItD,OAHAuK,KAAKtK,SAAQmS,IACXA,EAAGC,UAAUE,OAAO8N,MAEf9V,MCrIPgW,YDwIF,YAAwBH,GACtB,MAAMC,EAAarB,GAAUoB,EAAQ/a,KAAIib,GAAKA,EAAEtgB,MAAM,QAItD,OAHAuK,KAAKtK,SAAQmS,IACXA,EAAGC,UAAUwG,UAAUwH,MAElB9V,MC5IPiW,SDwJF,YAAqBJ,GACnB,MAAMC,EAAarB,GAAUoB,EAAQ/a,KAAIib,GAAKA,EAAEtgB,MAAM,QACtD,OAAOof,GAAY7U,MAAM6H,GAChBiO,EAAWhB,QAAOnP,GAAakC,EAAGC,UAAUoO,SAASvQ,KAAYrV,OAAS,IAChFA,OAAS,GC3JZiS,YD8IF,YAAwBsT,GACtB,MAAMC,EAAarB,GAAUoB,EAAQ/a,KAAIib,GAAKA,EAAEtgB,MAAM,QACtDuK,KAAKtK,SAAQmS,IACXiO,EAAWpgB,SAAQiQ,IACjBkC,EAAGC,UAAUuI,OAAO1K,UCjJxBwQ,KD6JF,SAAcC,EAAOhmB,GACnB,GAAyB,IAArBC,UAAUC,QAAiC,iBAAV8lB,EAEnC,OAAIpW,KAAK,GAAWA,KAAK,GAAG6O,aAAauH,QACzC,EAIF,IAAK,IAAIpmB,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EACpC,GAAyB,IAArBK,UAAUC,OAEZ0P,KAAKhQ,GAAGsI,aAAa8d,EAAOhmB,QAG5B,IAAK,MAAMimB,KAAYD,EACrBpW,KAAKhQ,GAAGqmB,GAAYD,EAAMC,GAC1BrW,KAAKhQ,GAAGsI,aAAa+d,EAAUD,EAAMC,IAK3C,OAAOrW,MCjLPsW,WDoLF,SAAoBH,GAClB,IAAK,IAAInmB,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EACpCgQ,KAAKhQ,GAAGumB,gBAAgBJ,GAG1B,OAAOnW,MCxLPwW,UD6TF,SAAmBA,GACjB,IAAK,IAAIxmB,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EACpCgQ,KAAKhQ,GAAGuI,MAAMie,UAAYA,EAG5B,OAAOxW,MCjUTyW,WDoUA,SAAoBhS,GAClB,IAAK,IAAIzU,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EACpCgQ,KAAKhQ,GAAGuI,MAAMme,mBAAyC,iBAAbjS,EAAwB,GAAGA,MAAeA,EAGtF,OAAOzE,MCxUP2W,GD2UF,YAAeC,GACb,IAAKC,EAAWC,EAAgBC,EAAUC,GAAWJ,EASrD,SAASK,EAAgB1nB,GACvB,MAAMoa,EAASpa,EAAEoa,OACjB,IAAKA,EAAQ,OACb,MAAMuN,EAAY3nB,EAAEoa,OAAOwN,eAAiB,GAM5C,GAJID,EAAU1nB,QAAQD,GAAK,GACzB2nB,EAAUtN,QAAQra,GAGhBwlB,GAAEpL,GAAQyN,GAAGN,GAAiBC,EAASnJ,MAAMjE,EAAQuN,OAAgB,CACvE,MAAMG,EAAUtC,GAAEpL,GAAQ0N,UAE1B,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAQ/mB,OAAQgnB,GAAK,EACnCvC,GAAEsC,EAAQC,IAAIF,GAAGN,IAAiBC,EAASnJ,MAAMyJ,EAAQC,GAAIJ,IAKvE,SAASK,EAAYhoB,GACnB,MAAM2nB,EAAY3nB,GAAKA,EAAEoa,QAASpa,EAAEoa,OAAOwN,eAAsB,GAE7DD,EAAU1nB,QAAQD,GAAK,GACzB2nB,EAAUtN,QAAQra,GAGpBwnB,EAASnJ,MAAM5N,KAAMkX,GAhCA,mBAAZN,EAAK,MACbC,EAAWE,EAAUC,GAAWJ,EACjCE,OAAiBU,GAGdR,IAASA,GAAU,GA8BxB,MAAMzlB,EAASslB,EAAUphB,MAAM,KAC/B,IAAIgiB,EAEJ,IAAK,IAAIznB,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EAAG,CACvC,MAAM6X,EAAK7H,KAAKhQ,GAEhB,GAAK8mB,EAaH,IAAKW,EAAI,EAAGA,EAAIlmB,EAAOjB,OAAQmnB,GAAK,EAAG,CACrC,MAAM3I,EAAQvd,EAAOkmB,GAChB5P,EAAG6P,oBAAmB7P,EAAG6P,kBAAoB,IAC7C7P,EAAG6P,kBAAkB5I,KAAQjH,EAAG6P,kBAAkB5I,GAAS,IAChEjH,EAAG6P,kBAAkB5I,GAAO3e,KAAK,CAC/B4mB,WACAY,cAAeV,IAEjBpP,EAAGhS,iBAAiBiZ,EAAOmI,EAAiBD,QApB9C,IAAKS,EAAI,EAAGA,EAAIlmB,EAAOjB,OAAQmnB,GAAK,EAAG,CACrC,MAAM3I,EAAQvd,EAAOkmB,GAChB5P,EAAG+P,gBAAe/P,EAAG+P,cAAgB,IACrC/P,EAAG+P,cAAc9I,KAAQjH,EAAG+P,cAAc9I,GAAS,IACxDjH,EAAG+P,cAAc9I,GAAO3e,KAAK,CAC3B4mB,WACAY,cAAeJ,IAEjB1P,EAAGhS,iBAAiBiZ,EAAOyI,EAAaP,IAiB9C,OAAOhX,MChZP6X,IDmZF,YAAgBjB,GACd,IAAKC,EAAWC,EAAgBC,EAAUC,GAAWJ,EAE9B,mBAAZA,EAAK,MACbC,EAAWE,EAAUC,GAAWJ,EACjCE,OAAiBU,GAGdR,IAASA,GAAU,GACxB,MAAMzlB,EAASslB,EAAUphB,MAAM,KAE/B,IAAK,IAAIzF,EAAI,EAAGA,EAAIuB,EAAOjB,OAAQN,GAAK,EAAG,CACzC,MAAM8e,EAAQvd,EAAOvB,GAErB,IAAK,IAAIynB,EAAI,EAAGA,EAAIzX,KAAK1P,OAAQmnB,GAAK,EAAG,CACvC,MAAM5P,EAAK7H,KAAKyX,GAChB,IAAIK,EAQJ,IANKhB,GAAkBjP,EAAG+P,cACxBE,EAAWjQ,EAAG+P,cAAc9I,GACnBgI,GAAkBjP,EAAG6P,oBAC9BI,EAAWjQ,EAAG6P,kBAAkB5I,IAG9BgJ,GAAYA,EAASxnB,OACvB,IAAK,IAAIgnB,EAAIQ,EAASxnB,OAAS,EAAGgnB,GAAK,EAAGA,GAAK,EAAG,CAChD,MAAMS,EAAUD,EAASR,GAErBP,GAAYgB,EAAQhB,WAAaA,GAG1BA,GAAYgB,EAAQhB,UAAYgB,EAAQhB,SAASiB,WAAaD,EAAQhB,SAASiB,YAAcjB,GAFtGlP,EAAG7R,oBAAoB8Y,EAAOiJ,EAAQJ,cAAeX,GACrDc,EAASzQ,OAAOiQ,EAAG,IAITP,IACVlP,EAAG7R,oBAAoB8Y,EAAOiJ,EAAQJ,cAAeX,GACrDc,EAASzQ,OAAOiQ,EAAG,MAO7B,OAAOtX,MC7bP7E,QDsdF,YAAoByb,GAClB,MAAMznB,EAAS6kB,KACTziB,EAASqlB,EAAK,GAAGnhB,MAAM,KACvByhB,EAAYN,EAAK,GAEvB,IAAK,IAAI5mB,EAAI,EAAGA,EAAIuB,EAAOjB,OAAQN,GAAK,EAAG,CACzC,MAAM8e,EAAQvd,EAAOvB,GAErB,IAAK,IAAIynB,EAAI,EAAGA,EAAIzX,KAAK1P,OAAQmnB,GAAK,EAAG,CACvC,MAAM5P,EAAK7H,KAAKyX,GAEhB,GAAItoB,EAAOukB,YAAa,CACtB,MAAMuE,EAAM,IAAI9oB,EAAOukB,YAAY5E,EAAO,CACxCoJ,OAAQhB,EACRiB,SAAS,EACTC,YAAY,IAEdvQ,EAAGsP,cAAgBP,EAAK9B,QAAO,CAACtP,EAAM6S,IAAcA,EAAY,IAChExQ,EAAGyQ,cAAcL,GACjBpQ,EAAGsP,cAAgB,UACZtP,EAAGsP,gBAKhB,OAAOnX,MC9eTuY,cDifA,SAAuB/iB,GACrB,MAAMgjB,EAAMxY,KAYZ,OAJIxK,GACFgjB,EAAI7B,GAAG,iBAPT,SAAS8B,EAAalpB,GAChBA,EAAEoa,SAAW3J,OACjBxK,EAASmK,KAAKK,KAAMzQ,GACpBipB,EAAIX,IAAI,gBAAiBY,OAOpBzY,MC7fP0Y,WD8hBF,SAAoBC,GAClB,GAAI3Y,KAAK1P,OAAS,EAAG,CACnB,GAAIqoB,EAAgB,CAClB,MAAMC,EAAS5Y,KAAK4Y,SACpB,OAAO5Y,KAAK,GAAG5H,YAAcf,WAAWuhB,EAAOjF,iBAAiB,iBAAmBtc,WAAWuhB,EAAOjF,iBAAiB,gBAGxH,OAAO3T,KAAK,GAAG5H,YAGjB,OAAO,MCviBPygB,YDwjBF,SAAqBF,GACnB,GAAI3Y,KAAK1P,OAAS,EAAG,CACnB,GAAIqoB,EAAgB,CAClB,MAAMC,EAAS5Y,KAAK4Y,SACpB,OAAO5Y,KAAK,GAAGoO,aAAe/W,WAAWuhB,EAAOjF,iBAAiB,eAAiBtc,WAAWuhB,EAAOjF,iBAAiB,kBAGvH,OAAO3T,KAAK,GAAGoO,aAGjB,OAAO,MCjkBPwK,ODmnBF,WACE,MAAMzpB,EAAS6kB,KACf,OAAIhU,KAAK,GAAW7Q,EAAO4E,iBAAiBiM,KAAK,GAAI,MAC9C,ICrnBP/P,ODmkBF,WACE,GAAI+P,KAAK1P,OAAS,EAAG,CACnB,MAAMnB,EAAS6kB,KACT7L,EAAW6K,KACXnL,EAAK7H,KAAK,GACV8Y,EAAMjR,EAAG3S,wBACTmT,EAAOF,EAASE,KAChB0D,EAAYlE,EAAGkE,WAAa1D,EAAK0D,WAAa,EAC9CE,EAAapE,EAAGoE,YAAc5D,EAAK4D,YAAc,EACjDD,EAAYnE,IAAO1Y,EAASA,EAAO4pB,QAAUlR,EAAGmE,UAChDE,EAAarE,IAAO1Y,EAASA,EAAO6pB,QAAUnR,EAAGqE,WACvD,MAAO,CACLvV,IAAKmiB,EAAIniB,IAAMqV,EAAYD,EAC3BnV,KAAMkiB,EAAIliB,KAAOsV,EAAaD,GAIlC,OAAO,MCnlBP9T,IDunBF,SAAa8gB,EAAO7oB,GAClB,MAAMjB,EAAS6kB,KACf,IAAIhkB,EAEJ,GAAyB,IAArBK,UAAUC,OAAc,CAC1B,GAAqB,iBAAV2oB,EAGJ,CAEL,IAAKjpB,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EAChC,IAAK,MAAMmP,KAAQ8Z,EACjBjZ,KAAKhQ,GAAGuI,MAAM4G,GAAQ8Z,EAAM9Z,GAIhC,OAAOa,KATP,GAAIA,KAAK,GAAI,OAAO7Q,EAAO4E,iBAAiBiM,KAAK,GAAI,MAAM2T,iBAAiBsF,GAahF,GAAyB,IAArB5oB,UAAUC,QAAiC,iBAAV2oB,EAAoB,CAEvD,IAAKjpB,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EAChCgQ,KAAKhQ,GAAGuI,MAAM0gB,GAAS7oB,EAGzB,OAAO4P,KAGT,OAAOA,MCnpBPkZ,KDspBF,SAAc1jB,GACZ,OAAKA,GACLwK,KAAKtK,SAAQ,CAACmS,EAAI1N,KAChB3E,EAASoY,MAAM/F,EAAI,CAACA,EAAI1N,OAEnB6F,MAJeA,MCtpBtBkV,KDkqBF,SAAcA,GACZ,QAAoB,IAATA,EACT,OAAOlV,KAAK,GAAKA,KAAK,GAAGsV,UAAY,KAGvC,IAAK,IAAItlB,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EACpCgQ,KAAKhQ,GAAGslB,UAAYJ,EAGtB,OAAOlV,MC1qBPmZ,KD6qBF,SAAcA,GACZ,QAAoB,IAATA,EACT,OAAOnZ,KAAK,GAAKA,KAAK,GAAGoZ,YAAYjE,OAAS,KAGhD,IAAK,IAAInlB,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EACpCgQ,KAAKhQ,GAAGopB,YAAcD,EAGxB,OAAOnZ,MCrrBPoX,GDwrBF,SAAYpC,GACV,MAAM7lB,EAAS6kB,KACT7L,EAAW6K,KACXnL,EAAK7H,KAAK,GAChB,IAAIqZ,EACArpB,EACJ,IAAK6X,QAA0B,IAAbmN,EAA0B,OAAO,EAEnD,GAAwB,iBAAbA,EAAuB,CAChC,GAAInN,EAAGtN,QAAS,OAAOsN,EAAGtN,QAAQya,GAClC,GAAInN,EAAGyR,sBAAuB,OAAOzR,EAAGyR,sBAAsBtE,GAC9D,GAAInN,EAAG0R,kBAAmB,OAAO1R,EAAG0R,kBAAkBvE,GAGtD,IAFAqE,EAActE,GAAEC,GAEXhlB,EAAI,EAAGA,EAAIqpB,EAAY/oB,OAAQN,GAAK,EACvC,GAAIqpB,EAAYrpB,KAAO6X,EAAI,OAAO,EAGpC,OAAO,EAGT,GAAImN,IAAa7M,EACf,OAAON,IAAOM,EAGhB,GAAI6M,IAAa7lB,EACf,OAAO0Y,IAAO1Y,EAGhB,GAAI6lB,EAAS7S,UAAY6S,aAAoBd,GAAM,CAGjD,IAFAmF,EAAcrE,EAAS7S,SAAW,CAAC6S,GAAYA,EAE1ChlB,EAAI,EAAGA,EAAIqpB,EAAY/oB,OAAQN,GAAK,EACvC,GAAIqpB,EAAYrpB,KAAO6X,EAAI,OAAO,EAGpC,OAAO,EAGT,OAAO,GC9tBP1N,MDiuBF,WACE,IACInK,EADAwpB,EAAQxZ,KAAK,GAGjB,GAAIwZ,EAAO,CAGT,IAFAxpB,EAAI,EAEuC,QAAnCwpB,EAAQA,EAAMC,kBACG,IAAnBD,EAAMrX,WAAgBnS,GAAK,GAGjC,OAAOA,IC3uBT0pB,GDivBF,SAAYvf,GACV,QAAqB,IAAVA,EAAuB,OAAO6F,KACzC,MAAM1P,EAAS0P,KAAK1P,OAEpB,GAAI6J,EAAQ7J,EAAS,EACnB,OAAOykB,GAAE,IAGX,GAAI5a,EAAQ,EAAG,CACb,MAAMwf,EAAcrpB,EAAS6J,EAC7B,OAA4B4a,GAAxB4E,EAAc,EAAY,GACrB,CAAC3Z,KAAK2Z,KAGjB,OAAO5E,GAAE,CAAC/U,KAAK7F,MC9vBfyf,ODiwBF,YAAmBC,GACjB,IAAIC,EACJ,MAAM3R,EAAW6K,KAEjB,IAAK,IAAIsE,EAAI,EAAGA,EAAIuC,EAAIvpB,OAAQgnB,GAAK,EAAG,CACtCwC,EAAWD,EAAIvC,GAEf,IAAK,IAAItnB,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EACpC,GAAwB,iBAAb8pB,EAAuB,CAChC,MAAMC,EAAU5R,EAAStQ,cAAc,OAGvC,IAFAkiB,EAAQzE,UAAYwE,EAEbC,EAAQC,YACbha,KAAKhQ,GAAGoN,YAAY2c,EAAQC,iBAEzB,GAAIF,aAAoB5F,GAC7B,IAAK,IAAIuD,EAAI,EAAGA,EAAIqC,EAASxpB,OAAQmnB,GAAK,EACxCzX,KAAKhQ,GAAGoN,YAAY0c,EAASrC,SAG/BzX,KAAKhQ,GAAGoN,YAAY0c,GAK1B,OAAO9Z,MCzxBPia,QDiyBF,SAAiBH,GACf,MAAM3R,EAAW6K,KACjB,IAAIhjB,EACAynB,EAEJ,IAAKznB,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EAChC,GAAwB,iBAAb8pB,EAAuB,CAChC,MAAMC,EAAU5R,EAAStQ,cAAc,OAGvC,IAFAkiB,EAAQzE,UAAYwE,EAEfrC,EAAIsC,EAAQ3H,WAAW9hB,OAAS,EAAGmnB,GAAK,EAAGA,GAAK,EACnDzX,KAAKhQ,GAAG0I,aAAaqhB,EAAQ3H,WAAWqF,GAAIzX,KAAKhQ,GAAGoiB,WAAW,SAE5D,GAAI0H,aAAoB5F,GAC7B,IAAKuD,EAAI,EAAGA,EAAIqC,EAASxpB,OAAQmnB,GAAK,EACpCzX,KAAKhQ,GAAG0I,aAAaohB,EAASrC,GAAIzX,KAAKhQ,GAAGoiB,WAAW,SAGvDpS,KAAKhQ,GAAG0I,aAAaohB,EAAU9Z,KAAKhQ,GAAGoiB,WAAW,IAItD,OAAOpS,MCtzBPka,KD01BF,SAAclF,GACZ,OAAIhV,KAAK1P,OAAS,EACZ0kB,EACEhV,KAAK,GAAGma,oBAAsBpF,GAAE/U,KAAK,GAAGma,oBAAoB/C,GAAGpC,GAC1DD,GAAE,CAAC/U,KAAK,GAAGma,qBAGbpF,GAAE,IAGP/U,KAAK,GAAGma,mBAA2BpF,GAAE,CAAC/U,KAAK,GAAGma,qBAC3CpF,GAAE,IAGJA,GAAE,KCv2BTqF,QD02BF,SAAiBpF,GACf,MAAMqF,EAAU,GAChB,IAAIxS,EAAK7H,KAAK,GACd,IAAK6H,EAAI,OAAOkN,GAAE,IAElB,KAAOlN,EAAGsS,oBAAoB,CAC5B,MAAMD,EAAOrS,EAAGsS,mBAEZnF,EACED,GAAEmF,GAAM9C,GAAGpC,IAAWqF,EAAQlqB,KAAK+pB,GAClCG,EAAQlqB,KAAK+pB,GAEpBrS,EAAKqS,EAGP,OAAOnF,GAAEsF,ICx3BTC,KD23BF,SAActF,GACZ,GAAIhV,KAAK1P,OAAS,EAAG,CACnB,MAAMuX,EAAK7H,KAAK,GAEhB,OAAIgV,EACEnN,EAAG0S,wBAA0BxF,GAAElN,EAAG0S,wBAAwBnD,GAAGpC,GACxDD,GAAE,CAAClN,EAAG0S,yBAGRxF,GAAE,IAGPlN,EAAG0S,uBAA+BxF,GAAE,CAAClN,EAAG0S,yBACrCxF,GAAE,IAGX,OAAOA,GAAE,KC14BTyF,QD64BF,SAAiBxF,GACf,MAAMyF,EAAU,GAChB,IAAI5S,EAAK7H,KAAK,GACd,IAAK6H,EAAI,OAAOkN,GAAE,IAElB,KAAOlN,EAAG0S,wBAAwB,CAChC,MAAMD,EAAOzS,EAAG0S,uBAEZvF,EACED,GAAEuF,GAAMlD,GAAGpC,IAAWyF,EAAQtqB,KAAKmqB,GAClCG,EAAQtqB,KAAKmqB,GAEpBzS,EAAKyS,EAGP,OAAOvF,GAAE0F,IC35BTziB,ODk6BF,SAAgBgd,GACd,MAAMqC,EAAU,GAEhB,IAAK,IAAIrnB,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EACT,OAAvBgQ,KAAKhQ,GAAG6M,aACNmY,EACED,GAAE/U,KAAKhQ,GAAG6M,YAAYua,GAAGpC,IAAWqC,EAAQlnB,KAAK6P,KAAKhQ,GAAG6M,YAE7Dwa,EAAQlnB,KAAK6P,KAAKhQ,GAAG6M,aAK3B,OAAOkY,GAAEsC,IC96BTA,QDi7BF,SAAiBrC,GACf,MAAMqC,EAAU,GAEhB,IAAK,IAAIrnB,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EAAG,CACvC,IAAIgI,EAASgI,KAAKhQ,GAAG6M,WAErB,KAAO7E,GACDgd,EACED,GAAE/c,GAAQof,GAAGpC,IAAWqC,EAAQlnB,KAAK6H,GAEzCqf,EAAQlnB,KAAK6H,GAGfA,EAASA,EAAO6E,WAIpB,OAAOkY,GAAEsC,ICj8BTqD,QDo8BF,SAAiB1F,GACf,IAAI0F,EAAU1a,KAEd,YAAwB,IAAbgV,EACFD,GAAE,KAGN2F,EAAQtD,GAAGpC,KACd0F,EAAUA,EAAQrD,QAAQrC,GAAU0E,GAAG,IAGlCgB,IC98BPC,KDi9BF,SAAc3F,GACZ,MAAM4F,EAAgB,GAEtB,IAAK,IAAI5qB,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EAAG,CACvC,MAAM6qB,EAAQ7a,KAAKhQ,GAAGwe,iBAAiBwG,GAEvC,IAAK,IAAIyC,EAAI,EAAGA,EAAIoD,EAAMvqB,OAAQmnB,GAAK,EACrCmD,EAAczqB,KAAK0qB,EAAMpD,IAI7B,OAAO1C,GAAE6F,IC39BTjiB,SD89BF,SAAkBqc,GAChB,MAAMrc,EAAW,GAEjB,IAAK,IAAI3I,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EAAG,CACvC,MAAMoiB,EAAapS,KAAKhQ,GAAG2I,SAE3B,IAAK,IAAI8e,EAAI,EAAGA,EAAIrF,EAAW9hB,OAAQmnB,GAAK,EACrCzC,IAAYD,GAAE3C,EAAWqF,IAAIL,GAAGpC,IACnCrc,EAASxI,KAAKiiB,EAAWqF,IAK/B,OAAO1C,GAAEpc,IC1+BTmc,OD6oBF,SAAgBtf,GAEd,OAAOuf,GADQF,GAAY7U,KAAMxK,KC7oBjC8Y,OD4+BF,WACE,IAAK,IAAIte,EAAI,EAAGA,EAAIgQ,KAAK1P,OAAQN,GAAK,EAChCgQ,KAAKhQ,GAAG6M,YAAYmD,KAAKhQ,GAAG6M,WAAWqJ,YAAYlG,KAAKhQ,IAG9D,OAAOgQ,OErgCT,SAAS8a,GAAStlB,EAAUyP,GAK1B,YAJc,IAAVA,IACFA,EAAQ,GAGHyD,WAAWlT,EAAUyP,GAG9B,SAASrW,KACP,OAAOD,KAAKC,MAsBd,SAASmsB,GAAalT,EAAIyD,QACX,IAATA,IACFA,EAAO,KAGT,MAAMnc,EAAS6kB,KACf,IAAIgH,EACAC,EACAC,EACJ,MAAMC,EA5BR,SAA0BtT,GACxB,MAAM1Y,EAAS6kB,KACf,IAAIzb,EAcJ,OAZIpJ,EAAO4E,mBACTwE,EAAQpJ,EAAO4E,iBAAiB8T,EAAI,QAGjCtP,GAASsP,EAAGuT,eACf7iB,EAAQsP,EAAGuT,cAGR7iB,IACHA,EAAQsP,EAAGtP,OAGNA,EAYUxE,CAAiB8T,GA+BlC,OA7BI1Y,EAAOksB,iBACTJ,EAAeE,EAAS3E,WAAa2E,EAASG,gBAE1CL,EAAaxlB,MAAM,KAAKnF,OAAS,IACnC2qB,EAAeA,EAAaxlB,MAAM,MAAMqF,KAAI5J,GAAKA,EAAEuM,QAAQ,IAAK,OAAM8d,KAAK,OAK7EL,EAAkB,IAAI/rB,EAAOksB,gBAAiC,SAAjBJ,EAA0B,GAAKA,KAE5EC,EAAkBC,EAASK,cAAgBL,EAASM,YAAcN,EAASO,aAAeP,EAASQ,aAAeR,EAAS3E,WAAa2E,EAASxH,iBAAiB,aAAalW,QAAQ,aAAc,sBACrMud,EAASE,EAAgBU,WAAWnmB,MAAM,MAG/B,MAAT6V,IAE0B2P,EAAxB9rB,EAAOksB,gBAAgCH,EAAgBW,IAChC,KAAlBb,EAAO1qB,OAA8B+G,WAAW2jB,EAAO,KAC5C3jB,WAAW2jB,EAAO,KAG3B,MAAT1P,IAE0B2P,EAAxB9rB,EAAOksB,gBAAgCH,EAAgBY,IAChC,KAAlBd,EAAO1qB,OAA8B+G,WAAW2jB,EAAO,KAC5C3jB,WAAW2jB,EAAO,KAGjCC,GAAgB,EAGzB,SAAS3J,GAASyK,GAChB,MAAoB,iBAANA,GAAwB,OAANA,GAAcA,EAAExK,aAAkE,WAAnDC,OAAOtR,UAAU0b,SAASjc,KAAKoc,GAAG3S,MAAM,GAAI,GAG7G,SAAS4S,GAAOhM,GAEd,MAAsB,oBAAX7gB,aAAwD,IAAvBA,OAAO8sB,YAC1CjM,aAAgBiM,YAGlBjM,IAA2B,IAAlBA,EAAK7N,UAAoC,KAAlB6N,EAAK7N,UAG9C,SAASsP,KACP,MAAMpd,EAAKmd,OAAOnhB,UAAUC,QAAU,OAAIknB,EAAYnnB,UAAU,IAC1D6rB,EAAW,CAAC,YAAa,cAAe,aAE9C,IAAK,IAAIlsB,EAAI,EAAGA,EAAIK,UAAUC,OAAQN,GAAK,EAAG,CAC5C,MAAMmsB,EAAansB,EAAI,GAAKK,UAAUC,QAAUN,OAAIwnB,EAAYnnB,UAAUL,GAE1E,GAAImsB,UAAoDH,GAAOG,GAAa,CAC1E,MAAMC,EAAY5K,OAAOG,KAAKH,OAAO2K,IAAarH,QAAOlD,GAAOsK,EAAS1sB,QAAQoiB,GAAO,IAExF,IAAK,IAAIyK,EAAY,EAAGC,EAAMF,EAAU9rB,OAAQ+rB,EAAYC,EAAKD,GAAa,EAAG,CAC/E,MAAME,EAAUH,EAAUC,GACpBG,EAAOhL,OAAOiL,yBAAyBN,EAAYI,QAE5C/E,IAATgF,GAAsBA,EAAKE,aACzBpL,GAASjd,EAAGkoB,KAAajL,GAAS6K,EAAWI,IAC3CJ,EAAWI,GAASI,WACtBtoB,EAAGkoB,GAAWJ,EAAWI,GAEzB9K,GAAOpd,EAAGkoB,GAAUJ,EAAWI,KAEvBjL,GAASjd,EAAGkoB,KAAajL,GAAS6K,EAAWI,KACvDloB,EAAGkoB,GAAW,GAEVJ,EAAWI,GAASI,WACtBtoB,EAAGkoB,GAAWJ,EAAWI,GAEzB9K,GAAOpd,EAAGkoB,GAAUJ,EAAWI,KAGjCloB,EAAGkoB,GAAWJ,EAAWI,MAOnC,OAAOloB,EAGT,SAASuoB,GAAe/U,EAAIgV,EAASC,GACnCjV,EAAGtP,MAAMwkB,YAAYF,EAASC,GAGhC,SAASE,GAAqBntB,GAC5B,IAAIotB,OACFA,EAAMC,eACNA,EAAc/jB,KACdA,GACEtJ,EACJ,MAAMV,EAAS6kB,KACTmJ,GAAiBF,EAAOG,UAC9B,IACIlhB,EADAmhB,EAAY,KAEhB,MAAM5Y,EAAWwY,EAAOK,OAAOC,MAC/BN,EAAOO,UAAUjlB,MAAMklB,eAAiB,OACxCtuB,EAAO4kB,qBAAqBkJ,EAAOS,gBACnC,MAAMC,EAAMT,EAAiBC,EAAgB,OAAS,OAEhDS,EAAe,CAACC,EAASlU,IACd,SAARgU,GAAkBE,GAAWlU,GAAkB,SAARgU,GAAkBE,GAAWlU,EAGvEmU,EAAU,KACd5hB,GAAO,IAAIvN,MAAOovB,UAEA,OAAdV,IACFA,EAAYnhB,GAGd,MAAMlH,EAAW7D,KAAKC,IAAID,KAAK4T,KAAK7I,EAAOmhB,GAAa5Y,EAAU,GAAI,GAChEuZ,EAAe,GAAM7sB,KAAK8sB,IAAIjpB,EAAW7D,KAAK+sB,IAAM,EAC1D,IAAIC,EAAkBhB,EAAgBa,GAAgBd,EAAiBC,GAUvE,GARIS,EAAaO,EAAiBjB,KAChCiB,EAAkBjB,GAGpBD,EAAOO,UAAU9pB,SAAS,CACxByF,CAACA,GAAOglB,IAGNP,EAAaO,EAAiBjB,GAUhC,OATAD,EAAOO,UAAUjlB,MAAM0E,SAAW,SAClCggB,EAAOO,UAAUjlB,MAAMklB,eAAiB,GACxC/U,YAAW,KACTuU,EAAOO,UAAUjlB,MAAM0E,SAAW,GAClCggB,EAAOO,UAAU9pB,SAAS,CACxByF,CAACA,GAAOglB,YAGZhvB,EAAO4kB,qBAAqBkJ,EAAOS,gBAIrCT,EAAOS,eAAiBvuB,EAAOsZ,sBAAsBqV,IAGvDA,ICzMF,IAAIM,GCCAC,GCDAC,GF+BJ,SAASC,KAKP,OAJKH,KACHA,GA/BJ,WACE,MAAMjvB,EAAS6kB,KACT7L,EAAW6K,KACjB,MAAO,CACLwL,aAAcrW,EAASC,iBAAmB,mBAAoBD,EAASC,gBAAgB7P,MACvFkmB,SAAU,iBAAkBtvB,GAAUA,EAAOuvB,eAAiBvW,aAAoBhZ,EAAOuvB,eACzFC,gBAAiB,WACf,IAAIC,GAAkB,EAEtB,IACE,MAAMC,EAAOrN,OAAO8C,eAAe,GAAI,UAAW,CAEhDC,MACEqK,GAAkB,KAItBzvB,EAAO0G,iBAAiB,sBAAuB,KAAMgpB,GACrD,MAAOtvB,IAGT,OAAOqvB,EAfQ,GAiBjBE,SACS,mBAAoB3vB,GAOnB4vB,IAGLX,GCYT,SAASY,GAAUC,GASjB,YARkB,IAAdA,IACFA,EAAY,IAGTZ,KACHA,GAnDJ,SAAoBa,GAClB,IAAI9L,UACFA,QACY,IAAV8L,EAAmB,GAAKA,EAC5B,MAAMd,EAAUG,KACVpvB,EAAS6kB,KACTmL,EAAWhwB,EAAOgkB,UAAUgM,SAC5BC,EAAKhM,GAAajkB,EAAOgkB,UAAUC,UACnCiM,EAAS,CACbC,KAAK,EACLC,SAAS,GAELC,EAAcrwB,EAAO0kB,OAAOpjB,MAC5BgvB,EAAetwB,EAAO0kB,OAAOljB,OAC7B4uB,EAAUH,EAAGM,MAAM,+BAEzB,IAAIC,EAAOP,EAAGM,MAAM,wBACpB,MAAME,EAAOR,EAAGM,MAAM,2BAChBG,GAAUF,GAAQP,EAAGM,MAAM,8BAC3BI,EAAuB,UAAbX,EAChB,IAAIY,EAAqB,aAAbZ,EAsBZ,OAlBKQ,GAAQI,GAAS3B,EAAQK,OAFV,CAAC,YAAa,YAAa,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAExGjvB,QAAQ,GAAGgwB,KAAeC,MAAmB,IAC9FE,EAAOP,EAAGM,MAAM,uBACXC,IAAMA,EAAO,CAAC,EAAG,EAAG,WACzBI,GAAQ,GAINR,IAAYO,IACdT,EAAO7rB,GAAK,UACZ6rB,EAAOE,SAAU,IAGfI,GAAQE,GAAUD,KACpBP,EAAO7rB,GAAK,MACZ6rB,EAAOC,KAAM,GAIRD,EASUW,CAAWf,IAGrBZ,GCzCT,SAAS4B,KAKP,OAJK3B,KACHA,GAhBJ,WACE,MAAMnvB,EAAS6kB,KAOf,MAAO,CACLkM,SANF,WACE,MAAMd,EAAKjwB,EAAOgkB,UAAUC,UAAU1V,cACtC,OAAO0hB,EAAG5vB,QAAQ,WAAa,GAAK4vB,EAAG5vB,QAAQ,UAAY,GAAK4vB,EAAG5vB,QAAQ,WAAa,EAI9E0wB,GACVC,UAAW,+CAA+CxhB,KAAKxP,EAAOgkB,UAAUC,YAMtEgN,IAGL9B,GJiBT9M,OAAOG,KAAKgE,IAASjgB,SAAQ2qB,IAC3B7O,OAAO8C,eAAeS,GAAEW,GAAI2K,EAAY,CACtCjwB,MAAOulB,GAAQ0K,GACfC,UAAU,OKzCd,IAAeC,GAAA,CACb5J,GAAGplB,EAAQwmB,EAASyI,GAClB,MAAMziB,EAAOiC,KACb,IAAKjC,EAAK0iB,iBAAmB1iB,EAAK2iB,UAAW,OAAO3iB,EACpD,GAAuB,mBAAZga,EAAwB,OAAOha,EAC1C,MAAM4iB,EAASH,EAAW,UAAY,OAKtC,OAJAjvB,EAAOkE,MAAM,KAAKC,SAAQoZ,IACnB/Q,EAAK0iB,gBAAgB3R,KAAQ/Q,EAAK0iB,gBAAgB3R,GAAS,IAChE/Q,EAAK0iB,gBAAgB3R,GAAO6R,GAAQ5I,MAE/Bha,GAGTiF,KAAKzR,EAAQwmB,EAASyI,GACpB,MAAMziB,EAAOiC,KACb,IAAKjC,EAAK0iB,iBAAmB1iB,EAAK2iB,UAAW,OAAO3iB,EACpD,GAAuB,mBAAZga,EAAwB,OAAOha,EAE1C,SAAS6iB,IACP7iB,EAAK8Z,IAAItmB,EAAQqvB,GAEbA,EAAYC,uBACPD,EAAYC,eAGrB,IAAK,IAAIC,EAAOzwB,UAAUC,OAAQsmB,EAAO,IAAInI,MAAMqS,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EnK,EAAKmK,GAAQ1wB,UAAU0wB,GAGzBhJ,EAAQnK,MAAM7P,EAAM6Y,GAItB,OADAgK,EAAYC,eAAiB9I,EACtBha,EAAK4Y,GAAGplB,EAAQqvB,EAAaJ,IAGtCQ,MAAMjJ,EAASyI,GACb,MAAMziB,EAAOiC,KACb,IAAKjC,EAAK0iB,iBAAmB1iB,EAAK2iB,UAAW,OAAO3iB,EACpD,GAAuB,mBAAZga,EAAwB,OAAOha,EAC1C,MAAM4iB,EAASH,EAAW,UAAY,OAMtC,OAJIziB,EAAKkjB,mBAAmBzxB,QAAQuoB,GAAW,GAC7Cha,EAAKkjB,mBAAmBN,GAAQ5I,GAG3Bha,GAGTmjB,OAAOnJ,GACL,MAAMha,EAAOiC,KACb,IAAKjC,EAAK0iB,iBAAmB1iB,EAAK2iB,UAAW,OAAO3iB,EACpD,IAAKA,EAAKkjB,mBAAoB,OAAOljB,EACrC,MAAM5D,EAAQ4D,EAAKkjB,mBAAmBzxB,QAAQuoB,GAM9C,OAJI5d,GAAS,GACX4D,EAAKkjB,mBAAmB5Z,OAAOlN,EAAO,GAGjC4D,GAGT8Z,IAAItmB,EAAQwmB,GACV,MAAMha,EAAOiC,KACb,OAAKjC,EAAK0iB,iBAAmB1iB,EAAK2iB,UAAkB3iB,EAC/CA,EAAK0iB,iBACVlvB,EAAOkE,MAAM,KAAKC,SAAQoZ,SACD,IAAZiJ,EACTha,EAAK0iB,gBAAgB3R,GAAS,GACrB/Q,EAAK0iB,gBAAgB3R,IAC9B/Q,EAAK0iB,gBAAgB3R,GAAOpZ,SAAQ,CAACyrB,EAAchnB,MAC7CgnB,IAAiBpJ,GAAWoJ,EAAaN,gBAAkBM,EAAaN,iBAAmB9I,IAC7Fha,EAAK0iB,gBAAgB3R,GAAOzH,OAAOlN,EAAO,SAK3C4D,GAZ2BA,GAepCqjB,OACE,MAAMrjB,EAAOiC,KACb,IAAKjC,EAAK0iB,iBAAmB1iB,EAAK2iB,UAAW,OAAO3iB,EACpD,IAAKA,EAAK0iB,gBAAiB,OAAO1iB,EAClC,IAAIxM,EACAiU,EACAyP,EAEJ,IAAK,IAAIoM,EAAQhxB,UAAUC,OAAQsmB,EAAO,IAAInI,MAAM4S,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF1K,EAAK0K,GAASjxB,UAAUixB,GAGH,iBAAZ1K,EAAK,IAAmBnI,MAAMmG,QAAQgC,EAAK,KACpDrlB,EAASqlB,EAAK,GACdpR,EAAOoR,EAAKxN,MAAM,EAAGwN,EAAKtmB,QAC1B2kB,EAAUlX,IAEVxM,EAASqlB,EAAK,GAAGrlB,OACjBiU,EAAOoR,EAAK,GAAGpR,KACfyP,EAAU2B,EAAK,GAAG3B,SAAWlX,GAG/ByH,EAAKoE,QAAQqL,GAeb,OAdoBxG,MAAMmG,QAAQrjB,GAAUA,EAASA,EAAOkE,MAAM,MACtDC,SAAQoZ,IACd/Q,EAAKkjB,oBAAsBljB,EAAKkjB,mBAAmB3wB,QACrDyN,EAAKkjB,mBAAmBvrB,SAAQyrB,IAC9BA,EAAavT,MAAMqH,EAAS,CAACnG,KAAUtJ,OAIvCzH,EAAK0iB,iBAAmB1iB,EAAK0iB,gBAAgB3R,IAC/C/Q,EAAK0iB,gBAAgB3R,GAAOpZ,SAAQyrB,IAClCA,EAAavT,MAAMqH,EAASzP,SAI3BzH,IC7GX,IAAe3B,GAAA,CACbmlB,WCVa,WACb,MAAMtE,EAASjd,KACf,IAAIvP,EACAE,EACJ,MAAM6wB,EAAMvE,EAAOuE,IAGjB/wB,OADiC,IAAxBwsB,EAAOK,OAAO7sB,OAAiD,OAAxBwsB,EAAOK,OAAO7sB,MACtDwsB,EAAOK,OAAO7sB,MAEd+wB,EAAI,GAAGC,YAIf9wB,OADkC,IAAzBssB,EAAOK,OAAO3sB,QAAmD,OAAzBssB,EAAOK,OAAO3sB,OACtDssB,EAAOK,OAAO3sB,OAEd6wB,EAAI,GAAGE,aAGJ,IAAVjxB,GAAewsB,EAAO0E,gBAA6B,IAAXhxB,GAAgBssB,EAAO3W,eAKnE7V,EAAQA,EAAQmxB,SAASJ,EAAIrpB,IAAI,iBAAmB,EAAG,IAAMypB,SAASJ,EAAIrpB,IAAI,kBAAoB,EAAG,IACrGxH,EAASA,EAASixB,SAASJ,EAAIrpB,IAAI,gBAAkB,EAAG,IAAMypB,SAASJ,EAAIrpB,IAAI,mBAAqB,EAAG,IACnG0pB,OAAOxV,MAAM5b,KAAQA,EAAQ,GAC7BoxB,OAAOxV,MAAM1b,KAASA,EAAS,GACnC6gB,OAAOsQ,OAAO7E,EAAQ,CACpBxsB,QACAE,SACAsG,KAAMgmB,EAAO0E,eAAiBlxB,EAAQE,MDnBxCoxB,aEVa,WACb,MAAM9E,EAASjd,KAEf,SAASgiB,EAAkBryB,GACzB,OAAIstB,EAAO0E,eACFhyB,EAIF,CACLc,MAAS,SACT,aAAc,cACd,iBAAkB,eAClB,cAAe,aACf,eAAgB,gBAChB,eAAgB,cAChB,gBAAiB,iBACjBwxB,YAAe,gBACftyB,GAGJ,SAASuyB,EAA0BlS,EAAMmS,GACvC,OAAO9qB,WAAW2Y,EAAK2D,iBAAiBqO,EAAkBG,KAAW,GAGvE,MAAM7E,EAASL,EAAOK,QAChB8E,WACJA,EACAnrB,KAAMorB,EACNC,aAAcC,EAAGC,SACjBA,GACEvF,EACEwF,EAAYxF,EAAOyF,SAAWpF,EAAOoF,QAAQ1c,QAC7C2c,EAAuBF,EAAYxF,EAAOyF,QAAQE,OAAOtyB,OAAS2sB,EAAO2F,OAAOtyB,OAChFsyB,EAASR,EAAWzpB,SAAS,IAAIskB,EAAOK,OAAOuF,cAC/CC,EAAeL,EAAYxF,EAAOyF,QAAQE,OAAOtyB,OAASsyB,EAAOtyB,OACvE,IAAIyyB,EAAW,GACf,MAAMC,EAAa,GACbC,EAAkB,GACxB,IAAIC,EAAe5F,EAAO6F,mBAEE,mBAAjBD,IACTA,EAAe5F,EAAO6F,mBAAmBxjB,KAAKsd,IAGhD,IAAImG,EAAc9F,EAAO+F,kBAEE,mBAAhBD,IACTA,EAAc9F,EAAO+F,kBAAkB1jB,KAAKsd,IAG9C,MAAMqG,EAAyBrG,EAAO8F,SAASzyB,OACzCizB,EAA2BtG,EAAO+F,WAAW1yB,OACnD,IAAIkzB,EAAelG,EAAOkG,aACtBC,GAAiBP,EACjBQ,EAAgB,EAChBvpB,EAAQ,EAEZ,QAA0B,IAAfkoB,EACT,OAG0B,iBAAjBmB,GAA6BA,EAAah0B,QAAQ,MAAQ,IACnEg0B,EAAensB,WAAWmsB,EAAa/lB,QAAQ,IAAK,KAAO,IAAM4kB,GAGnEpF,EAAO0G,aAAeH,EAElBjB,EAAKK,EAAOzqB,IAAI,CAClByrB,WAAY,GACZC,aAAc,GACdC,UAAW,KACLlB,EAAOzqB,IAAI,CACjB8pB,YAAa,GACb4B,aAAc,GACdC,UAAW,KAGTxG,EAAOyG,gBAAkBzG,EAAO0G,UAClCpH,GAAeK,EAAOO,UAAW,kCAAmC,IACpEZ,GAAeK,EAAOO,UAAW,iCAAkC,KAGrE,MAAMyG,EAAc3G,EAAO4G,MAAQ5G,EAAO4G,KAAKC,KAAO,GAAKlH,EAAOiH,KAOlE,IAAIE,EALAH,GACFhH,EAAOiH,KAAKG,WAAWvB,GAKzB,MAAMwB,EAAgD,SAAzBhH,EAAOiH,eAA4BjH,EAAOkH,aAAehT,OAAOG,KAAK2L,EAAOkH,aAAa1P,QAAOlD,QACnE,IAA1C0L,EAAOkH,YAAY5S,GAAK2S,gBACrCj0B,OAAS,EAEZ,IAAK,IAAIN,EAAI,EAAGA,EAAI8yB,EAAc9yB,GAAK,EAAG,CACxCo0B,EAAY,EACZ,MAAMK,EAAQ7B,EAAOlJ,GAAG1pB,GAMxB,GAJIi0B,GACFhH,EAAOiH,KAAKQ,YAAY10B,EAAGy0B,EAAO3B,EAAcd,GAGrB,SAAzByC,EAAMtsB,IAAI,WAAd,CAEA,GAA6B,SAAzBmlB,EAAOiH,cAA0B,CAC/BD,IACF1B,EAAO5yB,GAAGuI,MAAMypB,EAAkB,UAAY,IAGhD,MAAM2C,EAAc5wB,iBAAiB0wB,EAAM,IACrCG,EAAmBH,EAAM,GAAGlsB,MAAMie,UAClCqO,EAAyBJ,EAAM,GAAGlsB,MAAM+iB,gBAU9C,GARIsJ,IACFH,EAAM,GAAGlsB,MAAMie,UAAY,QAGzBqO,IACFJ,EAAM,GAAGlsB,MAAM+iB,gBAAkB,QAG/BgC,EAAOwH,aACTV,EAAYnH,EAAO0E,eAAiB8C,EAAM/L,YAAW,GAAQ+L,EAAM5L,aAAY,OAC1E,CAEL,MAAMpoB,EAAQyxB,EAA0ByC,EAAa,SAC/CI,EAAc7C,EAA0ByC,EAAa,gBACrDK,EAAe9C,EAA0ByC,EAAa,iBACtDf,EAAa1B,EAA0ByC,EAAa,eACpD1C,EAAcC,EAA0ByC,EAAa,gBACrDznB,EAAYynB,EAAYhR,iBAAiB,cAE/C,GAAIzW,GAA2B,eAAdA,EACfknB,EAAY3zB,EAAQmzB,EAAa3B,MAC5B,CACL,MAAMR,YACJA,EAAWrpB,YACXA,GACEqsB,EAAM,GACVL,EAAY3zB,EAAQs0B,EAAcC,EAAepB,EAAa3B,GAAe7pB,EAAcqpB,IAI3FmD,IACFH,EAAM,GAAGlsB,MAAMie,UAAYoO,GAGzBC,IACFJ,EAAM,GAAGlsB,MAAM+iB,gBAAkBuJ,GAG/BvH,EAAOwH,eAAcV,EAAYjzB,KAAK8zB,MAAMb,SAEhDA,GAAa/B,GAAc/E,EAAOiH,cAAgB,GAAKf,GAAgBlG,EAAOiH,cAC1EjH,EAAOwH,eAAcV,EAAYjzB,KAAK8zB,MAAMb,IAE5CxB,EAAO5yB,KACT4yB,EAAO5yB,GAAGuI,MAAMypB,EAAkB,UAAY,GAAGoC,OAIjDxB,EAAO5yB,KACT4yB,EAAO5yB,GAAGk1B,gBAAkBd,GAG9BnB,EAAgB9yB,KAAKi0B,GAEjB9G,EAAOyG,gBACTN,EAAgBA,EAAgBW,EAAY,EAAIV,EAAgB,EAAIF,EAC9C,IAAlBE,GAA6B,IAAN1zB,IAASyzB,EAAgBA,EAAgBpB,EAAa,EAAImB,GAC3E,IAANxzB,IAASyzB,EAAgBA,EAAgBpB,EAAa,EAAImB,GAC1DryB,KAAKgB,IAAIsxB,GAAiB,OAAUA,EAAgB,GACpDnG,EAAOwH,eAAcrB,EAAgBtyB,KAAK8zB,MAAMxB,IAChDtpB,EAAQmjB,EAAO6H,gBAAmB,GAAGpC,EAAS5yB,KAAKszB,GACvDT,EAAW7yB,KAAKszB,KAEZnG,EAAOwH,eAAcrB,EAAgBtyB,KAAK8zB,MAAMxB,KAC/CtpB,EAAQhJ,KAAK4T,IAAIkY,EAAOK,OAAO8H,mBAAoBjrB,IAAU8iB,EAAOK,OAAO6H,gBAAmB,GAAGpC,EAAS5yB,KAAKszB,GACpHT,EAAW7yB,KAAKszB,GAChBA,EAAgBA,EAAgBW,EAAYZ,GAG9CvG,EAAO0G,aAAeS,EAAYZ,EAClCE,EAAgBU,EAChBjqB,GAAS,GAsBX,GAnBA8iB,EAAO0G,YAAcxyB,KAAKC,IAAI6rB,EAAO0G,YAAatB,GAAce,EAE5Db,GAAOC,IAA+B,UAAlBlF,EAAO+H,QAAwC,cAAlB/H,EAAO+H,SAC1DjD,EAAWjqB,IAAI,CACb1H,MAAO,GAAGwsB,EAAO0G,YAAcrG,EAAOkG,mBAItClG,EAAOgI,gBACTlD,EAAWjqB,IAAI,CACb,CAAC6pB,EAAkB,UAAW,GAAG/E,EAAO0G,YAAcrG,EAAOkG,mBAI7DS,GACFhH,EAAOiH,KAAKqB,kBAAkBnB,EAAWrB,EAAUf,IAIhD1E,EAAOyG,eAAgB,CAC1B,MAAMyB,EAAgB,GAEtB,IAAK,IAAIx1B,EAAI,EAAGA,EAAI+yB,EAASzyB,OAAQN,GAAK,EAAG,CAC3C,IAAIy1B,EAAiB1C,EAAS/yB,GAC1BstB,EAAOwH,eAAcW,EAAiBt0B,KAAK8zB,MAAMQ,IAEjD1C,EAAS/yB,IAAMitB,EAAO0G,YAActB,GACtCmD,EAAcr1B,KAAKs1B,GAIvB1C,EAAWyC,EAEPr0B,KAAK8zB,MAAMhI,EAAO0G,YAActB,GAAclxB,KAAK8zB,MAAMlC,EAASA,EAASzyB,OAAS,IAAM,GAC5FyyB,EAAS5yB,KAAK8sB,EAAO0G,YAActB,GAMvC,GAFwB,IAApBU,EAASzyB,SAAcyyB,EAAW,CAAC,IAEX,IAAxBzF,EAAOkG,aAAoB,CAC7B,MAAM5R,EAAMqL,EAAO0E,gBAAkBY,EAAM,aAAeP,EAAkB,eAC5EY,EAAO9N,QAAO,CAAC4Q,EAAGC,KACXrI,EAAO0G,SAER2B,IAAe/C,EAAOtyB,OAAS,IAKlC6H,IAAI,CACLyZ,CAACA,GAAM,GAAG4R,QAId,GAAIlG,EAAOyG,gBAAkBzG,EAAOsI,qBAAsB,CACxD,IAAIC,EAAgB,EACpB5C,EAAgBvtB,SAAQowB,IACtBD,GAAiBC,GAAkBxI,EAAOkG,aAAelG,EAAOkG,aAAe,MAEjFqC,GAAiBvI,EAAOkG,aACxB,MAAMuC,EAAUF,EAAgBxD,EAChCU,EAAWA,EAASjoB,KAAImI,GAClBA,EAAO,GAAWigB,EAClBjgB,EAAO8iB,EAAgBA,EAAU3C,EAC9BngB,IAIX,GAAIqa,EAAO0I,yBAA0B,CACnC,IAAIH,EAAgB,EAMpB,GALA5C,EAAgBvtB,SAAQowB,IACtBD,GAAiBC,GAAkBxI,EAAOkG,aAAelG,EAAOkG,aAAe,MAEjFqC,GAAiBvI,EAAOkG,aAEpBqC,EAAgBxD,EAAY,CAC9B,MAAM4D,GAAmB5D,EAAawD,GAAiB,EACvD9C,EAASrtB,SAAQ,CAACuN,EAAMijB,KACtBnD,EAASmD,GAAajjB,EAAOgjB,KAE/BjD,EAAWttB,SAAQ,CAACuN,EAAMijB,KACxBlD,EAAWkD,GAAajjB,EAAOgjB,MAYrC,GAPAzU,OAAOsQ,OAAO7E,EAAQ,CACpB2F,SACAG,WACAC,aACAC,oBAGE3F,EAAOyG,gBAAkBzG,EAAO0G,UAAY1G,EAAOsI,qBAAsB,CAC3EhJ,GAAeK,EAAOO,UAAW,mCAAuCuF,EAAS,GAAb,MACpEnG,GAAeK,EAAOO,UAAW,iCAAqCP,EAAOhmB,KAAO,EAAIgsB,EAAgBA,EAAgB3yB,OAAS,GAAK,EAAnE,MACnE,MAAM61B,GAAiBlJ,EAAO8F,SAAS,GACjCqD,GAAmBnJ,EAAO+F,WAAW,GAC3C/F,EAAO8F,SAAW9F,EAAO8F,SAASjoB,KAAI7L,GAAKA,EAAIk3B,IAC/ClJ,EAAO+F,WAAa/F,EAAO+F,WAAWloB,KAAI7L,GAAKA,EAAIm3B,IAoBrD,GAjBItD,IAAiBH,GACnB1F,EAAOmE,KAAK,sBAGV2B,EAASzyB,SAAWgzB,IAClBrG,EAAOK,OAAO+I,eAAepJ,EAAOqJ,gBACxCrJ,EAAOmE,KAAK,yBAGV4B,EAAW1yB,SAAWizB,GACxBtG,EAAOmE,KAAK,0BAGV9D,EAAOiJ,qBACTtJ,EAAOuJ,uBAGJ/D,GAAcnF,EAAO0G,SAA8B,UAAlB1G,EAAO+H,QAAwC,SAAlB/H,EAAO+H,QAAoB,CAC5F,MAAMoB,EAAsB,GAAGnJ,EAAOoJ,wCAChCC,EAA6B1J,EAAOuE,IAAIvL,SAASwQ,GAEnD3D,GAAgBxF,EAAOsJ,wBACpBD,GAA4B1J,EAAOuE,IAAI5L,SAAS6Q,GAC5CE,GACT1J,EAAOuE,IAAIxL,YAAYyQ,KFhT3BI,iBGXa,SAA0BtJ,GACvC,MAAMN,EAASjd,KACT8mB,EAAe,GACfrE,EAAYxF,EAAOyF,SAAWzF,EAAOK,OAAOoF,QAAQ1c,QAC1D,IACIhW,EADA+2B,EAAY,EAGK,iBAAVxJ,EACTN,EAAO+J,cAAczJ,IACF,IAAVA,GACTN,EAAO+J,cAAc/J,EAAOK,OAAOC,OAGrC,MAAM0J,EAAkB9sB,GAClBsoB,EACKxF,EAAO2F,OAAO9N,QAAOjN,GAAM+Z,SAAS/Z,EAAGgH,aAAa,2BAA4B,MAAQ1U,IAAO,GAGjG8iB,EAAO2F,OAAOlJ,GAAGvf,GAAO,GAIjC,GAAoC,SAAhC8iB,EAAOK,OAAOiH,eAA4BtH,EAAOK,OAAOiH,cAAgB,EAC1E,GAAItH,EAAOK,OAAOyG,gBACf9G,EAAOiK,eAAiBnS,GAAE,KAAKmE,MAAKuL,IACnCqC,EAAa32B,KAAKs0B,WAGpB,IAAKz0B,EAAI,EAAGA,EAAImB,KAAK+V,KAAK+V,EAAOK,OAAOiH,eAAgBv0B,GAAK,EAAG,CAC9D,MAAMmK,EAAQ8iB,EAAOkK,YAAcn3B,EACnC,GAAImK,EAAQ8iB,EAAO2F,OAAOtyB,SAAWmyB,EAAW,MAChDqE,EAAa32B,KAAK82B,EAAgB9sB,SAItC2sB,EAAa32B,KAAK82B,EAAgBhK,EAAOkK,cAI3C,IAAKn3B,EAAI,EAAGA,EAAI82B,EAAax2B,OAAQN,GAAK,EACxC,QAA+B,IAApB82B,EAAa92B,GAAoB,CAC1C,MAAMW,EAASm2B,EAAa92B,GAAGoe,aAC/B2Y,EAAYp2B,EAASo2B,EAAYp2B,EAASo2B,GAK1CA,GAA2B,IAAdA,IAAiB9J,EAAOmF,WAAWjqB,IAAI,SAAU,GAAG4uB,QHnCrEP,mBIba,WACb,MAAMvJ,EAASjd,KACT4iB,EAAS3F,EAAO2F,OAEtB,IAAK,IAAI5yB,EAAI,EAAGA,EAAI4yB,EAAOtyB,OAAQN,GAAK,EACtC4yB,EAAO5yB,GAAGo3B,kBAAoBnK,EAAO0E,eAAiBiB,EAAO5yB,GAAGq3B,WAAazE,EAAO5yB,GAAGs3B,WJSzFC,qBKba,SAA8BnK,QACzB,IAAdA,IACFA,EAAYpd,MAAQA,KAAKod,WAAa,GAGxC,MAAMH,EAASjd,KACTsd,EAASL,EAAOK,QAChBsF,OACJA,EACAN,aAAcC,EAAGQ,SACjBA,GACE9F,EACJ,GAAsB,IAAlB2F,EAAOtyB,OAAc,YACkB,IAAhCsyB,EAAO,GAAGwE,mBAAmCnK,EAAOuJ,qBAC/D,IAAIgB,GAAgBpK,EAChBmF,IAAKiF,EAAepK,GAExBwF,EAAO5M,YAAYsH,EAAOmK,mBAC1BxK,EAAOyK,qBAAuB,GAC9BzK,EAAOiK,cAAgB,GAEvB,IAAK,IAAIl3B,EAAI,EAAGA,EAAI4yB,EAAOtyB,OAAQN,GAAK,EAAG,CACzC,MAAMy0B,EAAQ7B,EAAO5yB,GACrB,IAAI23B,EAAclD,EAAM2C,kBAEpB9J,EAAO0G,SAAW1G,EAAOyG,iBAC3B4D,GAAe/E,EAAO,GAAGwE,mBAG3B,MAAMQ,GAAiBJ,GAAgBlK,EAAOyG,eAAiB9G,EAAO4K,eAAiB,GAAKF,IAAgBlD,EAAMS,gBAAkB5H,EAAOkG,cACrIsE,GAAyBN,EAAezE,EAAS,IAAMzF,EAAOyG,eAAiB9G,EAAO4K,eAAiB,GAAKF,IAAgBlD,EAAMS,gBAAkB5H,EAAOkG,cAC3JuE,IAAgBP,EAAeG,GAC/BK,EAAaD,EAAc9K,EAAOgG,gBAAgBjzB,IACtC+3B,GAAe,GAAKA,EAAc9K,EAAOhmB,KAAO,GAAK+wB,EAAa,GAAKA,GAAc/K,EAAOhmB,MAAQ8wB,GAAe,GAAKC,GAAc/K,EAAOhmB,QAG7JgmB,EAAOiK,cAAc/2B,KAAKs0B,GAC1BxH,EAAOyK,qBAAqBv3B,KAAKH,GACjC4yB,EAAOlJ,GAAG1pB,GAAG4lB,SAAS0H,EAAOmK,oBAG/BhD,EAAMzvB,SAAWutB,GAAOqF,EAAgBA,EACxCnD,EAAMwD,iBAAmB1F,GAAOuF,EAAwBA,EAG1D7K,EAAOiK,cAAgBnS,GAAEkI,EAAOiK,gBL/BhCgB,eMfa,SAAwB9K,GACrC,MAAMH,EAASjd,KAEf,QAAyB,IAAdod,EAA2B,CACpC,MAAM+K,EAAalL,EAAOqF,cAAgB,EAAI,EAE9ClF,EAAYH,GAAUA,EAAOG,WAAaH,EAAOG,UAAY+K,GAAc,EAG7E,MAAM7K,EAASL,EAAOK,OAChB8K,EAAiBnL,EAAOoL,eAAiBpL,EAAO4K,eACtD,IAAI7yB,SACFA,EAAQszB,YACRA,EAAWC,MACXA,GACEtL,EACJ,MAAMuL,EAAeF,EACfG,EAASF,EAEQ,IAAnBH,GACFpzB,EAAW,EACXszB,GAAc,EACdC,GAAQ,IAERvzB,GAAYooB,EAAYH,EAAO4K,gBAAkBO,EACjDE,EAActzB,GAAY,EAC1BuzB,EAAQvzB,GAAY,GAGtBwc,OAAOsQ,OAAO7E,EAAQ,CACpBjoB,WACAszB,cACAC,WAEEjL,EAAOiJ,qBAAuBjJ,EAAOyG,gBAAkBzG,EAAOoL,aAAYzL,EAAOsK,qBAAqBnK,GAEtGkL,IAAgBE,GAClBvL,EAAOmE,KAAK,yBAGVmH,IAAUE,GACZxL,EAAOmE,KAAK,oBAGVoH,IAAiBF,GAAeG,IAAWF,IAC7CtL,EAAOmE,KAAK,YAGdnE,EAAOmE,KAAK,WAAYpsB,INhCxB2zB,oBOhBa,WACb,MAAM1L,EAASjd,MACT4iB,OACJA,EAAMtF,OACNA,EAAM8E,WACNA,EAAU+E,YACVA,EAAWyB,UACXA,GACE3L,EACEwF,EAAYxF,EAAOyF,SAAWpF,EAAOoF,QAAQ1c,QAEnD,IAAI6iB,EADJjG,EAAO5M,YAAY,GAAGsH,EAAOwL,oBAAoBxL,EAAOyL,kBAAkBzL,EAAO0L,kBAAkB1L,EAAO2L,6BAA6B3L,EAAO4L,2BAA2B5L,EAAO6L,2BAI9KN,EADEpG,EACYxF,EAAOmF,WAAWzH,KAAK,IAAI2C,EAAOuF,uCAAuCsE,OAEzEvE,EAAOlJ,GAAGyN,GAI1B0B,EAAYjT,SAAS0H,EAAOwL,kBAExBxL,EAAO8L,OAELP,EAAY5S,SAASqH,EAAO+L,qBAC9BjH,EAAWzpB,SAAS,IAAI2kB,EAAOuF,mBAAmBvF,EAAO+L,iDAAiDT,OAAehT,SAAS0H,EAAO2L,2BAEzI7G,EAAWzpB,SAAS,IAAI2kB,EAAOuF,cAAcvF,EAAO+L,gDAAgDT,OAAehT,SAAS0H,EAAO2L,4BAKvI,IAAIK,EAAYT,EAAYzO,QAAQ,IAAIkD,EAAOuF,cAAcnJ,GAAG,GAAG9D,SAAS0H,EAAOyL,gBAE/EzL,EAAO8L,MAA6B,IAArBE,EAAUh5B,SAC3Bg5B,EAAY1G,EAAOlJ,GAAG,GACtB4P,EAAU1T,SAAS0H,EAAOyL,iBAI5B,IAAIQ,EAAYV,EAAYrO,QAAQ,IAAI8C,EAAOuF,cAAcnJ,GAAG,GAAG9D,SAAS0H,EAAO0L,gBAE/E1L,EAAO8L,MAA6B,IAArBG,EAAUj5B,SAC3Bi5B,EAAY3G,EAAOlJ,IAAI,GACvB6P,EAAU3T,SAAS0H,EAAO0L,iBAGxB1L,EAAO8L,OAELE,EAAUrT,SAASqH,EAAO+L,qBAC5BjH,EAAWzpB,SAAS,IAAI2kB,EAAOuF,mBAAmBvF,EAAO+L,iDAAiDC,EAAUnT,KAAK,gCAAgCP,SAAS0H,EAAO4L,yBAEzK9G,EAAWzpB,SAAS,IAAI2kB,EAAOuF,cAAcvF,EAAO+L,gDAAgDC,EAAUnT,KAAK,gCAAgCP,SAAS0H,EAAO4L,yBAGjKK,EAAUtT,SAASqH,EAAO+L,qBAC5BjH,EAAWzpB,SAAS,IAAI2kB,EAAOuF,mBAAmBvF,EAAO+L,iDAAiDE,EAAUpT,KAAK,gCAAgCP,SAAS0H,EAAO6L,yBAEzK/G,EAAWzpB,SAAS,IAAI2kB,EAAOuF,cAAcvF,EAAO+L,gDAAgDE,EAAUpT,KAAK,gCAAgCP,SAAS0H,EAAO6L,0BAIvKlM,EAAOuM,qBP7CPC,kBQjBa,SAA2BC,GACxC,MAAMzM,EAASjd,KACTod,EAAYH,EAAOqF,aAAerF,EAAOG,WAAaH,EAAOG,WAC7D4F,WACJA,EAAUD,SACVA,EAAQzF,OACRA,EACA6J,YAAawC,EACbf,UAAWgB,EACX1D,UAAW2D,GACT5M,EACJ,IACIiJ,EADAiB,EAAcuC,EAGlB,QAA2B,IAAhBvC,EAA6B,CACtC,IAAK,IAAIn3B,EAAI,EAAGA,EAAIgzB,EAAW1yB,OAAQN,GAAK,OACT,IAAtBgzB,EAAWhzB,EAAI,GACpBotB,GAAa4F,EAAWhzB,IAAMotB,EAAY4F,EAAWhzB,EAAI,IAAMgzB,EAAWhzB,EAAI,GAAKgzB,EAAWhzB,IAAM,EACtGm3B,EAAcn3B,EACLotB,GAAa4F,EAAWhzB,IAAMotB,EAAY4F,EAAWhzB,EAAI,KAClEm3B,EAAcn3B,EAAI,GAEXotB,GAAa4F,EAAWhzB,KACjCm3B,EAAcn3B,GAKdstB,EAAOwM,sBACL3C,EAAc,QAA4B,IAAhBA,KAA6BA,EAAc,GAI7E,GAAIpE,EAASvzB,QAAQ4tB,IAAc,EACjC8I,EAAYnD,EAASvzB,QAAQ4tB,OACxB,CACL,MAAM2M,EAAO54B,KAAK4T,IAAIuY,EAAO8H,mBAAoB+B,GACjDjB,EAAY6D,EAAO54B,KAAK8zB,OAAOkC,EAAc4C,GAAQzM,EAAO6H,gBAK9D,GAFIe,GAAanD,EAASzyB,SAAQ41B,EAAYnD,EAASzyB,OAAS,GAE5D62B,IAAgBwC,EAMlB,YALIzD,IAAc2D,IAChB5M,EAAOiJ,UAAYA,EACnBjJ,EAAOmE,KAAK,qBAOhB,MAAMwH,EAAYhH,SAAS3E,EAAO2F,OAAOlJ,GAAGyN,GAAahR,KAAK,4BAA8BgR,EAAa,IACzG3V,OAAOsQ,OAAO7E,EAAQ,CACpBiJ,YACA0C,YACAe,gBACAxC,gBAEFlK,EAAOmE,KAAK,qBACZnE,EAAOmE,KAAK,mBAERwI,IAAsBhB,GACxB3L,EAAOmE,KAAK,oBAGVnE,EAAO+M,aAAe/M,EAAOK,OAAO2M,qBACtChN,EAAOmE,KAAK,gBRjDd8I,mBSjBa,SAA4B36B,GACzC,MAAM0tB,EAASjd,KACTsd,EAASL,EAAOK,OAChBmH,EAAQ1P,GAAExlB,GAAGmrB,QAAQ,IAAI4C,EAAOuF,cAAc,GACpD,IACI8C,EADAwE,GAAa,EAGjB,GAAI1F,EACF,IAAK,IAAIz0B,EAAI,EAAGA,EAAIitB,EAAO2F,OAAOtyB,OAAQN,GAAK,EAC7C,GAAIitB,EAAO2F,OAAO5yB,KAAOy0B,EAAO,CAC9B0F,GAAa,EACbxE,EAAa31B,EACb,MAKN,IAAIy0B,IAAS0F,EAWX,OAFAlN,EAAOmN,kBAAe5S,OACtByF,EAAOoN,kBAAe7S,GATtByF,EAAOmN,aAAe3F,EAElBxH,EAAOyF,SAAWzF,EAAOK,OAAOoF,QAAQ1c,QAC1CiX,EAAOoN,aAAezI,SAAS7M,GAAE0P,GAAOtO,KAAK,2BAA4B,IAEzE8G,EAAOoN,aAAe1E,EAQtBrI,EAAOgN,0BAA+C9S,IAAxByF,EAAOoN,cAA8BpN,EAAOoN,eAAiBpN,EAAOkK,aACpGlK,EAAOqN,wBC5BX,IAAelN,GAAA,CACfrC,aCLe,SAA4BzP,QAC5B,IAATA,IACFA,EAAOtL,KAAK2hB,eAAiB,IAAM,KAGrC,MACMrE,OACJA,EACAgF,aAAcC,EAAGnF,UACjBA,EAASgF,WACTA,GALapiB,KAQf,GAAIsd,EAAOiN,iBACT,OAAOhI,GAAOnF,EAAYA,EAG5B,GAAIE,EAAO0G,QACT,OAAO5G,EAGT,IAAIoN,EAAmBzP,GAAaqH,EAAW,GAAI9W,GAEnD,OADIiX,IAAKiI,GAAoBA,GACtBA,GAAoB,GDjB3BC,aEPa,SAAsBrN,EAAWsN,GAC9C,MAAMzN,EAASjd,MAEbsiB,aAAcC,EAAGjF,OACjBA,EAAM8E,WACNA,EAAU5E,UACVA,EAASxoB,SACTA,GACEioB,EACJ,IAwBI0N,EAxBAr2B,EAAI,EACJC,EAAI,EAGJ0oB,EAAO0E,eACTrtB,EAAIiuB,GAAOnF,EAAYA,EAEvB7oB,EAAI6oB,EAGFE,EAAOwH,eACTxwB,EAAInD,KAAK8zB,MAAM3wB,GACfC,EAAIpD,KAAK8zB,MAAM1wB,IAGb+oB,EAAO0G,QACTxG,EAAUP,EAAO0E,eAAiB,aAAe,aAAe1E,EAAO0E,gBAAkBrtB,GAAKC,EACpF+oB,EAAOiN,kBACjBnI,EAAW5L,UAAU,eAAeliB,QAAQC,aAG9C0oB,EAAO2N,kBAAoB3N,EAAOG,UAClCH,EAAOG,UAAYH,EAAO0E,eAAiBrtB,EAAIC,EAG/C,MAAM6zB,EAAiBnL,EAAOoL,eAAiBpL,EAAO4K,eAGpD8C,EADqB,IAAnBvC,EACY,GAEChL,EAAYH,EAAO4K,gBAAkBO,EAGlDuC,IAAgB31B,GAClBioB,EAAOiL,eAAe9K,GAGxBH,EAAOmE,KAAK,eAAgBnE,EAAOG,UAAWsN,IFtC9C7C,aGRa,WACb,OAAQ7nB,KAAK+iB,SAAS,IHQtBsF,aITa,WACb,OAAQroB,KAAK+iB,SAAS/iB,KAAK+iB,SAASzyB,OAAS,IJS7Cu6B,YKTa,SAAqBzN,EAAWG,EAAOuN,EAAcC,EAAiBC,QACjE,IAAd5N,IACFA,EAAY,QAGA,IAAVG,IACFA,EAAQvd,KAAKsd,OAAOC,YAGD,IAAjBuN,IACFA,GAAe,QAGO,IAApBC,IACFA,GAAkB,GAGpB,MAAM9N,EAASjd,MACTsd,OACJA,EAAME,UACNA,GACEP,EAEJ,GAAIA,EAAOgO,WAAa3N,EAAO4N,+BAC7B,OAAO,EAGT,MAAMrD,EAAe5K,EAAO4K,eACtBQ,EAAepL,EAAOoL,eAC5B,IAAI8C,EAKJ,GAJiDA,EAA7CJ,GAAmB3N,EAAYyK,EAA6BA,EAAsBkD,GAAmB3N,EAAYiL,EAA6BA,EAAiCjL,EAEnLH,EAAOiL,eAAeiD,GAElB7N,EAAO0G,QAAS,CAClB,MAAMoH,EAAMnO,EAAO0E,eAEnB,GAAc,IAAVpE,EACFC,EAAU4N,EAAM,aAAe,cAAgBD,MAC1C,CACL,IAAKlO,EAAOmB,QAAQI,aAMlB,OALAxB,GAAqB,CACnBC,SACAC,gBAAiBiO,EACjBhyB,KAAMiyB,EAAM,OAAS,SAEhB,EAGT5N,EAAU9pB,SAAS,CACjB,CAAC03B,EAAM,OAAS,QAASD,EACzBE,SAAU,WAId,OAAO,EA2CT,OAxCc,IAAV9N,GACFN,EAAO+J,cAAc,GACrB/J,EAAOwN,aAAaU,GAEhBL,IACF7N,EAAOmE,KAAK,wBAAyB7D,EAAOyN,GAC5C/N,EAAOmE,KAAK,oBAGdnE,EAAO+J,cAAczJ,GACrBN,EAAOwN,aAAaU,GAEhBL,IACF7N,EAAOmE,KAAK,wBAAyB7D,EAAOyN,GAC5C/N,EAAOmE,KAAK,oBAGTnE,EAAOgO,YACVhO,EAAOgO,WAAY,EAEdhO,EAAOqO,oCACVrO,EAAOqO,kCAAoC,SAAuB/7B,GAC3D0tB,IAAUA,EAAOyD,WAClBnxB,EAAEoa,SAAW3J,OACjBid,EAAOmF,WAAW,GAAGpsB,oBAAoB,gBAAiBinB,EAAOqO,mCACjErO,EAAOmF,WAAW,GAAGpsB,oBAAoB,sBAAuBinB,EAAOqO,mCACvErO,EAAOqO,kCAAoC,YACpCrO,EAAOqO,kCAEVR,GACF7N,EAAOmE,KAAK,oBAKlBnE,EAAOmF,WAAW,GAAGvsB,iBAAiB,gBAAiBonB,EAAOqO,mCAC9DrO,EAAOmF,WAAW,GAAGvsB,iBAAiB,sBAAuBonB,EAAOqO,sCAIjE,ICnGM,SAASC,GAAe17B,GACrC,IAAIotB,OACFA,EAAM6N,aACNA,EAAYpzB,UACZA,EAAS8zB,KACTA,GACE37B,EACJ,MAAMs3B,YACJA,EAAWwC,cACXA,GACE1M,EACJ,IAAIU,EAAMjmB,EAQV,GANKimB,IAC8BA,EAA7BwJ,EAAcwC,EAAqB,OAAgBxC,EAAcwC,EAAqB,OAAkB,SAG9G1M,EAAOmE,KAAK,aAAaoK,KAErBV,GAAgB3D,IAAgBwC,EAAe,CACjD,GAAY,UAARhM,EAEF,YADAV,EAAOmE,KAAK,uBAAuBoK,KAIrCvO,EAAOmE,KAAK,wBAAwBoK,KAExB,SAAR7N,EACFV,EAAOmE,KAAK,sBAAsBoK,KAElCvO,EAAOmE,KAAK,sBAAsBoK,MCvBxC,IAAe/G,GAAA,CACbgH,QCPa,SAAiBtxB,EAAOojB,EAAOuN,EAAcE,EAAUU,GAapE,QAZc,IAAVvxB,IACFA,EAAQ,QAGI,IAAVojB,IACFA,EAAQvd,KAAKsd,OAAOC,YAGD,IAAjBuN,IACFA,GAAe,GAGI,iBAAV3wB,GAAuC,iBAAVA,EACtC,MAAM,IAAIwxB,MAAM,kFAAkFxxB,aAGpG,GAAqB,iBAAVA,EAAoB,CAK7B,MAAMyxB,EAAgBhK,SAASznB,EAAO,IAStC,IAFsB0xB,SAASD,GAG7B,MAAM,IAAID,MAAM,sEAAsExxB,aAKxFA,EAAQyxB,EAGV,MAAM3O,EAASjd,KACf,IAAI2lB,EAAaxrB,EACbwrB,EAAa,IAAGA,EAAa,GACjC,MAAMrI,OACJA,EAAMyF,SACNA,EAAQC,WACRA,EAAU2G,cACVA,EAAaxC,YACbA,EACA7E,aAAcC,EAAG/E,UACjBA,EAASxX,QACTA,GACEiX,EAEJ,GAAIA,EAAOgO,WAAa3N,EAAO4N,iCAAmCllB,IAAYglB,IAAaU,EACzF,OAAO,EAGT,MAAM3B,EAAO54B,KAAK4T,IAAIkY,EAAOK,OAAO8H,mBAAoBO,GACxD,IAAIO,EAAY6D,EAAO54B,KAAK8zB,OAAOU,EAAaoE,GAAQ9M,EAAOK,OAAO6H,gBAClEe,GAAanD,EAASzyB,SAAQ41B,EAAYnD,EAASzyB,OAAS,IAE3D62B,GAAe7J,EAAOwO,cAAgB,MAAQnC,GAAiB,IAAMmB,GACxE7N,EAAOmE,KAAK,0BAGd,MAAMhE,GAAa2F,EAASmD,GAI5B,GAFAjJ,EAAOiL,eAAe9K,GAElBE,EAAOwM,oBACT,IAAK,IAAI95B,EAAI,EAAGA,EAAIgzB,EAAW1yB,OAAQN,GAAK,EAAG,CAC7C,MAAM+7B,GAAuB56B,KAAK8zB,MAAkB,IAAZ7H,GAClC4O,EAAiB76B,KAAK8zB,MAAsB,IAAhBjC,EAAWhzB,IACvCi8B,EAAqB96B,KAAK8zB,MAA0B,IAApBjC,EAAWhzB,EAAI,SAEpB,IAAtBgzB,EAAWhzB,EAAI,GACpB+7B,GAAuBC,GAAkBD,EAAsBE,GAAsBA,EAAqBD,GAAkB,EAC9HrG,EAAa31B,EACJ+7B,GAAuBC,GAAkBD,EAAsBE,IACxEtG,EAAa31B,EAAI,GAEV+7B,GAAuBC,IAChCrG,EAAa31B,GAMnB,GAAIitB,EAAO+M,aAAerE,IAAewB,EAAa,CACpD,IAAKlK,EAAOiP,gBAAkB9O,EAAYH,EAAOG,WAAaA,EAAYH,EAAO4K,eAC/E,OAAO,EAGT,IAAK5K,EAAOkP,gBAAkB/O,EAAYH,EAAOG,WAAaA,EAAYH,EAAOoL,iBAC1ElB,GAAe,KAAOxB,EAAY,OAAO,EAIlD,IAAIjuB,EAGJ,GAF8BA,EAA1BiuB,EAAawB,EAAyB,OAAgBxB,EAAawB,EAAyB,OAAwB,QAEpH5E,IAAQnF,IAAcH,EAAOG,YAAcmF,GAAOnF,IAAcH,EAAOG,UAkBzE,OAjBAH,EAAOwM,kBAAkB9D,GAErBrI,EAAOoL,YACTzL,EAAO4J,mBAGT5J,EAAO0L,sBAEe,UAAlBrL,EAAO+H,QACTpI,EAAOwN,aAAarN,GAGJ,UAAd1lB,IACFulB,EAAOmP,gBAAgBtB,EAAcpzB,GACrCulB,EAAO1E,cAAcuS,EAAcpzB,KAG9B,EAGT,GAAI4lB,EAAO0G,QAAS,CAClB,MAAMoH,EAAMnO,EAAO0E,eACbpkB,EAAIglB,EAAMnF,GAAaA,EAE7B,GAAc,IAAVG,EAAa,CACf,MAAMkF,EAAYxF,EAAOyF,SAAWzF,EAAOK,OAAOoF,QAAQ1c,QAEtDyc,IACFxF,EAAOO,UAAUjlB,MAAMklB,eAAiB,OACxCR,EAAOoP,mBAAoB,GAG7B7O,EAAU4N,EAAM,aAAe,aAAe7tB,EAE1CklB,GACFha,uBAAsB,KACpBwU,EAAOO,UAAUjlB,MAAMklB,eAAiB,GACxCR,EAAOqP,yBAA0B,SAGhC,CACL,IAAKrP,EAAOmB,QAAQI,aAMlB,OALAxB,GAAqB,CACnBC,SACAC,eAAgB3f,EAChBpE,KAAMiyB,EAAM,OAAS,SAEhB,EAGT5N,EAAU9pB,SAAS,CACjB,CAAC03B,EAAM,OAAS,OAAQ7tB,EACxB8tB,SAAU,WAId,OAAO,EA+BT,OA5BApO,EAAO+J,cAAczJ,GACrBN,EAAOwN,aAAarN,GACpBH,EAAOwM,kBAAkB9D,GACzB1I,EAAO0L,sBACP1L,EAAOmE,KAAK,wBAAyB7D,EAAOyN,GAC5C/N,EAAOmP,gBAAgBtB,EAAcpzB,GAEvB,IAAV6lB,EACFN,EAAO1E,cAAcuS,EAAcpzB,GACzBulB,EAAOgO,YACjBhO,EAAOgO,WAAY,EAEdhO,EAAOsP,gCACVtP,EAAOsP,8BAAgC,SAAuBh9B,GACvD0tB,IAAUA,EAAOyD,WAClBnxB,EAAEoa,SAAW3J,OACjBid,EAAOmF,WAAW,GAAGpsB,oBAAoB,gBAAiBinB,EAAOsP,+BACjEtP,EAAOmF,WAAW,GAAGpsB,oBAAoB,sBAAuBinB,EAAOsP,+BACvEtP,EAAOsP,8BAAgC,YAChCtP,EAAOsP,8BACdtP,EAAO1E,cAAcuS,EAAcpzB,MAIvCulB,EAAOmF,WAAW,GAAGvsB,iBAAiB,gBAAiBonB,EAAOsP,+BAC9DtP,EAAOmF,WAAW,GAAGvsB,iBAAiB,sBAAuBonB,EAAOsP,iCAG/D,GDtLPC,YETa,SAAqBryB,EAAOojB,EAAOuN,EAAcE,QAChD,IAAV7wB,IACFA,EAAQ,QAGI,IAAVojB,IACFA,EAAQvd,KAAKsd,OAAOC,YAGD,IAAjBuN,IACFA,GAAe,GAGjB,MAAM7N,EAASjd,KACf,IAAIysB,EAAWtyB,EAMf,OAJI8iB,EAAOK,OAAO8L,OAChBqD,GAAYxP,EAAOyP,cAGdzP,EAAOwO,QAAQgB,EAAUlP,EAAOuN,EAAcE,IFVrD2B,UGTa,SAAmBpP,EAAOuN,EAAcE,QACvC,IAAVzN,IACFA,EAAQvd,KAAKsd,OAAOC,YAGD,IAAjBuN,IACFA,GAAe,GAGjB,MAAM7N,EAASjd,MACTirB,UACJA,EAASjlB,QACTA,EAAOsX,OACPA,GACEL,EACJ,IAAKjX,EAAS,OAAOiX,EACrB,IAAI2P,EAAWtP,EAAO6H,eAEO,SAAzB7H,EAAOiH,eAAsD,IAA1BjH,EAAO6H,gBAAwB7H,EAAOuP,qBAC3ED,EAAWz7B,KAAKC,IAAI6rB,EAAO6P,qBAAqB,WAAW,GAAO,IAGpE,MAAMC,EAAY9P,EAAOkK,YAAc7J,EAAO8H,mBAAqB,EAAIwH,EAEvE,GAAItP,EAAO8L,KAAM,CACf,GAAI6B,GAAa3N,EAAO0P,kBAAmB,OAAO,EAClD/P,EAAOgQ,UAEPhQ,EAAOiQ,YAAcjQ,EAAOmF,WAAW,GAAGnW,WAG5C,OAAIqR,EAAO6P,QAAUlQ,EAAOsL,MACnBtL,EAAOwO,QAAQ,EAAGlO,EAAOuN,EAAcE,GAGzC/N,EAAOwO,QAAQxO,EAAOkK,YAAc4F,EAAWxP,EAAOuN,EAAcE,IHzB3EoC,UIVa,SAAmB7P,EAAOuN,EAAcE,QACvC,IAAVzN,IACFA,EAAQvd,KAAKsd,OAAOC,YAGD,IAAjBuN,IACFA,GAAe,GAGjB,MAAM7N,EAASjd,MACTsd,OACJA,EAAM2N,UACNA,EAASlI,SACTA,EAAQC,WACRA,EAAUV,aACVA,EAAYtc,QACZA,GACEiX,EACJ,IAAKjX,EAAS,OAAOiX,EAErB,GAAIK,EAAO8L,KAAM,CACf,GAAI6B,GAAa3N,EAAO0P,kBAAmB,OAAO,EAClD/P,EAAOgQ,UAEPhQ,EAAOiQ,YAAcjQ,EAAOmF,WAAW,GAAGnW,WAK5C,SAASohB,EAAUC,GACjB,OAAIA,EAAM,GAAWn8B,KAAK8zB,MAAM9zB,KAAKgB,IAAIm7B,IAClCn8B,KAAK8zB,MAAMqI,GAGpB,MAAMvB,EAAsBsB,EAPV/K,EAAerF,EAAOG,WAAaH,EAAOG,WAQtDmQ,EAAqBxK,EAASjoB,KAAIwyB,GAAOD,EAAUC,KACzD,IAAIE,EAAWzK,EAASwK,EAAmB/9B,QAAQu8B,GAAuB,GAE1E,QAAwB,IAAbyB,GAA4BlQ,EAAO0G,QAAS,CACrD,IAAIyJ,EACJ1K,EAASrtB,SAAQ,CAACuN,EAAMijB,KAClB6F,GAAuB9oB,IAEzBwqB,EAAgBvH,WAIS,IAAlBuH,IACTD,EAAWzK,EAAS0K,EAAgB,EAAIA,EAAgB,EAAIA,IAIhE,IAAIC,EAAY,EAYhB,QAVwB,IAAbF,IACTE,EAAY1K,EAAWxzB,QAAQg+B,GAC3BE,EAAY,IAAGA,EAAYzQ,EAAOkK,YAAc,GAEvB,SAAzB7J,EAAOiH,eAAsD,IAA1BjH,EAAO6H,gBAAwB7H,EAAOuP,qBAC3Ea,EAAYA,EAAYzQ,EAAO6P,qBAAqB,YAAY,GAAQ,EACxEY,EAAYv8B,KAAKC,IAAIs8B,EAAW,KAIhCpQ,EAAO6P,QAAUlQ,EAAOqL,YAAa,CACvC,MAAMqF,EAAY1Q,EAAOK,OAAOoF,SAAWzF,EAAOK,OAAOoF,QAAQ1c,SAAWiX,EAAOyF,QAAUzF,EAAOyF,QAAQE,OAAOtyB,OAAS,EAAI2sB,EAAO2F,OAAOtyB,OAAS,EACvJ,OAAO2sB,EAAOwO,QAAQkC,EAAWpQ,EAAOuN,EAAcE,GAGxD,OAAO/N,EAAOwO,QAAQiC,EAAWnQ,EAAOuN,EAAcE,IJ1DtD4C,WKXa,SAAoBrQ,EAAOuN,EAAcE,GAUtD,YATc,IAAVzN,IACFA,EAAQvd,KAAKsd,OAAOC,YAGD,IAAjBuN,IACFA,GAAe,GAGF9qB,KACDyrB,QADCzrB,KACcmnB,YAAa5J,EAAOuN,EAAcE,ILE/D6C,eMZa,SAAwBtQ,EAAOuN,EAAcE,EAAUzd,QACtD,IAAVgQ,IACFA,EAAQvd,KAAKsd,OAAOC,YAGD,IAAjBuN,IACFA,GAAe,QAGC,IAAdvd,IACFA,EAAY,IAGd,MAAM0P,EAASjd,KACf,IAAI7F,EAAQ8iB,EAAOkK,YACnB,MAAM4C,EAAO54B,KAAK4T,IAAIkY,EAAOK,OAAO8H,mBAAoBjrB,GAClD+rB,EAAY6D,EAAO54B,KAAK8zB,OAAO9qB,EAAQ4vB,GAAQ9M,EAAOK,OAAO6H,gBAC7D/H,EAAYH,EAAOqF,aAAerF,EAAOG,WAAaH,EAAOG,UAEnE,GAAIA,GAAaH,EAAO8F,SAASmD,GAAY,CAG3C,MAAM4H,EAAc7Q,EAAO8F,SAASmD,GAGhC9I,EAAY0Q,GAFC7Q,EAAO8F,SAASmD,EAAY,GAEH4H,GAAevgB,IACvDpT,GAAS8iB,EAAOK,OAAO6H,oBAEpB,CAGL,MAAMqI,EAAWvQ,EAAO8F,SAASmD,EAAY,GAGzC9I,EAAYoQ,IAFIvQ,EAAO8F,SAASmD,GAEOsH,GAAYjgB,IACrDpT,GAAS8iB,EAAOK,OAAO6H,gBAM3B,OAFAhrB,EAAQhJ,KAAKC,IAAI+I,EAAO,GACxBA,EAAQhJ,KAAK4T,IAAI5K,EAAO8iB,EAAO+F,WAAW1yB,OAAS,GAC5C2sB,EAAOwO,QAAQtxB,EAAOojB,EAAOuN,EAAcE,IN5BlDV,oBOZa,WACb,MAAMrN,EAASjd,MACTsd,OACJA,EAAM8E,WACNA,GACEnF,EACEsH,EAAyC,SAAzBjH,EAAOiH,cAA2BtH,EAAO6P,uBAAyBxP,EAAOiH,cAC/F,IACIqE,EADAmF,EAAe9Q,EAAOoN,aAG1B,GAAI/M,EAAO8L,KAAM,CACf,GAAInM,EAAOgO,UAAW,OACtBrC,EAAYhH,SAAS7M,GAAEkI,EAAOmN,cAAcjU,KAAK,2BAA4B,IAEzEmH,EAAOyG,eACLgK,EAAe9Q,EAAOyP,aAAenI,EAAgB,GAAKwJ,EAAe9Q,EAAO2F,OAAOtyB,OAAS2sB,EAAOyP,aAAenI,EAAgB,GACxItH,EAAOgQ,UACPc,EAAe3L,EAAWzpB,SAAS,IAAI2kB,EAAOuF,uCAAuC+F,YAAoBtL,EAAO+L,wBAAwB3P,GAAG,GAAGvf,QAC9I2gB,IAAS,KACPmC,EAAOwO,QAAQsC,OAGjB9Q,EAAOwO,QAAQsC,GAERA,EAAe9Q,EAAO2F,OAAOtyB,OAASi0B,GAC/CtH,EAAOgQ,UACPc,EAAe3L,EAAWzpB,SAAS,IAAI2kB,EAAOuF,uCAAuC+F,YAAoBtL,EAAO+L,wBAAwB3P,GAAG,GAAGvf,QAC9I2gB,IAAS,KACPmC,EAAOwO,QAAQsC,OAGjB9Q,EAAOwO,QAAQsC,QAGjB9Q,EAAOwO,QAAQsC,KCjCnB,IAAe3E,GAAA,CACb4E,WCFa,WACb,MAAM/Q,EAASjd,KACTmI,EAAW6K,MACXsK,OACJA,EAAM8E,WACNA,GACEnF,EAEEgR,EAAY7L,EAAWzpB,WAAWrI,OAAS,EAAIykB,GAAEqN,EAAWzpB,WAAW,GAAGkE,YAAculB,EAC9F6L,EAAUt1B,SAAS,IAAI2kB,EAAOuF,cAAcvF,EAAO+L,uBAAuB/a,SAC1E,IAAIsU,EAASqL,EAAUt1B,SAAS,IAAI2kB,EAAOuF,cAE3C,GAAIvF,EAAO4Q,uBAAwB,CACjC,MAAMC,EAAiB7Q,EAAO6H,eAAiBvC,EAAOtyB,OAASgtB,EAAO6H,eAEtE,GAAIgJ,IAAmB7Q,EAAO6H,eAAgB,CAC5C,IAAK,IAAIn1B,EAAI,EAAGA,EAAIm+B,EAAgBn+B,GAAK,EAAG,CAC1C,MAAMo+B,EAAYrZ,GAAE5M,EAAStQ,cAAc,QAAQ+d,SAAS,GAAG0H,EAAOuF,cAAcvF,EAAO+Q,mBAC3FJ,EAAUrU,OAAOwU,GAGnBxL,EAASqL,EAAUt1B,SAAS,IAAI2kB,EAAOuF,eAId,SAAzBvF,EAAOiH,eAA6BjH,EAAOoP,eAAcpP,EAAOoP,aAAe9J,EAAOtyB,QAC1F2sB,EAAOyP,aAAev7B,KAAK+V,KAAK7P,WAAWimB,EAAOoP,cAAgBpP,EAAOiH,cAAe,KACxFtH,EAAOyP,cAAgBpP,EAAOgR,qBAE1BrR,EAAOyP,aAAe9J,EAAOtyB,SAC/B2sB,EAAOyP,aAAe9J,EAAOtyB,QAG/B,MAAMi+B,EAAgB,GAChBC,EAAe,GACrB5L,EAAO1J,MAAK,CAACrR,EAAI1N,KACf,MAAMsqB,EAAQ1P,GAAElN,GAEZ1N,EAAQ8iB,EAAOyP,cACjB8B,EAAar+B,KAAK0X,GAGhB1N,EAAQyoB,EAAOtyB,QAAU6J,GAASyoB,EAAOtyB,OAAS2sB,EAAOyP,cAC3D6B,EAAcp+B,KAAK0X,GAGrB4c,EAAMtO,KAAK,0BAA2Bhc,MAGxC,IAAK,IAAInK,EAAI,EAAGA,EAAIw+B,EAAal+B,OAAQN,GAAK,EAC5Ci+B,EAAUrU,OAAO7E,GAAEyZ,EAAax+B,GAAGy+B,WAAU,IAAO7Y,SAAS0H,EAAO+L,sBAGtE,IAAK,IAAIr5B,EAAIu+B,EAAcj+B,OAAS,EAAGN,GAAK,EAAGA,GAAK,EAClDi+B,EAAUhU,QAAQlF,GAAEwZ,EAAcv+B,GAAGy+B,WAAU,IAAO7Y,SAAS0H,EAAO+L,uBDnDxE4D,QELa,WACb,MAAMhQ,EAASjd,KACfid,EAAOmE,KAAK,iBACZ,MAAM+F,YACJA,EAAWvE,OACXA,EAAM8J,aACNA,EAAYP,eACZA,EAAcD,eACdA,EAAcnJ,SACdA,EACAT,aAAcC,GACZtF,EACJ,IAAIwP,EACJxP,EAAOkP,gBAAiB,EACxBlP,EAAOiP,gBAAiB,EACxB,MACMwC,GADiB3L,EAASoE,GACHlK,EAAOlC,eAEpC,GAAIoM,EAAcuF,EAAc,CAC9BD,EAAW7J,EAAOtyB,OAAwB,EAAfo8B,EAAmBvF,EAC9CsF,GAAYC,EACSzP,EAAOwO,QAAQgB,EAAU,GAAG,GAAO,IAE3B,IAATiC,GAClBzR,EAAOwN,cAAclI,GAAOtF,EAAOG,UAAYH,EAAOG,WAAasR,QAEhE,GAAIvH,GAAevE,EAAOtyB,OAASo8B,EAAc,CAEtDD,GAAY7J,EAAOtyB,OAAS62B,EAAcuF,EAC1CD,GAAYC,EACSzP,EAAOwO,QAAQgB,EAAU,GAAG,GAAO,IAE3B,IAATiC,GAClBzR,EAAOwN,cAAclI,GAAOtF,EAAOG,UAAYH,EAAOG,WAAasR,GAIvEzR,EAAOkP,eAAiBA,EACxBlP,EAAOiP,eAAiBA,EACxBjP,EAAOmE,KAAK,YFjCZuN,YGNa,WACb,MACMvM,WACJA,EAAU9E,OACVA,EAAMsF,OACNA,GAJa5iB,KAMfoiB,EAAWzpB,SAAS,IAAI2kB,EAAOuF,cAAcvF,EAAO+L,wBAAwB/L,EAAOuF,cAAcvF,EAAO+Q,mBAAmB/f,SAC3HsU,EAAOtM,WAAW,6BCgBL,SAASsY,GAAa9f,GACnC,MAAMmO,EAASjd,KACTmI,EAAW6K,KACX7jB,EAAS6kB,KACTxO,EAAOyX,EAAO4R,iBACdvR,OACJA,EAAMwR,QACNA,EAAO9oB,QACPA,GACEiX,EACJ,IAAKjX,EAAS,OAEd,GAAIiX,EAAOgO,WAAa3N,EAAO4N,+BAC7B,QAGGjO,EAAOgO,WAAa3N,EAAO0G,SAAW1G,EAAO8L,MAChDnM,EAAOgQ,UAGT,IAAI19B,EAAIuf,EACJvf,EAAEw/B,gBAAex/B,EAAIA,EAAEw/B,eAC3B,IAAIC,EAAYja,GAAExlB,EAAEoa,QAEpB,GAAiC,YAA7B2T,EAAO2R,oBACJD,EAAUtU,QAAQuC,EAAOO,WAAWltB,OAAQ,OAInD,GADAkV,EAAK0pB,aAA0B,eAAX3/B,EAAEoG,MACjB6P,EAAK0pB,cAAgB,UAAW3/B,GAAiB,IAAZA,EAAE4/B,MAAa,OACzD,IAAK3pB,EAAK0pB,cAAgB,WAAY3/B,GAAKA,EAAE6/B,OAAS,EAAG,OACzD,GAAI5pB,EAAK6pB,WAAa7pB,EAAK8pB,QAAS,SAELhS,EAAOiS,gBAA4C,KAA1BjS,EAAOiS,gBAEnChgC,EAAEoa,QAAUpa,EAAEoa,OAAO6lB,YAAc1gB,EAAM2gB,MAAQ3gB,EAAM2gB,KAAK,KACtFT,EAAYja,GAAEjG,EAAM2gB,KAAK,KAG3B,MAAMC,EAAoBpS,EAAOoS,kBAAoBpS,EAAOoS,kBAAoB,IAAIpS,EAAOiS,iBACrFI,KAAoBpgC,EAAEoa,SAAUpa,EAAEoa,OAAO6lB,YAE/C,GAAIlS,EAAOsS,YAAcD,EA9D3B,SAAwB3a,EAAU6a,GAiBhC,YAhBa,IAATA,IACFA,EAAO7vB,MAGT,SAAS8vB,EAAcjoB,GACrB,IAAKA,GAAMA,IAAOmL,MAAiBnL,IAAOmM,KAAa,OAAO,KAC1DnM,EAAGkoB,eAAcloB,EAAKA,EAAGkoB,cAC7B,MAAMlV,EAAQhT,EAAG6S,QAAQ1F,GAEzB,OAAK6F,GAAUhT,EAAGmoB,YAIXnV,GAASiV,EAAcjoB,EAAGmoB,cAActd,MAHtC,KAMJod,CAAcD,GA6CqBI,CAAeP,EAAmBV,EAAU,IAAMA,EAAUtU,QAAQgV,GAAmB,IAE/H,YADAzS,EAAOiT,YAAa,GAItB,GAAI5S,EAAO6S,eACJnB,EAAUtU,QAAQ4C,EAAO6S,cAAc,GAAI,OAGlDrB,EAAQsB,SAAsB,eAAX7gC,EAAEoG,KAAwBpG,EAAE8gC,cAAc,GAAGC,MAAQ/gC,EAAE+gC,MAC1ExB,EAAQyB,SAAsB,eAAXhhC,EAAEoG,KAAwBpG,EAAE8gC,cAAc,GAAGG,MAAQjhC,EAAEihC,MAC1E,MAAMC,EAAS3B,EAAQsB,SACjBM,EAAS5B,EAAQyB,SAEjBI,EAAqBrT,EAAOqT,oBAAsBrT,EAAOsT,sBACzDC,EAAqBvT,EAAOuT,oBAAsBvT,EAAOwT,sBAE/D,GAAIH,IAAuBF,GAAUI,GAAsBJ,GAAUthC,EAAOuB,WAAamgC,GAAqB,CAC5G,GAA2B,YAAvBF,EAGF,OAFA7hB,EAAMC,iBAqBV,GAfAyC,OAAOsQ,OAAOtc,EAAM,CAClB6pB,WAAW,EACXC,SAAS,EACTyB,qBAAqB,EACrBtmB,iBAAa+M,EACbwZ,iBAAaxZ,IAEfsX,EAAQ2B,OAASA,EACjB3B,EAAQ4B,OAASA,EACjBlrB,EAAKyrB,eAAiBriC,KACtBquB,EAAOiT,YAAa,EACpBjT,EAAOsE,aACPtE,EAAOiU,oBAAiB1Z,EACpB8F,EAAO/P,UAAY,IAAG/H,EAAK2rB,oBAAqB,GAErC,eAAX5hC,EAAEoG,KAAuB,CAC3B,IAAIoZ,GAAiB,EAEjBigB,EAAU5X,GAAG5R,EAAK4rB,qBACpBriB,GAAiB,EAEa,WAA1BigB,EAAU,GAAGhd,WACfxM,EAAK6pB,WAAY,IAIjBlnB,EAAS2J,eAAiBiD,GAAE5M,EAAS2J,eAAesF,GAAG5R,EAAK4rB,oBAAsBjpB,EAAS2J,gBAAkBkd,EAAU,IACzH7mB,EAAS2J,cAAcC,OAGzB,MAAMsf,EAAuBtiB,GAAkBkO,EAAOqU,gBAAkBhU,EAAOiU,0BAE1EjU,EAAOkU,gCAAiCH,GAA0BrC,EAAU,GAAGyC,mBAClFliC,EAAEwf,iBAIFkO,EAAOK,OAAOoU,UAAYzU,EAAOK,OAAOoU,SAAS1rB,SAAWiX,EAAOyU,UAAYzU,EAAOgO,YAAc3N,EAAO0G,SAC7G/G,EAAOyU,SAAS9C,eAGlB3R,EAAOmE,KAAK,aAAc7xB,GCjIb,SAASoiC,GAAY7iB,GAClC,MAAM3G,EAAW6K,KACXiK,EAASjd,KACTwF,EAAOyX,EAAO4R,iBACdvR,OACJA,EAAMwR,QACNA,EACAxM,aAAcC,EAAGvc,QACjBA,GACEiX,EACJ,IAAKjX,EAAS,OACd,IAAIzW,EAAIuf,EAGR,GAFIvf,EAAEw/B,gBAAex/B,EAAIA,EAAEw/B,gBAEtBvpB,EAAK6pB,UAKR,YAJI7pB,EAAKwrB,aAAexrB,EAAKiF,aAC3BwS,EAAOmE,KAAK,oBAAqB7xB,IAMrC,GAAIiW,EAAK0pB,cAA2B,cAAX3/B,EAAEoG,KAAsB,OACjD,MAAMi8B,EAAyB,cAAXriC,EAAEoG,MAAwBpG,EAAE8gC,gBAAkB9gC,EAAE8gC,cAAc,IAAM9gC,EAAEsiC,eAAe,IACnGvB,EAAmB,cAAX/gC,EAAEoG,KAAuBi8B,EAAYtB,MAAQ/gC,EAAE+gC,MACvDE,EAAmB,cAAXjhC,EAAEoG,KAAuBi8B,EAAYpB,MAAQjhC,EAAEihC,MAE7D,GAAIjhC,EAAEuiC,wBAGJ,OAFAhD,EAAQ2B,OAASH,OACjBxB,EAAQ4B,OAASF,GAInB,IAAKvT,EAAOqU,eAeV,OAdKvc,GAAExlB,EAAEoa,QAAQyN,GAAG5R,EAAK4rB,qBACvBnU,EAAOiT,YAAa,QAGlB1qB,EAAK6pB,YACP7d,OAAOsQ,OAAOgN,EAAS,CACrB2B,OAAQH,EACRI,OAAQF,EACRJ,SAAUE,EACVC,SAAUC,IAEZhrB,EAAKyrB,eAAiBriC,OAM1B,GAAI4W,EAAK0pB,cAAgB5R,EAAOyU,sBAAwBzU,EAAO8L,KAC7D,GAAInM,EAAO3W,cAET,GAAIkqB,EAAQ1B,EAAQ4B,QAAUzT,EAAOG,WAAaH,EAAOoL,gBAAkBmI,EAAQ1B,EAAQ4B,QAAUzT,EAAOG,WAAaH,EAAO4K,eAG9H,OAFAriB,EAAK6pB,WAAY,OACjB7pB,EAAK8pB,SAAU,QAGZ,GAAIgB,EAAQxB,EAAQ2B,QAAUxT,EAAOG,WAAaH,EAAOoL,gBAAkBiI,EAAQxB,EAAQ2B,QAAUxT,EAAOG,WAAaH,EAAO4K,eACrI,OAIJ,GAAIriB,EAAK0pB,cAAgB/mB,EAAS2J,eAC5BviB,EAAEoa,SAAWxB,EAAS2J,eAAiBiD,GAAExlB,EAAEoa,QAAQyN,GAAG5R,EAAK4rB,mBAG7D,OAFA5rB,EAAK8pB,SAAU,OACfrS,EAAOiT,YAAa,GASxB,GAJI1qB,EAAKurB,qBACP9T,EAAOmE,KAAK,YAAa7xB,GAGvBA,EAAE8gC,eAAiB9gC,EAAE8gC,cAAc//B,OAAS,EAAG,OACnDw+B,EAAQsB,SAAWE,EACnBxB,EAAQyB,SAAWC,EACnB,MAAMwB,EAAQlD,EAAQsB,SAAWtB,EAAQ2B,OACnCwB,EAAQnD,EAAQyB,SAAWzB,EAAQ4B,OACzC,GAAIzT,EAAOK,OAAO/P,WAAapc,KAAK+gC,KAAKF,GAAS,EAAIC,GAAS,GAAKhV,EAAOK,OAAO/P,UAAW,OAE7F,QAAgC,IAArB/H,EAAKiF,YAA6B,CAC3C,IAAI0nB,EAEAlV,EAAO0E,gBAAkBmN,EAAQyB,WAAazB,EAAQ4B,QAAUzT,EAAO3W,cAAgBwoB,EAAQsB,WAAatB,EAAQ2B,OACtHjrB,EAAKiF,aAAc,EAGfunB,EAAQA,EAAQC,EAAQA,GAAS,KACnCE,EAA4D,IAA/ChhC,KAAKihC,MAAMjhC,KAAKgB,IAAI8/B,GAAQ9gC,KAAKgB,IAAI6/B,IAAgB7gC,KAAK+sB,GACvE1Y,EAAKiF,YAAcwS,EAAO0E,eAAiBwQ,EAAa7U,EAAO6U,WAAa,GAAKA,EAAa7U,EAAO6U,YAe3G,GAVI3sB,EAAKiF,aACPwS,EAAOmE,KAAK,oBAAqB7xB,QAGH,IAArBiW,EAAKwrB,cACVlC,EAAQsB,WAAatB,EAAQ2B,QAAU3B,EAAQyB,WAAazB,EAAQ4B,SACtElrB,EAAKwrB,aAAc,IAInBxrB,EAAKiF,YAEP,YADAjF,EAAK6pB,WAAY,GAInB,IAAK7pB,EAAKwrB,YACR,OAGF/T,EAAOiT,YAAa,GAEf5S,EAAO0G,SAAWz0B,EAAE6oB,YACvB7oB,EAAEwf,iBAGAuO,EAAO+U,2BAA6B/U,EAAOgV,QAC7C/iC,EAAEgjC,kBAGC/sB,EAAK8pB,UACJhS,EAAO8L,OAAS9L,EAAO0G,SACzB/G,EAAOgQ,UAGTznB,EAAKgtB,eAAiBvV,EAAOlC,eAC7BkC,EAAO+J,cAAc,GAEjB/J,EAAOgO,WACThO,EAAOmF,WAAWjnB,QAAQ,qCAG5BqK,EAAKitB,qBAAsB,GAEvBnV,EAAOoV,aAAyC,IAA1BzV,EAAOiP,iBAAqD,IAA1BjP,EAAOkP,gBACjElP,EAAO0V,eAAc,GAGvB1V,EAAOmE,KAAK,kBAAmB7xB,IAGjC0tB,EAAOmE,KAAK,aAAc7xB,GAC1BiW,EAAK8pB,SAAU,EACf,IAAIZ,EAAOzR,EAAO0E,eAAiBqQ,EAAQC,EAC3CnD,EAAQJ,KAAOA,EACfA,GAAQpR,EAAOsV,WACXrQ,IAAKmM,GAAQA,GACjBzR,EAAOiU,eAAiBxC,EAAO,EAAI,OAAS,OAC5ClpB,EAAKglB,iBAAmBkE,EAAOlpB,EAAKgtB,eACpC,IAAIK,GAAsB,EACtBC,EAAkBxV,EAAOwV,gBAgC7B,GA9BIxV,EAAOyU,sBACTe,EAAkB,GAGhBpE,EAAO,GAAKlpB,EAAKglB,iBAAmBvN,EAAO4K,gBAC7CgL,GAAsB,EAClBvV,EAAOyV,aAAYvtB,EAAKglB,iBAAmBvN,EAAO4K,eAAiB,IAAM5K,EAAO4K,eAAiBriB,EAAKgtB,eAAiB9D,IAASoE,IAC3HpE,EAAO,GAAKlpB,EAAKglB,iBAAmBvN,EAAOoL,iBACpDwK,GAAsB,EAClBvV,EAAOyV,aAAYvtB,EAAKglB,iBAAmBvN,EAAOoL,eAAiB,GAAKpL,EAAOoL,eAAiB7iB,EAAKgtB,eAAiB9D,IAASoE,IAGjID,IACFtjC,EAAEuiC,yBAA0B,IAIzB7U,EAAOiP,gBAA4C,SAA1BjP,EAAOiU,gBAA6B1rB,EAAKglB,iBAAmBhlB,EAAKgtB,iBAC7FhtB,EAAKglB,iBAAmBhlB,EAAKgtB,iBAG1BvV,EAAOkP,gBAA4C,SAA1BlP,EAAOiU,gBAA6B1rB,EAAKglB,iBAAmBhlB,EAAKgtB,iBAC7FhtB,EAAKglB,iBAAmBhlB,EAAKgtB,gBAG1BvV,EAAOkP,gBAAmBlP,EAAOiP,iBACpC1mB,EAAKglB,iBAAmBhlB,EAAKgtB,gBAI3BlV,EAAO/P,UAAY,EAAG,CACxB,KAAIpc,KAAKgB,IAAIu8B,GAAQpR,EAAO/P,WAAa/H,EAAK2rB,oBAW5C,YADA3rB,EAAKglB,iBAAmBhlB,EAAKgtB,gBAT7B,IAAKhtB,EAAK2rB,mBAMR,OALA3rB,EAAK2rB,oBAAqB,EAC1BrC,EAAQ2B,OAAS3B,EAAQsB,SACzBtB,EAAQ4B,OAAS5B,EAAQyB,SACzB/qB,EAAKglB,iBAAmBhlB,EAAKgtB,oBAC7B1D,EAAQJ,KAAOzR,EAAO0E,eAAiBmN,EAAQsB,SAAWtB,EAAQ2B,OAAS3B,EAAQyB,SAAWzB,EAAQ4B,QASvGpT,EAAO0V,eAAgB1V,EAAO0G,WAE/B1G,EAAOoU,UAAYpU,EAAOoU,SAAS1rB,SAAWiX,EAAOyU,UAAYpU,EAAOiJ,uBAC1EtJ,EAAOwM,oBACPxM,EAAO0L,uBAGL1L,EAAOK,OAAOoU,UAAYpU,EAAOoU,SAAS1rB,SAAWiX,EAAOyU,UAC9DzU,EAAOyU,SAASC,cAIlB1U,EAAOiL,eAAe1iB,EAAKglB,kBAE3BvN,EAAOwN,aAAajlB,EAAKglB,mBC5NZ,SAASyI,GAAWnkB,GACjC,MAAMmO,EAASjd,KACTwF,EAAOyX,EAAO4R,iBACdvR,OACJA,EAAMwR,QACNA,EACAxM,aAAcC,EAAGS,WACjBA,EAAUhd,QACVA,GACEiX,EACJ,IAAKjX,EAAS,OACd,IAAIzW,EAAIuf,EASR,GARIvf,EAAEw/B,gBAAex/B,EAAIA,EAAEw/B,eAEvBvpB,EAAKurB,qBACP9T,EAAOmE,KAAK,WAAY7xB,GAG1BiW,EAAKurB,qBAAsB,GAEtBvrB,EAAK6pB,UAOR,OANI7pB,EAAK8pB,SAAWhS,EAAOoV,YACzBzV,EAAO0V,eAAc,GAGvBntB,EAAK8pB,SAAU,OACf9pB,EAAKwrB,aAAc,GAKjB1T,EAAOoV,YAAcltB,EAAK8pB,SAAW9pB,EAAK6pB,aAAwC,IAA1BpS,EAAOiP,iBAAqD,IAA1BjP,EAAOkP,iBACnGlP,EAAO0V,eAAc,GAIvB,MAAMO,EAAetkC,KACfukC,EAAWD,EAAe1tB,EAAKyrB,eAErC,GAAIhU,EAAOiT,WAAY,CACrB,MAAMkD,EAAW7jC,EAAEkgC,MAAQlgC,EAAE8jC,cAAgB9jC,EAAE8jC,eAC/CpW,EAAOiN,mBAAmBkJ,GAAYA,EAAS,IAAM7jC,EAAEoa,QACvDsT,EAAOmE,KAAK,YAAa7xB,GAErB4jC,EAAW,KAAOD,EAAe1tB,EAAK8tB,cAAgB,KACxDrW,EAAOmE,KAAK,wBAAyB7xB,GASzC,GALAiW,EAAK8tB,cAAgB1kC,KACrBksB,IAAS,KACFmC,EAAOyD,YAAWzD,EAAOiT,YAAa,OAGxC1qB,EAAK6pB,YAAc7pB,EAAK8pB,UAAYrS,EAAOiU,gBAAmC,IAAjBpC,EAAQJ,MAAclpB,EAAKglB,mBAAqBhlB,EAAKgtB,eAIrH,OAHAhtB,EAAK6pB,WAAY,EACjB7pB,EAAK8pB,SAAU,OACf9pB,EAAKwrB,aAAc,GAOrB,IAAIuC,EAQJ,GAXA/tB,EAAK6pB,WAAY,EACjB7pB,EAAK8pB,SAAU,EACf9pB,EAAKwrB,aAAc,EAIjBuC,EADEjW,EAAO0V,aACIzQ,EAAMtF,EAAOG,WAAaH,EAAOG,WAEhC5X,EAAKglB,iBAGjBlN,EAAO0G,QACT,OAGF,GAAI/G,EAAOK,OAAOoU,UAAYpU,EAAOoU,SAAS1rB,QAI5C,YAHAiX,EAAOyU,SAASuB,WAAW,CACzBM,eAMJ,IAAIC,EAAY,EACZC,EAAYxW,EAAOgG,gBAAgB,GAEvC,IAAK,IAAIjzB,EAAI,EAAGA,EAAIgzB,EAAW1yB,OAAQN,GAAKA,EAAIstB,EAAO8H,mBAAqB,EAAI9H,EAAO6H,eAAgB,CACrG,MAAM4H,EAAY/8B,EAAIstB,EAAO8H,mBAAqB,EAAI,EAAI9H,EAAO6H,oBAExB,IAA9BnC,EAAWhzB,EAAI+8B,GACpBwG,GAAcvQ,EAAWhzB,IAAMujC,EAAavQ,EAAWhzB,EAAI+8B,KAC7DyG,EAAYxjC,EACZyjC,EAAYzQ,EAAWhzB,EAAI+8B,GAAa/J,EAAWhzB,IAE5CujC,GAAcvQ,EAAWhzB,KAClCwjC,EAAYxjC,EACZyjC,EAAYzQ,EAAWA,EAAW1yB,OAAS,GAAK0yB,EAAWA,EAAW1yB,OAAS,IAInF,IAAIojC,EAAmB,KACnBC,EAAkB,KAElBrW,EAAO6P,SACLlQ,EAAOqL,YACTqL,EAAkB1W,EAAOK,OAAOoF,SAAWzF,EAAOK,OAAOoF,QAAQ1c,SAAWiX,EAAOyF,QAAUzF,EAAOyF,QAAQE,OAAOtyB,OAAS,EAAI2sB,EAAO2F,OAAOtyB,OAAS,EAC9I2sB,EAAOsL,QAChBmL,EAAmB,IAKvB,MAAMh0B,GAAS6zB,EAAavQ,EAAWwQ,IAAcC,EAC/C1G,EAAYyG,EAAYlW,EAAO8H,mBAAqB,EAAI,EAAI9H,EAAO6H,eAEzE,GAAIgO,EAAW7V,EAAOsW,aAAc,CAElC,IAAKtW,EAAOuW,WAEV,YADA5W,EAAOwO,QAAQxO,EAAOkK,aAIM,SAA1BlK,EAAOiU,iBACLxxB,GAAS4d,EAAOwW,gBAAiB7W,EAAOwO,QAAQnO,EAAO6P,QAAUlQ,EAAOsL,MAAQmL,EAAmBF,EAAYzG,GAAgB9P,EAAOwO,QAAQ+H,IAGtH,SAA1BvW,EAAOiU,iBACLxxB,EAAQ,EAAI4d,EAAOwW,gBACrB7W,EAAOwO,QAAQ+H,EAAYzG,GACE,OAApB4G,GAA4Bj0B,EAAQ,GAAKvO,KAAKgB,IAAIuN,GAAS4d,EAAOwW,gBAC3E7W,EAAOwO,QAAQkI,GAEf1W,EAAOwO,QAAQ+H,QAGd,CAEL,IAAKlW,EAAOyW,YAEV,YADA9W,EAAOwO,QAAQxO,EAAOkK,aAIElK,EAAO+W,aAAezkC,EAAEoa,SAAWsT,EAAO+W,WAAWC,QAAU1kC,EAAEoa,SAAWsT,EAAO+W,WAAWE,QAU7G3kC,EAAEoa,SAAWsT,EAAO+W,WAAWC,OACxChX,EAAOwO,QAAQ+H,EAAYzG,GAE3B9P,EAAOwO,QAAQ+H,IAVe,SAA1BvW,EAAOiU,gBACTjU,EAAOwO,QAA6B,OAArBiI,EAA4BA,EAAmBF,EAAYzG,GAG9C,SAA1B9P,EAAOiU,gBACTjU,EAAOwO,QAA4B,OAApBkI,EAA2BA,EAAkBH,KCxJrD,SAASW,KACtB,MAAMlX,EAASjd,MACTsd,OACJA,EAAMzV,GACNA,GACEoV,EACJ,GAAIpV,GAAyB,IAAnBA,EAAGzP,YAAmB,OAE5BklB,EAAOkH,aACTvH,EAAOmX,gBAIT,MAAMlI,eACJA,EAAcC,eACdA,EAAcpJ,SACdA,GACE9F,EAEJA,EAAOiP,gBAAiB,EACxBjP,EAAOkP,gBAAiB,EACxBlP,EAAOsE,aACPtE,EAAO8E,eACP9E,EAAO0L,uBAEuB,SAAzBrL,EAAOiH,eAA4BjH,EAAOiH,cAAgB,IAAMtH,EAAOsL,QAAUtL,EAAOqL,cAAgBrL,EAAOK,OAAOyG,eACzH9G,EAAOwO,QAAQxO,EAAO2F,OAAOtyB,OAAS,EAAG,GAAG,GAAO,GAEnD2sB,EAAOwO,QAAQxO,EAAOkK,YAAa,GAAG,GAAO,GAG3ClK,EAAOoX,UAAYpX,EAAOoX,SAASC,SAAWrX,EAAOoX,SAASllB,QAChE8N,EAAOoX,SAASE,MAIlBtX,EAAOkP,eAAiBA,EACxBlP,EAAOiP,eAAiBA,EAEpBjP,EAAOK,OAAO+I,eAAiBtD,IAAa9F,EAAO8F,UACrD9F,EAAOqJ,gBCxCI,SAASkO,GAAQjlC,GAC9B,MAAM0tB,EAASjd,KACVid,EAAOjX,UAEPiX,EAAOiT,aACNjT,EAAOK,OAAOmX,eAAellC,EAAEwf,iBAE/BkO,EAAOK,OAAOoX,0BAA4BzX,EAAOgO,YACnD17B,EAAEgjC,kBACFhjC,EAAEolC,8BCTO,SAASC,KACtB,MAAM3X,EAASjd,MACTwd,UACJA,EAAS8E,aACTA,EAAYtc,QACZA,GACEiX,EACJ,IAAKjX,EAAS,OAad,IAAI2kB,EAZJ1N,EAAO2N,kBAAoB3N,EAAOG,UAE9BH,EAAO0E,eACT1E,EAAOG,WAAaI,EAAUtR,WAE9B+Q,EAAOG,WAAaI,EAAUxR,UAIP,IAArBiR,EAAOG,YAAiBH,EAAOG,UAAY,GAC/CH,EAAOwM,oBACPxM,EAAO0L,sBAEP,MAAMP,EAAiBnL,EAAOoL,eAAiBpL,EAAO4K,eAGpD8C,EADqB,IAAnBvC,EACY,GAECnL,EAAOG,UAAYH,EAAO4K,gBAAkBO,EAGzDuC,IAAgB1N,EAAOjoB,UACzBioB,EAAOiL,eAAe5F,GAAgBrF,EAAOG,UAAYH,EAAOG,WAGlEH,EAAOmE,KAAK,eAAgBnE,EAAOG,WAAW,GC1BhD,IAAIyX,IAAqB,EAEzB,SAASC,MAET,MAAMvjC,GAAS,CAAC0rB,EAAQ0D,KACtB,MAAMxY,EAAW6K,MACXsK,OACJA,EAAMyX,YACNA,EAAWltB,GACXA,EAAE2V,UACFA,EAAS6B,OACTA,EAAMjB,QACNA,GACEnB,EACEjG,IAAYsG,EAAOgV,OACnB0C,EAAuB,OAAXrU,EAAkB,mBAAqB,sBACnDsU,EAAetU,EAErB,GAAKvC,EAAQK,MAIN,CACL,MAAME,IAAwC,eAAtBoW,EAAYh8B,QAA0BqlB,EAAQO,kBAAmBrB,EAAO4X,mBAAmB,CACjHp/B,SAAS,EACTkhB,SAAS,GAEXnP,EAAGmtB,GAAWD,EAAYh8B,MAAOkkB,EAAO2R,aAAcjQ,GACtD9W,EAAGmtB,GAAWD,EAAYI,KAAMlY,EAAO0U,YAAavT,EAAQO,gBAAkB,CAC5E7oB,SAAS,EACTkhB,WACEA,GACJnP,EAAGmtB,GAAWD,EAAYt0B,IAAKwc,EAAOgW,WAAYtU,GAE9CoW,EAAYK,QACdvtB,EAAGmtB,GAAWD,EAAYK,OAAQnY,EAAOgW,WAAYtU,QAhBvD9W,EAAGmtB,GAAWD,EAAYh8B,MAAOkkB,EAAO2R,cAAc,GACtDzmB,EAAS6sB,GAAWD,EAAYI,KAAMlY,EAAO0U,YAAa3a,GAC1D7O,EAAS6sB,GAAWD,EAAYt0B,IAAKwc,EAAOgW,YAAY,IAmBtD3V,EAAOmX,eAAiBnX,EAAOoX,2BACjC7sB,EAAGmtB,GAAW,QAAS/X,EAAOuX,SAAS,GAGrClX,EAAO0G,SACTxG,EAAUwX,GAAW,SAAU/X,EAAO2X,UAIpCtX,EAAO+X,qBACTpY,EAAOgY,GAAc5V,EAAOC,KAAOD,EAAOE,QAAU,0CAA4C,wBAAyB4U,IAAU,GAEnIlX,EAAOgY,GAAc,iBAAkBd,IAAU,IAkCrD,IAAemB,GAAA,CACbC,aA/BF,WACE,MAAMtY,EAASjd,KACTmI,EAAW6K,MACXsK,OACJA,EAAMc,QACNA,GACEnB,EACJA,EAAO2R,aAAeA,GAAa1e,KAAK+M,GACxCA,EAAO0U,YAAcA,GAAYzhB,KAAK+M,GACtCA,EAAOgW,WAAaA,GAAW/iB,KAAK+M,GAEhCK,EAAO0G,UACT/G,EAAO2X,SAAWA,GAAS1kB,KAAK+M,IAGlCA,EAAOuX,QAAUA,GAAQtkB,KAAK+M,GAE1BmB,EAAQK,QAAUoW,KACpB1sB,EAAStS,iBAAiB,aAAci/B,IACxCD,IAAqB,GAGvBtjC,GAAO0rB,EAAQ,OAUfuY,aAPF,WAEEjkC,GADeyO,KACA,SCxFjB,MAAMy1B,GAAgB,CAACxY,EAAQK,IACtBL,EAAOiH,MAAQ5G,EAAO4G,MAAQ5G,EAAO4G,KAAKC,KAAO,ECD1D,IAAetO,GAAA,CACb6f,WCaa,WACb,MAAMzY,EAASjd,MACT8V,WACJA,EAAUwH,OACVA,EAAMiF,IACNA,EAAGf,IACHA,EAAGnC,OACHA,EAAMjB,QACNA,GACEnB,EAEE0Y,EA3BR,SAAwBC,EAASC,GAC/B,MAAMC,EAAgB,GAYtB,OAXAF,EAAQlgC,SAAQsZ,IACM,iBAATA,EACTwC,OAAOG,KAAK3C,GAAMtZ,SAAQogB,IACpB9G,EAAK8G,IACPggB,EAAc3lC,KAAK0lC,EAAS/f,MAGP,iBAAT9G,GAChB8mB,EAAc3lC,KAAK0lC,EAAS7mB,MAGzB8mB,EAcUC,CAAe,CAAC,cAAezY,EAAO5lB,UAAW,CAChE,kBAAmB0mB,EAAQK,OAC1B,CACD,YAAaxB,EAAOK,OAAOoU,UAAYpU,EAAOoU,SAAS1rB,SACtD,CACDgwB,WAAc1Y,EAAOoL,YACpB,CACDnG,IAAOA,GACN,CACD2B,KAAQ5G,EAAO4G,MAAQ5G,EAAO4G,KAAKC,KAAO,GACzC,CACD,cAAe7G,EAAO4G,MAAQ5G,EAAO4G,KAAKC,KAAO,GAA0B,WAArB7G,EAAO4G,KAAK+R,MACjE,CACD1W,QAAWF,EAAOE,SACjB,CACDD,IAAOD,EAAOC,KACb,CACD,WAAYhC,EAAO0G,SAClB,CACDkS,SAAY5Y,EAAO0G,SAAW1G,EAAOyG,gBACpC,CACD,iBAAkBzG,EAAOiJ,sBACvBjJ,EAAOoJ,wBACX5Q,EAAW3lB,QAAQwlC,GACnBnU,EAAI5L,SAAS,IAAIE,GAAYyF,KAAK,MAClC0B,EAAOkZ,wBDhDPC,cEJa,WACb,MACM5U,IACJA,EAAG1L,WACHA,GAHa9V,KAKfwhB,EAAIxL,YAAYF,EAAWyF,KAAK,MALjBvb,KAMRm2B,yBC4BT,ICnCejiC,GAAA,CACb+L,MAAM,EACNvI,UAAW,aACXu3B,kBAAmB,UACnBnD,aAAc,EACdvO,MAAO,IACPyG,SAAS,EACTqR,sBAAsB,EACtBgB,gBAAgB,EAChB/D,QAAQ,EACRgE,gBAAgB,EAChBtwB,SAAS,EACTorB,kBAAmB,wDAEnB3gC,MAAO,KACPE,OAAQ,KAERu6B,gCAAgC,EAEhC9X,UAAW,KACXmjB,IAAK,KAEL5F,oBAAoB,EACpBE,mBAAoB,GAEpBnI,YAAY,EAEZpD,gBAAgB,EAEhBiF,kBAAkB,EAElBlF,OAAQ,QAGRb,iBAAahN,EACbgf,gBAAiB,SAEjBhT,aAAc,EACde,cAAe,EACfY,eAAgB,EAChBC,mBAAoB,EACpByH,oBAAoB,EACpB9I,gBAAgB,EAChB6B,sBAAsB,EACtBzC,mBAAoB,EAEpBE,kBAAmB,EAEnByG,qBAAqB,EACrB9D,0BAA0B,EAE1BK,eAAe,EAEfvB,cAAc,EAEd8N,WAAY,EACZT,WAAY,GACZsE,eAAe,EACf1C,aAAa,EACbF,YAAY,EACZC,gBAAiB,GACjBF,aAAc,IACdZ,cAAc,EACd1B,gBAAgB,EAChB/jB,UAAW,EACX8kB,0BAA0B,EAC1Bd,0BAA0B,EAC1BC,+BAA+B,EAC/BO,qBAAqB,EAErB2E,mBAAmB,EAEnB3D,YAAY,EACZD,gBAAiB,IAEjBvM,qBAAqB,EAErBmM,YAAY,EAEZ+B,eAAe,EACfC,0BAA0B,EAC1BpK,qBAAqB,EAErBqM,eAAe,EACfC,qBAAqB,EAErBxN,MAAM,EACNkF,qBAAsB,EACtB5B,aAAc,KACdwB,wBAAwB,EACxBlB,mBAAmB,EAEnBG,QAAQ,EAERhB,gBAAgB,EAChBD,gBAAgB,EAChBiE,aAAc,KAEdP,WAAW,EACXL,eAAgB,oBAChBG,kBAAmB,KAEnBwF,kBAAkB,EAClBtO,wBAAyB,GAEzBF,uBAAwB,UAExB7D,WAAY,eACZwL,gBAAiB,+BACjBvF,iBAAkB,sBAClBG,0BAA2B,gCAC3BxB,kBAAmB,uBACnB4B,oBAAqB,yBACrBN,eAAgB,oBAChBG,wBAAyB,8BACzBF,eAAgB,oBAChBG,wBAAyB,8BACzB0N,aAAc,iBAEd5M,oBAAoB,EAEpB6M,cAAc,GCxHD,SAASC,GAAmBzZ,EAAQ0Z,GACjD,OAAO,SAAsB/iC,QACf,IAARA,IACFA,EAAM,IAGR,MAAMgjC,EAAkBzlB,OAAOG,KAAK1d,GAAK,GACnCijC,EAAejjC,EAAIgjC,GAEG,iBAAjBC,GAA8C,OAAjBA,GAKpC,CAAC,aAAc,aAAc,aAAa1nC,QAAQynC,IAAoB,IAAiC,IAA5B3Z,EAAO2Z,KACpF3Z,EAAO2Z,GAAmB,CACxBE,MAAM,IAIJF,KAAmB3Z,GAAU,YAAa4Z,IAKhB,IAA5B5Z,EAAO2Z,KACT3Z,EAAO2Z,GAAmB,CACxBjxB,SAAS,IAI0B,iBAA5BsX,EAAO2Z,IAAmC,YAAa3Z,EAAO2Z,KACvE3Z,EAAO2Z,GAAiBjxB,SAAU,GAG/BsX,EAAO2Z,KAAkB3Z,EAAO2Z,GAAmB,CACtDjxB,SAAS,IAEXyL,GAAOulB,EAAkB/iC,IAjBvBwd,GAAOulB,EAAkB/iC,IAXzBwd,GAAOulB,EAAkB/iC,ICY/B,MAAMmjC,GAAa,CACjB7W,iBACAnkB,UACAghB,aACA3G,WCxBa,CACbuQ,cCJa,SAAuBviB,EAAUimB,GAC9C,MAAMzN,EAASjd,KAEVid,EAAOK,OAAO0G,SACjB/G,EAAOmF,WAAW3L,WAAWhS,GAG/BwY,EAAOmE,KAAK,gBAAiB3c,EAAUimB,IDFvC0B,gBEJa,SAAyBtB,EAAcpzB,QAC/B,IAAjBozB,IACFA,GAAe,GAGjB,MAAM7N,EAASjd,MACTsd,OACJA,GACEL,EACAK,EAAO0G,UAEP1G,EAAOoL,YACTzL,EAAO4J,mBAGT0E,GAAe,CACbtO,SACA6N,eACApzB,YACA8zB,KAAM,YFdRjT,cGLa,SAAuBuS,EAAcpzB,QAC7B,IAAjBozB,IACFA,GAAe,GAGjB,MAAM7N,EAASjd,MACTsd,OACJA,GACEL,EACJA,EAAOgO,WAAY,EACf3N,EAAO0G,UACX/G,EAAO+J,cAAc,GACrBuE,GAAe,CACbtO,SACA6N,eACApzB,YACA8zB,KAAM,WJWR/G,SACA2E,QACAsJ,WK5Ba,CACbC,cCHa,SAAuB0E,GACpC,MAAMpa,EAASjd,KACf,GAAIid,EAAOmB,QAAQK,QAAUxB,EAAOK,OAAOmZ,eAAiBxZ,EAAOK,OAAO+I,eAAiBpJ,EAAOqa,UAAYra,EAAOK,OAAO0G,QAAS,OACrI,MAAMnc,EAAyC,cAApCoV,EAAOK,OAAO2R,kBAAoChS,EAAOpV,GAAKoV,EAAOO,UAChF3V,EAAGtP,MAAMg/B,OAAS,OAClB1vB,EAAGtP,MAAMg/B,OAASF,EAAS,WAAa,QDDxCG,gBEJa,WACb,MAAMva,EAASjd,KAEXid,EAAOmB,QAAQK,OAASxB,EAAOK,OAAO+I,eAAiBpJ,EAAOqa,UAAYra,EAAOK,OAAO0G,UAI5F/G,EAA2C,cAApCA,EAAOK,OAAO2R,kBAAoC,KAAO,aAAa12B,MAAMg/B,OAAS,MPwB9FhmC,OAAEA,GACAizB,YQ9Ba,CACb4P,cfGa,WACb,MAAMnX,EAASjd,MACTmnB,YACJA,EAAW6C,YACXA,EAAW0C,aACXA,EAAe,EAACpP,OAChBA,EAAMkE,IACNA,GACEvE,EACEuH,EAAclH,EAAOkH,YAC3B,IAAKA,GAAeA,GAAmD,IAApChT,OAAOG,KAAK6S,GAAal0B,OAAc,OAE1E,MAAMmnC,EAAaxa,EAAOya,cAAclT,EAAavH,EAAOK,OAAOkZ,gBAAiBvZ,EAAOpV,IAC3F,IAAK4vB,GAAcxa,EAAO0a,oBAAsBF,EAAY,OAC5D,MACMG,GADuBH,KAAcjT,EAAcA,EAAYiT,QAAcjgB,IAClCyF,EAAO4a,eAClDC,EAAcrC,GAAcxY,EAAQK,GACpCya,EAAatC,GAAcxY,EAAQ2a,GACnCI,EAAa1a,EAAOtX,QAEtB8xB,IAAgBC,GAClBvW,EAAIxL,YAAY,GAAGsH,EAAOoJ,8BAA8BpJ,EAAOoJ,qCAC/DzJ,EAAOkZ,yBACG2B,GAAeC,IACzBvW,EAAI5L,SAAS,GAAG0H,EAAOoJ,+BAEnBkR,EAAiB1T,KAAK+R,MAAuC,WAA/B2B,EAAiB1T,KAAK+R,OAAsB2B,EAAiB1T,KAAK+R,MAA6B,WAArB3Y,EAAO4G,KAAK+R,OACtHzU,EAAI5L,SAAS,GAAG0H,EAAOoJ,qCAGzBzJ,EAAOkZ,wBAGT,MAAM8B,EAAmBL,EAAiBlgC,WAAakgC,EAAiBlgC,YAAc4lB,EAAO5lB,UACvFwgC,EAAc5a,EAAO8L,OAASwO,EAAiBrT,gBAAkBjH,EAAOiH,eAAiB0T,GAE3FA,GAAoBjO,GACtB/M,EAAOkb,kBAGT1mB,GAAOwL,EAAOK,OAAQsa,GACtB,MAAMQ,EAAYnb,EAAOK,OAAOtX,QAChCwL,OAAOsQ,OAAO7E,EAAQ,CACpBqU,eAAgBrU,EAAOK,OAAOgU,eAC9BpF,eAAgBjP,EAAOK,OAAO4O,eAC9BC,eAAgBlP,EAAOK,OAAO6O,iBAG5B6L,IAAeI,EACjBnb,EAAOhV,WACG+vB,GAAcI,GACxBnb,EAAOlV,SAGTkV,EAAO0a,kBAAoBF,EAC3Bxa,EAAOmE,KAAK,oBAAqBwW,GAE7BM,GAAelO,IACjB/M,EAAO0R,cACP1R,EAAO+Q,aACP/Q,EAAO8E,eACP9E,EAAOwO,QAAQtE,EAAcuF,EAAezP,EAAOyP,aAAc,GAAG,IAGtEzP,EAAOmE,KAAK,aAAcwW,IelE1BF,cCHa,SAAuBlT,EAAaqL,EAAMwI,GAKvD,QAJa,IAATxI,IACFA,EAAO,WAGJrL,GAAwB,cAATqL,IAAyBwI,EAAa,OAC1D,IAAIZ,GAAa,EACjB,MAAMtoC,EAAS6kB,KACTskB,EAAyB,WAATzI,EAAoB1gC,EAAOyB,YAAcynC,EAAY3W,aACrE6W,EAAS/mB,OAAOG,KAAK6S,GAAa1pB,KAAI09B,IAC1C,GAAqB,iBAAVA,GAA6C,IAAvBA,EAAMhpC,QAAQ,KAAY,CACzD,MAAMipC,EAAWphC,WAAWmhC,EAAMlhC,OAAO,IAEzC,MAAO,CACLlH,MAFYkoC,EAAgBG,EAG5BD,SAIJ,MAAO,CACLpoC,MAAOooC,EACPA,YAGJD,EAAO78B,MAAK,CAACxK,EAAG+Z,IAAM2W,SAAS1wB,EAAEd,MAAO,IAAMwxB,SAAS3W,EAAE7a,MAAO,MAEhE,IAAK,IAAIJ,EAAI,EAAGA,EAAIuoC,EAAOjoC,OAAQN,GAAK,EAAG,CACzC,MAAMwoC,MACJA,EAAKpoC,MACLA,GACEmoC,EAAOvoC,GAEE,WAAT6/B,EACE1gC,EAAOsL,WAAW,eAAerK,QAAYmK,UAC/Ck9B,EAAae,GAENpoC,GAASioC,EAAY5W,cAC9BgW,EAAae,GAIjB,OAAOf,GAAc,QTTvBnR,cHEe,CACbA,cApCF,WACE,MAAMrJ,EAASjd,MAEbs3B,SAAUoB,EAASpb,OACnBA,GACEL,GACEkG,mBACJA,GACE7F,EAEJ,GAAI6F,EAAoB,CACtB,MAAMwV,EAAiB1b,EAAO2F,OAAOtyB,OAAS,EACxCsoC,EAAqB3b,EAAO+F,WAAW2V,GAAkB1b,EAAOgG,gBAAgB0V,GAAuC,EAArBxV,EACxGlG,EAAOqa,SAAWra,EAAOhmB,KAAO2hC,OAEhC3b,EAAOqa,SAAsC,IAA3Bra,EAAO8F,SAASzyB,QAGN,IAA1BgtB,EAAO4O,iBACTjP,EAAOiP,gBAAkBjP,EAAOqa,WAGJ,IAA1Bha,EAAO6O,iBACTlP,EAAOkP,gBAAkBlP,EAAOqa,UAG9BoB,GAAaA,IAAczb,EAAOqa,WACpCra,EAAOsL,OAAQ,GAGbmQ,IAAczb,EAAOqa,UACvBra,EAAOmE,KAAKnE,EAAOqa,SAAW,OAAS,YGGzCzhB,WACAgjB,OUjCa,CACbC,UCDa,SAAmBC,EAASrnB,EAAKsnB,EAAQC,EAAOC,EAAkB1jC,GAC/E,MAAMrG,EAAS6kB,KACf,IAAImlB,EAEJ,SAASC,IACH5jC,GAAUA,IAGEuf,GAAEgkB,GAAS/gC,OAAO,WAAW,IAE3B+gC,EAAQM,UAAaH,EAsBvCE,IArBI1nB,GACFynB,EAAQ,IAAIhqC,EAAOykB,MACnBulB,EAAMG,OAASF,EACfD,EAAMI,QAAUH,EAEZH,IACFE,EAAMF,MAAQA,GAGZD,IACFG,EAAMH,OAASA,GAGbtnB,IACFynB,EAAMznB,IAAMA,IAGd0nB,KD1BJzC,cEJa,WACb,MAAM1Z,EAASjd,KAGf,SAASo5B,IACH,MAAOnc,GAA8CA,IAAUA,EAAOyD,iBAC9ClJ,IAAxByF,EAAOuc,eAA4Bvc,EAAOuc,cAAgB,GAE1Dvc,EAAOuc,eAAiBvc,EAAOwc,aAAanpC,SAC1C2sB,EAAOK,OAAOsZ,qBAAqB3Z,EAAO7gB,SAC9C6gB,EAAOmE,KAAK,iBARhBnE,EAAOwc,aAAexc,EAAOuE,IAAI7G,KAAK,OAYtC,IAAK,IAAI3qB,EAAI,EAAGA,EAAIitB,EAAOwc,aAAanpC,OAAQN,GAAK,EAAG,CACtD,MAAM+oC,EAAU9b,EAAOwc,aAAazpC,GACpCitB,EAAO6b,UAAUC,EAASA,EAAQW,YAAcX,EAAQlqB,aAAa,OAAQkqB,EAAQC,QAAUD,EAAQlqB,aAAa,UAAWkqB,EAAQE,OAASF,EAAQlqB,aAAa,UAAU,EAAMuqB,OZqBnLO,GAAmB,GAEzB,MAAMC,GACJroB,cACE,IAAI1J,EACAyV,EAEJ,IAAK,IAAIwD,EAAOzwB,UAAUC,OAAQsmB,EAAO,IAAInI,MAAMqS,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EnK,EAAKmK,GAAQ1wB,UAAU0wB,GAazB,GAVoB,IAAhBnK,EAAKtmB,QAAgBsmB,EAAK,GAAGrF,aAAwE,WAAzDC,OAAOtR,UAAU0b,SAASjc,KAAKiX,EAAK,IAAIxN,MAAM,GAAI,GAChGkU,EAAS1G,EAAK,IAEb/O,EAAIyV,GAAU1G,EAGZ0G,IAAQA,EAAS,IACtBA,EAAS7L,GAAO,GAAI6L,GAChBzV,IAAOyV,EAAOzV,KAAIyV,EAAOzV,GAAKA,GAE9ByV,EAAOzV,IAAMkN,GAAEuI,EAAOzV,IAAIvX,OAAS,EAAG,CACxC,MAAMupC,EAAU,GAOhB,OANA9kB,GAAEuI,EAAOzV,IAAIqR,MAAKmf,IAChB,MAAMyB,EAAYroB,GAAO,GAAI6L,EAAQ,CACnCzV,GAAIwwB,IAENwB,EAAQ1pC,KAAK,IAAIypC,GAAOE,OAEnBD,EAIT,MAAM5c,EAASjd,KACfid,EAAON,YAAa,EACpBM,EAAOmB,QAAUG,KACjBtB,EAAOoC,OAASL,GAAU,CACxB5L,UAAWkK,EAAOlK,YAEpB6J,EAAOqB,QAAU2B,KACjBhD,EAAOwD,gBAAkB,GACzBxD,EAAOgE,mBAAqB,GAC5BhE,EAAO8c,QAAU,IAAI9c,EAAO+c,aAExB1c,EAAOyc,SAAWtrB,MAAMmG,QAAQ0I,EAAOyc,UACzC9c,EAAO8c,QAAQ5pC,QAAQmtB,EAAOyc,SAGhC,MAAM/C,EAAmB,GACzB/Z,EAAO8c,QAAQrkC,SAAQukC,IACrBA,EAAI,CACFhd,SACAid,aAAcnD,GAAmBzZ,EAAQ0Z,GACzCrgB,GAAIsG,EAAOtG,GAAGzG,KAAK+M,GACnBja,KAAMia,EAAOja,KAAKkN,KAAK+M,GACvBpF,IAAKoF,EAAOpF,IAAI3H,KAAK+M,GACrBmE,KAAMnE,EAAOmE,KAAKlR,KAAK+M,QAI3B,MAAMkd,EAAe1oB,GAAO,GAAIvd,GAAU8iC,GAiH1C,OA/GA/Z,EAAOK,OAAS7L,GAAO,GAAI0oB,EAAcR,GAAkBrc,GAC3DL,EAAO4a,eAAiBpmB,GAAO,GAAIwL,EAAOK,QAC1CL,EAAOmd,aAAe3oB,GAAO,GAAI6L,GAE7BL,EAAOK,QAAUL,EAAOK,OAAO3G,IACjCnF,OAAOG,KAAKsL,EAAOK,OAAO3G,IAAIjhB,SAAQ2kC,IACpCpd,EAAOtG,GAAG0jB,EAAWpd,EAAOK,OAAO3G,GAAG0jB,OAItCpd,EAAOK,QAAUL,EAAOK,OAAO0D,OACjC/D,EAAO+D,MAAM/D,EAAOK,OAAO0D,OAI7B/D,EAAOlI,EAAIA,GAEXvD,OAAOsQ,OAAO7E,EAAQ,CACpBjX,QAASiX,EAAOK,OAAOtX,QACvB6B,KAEAiO,WAAY,GAEZ8M,OAAQ7N,KACRiO,WAAY,GACZD,SAAU,GACVE,gBAAiB,GAGjBtB,aAAY,IACyB,eAA5B1E,EAAOK,OAAO5lB,UAGvB4O,WAAU,IAC2B,aAA5B2W,EAAOK,OAAO5lB,UAIvByvB,YAAa,EACbyB,UAAW,EAEXN,aAAa,EACbC,OAAO,EAEPnL,UAAW,EACXwN,kBAAmB,EACnB51B,SAAU,EACVoQ,SAAU,EACV6lB,WAAW,EAEXiB,eAAgBjP,EAAOK,OAAO4O,eAC9BC,eAAgBlP,EAAOK,OAAO6O,eAE9B4I,YAAa,WACX,MAAMtW,EAAQ,CAAC,aAAc,YAAa,WAAY,eAChD6b,EAAU,CAAC,cAAe,cAAe,aAY/C,OAXArd,EAAOsd,iBAAmB,CACxBxhC,MAAO0lB,EAAM,GACb0W,KAAM1W,EAAM,GACZhe,IAAKge,EAAM,GACX2W,OAAQ3W,EAAM,IAEhBxB,EAAOud,mBAAqB,CAC1BzhC,MAAOuhC,EAAQ,GACfnF,KAAMmF,EAAQ,GACd75B,IAAK65B,EAAQ,IAERrd,EAAOmB,QAAQK,QAAUxB,EAAOK,OAAOmZ,cAAgBxZ,EAAOsd,iBAAmBtd,EAAOud,mBAdpF,GAgBb3L,gBAAiB,CACfQ,eAAW7X,EACX8X,aAAS9X,EACTuZ,yBAAqBvZ,EACrByZ,oBAAgBzZ,EAChB/M,iBAAa+M,EACbgT,sBAAkBhT,EAClBgb,oBAAgBhb,EAChB2Z,wBAAoB3Z,EAEpB4Z,kBAAmBnU,EAAOK,OAAO8T,kBAEjCkC,cAAe1kC,KACf6rC,kBAAcjjB,EAEdkjB,WAAY,GACZjI,yBAAqBjb,EACrB0X,kBAAc1X,EACdwZ,iBAAaxZ,GAGf0Y,YAAY,EAEZoB,eAAgBrU,EAAOK,OAAOgU,eAC9BxC,QAAS,CACP2B,OAAQ,EACRC,OAAQ,EACRN,SAAU,EACVG,SAAU,EACV7B,KAAM,GAGR+K,aAAc,GACdD,aAAc,IAEhBvc,EAAOmE,KAAK,WAERnE,EAAOK,OAAOrd,MAChBgd,EAAOhd,OAIFgd,EAGTlV,SACE,MAAMkV,EAASjd,KACXid,EAAOjX,UACXiX,EAAOjX,SAAU,EAEbiX,EAAOK,OAAOoV,YAChBzV,EAAO0V,gBAGT1V,EAAOmE,KAAK,WAGdnZ,UACE,MAAMgV,EAASjd,KACVid,EAAOjX,UACZiX,EAAOjX,SAAU,EAEbiX,EAAOK,OAAOoV,YAChBzV,EAAOua,kBAGTva,EAAOmE,KAAK,YAGduZ,YAAY3lC,EAAUuoB,GACpB,MAAMN,EAASjd,KACfhL,EAAW7D,KAAK4T,IAAI5T,KAAKC,IAAI4D,EAAU,GAAI,GAC3C,MAAM+P,EAAMkY,EAAO4K,eAEbhK,GADMZ,EAAOoL,eACItjB,GAAO/P,EAAW+P,EACzCkY,EAAO4N,YAAYhN,OAA0B,IAAVN,EAAwB,EAAIA,GAC/DN,EAAOwM,oBACPxM,EAAO0L,sBAGTwN,uBACE,MAAMlZ,EAASjd,KACf,IAAKid,EAAOK,OAAOwZ,eAAiB7Z,EAAOpV,GAAI,OAC/C,MAAM+yB,EAAM3d,EAAOpV,GAAGlC,UAAUlQ,MAAM,KAAKqf,QAAOnP,GACT,IAAhCA,EAAUnW,QAAQ,WAA+E,IAA5DmW,EAAUnW,QAAQytB,EAAOK,OAAOoJ,0BAE9EzJ,EAAOmE,KAAK,oBAAqBwZ,EAAIrf,KAAK,MAG5Csf,gBAAgBC,GACd,MAAM7d,EAASjd,KACf,OAAIid,EAAOyD,UAAkB,GACtBoa,EAAQn1B,UAAUlQ,MAAM,KAAKqf,QAAOnP,GACI,IAAtCA,EAAUnW,QAAQ,iBAAyE,IAAhDmW,EAAUnW,QAAQytB,EAAOK,OAAOuF,cACjFtH,KAAK,KAGViO,oBACE,MAAMvM,EAASjd,KACf,IAAKid,EAAOK,OAAOwZ,eAAiB7Z,EAAOpV,GAAI,OAC/C,MAAMkzB,EAAU,GAChB9d,EAAO2F,OAAO1J,MAAK4hB,IACjB,MAAMhlB,EAAamH,EAAO4d,gBAAgBC,GAC1CC,EAAQ5qC,KAAK,CACX2qC,UACAhlB,eAEFmH,EAAOmE,KAAK,cAAe0Z,EAAShlB,MAEtCmH,EAAOmE,KAAK,gBAAiB2Z,GAG/BjO,qBAAqBkO,EAAMC,QACZ,IAATD,IACFA,EAAO,gBAGK,IAAVC,IACFA,GAAQ,GAGV,MACM3d,OACJA,EAAMsF,OACNA,EAAMI,WACNA,EAAUC,gBACVA,EACAhsB,KAAMorB,EAAU8E,YAChBA,GAPannB,KASf,IAAIk7B,EAAM,EAEV,GAAI5d,EAAOyG,eAAgB,CACzB,IACIoX,EADA/W,EAAYxB,EAAOuE,GAAajC,gBAGpC,IAAK,IAAIl1B,EAAIm3B,EAAc,EAAGn3B,EAAI4yB,EAAOtyB,OAAQN,GAAK,EAChD4yB,EAAO5yB,KAAOmrC,IAChB/W,GAAaxB,EAAO5yB,GAAGk1B,gBACvBgW,GAAO,EACH9W,EAAY/B,IAAY8Y,GAAY,IAI5C,IAAK,IAAInrC,EAAIm3B,EAAc,EAAGn3B,GAAK,EAAGA,GAAK,EACrC4yB,EAAO5yB,KAAOmrC,IAChB/W,GAAaxB,EAAO5yB,GAAGk1B,gBACvBgW,GAAO,EACH9W,EAAY/B,IAAY8Y,GAAY,SAK5C,GAAa,YAATH,EACF,IAAK,IAAIhrC,EAAIm3B,EAAc,EAAGn3B,EAAI4yB,EAAOtyB,OAAQN,GAAK,EAAG,EACnCirC,EAAQjY,EAAWhzB,GAAKizB,EAAgBjzB,GAAKgzB,EAAWmE,GAAe9E,EAAaW,EAAWhzB,GAAKgzB,EAAWmE,GAAe9E,KAGhJ6Y,GAAO,QAKX,IAAK,IAAIlrC,EAAIm3B,EAAc,EAAGn3B,GAAK,EAAGA,GAAK,EAAG,CACxBgzB,EAAWmE,GAAenE,EAAWhzB,GAAKqyB,IAG5D6Y,GAAO,GAMf,OAAOA,EAGT9+B,SACE,MAAM6gB,EAASjd,KACf,IAAKid,GAAUA,EAAOyD,UAAW,OACjC,MAAMqC,SACJA,EAAQzF,OACRA,GACEL,EAWJ,SAASwN,IACP,MAAM2Q,EAAiBne,EAAOqF,cAAmC,EAApBrF,EAAOG,UAAiBH,EAAOG,UACtE+N,EAAeh6B,KAAK4T,IAAI5T,KAAKC,IAAIgqC,EAAgBne,EAAOoL,gBAAiBpL,EAAO4K,gBACtF5K,EAAOwN,aAAaU,GACpBlO,EAAOwM,oBACPxM,EAAO0L,sBAGT,IAAI0S,EAjBA/d,EAAOkH,aACTvH,EAAOmX,gBAGTnX,EAAOsE,aACPtE,EAAO8E,eACP9E,EAAOiL,iBACPjL,EAAO0L,sBAYH1L,EAAOK,OAAOoU,UAAYzU,EAAOK,OAAOoU,SAAS1rB,SACnDykB,IAEIxN,EAAOK,OAAOoL,YAChBzL,EAAO4J,qBAIPwU,GADmC,SAAhCpe,EAAOK,OAAOiH,eAA4BtH,EAAOK,OAAOiH,cAAgB,IAAMtH,EAAOsL,QAAUtL,EAAOK,OAAOyG,eACnG9G,EAAOwO,QAAQxO,EAAO2F,OAAOtyB,OAAS,EAAG,GAAG,GAAO,GAEnD2sB,EAAOwO,QAAQxO,EAAOkK,YAAa,GAAG,GAAO,GAGvDkU,GACH5Q,KAIAnN,EAAO+I,eAAiBtD,IAAa9F,EAAO8F,UAC9C9F,EAAOqJ,gBAGTrJ,EAAOmE,KAAK,UAGd+W,gBAAgBmD,EAAcC,QACT,IAAfA,IACFA,GAAa,GAGf,MAAMte,EAASjd,KACTw7B,EAAmBve,EAAOK,OAAO5lB,UAOvC,OALK4jC,IAEHA,EAAoC,eAArBE,EAAoC,WAAa,cAG9DF,IAAiBE,GAAqC,eAAjBF,GAAkD,aAAjBA,IAI1Ere,EAAOuE,IAAIxL,YAAY,GAAGiH,EAAOK,OAAOoJ,yBAAyB8U,KAAoB5lB,SAAS,GAAGqH,EAAOK,OAAOoJ,yBAAyB4U,KACxIre,EAAOkZ,uBACPlZ,EAAOK,OAAO5lB,UAAY4jC,EAC1Bre,EAAO2F,OAAO1J,MAAK4hB,IACI,aAAjBQ,EACFR,EAAQviC,MAAM9H,MAAQ,GAEtBqqC,EAAQviC,MAAM5H,OAAS,MAG3BssB,EAAOmE,KAAK,mBACRma,GAAYte,EAAO7gB,UAdd6gB,EAkBXwe,MAAM5zB,GACJ,MAAMoV,EAASjd,KACf,GAAIid,EAAOye,QAAS,OAAO,EAE3B,MAAMla,EAAMzM,GAAElN,GAAMoV,EAAOK,OAAOzV,IAGlC,KAFAA,EAAK2Z,EAAI,IAGP,OAAO,EAGT3Z,EAAGoV,OAASA,EAEZ,MAAM0e,EAAqB,IAClB,KAAK1e,EAAOK,OAAOuZ,cAAgB,IAAI1hB,OAAO1f,MAAM,KAAK8lB,KAAK,OAoBvE,IAAI6G,EAjBe,MACjB,GAAIva,GAAMA,EAAG2nB,YAAc3nB,EAAG2nB,WAAWrhB,cAAe,CACtD,MAAMwG,EAAMI,GAAElN,EAAG2nB,WAAWrhB,cAAcwtB,MAI1C,OAFAhnB,EAAIhc,SAAWijC,GAAWpa,EAAI7oB,SAASijC,GAEhCjnB,EAGT,OAAK6M,EAAI7oB,SAIF6oB,EAAI7oB,SAASgjC,KAHX5mB,GAAEyM,GAAK7oB,SAASgjC,MAOVE,GAEjB,GAA0B,IAAtBzZ,EAAW9xB,QAAgB2sB,EAAOK,OAAOgZ,eAAgB,CAC3D,MACMwF,EADW9oB,KACQnb,cAAc,OACvCuqB,EAAarN,GAAE+mB,GACfA,EAAQn2B,UAAYsX,EAAOK,OAAOuZ,aAClCrV,EAAI5H,OAAOkiB,GACXta,EAAI7oB,SAAS,IAAIskB,EAAOK,OAAOuF,cAAc3J,MAAK4hB,IAChD1Y,EAAWxI,OAAOkhB,MAetB,OAXAtpB,OAAOsQ,OAAO7E,EAAQ,CACpBuE,MACA3Z,KACAua,aACA5E,UAAW4E,EAAW,GACtBsZ,SAAS,EAETnZ,IAA8B,QAAzB1a,EAAG8V,IAAIjgB,eAAoD,QAAzB8jB,EAAIrpB,IAAI,aAC/CmqB,aAA0C,eAA5BrF,EAAOK,OAAO5lB,YAAwD,QAAzBmQ,EAAG8V,IAAIjgB,eAAoD,QAAzB8jB,EAAIrpB,IAAI,cACrGqqB,SAAwC,gBAA9BJ,EAAWjqB,IAAI,cAEpB,EAGT8H,KAAK4H,GACH,MAAMoV,EAASjd,KACf,GAAIid,EAAO+M,YAAa,OAAO/M,EAE/B,OAAgB,IADAA,EAAOwe,MAAM5zB,KAE7BoV,EAAOmE,KAAK,cAERnE,EAAOK,OAAOkH,aAChBvH,EAAOmX,gBAITnX,EAAOyY,aAEHzY,EAAOK,OAAO8L,MAChBnM,EAAO+Q,aAIT/Q,EAAOsE,aAEPtE,EAAO8E,eAEH9E,EAAOK,OAAO+I,eAChBpJ,EAAOqJ,gBAILrJ,EAAOK,OAAOoV,YAAczV,EAAOjX,SACrCiX,EAAO0V,gBAGL1V,EAAOK,OAAOqZ,eAChB1Z,EAAO0Z,gBAIL1Z,EAAOK,OAAO8L,KAChBnM,EAAOwO,QAAQxO,EAAOK,OAAOwO,aAAe7O,EAAOyP,aAAc,EAAGzP,EAAOK,OAAO2M,oBAAoB,GAAO,GAE7GhN,EAAOwO,QAAQxO,EAAOK,OAAOwO,aAAc,EAAG7O,EAAOK,OAAO2M,oBAAoB,GAAO,GAIzFhN,EAAOsY,eAEPtY,EAAO+M,aAAc,EAErB/M,EAAOmE,KAAK,QACZnE,EAAOmE,KAAK,cA7CkBnE,EAiDhC3M,QAAQyrB,EAAgBC,QACC,IAAnBD,IACFA,GAAiB,QAGC,IAAhBC,IACFA,GAAc,GAGhB,MAAM/e,EAASjd,MACTsd,OACJA,EAAMkE,IACNA,EAAGY,WACHA,EAAUQ,OACVA,GACE3F,EAEJ,YAA6B,IAAlBA,EAAOK,QAA0BL,EAAOyD,YAInDzD,EAAOmE,KAAK,iBAEZnE,EAAO+M,aAAc,EAErB/M,EAAOuY,eAEHlY,EAAO8L,MACTnM,EAAO0R,cAILqN,IACF/e,EAAOmZ,gBACP5U,EAAIlL,WAAW,SACf8L,EAAW9L,WAAW,SAElBsM,GAAUA,EAAOtyB,QACnBsyB,EAAO5M,YAAY,CAACsH,EAAOmK,kBAAmBnK,EAAOwL,iBAAkBxL,EAAOyL,eAAgBzL,EAAO0L,gBAAgBzN,KAAK,MAAMjF,WAAW,SAASA,WAAW,4BAInK2G,EAAOmE,KAAK,WAEZ5P,OAAOG,KAAKsL,EAAOwD,iBAAiB/qB,SAAQ2kC,IAC1Cpd,EAAOpF,IAAIwiB,OAGU,IAAnB0B,IACF9e,EAAOuE,IAAI,GAAGvE,OAAS,KhD7kB7B,SAAqBhpB,GACnB,MAAMgoC,EAAShoC,EACfud,OAAOG,KAAKsqB,GAAQvmC,SAAQkc,IAC1B,IACEqqB,EAAOrqB,GAAO,KACd,MAAOriB,IAGT,WACS0sC,EAAOrqB,GACd,MAAOriB,QgDokBP2sC,CAAYjf,IAGdA,EAAOyD,WAAY,GAnCV,KAuCXyb,sBAAsBC,GACpB3qB,GAAOkoB,GAAkByC,GAGhBzC,8BACT,OAAOA,GAGEzlC,sBACT,OAAOA,GAGTioC,qBAAqBlC,GACdL,GAAO15B,UAAU85B,cAAaJ,GAAO15B,UAAU85B,YAAc,IAClE,MAAMD,EAAUH,GAAO15B,UAAU85B,YAEd,mBAARC,GAAsBF,EAAQvqC,QAAQyqC,GAAO,GACtDF,EAAQ5pC,KAAK8pC,GAIjBkC,WAAWE,GACT,OAAI5tB,MAAMmG,QAAQynB,IAChBA,EAAO3mC,SAAQ4I,GAAKs7B,GAAO0C,cAAch+B,KAClCs7B,KAGTA,GAAO0C,cAAcD,GACdzC,KalnBI,SAAS2C,GAA0Btf,EAAQ4a,EAAgBva,EAAQkf,GAChF,MAAMr0B,EAAW6K,KAmBjB,OAjBIiK,EAAOK,OAAOgZ,gBAChB9kB,OAAOG,KAAK6qB,GAAY9mC,SAAQkc,IAC9B,IAAK0L,EAAO1L,KAAwB,IAAhB0L,EAAO6Z,KAAe,CACxC,IAAIznC,EAAUutB,EAAOuE,IAAI7oB,SAAS,IAAI6jC,EAAW5qB,MAAQ,GAEpDliB,IACHA,EAAUyY,EAAStQ,cAAc,OACjCnI,EAAQiW,UAAY62B,EAAW5qB,GAC/BqL,EAAOuE,IAAI5H,OAAOlqB,IAGpB4tB,EAAO1L,GAAOliB,EACdmoC,EAAejmB,GAAOliB,MAKrB4tB,ECrBM,SAASmf,GAAkB5mB,GAKxC,YAJgB,IAAZA,IACFA,EAAU,IAGL,IAAIA,EAAQV,OAAO1X,QAAQ,cAAe,QAChDA,QAAQ,KAAM,OdknBjB+T,OAAOG,KAAKylB,IAAY1hC,SAAQgnC,IAC9BlrB,OAAOG,KAAKylB,GAAWsF,IAAiBhnC,SAAQinC,IAC9C/C,GAAO15B,UAAUy8B,GAAevF,GAAWsF,GAAgBC,SAG/D/C,GAAOgD,IAAI,Ce5nBI,SAAgB/sC,GAC7B,IAAIotB,OACFA,EAAMtG,GACNA,EAAEyK,KACFA,GACEvxB,EACJ,MAAMV,EAAS6kB,KACf,IAAI6oB,EAAW,KACXC,EAAiB,KAErB,MAAMC,EAAgB,KACf9f,IAAUA,EAAOyD,WAAczD,EAAO+M,cAC3C5I,EAAK,gBACLA,EAAK,YA2CD4b,EAA2B,KAC1B/f,IAAUA,EAAOyD,WAAczD,EAAO+M,aAC3C5I,EAAK,sBAGPzK,EAAG,QAAQ,KACLsG,EAAOK,OAAO+Y,qBAAmD,IAA1BlnC,EAAO8tC,eA7C7ChgB,IAAUA,EAAOyD,WAAczD,EAAO+M,cAC3C6S,EAAW,IAAII,gBAAerH,IAC5BkH,EAAiB3tC,EAAOsZ,uBAAsB,KAC5C,MAAMhY,MACJA,EAAKE,OACLA,GACEssB,EACJ,IAAIigB,EAAWzsC,EACXs2B,EAAYp2B,EAChBilC,EAAQlgC,SAAQqO,IACd,IAAIo5B,eACFA,EAAcC,YACdA,EAAWzzB,OACXA,GACE5F,EACA4F,GAAUA,IAAWsT,EAAOpV,KAChCq1B,EAAWE,EAAcA,EAAY3sC,OAAS0sC,EAAe,IAAMA,GAAgBE,WACnFtW,EAAYqW,EAAcA,EAAYzsC,QAAUwsC,EAAe,IAAMA,GAAgBG,cAGnFJ,IAAazsC,GAASs2B,IAAcp2B,GACtCosC,UAINF,EAASU,QAAQtgB,EAAOpV,MAyBxB1Y,EAAO0G,iBAAiB,SAAUknC,GAClC5tC,EAAO0G,iBAAiB,oBAAqBmnC,OAE/CrmB,EAAG,WAAW,KAxBRmmB,GACF3tC,EAAO4kB,qBAAqB+oB,GAG1BD,GAAYA,EAASW,WAAavgB,EAAOpV,KAC3Cg1B,EAASW,UAAUvgB,EAAOpV,IAC1Bg1B,EAAW,MAoBb1tC,EAAO6G,oBAAoB,SAAU+mC,GACrC5tC,EAAO6G,oBAAoB,oBAAqBgnC,OCzErC,SAAkBntC,GAC/B,IAAIotB,OACFA,EAAMid,aACNA,EAAYvjB,GACZA,EAAEyK,KACFA,GACEvxB,EACJ,MAAM4tC,EAAY,GACZtuC,EAAS6kB,KAET0pB,EAAS,SAAU/zB,EAAQiyB,QACf,IAAZA,IACFA,EAAU,IAGZ,MACMiB,EAAW,IADI1tC,EAAOwuC,kBAAoBxuC,EAAOyuC,yBACrBC,IAIhC,GAAyB,IAArBA,EAAUvtC,OAEZ,YADA8wB,EAAK,iBAAkByc,EAAU,IAInC,MAAMC,EAAiB,WACrB1c,EAAK,iBAAkByc,EAAU,KAG/B1uC,EAAOsZ,sBACTtZ,EAAOsZ,sBAAsBq1B,GAE7B3uC,EAAOuZ,WAAWo1B,EAAgB,MAGtCjB,EAASU,QAAQ5zB,EAAQ,CACvBo0B,gBAA0C,IAAvBnC,EAAQmC,YAAoCnC,EAAQmC,WACvEC,eAAwC,IAAtBpC,EAAQoC,WAAmCpC,EAAQoC,UACrEC,mBAAgD,IAA1BrC,EAAQqC,eAAuCrC,EAAQqC,gBAE/ER,EAAUttC,KAAK0sC,IA+BjB3C,EAAa,CACX2C,UAAU,EACVqB,gBAAgB,EAChBC,sBAAsB,IAExBxnB,EAAG,QAjCU,KACX,GAAKsG,EAAOK,OAAOuf,SAAnB,CAEA,GAAI5f,EAAOK,OAAO4gB,eAAgB,CAChC,MAAME,EAAmBnhB,EAAOuE,IAAInK,UAEpC,IAAK,IAAIrnB,EAAI,EAAGA,EAAIouC,EAAiB9tC,OAAQN,GAAK,EAChD0tC,EAAOU,EAAiBpuC,IAK5B0tC,EAAOzgB,EAAOuE,IAAI,GAAI,CACpBwc,UAAW/gB,EAAOK,OAAO6gB,uBAG3BT,EAAOzgB,EAAOmF,WAAW,GAAI,CAC3B2b,YAAY,QAiBhBpnB,EAAG,WAba,KACd8mB,EAAU/nC,SAAQmnC,IAChBA,EAASwB,gBAEXZ,EAAUp2B,OAAO,EAAGo2B,EAAUntC,cCpElCguC,GAAW1B,IAAI,CCCA,SAAoB/sC,GACjC,IAAIotB,OACFA,EAAMid,aACNA,EAAYvjB,GACZA,EAAEyK,KACFA,GACEvxB,EAkBJ,SAAS0uC,EAAM12B,GACb,IAAI2Z,EAUJ,OARI3Z,IACF2Z,EAAMzM,GAAElN,GAEJoV,EAAOK,OAAOoZ,mBAAmC,iBAAP7uB,GAAmB2Z,EAAIlxB,OAAS,GAAoC,IAA/B2sB,EAAOuE,IAAI7G,KAAK9S,GAAIvX,SACrGkxB,EAAMvE,EAAOuE,IAAI7G,KAAK9S,KAInB2Z,EAGT,SAASgd,EAAShd,EAAKid,GACrB,MAAMnhB,EAASL,EAAOK,OAAO0W,WAEzBxS,GAAOA,EAAIlxB,OAAS,IACtBkxB,EAAIid,EAAW,WAAa,eAAenhB,EAAOohB,eAC9Cld,EAAI,IAAyB,WAAnBA,EAAI,GAAGmd,UAAsBnd,EAAI,GAAGid,SAAWA,GAEzDxhB,EAAOK,OAAO+I,eAAiBpJ,EAAOjX,SACxCwb,EAAIvE,EAAOqa,SAAW,WAAa,eAAeha,EAAOshB,YAK/D,SAASxiC,IAEP,GAAI6gB,EAAOK,OAAO8L,KAAM,OACxB,MAAMyV,QACJA,EAAOC,QACPA,GACE7hB,EAAO+W,WACXwK,EAASM,EAAS7hB,EAAOqL,cAAgBrL,EAAOK,OAAO6P,QACvDqR,EAASK,EAAS5hB,EAAOsL,QAAUtL,EAAOK,OAAO6P,QAGnD,SAAS4R,EAAYxvC,GACnBA,EAAEwf,mBACEkO,EAAOqL,aAAgBrL,EAAOK,OAAO8L,MAASnM,EAAOK,OAAO6P,SAChElQ,EAAOmQ,YAGT,SAAS4R,EAAYzvC,GACnBA,EAAEwf,mBACEkO,EAAOsL,OAAUtL,EAAOK,OAAO8L,MAASnM,EAAOK,OAAO6P,SAC1DlQ,EAAO0P,YAGT,SAAS1sB,IACP,MAAMqd,EAASL,EAAOK,OAAO0W,WAK7B,GAJA/W,EAAOK,OAAO0W,WAAauI,GAA0Btf,EAAQA,EAAO4a,eAAe7D,WAAY/W,EAAOK,OAAO0W,WAAY,CACvHC,OAAQ,qBACRC,OAAQ,wBAEJ5W,EAAO2W,SAAU3W,EAAO4W,OAAS,OACvC,MAAM2K,EAAUN,EAAMjhB,EAAO2W,QACvB6K,EAAUP,EAAMjhB,EAAO4W,QAEzB2K,GAAWA,EAAQvuC,OAAS,GAC9BuuC,EAAQloB,GAAG,QAASqoB,GAGlBF,GAAWA,EAAQxuC,OAAS,GAC9BwuC,EAAQnoB,GAAG,QAASooB,GAGtBvtB,OAAOsQ,OAAO7E,EAAO+W,WAAY,CAC/B6K,UACA5K,OAAQ4K,GAAWA,EAAQ,GAC3BC,UACA5K,OAAQ4K,GAAWA,EAAQ,KAGxB7hB,EAAOjX,UACN64B,GAASA,EAAQjpB,SAAS0H,EAAOshB,WACjCE,GAASA,EAAQlpB,SAAS0H,EAAOshB,YAIzC,SAAStuB,IACP,MAAMuuB,QACJA,EAAOC,QACPA,GACE7hB,EAAO+W,WAEP6K,GAAWA,EAAQvuC,SACrBuuC,EAAQhnB,IAAI,QAASmnB,GACrBH,EAAQ7oB,YAAYiH,EAAOK,OAAO0W,WAAW0K,gBAG3CI,GAAWA,EAAQxuC,SACrBwuC,EAAQjnB,IAAI,QAASknB,GACrBD,EAAQ9oB,YAAYiH,EAAOK,OAAO0W,WAAW0K,gBA/GjDxE,EAAa,CACXlG,WAAY,CACVC,OAAQ,KACRC,OAAQ,KACR+K,aAAa,EACbP,cAAe,yBACfQ,YAAa,uBACbN,UAAW,wBAGf3hB,EAAO+W,WAAa,CAClBC,OAAQ,KACR4K,QAAS,KACT3K,OAAQ,KACR4K,QAAS,MAqGXnoB,EAAG,QAAQ,KACT1W,IACA7D,OAEFua,EAAG,+BAA+B,KAChCva,OAEFua,EAAG,WAAW,KACZrG,OAEFqG,EAAG,kBAAkB,KACnB,MAAMkoB,QACJA,EAAOC,QACPA,GACE7hB,EAAO+W,WAEP6K,GACFA,EAAQ5hB,EAAOjX,QAAU,cAAgB,YAAYiX,EAAOK,OAAO0W,WAAW4K,WAG5EE,GACFA,EAAQ7hB,EAAOjX,QAAU,cAAgB,YAAYiX,EAAOK,OAAO0W,WAAW4K,cAGlFjoB,EAAG,SAAS,CAACwoB,EAAI5vC,KACf,MAAMsvC,QACJA,EAAOC,QACPA,GACE7hB,EAAO+W,WACLoL,EAAW7vC,EAAEoa,OAEnB,GAAIsT,EAAOK,OAAO0W,WAAWiL,cAAgBlqB,GAAEqqB,GAAUhoB,GAAG0nB,KAAa/pB,GAAEqqB,GAAUhoB,GAAGynB,GAAU,CAChG,GAAI5hB,EAAOoiB,YAAcpiB,EAAOK,OAAO+hB,YAAcpiB,EAAOK,OAAO+hB,WAAWC,YAAcriB,EAAOoiB,WAAWx3B,KAAOu3B,GAAYniB,EAAOoiB,WAAWx3B,GAAGqO,SAASkpB,IAAY,OAC3K,IAAIG,EAEAV,EACFU,EAAWV,EAAQ5oB,SAASgH,EAAOK,OAAO0W,WAAWkL,aAC5CJ,IACTS,EAAWT,EAAQ7oB,SAASgH,EAAOK,OAAO0W,WAAWkL,cAIrD9d,GADe,IAAbme,EACG,iBAEA,kBAGHV,GACFA,EAAQt8B,YAAY0a,EAAOK,OAAO0W,WAAWkL,aAG3CJ,GACFA,EAAQv8B,YAAY0a,EAAOK,OAAO0W,WAAWkL,iBAInD1tB,OAAOsQ,OAAO7E,EAAO+W,WAAY,CAC/B53B,SACA6D,OACAqQ,aCpLW,SAAoBzgB,GACjC,IAAIotB,OACFA,EAAMid,aACNA,EAAYvjB,GACZA,EAAEyK,KACFA,GACEvxB,EACJ,MAAM2vC,EAAM,oBAqCZ,IAAIC,EApCJvF,EAAa,CACXmF,WAAY,CACVx3B,GAAI,KACJ63B,cAAe,OACfJ,WAAW,EACXL,aAAa,EACbU,aAAc,KACdC,kBAAmB,KACnBC,eAAgB,KAChBC,aAAc,KACdC,qBAAqB,EACrBpqC,KAAM,UAENqqC,gBAAgB,EAChBC,mBAAoB,EACpBC,sBAAuBC,GAAUA,EACjCC,oBAAqBD,GAAUA,EAC/BE,YAAa,GAAGb,WAChBc,kBAAmB,GAAGd,kBACtBe,cAAe,GAAGf,KAClBgB,aAAc,GAAGhB,YACjBiB,WAAY,GAAGjB,UACfN,YAAa,GAAGM,WAChBkB,qBAAsB,GAAGlB,qBACzBmB,yBAA0B,GAAGnB,yBAC7BoB,eAAgB,GAAGpB,cACnBZ,UAAW,GAAGY,SACdqB,gBAAiB,GAAGrB,eACpBsB,cAAe,GAAGtB,gBAGtBviB,EAAOoiB,WAAa,CAClBx3B,GAAI,KACJ2Z,IAAK,KACLuf,QAAS,IAGX,IAAIC,EAAqB,EAEzB,SAASC,IACP,OAAQhkB,EAAOK,OAAO+hB,WAAWx3B,KAAOoV,EAAOoiB,WAAWx3B,KAAOoV,EAAOoiB,WAAW7d,KAAwC,IAAjCvE,EAAOoiB,WAAW7d,IAAIlxB,OAGlH,SAAS4wC,EAAeC,EAAWnkC,GACjC,MAAMsjC,kBACJA,GACErjB,EAAOK,OAAO+hB,WAClB8B,EAAUnkC,KAAY4Y,SAAS,GAAG0qB,KAAqBtjC,KAAYA,KAAY4Y,SAAS,GAAG0qB,KAAqBtjC,KAAYA,KAG9H,SAASZ,IAEP,MAAMmmB,EAAMtF,EAAOsF,IACbjF,EAASL,EAAOK,OAAO+hB,WAC7B,GAAI4B,IAAwB,OAC5B,MAAMne,EAAe7F,EAAOyF,SAAWzF,EAAOK,OAAOoF,QAAQ1c,QAAUiX,EAAOyF,QAAQE,OAAOtyB,OAAS2sB,EAAO2F,OAAOtyB,OAC9GkxB,EAAMvE,EAAOoiB,WAAW7d,IAE9B,IAAI3D,EACJ,MAAMujB,EAAQnkB,EAAOK,OAAO8L,KAAOj4B,KAAK+V,MAAM4b,EAAqC,EAAtB7F,EAAOyP,cAAoBzP,EAAOK,OAAO6H,gBAAkBlI,EAAO8F,SAASzyB,OAkBxI,GAhBI2sB,EAAOK,OAAO8L,MAChBvL,EAAU1sB,KAAK+V,MAAM+V,EAAOkK,YAAclK,EAAOyP,cAAgBzP,EAAOK,OAAO6H,gBAE3EtH,EAAUiF,EAAe,EAA0B,EAAtB7F,EAAOyP,eACtC7O,GAAWiF,EAAqC,EAAtB7F,EAAOyP,cAG/B7O,EAAUujB,EAAQ,IAAGvjB,GAAWujB,GAChCvjB,EAAU,GAAsC,YAAjCZ,EAAOK,OAAO+jB,iBAA8BxjB,EAAUujB,EAAQvjB,IAEjFA,OADqC,IAArBZ,EAAOiJ,UACbjJ,EAAOiJ,UAEPjJ,EAAOkK,aAAe,EAId,YAAhB7J,EAAO3nB,MAAsBsnB,EAAOoiB,WAAW0B,SAAW9jB,EAAOoiB,WAAW0B,QAAQzwC,OAAS,EAAG,CAClG,MAAMywC,EAAU9jB,EAAOoiB,WAAW0B,QAClC,IAAIO,EACA3T,EACA4T,EAuBJ,GArBIjkB,EAAO0iB,iBACTP,EAAasB,EAAQrnB,GAAG,GAAGuD,EAAO0E,eAAiB,aAAe,gBAAe,GACjFH,EAAIrpB,IAAI8kB,EAAO0E,eAAiB,QAAU,SAAa8d,GAAcniB,EAAO2iB,mBAAqB,GAA7C,MAEhD3iB,EAAO2iB,mBAAqB,QAA8BzoB,IAAzByF,EAAO0M,gBAC1CqX,GAAsBnjB,GAAWZ,EAAO0M,cAAgB1M,EAAOyP,cAAgB,GAE3EsU,EAAqB1jB,EAAO2iB,mBAAqB,EACnDe,EAAqB1jB,EAAO2iB,mBAAqB,EACxCe,EAAqB,IAC9BA,EAAqB,IAIzBM,EAAanwC,KAAKC,IAAIysB,EAAUmjB,EAAoB,GACpDrT,EAAY2T,GAAcnwC,KAAK4T,IAAIg8B,EAAQzwC,OAAQgtB,EAAO2iB,oBAAsB,GAChFsB,GAAY5T,EAAY2T,GAAc,GAGxCP,EAAQ/qB,YAAY,CAAC,GAAI,QAAS,aAAc,QAAS,aAAc,SAASlb,KAAI0mC,GAAU,GAAGlkB,EAAOgjB,oBAAoBkB,MAAUjmB,KAAK,MAEvIiG,EAAIlxB,OAAS,EACfywC,EAAQ7nB,MAAKuoB,IACX,MAAMC,EAAU3sB,GAAE0sB,GACZE,EAAcD,EAAQvnC,QAExBwnC,IAAgB9jB,GAClB6jB,EAAQ9rB,SAAS0H,EAAOgjB,mBAGtBhjB,EAAO0iB,iBACL2B,GAAeL,GAAcK,GAAehU,GAC9C+T,EAAQ9rB,SAAS,GAAG0H,EAAOgjB,0BAGzBqB,IAAgBL,GAClBJ,EAAeQ,EAAS,QAGtBC,IAAgBhU,GAClBuT,EAAeQ,EAAS,gBAIzB,CACL,MAAMA,EAAUX,EAAQrnB,GAAGmE,GACrB8jB,EAAcD,EAAQvnC,QAG5B,GAFAunC,EAAQ9rB,SAAS0H,EAAOgjB,mBAEpBhjB,EAAO0iB,eAAgB,CACzB,MAAM4B,EAAwBb,EAAQrnB,GAAG4nB,GACnCO,EAAuBd,EAAQrnB,GAAGiU,GAExC,IAAK,IAAI39B,EAAIsxC,EAAYtxC,GAAK29B,EAAW39B,GAAK,EAC5C+wC,EAAQrnB,GAAG1pB,GAAG4lB,SAAS,GAAG0H,EAAOgjB,0BAGnC,GAAIrjB,EAAOK,OAAO8L,KAChB,GAAIuY,GAAeZ,EAAQzwC,OAAQ,CACjC,IAAK,IAAIN,EAAIstB,EAAO2iB,mBAAoBjwC,GAAK,EAAGA,GAAK,EACnD+wC,EAAQrnB,GAAGqnB,EAAQzwC,OAASN,GAAG4lB,SAAS,GAAG0H,EAAOgjB,0BAGpDS,EAAQrnB,GAAGqnB,EAAQzwC,OAASgtB,EAAO2iB,mBAAqB,GAAGrqB,SAAS,GAAG0H,EAAOgjB,+BAE9EY,EAAeU,EAAuB,QACtCV,EAAeW,EAAsB,aAGvCX,EAAeU,EAAuB,QACtCV,EAAeW,EAAsB,SAK3C,GAAIvkB,EAAO0iB,eAAgB,CACzB,MAAM8B,EAAuB3wC,KAAK4T,IAAIg8B,EAAQzwC,OAAQgtB,EAAO2iB,mBAAqB,GAC5E8B,GAAiBtC,EAAaqC,EAAuBrC,GAAc,EAAI8B,EAAW9B,EAClFuC,EAAazf,EAAM,QAAU,OACnCwe,EAAQ5oC,IAAI8kB,EAAO0E,eAAiBqgB,EAAa,MAAO,GAAGD,QAS/D,GALoB,aAAhBzkB,EAAO3nB,OACT6rB,EAAI7G,KAAK8hB,GAAkBnf,EAAOkjB,eAAernB,KAAKmE,EAAO4iB,sBAAsBriB,EAAU,IAC7F2D,EAAI7G,KAAK8hB,GAAkBnf,EAAOmjB,aAAatnB,KAAKmE,EAAO8iB,oBAAoBgB,KAG7D,gBAAhB9jB,EAAO3nB,KAAwB,CACjC,IAAIssC,EAGFA,EADE3kB,EAAOyiB,oBACc9iB,EAAO0E,eAAiB,WAAa,aAErC1E,EAAO0E,eAAiB,aAAe,WAGhE,MAAM9sB,GAASgpB,EAAU,GAAKujB,EAC9B,IAAIc,EAAS,EACTC,EAAS,EAEgB,eAAzBF,EACFC,EAASrtC,EAETstC,EAASttC,EAGX2sB,EAAI7G,KAAK8hB,GAAkBnf,EAAOojB,uBAAuBlqB,UAAU,6BAA6B0rB,aAAkBC,MAAW1rB,WAAWwG,EAAOK,OAAOC,OAGpI,WAAhBD,EAAO3nB,MAAqB2nB,EAAOwiB,cACrCte,EAAItM,KAAKoI,EAAOwiB,aAAa7iB,EAAQY,EAAU,EAAGujB,IAClDhgB,EAAK,mBAAoBI,EAAI,KAE7BJ,EAAK,mBAAoBI,EAAI,IAG3BvE,EAAOK,OAAO+I,eAAiBpJ,EAAOjX,SACxCwb,EAAIvE,EAAOqa,SAAW,WAAa,eAAeha,EAAOshB,WAI7D,SAAS/iC,IAEP,MAAMyhB,EAASL,EAAOK,OAAO+hB,WAC7B,GAAI4B,IAAwB,OAC5B,MAAMne,EAAe7F,EAAOyF,SAAWzF,EAAOK,OAAOoF,QAAQ1c,QAAUiX,EAAOyF,QAAQE,OAAOtyB,OAAS2sB,EAAO2F,OAAOtyB,OAC9GkxB,EAAMvE,EAAOoiB,WAAW7d,IAC9B,IAAI4gB,EAAiB,GAErB,GAAoB,YAAhB9kB,EAAO3nB,KAAoB,CAC7B,IAAI0sC,EAAkBplB,EAAOK,OAAO8L,KAAOj4B,KAAK+V,MAAM4b,EAAqC,EAAtB7F,EAAOyP,cAAoBzP,EAAOK,OAAO6H,gBAAkBlI,EAAO8F,SAASzyB,OAE5I2sB,EAAOK,OAAOoU,UAAYzU,EAAOK,OAAOoU,SAAS1rB,UAAYiX,EAAOK,OAAO8L,MAAQiZ,EAAkBvf,IACvGuf,EAAkBvf,GAGpB,IAAK,IAAI9yB,EAAI,EAAGA,EAAIqyC,EAAiBryC,GAAK,EACpCstB,EAAOqiB,aACTyC,GAAkB9kB,EAAOqiB,aAAahgC,KAAKsd,EAAQjtB,EAAGstB,EAAO+iB,aAE7D+B,GAAkB,IAAI9kB,EAAOoiB,wBAAwBpiB,EAAO+iB,kBAAkB/iB,EAAOoiB,iBAIzFle,EAAItM,KAAKktB,GACTnlB,EAAOoiB,WAAW0B,QAAUvf,EAAI7G,KAAK8hB,GAAkBnf,EAAO+iB,cAG5C,aAAhB/iB,EAAO3nB,OAEPysC,EADE9kB,EAAOuiB,eACQviB,EAAOuiB,eAAelgC,KAAKsd,EAAQK,EAAOkjB,aAAcljB,EAAOmjB,YAE/D,gBAAgBnjB,EAAOkjB,wCAAkDljB,EAAOmjB,sBAGnGjf,EAAItM,KAAKktB,IAGS,gBAAhB9kB,EAAO3nB,OAEPysC,EADE9kB,EAAOsiB,kBACQtiB,EAAOsiB,kBAAkBjgC,KAAKsd,EAAQK,EAAOojB,sBAE7C,gBAAgBpjB,EAAOojB,gCAG1Clf,EAAItM,KAAKktB,IAGS,WAAhB9kB,EAAO3nB,MACTyrB,EAAK,mBAAoBnE,EAAOoiB,WAAW7d,IAAI,IAInD,SAASvhB,IACPgd,EAAOK,OAAO+hB,WAAa9C,GAA0Btf,EAAQA,EAAO4a,eAAewH,WAAYpiB,EAAOK,OAAO+hB,WAAY,CACvHx3B,GAAI,sBAEN,MAAMyV,EAASL,EAAOK,OAAO+hB,WAC7B,IAAK/hB,EAAOzV,GAAI,OAChB,IAAI2Z,EAAMzM,GAAEuI,EAAOzV,IACA,IAAf2Z,EAAIlxB,SAEJ2sB,EAAOK,OAAOoZ,mBAA0C,iBAAdpZ,EAAOzV,IAAmB2Z,EAAIlxB,OAAS,IACnFkxB,EAAMvE,EAAOuE,IAAI7G,KAAK2C,EAAOzV,IAEzB2Z,EAAIlxB,OAAS,IACfkxB,EAAMA,EAAI1M,QAAOjN,GACXkN,GAAElN,GAAIwP,QAAQ,WAAW,KAAO4F,EAAOpV,OAM7B,YAAhByV,EAAO3nB,MAAsB2nB,EAAOgiB,WACtC9d,EAAI5L,SAAS0H,EAAOsjB,gBAGtBpf,EAAI5L,SAAS0H,EAAOijB,cAAgBjjB,EAAO3nB,MAC3C6rB,EAAI5L,SAASqH,EAAO0E,eAAiBrE,EAAOujB,gBAAkBvjB,EAAOwjB,eAEjD,YAAhBxjB,EAAO3nB,MAAsB2nB,EAAO0iB,iBACtCxe,EAAI5L,SAAS,GAAG0H,EAAOijB,gBAAgBjjB,EAAO3nB,gBAC9CqrC,EAAqB,EAEjB1jB,EAAO2iB,mBAAqB,IAC9B3iB,EAAO2iB,mBAAqB,IAIZ,gBAAhB3iB,EAAO3nB,MAA0B2nB,EAAOyiB,qBAC1Cve,EAAI5L,SAAS0H,EAAOqjB,0BAGlBrjB,EAAOgiB,WACT9d,EAAI7K,GAAG,QAAS8lB,GAAkBnf,EAAO+iB,cAAc,SAAiB9wC,GACtEA,EAAEwf,iBACF,IAAI5U,EAAQ4a,GAAE/U,MAAM7F,QAAU8iB,EAAOK,OAAO6H,eACxClI,EAAOK,OAAO8L,OAAMjvB,GAAS8iB,EAAOyP,cACxCzP,EAAOwO,QAAQtxB,MAInBqX,OAAOsQ,OAAO7E,EAAOoiB,WAAY,CAC/B7d,MACA3Z,GAAI2Z,EAAI,KAGLvE,EAAOjX,SACVwb,EAAI5L,SAAS0H,EAAOshB,YAIxB,SAAStuB,IACP,MAAMgN,EAASL,EAAOK,OAAO+hB,WAC7B,GAAI4B,IAAwB,OAC5B,MAAMzf,EAAMvE,EAAOoiB,WAAW7d,IAC9BA,EAAIxL,YAAYsH,EAAO4hB,aACvB1d,EAAIxL,YAAYsH,EAAOijB,cAAgBjjB,EAAO3nB,MAC9C6rB,EAAIxL,YAAYiH,EAAO0E,eAAiBrE,EAAOujB,gBAAkBvjB,EAAOwjB,eACpE7jB,EAAOoiB,WAAW0B,SAAW9jB,EAAOoiB,WAAW0B,QAAQ/qB,aAAaiH,EAAOoiB,WAAW0B,QAAQ/qB,YAAYsH,EAAOgjB,mBAEjHhjB,EAAOgiB,WACT9d,EAAI3J,IAAI,QAAS4kB,GAAkBnf,EAAO+iB,cAI9C1pB,EAAG,QAAQ,KACT1W,IACApE,IACAO,OAEFua,EAAG,qBAAqB,MAClBsG,EAAOK,OAAO8L,WAEqB,IAArBnM,EAAOiJ,YADvB9pB,OAKJua,EAAG,mBAAmB,KACfsG,EAAOK,OAAO8L,MACjBhtB,OAGJua,EAAG,sBAAsB,KACnBsG,EAAOK,OAAO8L,OAChBvtB,IACAO,QAGJua,EAAG,wBAAwB,KACpBsG,EAAOK,OAAO8L,OACjBvtB,IACAO,QAGJua,EAAG,WAAW,KACZrG,OAEFqG,EAAG,kBAAkB,KACnB,MAAM6K,IACJA,GACEvE,EAAOoiB,WAEP7d,GACFA,EAAIvE,EAAOjX,QAAU,cAAgB,YAAYiX,EAAOK,OAAO+hB,WAAWT,cAG9EjoB,EAAG,eAAe,KAChBva,OAEFua,EAAG,SAAS,CAACwoB,EAAI5vC,KACf,MAAM6vC,EAAW7vC,EAAEoa,QACb6X,IACJA,GACEvE,EAAOoiB,WAEX,GAAIpiB,EAAOK,OAAO+hB,WAAWx3B,IAAMoV,EAAOK,OAAO+hB,WAAWJ,aAAezd,EAAIlxB,OAAS,IAAMykB,GAAEqqB,GAAUnpB,SAASgH,EAAOK,OAAO+hB,WAAWgB,aAAc,CACxJ,GAAIpjB,EAAO+W,aAAe/W,EAAO+W,WAAWC,QAAUmL,IAAaniB,EAAO+W,WAAWC,QAAUhX,EAAO+W,WAAWE,QAAUkL,IAAaniB,EAAO+W,WAAWE,QAAS,OACnK,MAAMqL,EAAW/d,EAAIvL,SAASgH,EAAOK,OAAO+hB,WAAWH,aAGrD9d,GADe,IAAbme,EACG,iBAEA,kBAGP/d,EAAIjf,YAAY0a,EAAOK,OAAO+hB,WAAWH,iBAG7C1tB,OAAOsQ,OAAO7E,EAAOoiB,WAAY,CAC/BxjC,SACAO,SACA6D,OACAqQ,ezE86NJ,IuEn0OqBgyB,GAAAA,WAEjB,SAAYC,EAAAA,EAAQpoC,GAChB6F,KAAKuiC,OAASA,EACdviC,KAAK7F,MAAQA,EACb6F,KAAK4iB,OAASnU,MAAMC,KAAK1O,KAAKuiC,OAAO/zB,iBAAiB,kBACtDxO,KAAKwiC,OAASxiC,KAAKuiC,OAAOp0B,cAAc,kBAExCnO,KAAK47B,QAAU57B,KAAKyiC,aACpBziC,KAAK0iC,avEo0OX,IAAIvyB,EAASmyB,EAAQpiC,UA8DrB,OuE93OEuiC,EAAAA,WAAA,WAEI,IAAI7G,EAAU,GAkCd,OAhCG57B,KAAKuiC,OAAOz6B,UAAUoO,SAAS,kBAC9B0lB,EAAU,CACNlJ,YAAY,EACZiQ,iBAAiB,EACjB3O,WAAY,CACRC,OAAQ,4BACRC,OAAQ,6BAEZmL,WAAY,CACRC,UAAW,OACXz3B,GAAI,2BACJlS,KAAM,WAEV4uB,cAAe,EACff,aAAc,GACd6C,eAAe,EACf7B,YAAa,CACT,IAAK,CACD6P,SAAU,CACNpvB,MAAO,KAEX8e,gBAAgB,EAChB2O,YAAY,EACZiQ,iBAAiB,EACjBpe,cAAe,OACff,aAAc,GACd6C,eAAe,MAMxBuV,GAGX8G,EAAAA,WAAA,WACI,IAAIE,EAAiB,IAAIhJ,OAAO55B,KAAKuiC,OAAQviC,KAAK47B,SAClDgH,EAAe3iC,OACfD,KAAK4iC,eAAiBA,GAG1BtyB,EAAAA,QAAA,WACItQ,KAAK4iC,eAAetyB,WAGjBrQ,EAAAA,KAAP,WACIqiC,EAAQ7xB,MAAQhC,MAAMC,KAAKvG,SAASqG,iBAAiB,sBAAsB1T,KAAI,SAACynC,EAAQpoC,GAAT,OAAmB,IAAImoC,EAAQC,EAAQpoC,OAGnHwW,EAAAA,WAAP,WACI2xB,EAAQ7xB,MAAM/a,SAAQ,SAAA6sC,GAClBA,EAAOjyB,cvEu0OVgyB,EuE34OYA,GGEAO,GAAAA,WAEpB,SAAcA,IACb7iC,KAAKC,O1Eu5OL,OAXa4iC,EAAK3iC,U0Ez4OnBD,KAAA,WAEckI,SAASgG,cAAc,QAC/BrG,UAAUE,IAAI,SAEnBiG,GAAWhO,OACX8P,GAAM9P,OACN2Q,GAAK3Q,OACLqiC,GAAQriC,Q1E44OD4iC,E0E15OYA,GAmBR,OAAA,IAAIA,GAAJA,G7ExBb","file":"dist\\js\\main.min.js","sourcesContent":["/*!\n * ScrollTrigger 3.5.1\n * https://greensock.com\n *\n * @license Copyright 2008-2020, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar gsap,\n _coreInitted,\n _win,\n _doc,\n _docEl,\n _body,\n _root,\n _resizeDelay,\n _raf,\n _request,\n _toArray,\n _clamp,\n _time2,\n _syncInterval,\n _refreshing,\n _pointerIsDown,\n _transformProp,\n _i,\n _prevWidth,\n _prevHeight,\n _autoRefresh,\n _sort,\n _limitCallbacks,\n // if true, we'll only trigger callbacks if the active state toggles, so if you scroll immediately past both the start and end positions of a ScrollTrigger (thus inactive to inactive), neither its onEnter nor onLeave will be called. This is useful during startup.\n_startup = 1,\n _proxies = [],\n _scrollers = [],\n _getTime = Date.now,\n _time1 = _getTime(),\n _lastScrollTime = 0,\n _enabled = 1,\n _passThrough = function _passThrough(v) {\n return v;\n},\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _getGSAP = function _getGSAP() {\n return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n},\n _isViewport = function _isViewport(e) {\n return !!~_root.indexOf(e);\n},\n _getProxyProp = function _getProxyProp(element, property) {\n return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property];\n},\n _getScrollFunc = function _getScrollFunc(element, _ref) {\n var s = _ref.s,\n sc = _ref.sc;\n\n var i = _scrollers.indexOf(element),\n offset = sc === _vertical.sc ? 1 : 2;\n\n !~i && (i = _scrollers.push(element) - 1);\n return _scrollers[i + offset] || (_scrollers[i + offset] = _getProxyProp(element, s) || (_isViewport(element) ? sc : function (value) {\n return arguments.length ? element[s] = value : element[s];\n }));\n},\n _getBoundsFunc = function _getBoundsFunc(element) {\n return _getProxyProp(element, \"getBoundingClientRect\") || (_isViewport(element) ? function () {\n _winOffsets.width = _win.innerWidth;\n _winOffsets.height = _win.innerHeight;\n return _winOffsets;\n } : function () {\n return _getBounds(element);\n });\n},\n _getSizeFunc = function _getSizeFunc(scroller, isViewport, _ref2) {\n var d = _ref2.d,\n d2 = _ref2.d2,\n a = _ref2.a;\n return (a = _getProxyProp(scroller, \"getBoundingClientRect\")) ? function () {\n return a()[d];\n } : function () {\n return (isViewport ? _win[\"inner\" + d2] : scroller[\"client\" + d2]) || 0;\n };\n},\n _getOffsetsFunc = function _getOffsetsFunc(element, isViewport) {\n return !isViewport || ~_proxies.indexOf(element) ? _getBoundsFunc(element) : function () {\n return _winOffsets;\n };\n},\n _maxScroll = function _maxScroll(element, _ref3) {\n var s = _ref3.s,\n d2 = _ref3.d2,\n d = _ref3.d,\n a = _ref3.a;\n return (s = \"scroll\" + d2) && (a = _getProxyProp(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport(element) ? Math.max(_docEl[s], _body[s]) - (_win[\"inner\" + d2] || _docEl[\"client\" + d2] || _body[\"client\" + d2]) : element[s] - element[\"offset\" + d2];\n},\n _iterateAutoRefresh = function _iterateAutoRefresh(func, events) {\n for (var i = 0; i < _autoRefresh.length; i += 3) {\n (!events || ~events.indexOf(_autoRefresh[i + 1])) && func(_autoRefresh[i], _autoRefresh[i + 1], _autoRefresh[i + 2]);\n }\n},\n _isString = function _isString(value) {\n return typeof value === \"string\";\n},\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n},\n _isNumber = function _isNumber(value) {\n return typeof value === \"number\";\n},\n _isObject = function _isObject(value) {\n return typeof value === \"object\";\n},\n _callIfFunc = function _callIfFunc(value) {\n return _isFunction(value) && value();\n},\n _combineFunc = function _combineFunc(f1, f2) {\n return function () {\n var result1 = _callIfFunc(f1),\n result2 = _callIfFunc(f2);\n\n return function () {\n _callIfFunc(result1);\n\n _callIfFunc(result2);\n };\n };\n},\n _abs = Math.abs,\n _scrollLeft = \"scrollLeft\",\n _scrollTop = \"scrollTop\",\n _left = \"left\",\n _top = \"top\",\n _right = \"right\",\n _bottom = \"bottom\",\n _width = \"width\",\n _height = \"height\",\n _Right = \"Right\",\n _Left = \"Left\",\n _Top = \"Top\",\n _Bottom = \"Bottom\",\n _padding = \"padding\",\n _margin = \"margin\",\n _Width = \"Width\",\n _Height = \"Height\",\n _px = \"px\",\n _horizontal = {\n s: _scrollLeft,\n p: _left,\n p2: _Left,\n os: _right,\n os2: _Right,\n d: _width,\n d2: _Width,\n a: \"x\",\n sc: function sc(value) {\n return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0;\n }\n},\n _vertical = {\n s: _scrollTop,\n p: _top,\n p2: _Top,\n os: _bottom,\n os2: _Bottom,\n d: _height,\n d2: _Height,\n a: \"y\",\n op: _horizontal,\n sc: function sc(value) {\n return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0;\n }\n},\n _getComputedStyle = function _getComputedStyle(element) {\n return _win.getComputedStyle(element);\n},\n _makePositionable = function _makePositionable(element) {\n return element.style.position = _getComputedStyle(element).position === \"absolute\" ? \"absolute\" : \"relative\";\n},\n // if the element already has position: absolute, leave that, otherwise make it position: relative\n_setDefaults = function _setDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || (obj[p] = defaults[p]);\n }\n\n return obj;\n},\n //_isInViewport = element => (element = _getBounds(element)) && !(element.top > (_win.innerHeight || _docEl.clientHeight) || element.bottom < 0 || element.left > (_win.innerWidth || _docEl.clientWidth) || element.right < 0) && element,\n_getBounds = function _getBounds(element, withoutTransforms) {\n var tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== \"matrix(1, 0, 0, 1, 0, 0)\" && gsap.to(element, {\n x: 0,\n y: 0,\n xPercent: 0,\n yPercent: 0,\n rotation: 0,\n rotationX: 0,\n rotationY: 0,\n scale: 1,\n skewX: 0,\n skewY: 0\n }).progress(1),\n bounds = element.getBoundingClientRect();\n tween && tween.progress(0).kill();\n return bounds;\n},\n _getSize = function _getSize(element, _ref4) {\n var d2 = _ref4.d2;\n return element[\"offset\" + d2] || element[\"client\" + d2] || 0;\n},\n _getLabels = function _getLabels(animation) {\n return function (value) {\n var a = [],\n labels = animation.labels,\n duration = animation.duration(),\n p;\n\n for (p in labels) {\n a.push(labels[p] / duration);\n }\n\n return gsap.utils.snap(a, value);\n };\n},\n _multiListener = function _multiListener(func, element, types, callback) {\n return types.split(\",\").forEach(function (type) {\n return func(element, type, callback);\n });\n},\n _addListener = function _addListener(element, type, func) {\n return element.addEventListener(type, func, {\n passive: true\n });\n},\n _removeListener = function _removeListener(element, type, func) {\n return element.removeEventListener(type, func);\n},\n _markerDefaults = {\n startColor: \"green\",\n endColor: \"red\",\n indent: 0,\n fontSize: \"16px\",\n fontWeight: \"normal\"\n},\n _defaults = {\n toggleActions: \"play\",\n anticipatePin: 0\n},\n _keywords = {\n top: 0,\n left: 0,\n center: 0.5,\n bottom: 1,\n right: 1\n},\n _offsetToPx = function _offsetToPx(value, size) {\n if (_isString(value)) {\n var eqIndex = value.indexOf(\"=\"),\n relative = ~eqIndex ? +(value.charAt(eqIndex - 1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0;\n\n if (relative) {\n value.indexOf(\"%\") > eqIndex && (relative *= size / 100);\n value = value.substr(0, eqIndex - 1);\n }\n\n value = relative + (value in _keywords ? _keywords[value] * size : ~value.indexOf(\"%\") ? parseFloat(value) * size / 100 : parseFloat(value) || 0);\n }\n\n return value;\n},\n _createMarker = function _createMarker(type, name, container, direction, _ref5, offset, matchWidthEl) {\n var startColor = _ref5.startColor,\n endColor = _ref5.endColor,\n fontSize = _ref5.fontSize,\n indent = _ref5.indent,\n fontWeight = _ref5.fontWeight;\n\n var e = _doc.createElement(\"div\"),\n useFixedPosition = _isViewport(container) || _getProxyProp(container, \"pinType\") === \"fixed\",\n isScroller = type.indexOf(\"scroller\") !== -1,\n parent = useFixedPosition ? _body : container,\n isStart = type.indexOf(\"start\") !== -1,\n color = isStart ? startColor : endColor,\n css = \"border-color:\" + color + \";font-size:\" + fontSize + \";color:\" + color + \";font-weight:\" + fontWeight + \";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;\";\n\n css += \"position:\" + (isScroller && useFixedPosition ? \"fixed;\" : \"absolute;\");\n (isScroller || !useFixedPosition) && (css += (direction === _vertical ? _right : _bottom) + \":\" + (offset + parseFloat(indent)) + \"px;\");\n matchWidthEl && (css += \"box-sizing:border-box;text-align:left;width:\" + matchWidthEl.offsetWidth + \"px;\");\n e._isStart = isStart;\n e.setAttribute(\"class\", \"gsap-marker-\" + type);\n e.style.cssText = css;\n e.innerText = name || name === 0 ? type + \"-\" + name : type;\n parent.insertBefore(e, parent.children[0]);\n e._offset = e[\"offset\" + direction.op.d2];\n\n _positionMarker(e, 0, direction, isStart);\n\n return e;\n},\n _positionMarker = function _positionMarker(marker, start, direction, flipped) {\n var vars = {\n display: \"block\"\n },\n side = direction[flipped ? \"os2\" : \"p2\"],\n oppositeSide = direction[flipped ? \"p2\" : \"os2\"];\n marker._isFlipped = flipped;\n vars[direction.a + \"Percent\"] = flipped ? -100 : 0;\n vars[direction.a] = flipped ? 1 : 0;\n vars[\"border\" + side + _Width] = 1;\n vars[\"border\" + oppositeSide + _Width] = 0;\n vars[direction.p] = start;\n gsap.set(marker, vars);\n},\n _triggers = [],\n _ids = {},\n _sync = function _sync() {\n return _request || (_request = _raf(_updateAll));\n},\n _onScroll = function _onScroll() {\n if (!_request) {\n _request = _raf(_updateAll);\n _lastScrollTime || _dispatch(\"scrollStart\");\n _lastScrollTime = _getTime();\n }\n},\n _onResize = function _onResize() {\n return !_refreshing && _resizeDelay.restart(true);\n},\n // ignore resizes triggered by refresh()\n_listeners = {},\n _emptyArray = [],\n _media = [],\n _creatingMedia,\n // when ScrollTrigger.matchMedia() is called, we record the current media key here (like \"(min-width: 800px)\") so that we can assign it to everything that's created during that call. Then we can revert just those when necessary. In the ScrollTrigger's init() call, the _creatingMedia is recorded as a \"media\" property on the instance.\n_lastMediaTick,\n _onMediaChange = function _onMediaChange(e) {\n var tick = gsap.ticker.frame,\n matches = [],\n i = 0,\n index;\n\n if (_lastMediaTick !== tick || _startup) {\n _revertAll();\n\n for (; i < _media.length; i += 4) {\n index = _win.matchMedia(_media[i]).matches;\n\n if (index !== _media[i + 3]) {\n // note: some browsers fire the matchMedia event multiple times, like when going full screen, so we shouldn't call the function multiple times. Check to see if it's already matched.\n _media[i + 3] = index;\n index ? matches.push(i) : _revertAll(1, _media[i]) || _isFunction(_media[i + 2]) && _media[i + 2](); // Firefox doesn't update the \"matches\" property of the MediaQueryList object correctly - it only does so as it calls its change handler - so we must re-create a media query here to ensure it's accurate.\n }\n }\n\n _revertRecorded(); // in case killing/reverting any of the animations actually added inline styles back.\n\n\n for (i = 0; i < matches.length; i++) {\n index = matches[i];\n _creatingMedia = _media[index];\n _media[index + 2] = _media[index + 1](e);\n }\n\n _creatingMedia = 0;\n\n _refreshAll(0, 1);\n\n _lastMediaTick = tick;\n\n _dispatch(\"matchMedia\");\n }\n},\n _softRefresh = function _softRefresh() {\n return _removeListener(ScrollTrigger, \"scrollEnd\", _softRefresh) || _refreshAll(true);\n},\n _dispatch = function _dispatch(type) {\n return _listeners[type] && _listeners[type].map(function (f) {\n return f();\n }) || _emptyArray;\n},\n _savedStyles = [],\n // when ScrollTrigger.saveStyles() is called, the inline styles are recorded in this Array in a sequential format like [element, cssText, gsCache, media]. This keeps it very memory-efficient and fast to iterate through.\n_revertRecorded = function _revertRecorded(media) {\n for (var i = 0; i < _savedStyles.length; i += 4) {\n if (!media || _savedStyles[i + 3] === media) {\n _savedStyles[i].style.cssText = _savedStyles[i + 1];\n _savedStyles[i + 2].uncache = 1;\n }\n }\n},\n _revertAll = function _revertAll(kill, media) {\n var trigger;\n\n for (_i = 0; _i < _triggers.length; _i++) {\n trigger = _triggers[_i];\n\n if (!media || trigger.media === media) {\n if (kill) {\n trigger.kill(1);\n } else {\n trigger.scroll.rec || (trigger.scroll.rec = trigger.scroll()); // record the scroll positions so that in each refresh() we can ensure that it doesn't shift. Remember, pinning can make things change around, especially if the same element is pinned multiple times. If one was already recorded, don't re-record because unpinning may have occurred and made it shorter.\n\n trigger.revert();\n }\n }\n }\n\n _revertRecorded(media);\n\n media || _dispatch(\"revert\");\n},\n _refreshAll = function _refreshAll(force, skipRevert) {\n if (_lastScrollTime && !force) {\n _addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\n return;\n }\n\n var refreshInits = _dispatch(\"refreshInit\");\n\n _sort && ScrollTrigger.sort();\n skipRevert || _revertAll();\n\n for (_i = 0; _i < _triggers.length; _i++) {\n _triggers[_i].refresh();\n }\n\n refreshInits.forEach(function (result) {\n return result && result.render && result.render(-1);\n }); // if the onRefreshInit() returns an animation (typically a gsap.set()), revert it. This makes it easy to put things in a certain spot before refreshing for measurement purposes, and then put things back.\n\n _i = _triggers.length;\n\n while (_i--) {\n _triggers[_i].scroll.rec = 0;\n }\n\n _resizeDelay.pause();\n\n _dispatch(\"refresh\");\n},\n _lastScroll = 0,\n _direction = 1,\n _updateAll = function _updateAll() {\n var l = _triggers.length,\n time = _getTime(),\n recordVelocity = time - _time1 >= 50,\n scroll = l && _triggers[0].scroll();\n\n _direction = _lastScroll > scroll ? -1 : 1;\n _lastScroll = scroll;\n\n if (recordVelocity) {\n if (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) {\n _lastScrollTime = 0;\n\n _dispatch(\"scrollEnd\");\n }\n\n _time2 = _time1;\n _time1 = time;\n }\n\n if (_direction < 0) {\n _i = l;\n\n while (_i--) {\n _triggers[_i] && _triggers[_i].update(0, recordVelocity);\n }\n\n _direction = 1;\n } else {\n for (_i = 0; _i < l; _i++) {\n _triggers[_i] && _triggers[_i].update(0, recordVelocity);\n }\n }\n\n _request = 0;\n},\n _propNamesToCopy = [_left, _top, _bottom, _right, _margin + _Bottom, _margin + _Right, _margin + _Top, _margin + _Left, \"display\", \"flexShrink\", \"float\"],\n _stateProps = _propNamesToCopy.concat([_width, _height, \"boxSizing\", \"max\" + _Width, \"max\" + _Height, \"position\", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]),\n _swapPinOut = function _swapPinOut(pin, spacer, state) {\n _setState(state);\n\n if (pin.parentNode === spacer) {\n var parent = spacer.parentNode;\n\n if (parent) {\n parent.insertBefore(pin, spacer);\n parent.removeChild(spacer);\n }\n }\n},\n _swapPinIn = function _swapPinIn(pin, spacer, cs, spacerState) {\n if (pin.parentNode !== spacer) {\n var i = _propNamesToCopy.length,\n spacerStyle = spacer.style,\n pinStyle = pin.style,\n p;\n\n while (i--) {\n p = _propNamesToCopy[i];\n spacerStyle[p] = cs[p];\n }\n\n spacerStyle.position = cs.position === \"absolute\" ? \"absolute\" : \"relative\";\n cs.display === \"inline\" && (spacerStyle.display = \"inline-block\");\n pinStyle[_bottom] = pinStyle[_right] = \"auto\";\n spacerStyle.overflow = \"visible\";\n spacerStyle.boxSizing = \"border-box\";\n spacerStyle[_width] = _getSize(pin, _horizontal) + _px;\n spacerStyle[_height] = _getSize(pin, _vertical) + _px;\n spacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = \"0\";\n\n _setState(spacerState);\n\n pinStyle[_width] = pinStyle[\"max\" + _Width] = cs[_width];\n pinStyle[_height] = pinStyle[\"max\" + _Height] = cs[_height];\n pinStyle[_padding] = cs[_padding];\n pin.parentNode.insertBefore(spacer, pin);\n spacer.appendChild(pin);\n }\n},\n _capsExp = /([A-Z])/g,\n _setState = function _setState(state) {\n if (state) {\n var style = state.t.style,\n l = state.length,\n i = 0,\n p,\n value;\n\n for (; i < l; i += 2) {\n value = state[i + 1];\n p = state[i];\n\n if (value) {\n style[p] = value;\n } else if (style[p]) {\n style.removeProperty(p.replace(_capsExp, \"-$1\").toLowerCase());\n }\n }\n }\n},\n _getState = function _getState(element) {\n // returns an array with alternating values like [property, value, property, value] and a \"t\" property pointing to the target (element). Makes it fast and cheap.\n var l = _stateProps.length,\n style = element.style,\n state = [],\n i = 0;\n\n for (; i < l; i++) {\n state.push(_stateProps[i], style[_stateProps[i]]);\n }\n\n state.t = element;\n return state;\n},\n _copyState = function _copyState(state, override, omitOffsets) {\n var result = [],\n l = state.length,\n i = omitOffsets ? 8 : 0,\n // skip top, left, right, bottom if omitOffsets is true\n p;\n\n for (; i < l; i += 2) {\n p = state[i];\n result.push(p, p in override ? override[p] : state[i + 1]);\n }\n\n result.t = state.t;\n return result;\n},\n _winOffsets = {\n left: 0,\n top: 0\n},\n _parsePosition = function _parsePosition(value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self, scrollerBounds, borderWidth, useFixedPosition, scrollerMax) {\n _isFunction(value) && (value = value(self));\n\n if (_isString(value) && value.substr(0, 3) === \"max\") {\n value = scrollerMax + (value.charAt(4) === \"=\" ? _offsetToPx(\"0\" + value.substr(3), scrollerSize) : 0);\n }\n\n if (!_isNumber(value)) {\n _isFunction(trigger) && (trigger = trigger(self));\n\n var element = _toArray(trigger)[0] || _body,\n bounds = _getBounds(element) || {},\n offsets = value.split(\" \"),\n localOffset,\n globalOffset,\n display;\n\n if ((!bounds || !bounds.left && !bounds.top) && _getComputedStyle(element).display === \"none\") {\n // if display is \"none\", it won't report getBoundingClientRect() properly\n display = element.style.display;\n element.style.display = \"block\";\n bounds = _getBounds(element);\n display ? element.style.display = display : element.style.removeProperty(\"display\");\n }\n\n localOffset = _offsetToPx(offsets[0], bounds[direction.d]);\n globalOffset = _offsetToPx(offsets[1] || \"0\", scrollerSize);\n value = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset;\n markerScroller && _positionMarker(markerScroller, globalOffset, direction, scrollerSize - globalOffset < 20 || markerScroller._isStart && globalOffset > 20);\n scrollerSize -= scrollerSize - globalOffset; // adjust for the marker\n } else if (markerScroller) {\n _positionMarker(markerScroller, scrollerSize, direction, true);\n }\n\n if (marker) {\n var position = value + scrollerSize,\n isStart = marker._isStart;\n scrollerMax = \"scroll\" + direction.d2;\n\n _positionMarker(marker, position, direction, isStart && position > 20 || !isStart && (useFixedPosition ? Math.max(_body[scrollerMax], _docEl[scrollerMax]) : marker.parentNode[scrollerMax]) <= position + 1);\n\n if (useFixedPosition) {\n scrollerBounds = _getBounds(markerScroller);\n useFixedPosition && (marker.style[direction.op.p] = scrollerBounds[direction.op.p] - direction.op.m - marker._offset + _px);\n }\n }\n\n return Math.round(value);\n},\n _prefixExp = /(?:webkit|moz|length|cssText)/i,\n _reparent = function _reparent(element, parent, top, left) {\n if (element.parentNode !== parent) {\n var style = element.style,\n p,\n cs;\n\n if (parent === _body) {\n element._stOrig = style.cssText; // record original inline styles so we can revert them later\n\n cs = _getComputedStyle(element);\n\n for (p in cs) {\n // must copy all relevant styles to ensure that nothing changes visually when we reparent to the . Skip the vendor prefixed ones.\n if (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === \"string\" && p !== \"0\") {\n style[p] = cs[p];\n }\n }\n\n style.top = top;\n style.left = left;\n } else {\n style.cssText = element._stOrig;\n }\n\n gsap.core.getCache(element).uncache = 1;\n parent.appendChild(element);\n }\n},\n // returns a function that can be used to tween the scroll position in the direction provided, and when doing so it'll add a .tween property to the FUNCTION itself, and remove it when the tween completes or gets killed. This gives us a way to have multiple ScrollTriggers use a central function for any given scroller and see if there's a scroll tween running (which would affect if/how things get updated)\n_getTweenCreator = function _getTweenCreator(scroller, direction) {\n var getScroll = _getScrollFunc(scroller, direction),\n prop = \"_scroll\" + direction.p2,\n // add a tweenable property to the scroller that's a getter/setter function, like _scrollTop or _scrollLeft. This way, if someone does gsap.killTweensOf(scroller) it'll kill the scroll tween.\n lastScroll1,\n lastScroll2,\n getTween = function getTween(scrollTo, vars, initialValue, change1, change2) {\n var tween = getTween.tween,\n onComplete = vars.onComplete,\n modifiers = {};\n tween && tween.kill();\n lastScroll1 = Math.round(initialValue);\n vars[prop] = scrollTo;\n vars.modifiers = modifiers;\n\n modifiers[prop] = function (value) {\n value = Math.round(getScroll()); // round because in some [very uncommon] Windows environments, it can get reported with decimals even though it was set without.\n\n if (value !== lastScroll1 && value !== lastScroll2) {\n // if the user scrolls, kill the tween. iOS Safari intermittently misreports the scroll position, it may be the most recently-set one or the one before that!\n tween.kill();\n getTween.tween = 0;\n } else {\n value = initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio;\n }\n\n lastScroll2 = lastScroll1;\n return lastScroll1 = Math.round(value);\n };\n\n vars.onComplete = function () {\n getTween.tween = 0;\n onComplete && onComplete.call(tween);\n };\n\n tween = getTween.tween = gsap.to(scroller, vars);\n return tween;\n };\n\n scroller[prop] = getScroll;\n return getTween;\n};\n\n_horizontal.op = _vertical;\nexport var ScrollTrigger = /*#__PURE__*/function () {\n function ScrollTrigger(vars, animation) {\n _coreInitted || ScrollTrigger.register(gsap) || console.warn(\"Please gsap.registerPlugin(ScrollTrigger)\");\n this.init(vars, animation);\n }\n\n var _proto = ScrollTrigger.prototype;\n\n _proto.init = function init(vars, animation) {\n this.progress = 0;\n this.vars && this.kill(1); // in case it's being initted again\n\n if (!_enabled) {\n this.update = this.refresh = this.kill = _passThrough;\n return;\n }\n\n vars = _setDefaults(_isString(vars) || _isNumber(vars) || vars.nodeType ? {\n trigger: vars\n } : vars, _defaults);\n\n var direction = vars.horizontal ? _horizontal : _vertical,\n _vars = vars,\n onUpdate = _vars.onUpdate,\n toggleClass = _vars.toggleClass,\n id = _vars.id,\n onToggle = _vars.onToggle,\n onRefresh = _vars.onRefresh,\n scrub = _vars.scrub,\n trigger = _vars.trigger,\n pin = _vars.pin,\n pinSpacing = _vars.pinSpacing,\n invalidateOnRefresh = _vars.invalidateOnRefresh,\n anticipatePin = _vars.anticipatePin,\n onScrubComplete = _vars.onScrubComplete,\n onSnapComplete = _vars.onSnapComplete,\n once = _vars.once,\n snap = _vars.snap,\n pinReparent = _vars.pinReparent,\n isToggle = !scrub && scrub !== 0,\n scroller = _toArray(vars.scroller || _win)[0],\n scrollerCache = gsap.core.getCache(scroller),\n isViewport = _isViewport(scroller),\n useFixedPosition = \"pinType\" in vars ? vars.pinType === \"fixed\" : isViewport || _getProxyProp(scroller, \"pinType\") === \"fixed\",\n callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack],\n toggleActions = isToggle && vars.toggleActions.split(\" \"),\n markers = \"markers\" in vars ? vars.markers : _defaults.markers,\n borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)[\"border\" + direction.p2 + _Width]) || 0,\n self = this,\n onRefreshInit = vars.onRefreshInit && function () {\n return vars.onRefreshInit(self);\n },\n getScrollerSize = _getSizeFunc(scroller, isViewport, direction),\n getScrollerOffsets = _getOffsetsFunc(scroller, isViewport),\n tweenTo,\n pinCache,\n snapFunc,\n isReverted,\n scroll1,\n scroll2,\n start,\n end,\n markerStart,\n markerEnd,\n markerStartTrigger,\n markerEndTrigger,\n markerVars,\n change,\n pinOriginalState,\n pinActiveState,\n pinState,\n spacer,\n offset,\n pinGetter,\n pinSetter,\n pinStart,\n pinChange,\n spacingStart,\n spacerState,\n markerStartSetter,\n markerEndSetter,\n cs,\n snap1,\n snap2,\n scrubTween,\n scrubSmooth,\n snapDurClamp,\n snapDelayedCall,\n prevProgress,\n prevScroll,\n prevAnimProgress;\n\n self.media = _creatingMedia;\n anticipatePin *= 45;\n\n _triggers.push(self);\n\n self.scroller = scroller;\n self.scroll = _getScrollFunc(scroller, direction);\n scroll1 = self.scroll();\n self.vars = vars;\n animation = animation || vars.animation;\n \"refreshPriority\" in vars && (_sort = 1);\n scrollerCache.tweenScroll = scrollerCache.tweenScroll || {\n top: _getTweenCreator(scroller, _vertical),\n left: _getTweenCreator(scroller, _horizontal)\n };\n self.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p];\n\n if (animation) {\n animation.vars.lazy = false;\n animation._initted || animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.render(0, true, true);\n self.animation = animation.pause();\n animation.scrollTrigger = self;\n scrubSmooth = _isNumber(scrub) && scrub;\n scrubSmooth && (scrubTween = gsap.to(animation, {\n ease: \"power3\",\n duration: scrubSmooth,\n onComplete: function onComplete() {\n return onScrubComplete && onScrubComplete(self);\n }\n }));\n snap1 = 0;\n id || (id = animation.vars.id);\n }\n\n if (snap) {\n _isObject(snap) || (snap = {\n snapTo: snap\n });\n gsap.set(isViewport ? [_body, _docEl] : scroller, {\n scrollBehavior: \"auto\"\n }); // smooth scrolling doesn't work with snap.\n\n snapFunc = _isFunction(snap.snapTo) ? snap.snapTo : snap.snapTo === \"labels\" ? _getLabels(animation) : gsap.utils.snap(snap.snapTo);\n snapDurClamp = snap.duration || {\n min: 0.1,\n max: 2\n };\n snapDurClamp = _isObject(snapDurClamp) ? _clamp(snapDurClamp.min, snapDurClamp.max) : _clamp(snapDurClamp, snapDurClamp);\n snapDelayedCall = gsap.delayedCall(snap.delay || scrubSmooth / 2 || 0.1, function () {\n if (Math.abs(self.getVelocity()) < 10 && !_pointerIsDown) {\n var totalProgress = animation && !isToggle ? animation.totalProgress() : self.progress,\n velocity = (totalProgress - snap2) / (_getTime() - _time2) * 1000 || 0,\n change1 = _abs(velocity / 2) * velocity / 0.185,\n naturalEnd = totalProgress + change1,\n endValue = _clamp(0, 1, snapFunc(naturalEnd, self)),\n scroll = self.scroll(),\n endScroll = Math.round(start + endValue * change),\n tween = tweenTo.tween;\n\n if (scroll <= end && scroll >= start && endScroll !== scroll) {\n if (tween && !tween._initted && tween.data <= Math.abs(endScroll - scroll)) {\n // there's an overlapping snap! So we must figure out which one is closer and let that tween live.\n return;\n }\n\n tweenTo(endScroll, {\n duration: snapDurClamp(_abs(Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05 || 0)),\n ease: snap.ease || \"power3\",\n data: Math.abs(endScroll - scroll),\n // record the distance so that if another snap tween occurs (conflict) we can prioritize the closest snap.\n onComplete: function onComplete() {\n snap1 = snap2 = animation && !isToggle ? animation.totalProgress() : self.progress;\n onSnapComplete && onSnapComplete(self);\n }\n }, scroll, change1 * change, endScroll - scroll - change1 * change);\n }\n } else if (self.isActive) {\n snapDelayedCall.restart(true);\n }\n }).pause();\n }\n\n id && (_ids[id] = self);\n trigger = self.trigger = _toArray(trigger || pin)[0];\n pin = pin === true ? trigger : _toArray(pin)[0];\n _isString(toggleClass) && (toggleClass = {\n targets: trigger,\n className: toggleClass\n });\n\n if (pin) {\n pinSpacing === false || pinSpacing === _margin || (pinSpacing = !pinSpacing && _getComputedStyle(pin.parentNode).display === \"flex\" ? false : _padding); // if the parent is display: flex, don't apply pinSpacing by default.\n\n self.pin = pin;\n vars.force3D !== false && gsap.set(pin, {\n force3D: true\n });\n pinCache = gsap.core.getCache(pin);\n\n if (!pinCache.spacer) {\n // record the spacer and pinOriginalState on the cache in case someone tries pinning the same element with MULTIPLE ScrollTriggers - we don't want to have multiple spacers or record the \"original\" pin state after it has already been affected by another ScrollTrigger.\n pinCache.spacer = spacer = _doc.createElement(\"div\");\n spacer.setAttribute(\"class\", \"pin-spacer\" + (id ? \" pin-spacer-\" + id : \"\"));\n pinCache.pinState = pinOriginalState = _getState(pin);\n } else {\n pinOriginalState = pinCache.pinState;\n }\n\n self.spacer = spacer = pinCache.spacer;\n cs = _getComputedStyle(pin);\n spacingStart = cs[pinSpacing + direction.os2];\n pinGetter = gsap.getProperty(pin);\n pinSetter = gsap.quickSetter(pin, direction.a, _px); // pin.firstChild && !_maxScroll(pin, direction) && (pin.style.overflow = \"hidden\"); // protects from collapsing margins, but can have unintended consequences as demonstrated here: https://codepen.io/GreenSock/pen/1e42c7a73bfa409d2cf1e184e7a4248d so it was removed in favor of just telling people to set up their CSS to avoid the collapsing margins (overflow: hidden | auto is just one option. Another is border-top: 1px solid transparent).\n\n _swapPinIn(pin, spacer, cs);\n\n pinState = _getState(pin);\n }\n\n if (markers) {\n markerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults;\n markerStartTrigger = _createMarker(\"scroller-start\", id, scroller, direction, markerVars, 0);\n markerEndTrigger = _createMarker(\"scroller-end\", id, scroller, direction, markerVars, 0, markerStartTrigger);\n offset = markerStartTrigger[\"offset\" + direction.op.d2];\n markerStart = _createMarker(\"start\", id, scroller, direction, markerVars, offset);\n markerEnd = _createMarker(\"end\", id, scroller, direction, markerVars, offset);\n\n if (!useFixedPosition) {\n _makePositionable(scroller);\n\n gsap.set([markerStartTrigger, markerEndTrigger], {\n force3D: true\n });\n markerStartSetter = gsap.quickSetter(markerStartTrigger, direction.a, _px);\n markerEndSetter = gsap.quickSetter(markerEndTrigger, direction.a, _px);\n }\n }\n\n self.revert = function (revert) {\n var r = revert !== false || !self.enabled,\n prevRefreshing = _refreshing;\n\n if (r !== isReverted) {\n if (r) {\n prevScroll = Math.max(self.scroll(), self.scroll.rec || 0); // record the scroll so we can revert later (repositioning/pinning things can affect scroll position). In the static refresh() method, we first record all the scroll positions as a reference.\n\n prevProgress = self.progress;\n prevAnimProgress = animation && animation.progress();\n }\n\n markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {\n return m.style.display = r ? \"none\" : \"block\";\n });\n r && (_refreshing = 1);\n self.update(r); // make sure the pin is back in its original position so that all the measurements are correct.\n\n _refreshing = prevRefreshing;\n pin && (r ? _swapPinOut(pin, spacer, pinOriginalState) : (!pinReparent || !self.isActive) && _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState));\n isReverted = r;\n }\n };\n\n self.refresh = function (soft) {\n if (_refreshing || !self.enabled) {\n return;\n }\n\n if (pin && soft && _lastScrollTime) {\n _addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\n return;\n }\n\n _refreshing = 1;\n scrubTween && scrubTween.kill();\n invalidateOnRefresh && animation && animation.progress(0).invalidate();\n isReverted || self.revert();\n\n var size = getScrollerSize(),\n scrollerBounds = getScrollerOffsets(),\n max = _maxScroll(scroller, direction),\n offset = 0,\n otherPinOffset = 0,\n parsedEnd = vars.end,\n parsedEndTrigger = vars.endTrigger || trigger,\n parsedStart = vars.start || (vars.start === 0 ? 0 : pin || !trigger ? \"0 0\" : \"0 100%\"),\n triggerIndex = trigger && Math.max(0, _triggers.indexOf(self)) || 0,\n i = triggerIndex,\n cs,\n bounds,\n scroll,\n isVertical,\n override,\n curTrigger,\n curPin,\n oppositeScroll;\n\n while (i--) {\n // user might try to pin the same element more than once, so we must find any prior triggers with the same pin, revert them, and determine how long they're pinning so that we can offset things appropriately. Make sure we revert from last to first so that things \"rewind\" properly.\n curPin = _triggers[i].pin;\n curPin && (curPin === trigger || curPin === pin) && _triggers[i].revert();\n }\n\n start = _parsePosition(parsedStart, trigger, size, direction, self.scroll(), markerStart, markerStartTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max) || (pin ? -0.001 : 0);\n _isFunction(parsedEnd) && (parsedEnd = parsedEnd(self));\n\n if (_isString(parsedEnd) && !parsedEnd.indexOf(\"+=\")) {\n if (~parsedEnd.indexOf(\" \")) {\n parsedEnd = (_isString(parsedStart) ? parsedStart.split(\" \")[0] : \"\") + parsedEnd;\n } else {\n offset = _offsetToPx(parsedEnd.substr(2), size);\n parsedEnd = _isString(parsedStart) ? parsedStart : start + offset; // _parsePosition won't factor in the offset if the start is a number, so do it here.\n\n parsedEndTrigger = trigger;\n }\n }\n\n end = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? \"100% 0\" : max), parsedEndTrigger, size, direction, self.scroll() + offset, markerEnd, markerEndTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max)) || -0.001;\n change = end - start || (start -= 0.01) && 0.001;\n offset = 0;\n i = triggerIndex;\n\n while (i--) {\n curTrigger = _triggers[i];\n curPin = curTrigger.pin;\n\n if (curPin && curTrigger.start - curTrigger._pinPush < start) {\n cs = curTrigger.end - curTrigger.start;\n curPin === trigger && (offset += cs);\n curPin === pin && (otherPinOffset += cs);\n }\n }\n\n start += offset;\n end += offset;\n self._pinPush = otherPinOffset;\n\n if (markerStart && offset) {\n // offset the markers if necessary\n cs = {};\n cs[direction.a] = \"+=\" + offset;\n gsap.set([markerStart, markerEnd], cs);\n }\n\n if (pin) {\n cs = _getComputedStyle(pin);\n isVertical = direction === _vertical;\n scroll = self.scroll(); // recalculate because the triggers can affect the scroll\n\n pinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset;\n !max && end > 1 && ((isViewport ? _body : scroller).style[\"overflow-\" + direction.a] = \"scroll\"); // makes sure the scroller has a scrollbar, otherwise if something has width: 100%, for example, it would be too big (exclude the scrollbar). See https://greensock.com/forums/topic/25182-scrolltrigger-width-of-page-increase-where-markers-are-set-to-false/\n\n _swapPinIn(pin, spacer, cs);\n\n pinState = _getState(pin); // transforms will interfere with the top/left/right/bottom placement, so remove them temporarily. getBoundingClientRect() factors in transforms.\n\n bounds = _getBounds(pin, true);\n oppositeScroll = useFixedPosition && _getScrollFunc(scroller, isVertical ? _horizontal : _vertical)();\n\n if (pinSpacing) {\n spacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px];\n spacerState.t = spacer;\n i = pinSpacing === _padding ? _getSize(pin, direction) + change + otherPinOffset : 0;\n i && spacerState.push(direction.d, i + _px); // for box-sizing: border-box (must include padding).\n\n _setState(spacerState);\n\n useFixedPosition && self.scroll(prevScroll);\n }\n\n if (useFixedPosition) {\n override = {\n top: bounds.top + (isVertical ? scroll - start : oppositeScroll) + _px,\n left: bounds.left + (isVertical ? oppositeScroll : scroll - start) + _px,\n boxSizing: \"border-box\",\n position: \"fixed\"\n };\n override[_width] = override[\"max\" + _Width] = Math.ceil(bounds.width) + _px;\n override[_height] = override[\"max\" + _Height] = Math.ceil(bounds.height) + _px;\n override[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = \"0\";\n override[_padding] = cs[_padding];\n override[_padding + _Top] = cs[_padding + _Top];\n override[_padding + _Right] = cs[_padding + _Right];\n override[_padding + _Bottom] = cs[_padding + _Bottom];\n override[_padding + _Left] = cs[_padding + _Left];\n pinActiveState = _copyState(pinOriginalState, override, pinReparent);\n }\n\n if (animation) {\n // the animation might be affecting the transform, so we must jump to the end, check the value, and compensate accordingly. Otherwise, when it becomes unpinned, the pinSetter() will get set to a value that doesn't include whatever the animation did.\n animation.progress(1, true);\n pinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset;\n change !== pinChange && pinActiveState.splice(pinActiveState.length - 2, 2); // transform is the last property/value set in the state Array. Since the animation is controlling that, we should omit it.\n\n animation.progress(0, true);\n } else {\n pinChange = change;\n }\n } else if (trigger && self.scroll()) {\n // it may be INSIDE a pinned element, so walk up the tree and look for any elements with _pinOffset to compensate because anything with pinSpacing that's already scrolled would throw off the measurements in getBoundingClientRect()\n bounds = trigger.parentNode;\n\n while (bounds && bounds !== _body) {\n if (bounds._pinOffset) {\n start -= bounds._pinOffset;\n end -= bounds._pinOffset;\n }\n\n bounds = bounds.parentNode;\n }\n }\n\n for (i = 0; i < triggerIndex; i++) {\n // make sure we revert from first to last to make sure things reach their end state properly\n curTrigger = _triggers[i].pin;\n curTrigger && (curTrigger === trigger || curTrigger === pin) && _triggers[i].revert(false);\n }\n\n self.start = start;\n self.end = end;\n scroll1 = scroll2 = self.scroll(); // reset velocity\n\n scroll1 < prevScroll && self.scroll(prevScroll);\n self.revert(false);\n _refreshing = 0;\n prevAnimProgress && isToggle && animation.progress(prevAnimProgress, true);\n\n if (prevProgress !== self.progress) {\n // ensures that the direction is set properly (when refreshing, progress is set back to 0 initially, then back again to wherever it needs to be) and that callbacks are triggered.\n scrubTween && animation.totalProgress(prevProgress, true); // to avoid issues where animation callbacks like onStart aren't triggered.\n\n self.progress = prevProgress;\n self.update();\n }\n\n pin && pinSpacing && (spacer._pinOffset = Math.round(self.progress * pinChange));\n onRefresh && onRefresh(self);\n };\n\n self.getVelocity = function () {\n return (self.scroll() - scroll2) / (_getTime() - _time2) * 1000 || 0;\n };\n\n self.update = function (reset, recordVelocity) {\n var scroll = self.scroll(),\n p = reset ? 0 : (scroll - start) / change,\n clipped = p < 0 ? 0 : p > 1 ? 1 : p || 0,\n prevProgress = self.progress,\n isActive,\n wasActive,\n toggleState,\n action,\n stateChanged,\n toggled;\n\n if (recordVelocity) {\n scroll2 = scroll1;\n scroll1 = scroll;\n\n if (snap) {\n snap2 = snap1;\n snap1 = animation && !isToggle ? animation.totalProgress() : clipped;\n }\n } // anticipate the pinning a few ticks ahead of time based on velocity to avoid a visual glitch due to the fact that most browsers do scrolling on a separate thread (not synced with requestAnimationFrame).\n\n\n anticipatePin && !clipped && pin && !_refreshing && !_startup && _lastScrollTime && start < scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin && (clipped = 0.0001);\n\n if (clipped !== prevProgress && self.enabled) {\n isActive = self.isActive = !!clipped && clipped < 1;\n wasActive = !!prevProgress && prevProgress < 1;\n toggled = isActive !== wasActive;\n stateChanged = toggled || !!clipped !== !!prevProgress; // could go from start all the way to end, thus it didn't toggle but it did change state in a sense (may need to fire a callback)\n\n self.direction = clipped > prevProgress ? 1 : -1;\n self.progress = clipped;\n\n if (!isToggle) {\n if (scrubTween && !_refreshing && !_startup) {\n scrubTween.vars.totalProgress = clipped;\n scrubTween.invalidate().restart();\n } else if (animation) {\n animation.totalProgress(clipped, !!_refreshing);\n }\n }\n\n if (pin) {\n reset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart);\n\n if (!useFixedPosition) {\n pinSetter(pinStart + pinChange * clipped);\n } else if (stateChanged) {\n action = !reset && clipped > prevProgress && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction); // if it's at the VERY end of the page, don't switch away from position: fixed because it's pointless and it could cause a brief flash when the user scrolls back up (when it gets pinned again)\n\n if (pinReparent) {\n if (!reset && (isActive || action)) {\n var bounds = _getBounds(pin, true),\n _offset = scroll - start;\n\n _reparent(pin, _body, bounds.top + (direction === _vertical ? _offset : 0) + _px, bounds.left + (direction === _vertical ? 0 : _offset) + _px);\n } else {\n _reparent(pin, spacer);\n }\n }\n\n _setState(isActive || action ? pinActiveState : pinState);\n\n pinChange !== change && clipped < 1 && isActive || pinSetter(pinStart + (clipped === 1 && !action ? pinChange : 0));\n }\n }\n\n snap && !tweenTo.tween && !_refreshing && !_startup && snapDelayedCall.restart(true);\n toggleClass && (toggled || once && clipped && (clipped < 1 || !_limitCallbacks)) && _toArray(toggleClass.targets).forEach(function (el) {\n return el.classList[isActive || once ? \"add\" : \"remove\"](toggleClass.className);\n }); // classes could affect positioning, so do it even if reset or refreshing is true.\n\n onUpdate && !isToggle && !reset && onUpdate(self);\n\n if (stateChanged && !_refreshing) {\n toggleState = clipped && !prevProgress ? 0 : clipped === 1 ? 1 : prevProgress === 1 ? 2 : 3; // 0 = enter, 1 = leave, 2 = enterBack, 3 = leaveBack (we prioritize the FIRST encounter, thus if you scroll really fast past the onEnter and onLeave in one tick, it'd prioritize onEnter.\n\n if (isToggle) {\n action = !toggled && toggleActions[toggleState + 1] !== \"none\" && toggleActions[toggleState + 1] || toggleActions[toggleState]; // if it didn't toggle, that means it shot right past and since we prioritize the \"enter\" action, we should switch to the \"leave\" in this case (but only if one is defined)\n\n if (animation && (action === \"complete\" || action === \"reset\" || action in animation)) {\n if (action === \"complete\") {\n animation.pause().totalProgress(1);\n } else if (action === \"reset\") {\n animation.restart(true).pause();\n } else {\n animation[action]();\n }\n }\n\n onUpdate && onUpdate(self);\n }\n\n if (toggled || !_limitCallbacks) {\n // on startup, the page could be scrolled and we don't want to fire callbacks that didn't toggle. For example onEnter shouldn't fire if the ScrollTrigger isn't actually entered.\n onToggle && toggled && onToggle(self);\n callbacks[toggleState] && callbacks[toggleState](self);\n once && (clipped === 1 ? self.kill(false, 1) : callbacks[toggleState] = 0); // a callback shouldn't be called again if once is true.\n\n if (!toggled) {\n // it's possible to go completely past, like from before the start to after the end (or vice-versa) in which case BOTH callbacks should be fired in that order\n toggleState = clipped === 1 ? 1 : 3;\n callbacks[toggleState] && callbacks[toggleState](self);\n }\n }\n } else if (isToggle && onUpdate && !_refreshing) {\n onUpdate(self);\n }\n } // update absolutely-positioned markers (only if the scroller isn't the viewport)\n\n\n if (markerEndSetter) {\n markerStartSetter(scroll + (markerStartTrigger._isFlipped ? 1 : 0));\n markerEndSetter(scroll);\n }\n };\n\n self.enable = function () {\n if (!self.enabled) {\n self.enabled = true;\n\n _addListener(scroller, \"resize\", _onResize);\n\n _addListener(scroller, \"scroll\", _onScroll);\n\n onRefreshInit && _addListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n !animation || !animation.add ? self.refresh() : gsap.delayedCall(0.01, function () {\n return start || end || self.refresh();\n }) && (change = 0.01) && (start = end = 0); // if the animation is a timeline, it may not have been populated yet, so it wouldn't render at the proper place on the first refresh(), thus we should schedule one for the next tick.\n }\n };\n\n self.disable = function (reset, allowAnimation) {\n if (self.enabled) {\n reset !== false && self.revert();\n self.enabled = self.isActive = false;\n allowAnimation || scrubTween && scrubTween.pause();\n prevScroll = 0;\n pinCache && (pinCache.uncache = 1);\n onRefreshInit && _removeListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\n if (snapDelayedCall) {\n snapDelayedCall.pause();\n tweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0);\n }\n\n if (!isViewport) {\n var i = _triggers.length;\n\n while (i--) {\n if (_triggers[i].scroller === scroller && _triggers[i] !== self) {\n return; //don't remove the listeners if there are still other triggers referencing it.\n }\n }\n\n _removeListener(scroller, \"resize\", _onResize);\n\n _removeListener(scroller, \"scroll\", _onScroll);\n }\n }\n };\n\n self.kill = function (revert, allowAnimation) {\n self.disable(revert, allowAnimation);\n id && delete _ids[id];\n\n var i = _triggers.indexOf(self);\n\n _triggers.splice(i, 1);\n\n i === _i && _direction > 0 && _i--; // if we're in the middle of a refresh() or update(), splicing would cause skips in the index, so adjust...\n\n if (animation) {\n animation.scrollTrigger = null;\n revert && animation.render(-1);\n allowAnimation || animation.kill();\n }\n\n markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {\n return m.parentNode.removeChild(m);\n });\n pinCache && (pinCache.uncache = 1);\n };\n\n self.enable();\n };\n\n ScrollTrigger.register = function register(core) {\n if (!_coreInitted) {\n gsap = core || _getGSAP();\n\n if (_windowExists() && window.document) {\n _win = window;\n _doc = document;\n _docEl = _doc.documentElement;\n _body = _doc.body;\n }\n\n if (gsap) {\n _toArray = gsap.utils.toArray;\n _clamp = gsap.utils.clamp;\n gsap.core.globals(\"ScrollTrigger\", ScrollTrigger); // must register the global manually because in Internet Explorer, functions (classes) don't have a \"name\" property.\n\n if (_body) {\n _raf = _win.requestAnimationFrame || function (f) {\n return setTimeout(f, 16);\n };\n\n _addListener(_win, \"mousewheel\", _onScroll);\n\n _root = [_win, _doc, _docEl, _body];\n\n _addListener(_doc, \"scroll\", _onScroll); // some browsers (like Chrome), the window stops dispatching scroll events on the window if you scroll really fast, but it's consistent on the document!\n\n\n var bodyStyle = _body.style,\n border = bodyStyle.borderTop,\n bounds;\n bodyStyle.borderTop = \"1px solid #000\"; // works around an issue where a margin of a child element could throw off the bounds of the _body, making it seem like there's a margin when there actually isn't. The border ensures that the bounds are accurate.\n\n bounds = _getBounds(_body);\n _vertical.m = Math.round(bounds.top + _vertical.sc()) || 0; // accommodate the offset of the caused by margins and/or padding\n\n _horizontal.m = Math.round(bounds.left + _horizontal.sc()) || 0;\n border ? bodyStyle.borderTop = border : bodyStyle.removeProperty(\"border-top\");\n _syncInterval = setInterval(_sync, 200);\n gsap.delayedCall(0.5, function () {\n return _startup = 0;\n });\n\n _addListener(_doc, \"touchcancel\", _passThrough); // some older Android devices intermittently stop dispatching \"touchmove\" events if we don't listen for \"touchcancel\" on the document.\n\n\n _addListener(_body, \"touchstart\", _passThrough); //works around Safari bug: https://greensock.com/forums/topic/21450-draggable-in-iframe-on-mobile-is-buggy/\n\n\n _multiListener(_addListener, _doc, \"pointerdown,touchstart,mousedown\", function () {\n return _pointerIsDown = 1;\n });\n\n _multiListener(_addListener, _doc, \"pointerup,touchend,mouseup\", function () {\n return _pointerIsDown = 0;\n });\n\n _transformProp = gsap.utils.checkPrefix(\"transform\");\n\n _stateProps.push(_transformProp);\n\n _coreInitted = _getTime();\n _resizeDelay = gsap.delayedCall(0.2, _refreshAll).pause();\n _autoRefresh = [_doc, \"visibilitychange\", function () {\n var w = _win.innerWidth,\n h = _win.innerHeight;\n\n if (_doc.hidden) {\n _prevWidth = w;\n _prevHeight = h;\n } else if (_prevWidth !== w || _prevHeight !== h) {\n _onResize();\n }\n }, _doc, \"DOMContentLoaded\", _refreshAll, _win, \"load\", function () {\n return _lastScrollTime || _refreshAll();\n }, _win, \"resize\", _onResize];\n\n _iterateAutoRefresh(_addListener);\n }\n }\n }\n\n return _coreInitted;\n };\n\n ScrollTrigger.defaults = function defaults(config) {\n for (var p in config) {\n _defaults[p] = config[p];\n }\n };\n\n ScrollTrigger.kill = function kill() {\n _enabled = 0;\n\n _triggers.slice(0).forEach(function (trigger) {\n return trigger.kill(1);\n });\n };\n\n ScrollTrigger.config = function config(vars) {\n \"limitCallbacks\" in vars && (_limitCallbacks = !!vars.limitCallbacks);\n var ms = vars.syncInterval;\n ms && clearInterval(_syncInterval) || (_syncInterval = ms) && setInterval(_sync, ms);\n \"autoRefreshEvents\" in vars && (_iterateAutoRefresh(_removeListener) || _iterateAutoRefresh(_addListener, vars.autoRefreshEvents || \"none\"));\n };\n\n ScrollTrigger.scrollerProxy = function scrollerProxy(target, vars) {\n var t = _toArray(target)[0];\n\n _isViewport(t) ? _proxies.unshift(_win, vars, _body, vars, _docEl, vars) : _proxies.unshift(t, vars);\n };\n\n ScrollTrigger.matchMedia = function matchMedia(vars) {\n // _media is populated in the following order: mediaQueryString, onMatch, onUnmatch, isMatched. So if there are two media queries, the Array would have a length of 8\n var mq, p, i, func, result;\n\n for (p in vars) {\n i = _media.indexOf(p);\n func = vars[p];\n _creatingMedia = p;\n\n if (p === \"all\") {\n func();\n } else {\n mq = _win.matchMedia(p);\n\n if (mq) {\n mq.matches && (result = func());\n\n if (~i) {\n _media[i + 1] = _combineFunc(_media[i + 1], func);\n _media[i + 2] = _combineFunc(_media[i + 2], result);\n } else {\n i = _media.length;\n\n _media.push(p, func, result);\n\n mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener(\"change\", _onMediaChange);\n }\n\n _media[i + 3] = mq.matches;\n }\n }\n\n _creatingMedia = 0;\n }\n\n return _media;\n };\n\n ScrollTrigger.clearMatchMedia = function clearMatchMedia(query) {\n query || (_media.length = 0);\n query = _media.indexOf(query);\n query >= 0 && _media.splice(query, 4);\n };\n\n return ScrollTrigger;\n}();\nScrollTrigger.version = \"3.5.1\";\n\nScrollTrigger.saveStyles = function (targets) {\n return targets ? _toArray(targets).forEach(function (target) {\n var i = _savedStyles.indexOf(target);\n\n i >= 0 && _savedStyles.splice(i, 4);\n\n _savedStyles.push(target, target.style.cssText, gsap.core.getCache(target), _creatingMedia);\n }) : _savedStyles;\n};\n\nScrollTrigger.revert = function (soft, media) {\n return _revertAll(!soft, media);\n};\n\nScrollTrigger.create = function (vars, animation) {\n return new ScrollTrigger(vars, animation);\n};\n\nScrollTrigger.refresh = function (safe) {\n return safe ? _onResize() : _refreshAll(true);\n};\n\nScrollTrigger.update = _updateAll;\n\nScrollTrigger.maxScroll = function (element, horizontal) {\n return _maxScroll(element, horizontal ? _horizontal : _vertical);\n};\n\nScrollTrigger.getScrollFunc = function (element, horizontal) {\n return _getScrollFunc(_toArray(element)[0], horizontal ? _horizontal : _vertical);\n};\n\nScrollTrigger.getById = function (id) {\n return _ids[id];\n};\n\nScrollTrigger.getAll = function () {\n return _triggers.slice(0);\n};\n\nScrollTrigger.isScrolling = function () {\n return !!_lastScrollTime;\n};\n\nScrollTrigger.addEventListener = function (type, callback) {\n var a = _listeners[type] || (_listeners[type] = []);\n ~a.indexOf(callback) || a.push(callback);\n};\n\nScrollTrigger.removeEventListener = function (type, callback) {\n var a = _listeners[type],\n i = a && a.indexOf(callback);\n i >= 0 && a.splice(i, 1);\n};\n\nScrollTrigger.batch = function (targets, vars) {\n var result = [],\n varsCopy = {},\n interval = vars.interval || 0.016,\n batchMax = vars.batchMax || 1e9,\n proxyCallback = function proxyCallback(type, callback) {\n var elements = [],\n triggers = [],\n delay = gsap.delayedCall(interval, function () {\n callback(elements, triggers);\n elements = [];\n triggers = [];\n }).pause();\n return function (self) {\n elements.length || delay.restart(true);\n elements.push(self.trigger);\n triggers.push(self);\n batchMax <= elements.length && delay.progress(1);\n };\n },\n p;\n\n for (p in vars) {\n varsCopy[p] = p.substr(0, 2) === \"on\" && _isFunction(vars[p]) && p !== \"onRefreshInit\" ? proxyCallback(p, vars[p]) : vars[p];\n }\n\n if (_isFunction(batchMax)) {\n batchMax = batchMax();\n\n _addListener(ScrollTrigger, \"refresh\", function () {\n return batchMax = vars.batchMax();\n });\n }\n\n _toArray(targets).forEach(function (target) {\n var config = {};\n\n for (p in varsCopy) {\n config[p] = varsCopy[p];\n }\n\n config.trigger = target;\n result.push(ScrollTrigger.create(config));\n });\n\n return result;\n};\n\nScrollTrigger.sort = function (func) {\n return _triggers.sort(func || function (a, b) {\n return (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6);\n });\n};\n\n_getGSAP() && gsap.registerPlugin(ScrollTrigger);\nexport { ScrollTrigger as default };","/*!\n * ScrollToPlugin 3.5.1\n * https://greensock.com\n *\n * @license Copyright 2008-2020, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar gsap,\n _coreInitted,\n _window,\n _docEl,\n _body,\n _toArray,\n _config,\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _getGSAP = function _getGSAP() {\n return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n},\n _isString = function _isString(value) {\n return typeof value === \"string\";\n},\n _max = function _max(element, axis) {\n var dim = axis === \"x\" ? \"Width\" : \"Height\",\n scroll = \"scroll\" + dim,\n client = \"client\" + dim;\n return element === _window || element === _docEl || element === _body ? Math.max(_docEl[scroll], _body[scroll]) - (_window[\"inner\" + dim] || _docEl[client] || _body[client]) : element[scroll] - element[\"offset\" + dim];\n},\n _buildGetter = function _buildGetter(e, axis) {\n //pass in an element and an axis (\"x\" or \"y\") and it'll return a getter function for the scroll position of that element (like scrollTop or scrollLeft, although if the element is the window, it'll use the pageXOffset/pageYOffset or the documentElement's scrollTop/scrollLeft or document.body's. Basically this streamlines things and makes a very fast getter across browsers.\n var p = \"scroll\" + (axis === \"x\" ? \"Left\" : \"Top\");\n\n if (e === _window) {\n if (e.pageXOffset != null) {\n p = \"page\" + axis.toUpperCase() + \"Offset\";\n } else {\n e = _docEl[p] != null ? _docEl : _body;\n }\n }\n\n return function () {\n return e[p];\n };\n},\n _getOffset = function _getOffset(element, container) {\n var rect = _toArray(element)[0].getBoundingClientRect(),\n isRoot = !container || container === _window || container === _body,\n cRect = isRoot ? {\n top: _docEl.clientTop - (_window.pageYOffset || _docEl.scrollTop || _body.scrollTop || 0),\n left: _docEl.clientLeft - (_window.pageXOffset || _docEl.scrollLeft || _body.scrollLeft || 0)\n } : container.getBoundingClientRect(),\n offsets = {\n x: rect.left - cRect.left,\n y: rect.top - cRect.top\n };\n\n if (!isRoot && container) {\n //only add the current scroll position if it's not the window/body.\n offsets.x += _buildGetter(container, \"x\")();\n offsets.y += _buildGetter(container, \"y\")();\n }\n\n return offsets;\n},\n _parseVal = function _parseVal(value, target, axis, currentVal, offset) {\n return !isNaN(value) && typeof value !== \"object\" ? parseFloat(value) - offset : _isString(value) && value.charAt(1) === \"=\" ? parseFloat(value.substr(2)) * (value.charAt(0) === \"-\" ? -1 : 1) + currentVal - offset : value === \"max\" ? _max(target, axis) - offset : Math.min(_max(target, axis), _getOffset(value, target)[axis] - offset);\n},\n _initCore = function _initCore() {\n gsap = _getGSAP();\n\n if (_windowExists() && gsap && document.body) {\n _window = window;\n _body = document.body;\n _docEl = document.documentElement;\n _toArray = gsap.utils.toArray;\n gsap.config({\n autoKillThreshold: 7\n });\n _config = gsap.config();\n _coreInitted = 1;\n }\n};\n\nexport var ScrollToPlugin = {\n version: \"3.5.1\",\n name: \"scrollTo\",\n rawVars: 1,\n register: function register(core) {\n gsap = core;\n\n _initCore();\n },\n init: function init(target, value, tween, index, targets) {\n if (!_coreInitted) {\n _initCore();\n }\n\n var data = this;\n data.isWin = target === _window;\n data.target = target;\n data.tween = tween;\n\n if (typeof value !== \"object\") {\n value = {\n y: value\n }; //if we don't receive an object as the parameter, assume the user intends \"y\".\n\n if (_isString(value.y) && value.y !== \"max\" && value.y.charAt(1) !== \"=\") {\n value.x = value.y;\n }\n } else if (value.nodeType) {\n value = {\n y: value,\n x: value\n };\n }\n\n data.vars = value;\n data.autoKill = !!value.autoKill;\n data.getX = _buildGetter(target, \"x\");\n data.getY = _buildGetter(target, \"y\");\n data.x = data.xPrev = data.getX();\n data.y = data.yPrev = data.getY();\n\n if (value.x != null) {\n data.add(data, \"x\", data.x, _parseVal(value.x, target, \"x\", data.x, value.offsetX || 0), index, targets, Math.round);\n\n data._props.push(\"scrollTo_x\");\n } else {\n data.skipX = 1;\n }\n\n if (value.y != null) {\n data.add(data, \"y\", data.y, _parseVal(value.y, target, \"y\", data.y, value.offsetY || 0), index, targets, Math.round);\n\n data._props.push(\"scrollTo_y\");\n } else {\n data.skipY = 1;\n }\n },\n render: function render(ratio, data) {\n var pt = data._pt,\n target = data.target,\n tween = data.tween,\n autoKill = data.autoKill,\n xPrev = data.xPrev,\n yPrev = data.yPrev,\n isWin = data.isWin,\n x,\n y,\n yDif,\n xDif,\n threshold;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n x = isWin || !data.skipX ? data.getX() : xPrev;\n y = isWin || !data.skipY ? data.getY() : yPrev;\n yDif = y - yPrev;\n xDif = x - xPrev;\n threshold = _config.autoKillThreshold;\n\n if (data.x < 0) {\n //can't scroll to a position less than 0! Might happen if someone uses a Back.easeOut or Elastic.easeOut when scrolling back to the top of the page (for example)\n data.x = 0;\n }\n\n if (data.y < 0) {\n data.y = 0;\n }\n\n if (autoKill) {\n //note: iOS has a bug that throws off the scroll by several pixels, so we need to check if it's within 7 pixels of the previous one that we set instead of just looking for an exact match.\n if (!data.skipX && (xDif > threshold || xDif < -threshold) && x < _max(target, \"x\")) {\n data.skipX = 1; //if the user scrolls separately, we should stop tweening!\n }\n\n if (!data.skipY && (yDif > threshold || yDif < -threshold) && y < _max(target, \"y\")) {\n data.skipY = 1; //if the user scrolls separately, we should stop tweening!\n }\n\n if (data.skipX && data.skipY) {\n tween.kill();\n\n if (data.vars.onAutoKill) {\n data.vars.onAutoKill.apply(tween, data.vars.onAutoKillParams || []);\n }\n }\n }\n\n if (isWin) {\n _window.scrollTo(!data.skipX ? data.x : x, !data.skipY ? data.y : y);\n } else {\n if (!data.skipY) {\n target.scrollTop = data.y;\n }\n\n if (!data.skipX) {\n target.scrollLeft = data.x;\n }\n }\n\n data.xPrev = data.x;\n data.yPrev = data.y;\n },\n kill: function kill(property) {\n var both = property === \"scrollTo\";\n\n if (both || property === \"scrollTo_x\") {\n this.skipX = 1;\n }\n\n if (both || property === \"scrollTo_y\") {\n this.skipY = 1;\n }\n }\n};\nScrollToPlugin.max = _max;\nScrollToPlugin.getOffset = _getOffset;\nScrollToPlugin.buildGetter = _buildGetter;\n_getGSAP() && gsap.registerPlugin(ScrollToPlugin);\nexport { ScrollToPlugin as default };","import { ScrollTrigger } from \"gsap/ScrollTrigger\";\r\nimport { ScrollToPlugin } from \"gsap/ScrollToPlugin\";\r\nimport ClassWatcher from './classWatcher';\r\n\r\ngsap.registerPlugin(ScrollTrigger);\r\ngsap.registerPlugin(ScrollToPlugin);\r\n\r\nexport default class Animations {\r\n \r\n static init() {\r\n\r\n\t\tvar bodyHeight = document.querySelector('body').offsetHeight;\r\n\t\t\r\n\t\tvar header = document.querySelector('.header');\r\n\r\n\t\t/* *********** */\r\n\t\t/* STICKY MENU */\r\n\t\t/* *********** */\r\n\r\n\t\tlet stickyMenuST = ScrollTrigger.create({\r\n\t\t\ttrigger: \".header\",\r\n\t\t\tstart: \"2px\",\r\n\t\t\tend: \"+=\" + bodyHeight,\r\n\t\t\tmarkers: false,\r\n\t\t\tpin: \".header\",\r\n\t\t\tpinSpacing: false,\r\n\t\t\tonEnter: () => header.classList.add('header--negative'),\r\n\t\t\tonLeave: () => header.classList.remove('header--negative'),\r\n\t\t\tonEnterBack: () => header.classList.add('header--negative'),\r\n\t\t\tonLeaveBack: () => header.classList.remove('header--negative'),\r\n\t\t});\r\n\r\n\t\t/* ********* */\r\n\t\t/* SCROLL TO */\r\n\t\t/* ********* */\r\n\t\t\r\n\t\tconst scrollToLinks = document.querySelectorAll('.scroll-to-link');\r\n\t\tconst scrollToLinksArray = Array.from(scrollToLinks);\r\n\r\n\t\tscrollToLinksArray.forEach(link => {\r\n\r\n\t\t\tconst href = link.getAttribute(\"href\");\r\n\r\n\t\t\tlink.addEventListener('click', event => {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tgsap.to(window, {duration: .75, scrollTo:{y: href, offsetY: 200 }});\r\n\t\t\t});\r\n\t\t})\r\n\r\n\t\t/* ****************** */\r\n\t\t/* GENERAL ANIMATIONS */\r\n\t\t/* ****************** */\r\n\r\n\t\tconst animateBottom = document.querySelectorAll('.animate-bottom');\r\n\r\n\t\tanimateBottom.forEach(item => {\r\n\r\n\t\t\tlet tl = gsap.timeline({ paused: true });\r\n\r\n\t\t\ttl.from(item, {\r\n\t\t\t\tduration: 1,\r\n\t\t\t\topacity: 0,\r\n\t\t\t\ty: 50,\r\n\t\t\t\tease: \"expo.out\"\r\n\t\t\t});\r\n\r\n\t\t\tScrollTrigger.create({\r\n\t\t\t\ttrigger: item,\r\n\t\t\t\tstart: \"top 85%\",\r\n\t\t\t\tend: \"bottom 90%\",\r\n\t\t\t\tanimation: tl,\r\n\t\t\t\tmarkers: false,\r\n\t\t\t\ttoggleActions: \"play none none reverse\"\r\n\t\t\t});\r\n\r\n\t\t});\r\n\t\t\t\r\n\r\n\t\t/* ************************** */\r\n\t\t/* HEADER AND HERO ANIMATIONS */\r\n\t\t/* ************************** */\r\n\r\n\t\tlet tlHeaderHero = gsap.timeline({ paused: false });\r\n\r\n\t\ttlHeaderHero.to(header, {\r\n\t\t\tduration: .75,\r\n\t\t\topacity: 1,\r\n\t\t\tease: \"Power1.out\",\r\n\t\t\tdelay: 1,\r\n\t\t\tforce3D: true\r\n\t\t});\r\n\r\n\t\t/* ***************************** */\r\n\t\t/* OUR VALUES STAGGER ANIMATIONS */\r\n\t\t/* ***************************** */\r\n\r\n\t\tconst animateStaggerValue = document.querySelectorAll('.animate-stagger-value');\r\n\r\n\t\tlet tlStaggerValues = gsap.timeline({ paused: true });\r\n\r\n\t\ttlStaggerValues.from(animateStaggerValue, {\r\n\t\t\tduration: .75,\r\n\t\t\topacity: 0,\r\n\t\t\ty: 50,\r\n\t\t\tease: \"expo.out\",\r\n\t\t\tstagger: 0.125,\r\n\t\t\tdelay: 0.25\r\n\t\t});\r\n\r\n\t\tScrollTrigger.create({\r\n\t\t\ttrigger: '.animate-stagger-values-container',\r\n\t\t\tstart: \"top 85%\",\r\n\t\t\tend: \"bottom 90%\",\r\n\t\t\tanimation: tlStaggerValues,\r\n\t\t\tmarkers: false,\r\n\t\t\ttoggleActions: \"play none none reverse\"\r\n\t\t});\r\n\r\n\t\t/* ***************************** */\r\n\t\t/* OUR VALUES BG LOGO ANIMATIONS */\r\n\t\t/* ***************************** */\r\n\r\n\t\tconst bgLogo = document.querySelector('.bg-logo');\r\n\r\n\t\tlet tlBgLogo = gsap.timeline({ paused: true });\r\n\r\n\t\ttlBgLogo.from(bgLogo, {\r\n\t\t\tduration: 1,\r\n\t\t\txPercent: 15,\r\n\t\t\tyPercent: -10,\r\n\t\t\tease: \"Linear.easeNone\",\r\n\t\t\tforce3D: true\r\n\t\t});\r\n\r\n\t\tScrollTrigger.create({\r\n\t\t\ttrigger: '.section--our-values',\r\n\t\t\tstart: \"top 85%\",\r\n\t\t\tend: \"bottom 20%\",\r\n\t\t\tanimation: tlBgLogo,\r\n\t\t\tmarkers: false,\r\n\t\t\ttoggleActions: \"play none none reverse\",\r\n\t\t\tscrub: 0.5 \r\n\t\t});\r\n\r\n\r\n\t\t/* ****************** */\r\n\t\t/* GALLERY ANIMATIONS */\r\n\t\t/* ****************** */\r\n\r\n\t\tconst animateImagesContainer = document.querySelector('.animated-images-container');\r\n\r\n\t\tconst animateImagesRow = animateImagesContainer.querySelectorAll('.animates-images-row');\r\n\r\n\t\tconst animateImagesRowReverse = animateImagesContainer.querySelectorAll('.animates-images-row-reverse');\r\n\r\n\t\tanimateImagesRow.forEach(item => {\r\n\r\n\t\t\tlet tl = gsap.timeline({ paused: true });\r\n\r\n\t\t\ttl.from(item, {\r\n\t\t\t\tduration: 1,\r\n\t\t\t\txPercent: -80,\r\n\t\t\t\tease: Linear.easeNone,\r\n\t\t\t\tforce3D: true\r\n\t\t\t});\r\n\r\n\t\t\tScrollTrigger.create({\r\n\t\t\t\ttrigger: animateImagesContainer,\r\n\t\t\t\tstart: \"top 85%\",\r\n\t\t\t\tend: \"bottom 10%\",\r\n\t\t\t\tanimation: tl,\r\n\t\t\t\tmarkers: false,\r\n\t\t\t\ttoggleActions: \"play none none reverse\",\r\n\t\t\t\tscrub: 0.5 \r\n\t\t\t});\r\n\r\n\t\t});\r\n\r\n\t\tanimateImagesRowReverse.forEach(item => {\r\n\r\n\t\t\tlet tl = gsap.timeline({ paused: true });\r\n\r\n\t\t\ttl.to(item, {\r\n\t\t\t\tduration: 1,\r\n\t\t\t\txPercent: -80,\r\n\t\t\t\tease: Linear.easeNone,\r\n\t\t\t\tforce3D: true\r\n\t\t\t});\r\n\r\n\t\t\tScrollTrigger.create({\r\n\t\t\t\ttrigger: animateImagesContainer,\r\n\t\t\t\tstart: \"top 85%\",\r\n\t\t\t\tend: \"bottom 10%\",\r\n\t\t\t\tanimation: tl,\r\n\t\t\t\tmarkers: false,\r\n\t\t\t\ttoggleActions: \"play none none reverse\",\r\n\t\t\t\tscrub: 0.5 \r\n\t\t\t});\r\n\r\n\t\t});\r\n\r\n\t\t\r\n }\r\n}",null,"export default class Cards {\r\n\r\n constructor(node, index) {\r\n this.node = node;\r\n this.index = index;\r\n\r\n this.clickAction = this.clickAction.bind(this);\r\n\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.reset();\r\n this.addListeners();\r\n }\r\n\r\n addListeners() {\r\n this.node.addEventListener('click', this.clickAction);\r\n }\r\n\r\n clickAction(e) {\r\n this.node.classList.toggle('open');\r\n }\r\n\r\n reset() {\r\n this.node.classList.remove('open');\r\n }\r\n\r\n\r\n destroy() {\r\n this.title.removeEventListener('click', this.clickAction);\r\n this.reset();\r\n }\r\n\r\n static resetAll() {\r\n setTimeout(() => {\r\n Cards.items.forEach(elem => {\r\n elem.reset();\r\n });\r\n }, 500);\r\n }\r\n\r\n static destroyAll() {\r\n Cards.items.forEach(elem => {\r\n elem.destroy();\r\n });\r\n }\r\n\r\n static init() {\r\n Cards.items = Array.from(document.querySelectorAll('.card-team')).map((node, index) => new Cards(node, index));\r\n }\r\n}","export default class Menu {\r\n\r\n constructor(node) {\r\n\r\n this.node = node;\r\n this.ctaOpen = this.node.querySelector('.menu-burger');\r\n this.ctaClose = document.querySelector('.menu-close');\r\n this.navigationMobile = document.querySelector('.navigation-main--mobile');\r\n this.mobileLinks = this.navigationMobile.querySelectorAll('.scroll-to-link');\r\n this.mobileLinksArray = Array.from(this.mobileLinks);\r\n\r\n this.toggleMenuAction = this.toggleMenuAction.bind(this);\r\n this.clickLinkAction = this.clickLinkAction.bind(this);\r\n\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.reset();\r\n this.addListeners();\r\n }\r\n\r\n addListeners() {\r\n\r\n this.ctaOpen.addEventListener('click', this.toggleMenuAction);\r\n this.ctaClose.addEventListener('click', this.toggleMenuAction);\r\n\r\n this.mobileLinksArray.forEach(link => {\r\n\t\t\tlink.addEventListener('click', this.clickLinkAction);\r\n\t\t})\r\n }\r\n\r\n toggleMenuAction(e) {\r\n e.preventDefault();\r\n this.navigationMobile.classList.toggle('open');\r\n }\r\n\r\n clickLinkAction(e) {\r\n\t this.navigationMobile.classList.remove('open');\r\n }\r\n\r\n reset() {\r\n this.navigationMobile.classList.remove('open');\r\n }\r\n\r\n\r\n static destroy() {\r\n\r\n this.ctaOpen.removeEventListener('click', this.clickAction);\r\n this.ctaClose.removeEventListener('click', this.clickAction);\r\n\r\n this.mobileLinksArray.forEach(link => {\r\n\t\t\tlink.removeEventListener('click', this.clickLinkAction);\r\n\t\t})\r\n\r\n this.reset();\r\n }\r\n\r\n static init() {\r\n Menu.item = new Menu(document.querySelector('.header'));\r\n }\r\n}","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","export default function transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor() {\n let el;\n let params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n\n if (exact === void 0) {\n exact = false;\n }\n\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","export default function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import { getWindow } from 'ssr-window';\nexport default function Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import SwiperCore, { Navigation, Pagination } from 'swiper/core';\nSwiperCore.use([Navigation, Pagination]);\n\nexport default class Sliders {\n\n constructor(slider, index) {\n this.slider = slider;\n this.index = index;\n this.slides = Array.from(this.slider.querySelectorAll('.swiper-slide'));\n this.arrows = this.slider.querySelector('.swiper-arrows');\n\n this.options = this.setOptions();\n this.initSlider();\n \n }\n\n setOptions() {\n\n let options = {};\n\n if(this.slider.classList.contains('swiper--team')) {\n options = {\n grabCursor: true,\n keyboardControl: true,\n navigation: {\n nextEl: '.swiper-button-next--team',\n prevEl: '.swiper-button-prev--team',\n },\n pagination: {\n clickable: 'true',\n el: '.swiper-pagination--team',\n type: 'bullets',\n },\n slidesPerView: 1,\n spaceBetween: 20,\n watchOverflow: true,\n breakpoints: {\n 768: {\n autoplay: {\n delay: 5000,\n },\n centeredSlides: false,\n grabCursor: true,\n keyboardControl: true,\n slidesPerView: \"auto\",\n spaceBetween: 60,\n watchOverflow: true,\n }\n }\n }\n }\n\n return options; \n }\n\n initSlider() {\n let swiperInstance = new Swiper(this.slider, this.options);\n swiperInstance.init();\n this.swiperInstance = swiperInstance;\n }\n\n destroy() {\n this.swiperInstance.destroy();\n }\n\n static init() {\n Sliders.items = Array.from(document.querySelectorAll('.swiper-container')).map((slider, index) => new Sliders(slider, index));\n }\n\n static destroyAll() {\n Sliders.items.forEach(slider => {\n slider.destroy();\n });\n }\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy\n });\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy\n });\n}","import Animations from './partials/animations';\nimport Cards from './partials/cards';\nimport Menu from './partials/menu';\nimport Sliders from './partials/sliders';\n\nexport default class Main {\n\n\tconstructor() {\n\t\tthis.init();\n\t}\n\n\tinit() {\n\n\t\tconst body = document.querySelector('body');\n\t\tbody.classList.add('ready');\n\n\t\tAnimations.init();\n\t\tCards.init();\n\t\tMenu.init();\n\t\tSliders.init();\n\t}\n\n}\n\nconst main = new Main();\n"]}